aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2018-09-27 04:02:16 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-09-27 04:02:16 +0000
commit1e7574aeb3930fbae4ca266f80bfd6773970056f (patch)
treea9fe325f92d06748bf461fbea4b11bb8782a62ee
parent22771d174061ffdcbe4b0feb9c2630e56cbc33ce (diff)
parent37ea1132166e85ea766cb1e4f81a41d11e30f91b (diff)
downloadqemu-emu-master-qemu-release.tar.gz
Merge "Snap for 5031425 from 3b22d57b72e37e66d35cea5f4755e0e66b55df9c to emu-master-qemu-release" into emu-master-qemu-releaseemu-master-qemu-release
-rw-r--r--.gitignore16
-rw-r--r--android-qemu2-glue/CMakeLists.txt86
-rw-r--r--android-qemu2-glue/base/async/Looper.cpp13
-rw-r--r--android-qemu2-glue/build/Makefile.qemu2-glue.mk53
-rw-r--r--android-qemu2-glue/build/Makefile.qemu2-target.mk15
-rw-r--r--android-qemu2-glue/build/Makefile.qemu2-tests.mk129
-rw-r--r--android-qemu2-glue/build/Makefile.qemu2.mk21
-rw-r--r--android-qemu2-glue/drive-share.cpp119
-rwxr-xr-xandroid-qemu2-glue/main.cpp16
-rw-r--r--android-qemu2-glue/qemu-control-impl.h2
-rw-r--r--android-qemu2-glue/qemu-sensors-agent-impl.c59
-rw-r--r--android-qemu2-glue/qemu-sensors-agent-impl.cpp72
-rw-r--r--android-qemu2-glue/qemu-setup.cpp3
-rw-r--r--android-qemu2-glue/qemu-vm-operations-impl.cpp56
-rw-r--r--android-qemu2-glue/stubs/win32-stubs.c17
-rw-r--r--android/android-emu/CMakeLists.txt140
-rw-r--r--android/android-emu/Makefile.android-emu.mk164
-rw-r--r--android/android-emu/android/automation/AutomationController.cpp375
-rw-r--r--android/android-emu/android/automation/AutomationController.h69
-rw-r--r--android/android-emu/android/automation/AutomationController_unittest.cpp271
-rw-r--r--android/android-emu/android/automation/AutomationEventSink.cpp13
-rw-r--r--android/android-emu/android/automation/AutomationEventSink.h18
-rw-r--r--android/android-emu/android/automation/AutomationEventSink_unittest.cpp152
-rw-r--r--android/android-emu/android/automation/proto/automation.proto19
-rw-r--r--android/android-emu/android/avd/generate.cpp221
-rw-r--r--android/android-emu/android/avd/generate.h86
-rw-r--r--android/android-emu/android/avd/info.c30
-rw-r--r--android/android-emu/android/avd/info.h6
-rw-r--r--android/android-emu/android/avd/util.h2
-rw-r--r--android/android-emu/android/avd/util_unittest.cpp28
-rw-r--r--android/android-emu/android/base/Pool.cpp440
-rw-r--r--android/android-emu/android/base/Pool.h95
-rw-r--r--android/android-emu/android/base/Pool_unittest.cpp116
-rw-r--r--android/android-emu/android/base/Result.h19
-rw-r--r--android/android-emu/android/base/Result_unittest.cpp69
-rw-r--r--android/android-emu/android/base/files/PathUtils.cpp31
-rw-r--r--android/android-emu/android/base/files/PathUtils.h15
-rw-r--r--android/android-emu/android/base/files/StreamSerializing.cpp16
-rw-r--r--android/android-emu/android/base/files/StreamSerializing.h4
-rw-r--r--android/android-emu/android/base/files/StreamSerializing_unittest.cpp22
-rw-r--r--android/android-emu/android/base/memory/MemoryHints.cpp53
-rw-r--r--android/android-emu/android/base/memory/MemoryHints.h1
-rw-r--r--android/android-emu/android/base/memory/SharedMemory.h2
-rw-r--r--android/android-emu/android/base/memory/SharedMemory_unittest.cpp3
-rw-r--r--android/android-emu/android/base/synchronization/Lock.h8
-rwxr-xr-xandroid/android-emu/android/base/system/System.cpp453
-rw-r--r--android/android-emu/android/base/system/System.h13
-rw-r--r--android/android-emu/android/base/testing/ResultMatchers.h65
-rw-r--r--android/android-emu/android/base/testing/TestEvent.h84
-rw-r--r--android/android-emu/android/base/testing/TestEvent_unittest.cpp70
-rw-r--r--android/android-emu/android/base/testing/TestLooper.h29
-rw-r--r--android/android-emu/android/base/testing/TestSystem.h2
-rw-r--r--android/android-emu/android/base/threads/Thread.h11
-rw-r--r--android/android-emu/android/console.cpp166
-rw-r--r--android/android-emu/android/crashreport/CrashReporter.h5
-rw-r--r--android/android-emu/android/crashreport/CrashReporter_common.cpp23
-rw-r--r--android/android-emu/android/crashreport/crash-handler.h9
-rw-r--r--android/android-emu/android/crashreport/ui/ConfirmDialog.cpp8
-rw-r--r--android/android-emu/android/emulation/AndroidAsyncMessagePipe.cpp343
-rw-r--r--android/android-emu/android/emulation/AndroidAsyncMessagePipe.h283
-rw-r--r--android/android-emu/android/emulation/AndroidAsyncMessagePipe_unittest.cpp405
-rw-r--r--android/android-emu/android/emulation/AndroidPipe.cpp69
-rw-r--r--android/android-emu/android/emulation/AndroidPipe.h14
-rw-r--r--android/android-emu/android/emulation/QemuMiscPipe.cpp1
-rwxr-xr-xandroid/android-emu/android/emulation/control/AdbInterface.cpp73
-rw-r--r--android/android-emu/android/emulation/control/AdbInterface.h14
-rw-r--r--android/android-emu/android/emulation/control/ScreenCapturer_unittest.cpp3
-rw-r--r--android/android-emu/android/emulation/control/sensors_agent.h3
-rw-r--r--android/android-emu/android/emulation/control/vm_operations.h3
-rw-r--r--android/android-emu/android/emulation/control/window_agent.h1
-rw-r--r--android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.cpp342
-rw-r--r--android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.h109
-rw-r--r--android/android-emu/android/emulation/hostpipe/HostGoldfishPipe_unittest.cpp82
-rw-r--r--android/android-emu/android/emulation/hostpipe/host_goldfish_pipe.h43
-rw-r--r--android/android-emu/android/emulation/testing/TestVmLock.cpp30
-rw-r--r--android/android-emu/android/emulation/testing/TestVmLock.h3
-rw-r--r--android/android-emu/android/featurecontrol/FeatureControlDefHost.h2
-rw-r--r--android/android-emu/android/featurecontrol/FeatureControlDefSnapshotInsensitive.h3
-rw-r--r--android/android-emu/android/help.c3
-rw-r--r--android/android-emu/android/hw-sensors.cpp80
-rw-r--r--android/android-emu/android/hw-sensors.h49
-rw-r--r--android/android-emu/android/main-common.c25
-rw-r--r--android/android-emu/android/main-kernel-parameters.cpp13
-rw-r--r--android/android-emu/android/main-kernel-parameters.h5
-rw-r--r--android/android-emu/android/metrics/AdbLivenessChecker.cpp26
-rw-r--r--android/android-emu/android/metrics/MemoryUsageReporter.cpp6
-rw-r--r--android/android-emu/android/metrics/StudioConfig.cpp13
-rw-r--r--android/android-emu/android/metrics/metrics.cpp10
-rwxr-xr-xandroid/android-emu/android/metrics/proto/studio_stats.proto114
-rw-r--r--android/android-emu/android/multi-instance.cpp1
-rw-r--r--android/android-emu/android/offworld/OffworldPipe.cpp236
-rw-r--r--android/android-emu/android/offworld/OffworldPipe.h (renamed from android/android-emu/android/snapshot/SnapshotPipe.h)8
-rw-r--r--android/android-emu/android/offworld/proto/OffworldProto.mk24
-rw-r--r--android/android-emu/android/offworld/proto/offworld.proto178
-rw-r--r--android/android-emu/android/opengl/EmuglBackendList_unittest.cpp18
-rw-r--r--android/android-emu/android/opengles.cpp116
-rw-r--r--android/android-emu/android/physics/GlmHelpers.h30
-rw-r--r--android/android-emu/android/physics/InertialModel_unittest.cpp39
-rw-r--r--android/android-emu/android/physics/PhysicalModel.cpp673
-rw-r--r--android/android-emu/android/physics/PhysicalModel.h71
-rw-r--r--android/android-emu/android/physics/PhysicalModel_unittest.cpp485
-rw-r--r--android/android-emu/android/physics/Physics.h20
-rw-r--r--android/android-emu/android/qemu-setup.cpp10
-rw-r--r--android/android-emu/android/skin/qt/OverlayMessageCenter.cpp48
-rw-r--r--android/android-emu/android/skin/qt/OverlayMessageCenter.h11
-rw-r--r--android/android-emu/android/skin/qt/QtLogger.cpp71
-rw-r--r--android/android-emu/android/skin/qt/QtLogger.h33
-rw-r--r--android/android-emu/android/skin/qt/accelerometer-3d-widget.cpp2
-rw-r--r--android/android-emu/android/skin/qt/emulator-container.cpp103
-rw-r--r--android/android-emu/android/skin/qt/emulator-qt-window.cpp10
-rw-r--r--android/android-emu/android/skin/qt/emulator-qt-window.h10
-rw-r--r--android/android-emu/android/skin/qt/extended-pages/battery-page.cpp144
-rw-r--r--android/android-emu/android/skin/qt/extended-pages/battery-page.ui52
-rw-r--r--android/android-emu/android/skin/qt/extended-pages/bug-report-page.cpp3
-rw-r--r--android/android-emu/android/skin/qt/extended-pages/telephony-page.ui2
-rw-r--r--android/android-emu/android/skin/qt/extended-pages/virtual-sensors-page.cpp9
-rwxr-xr-xandroid/android-emu/android/skin/qt/images/all/error.svg13
-rw-r--r--android/android-emu/android/skin/qt/images/all/error_2x.svg13
-rw-r--r--android/android-emu/android/skin/qt/images/all/ic_warning_amber_24dp.svg4
-rw-r--r--android/android-emu/android/skin/qt/images/all/ic_warning_amber_48dp.svg4
-rwxr-xr-xandroid/android-emu/android/skin/qt/images/all/success.svg13
-rw-r--r--android/android-emu/android/skin/qt/images/all/success_2x.svg13
-rwxr-xr-xandroid/android-emu/android/skin/qt/images/all/warning.svg13
-rw-r--r--android/android-emu/android/skin/qt/images/all/warning_2x.svg13
-rw-r--r--android/android-emu/android/skin/qt/qt-settings.h10
-rw-r--r--android/android-emu/android/skin/qt/resources.qrc10
-rw-r--r--android/android-emu/android/skin/qt/sources.mk1
-rwxr-xr-xandroid/android-emu/android/skin/qt/winsys-qt.cpp31
-rw-r--r--android/android-emu/android/snapshot/Loader.cpp10
-rw-r--r--android/android-emu/android/snapshot/Loader.h2
-rw-r--r--android/android-emu/android/snapshot/Quickboot.cpp33
-rw-r--r--android/android-emu/android/snapshot/RamLoader.cpp35
-rw-r--r--android/android-emu/android/snapshot/RamLoader.h5
-rw-r--r--android/android-emu/android/snapshot/Saver.cpp8
-rw-r--r--android/android-emu/android/snapshot/Saver.h3
-rw-r--r--android/android-emu/android/snapshot/Snapshot.cpp2
-rw-r--r--android/android-emu/android/snapshot/SnapshotAPI.cpp192
-rw-r--r--android/android-emu/android/snapshot/SnapshotAPI.h36
-rw-r--r--android/android-emu/android/snapshot/SnapshotPipe.cpp206
-rw-r--r--android/android-emu/android/snapshot/Snapshotter.cpp29
-rw-r--r--android/android-emu/android/snapshot/Snapshotter.h4
-rw-r--r--android/android-emu/android/snapshot/TextureLoader.h13
-rw-r--r--android/android-emu/android/snapshot/common.cpp20
-rw-r--r--android/android-emu/android/snapshot/interface.cpp9
-rw-r--r--android/android-emu/android/snapshot/proto/SnapshotProto.mk1
-rw-r--r--android/android-emu/android/snapshot/proto/offworld.proto64
-rw-r--r--android/android-emu/android/update-check/UpdateChecker.cpp8
-rw-r--r--android/android-emu/android/utils/debug.h1
-rw-r--r--android/android-emu/android/utils/filelock.cpp43
-rwxr-xr-xandroid/android-emu/android/utils/path.cpp73
-rw-r--r--android/android-emu/android/utils/path.h15
-rw-r--r--android/android-emu/android/utils/path_unittest.cpp30
-rw-r--r--android/android-emu/android/verified-boot/load_config.cpp256
-rw-r--r--android/android-emu/android/verified-boot/load_config.h61
-rw-r--r--android/android-emu/android/verified-boot/load_config_unittest.cpp246
-rw-r--r--android/android-emu/android/verified-boot/proto/VerifiedBootConfigProto.mk24
-rw-r--r--android/android-emu/android/verified-boot/proto/verified_boot_config.proto28
-rw-r--r--android/android-emu/android/virtualscene/SceneCamera.cpp13
-rw-r--r--android/android-emu/android/virtualscene/TextureUtils.cpp7
-rw-r--r--android/android-emu/android/window-agent-impl.cpp14
-rw-r--r--android/android-emugl/Android.mk16
-rw-r--r--android/android-emugl/guest/Android.mk20
-rw-r--r--android/android-emugl/guest/android/hardware_buffer.h224
-rw-r--r--android/android-emugl/guest/android/log.h191
-rw-r--r--android/android-emugl/guest/android/native_window.h165
-rw-r--r--android/android-emugl/guest/android/rect.h53
-rw-r--r--android/android-emugl/guest/android/versioning.h28
-rw-r--r--android/android-emugl/guest/androidImpl/Log.cpp36
-rw-r--r--android/android-emugl/guest/cutils/ashmem.h34
-rw-r--r--android/android-emugl/guest/cutils/atomic.h246
-rw-r--r--android/android-emugl/guest/cutils/compiler.h44
-rw-r--r--android/android-emugl/guest/cutils/log.h1
-rw-r--r--android/android-emugl/guest/cutils/native_handle.h102
-rw-r--r--android/android-emugl/guest/cutils/properties.h150
-rw-r--r--android/android-emugl/guest/cutils/sockets.h159
-rw-r--r--android/android-emugl/guest/cutils/trace.h260
-rw-r--r--android/android-emugl/guest/hardware/camera.h298
-rw-r--r--android/android-emugl/guest/hardware/camera2.h842
-rw-r--r--android/android-emugl/guest/hardware/camera3.h3121
-rw-r--r--android/android-emugl/guest/hardware/camera_common.h917
-rw-r--r--android/android-emugl/guest/hardware/consumerir.h92
-rw-r--r--android/android-emugl/guest/hardware/context_hub.h450
-rw-r--r--android/android-emugl/guest/hardware/fb.h173
-rw-r--r--android/android-emugl/guest/hardware/gralloc.h415
-rw-r--r--android/android-emugl/guest/hardware/gralloc1.h953
-rw-r--r--android/android-emugl/guest/hardware/hardware.h244
-rw-r--r--android/android-emugl/guest/hardware/hwcomposer.h798
-rw-r--r--android/android-emugl/guest/hardware/hwcomposer2.h1997
-rw-r--r--android/android-emugl/guest/hardware/hwcomposer_defs.h299
-rw-r--r--android/android-emugl/guest/hardware/vr.h115
-rw-r--r--android/android-emugl/guest/log/event_tag_map.h73
-rw-r--r--android/android-emugl/guest/log/log.h248
-rw-r--r--android/android-emugl/guest/log/log_event_list.h316
-rw-r--r--android/android-emugl/guest/log/log_id.h66
-rw-r--r--android/android-emugl/guest/log/log_main.h391
-rw-r--r--android/android-emugl/guest/log/log_properties.h35
-rw-r--r--android/android-emugl/guest/log/log_radio.h144
-rw-r--r--android/android-emugl/guest/log/log_read.h277
-rw-r--r--android/android-emugl/guest/log/log_safetynet.h46
-rw-r--r--android/android-emugl/guest/log/log_system.h142
-rw-r--r--android/android-emugl/guest/log/log_time.h185
-rw-r--r--android/android-emugl/guest/log/log_transport.h37
-rw-r--r--android/android-emugl/guest/log/logd.h5
-rw-r--r--android/android-emugl/guest/log/logger.h5
-rw-r--r--android/android-emugl/guest/log/logprint.h162
-rw-r--r--android/android-emugl/guest/log/uio.h50
-rw-r--r--android/android-emugl/guest/nativebase/nativebase.h88
-rw-r--r--android/android-emugl/guest/sys/system_properties.h74
-rw-r--r--android/android-emugl/guest/system/camera.h298
-rw-r--r--android/android-emugl/guest/system/graphics-base.h141
-rw-r--r--android/android-emugl/guest/system/graphics.h264
-rw-r--r--android/android-emugl/guest/system/radio.h254
-rw-r--r--android/android-emugl/guest/system/thread_defs.h80
-rw-r--r--android/android-emugl/guest/system/window.h828
-rw-r--r--android/android-emugl/guest/ui/PixelFormat.h57
-rw-r--r--android/android-emugl/guest/utils/AndroidThreads.h125
-rw-r--r--android/android-emugl/guest/utils/CallStack.h72
-rw-r--r--android/android-emugl/guest/utils/Compat.h87
-rw-r--r--android/android-emugl/guest/utils/Condition.h165
-rw-r--r--android/android-emugl/guest/utils/Debug.h40
-rw-r--r--android/android-emugl/guest/utils/Endian.h35
-rw-r--r--android/android-emugl/guest/utils/Errors.h88
-rw-r--r--android/android-emugl/guest/utils/FastStrcmp.h77
-rw-r--r--android/android-emugl/guest/utils/FileMap.h129
-rw-r--r--android/android-emugl/guest/utils/Flattenable.h203
-rw-r--r--android/android-emugl/guest/utils/Functor.h37
-rw-r--r--android/android-emugl/guest/utils/LightRefBase.h72
-rw-r--r--android/android-emugl/guest/utils/List.h334
-rw-r--r--android/android-emugl/guest/utils/Log.h7
-rw-r--r--android/android-emugl/guest/utils/Mutex.h218
-rw-r--r--android/android-emugl/guest/utils/NativeHandle.h56
-rw-r--r--android/android-emugl/guest/utils/RWLock.h126
-rw-r--r--android/android-emugl/guest/utils/RefBase.h690
-rw-r--r--android/android-emugl/guest/utils/String16.h250
-rw-r--r--android/android-emugl/guest/utils/String8.h414
-rw-r--r--android/android-emugl/guest/utils/StrongPointer.h246
-rw-r--r--android/android-emugl/guest/utils/Thread.h117
-rw-r--r--android/android-emugl/guest/utils/ThreadDefs.h73
-rw-r--r--android/android-emugl/guest/utils/Timers.h108
-rw-r--r--android/android-emugl/guest/utils/TypeHelpers.h336
-rw-r--r--android/android-emugl/guest/utils/Unicode.h178
-rw-r--r--android/android-emugl/guest/utils/threads.h38
-rw-r--r--android/android-emugl/guest/vndk/window.h290
-rw-r--r--android/android-emugl/host/include/OpenglRender/RenderLib.h8
-rw-r--r--android/android-emugl/host/include/OpenglRender/Renderer.h5
-rw-r--r--android/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp11
-rw-r--r--android/android-emugl/host/libs/Translator/GLES_CM/Android.mk4
-rw-r--r--android/android-emugl/host/libs/Translator/GLES_V2/Android.mk6
-rw-r--r--android/android-emugl/host/libs/Translator/GLcommon/GLBackgroundLoader.cpp14
-rw-r--r--android/android-emugl/host/libs/Translator/GLcommon/SaveableTexture.cpp7
-rw-r--r--android/android-emugl/host/libs/Translator/include/GLcommon/GLBackgroundLoader.h13
-rw-r--r--android/android-emugl/host/libs/Translator/include/GLcommon/SaveableTexture.h2
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/Android.mk7
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/ColorBuffer.cpp207
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/ColorBuffer.h13
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/FrameBuffer.cpp4
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.cpp14
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.h2
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RenderWindow.cpp19
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RenderWindow.h4
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RendererImpl.cpp44
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/RendererImpl.h7
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/TextureResize.cpp6
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/tests/Vulkan_unittest.cpp462
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/__init__.py7
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/__init__.py2
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/codegen.py458
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/vulkantypes.py357
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/deepcopy.py268
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/dispatch.py329
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/frontend.py102
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/handlemap.py214
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/marshaling.py383
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/testing.py332
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/wrapperdefs.py54
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal_readme.markdown59
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cerealgenerator.py446
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/Android.mk36
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.cpp38
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.h24
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanHandleMapping.h70
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.cpp59
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.h41
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream_unittest.cpp551
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/Android.mk17
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.cpp5477
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.h1996
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.cpp780
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.h610
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.cpp3015
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.h1652
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.cpp19429
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.h7159
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.cpp5462
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.h1997
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.cpp3337
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.h2871
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.cpp1883
-rw-r--r--android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.h1227
-rw-r--r--android/android-emugl/host/tools/emugen/Android.mk47
-rw-r--r--android/android-emugl/host/tools/emugen/CMakeLists.txt27
-rw-r--r--android/android-emugl/shared/emugl/common/thread.h1
-rw-r--r--android/asan_overrides1
-rw-r--r--android/build/Makefile.common.mk32
-rw-r--r--android/build/Makefile.top.mk22
-rw-r--r--android/build/cmake/emu-angle-config.cmake22
-rw-r--r--android/build/cmake/emu-breakpad-config.cmake23
-rw-r--r--android/build/cmake/emu-curl-config.cmake25
-rw-r--r--android/build/cmake/emu-ffmpeg-config.cmake26
-rw-r--r--android/build/cmake/emu-libxml2-config.cmake24
-rw-r--r--android/build/cmake/emu-openssl-config.cmake24
-rw-r--r--android/build/cmake/emu-png-config.cmake24
-rw-r--r--android/build/cmake/emu-protobuf-config.cmake37
-rw-r--r--android/build/cmake/emu-sdl2-config.cmake23
-rw-r--r--android/build/cmake/emu-usb-config.cmake24
-rw-r--r--android/build/cmake/emu-uuid-config.cmake30
-rw-r--r--android/build/cmake/emu-virglrenderer-config.cmake23
-rw-r--r--android/build/cmake/emu-vpx-config.cmake23
-rw-r--r--android/build/cmake/emu-zlib-config.cmake23
-rw-r--r--android/build/cmake/prebuilts.cmake202
-rw-r--r--android/build/cmake/test/CMakeLists.txt42
-rw-r--r--android/build/cmake/test/hello.c18
-rwxr-xr-xandroid/build/cmake/test/run_cmake_tests.sh217
-rw-r--r--android/build/cmake/test/test.proto26
-rw-r--r--android/build/cmake/toolchain-win.cmake28
-rw-r--r--android/build/core/definitions-utils.mk2
-rw-r--r--android/build/emulator/binary.make4
-rw-r--r--android/build/emulator/clear_vars.make2
-rw-r--r--android/build/emulator/cmake.make70
-rw-r--r--android/build/emulator/definitions.make123
-rw-r--r--android/build/emulator/host_executable.make8
-rw-r--r--android/build/emulator/host_shared_library.make14
-rw-r--r--android/build/emulator/main.make7
-rwxr-xr-xandroid/configure.sh200
-rw-r--r--android/emulator/main-emulator.cpp89
-rw-r--r--android/envsetup.sh1
-rw-r--r--android/qemu1/Makefile.qemu1-common.mk4
-rw-r--r--android/qemu1/android-qemu1-glue/base/async/Looper.cpp13
-rw-r--r--android/qemu1/android-qemu1-glue/main.cpp13
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-control-impl.h2
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.c59
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.cpp73
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-setup.cpp4
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-setup.h4
-rw-r--r--android/qemu1/android-qemu1-glue/qemu-vm-operations-impl.c7
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qapi-types.c4025
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qapi-types.h3313
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qapi-visit.c6982
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qapi-visit.h411
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qmp-commands.h210
-rw-r--r--android/qemu1/qemu1-qapi-auto-generated/qmp-marshal.c4235
-rw-r--r--android/qemu1/vl-android.c8
-rwxr-xr-xandroid/rebuild.sh183
-rwxr-xr-xandroid/scripts/build-qemu-android.sh15
-rwxr-xr-xandroid/scripts/coverage.sh36
-rwxr-xr-xandroid/scripts/gen-hw-config.py3
-rwxr-xr-xandroid/scripts/generate-qemu1-sources.sh52
-rwxr-xr-x[-rw-r--r--]android/scripts/generate-qemu2-sources.sh (renamed from android-qemu2-glue/build/configure.sh)137
-rwxr-xr-xandroid/scripts/run_tests.sh237
-rw-r--r--android/scripts/utils/common.shi12
-rw-r--r--android/tests/Makefile.end2end.mk14
-rw-r--r--android/tests/end2end/HelloEmulator.cpp387
-rw-r--r--android/third_party/CMakeLists.txt53
-rw-r--r--android/third_party/astc-codec/Android.mk87
-rw-r--r--android/third_party/astc-codec/CMakeLists.txt65
-rw-r--r--android/third_party/ext4_utils/CMakeLists.txt63
-rw-r--r--android/third_party/ext4_utils/sources.mk23
-rw-r--r--android/third_party/jpeg-6b/CMakeLists.txt64
-rw-r--r--android/third_party/jpeg-6b/libjpeg.mk70
-rw-r--r--android/third_party/libdtb/CMakeLists.txt16
-rw-r--r--android/third_party/libdtb/libdtb.mk25
-rw-r--r--android/third_party/libkeymaster3/CMakeLists.txt122
-rw-r--r--android/third_party/libkeymaster3/sources.mk81
-rw-r--r--android/third_party/libselinux/CMakeLists.txt24
-rw-r--r--android/third_party/libselinux/sources.mk33
-rw-r--r--android/third_party/libsparse/CMakeLists.txt59
-rw-r--r--android/third_party/libwebp/CMakeLists.txt110
-rw-r--r--android/third_party/libwebp/sources.mk116
-rw-r--r--android/third_party/libyuv/Android.mk80
-rw-r--r--android/third_party/libyuv/CMakeLists.txt61
-rw-r--r--android/third_party/mini-glib/sources.make2
-rw-r--r--android/third_party/mman-win32/CMakeLists.txt10
-rw-r--r--android/third_party/murmurhash/CMakeLists.txt5
-rw-r--r--android/third_party/murmurhash/libmurmurhash.mk14
-rw-r--r--android/third_party/third_party_libs.mk53
-rw-r--r--android/third_party/tinyepoxy/CMakeLists.txt5
-rw-r--r--android/third_party/tinyepoxy/tinyepoxy.mk6
-rw-r--r--android/third_party/tinyobjloader.mk34
-rw-r--r--build.gradle14
-rw-r--r--chardev/char-file.c4
-rw-r--r--chardev/char-win.c4
-rw-r--r--exec.c360
-rw-r--r--hw/arm/ranchu.c22
-rw-r--r--hw/block/virtio-blk.c19
-rwxr-xr-xhw/misc/goldfish_pipe.c24
-rw-r--r--hw/virtio/virtio.c43
-rw-r--r--include/exec/memory-remap.h23
-rw-r--r--include/exec/ram_addr.h1
-rw-r--r--include/qemu/osdep.h9
-rw-r--r--include/sysemu/os-win32.h4
-rw-r--r--mac.source.properties2
-rw-r--r--memory.c34
-rw-r--r--qemu2-auto-generated/README1
-rw-r--r--qemu2-auto-generated/accel/kvm/trace.c122
-rw-r--r--qemu2-auto-generated/accel/kvm/trace.h213
-rw-r--r--qemu2-auto-generated/accel/tcg/trace.c50
-rw-r--r--qemu2-auto-generated/accel/tcg/trace.h77
l---------qemu2-auto-generated/asm1
-rw-r--r--qemu2-auto-generated/audio/trace.c122
-rw-r--r--qemu2-auto-generated/audio/trace.h213
-rw-r--r--qemu2-auto-generated/block/trace.c1067
-rw-r--r--qemu2-auto-generated/block/trace.h1998
-rw-r--r--qemu2-auto-generated/chardev/trace.c122
-rw-r--r--qemu2-auto-generated/chardev/trace.h213
-rw-r--r--qemu2-auto-generated/crypto/trace.c113
-rw-r--r--qemu2-auto-generated/crypto/trace.h196
-rw-r--r--qemu2-auto-generated/gdbstub-xml-arm.c950
-rw-r--r--qemu2-auto-generated/gdbstub-xml-arm64.c1514
-rw-r--r--qemu2-auto-generated/hmp-commands-info.h572
-rw-r--r--qemu2-auto-generated/hmp-commands.h1060
-rw-r--r--qemu2-auto-generated/hw/9pfs/trace.c419
-rw-r--r--qemu2-auto-generated/hw/9pfs/trace.h774
-rw-r--r--qemu2-auto-generated/hw/acpi/trace.c275
-rw-r--r--qemu2-auto-generated/hw/acpi/trace.h502
-rw-r--r--qemu2-auto-generated/hw/alpha/trace.c23
-rw-r--r--qemu2-auto-generated/hw/alpha/trace.h26
-rw-r--r--qemu2-auto-generated/hw/arm/trace.c23
-rw-r--r--qemu2-auto-generated/hw/arm/trace.h26
-rw-r--r--qemu2-auto-generated/hw/audio/trace.c185
-rw-r--r--qemu2-auto-generated/hw/audio/trace.h332
-rw-r--r--qemu2-auto-generated/hw/block/dataplane/trace.c32
-rw-r--r--qemu2-auto-generated/hw/block/dataplane/trace.h43
-rw-r--r--qemu2-auto-generated/hw/block/trace.c896
-rw-r--r--qemu2-auto-generated/hw/block/trace.h1675
-rw-r--r--qemu2-auto-generated/hw/char/trace.c446
-rw-r--r--qemu2-auto-generated/hw/char/trace.h825
-rw-r--r--qemu2-auto-generated/hw/display/trace.c1076
-rw-r--r--qemu2-auto-generated/hw/display/trace.h2015
-rw-r--r--qemu2-auto-generated/hw/dma/trace.c149
-rw-r--r--qemu2-auto-generated/hw/dma/trace.h264
-rw-r--r--qemu2-auto-generated/hw/hppa/trace.c23
-rw-r--r--qemu2-auto-generated/hw/hppa/trace.h26
-rw-r--r--qemu2-auto-generated/hw/i386/trace.c1004
-rw-r--r--qemu2-auto-generated/hw/i386/trace.h1879
-rw-r--r--qemu2-auto-generated/hw/i386/xen/trace.c149
-rw-r--r--qemu2-auto-generated/hw/i386/xen/trace.h264
-rw-r--r--qemu2-auto-generated/hw/ide/trace.c833
-rw-r--r--qemu2-auto-generated/hw/ide/trace.h1556
-rw-r--r--qemu2-auto-generated/hw/input/trace.c302
-rw-r--r--qemu2-auto-generated/hw/input/trace.h553
-rw-r--r--qemu2-auto-generated/hw/intc/trace.c1427
-rw-r--r--qemu2-auto-generated/hw/intc/trace.h2678
-rw-r--r--qemu2-auto-generated/hw/isa/trace.c68
-rw-r--r--qemu2-auto-generated/hw/isa/trace.h111
-rw-r--r--qemu2-auto-generated/hw/mem/trace.c32
-rw-r--r--qemu2-auto-generated/hw/mem/trace.h43
-rw-r--r--qemu2-auto-generated/hw/misc/macio/trace.c86
-rw-r--r--qemu2-auto-generated/hw/misc/macio/trace.h145
-rw-r--r--qemu2-auto-generated/hw/misc/trace.c716
-rw-r--r--qemu2-auto-generated/hw/misc/trace.h1335
-rw-r--r--qemu2-auto-generated/hw/net/trace.c2777
-rw-r--r--qemu2-auto-generated/hw/net/trace.h5228
-rw-r--r--qemu2-auto-generated/hw/nvram/trace.c59
-rw-r--r--qemu2-auto-generated/hw/nvram/trace.h94
-rw-r--r--qemu2-auto-generated/hw/pci-host/trace.c131
-rw-r--r--qemu2-auto-generated/hw/pci-host/trace.h230
-rw-r--r--qemu2-auto-generated/hw/pci/trace.c59
-rw-r--r--qemu2-auto-generated/hw/pci/trace.h94
-rw-r--r--qemu2-auto-generated/hw/ppc/trace.c716
-rw-r--r--qemu2-auto-generated/hw/ppc/trace.h1335
-rw-r--r--qemu2-auto-generated/hw/rdma/trace.c32
-rw-r--r--qemu2-auto-generated/hw/rdma/trace.h43
-rw-r--r--qemu2-auto-generated/hw/rdma/vmw/trace.c32
-rw-r--r--qemu2-auto-generated/hw/rdma/vmw/trace.h43
-rw-r--r--qemu2-auto-generated/hw/s390x/trace.c113
-rw-r--r--qemu2-auto-generated/hw/s390x/trace.h196
-rw-r--r--qemu2-auto-generated/hw/scsi/trace.c1940
-rw-r--r--qemu2-auto-generated/hw/scsi/trace.h3647
-rw-r--r--qemu2-auto-generated/hw/sd/trace.c419
-rw-r--r--qemu2-auto-generated/hw/sd/trace.h774
-rw-r--r--qemu2-auto-generated/hw/sparc/trace.c140
-rw-r--r--qemu2-auto-generated/hw/sparc/trace.h247
-rw-r--r--qemu2-auto-generated/hw/sparc64/trace.c194
-rw-r--r--qemu2-auto-generated/hw/sparc64/trace.h349
-rw-r--r--qemu2-auto-generated/hw/timer/trace.c446
-rw-r--r--qemu2-auto-generated/hw/timer/trace.h825
-rw-r--r--qemu2-auto-generated/hw/tpm/trace.c329
-rw-r--r--qemu2-auto-generated/hw/tpm/trace.h604
-rw-r--r--qemu2-auto-generated/hw/usb/trace.c2219
-rw-r--r--qemu2-auto-generated/hw/usb/trace.h4174
-rw-r--r--qemu2-auto-generated/hw/vfio/trace.c1067
-rw-r--r--qemu2-auto-generated/hw/vfio/trace.h1998
-rw-r--r--qemu2-auto-generated/hw/virtio/trace.c329
-rw-r--r--qemu2-auto-generated/hw/virtio/trace.h604
-rw-r--r--qemu2-auto-generated/hw/xen/trace.c113
-rw-r--r--qemu2-auto-generated/hw/xen/trace.h196
-rw-r--r--qemu2-auto-generated/io/trace.c464
-rw-r--r--qemu2-auto-generated/io/trace.h859
-rw-r--r--qemu2-auto-generated/linux-user/trace.c95
-rw-r--r--qemu2-auto-generated/linux-user/trace.h162
-rw-r--r--qemu2-auto-generated/migration/trace.c2030
-rw-r--r--qemu2-auto-generated/migration/trace.h3817
-rw-r--r--qemu2-auto-generated/module_block.h21
-rw-r--r--qemu2-auto-generated/nbd/trace.c608
-rw-r--r--qemu2-auto-generated/nbd/trace.h1131
-rw-r--r--qemu2-auto-generated/net/trace.c122
-rw-r--r--qemu2-auto-generated/net/trace.h213
-rw-r--r--qemu2-auto-generated/qapi/qapi-builtin-types.c226
-rw-r--r--qemu2-auto-generated/qapi/qapi-builtin-types.h169
-rw-r--r--qemu2-auto-generated/qapi/qapi-builtin-visit.c490
-rw-r--r--qemu2-auto-generated/qapi/qapi-builtin-visit.h36
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-block-core.c1398
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-block-core.h101
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-block.c276
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-block.h35
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-char.c386
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-char.h37
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-common.c26
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-common.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-crypto.c26
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-crypto.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-introspect.c26
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-introspect.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-migration.c808
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-migration.h61
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-misc.c3051
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-misc.h150
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-net.c145
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-net.h27
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-rocker.c246
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-rocker.h28
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-run-state.c116
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-run-state.h24
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-sockets.c26
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-sockets.h21
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-tpm.c200
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-tpm.h26
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-trace.c113
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-trace.h24
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-transaction.c58
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-transaction.h23
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-ui.c450
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands-ui.h41
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands.c360
-rw-r--r--qemu2-auto-generated/qapi/qapi-commands.h36
-rw-r--r--qemu2-auto-generated/qapi/qapi-doc.texi17238
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-block-core.c367
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-block-core.h39
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-block.c152
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-block.h27
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-char.c66
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-char.h23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-common.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-common.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-crypto.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-crypto.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-introspect.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-introspect.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-migration.c109
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-migration.h25
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-misc.c369
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-misc.h82
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-net.c66
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-net.h23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-rocker.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-rocker.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-run-state.c309
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-run-state.h40
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-sockets.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-sockets.h21
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-tpm.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-tpm.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-trace.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-trace.h20
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-transaction.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-transaction.h21
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-ui.c300
-rw-r--r--qemu2-auto-generated/qapi/qapi-events-ui.h35
-rw-r--r--qemu2-auto-generated/qapi/qapi-events.c23
-rw-r--r--qemu2-auto-generated/qapi/qapi-events.h35
-rw-r--r--qemu2-auto-generated/qapi/qapi-introspect.c14035
-rw-r--r--qemu2-auto-generated/qapi/qapi-introspect.h19
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-block-core.c1730
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-block-core.h2605
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-block.c70
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-block.h153
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-char.c273
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-char.h481
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-common.c95
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-common.h104
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-crypto.c248
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-crypto.h279
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-introspect.c240
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-introspect.h202
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-migration.c212
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-migration.h374
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-misc.c1303
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-misc.h1468
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-net.c290
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-net.h441
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-rocker.c164
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-rocker.h228
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-run-state.c132
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-run-state.h178
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-sockets.c127
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-sockets.h167
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-tpm.c133
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-tpm.h131
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-trace.c53
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-trace.h68
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-transaction.c92
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-transaction.h147
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-ui.c601
-rw-r--r--qemu2-auto-generated/qapi/qapi-types-ui.h771
-rw-r--r--qemu2-auto-generated/qapi/qapi-types.c18
-rw-r--r--qemu2-auto-generated/qapi/qapi-types.h33
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-block-core.c7463
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-block-core.h416
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-block.c278
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-block.h44
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-char.c1152
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-char.h106
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-common.c128
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-common.h29
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-crypto.c642
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-crypto.h61
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-introspect.c662
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-introspect.h61
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-migration.c867
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-migration.h73
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-misc.c4643
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-misc.h331
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-net.c1318
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-net.h86
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-rocker.c705
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-rocker.h54
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-run-state.c340
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-run-state.h49
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-sockets.c403
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-sockets.h52
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-tpm.c341
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-tpm.h42
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-trace.c152
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-trace.h29
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-transaction.c328
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-transaction.h51
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-ui.c1599
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit-ui.h130
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit.c19
-rw-r--r--qemu2-auto-generated/qapi/qapi-visit.h35
-rw-r--r--qemu2-auto-generated/qapi/trace.c266
-rw-r--r--qemu2-auto-generated/qapi/trace.h485
-rw-r--r--qemu2-auto-generated/qemu-img-cmds.h44
-rw-r--r--qemu2-auto-generated/qemu-options.def979
-rw-r--r--qemu2-auto-generated/qom/trace.c32
-rw-r--r--qemu2-auto-generated/qom/trace.h43
-rw-r--r--qemu2-auto-generated/scsi/trace.c32
-rw-r--r--qemu2-auto-generated/scsi/trace.h43
-rw-r--r--qemu2-auto-generated/target/aarch64/generated-helpers.c12
-rw-r--r--qemu2-auto-generated/target/aarch64/generated-helpers.h3
-rw-r--r--qemu2-auto-generated/target/arm/generated-helpers.c12
-rw-r--r--qemu2-auto-generated/target/arm/generated-helpers.h3
-rw-r--r--qemu2-auto-generated/target/arm/trace.c77
-rw-r--r--qemu2-auto-generated/target/arm/trace.h128
-rw-r--r--qemu2-auto-generated/target/i386/generated-helpers.c12
-rw-r--r--qemu2-auto-generated/target/i386/generated-helpers.h3
-rw-r--r--qemu2-auto-generated/target/i386/trace.c122
-rw-r--r--qemu2-auto-generated/target/i386/trace.h213
-rw-r--r--qemu2-auto-generated/target/mips/generated-helpers.c12
-rw-r--r--qemu2-auto-generated/target/mips/generated-helpers.h3
-rw-r--r--qemu2-auto-generated/target/mips/trace.c32
-rw-r--r--qemu2-auto-generated/target/mips/trace.h43
-rw-r--r--qemu2-auto-generated/target/ppc/trace.c32
-rw-r--r--qemu2-auto-generated/target/ppc/trace.h43
-rw-r--r--qemu2-auto-generated/target/s390x/trace.c131
-rw-r--r--qemu2-auto-generated/target/s390x/trace.h230
-rw-r--r--qemu2-auto-generated/target/sparc/trace.c185
-rw-r--r--qemu2-auto-generated/target/sparc/trace.h332
-rw-r--r--qemu2-auto-generated/tests/qapi-builtin-types.c226
-rw-r--r--qemu2-auto-generated/tests/qapi-builtin-types.h169
-rw-r--r--qemu2-auto-generated/tests/qapi-builtin-visit.c490
-rw-r--r--qemu2-auto-generated/tests/qapi-builtin-visit.h36
-rw-r--r--qemu2-auto-generated/tests/test-qapi-commands.c496
-rw-r--r--qemu2-auto-generated/tests/test-qapi-commands.h41
-rw-r--r--qemu2-auto-generated/tests/test-qapi-events.c257
-rw-r--r--qemu2-auto-generated/tests/test-qapi-events.h50
-rw-r--r--qemu2-auto-generated/tests/test-qapi-introspect.c1056
-rw-r--r--qemu2-auto-generated/tests/test-qapi-introspect.h19
-rw-r--r--qemu2-auto-generated/tests/test-qapi-types.c569
-rw-r--r--qemu2-auto-generated/tests/test-qapi-types.h707
-rw-r--r--qemu2-auto-generated/tests/test-qapi-visit.c2065
-rw-r--r--qemu2-auto-generated/tests/test-qapi-visit.h160
-rw-r--r--qemu2-auto-generated/trace-config1
-rw-r--r--qemu2-auto-generated/trace-root.c635
-rw-r--r--qemu2-auto-generated/trace-root.h1183
-rw-r--r--qemu2-auto-generated/trace/generated-helpers-wrappers.h15
-rw-r--r--qemu2-auto-generated/trace/generated-helpers.c12
-rw-r--r--qemu2-auto-generated/trace/generated-helpers.h3
-rw-r--r--qemu2-auto-generated/trace/generated-tcg-tracers.h18
-rw-r--r--qemu2-auto-generated/ui/input-keymap-atset1-to-qcode.c245
-rw-r--r--qemu2-auto-generated/ui/input-keymap-linux-to-qcode.c464
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-atset1.c154
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-atset2.c142
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-atset3.c138
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-linux.c156
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-qnum.c154
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qcode-to-sun.c129
-rw-r--r--qemu2-auto-generated/ui/input-keymap-qnum-to-qcode.c246
-rw-r--r--qemu2-auto-generated/ui/input-keymap-usb-to-qcode.c177
-rw-r--r--qemu2-auto-generated/ui/input-keymap-win32-to-qcode.c157
-rw-r--r--qemu2-auto-generated/ui/input-keymap-x11-to-qcode.c163
-rw-r--r--qemu2-auto-generated/ui/input-keymap-xorgevdev-to-qcode.c464
-rw-r--r--qemu2-auto-generated/ui/input-keymap-xorgkbd-to-qcode.c122
-rw-r--r--qemu2-auto-generated/ui/input-keymap-xorgxquartz-to-qcode.c128
-rw-r--r--qemu2-auto-generated/ui/input-keymap-xorgxwin-to-qcode.c122
-rw-r--r--qemu2-auto-generated/ui/trace.c779
-rw-r--r--qemu2-auto-generated/ui/trace.h1454
-rw-r--r--qemu2-auto-generated/util/trace.c455
-rw-r--r--qemu2-auto-generated/util/trace.h842
-rw-r--r--source.properties2
-rw-r--r--stubs/win32-stubs.c8
-rw-r--r--target/i386/hax-windows.c20
-rw-r--r--target/i386/hvf-all.c2
-rw-r--r--util/aio-win32.c1
-rw-r--r--util/osdep.c35
-rw-r--r--util/oslib-win32.c4
-rwxr-xr-xvl.c20
-rw-r--r--win.source.properties2
728 files changed, 276661 insertions, 11443 deletions
diff --git a/.gitignore b/.gitignore
index 2a7bf39c11..8f66b933be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -193,19 +193,3 @@ docker-src.*
/default.profraw
*.ast_raw
*.depend_raw
-trace.h
-trace.c
-trace-ust.h
-trace-ust.h
-trace-dtrace.h
-trace-dtrace.dtrace
-trace-root.h
-trace-root.c
-trace-ust-root.h
-trace-ust-root.h
-trace-ust-all.h
-trace-ust-all.c
-trace-dtrace-root.h
-trace-dtrace-root.dtrace
-trace-ust-all.h
-trace-ust-all.c
diff --git a/android-qemu2-glue/CMakeLists.txt b/android-qemu2-glue/CMakeLists.txt
new file mode 100644
index 0000000000..201b7297a1
--- /dev/null
+++ b/android-qemu2-glue/CMakeLists.txt
@@ -0,0 +1,86 @@
+cmake_minimum_required(VERSION 3.5)
+
+# COMPILER + PATH CONFIGURATION
+# =============================
+# TODO(jansene): This section is needed as a bridge
+# to the android build system.
+string(REPLACE " " ";" INCLUDES ${LOCAL_C_INCLUDES})
+include_directories(${INCLUDES})
+include_directories(.)
+
+# Use same compiler config as android build system
+set(CMAKE_C_FLAGS ${LOCAL_CFLAGS})
+set(CMAKE_CXX_FLAGS "${LOCAL_CFLAGS} ${LOCAL_CXXFLAGS}")
+
+# Work around some gcc/mingw issues
+if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
+
+# Make sure we create archives in the same way..
+SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+# hw-config generator
+add_custom_command(PRE_BUILD
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/android/avd/hw-config-defs.h
+ COMMAND python ${LOCAL_QEMU2_TOP_DIR}/android/scripts/gen-hw-config.py
+ ${LOCAL_QEMU2_TOP_DIR}/android/android-emu/android/avd/hardware-properties.ini
+ ${CMAKE_CURRENT_BINARY_DIR}/android/avd/hw-config-defs.h
+ VERBATIM )
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/android/avd/hw-config-defs.h PROPERTIES GENERATED TRUE)
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/android/avd/hw-config-defs.h PROPERTIES HEADER_FILE_ONLY TRUE)
+set(GENERATED_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/android/avd/hw-config-defs.h)
+
+# END COMPILER CONFIGURATION
+# ==========================
+set(COMMON_QEMU2GLUE_SOURCES
+ android_qemud.cpp
+ audio-capturer.cpp
+ audio-output.cpp
+ base/async/CpuLooper.cpp
+ base/async/Looper.cpp
+ base/files/QemuFileStream.cpp
+ display.cpp
+ drive-share.cpp
+ emulation/android_pipe_device.cpp
+ emulation/charpipe.c
+ emulation/CharSerialLine.cpp
+ emulation/DmaMap.cpp
+ emulation/goldfish_sync.cpp
+ emulation/serial_line.cpp
+ emulation/VmLock.cpp
+ looper-qemu.cpp
+ net-android.cpp
+ proxy/slirp_proxy.cpp
+ qemu-battery-agent-impl.c
+ qemu-cellular-agent-impl.c
+ qemu-clipboard-agent-impl.cpp
+ qemu-display-agent-impl.cpp
+ qemu-finger-agent-impl.c
+ qemu-location-agent-impl.c
+ qemu-http-proxy-agent-impl.c
+ qemu-net-agent-impl.c
+ qemu-car-data-agent-impl.cpp
+ qemu-record-screen-agent-impl.c
+ qemu-sensors-agent-impl.cpp
+ qemu-setup.cpp
+ qemu-setup-dns-servers.cpp
+ qemu-telephony-agent-impl.c
+ qemu-user-event-agent-impl.c
+ qemu-virtual-scene-agent-impl.cpp
+ qemu-vm-operations-impl.cpp
+ dtb.cpp
+ snapshot_compression.cpp
+ telephony/modem_init.c
+ utils/stream.cpp
+ )
+
+
+set_source_files_properties(${COMMON_QEMU2GLUE_SOURCES} PROPERTIES OBJECT_DEPENDS ${GENERATED_SOURCES})
+
+add_library(libqemu2-glue ${COMMON_QEMU2GLUE_SOURCES})
+
+target_include_directories(libqemu2-glue PRIVATE ../android/third_party/libdtb/include/)
+
diff --git a/android-qemu2-glue/base/async/Looper.cpp b/android-qemu2-glue/base/async/Looper.cpp
index cb182ec2b2..66f2d899c5 100644
--- a/android-qemu2-glue/base/async/Looper.cpp
+++ b/android-qemu2-glue/base/async/Looper.cpp
@@ -238,15 +238,16 @@ public:
}
void save(android::base::Stream* stream) const {
- timer_put(
- reinterpret_cast<android::qemu::QemuFileStream*>(stream)->file(),
- mTimer);
+ stream->putBe64(timer_expire_time_ns(mTimer));
}
void load(android::base::Stream* stream) {
- timer_get(
- reinterpret_cast<android::qemu::QemuFileStream*>(stream)->file(),
- mTimer);
+ uint64_t deadline_ns = stream->getBe64();
+ if (deadline_ns != -1) {
+ timer_mod_ns(mTimer, deadline_ns);
+ } else {
+ timer_del(mTimer);
+ }
}
private:
diff --git a/android-qemu2-glue/build/Makefile.qemu2-glue.mk b/android-qemu2-glue/build/Makefile.qemu2-glue.mk
index ff2928d420..2b1f81fce0 100644
--- a/android-qemu2-glue/build/Makefile.qemu2-glue.mk
+++ b/android-qemu2-glue/build/Makefile.qemu2-glue.mk
@@ -1,62 +1,23 @@
# A static library containing the android-emu glue code
QEMU2_GLUE_INCLUDES := $(ANDROID_EMU_INCLUDES) $(EMUGL_INCLUDES)
+OLD_LOCAL_PATH := $(LOCAL_PATH)
+LOCAL_PATH := $(call my-dir)/..
-$(call start-emulator-library,libqemu2-glue)
-
+$(call start-cmake-project,libqemu2-glue)
LOCAL_CFLAGS += $(QEMU2_CFLAGS)
LOCAL_C_INCLUDES += \
$(QEMU2_INCLUDES) \
$(QEMU2_GLUE_INCLUDES) \
- $(LOCAL_PATH)/slirp \
+ $(LOCAL_PATH)/../slirp \
$(LZ4_INCLUDES) \
$(LIBDTB_UTILS_INCLUDES) \
-LOCAL_SRC_FILES := \
- android_qemud.cpp \
- audio-capturer.cpp \
- audio-output.cpp \
- base/async/CpuLooper.cpp \
- base/async/Looper.cpp \
- base/files/QemuFileStream.cpp \
- display.cpp \
- drive-share.cpp \
- emulation/android_pipe_device.cpp \
- emulation/charpipe.c \
- emulation/CharSerialLine.cpp \
- emulation/DmaMap.cpp \
- emulation/goldfish_sync.cpp \
- emulation/serial_line.cpp \
- emulation/VmLock.cpp \
- looper-qemu.cpp \
- net-android.cpp \
- proxy/slirp_proxy.cpp \
- qemu-battery-agent-impl.c \
- qemu-cellular-agent-impl.c \
- qemu-clipboard-agent-impl.cpp \
- qemu-display-agent-impl.cpp \
- qemu-finger-agent-impl.c \
- qemu-location-agent-impl.c \
- qemu-http-proxy-agent-impl.c \
- qemu-net-agent-impl.c \
- qemu-car-data-agent-impl.cpp \
- qemu-record-screen-agent-impl.c \
- qemu-sensors-agent-impl.c \
- qemu-setup.cpp \
- qemu-setup-dns-servers.cpp \
- qemu-telephony-agent-impl.c \
- qemu-user-event-agent-impl.c \
- qemu-virtual-scene-agent-impl.cpp \
- qemu-vm-operations-impl.cpp \
- dtb.cpp \
- snapshot_compression.cpp \
- telephony/modem_init.c \
- utils/stream.cpp \
-
-LOCAL_SRC_FILES := $(LOCAL_SRC_FILES:%=android-qemu2-glue/%)
+PRODUCED_STATIC_LIBS=libqemu2-glue
-$(call end-emulator-library)
+$(call end-cmake-project)
+LOCAL_PATH := $(OLD_LOCAL_PATH)
QEMU2_GLUE_STATIC_LIBRARIES := \
libqemu2-glue \
diff --git a/android-qemu2-glue/build/Makefile.qemu2-target.mk b/android-qemu2-glue/build/Makefile.qemu2-target.mk
index 4ea56a1399..a5311a69d6 100644
--- a/android-qemu2-glue/build/Makefile.qemu2-target.mk
+++ b/android-qemu2-glue/build/Makefile.qemu2-target.mk
@@ -44,6 +44,7 @@ QEMU2_SYSTEM_CFLAGS := \
-DNEED_CPU_H \
QEMU2_SYSTEM_INCLUDES := \
+ $(QEMU2_CONFIG_DIR) \
$(QEMU2_INCLUDES) \
$(QEMU2_DEPS_TOP_DIR)/include \
$(call qemu2-if-linux,$(LOCAL_PATH)/linux-headers) \
@@ -76,7 +77,7 @@ QEMU2_SYSTEM_STATIC_LIBRARIES := \
$(call start-emulator-library,libqemu2-system-$(QEMU2_TARGET_SYSTEM))
-LOCAL_GENERATED_SOURCES += \
+LOCAL_SRC_FILES += \
$(QEMU2_AUTO_GENERATED_DIR)/target/$(QEMU2_TARGET_TARGET)/generated-helpers.c
LOCAL_CFLAGS += \
@@ -93,10 +94,10 @@ LOCAL_SRC_FILES += \
$(QEMU2_TARGET_$(QEMU2_TARGET_CPU)_SOURCES_$(BUILD_TARGET_TAG))
ifeq (arm64,$(QEMU2_TARGET))
-LOCAL_GENERATED_SOURCES += $(QEMU2_AUTO_GENERATED_DIR)/gdbstub-xml-arm64.c
+LOCAL_SRC_FILES += $(QEMU2_AUTO_GENERATED_DIR)/gdbstub-xml-arm64.c
LOCAL_SRC_FILES += hw/smbios/smbios_type_38-stub.c
else ifeq (arm,$(QEMU2_TARGET))
-LOCAL_GENERATED_SOURCES += $(QEMU2_AUTO_GENERATED_DIR)/gdbstub-xml-arm.c
+LOCAL_SRC_FILES += $(QEMU2_AUTO_GENERATED_DIR)/gdbstub-xml-arm.c
LOCAL_SRC_FILES += hw/smbios/smbios_type_38-stub.c
else
LOCAL_SRC_FILES += stubs/gdbstub.c
@@ -114,7 +115,7 @@ LOCAL_SRC_FILES += \
LOCAL_PREBUILTS_OBJ_FILES += \
- $(call qemu2-if-windows,$(QEMU2_AUTO_GENERATED_DIR)/version.o)
+ $(call qemu2-if-windows,$(QEMU2_CONFIG_DIR)/version.o)
$(call end-emulator-library)
@@ -207,6 +208,12 @@ LOCAL_LDLIBS += $(QEMU2_SYSTEM_LDLIBS) $(QEMU2_GLUE_LDLIBS)
LOCAL_LDFLAGS += \
$(QEMU2_DEPS_LDFLAGS) \
+#Link tcmalloc_minimal for Linux only
+ifeq ($(BUILD_TARGET_OS), linux)
+ LOCAL_LDFLAGS += -L$(TCMALLOC_PREBUILTS_DIR)/$(BUILD_TARGET_TAG)/lib64
+ LOCAL_LDLIBS += -ltcmalloc_minimal
+endif
+
LOCAL_LDLIBS += \
$(QEMU2_GLIB_LDLIBS) \
$(QEMU2_PIXMAN_LDLIBS) \
diff --git a/android-qemu2-glue/build/Makefile.qemu2-tests.mk b/android-qemu2-glue/build/Makefile.qemu2-tests.mk
new file mode 100644
index 0000000000..903c318116
--- /dev/null
+++ b/android-qemu2-glue/build/Makefile.qemu2-tests.mk
@@ -0,0 +1,129 @@
+# The standard test dependencies.
+$(call start-emulator-library,libqemu-test)
+LOCAL_C_INCLUDES += $(QEMU2_SYSTEM_INCLUDES) $(QEMU2_GLUE_INCLUDES) $(ANDROID_EMU_INCLUDES)
+LOCAL_SRC_FILES += \
+ tests/libqtest.c \
+ $(QEMU2_AUTO_GENERATED_DIR)/tests/test-qapi-visit.c \
+ $(QEMU2_AUTO_GENERATED_DIR)/tests/test-qapi-types.c \
+ $(QEMU2_AUTO_GENERATED_DIR)/tests/test-qapi-events.c \
+ $(QEMU2_AUTO_GENERATED_DIR)/tests/test-qapi-introspect.c \
+
+$(call end-emulator-library)
+
+# A variant of start-emulator-program to start the definition of a qemu test
+# program instead. Use with end-emulator-program
+# Tests of this type do NOT RELY on qemu/emulator binaries.
+#
+# A qemu test will have the postfix _qtest and will use the qemu test runner
+# vs. the googletest framework.
+start-emulator-qemu-test = \
+ $(call start-emulator-program,$1_qtest) \
+ $(eval LOCAL_STATIC_LIBRARIES += libqemu-test $(QEMU2_SYSTEM_STATIC_LIBRARIES) $(QEMU2_GLUE_STATIC_LIBRARIES) $(ANDROID_EMU_STATIC_LIBRARIES) libqemu2-util) \
+ $(eval LOCAL_LDFLAGS += $(QEMU2_SYSTEM_LDFLAGS) $(QEMU2_GLUE_LDFLAGS) $(QEMU2_DEPS_LDFLAGS) ) \
+ $(eval LOCAL_LDLIBS += $(QEMU2_SYSTEM_LDLIBS) $(QEMU2_GLIB_LDLIBS)) \
+ $(eval LOCAL_CFLAGS += $(QEMU2_SYSTEM_CFLAGS) -DCONFIG_ANDROID ) \
+ $(eval LOCAL_C_INCLUDES += $(QEMU2_SYSTEM_INCLUDES) $(QEMU2_GLUE_INCLUDES) $(ANDROID_EMU_INCLUDES)) \
+
+# Adds a standard qemu test with default dependencies
+add-qemu-test = \
+ $(call start-emulator-qemu-test, $1) \
+ $(eval LOCAL_SRC_FILES += $(addprefix tests/,$(1).c)) \
+ $(call end-emulator-program) \
+
+add-qemu-crypto-test = \
+ $(call start-emulator-qemu-test, $1) \
+ $(eval LOCAL_STATIC_LIBRARIES += libqemu2-common) \
+ $(eval LOCAL_SRC_FILES += $(addprefix tests/,$(1).c) \
+ $(QEMU2_AUTO_GENERATED_DIR)/qapi/qapi-types-crypto.c \
+ $(QEMU2_AUTO_GENERATED_DIR)/qapi/qapi-visit-crypto.c \
+ )\
+ $(call end-emulator-program) \
+
+# The socket test is special, it consists of 2 files.
+$(call start-emulator-qemu-test, test-util-sockets)
+ LOCAL_SRC_FILES += tests/test-util-sockets.c \
+ tests/socket-helpers.c
+$(call end-emulator-program)
+
+# These tests rely on interaction with the qemu binary.
+# These require a non-trivial test runner as they interact
+# with a running emulator. It is not yet clear how we can run these.
+TEST_NEED_QEMU := \
+ test-arm-mptimer \
+ test-crypto-block \
+ test-bdrv-drain \
+ test-block-backend \
+ test-blockjob \
+ test-blockjob-txn \
+ test-char \
+ test-filter-mirror \
+ test-filter-redirector \
+ test-hbitmap \
+ test-hmp \
+ test-io-channel-buffer \
+ test-io-channel-command \
+ test-io-channel-file \
+ test-io-channel-socket \
+ test-io-task \
+ test-netfilter \
+ test-qdev-global-props \
+ test-qga \
+ test-replication \
+ test-thread-pool \
+ test-throttle \
+ test-vmstate \
+ test-write-threshold \
+ test-x86-cpuid-compat \
+ test-xbzrle \
+ test-crypto-tlscredsx509 \
+ test-crypto-tlssession \
+ test-crypto-secret \
+
+# These require different set of linkers.
+CRYPTO_TESTS := \
+ test-crypto-afsplit \
+ test-crypto-cipher \
+ test-crypto-hash \
+ test-crypto-hmac \
+ test-crypto-ivgen \
+ test-crypto-pbkdf \
+ test-crypto-xts \
+#
+# These tests are currently failing.
+SIMPLE_TEST_FAILURES := \
+ test-qht-par \
+
+SIMPLE_TESTS := \
+ test-aio \
+ test-base64 \
+ test-bitcnt \
+ test-bitops \
+ test-bufferiszero \
+ test-clone-visitor \
+ test-coroutine \
+ test-cutils \
+ test-int128 \
+ test-iov \
+ test-keyval \
+ test-logging \
+ test-mul64 \
+ test-opts-visitor \
+ test-qapi-util \
+ test-qdist \
+ test-qemu-opts \
+ test-qht \
+ test-qmp-event \
+ test-qobject-input-visitor \
+ test-qobject-output-visitor \
+ test-rcu-list \
+ test-shift128 \
+ test-string-input-visitor \
+ test-string-output-visitor \
+ test-timed-average \
+ test-uuid \
+ test-visitor-serialization \
+ test-x86-cpuid \
+
+# Add the lists of simple tests.
+$(foreach test,$(SIMPLE_TESTS),$(call add-qemu-test, $(strip $(test))))
+$(foreach test,$(CRYPTO_TESTS),$(call add-qemu-crypto-test, $(strip $(test))))
diff --git a/android-qemu2-glue/build/Makefile.qemu2.mk b/android-qemu2-glue/build/Makefile.qemu2.mk
index f1c1a20cee..e6bf369f40 100644
--- a/android-qemu2-glue/build/Makefile.qemu2.mk
+++ b/android-qemu2-glue/build/Makefile.qemu2.mk
@@ -39,7 +39,8 @@ qemu2-if-posix = $(call qemu2-ifnot-os,windows,$1,$2)
qemu2-if-darwin = $(call qemu2-if-os,darwin,$1,$2)
qemu2-if-linux = $(call qemu2-if-os,linux,$1,$2)
-QEMU2_AUTO_GENERATED_DIR := $(BUILD_OBJS_DIR)/build/qemu2-qapi-auto-generated
+QEMU2_AUTO_GENERATED_DIR := qemu2-auto-generated
+QEMU2_CONFIG_DIR = $(BUILD_OBJS_DIR)/build/qemu2-config/
QEMU2_DEPS_TOP_DIR := $(QEMU2_DEPS_PREBUILTS_DIR)/$(BUILD_TARGET_TAG)
QEMU2_DEPS_LDFLAGS := -L$(QEMU2_DEPS_TOP_DIR)/lib
@@ -112,6 +113,7 @@ endif
QEMU2_INCLUDES += \
$(LOCAL_PATH) \
$(LOCAL_PATH)/include \
+ $(QEMU2_CONFIG_DIR) \
$(QEMU2_AUTO_GENERATED_DIR) \
QEMU2_INCLUDES += $(QEMU2_GLIB_INCLUDES) \
@@ -220,15 +222,24 @@ ifeq (,$(CONFIG_MIN_BUILD))
QEMU2_TARGET := arm64
include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-target.mk
- QEMU2_TARGET := mips
- include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-target.mk
+ ifeq (true,$(BUILD_ENABLE_MIPS))
+ QEMU2_TARGET := mips
+ include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-target.mk
+
+ QEMU2_TARGET := mips64
+ include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-target.mk
+ endif
- QEMU2_TARGET := mips64
- include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-target.mk
endif # !CONFIG_MIN_BUILD
# TODO(jansene): This gets included twice in the windows build (32 bit/64 bit)
# causing targets to be overridden.
include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu-img.mk
+# The test infrastructure used by Qemu is not yet cross platform.
+# See b/113667469
+ifneq (windows,$(BUILD_TARGET_OS))
+ include $(LOCAL_PATH)/android-qemu2-glue/build/Makefile.qemu2-tests.mk
+endif
+
LOCAL_PATH := $(QEMU2_OLD_LOCAL_PATH)
diff --git a/android-qemu2-glue/drive-share.cpp b/android-qemu2-glue/drive-share.cpp
index 3cf9e3f503..91364eb80e 100644
--- a/android-qemu2-glue/drive-share.cpp
+++ b/android-qemu2-glue/drive-share.cpp
@@ -37,6 +37,7 @@ extern "C" {
#include "qemu/config-file.h"
#include "qemu/cutils.h"
#include "qemu/error-report.h"
+#include "qemu/option.h"
#include "qemu/option_int.h"
#include "qemu/osdep.h"
#include "sysemu/block-backend.h"
@@ -44,6 +45,14 @@ extern "C" {
#include "sysemu/sysemu.h"
}
+#define DEBUG 0
+
+#if DEBUG
+#define D(...) printf(__VA_ARGS__)
+#else
+#define D(...) ((void)0)
+#endif
+
namespace {
struct DriveShare {
std::vector<DriveInfo*> driveInfoList = {};
@@ -118,10 +127,14 @@ static bool parseQemuOptForQcow2(bool wipeData) {
/* List of paths to all images that can be mounted.*/
const DriveBackingPair image_paths[] = {
- {"system", android_hw->disk_systemPartition_path
- ?: android_hw->disk_systemPartition_initPath},
- {"vendor", android_hw->disk_vendorPartition_path
- ?: android_hw->disk_vendorPartition_initPath},
+ {"system", android_hw->disk_systemPartition_path &&
+ android_hw->disk_systemPartition_path[0]
+ ? android_hw->disk_systemPartition_path
+ : android_hw->disk_systemPartition_initPath},
+ {"vendor", android_hw->disk_vendorPartition_path &&
+ android_hw->disk_vendorPartition_path[0]
+ ? android_hw->disk_vendorPartition_path
+ : android_hw->disk_vendorPartition_initPath},
{"cache", android_hw->disk_cachePartition_path},
{"userdata", android_hw->disk_dataPartition_path},
{"sdcard", android_hw->hw_sdCard_path},
@@ -143,9 +156,11 @@ static bool parseQemuOptForQcow2(bool wipeData) {
QemuOptsList* optList = qemu_find_opts("drive");
for (p = 0; p < count; p++) {
QemuOpts* opts = qemu_opts_find(optList, images[p].drive);
+ const char* qcow2_image_path = nullptr;
if (opts) {
+ qcow2_image_path = qemu_opt_get(opts, "file");
sDriveShare->srcImagePaths.emplace(images[p].drive,
- qemu_opt_get(opts, "file"));
+ qcow2_image_path);
}
const char* backing_image_path = images[p].backing_image_path;
if (!backing_image_path || *backing_image_path == '\0') {
@@ -153,8 +168,7 @@ static bool parseQemuOptForQcow2(bool wipeData) {
continue;
}
char* image_basename = path_basename(backing_image_path);
- char* qcow2_path_buffer = NULL;
- const char* qcow2_image_path = NULL;
+ char* qcow2_path_buffer = nullptr;
bool need_create_tmp = false;
// ChromeOS and Android pass parameters differently
if (android_hw->hw_arc) {
@@ -188,11 +202,11 @@ static bool parseQemuOptForQcow2(bool wipeData) {
qcow2_image_path = qcow2_path_buffer;
sDriveShare->srcImagePaths[images[p].drive] = qcow2_image_path;
} else {
- qcow2_image_path = qemu_opt_get(opts, "file");
const char qcow2_suffix[] = "." QCOW2_SUFFIX;
- if (strcmp(qcow2_suffix, qcow2_image_path +
- strlen(qcow2_image_path) -
- strlen(qcow2_suffix))) {
+ if (!qcow2_image_path ||
+ strcmp(qcow2_suffix, qcow2_image_path +
+ strlen(qcow2_image_path) -
+ strlen(qcow2_suffix))) {
// We are not using qcow2
continue;
}
@@ -236,12 +250,14 @@ static bool parseQemuOptForQcow2(bool wipeData) {
return true;
}
-static bool needRemount(const char* id) {
- return strcmp("system", id) && strcmp("vendor", id);
+static bool needRemount(QemuOpts* opts) {
+ return !qemu_opt_get_bool(opts, "read-only", false);
}
-static bool needCreateTmp(const char* id, android::base::FileShare shareMode) {
- return shareMode == android::base::FileShare::Read && needRemount(id) &&
+static bool needCreateTmp(const char* id,
+ android::base::FileShare shareMode,
+ QemuOpts* opts) {
+ return shareMode == android::base::FileShare::Read && needRemount(opts) &&
android::base::PathUtils::extension(
sDriveShare->srcImagePaths[id]) == ".qcow2";
}
@@ -262,9 +278,10 @@ static bool createEmptySnapshot(BlockDriverState* bs,
}
static std::string initDrivePath(const char* id,
- android::base::FileShare shareMode) {
+ android::base::FileShare shareMode,
+ QemuOpts* opts) {
assert(sDriveShare->srcImagePaths.count(id));
- if (needCreateTmp(id, shareMode)) {
+ if (needCreateTmp(id, shareMode, opts)) {
// Create a temp qcow2-on-qcow2
Error* img_creation_error = NULL;
TempFile* img = tempfile_create_with_ext(".qcow2");
@@ -283,15 +300,37 @@ static std::string initDrivePath(const char* id,
}
}
+static void mirrorTmpCache(const char* dst, const char* src) {
+ // Cache image doesn't work well with bdrv_snapshot_create.
+ // It complaints when loading a snapshot.
+ // Thus we directly copy the qcow2 file.
+ // TODO (yahan@): figure out why
+ path_copy_file(dst, src);
+ QDict *options = qdict_new();
+ qdict_put(options, "driver", qstring_from_str(QCOW2_SUFFIX));
+ Error *local_err = NULL;
+ BlockBackend *blk = blk_new_open(dst,
+ NULL, options, BDRV_O_RDWR | BDRV_O_NO_BACKING,
+ &local_err);
+ if (!blk) {
+ error_report("Could not open '%s': ", dst);
+ } else {
+ BlockDriverState* bs = blk_bs(blk);
+ bdrv_change_backing_file(bs,
+ android_hw->disk_cachePartition_path, NULL);
+ blk_unref(blk);
+ }
+}
+
// This is for C-style function pointer
extern "C" {
static int drive_init(void* opaque, QemuOpts* opts, Error** errp) {
DriveInitParam* param = (DriveInitParam*)opaque;
const char* id = opts->id;
if (id) {
- std::string path = initDrivePath(id, param->shareMode);
+ std::string path = initDrivePath(id, param->shareMode, opts);
qemu_opt_set(opts, "file", path.c_str(), errp);
- if (needCreateTmp(id, param->shareMode) && param->snapshotName) {
+ if (needCreateTmp(id, param->shareMode, opts) && param->snapshotName) {
if (strcmp(id, "cache")) {
int res = 0;
if (param->baseNeedApplySnapshot) {
@@ -316,26 +355,8 @@ static int drive_init(void* opaque, QemuOpts* opts, Error** errp) {
blk_unref(blkNew);
}
} else {
- // Cache image doesn't work well with bdrv_snapshot_create.
- // It complaints when loading a snapshot.
- // Thus we directly copy the qcow2 file.
- // TODO (yahan@): figure out why
- path_copy_file(path.c_str(),
+ mirrorTmpCache(path.c_str(),
sDriveShare->srcImagePaths[id].c_str());
- QDict *options = qdict_new();
- qdict_put(options, "driver", qstring_from_str(QCOW2_SUFFIX));
- Error *local_err = NULL;
- BlockBackend *blk = blk_new_open(path.c_str(),
- NULL, options, BDRV_O_RDWR | BDRV_O_NO_BACKING,
- &local_err);
- if (!blk) {
- error_report("Could not open '%s': ", path.c_str());
- } else {
- BlockDriverState* bs = blk_bs(blk);
- bdrv_change_backing_file(bs,
- android_hw->disk_cachePartition_path, NULL);
- blk_unref(blk);
- }
}
}
}
@@ -345,7 +366,8 @@ static int drive_init(void* opaque, QemuOpts* opts, Error** errp) {
static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
const char* id = opts->id;
- if (!needRemount(id)) {
+ D("Re-init drive %s\n", id);
+ if (!needRemount(opts)) {
return 0;
}
DriveInitParam* param = (DriveInitParam*)opaque;
@@ -359,7 +381,8 @@ static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
BlockDriverState* oldbs = blk_bs(blk);
AioContext* aioCtx = bdrv_get_aio_context(oldbs);
aio_context_acquire(aioCtx);
- if (needCreateTmp(id, param->shareMode)) {
+ bool isCache = !strcmp(id, "cache");
+ if (needCreateTmp(id, param->shareMode, opts) && !isCache) {
bdrv_flush(oldbs);
// Set the base file to use the snapshot
int res = bdrv_snapshot_goto(oldbs, snapshotName, errp);
@@ -372,8 +395,13 @@ static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
}
blk_remove_bs(blk);
aio_context_release(aioCtx);
+ std::string path = initDrivePath(id, param->shareMode, opts);
+ if (needCreateTmp(id, param->shareMode, opts) && isCache) {
+ mirrorTmpCache(path.c_str(),
+ sDriveShare->srcImagePaths[id].c_str());
+ }
- std::string path = initDrivePath(id, param->shareMode);
+ // Mount the drive
qemu_opt_set(opts, "file", path.c_str(), errp);
// Setup qemu opts for the drive.
@@ -384,7 +412,6 @@ static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
// because it should have been renamed in the first time of initialization.)
QDict* bs_opts = qdict_new();
qemu_opts_to_qdict(opts, bs_opts);
- const char* file = qemu_opt_get(opts, "file");
QemuOpts* legacy_opts =
qemu_opts_create(&qemu_legacy_drive_opts, NULL, 0, nullptr);
qemu_opts_absorb_qdict(legacy_opts, bs_opts, errp);
@@ -403,13 +430,13 @@ static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
read_only ? "on" : "off");
qdict_del(bs_opts, "id");
- BlockDriverState* bs = bdrv_open(file, nullptr, bs_opts, 0, errp);
+ BlockDriverState* bs = bdrv_open(path.c_str(), nullptr, bs_opts, 0, errp);
if (!bs) {
- error_setg(errp, "drive %s open failure", file);
+ error_setg(errp, "drive %s open failure", path.c_str());
return 1;
}
- if (needCreateTmp(id, param->shareMode)) {
+ if (needCreateTmp(id, param->shareMode, opts) && !isCache) {
// fake an empty snapshot
// We don't worry if it fails.
createEmptySnapshot(bs, param->snapshotName);
@@ -417,6 +444,7 @@ static int drive_reinit(void* opaque, QemuOpts* opts, Error** errp) {
int res = blk_insert_bs(blk, bs, errp);
bdrv_unref(bs);
+ D("Re-init drive %s %s\n", id, res == 0 ? "Success" : "Failed");
return res;
}
}
@@ -454,6 +482,7 @@ static bool isBaseOnDifferentSnapshot(const char* snapshot_name) {
static bool updateDriveShareMode(const char* snapshotName,
android::base::FileShare shareMode) {
+ D("Update drive share mode %d\n", shareMode);
DriveInitParam param = {sDriveShare->blockDefaultType, snapshotName,
shareMode};
Error* error = NULL;
diff --git a/android-qemu2-glue/main.cpp b/android-qemu2-glue/main.cpp
index 106f027002..4719460402 100755
--- a/android-qemu2-glue/main.cpp
+++ b/android-qemu2-glue/main.cpp
@@ -60,6 +60,7 @@
#include "android/utils/string.h"
#include "android/utils/tempfile.h"
#include "android/utils/win32_cmdline_quote.h"
+#include "android/verified-boot/load_config.h"
#include "android/skin/qt/init-qt.h"
#include "android/skin/winsys.h"
@@ -343,9 +344,6 @@ static int createUserData(AvdInfo* avd,
resizeExt4Partition(android_hw->disk_dataPartition_path,
android_hw->disk_dataPartition_size);
}
- } else {
- derror("Missing initial data partition file: %s",
- hw->disk_dataPartition_initPath);
}
}
@@ -1211,7 +1209,7 @@ extern "C" int main(int argc, char** argv) {
// instead of virtio block device
args.add("-drive");
const char* avd_dir = avdInfo_getContentPath(avd);
- args.addFormat("index=0,format=raw,id=system,file=cat:%s" PATH_SEP
+ args.addFormat("format=raw,file=cat:%s" PATH_SEP
"system.img.qcow2|"
"%s" PATH_SEP
"userdata-qemu.img.qcow2|"
@@ -1439,10 +1437,16 @@ extern "C" int main(int argc, char** argv) {
fc::setEnabledOverride(fc::GLAsyncSwap, false);
}
+ // Get verified boot kernel parameters, if they exist.
+ std::vector<std::string> verified_boot_params;
+ android::verifiedboot::getParametersFromFile(
+ avdInfo_getVerifiedBootParamsPath(avd), // NULL here is OK
+ &verified_boot_params);
+
ScopedCPtr<char> kernel_parameters(emulator_getKernelParameters(
opts, kTarget.androidArch, apiLevel, kTarget.ttyPrefix,
- hw->kernel_parameters, rendererConfig.glesMode,
- rendererConfig.bootPropOpenglesVersion,
+ hw->kernel_parameters, &verified_boot_params,
+ rendererConfig.glesMode, rendererConfig.bootPropOpenglesVersion,
rendererConfig.glFramebufferSizeBytes, pstore, hw->vm_heapSize,
true /* isQemu2 */, hw->hw_arc));
diff --git a/android-qemu2-glue/qemu-control-impl.h b/android-qemu2-glue/qemu-control-impl.h
index 88999f5526..75116648a1 100644
--- a/android-qemu2-glue/qemu-control-impl.h
+++ b/android-qemu2-glue/qemu-control-impl.h
@@ -59,7 +59,7 @@ extern const QAndroidHttpProxyAgent* const gQAndroidHttpProxyAgent;
// Defined in android/qemu-record-screen-agent.c
extern const QAndroidRecordScreenAgent* const gQAndroidRecordScreenAgent;
-// Defined in android/qemu-sensors-agent.c
+// Defined in android/qemu-sensors-agent.cpp
extern const QAndroidSensorsAgent* const gQAndroidSensorsAgent;
// Defined in android/qemu-telephony-agent.c
diff --git a/android-qemu2-glue/qemu-sensors-agent-impl.c b/android-qemu2-glue/qemu-sensors-agent-impl.c
deleted file mode 100644
index f0ef5e3e55..0000000000
--- a/android-qemu2-glue/qemu-sensors-agent-impl.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 2015 The Android Open Source Project
- **
- ** This software is licensed under the terms of the GNU General Public
- ** License version 2, as published by the Free Software Foundation, and
- ** may be copied, distributed, and modified under those terms.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- */
-
-#include "android/emulation/control/sensors_agent.h"
-
-#include "android/hw-sensors.h"
-
-int physical_parameter_target_set(
- int parameterId, float a, float b, float c, int interpolation_method) {
- return android_physical_model_set(
- parameterId, a, b, c, interpolation_method);
-}
-
-int physical_parameter_get(
- int parameterId, float *a, float *b, float *c,
- int parameter_value_type) {
- return android_physical_model_get(
- parameterId, a, b, c, parameter_value_type);
-}
-
-int coarse_orientation_set(int orientation) {
- return android_sensors_set_coarse_orientation(orientation, 0.f);
-}
-
-int sensor_override_set(int sensorId, float a, float b, float c) {
- return android_sensors_override_set(sensorId, a, b, c);
-}
-
-int sensor_get(int sensorId, float *a, float *b, float *c) {
- return android_sensors_get(sensorId, a, b, c);
-}
-
-int sensor_get_delay_ms() {
- return android_sensors_get_delay_ms();
-}
-
-int physical_state_agent_set(const struct QAndroidPhysicalStateAgent* agent) {
- return android_physical_agent_set(agent);
-}
-
-static const QAndroidSensorsAgent sQAndroidSensorsAgent = {
- .setPhysicalParameterTarget = physical_parameter_target_set,
- .getPhysicalParameter = physical_parameter_get,
- .setCoarseOrientation = coarse_orientation_set,
- .setSensorOverride = sensor_override_set,
- .getSensor = sensor_get,
- .getDelayMs = sensor_get_delay_ms,
- .setPhysicalStateAgent = physical_state_agent_set};
-const QAndroidSensorsAgent* const gQAndroidSensorsAgent =
- &sQAndroidSensorsAgent;
diff --git a/android-qemu2-glue/qemu-sensors-agent-impl.cpp b/android-qemu2-glue/qemu-sensors-agent-impl.cpp
new file mode 100644
index 0000000000..4c3446e7ea
--- /dev/null
+++ b/android-qemu2-glue/qemu-sensors-agent-impl.cpp
@@ -0,0 +1,72 @@
+/* Copyright (C) 2015 The Android Open Source Project
+ **
+ ** This software is licensed under the terms of the GNU General Public
+ ** License version 2, as published by the Free Software Foundation, and
+ ** may be copied, distributed, and modified under those terms.
+ **
+ ** This program is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ** GNU General Public License for more details.
+ */
+
+#include "android/automation/AutomationController.h"
+#include "android/emulation/control/sensors_agent.h"
+
+#include "android/hw-sensors.h"
+
+int physical_parameter_target_set(int parameterId,
+ float a,
+ float b,
+ float c,
+ int interpolation_method) {
+ return android_physical_model_set(parameterId, a, b, c,
+ interpolation_method);
+}
+
+int physical_parameter_get(int parameterId,
+ float* a,
+ float* b,
+ float* c,
+ int parameter_value_type) {
+ return android_physical_model_get(
+ parameterId, a, b, c,
+ static_cast<ParameterValueType>(parameter_value_type));
+}
+
+int coarse_orientation_set(int orientation) {
+ return android_sensors_set_coarse_orientation(
+ static_cast<AndroidCoarseOrientation>(orientation), 0.f);
+}
+
+int sensor_override_set(int sensorId, float a, float b, float c) {
+ return android_sensors_override_set(sensorId, a, b, c);
+}
+
+int sensor_get(int sensorId, float* a, float* b, float* c) {
+ return android_sensors_get(sensorId, a, b, c);
+}
+
+int sensor_get_delay_ms() {
+ return android_sensors_get_delay_ms();
+}
+
+int physical_state_agent_set(const struct QAndroidPhysicalStateAgent* agent) {
+ return android_physical_agent_set(agent);
+}
+
+void automation_advance_time() {
+ android::automation::AutomationController::tryAdvanceTime();
+}
+
+static const QAndroidSensorsAgent sQAndroidSensorsAgent = {
+ .setPhysicalParameterTarget = physical_parameter_target_set,
+ .getPhysicalParameter = physical_parameter_get,
+ .setCoarseOrientation = coarse_orientation_set,
+ .setSensorOverride = sensor_override_set,
+ .getSensor = sensor_get,
+ .getDelayMs = sensor_get_delay_ms,
+ .setPhysicalStateAgent = physical_state_agent_set,
+ .advanceTime = automation_advance_time};
+extern "C" const QAndroidSensorsAgent* const gQAndroidSensorsAgent =
+ &sQAndroidSensorsAgent;
diff --git a/android-qemu2-glue/qemu-setup.cpp b/android-qemu2-glue/qemu-setup.cpp
index 4d6deac85d..c54f3478b2 100644
--- a/android-qemu2-glue/qemu-setup.cpp
+++ b/android-qemu2-glue/qemu-setup.cpp
@@ -115,6 +115,8 @@ bool qemu_android_emulation_early_setup() {
qemu_thread_register_setup_callback(qemu_looper_setForThread);
qemu_abort_set_handler((QemuAbortHandler)&crashhandler_die_format_v);
+ qemu_crash_dump_message_func_set(
+ (QemuCrashDumpMessageFunc)&crashhandler_append_message_format_v);
// Make sure we override the ctrl-C handler as soon as possible.
qemu_set_ctrlc_handler(&skin_winsys_quit_request);
@@ -209,4 +211,5 @@ bool qemu_android_emulation_setup() {
void qemu_android_emulation_teardown() {
android::qemu::skipTimerOps();
androidSnapshot_finalize();
+ android_emulation_teardown();
}
diff --git a/android-qemu2-glue/qemu-vm-operations-impl.cpp b/android-qemu2-glue/qemu-vm-operations-impl.cpp
index bb4dd83a1f..c8077dc24a 100644
--- a/android-qemu2-glue/qemu-vm-operations-impl.cpp
+++ b/android-qemu2-glue/qemu-vm-operations-impl.cpp
@@ -23,8 +23,10 @@
#include "android/emulation/CpuAccelerator.h"
#include "android/emulation/VmLock.h"
#include "android/snapshot/common.h"
+#include "android/snapshot/interface.h"
#include "android/snapshot/MemoryWatch.h"
#include "android/snapshot/PathUtils.h"
+#include "android/snapshot/Snapshotter.h"
extern "C" {
#include "qemu/osdep.h"
@@ -40,6 +42,7 @@ extern "C" {
#include "sysemu/sysemu.h"
#include "sysemu/cpus.h"
#include "exec/cpu-common.h"
+#include "exec/memory-remap.h"
}
#include <string>
@@ -223,6 +226,58 @@ static bool qemu_snapshot_delete(const char* name,
return qemu_delvm(name, MessageCallback(opaque, nullptr, errConsumer)) == 0;
}
+static bool qemu_snapshot_remap(bool shared,
+ void* opaque,
+ LineConsumerCallback errConsumer) {
+
+ android::RecursiveScopedVmLock vmlock;
+
+ // We currently only support remap of the Quickboot snapshot,
+ // and only if file-backed.
+ //
+ // It's good to skip doing anything if the use case
+ // is currently out of scope, or it would have no semantic effect
+ // (going from auto saving to continuing to auto-save).
+ auto currentRamFileStatus = androidSnapshot_getRamFileInfo();
+
+ // If the backing file is not "default_boot" then we cannot use file-backed
+ // ram.
+ // If it doesn't have a backing file then we will create a default_boot
+ // snapshot.
+ if (android::snapshot::Snapshotter::get().loadedSnapshotFile() != "" &&
+ android::snapshot::Snapshotter::get().loadedSnapshotFile() !=
+ "default_boot") {
+ return true;
+ }
+
+ if (currentRamFileStatus == SNAPSHOT_RAM_FILE_SHARED && shared) {
+ return true;
+ }
+
+ bool wasVmRunning = runstate_is_running() != 0;
+
+ if (currentRamFileStatus != SNAPSHOT_RAM_FILE_PRIVATE && !shared) {
+ vm_stop(RUN_STATE_SAVE_VM);
+ android::snapshot::Snapshotter::get().setRemapping(true);
+ qemu_savevm("default_boot", MessageCallback(opaque, nullptr, errConsumer));
+ android::snapshot::Snapshotter::get().setRemapping(false);
+ ram_blocks_remap_shared(shared);
+ } else {
+ vm_stop(RUN_STATE_RESTORE_VM);
+ ram_blocks_remap_shared(shared);
+ qemu_loadvm("default_boot", MessageCallback(opaque, nullptr, errConsumer));
+ }
+
+ android::snapshot::Snapshotter::get().setRamFileShared(shared);
+ androidSnapshot_setRamFileDirty("default_boot", false);
+
+ if (wasVmRunning) {
+ vm_start();
+ }
+
+ return true;
+}
+
static SnapshotCallbacks sSnapshotCallbacks = {};
static void* sSnapshotCallbacksOpaque = nullptr;
@@ -506,6 +561,7 @@ static const QAndroidVmOperations sQAndroidVmOperations = {
.snapshotSave = qemu_snapshot_save,
.snapshotLoad = qemu_snapshot_load,
.snapshotDelete = qemu_snapshot_delete,
+ .snapshotRemap = qemu_snapshot_remap,
.setSnapshotCallbacks = set_snapshot_callbacks,
.getVmConfiguration = get_vm_config,
.setFailureReason = set_failure_reason,
diff --git a/android-qemu2-glue/stubs/win32-stubs.c b/android-qemu2-glue/stubs/win32-stubs.c
index aecdc29c8e..f1ba39916b 100644
--- a/android-qemu2-glue/stubs/win32-stubs.c
+++ b/android-qemu2-glue/stubs/win32-stubs.c
@@ -2,6 +2,9 @@
#include "android/utils/win32_unicode.h"
+#include <direct.h>
+#include <windows.h>
+
HANDLE win32CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
@@ -52,3 +55,17 @@ DWORD win32GetModuleFileName(
}
return (DWORD)ret;
}
+
+int win32_stat(const char* filepath, struct stat* st) {
+ // Make sure we use the stat call that matches the type of stat struct we
+ // are getting. The incoming struct is a "struct _stati64" and this is the
+ // matching call for that struct. Unfortunately the macro doesn't take care
+ // of that.
+ wchar_t* wide_path = win32_utf8_to_utf16_str(filepath);
+ return _wstati64(wide_path, st);
+}
+
+int win32_lstat(const char* filepath, struct stat* st) {
+ // Windows doesn't seem to have an lstat function so just use regular stat
+ return win32_stat(filepath, st);
+}
diff --git a/android/android-emu/CMakeLists.txt b/android/android-emu/CMakeLists.txt
new file mode 100644
index 0000000000..d5160f43a7
--- /dev/null
+++ b/android/android-emu/CMakeLists.txt
@@ -0,0 +1,140 @@
+cmake_minimum_required(VERSION 3.5)
+project(base-libraries)
+
+
+# COMPILER + PATH CONFIGURATION
+# =============================
+# TODO(jansene): This section is needed as a bridge
+# to the android build system.
+string(REPLACE " " ";" INCLUDES ${LOCAL_C_INCLUDES})
+include_directories(${INCLUDES})
+include_directories(.)
+
+# Use same compiler config as android build system
+set(CMAKE_C_FLAGS ${LOCAL_CFLAGS})
+set(CMAKE_CXX_FLAGS "${LOCAL_CFLAGS} ${LOCAL_CXXFLAGS}")
+
+# Work around some gcc/mingw issues
+if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
+
+# Make sure we create archives in the same way..
+SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+# END COMPILER CONFIGURATION
+# ==========================
+
+set(COMMON_SOURCES
+ android/base/ContiguousRangeMapper.cpp
+ android/base/Debug.cpp
+ android/base/files/CompressingStream.cpp
+ android/base/files/DecompressingStream.cpp
+ android/base/files/Fd.cpp
+ android/base/files/FileShareOpen.cpp
+ android/base/files/IniFile.cpp
+ android/base/files/InplaceStream.cpp
+ android/base/files/MemStream.cpp
+ android/base/files/PathUtils.cpp
+ android/base/files/StdioStream.cpp
+ android/base/files/Stream.cpp
+ android/base/files/StreamSerializing.cpp
+ android/base/misc/FileUtils.cpp
+ android/base/misc/HttpUtils.cpp
+ android/base/misc/StringUtils.cpp
+ android/base/misc/Utf8Utils.cpp
+ android/base/network/IpAddress.cpp
+ android/base/network/NetworkUtils.cpp
+ android/base/Stopwatch.cpp
+ android/base/StringFormat.cpp
+ android/base/StringParse.cpp
+ android/base/StringView.cpp
+ android/base/sockets/SocketUtils.cpp
+ android/base/sockets/SocketWaiter.cpp
+ android/base/synchronization/MessageChannel.cpp
+ android/base/Log.cpp
+ android/base/memory/LazyInstance.cpp
+ android/base/memory/MemoryHints.cpp
+ android/base/ProcessControl.cpp
+ android/base/system/System.cpp
+ android/base/threads/Async.cpp
+ android/base/threads/FunctorThread.cpp
+ android/base/threads/ThreadStore.cpp
+ android/base/Uri.cpp
+ android/base/Uuid.cpp
+ android/base/Version.cpp
+ android/utils/aconfig-file.c
+ android/utils/assert.c
+ android/utils/async.cpp
+ android/utils/bufprint.c
+ android/utils/bufprint_system.cpp
+ android/utils/cbuffer.c
+ android/utils/debug.c
+ android/utils/debug_wrapper.cpp
+ android/utils/dll.c
+ android/utils/dirscanner.cpp
+ android/utils/eintr_wrapper.c
+ android/utils/exec.cpp
+ android/utils/fd.cpp
+ android/utils/filelock.cpp
+ android/utils/file_data.c
+ android/utils/file_io.cpp
+ android/utils/format.cpp
+ android/utils/host_bitness.cpp
+ android/utils/http_utils.cpp
+ android/utils/iolooper.cpp
+ android/utils/ini.cpp
+ android/utils/intmap.c
+ android/utils/ipaddr.cpp
+ android/utils/lineinput.c
+ android/utils/lock.cpp
+ android/utils/mapfile.c
+ android/utils/misc.c
+ android/utils/panic.c
+ android/utils/path.cpp
+ android/utils/path_system.cpp
+ android/utils/property_file.c
+ android/utils/reflist.c
+ android/utils/refset.c
+ android/utils/sockets.c
+ android/utils/stralloc.c
+ android/utils/stream.cpp
+ android/utils/string.cpp
+ android/utils/system.c
+ android/utils/system_wrapper.cpp
+ android/utils/tempfile.c
+ android/utils/timezone.cpp
+ android/utils/uri.cpp
+ android/utils/utf8_utils.cpp
+ android/utils/vector.c
+ android/utils/x86_cpuid.cpp
+ )
+
+# WIN32 Tag does not work on cross compilation, but will
+# work when you are active on windows
+if(WIN32 OR ("${LOCAL_OS}" STREQUAL "windows") )
+ set(PLATFORM_SOURCES
+ android/base/files/preadwrite.cpp
+ android/base/memory/SharedMemory_win32.cpp
+ android/base/threads/Thread_win32.cpp
+ android/base/system/Win32Utils.cpp
+ android/base/system/Win32UnicodeString.cpp
+ android/utils/win32_cmdline_quote.cpp
+ android/utils/win32_unicode.cpp
+ )
+else()
+ set(PLATFORM_SOURCES
+ android/base/memory/SharedMemory_posix.cpp
+ android/base/threads/Thread_pthread.cpp
+ )
+endif()
+
+if(APPLE)
+ set (PLATFORM_SOURCES
+ ${PLATFORM_SOURCES}
+ android/base/system/system-native-mac.mm)
+endif(APPLE)
+
+add_library(android-emu-base ${COMMON_SOURCES} ${PLATFORM_SOURCES})
diff --git a/android/android-emu/Makefile.android-emu.mk b/android/android-emu/Makefile.android-emu.mk
index 32230beba1..196bbeb3df 100644
--- a/android/android-emu/Makefile.android-emu.mk
+++ b/android/android-emu/Makefile.android-emu.mk
@@ -48,6 +48,11 @@ _ANDROID_EMU_ROOT := $(LOCAL_PATH)
###############################################################################
#
+# Automation protoc-generated library.
+include $(_ANDROID_EMU_ROOT)/android/automation/proto/AutomationProto.mk
+
+###############################################################################
+#
# Metrics library is a part of android-emu, so let's include it here
include $(_ANDROID_EMU_ROOT)/android/metrics/proto/MetricsProto.mk
@@ -67,6 +72,11 @@ include $(_ANDROID_EMU_ROOT)/android/location/proto/LocationProto.mk
###############################################################################
#
+# Offworld protoc-generated library.
+include $(_ANDROID_EMU_ROOT)/android/offworld/proto/OffworldProto.mk
+
+###############################################################################
+#
# Snapshot protoc-generated library.
include $(_ANDROID_EMU_ROOT)/android/snapshot/proto/SnapshotProto.mk
@@ -82,8 +92,9 @@ include $(_ANDROID_EMU_ROOT)/android/telephony/proto/SimAccessRulesProto.mk
###############################################################################
#
-# Automation protoc-generated library.
-include $(_ANDROID_EMU_ROOT)/android/automation/proto/AutomationProto.mk
+# Verified Boot Config protoc-generated library.
+include $(_ANDROID_EMU_ROOT)/android/verified-boot/proto/VerifiedBootConfigProto.mk
+
# all includes are like 'android/...', so we need to count on that
ANDROID_EMU_BASE_INCLUDES := $(_ANDROID_EMU_ROOT)
@@ -109,123 +120,16 @@ endif
# be part of this library, but goes into android-emu
#
-$(call start-emulator-library,android-emu-base)
-
+$(call start-cmake-project,android-emu-base)
LOCAL_CFLAGS := $(EMULATOR_COMMON_CFLAGS) $(ANDROID_EMU_CFLAGS)
-
LOCAL_C_INCLUDES := \
$(EMULATOR_COMMON_INCLUDES) \
$(ANDROID_EMU_INCLUDES) \
$(LIBUUID_INCLUDES) \
$(LZ4_INCLUDES) \
-LOCAL_SRC_FILES := \
- android/base/ContiguousRangeMapper.cpp \
- android/base/Debug.cpp \
- android/base/files/CompressingStream.cpp \
- android/base/files/DecompressingStream.cpp \
- android/base/files/Fd.cpp \
- android/base/files/FileShareOpen.cpp \
- android/base/files/IniFile.cpp \
- android/base/files/InplaceStream.cpp \
- android/base/files/MemStream.cpp \
- android/base/files/PathUtils.cpp \
- android/base/files/StdioStream.cpp \
- android/base/files/Stream.cpp \
- android/base/files/StreamSerializing.cpp \
- android/base/misc/FileUtils.cpp \
- android/base/misc/HttpUtils.cpp \
- android/base/misc/StringUtils.cpp \
- android/base/misc/Utf8Utils.cpp \
- android/base/network/IpAddress.cpp \
- android/base/network/NetworkUtils.cpp \
- android/base/Stopwatch.cpp \
- android/base/StringFormat.cpp \
- android/base/StringParse.cpp \
- android/base/StringView.cpp \
- android/base/sockets/SocketUtils.cpp \
- android/base/sockets/SocketWaiter.cpp \
- android/base/synchronization/MessageChannel.cpp \
- android/base/Log.cpp \
- android/base/memory/LazyInstance.cpp \
- android/base/memory/MemoryHints.cpp \
- android/base/ProcessControl.cpp \
- android/base/system/System.cpp \
- android/base/threads/Async.cpp \
- android/base/threads/FunctorThread.cpp \
- android/base/threads/ThreadStore.cpp \
- android/base/Uri.cpp \
- android/base/Uuid.cpp \
- android/base/Version.cpp \
- android/utils/aconfig-file.c \
- android/utils/assert.c \
- android/utils/async.cpp \
- android/utils/bufprint.c \
- android/utils/bufprint_system.cpp \
- android/utils/cbuffer.c \
- android/utils/debug.c \
- android/utils/debug_wrapper.cpp \
- android/utils/dll.c \
- android/utils/dirscanner.cpp \
- android/utils/eintr_wrapper.c \
- android/utils/exec.cpp \
- android/utils/fd.cpp \
- android/utils/filelock.cpp \
- android/utils/file_data.c \
- android/utils/file_io.cpp \
- android/utils/format.cpp \
- android/utils/host_bitness.cpp \
- android/utils/http_utils.cpp \
- android/utils/iolooper.cpp \
- android/utils/ini.cpp \
- android/utils/intmap.c \
- android/utils/ipaddr.cpp \
- android/utils/lineinput.c \
- android/utils/lock.cpp \
- android/utils/mapfile.c \
- android/utils/misc.c \
- android/utils/panic.c \
- android/utils/path.cpp \
- android/utils/path_system.cpp \
- android/utils/property_file.c \
- android/utils/reflist.c \
- android/utils/refset.c \
- android/utils/sockets.c \
- android/utils/stralloc.c \
- android/utils/stream.cpp \
- android/utils/string.cpp \
- android/utils/system.c \
- android/utils/system_wrapper.cpp \
- android/utils/tempfile.c \
- android/utils/timezone.cpp \
- android/utils/uri.cpp \
- android/utils/utf8_utils.cpp \
- android/utils/vector.c \
- android/utils/x86_cpuid.cpp \
-
-ifeq ($(BUILD_TARGET_OS),windows)
-LOCAL_SRC_FILES += \
- android/base/files/preadwrite.cpp \
- android/base/memory/SharedMemory_win32.cpp \
- android/base/threads/Thread_win32.cpp \
- android/base/system/Win32Utils.cpp \
- android/base/system/Win32UnicodeString.cpp \
- android/utils/win32_cmdline_quote.cpp \
- android/utils/win32_unicode.cpp \
-
-else
-LOCAL_SRC_FILES += \
- android/base/memory/SharedMemory_posix.cpp \
- android/base/threads/Thread_pthread.cpp \
-
-endif
-
-ifeq ($(BUILD_TARGET_OS),darwin)
-LOCAL_SRC_FILES += \
- android/base/system/system-native-mac.mm
-endif
-
-$(call end-emulator-library)
+PRODUCED_STATIC_LIBS=android-emu-base
+$(call end-cmake-project)
####
# Small low-level benchmark for android-emu-base.
@@ -257,6 +161,9 @@ $(call end-emulator-benchmark)
$(call start-emulator-library,android-emu)
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_CFLAGS := \
$(EMULATOR_COMMON_CFLAGS) \
$(LIBCURL_CFLAGS) \
@@ -286,6 +193,7 @@ LOCAL_SRC_FILES := \
android/adb-server.cpp \
android/automation/AutomationController.cpp \
android/automation/AutomationEventSink.cpp \
+ android/avd/generate.cpp \
android/avd/hw-config.c \
android/avd/info.c \
android/avd/scanner.c \
@@ -303,6 +211,7 @@ LOCAL_SRC_FILES := \
android/base/async/ScopedSocketWatch.cpp \
android/base/async/ThreadLooper.cpp \
android/base/network/Dns.cpp \
+ android/base/Pool.cpp \
android/base/sockets/SocketDrainer.cpp \
android/base/threads/internal/ParallelTaskBase.cpp \
android/boot-properties.c \
@@ -329,6 +238,7 @@ LOCAL_SRC_FILES := \
android/emulation/AdbGuestPipe.cpp \
android/emulation/AdbHostListener.cpp \
android/emulation/AdbHostServer.cpp \
+ android/emulation/AndroidAsyncMessagePipe.cpp \
android/emulation/AndroidMessagePipe.cpp \
android/emulation/AndroidPipe.cpp \
android/emulation/android_pipe_host.cpp \
@@ -355,6 +265,7 @@ LOCAL_SRC_FILES := \
android/emulation/GoldfishDma.cpp \
android/emulation/GoldfishSyncCommandQueue.cpp \
android/emulation/goldfish_sync.cpp \
+ android/emulation/hostpipe/HostGoldfishPipe.cpp \
android/emulation/LogcatPipe.cpp \
android/emulation/Keymaster3.cpp \
android/emulation/FakeRotatingCameraSensor.cpp \
@@ -369,6 +280,7 @@ LOCAL_SRC_FILES := \
android/emulation/serial_line.cpp \
android/emulation/SerialLine.cpp \
android/emulation/SetupParameters.cpp \
+ android/emulation/testing/TestVmLock.cpp \
android/emulation/VmLock.cpp \
android/error-messages.cpp \
android/featurecontrol/FeatureControl.cpp \
@@ -429,6 +341,7 @@ LOCAL_SRC_FILES := \
android/network/control.cpp \
android/network/constants.c \
android/network/globals.c \
+ android/offworld/OffworldPipe.cpp \
android/opengl/EmuglBackendList.cpp \
android/opengl/EmuglBackendScanner.cpp \
android/opengl/emugl_config.cpp \
@@ -481,7 +394,7 @@ LOCAL_SRC_FILES := \
android/snapshot/RamSnapshotTesting.cpp \
android/snapshot/Saver.cpp \
android/snapshot/Snapshot.cpp \
- android/snapshot/SnapshotPipe.cpp \
+ android/snapshot/SnapshotAPI.cpp \
android/snapshot/Snapshotter.cpp \
android/snapshot/TextureLoader.cpp \
android/snapshot/TextureSaver.cpp \
@@ -506,6 +419,7 @@ LOCAL_SRC_FILES := \
android/utils/socket_drainer.cpp \
android/utils/sockets.c \
android/utils/looper.cpp \
+ android/verified-boot/load_config.cpp \
android/virtualscene/MeshSceneObject.cpp \
android/virtualscene/PosterInfo.cpp \
android/virtualscene/PosterSceneObject.cpp \
@@ -579,6 +493,9 @@ LOCAL_COPY_COMMON_TESTDATA += \
textureutils/rgba32_golden.bmp \
textureutils/rgba32.png \
+LOCAL_COPY_COMMON_TESTDATA_DIRS += \
+ test-sdk \
+
endif
$(call gen-hw-config-defs)
@@ -628,16 +545,18 @@ ANDROID_EMU_STATIC_LIBRARIES := \
emulator-zlib \
emulator-murmurhash \
emulator-tinyepoxy \
+ $(AUTOMATION_PROTO_STATIC_LIBRARIES) \
$(METRICS_PROTO_STATIC_LIBRARIES) \
$(LIBMMAN_WIN32_STATIC_LIBRARIES) \
$(LOCATION_PROTO_STATIC_LIBRARIES) \
$(VEHICLE_PROTO_STATIC_LIBRARIES) \
$(FEATURECONTROL_PROTO_STATIC_LIBRARIES) \
+ $(OFFWORLD_PROTO_STATIC_LIBRARIES) \
$(SNAPSHOT_PROTO_STATIC_LIBRARIES) \
$(CRASHREPORT_PROTO_STATIC_LIBRARIES) \
$(SIM_ACCESS_RULES_PROTO_STATIC_LIBRARIES) \
$(PHYSICS_PROTO_STATIC_LIBRARIES) \
- $(AUTOMATION_PROTO_STATIC_LIBRARIES) \
+ ${VERIFIEDBOOTCFG_PROTO_STATIC_LIBRARIES} \
ANDROID_EMU_LDLIBS := \
$(ANDROID_EMU_BASE_LDLIBS) \
@@ -665,6 +584,9 @@ endif
$(call start-emulator-program, android_emu$(BUILD_TARGET_SUFFIX)_unittests)
$(call gen-hw-config-defs)
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_C_INCLUDES += \
$(ANDROID_EMU_INCLUDES) \
$(EMULATOR_COMMON_INCLUDES) \
@@ -677,6 +599,8 @@ LOCAL_LDLIBS += \
$(ANDROID_EMU_LDLIBS) \
LOCAL_SRC_FILES := \
+ android/automation/AutomationController_unittest.cpp \
+ android/automation/AutomationEventSink_unittest.cpp \
android/avd/util_unittest.cpp \
android/avd/util_wrapper_unittest.cpp \
android/base/ArraySize_unittest.cpp \
@@ -718,6 +642,7 @@ LOCAL_SRC_FILES := \
android/base/network/IpAddress_unittest.cpp \
android/base/network/NetworkUtils_unittest.cpp \
android/base/Optional_unittest.cpp \
+ android/base/Pool_unittest.cpp \
android/base/ProcessControl_unittest.cpp \
android/base/Result_unittest.cpp \
android/base/sockets/ScopedSocket_unittest.cpp \
@@ -732,6 +657,7 @@ LOCAL_SRC_FILES := \
android/base/synchronization/ReadWriteLock_unittest.cpp \
android/base/synchronization/MessageChannel_unittest.cpp \
android/base/system/System_unittest.cpp \
+ android/base/testing/TestEvent_unittest.cpp \
android/base/threads/Async_unittest.cpp \
android/base/threads/FunctorThread_unittest.cpp \
android/base/threads/ParallelTask_unittest.cpp \
@@ -752,6 +678,7 @@ LOCAL_SRC_FILES := \
android/emulation/AdbHostServer_unittest.cpp \
android/emulation/android_pipe_pingpong_unittest.cpp \
android/emulation/android_pipe_zero_unittest.cpp \
+ android/emulation/AndroidAsyncMessagePipe_unittest.cpp \
android/emulation/bufprint_config_dirs_unittest.cpp \
android/emulation/ComponentVersion_unittest.cpp \
android/emulation/ConfigDirs_unittest.cpp \
@@ -765,6 +692,7 @@ LOCAL_SRC_FILES := \
android/emulation/control/LineConsumer_unittest.cpp \
android/emulation/CpuAccelerator_unittest.cpp \
android/emulation/Hypervisor_unittest.cpp \
+ android/emulation/hostpipe/HostGoldfishPipe_unittest.cpp \
android/emulation/ParameterList_unittest.cpp \
android/emulation/serial_line_unittest.cpp \
android/emulation/SetupParameters_unittest.cpp \
@@ -827,6 +755,7 @@ LOCAL_SRC_FILES := \
android/utils/string_unittest.cpp \
android/utils/sockets_unittest.cpp \
android/utils/x86_cpuid_unittest.cpp \
+ android/verified-boot/load_config_unittest.cpp \
android/virtualscene/TextureUtils_unittest.cpp \
android/wear-agent/PairUpWearPhone_unittest.cpp \
android/wear-agent/testing/WearAgentTestUtils.cpp \
@@ -869,6 +798,9 @@ $(call end-emulator-program)
$(call start-emulator-program, \
android_emu_metrics$(BUILD_TARGET_SUFFIX)_unittests)
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_C_INCLUDES += \
$(ANDROID_EMU_INCLUDES) \
$(EMULATOR_COMMON_INCLUDES) \
@@ -951,6 +883,10 @@ LOCAL_C_INCLUDES := \
$(EMULATOR_LIBUI_INCLUDES) \
$(FFMPEG_INCLUDES) \
+
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_SRC_FILES += \
$(ANDROID_SKIN_SOURCES) \
android/skin/LibuiAgent.cpp \
diff --git a/android/android-emu/android/automation/AutomationController.cpp b/android/android-emu/android/automation/AutomationController.cpp
index 037170d46c..243b980d37 100644
--- a/android/android-emu/android/automation/AutomationController.cpp
+++ b/android/android-emu/android/automation/AutomationController.cpp
@@ -14,38 +14,391 @@
#include "android/automation/AutomationController.h"
#include "android/automation/AutomationEventSink.h"
+#include "android/base/StringView.h"
+#include "android/base/async/ThreadLooper.h"
+#include "android/base/files/FileShareOpen.h"
+#include "android/base/files/PathUtils.h"
+#include "android/base/files/StdioStream.h"
+#include "android/base/files/Stream.h"
#include "android/base/memory/LazyInstance.h"
+#include "android/base/synchronization/Lock.h"
+#include "android/hw-sensors.h"
+#include "android/physics/PhysicalModel.h"
-#include <google/protobuf/text_format.h>
-
-#include <memory>
+#include <ostream>
using namespace android::base;
+static constexpr uint32_t kFileVersion = 2;
+
namespace android {
namespace automation {
+std::ostream& operator<<(std::ostream& os, const StartError& value) {
+ switch (value) {
+ case StartError::InvalidFilename:
+ os << "Invalid filename";
+ break;
+ case StartError::FileOpenError:
+ os << "Could not open file";
+ break;
+ case StartError::AlreadyStarted:
+ os << "Already started";
+ break;
+ case StartError::InternalError:
+ os << "Internal error";
+ break;
+ case StartError::PlaybackFileCorrupt:
+ os << "File corrupt";
+ break;
+ // Default intentionally omitted so that missing statements generate
+ // errors.
+ }
+
+ return os;
+}
+
+std::ostream& operator<<(std::ostream& os, const StopError& value) {
+ switch (value) {
+ case StopError::NotStarted:
+ os << "Not started";
+ break;
+ // Default intentionally omitted so that missing statements generate
+ // errors.
+ }
+
+ return os;
+}
+
class AutomationControllerImpl : public AutomationController {
public:
- AutomationControllerImpl();
+ AutomationControllerImpl(PhysicalModel* physicalModel,
+ base::Looper* looper);
+ ~AutomationControllerImpl();
+
+ void shutdown();
- // Get the event sink for recording automation events.
AutomationEventSink& getEventSink() override;
+ void reset() override;
+ DurationNs advanceTime() override;
+
+ StartResult startRecording(StringView filename) override;
+ StopResult stopRecording() override;
+
+ StartResult startPlayback(StringView filename) override;
+ StopResult stopPlayback() override;
+
private:
- std::unique_ptr<AutomationEventSink> mEventSink;
+ // Helper to replay the last event in the playback stream, must be called
+ // under lock.
+ //
+ // If the playback stream reaches EOF, automatically ends playback.
+ void replayEvent(const AutoLock& proofOfLock);
+
+ AutomationEventSink mEventSink;
+ PhysicalModel* const mPhysicalModel;
+ base::Looper* const mLooper;
+
+ Lock mLock;
+ bool mShutdown = false;
+ std::unique_ptr<android::base::Stream> mRecordingStream;
+
+ // Playback state.
+ bool mPlaying = false;
+ std::unique_ptr<android::base::Stream> mPlaybackStream;
+ DurationNs mPlaybackStartTime = 0L;
+ DurationNs mPlaybackTimeBase = 0L;
+ DurationNs mNextPlaybackCommandTime = 0L;
+ pb::RecordedEvent mNextPlaybackCommand;
};
+static AutomationControllerImpl* sInstance = nullptr;
+
+void AutomationController::initialize() {
+ CHECK(!sInstance)
+ << "AutomationController::initialize() called more than once";
+ sInstance = new AutomationControllerImpl(android_physical_model_instance(),
+ ThreadLooper::get());
+}
+
+void AutomationController::shutdown() {
+ // Since other threads may be using the AutomationController, it's not safe
+ // to delete. Instead, call shutdown which disables future calls.
+ // Note that there will only be one instance of AutomationController in
+ // the emulator, which will be cleaned up on process exit so it's safe to
+ // leak.
+ if (sInstance) {
+ VLOG(automation) << "Shutting down AutomationController";
+ sInstance->shutdown();
+ }
+}
+
AutomationController& AutomationController::get() {
- static LazyInstance<AutomationControllerImpl> sInstance;
- return sInstance.get();
+ CHECK(sInstance) << "AutomationController instance not created";
+ return *sInstance;
+}
+
+std::unique_ptr<AutomationController> AutomationController::createForTest(
+ PhysicalModel* physicalModel,
+ base::Looper* looper) {
+ return std::unique_ptr<AutomationControllerImpl>(
+ new AutomationControllerImpl(physicalModel, looper));
+}
+
+void AutomationController::tryAdvanceTime() {
+ if (sInstance) {
+ sInstance->advanceTime();
+ }
}
-AutomationControllerImpl::AutomationControllerImpl()
- : mEventSink(new AutomationEventSink()) {}
+AutomationControllerImpl::AutomationControllerImpl(PhysicalModel* physicalModel,
+ base::Looper* looper)
+ : mPhysicalModel(physicalModel), mLooper(looper) {
+ physicalModel_setAutomationController(physicalModel, this);
+}
+
+AutomationControllerImpl::~AutomationControllerImpl() {
+ physicalModel_setAutomationController(mPhysicalModel, nullptr);
+}
+
+void AutomationControllerImpl::shutdown() {
+ {
+ AutoLock lock(mLock);
+ mShutdown = true;
+ }
+ stopRecording();
+ stopPlayback();
+}
AutomationEventSink& AutomationControllerImpl::getEventSink() {
- return *mEventSink;
+ return mEventSink;
+}
+
+void AutomationControllerImpl::reset() {
+ // These may return and error, but it's safe to ignore them here.
+ stopRecording();
+ stopPlayback();
+}
+
+DurationNs AutomationControllerImpl::advanceTime() {
+ AutoLock lock(mLock);
+ if (mShutdown) {
+ return 0;
+ }
+
+ const DurationNs nowNs = mLooper->nowNs(Looper::ClockType::kVirtual);
+ while (mPlaybackStream) {
+ const DurationNs nextEventTimeNs = mPlaybackStartTime +
+ mNextPlaybackCommandTime -
+ mPlaybackTimeBase;
+
+ if (nowNs >= nextEventTimeNs) {
+ physicalModel_setCurrentTime(mPhysicalModel, nextEventTimeNs);
+ replayEvent(lock);
+ } else {
+ break;
+ }
+ }
+
+ physicalModel_setCurrentTime(mPhysicalModel, nowNs);
+ return nowNs;
+}
+
+StartResult AutomationControllerImpl::startRecording(StringView filename) {
+ AutoLock lock(mLock);
+ if (mShutdown) {
+ return Err(StartError::InternalError);
+ }
+
+ if (filename.empty()) {
+ return Err(StartError::InvalidFilename);
+ }
+
+ std::string path = filename;
+ if (!PathUtils::isAbsolute(path)) {
+ path = PathUtils::join(System::get()->getHomeDirectory(), filename);
+ }
+
+ if (mRecordingStream) {
+ return Err(StartError::AlreadyStarted);
+ }
+
+ pb::InitialState initialState;
+ const int saveStateResult =
+ physicalModel_saveState(mPhysicalModel, &initialState);
+ if (saveStateResult != 0) {
+ LOG(ERROR) << "physicalModel_saveState failed with " << saveStateResult;
+ return Err(StartError::InternalError);
+ }
+
+ std::string binaryProto;
+ if (!initialState.SerializeToString(&binaryProto)) {
+ LOG(ERROR) << "SerializeToString failed";
+ return Err(StartError::InternalError);
+ }
+
+ LOG(VERBOSE) << "Starting record to " << path;
+ std::unique_ptr<StdioStream> recordingStream(new StdioStream(
+ fsopen(path.c_str(), "wb", FileShare::Write), StdioStream::kOwner));
+
+ if (!recordingStream->get()) {
+ return Err(StartError::FileOpenError);
+ }
+
+ mRecordingStream = std::move(recordingStream);
+ mRecordingStream->putBe32(kFileVersion);
+ mRecordingStream->putString(binaryProto);
+ mEventSink.registerStream(mRecordingStream.get(),
+ StreamEncoding::BinaryPbChunks);
+
+ return Ok();
+}
+
+StopResult AutomationControllerImpl::stopRecording() {
+ AutoLock lock(mLock);
+ if (!mRecordingStream) {
+ return Err(StopError::NotStarted);
+ }
+
+ mEventSink.unregisterStream(mRecordingStream.get());
+ mRecordingStream.reset();
+ return Ok();
+}
+
+static bool parseNextCommand(android::base::Stream* stream,
+ DurationNs* outTime,
+ pb::RecordedEvent* outCommand) {
+ const std::string nextCommand = stream->getString();
+ if (nextCommand.empty()) {
+ VLOG(automation) << "Empty command";
+ return false;
+ }
+
+ pb::RecordedEvent event;
+ if (!event.ParseFromString(nextCommand)) {
+ VLOG(automation) << "Event parse failed";
+ return false;
+ }
+
+ if (!event.has_event_time() || !event.event_time().has_timestamp()) {
+ VLOG(automation) << "Event missing timestamp";
+ return false;
+ }
+
+ *outTime = event.event_time().timestamp();
+ *outCommand = std::move(event);
+ return true;
+}
+
+StartResult AutomationControllerImpl::startPlayback(StringView filename) {
+ AutoLock lock(mLock);
+ if (mShutdown) {
+ return Err(StartError::InternalError);
+ }
+
+ if (filename.empty()) {
+ return Err(StartError::InvalidFilename);
+ }
+
+ std::string path = filename;
+ if (!PathUtils::isAbsolute(path)) {
+ path = PathUtils::join(System::get()->getHomeDirectory(), filename);
+ }
+
+ if (mPlaying) {
+ return Err(StartError::AlreadyStarted);
+ }
+
+ // NOTE: The class state is intentionally not modified until after the file
+ // header has been parsed.
+ LOG(VERBOSE) << "Starting playback of " << path;
+ std::unique_ptr<StdioStream> playbackStream(new StdioStream(
+ fsopen(path.c_str(), "rb", FileShare::Read), StdioStream::kOwner));
+ if (!playbackStream->get()) {
+ return Err(StartError::FileOpenError);
+ }
+
+ const uint32_t version = playbackStream->getBe32();
+ if (kFileVersion != version) {
+ LOG(ERROR) << "Unsupported file version " << version
+ << " expected version " << kFileVersion;
+ return Err(StartError::PlaybackFileCorrupt);
+ }
+
+ const std::string initialStateStr = playbackStream->getString();
+ pb::InitialState initialState;
+ if (initialStateStr.empty() ||
+ !initialState.ParseFromString(initialStateStr)) {
+ LOG(ERROR) << "Could not load initial data";
+ return Err(StartError::PlaybackFileCorrupt);
+ }
+
+ if (!initialState.has_initial_time() ||
+ !initialState.initial_time().has_timestamp()) {
+ LOG(ERROR) << "Initial state missing timestamp";
+ return Err(StartError::PlaybackFileCorrupt);
+ }
+
+ const DurationNs initialTime = initialState.initial_time().timestamp();
+
+ const int loadStateResult =
+ physicalModel_loadState(mPhysicalModel, initialState);
+ if (loadStateResult != 0) {
+ LOG(ERROR) << "physicalModel_saveState failed with " << loadStateResult;
+ return Err(StartError::InternalError);
+ }
+
+ DurationNs nextCommandTime;
+ pb::RecordedEvent nextCommand;
+ if (parseNextCommand(playbackStream.get(), &nextCommandTime,
+ &nextCommand)) {
+ // Header parsed, initialize class state.
+ mPlaybackStream = std::move(playbackStream);
+ mPlaybackStartTime = mLooper->nowNs(Looper::ClockType::kVirtual);
+ mPlaybackTimeBase = initialTime;
+
+ mNextPlaybackCommand = std::move(nextCommand);
+ mNextPlaybackCommandTime = nextCommandTime;
+ } else {
+ LOG(INFO) << "Playback did not contain any commands";
+ }
+
+ mPlaying = true;
+ return Ok();
+}
+
+StopResult AutomationControllerImpl::stopPlayback() {
+ AutoLock lock(mLock);
+ if (!mPlaying) {
+ return Err(StopError::NotStarted);
+ }
+
+ mPlaying = false;
+ mPlaybackStream.reset();
+ return Ok();
+}
+
+void AutomationControllerImpl::replayEvent(const AutoLock& proofOfLock) {
+ const auto& event = mNextPlaybackCommand;
+ if (event.has_stream_type()) {
+ switch (event.stream_type()) {
+ case pb::RecordedEvent_StreamType_PHYSICAL_MODEL:
+ physicalModel_replayEvent(mPhysicalModel,
+ event.physical_model());
+ break;
+ default:
+ VLOG(automation) << "Unhandled stream type: "
+ << static_cast<uint32_t>(event.stream_type());
+ break;
+ }
+ }
+
+ if (!parseNextCommand(mPlaybackStream.get(), &mNextPlaybackCommandTime,
+ &mNextPlaybackCommand)) {
+ VLOG(automation) << "Playback hit EOF";
+ mPlaybackStream.reset();
+ }
}
} // namespace automation
diff --git a/android/android-emu/android/automation/AutomationController.h b/android/android-emu/android/automation/AutomationController.h
index 4d259a5d61..fd1dad97ec 100644
--- a/android/android-emu/android/automation/AutomationController.h
+++ b/android/android-emu/android/automation/AutomationController.h
@@ -15,29 +15,92 @@
#pragma once
#include "android/base/Compiler.h"
+#include "android/base/Result.h"
+#include "android/base/async/Looper.h"
+
+#include <memory>
+
+// Forward declarations;
+typedef struct PhysicalModel PhysicalModel;
namespace android {
namespace automation {
-// Controls recording and playback of emulator automation events.
+typedef android::base::Looper::DurationNs DurationNs;
// Forward declarations.
class AutomationEventSink;
+enum class StartError {
+ InvalidFilename,
+ FileOpenError,
+ AlreadyStarted,
+ InternalError,
+ PlaybackFileCorrupt
+};
+using StartResult = base::Result<void, StartError>;
+std::ostream& operator<<(std::ostream& os, const StartError& value);
+
+enum class StopError { NotStarted };
+using StopResult = base::Result<void, StopError>;
+std::ostream& operator<<(std::ostream& os, const StopError& value);
+
+//
+// Controls recording and playback of emulator automation events.
+//
+
class AutomationController {
protected:
DISALLOW_COPY_AND_ASSIGN(AutomationController);
// AutomationController is a singleton, use get() to get an instance.
AutomationController() = default;
- virtual ~AutomationController() = default;
public:
- // Get the global instance of the AutomationController.
+ virtual ~AutomationController() = default;
+
+ // Initialize the AutomationController, called in qemu-setup.cpp.
+ static void initialize();
+
+ // Shutdown the AutomationController, called in qemu-setup.cpp.
+ static void shutdown();
+
+ // Get the global instance of the AutomationController. Asserts if called
+ // before initialize().
static AutomationController& get();
+ // Create an instance of the Looper for test usage.
+ static std::unique_ptr<AutomationController> createForTest(
+ PhysicalModel* physicalModel,
+ base::Looper* looper);
+
+ // Advance the time if the AutomationController has been created.
+ static void tryAdvanceTime();
+
// Get the event sink for recording automation events.
virtual AutomationEventSink& getEventSink() = 0;
+
+ // Reset the current state and cancel any recordings or playback.
+ // Called on snapshot restore, since playback cannot be trivially resumed.
+ virtual void reset() = 0;
+
+ // Advance the state and process any playback events.
+ // Note that it is *not safe* to call this from a PhysicalModel callback.
+ //
+ // Returns the current time.
+ virtual DurationNs advanceTime() = 0;
+
+ // Start a recording to a file.
+ virtual StartResult startRecording(android::base::StringView filename) = 0;
+
+ // Stops a recording to a file.
+ virtual StopResult stopRecording() = 0;
+
+ // Start a playback from a file.
+ virtual StartResult startPlayback(android::base::StringView filename) = 0;
+
+ // Stop playback from a file.
+ virtual StopResult stopPlayback() = 0;
};
} // namespace automation
diff --git a/android/android-emu/android/automation/AutomationController_unittest.cpp b/android/android-emu/android/automation/AutomationController_unittest.cpp
new file mode 100644
index 0000000000..d5d06e3add
--- /dev/null
+++ b/android/android-emu/android/automation/AutomationController_unittest.cpp
@@ -0,0 +1,271 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#include "android/automation/AutomationController.h"
+
+#include "android/automation/AutomationEventSink.h"
+#include "android/base/files/StdioStream.h"
+#include "android/base/testing/ResultMatchers.h"
+#include "android/base/testing/TestLooper.h"
+#include "android/base/testing/TestMemoryOutputStream.h"
+#include "android/base/testing/TestSystem.h"
+#include "android/base/testing/TestTempDir.h"
+#include "android/physics/PhysicalModel.h"
+
+#include <google/protobuf/text_format.h>
+#include <gtest/gtest.h>
+
+using namespace android::automation;
+using android::base::IsErr;
+using android::base::IsOk;
+using android::base::System;
+using android::base::TestLooper;
+using android::base::TestMemoryOutputStream;
+using android::base::TestSystem;
+using android::base::TestTempDir;
+
+constexpr uint64_t secondsToNs(float seconds) {
+ return static_cast<uint64_t>(seconds * 1000000000.0);
+}
+
+struct PhysicalModelDeleter {
+ void operator()(PhysicalModel* physicalModel) {
+ physicalModel_free(physicalModel);
+ }
+};
+
+typedef std::unique_ptr<PhysicalModel, PhysicalModelDeleter> PhysicalModelPtr;
+
+void PrintTo(const vec3& value, std::ostream* os) {
+ *os << "vec3(" << value.x << ", " << value.y << ", " << value.z << ")";
+}
+
+TEST(AutomationController, CreateAndDestroy) {
+ TestLooper looper;
+ PhysicalModelPtr model(physicalModel_new());
+ std::unique_ptr<AutomationController> controller =
+ AutomationController::createForTest(model.get(), &looper);
+ EXPECT_TRUE(controller);
+}
+
+class AutomationControllerTest : public testing::Test {
+protected:
+ AutomationControllerTest() : mTestSystem("/", System::kProgramBitness) {
+ TestTempDir* testDir = mTestSystem.getTempRoot();
+ EXPECT_TRUE(testDir->makeSubDir("home"));
+ mTestSystem.setHomeDirectory(testDir->makeSubPath("home"));
+ }
+
+ void SetUp() override {
+ mLooper.reset(new TestLooper());
+ mPhysicalModel.reset(physicalModel_new());
+ mController = AutomationController::createForTest(mPhysicalModel.get(),
+ mLooper.get());
+ }
+
+ void TearDown() override {
+ mController.reset();
+ mPhysicalModel.reset();
+ mLooper.reset();
+ }
+
+ void advanceTimeToNs(uint64_t timeNs) {
+ mLooper->setVirtualTimeNs(timeNs);
+ EXPECT_EQ(mController->advanceTime(), timeNs);
+ }
+
+ TestSystem mTestSystem;
+ std::unique_ptr<TestLooper> mLooper;
+ PhysicalModelPtr mPhysicalModel;
+ std::unique_ptr<AutomationController> mController;
+};
+
+TEST_F(AutomationControllerTest, InvalidInput) {
+ EXPECT_THAT(mController->startRecording(nullptr),
+ IsErr(StartError::InvalidFilename));
+ EXPECT_THAT(mController->startRecording(""),
+ IsErr(StartError::InvalidFilename));
+ EXPECT_THAT(mController->startRecording("\0"),
+ IsErr(StartError::FileOpenError));
+
+ EXPECT_THAT(mController->startPlayback(nullptr),
+ IsErr(StartError::InvalidFilename));
+ EXPECT_THAT(mController->startPlayback(""),
+ IsErr(StartError::InvalidFilename));
+ EXPECT_THAT(mController->startPlayback("file-does-not-exist.txt"),
+ IsErr(StartError::FileOpenError));
+}
+
+TEST_F(AutomationControllerTest, SimpleRecordPlay) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->stopRecording(), IsOk());
+
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->stopPlayback(), IsOk());
+}
+
+TEST_F(AutomationControllerTest, DuplicateRecord) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->startRecording("otherFile.txt"),
+ IsErr(StartError::AlreadyStarted));
+}
+
+TEST_F(AutomationControllerTest, DuplicatePlay) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->stopRecording(), IsOk());
+
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"),
+ IsErr(StartError::AlreadyStarted));
+}
+
+TEST_F(AutomationControllerTest, PlaybackFileCorrupt) {
+ using android::base::StdioStream;
+
+ const char* kFilename = "corruptFile.txt";
+ const std::string path = android::base::PathUtils::join(
+ System::get()->getHomeDirectory(), kFilename);
+
+ std::unique_ptr<StdioStream> stream(
+ new StdioStream(fopen(path.c_str(), "wb"), StdioStream::kOwner));
+ ASSERT_TRUE(stream->get());
+ stream->putBe32(0);
+ stream->putString("Test string please ignore");
+ stream.reset();
+
+ EXPECT_THAT(mController->startPlayback(kFilename),
+ IsErr(StartError::PlaybackFileCorrupt));
+}
+
+TEST_F(AutomationControllerTest, RecordPlayEvents) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+
+ const vec3 kVecZero = {0.0f, 0.0f, 0.0f};
+
+ const uint64_t kEventTime1 = secondsToNs(0.5);
+ const vec3 kPosition1 = {0.5f, 10.0f, 0.0f};
+ const uint64_t kEventTime2 = secondsToNs(0.6);
+ const vec3 kPosition2 = {0.0f, -5.0f, -1.0f};
+ const uint64_t kEventTime3 = secondsToNs(3.0);
+ const vec3 kVelocity = {1.0f, 0.0f, 0.0f};
+ const uint64_t kPlaybackStartTime = secondsToNs(100.0);
+
+ advanceTimeToNs(kEventTime1);
+ physicalModel_setTargetPosition(mPhysicalModel.get(), kPosition1,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+
+ advanceTimeToNs(kEventTime2);
+ physicalModel_setTargetPosition(mPhysicalModel.get(), kPosition2,
+ PHYSICAL_INTERPOLATION_STEP);
+
+ advanceTimeToNs(kEventTime3);
+ physicalModel_setTargetVelocity(mPhysicalModel.get(), kVelocity,
+ PHYSICAL_INTERPOLATION_STEP);
+ EXPECT_THAT(mController->stopRecording(), IsOk());
+
+ advanceTimeToNs(kPlaybackStartTime);
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+
+ // Verify that the initial state was properly reset.
+ EXPECT_EQ(physicalModel_getParameterPosition(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_CURRENT),
+ kVecZero);
+ EXPECT_EQ(physicalModel_getParameterVelocity(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_TARGET),
+ kVecZero);
+
+ // Now go through the events and validate.
+ advanceTimeToNs(kPlaybackStartTime + kEventTime1);
+
+ EXPECT_EQ(physicalModel_getParameterPosition(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_CURRENT),
+ kVecZero)
+ << "Value should not be set yet, no time to interpolate";
+
+ advanceTimeToNs(kPlaybackStartTime + kEventTime2);
+ EXPECT_EQ(physicalModel_getParameterPosition(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_CURRENT),
+ kPosition2)
+ << "Current value should be set by step";
+
+ advanceTimeToNs(kPlaybackStartTime + kEventTime3);
+ EXPECT_EQ(physicalModel_getParameterVelocity(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_TARGET),
+ kVelocity);
+
+ advanceTimeToNs(kPlaybackStartTime + kEventTime3 + secondsToNs(10.0));
+ EXPECT_EQ(physicalModel_getParameterVelocity(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_CURRENT),
+ kVelocity);
+
+ EXPECT_THAT(mController->stopPlayback(), IsOk());
+}
+
+TEST_F(AutomationControllerTest, DestructWhileRecording) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+
+ const uint64_t kEventTime1 = secondsToNs(0.5);
+ const vec3 kPosition1 = {0.5f, 10.0f, 0.0f};
+ advanceTimeToNs(kEventTime1);
+ physicalModel_setTargetPosition(mPhysicalModel.get(), kPosition1,
+ PHYSICAL_INTERPOLATION_STEP);
+
+ TearDown();
+ SetUp();
+
+ EXPECT_THAT(mController->stopRecording(), IsErr(StopError::NotStarted));
+
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+
+ // Now go through the events and validate.
+ advanceTimeToNs(kEventTime1);
+ EXPECT_EQ(physicalModel_getParameterPosition(mPhysicalModel.get(),
+ PARAMETER_VALUE_TYPE_CURRENT),
+ kPosition1);
+
+ EXPECT_THAT(mController->stopPlayback(), IsOk());
+}
+
+TEST_F(AutomationControllerTest, DestructWhilePlaying) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+
+ const uint64_t kEventTime1 = secondsToNs(0.5);
+ const vec3 kPosition1 = {0.5f, 10.0f, 0.0f};
+ advanceTimeToNs(kEventTime1);
+ physicalModel_setTargetPosition(mPhysicalModel.get(), kPosition1,
+ PHYSICAL_INTERPOLATION_STEP);
+
+ EXPECT_THAT(mController->stopRecording(), IsOk());
+
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+}
+
+TEST_F(AutomationControllerTest, PlayWhileRecording) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"),
+ IsErr(StartError::FileOpenError));
+}
+
+TEST_F(AutomationControllerTest, RecordWhilePlaying) {
+ EXPECT_THAT(mController->startRecording("testRecording.txt"), IsOk());
+
+ const uint64_t kEventTime1 = secondsToNs(0.5);
+ const vec3 kPosition1 = {0.5f, 10.0f, 0.0f};
+ advanceTimeToNs(kEventTime1);
+ physicalModel_setTargetPosition(mPhysicalModel.get(), kPosition1,
+ PHYSICAL_INTERPOLATION_STEP);
+
+ EXPECT_THAT(mController->stopRecording(), IsOk());
+
+ EXPECT_THAT(mController->startPlayback("testRecording.txt"), IsOk());
+ EXPECT_THAT(mController->startRecording("testRecording.txt"),
+ IsErr(StartError::FileOpenError));
+}
diff --git a/android/android-emu/android/automation/AutomationEventSink.cpp b/android/android-emu/android/automation/AutomationEventSink.cpp
index 3d5d35f257..8de7a94298 100644
--- a/android/android-emu/android/automation/AutomationEventSink.cpp
+++ b/android/android-emu/android/automation/AutomationEventSink.cpp
@@ -24,11 +24,7 @@ using namespace android::base;
namespace android {
namespace automation {
-AutomationEventSink& AutomationEventSink::get() {
- return AutomationController::get().getEventSink();
-}
-
-void AutomationEventSink::registerStream(android::base::Stream* stream,
+void AutomationEventSink::registerStream(Stream* stream,
StreamEncoding encoding) {
AutoLock lock(mLock);
if (encoding == StreamEncoding::BinaryPbChunks) {
@@ -38,7 +34,7 @@ void AutomationEventSink::registerStream(android::base::Stream* stream,
}
}
-void AutomationEventSink::unregisterStream(android::base::Stream* stream) {
+void AutomationEventSink::unregisterStream(Stream* stream) {
AutoLock lock(mLock);
if (!mTextStreams.erase(stream) && !mBinaryStreams.erase(stream)) {
LOG(WARNING) << "Could not find stream.";
@@ -46,11 +42,11 @@ void AutomationEventSink::unregisterStream(android::base::Stream* stream) {
}
void AutomationEventSink::recordPhysicalModelEvent(
- pb::Time& time,
+ uint64_t timeNs,
pb::PhysicalModelEvent& event) {
pb::RecordedEvent recordedEvent;
recordedEvent.set_stream_type(pb::RecordedEvent_StreamType_PHYSICAL_MODEL);
- *recordedEvent.mutable_event_time() = time;
+ recordedEvent.mutable_event_time()->set_timestamp(timeNs);
*recordedEvent.mutable_physical_model() = event;
handleEvent(recordedEvent);
@@ -73,6 +69,7 @@ void AutomationEventSink::handleEvent(pb::RecordedEvent& event) {
if (!mTextStreams.empty() || VERBOSE_CHECK(automation)) {
google::protobuf::TextFormat::Printer printer;
printer.SetSingleLineMode(true);
+ printer.SetUseShortRepeatedPrimitives(true);
std::string textProto;
if (!printer.PrintToString(event, &textProto)) {
diff --git a/android/android-emu/android/automation/AutomationEventSink.h b/android/android-emu/android/automation/AutomationEventSink.h
index aae186566f..44b91f74f1 100644
--- a/android/android-emu/android/automation/AutomationEventSink.h
+++ b/android/android-emu/android/automation/AutomationEventSink.h
@@ -26,14 +26,17 @@ namespace automation {
namespace pb = emulator_automation;
-// Receives automation events from other emulator subsystems so that they may
-// be recorded or streamed.
-
enum class StreamEncoding { BinaryPbChunks, TextPb };
// Forward declarations.
+class AutomationController;
class AutomationControllerImpl;
+//
+// Receives automation events from other emulator subsystems so that they may
+// be recorded or streamed.
+//
+
class AutomationEventSink {
DISALLOW_COPY_AND_ASSIGN(AutomationEventSink);
friend class AutomationControllerImpl;
@@ -42,10 +45,6 @@ class AutomationEventSink {
AutomationEventSink() = default;
public:
- // Helper method to the global instance of the AutomationEventSink,
- // equivalent to calling AnimationController::get().getEventSink().
- static AutomationEventSink& get();
-
// Register a stream to write recorded events out to.
// |stream| - Stream pointer, assumes that the pointer remains valid until
// unregisterStream is called.
@@ -55,9 +54,8 @@ public:
// Unregister a stream.
void unregisterStream(android::base::Stream* stream);
- // TODO(jwmcglynn): Create a time source that we can use to get
- // current time.
- void recordPhysicalModelEvent(pb::Time& time,
+ // Record an event from the physical model.
+ void recordPhysicalModelEvent(uint64_t timeNs,
pb::PhysicalModelEvent& event);
private:
diff --git a/android/android-emu/android/automation/AutomationEventSink_unittest.cpp b/android/android-emu/android/automation/AutomationEventSink_unittest.cpp
new file mode 100644
index 0000000000..1c12677a00
--- /dev/null
+++ b/android/android-emu/android/automation/AutomationEventSink_unittest.cpp
@@ -0,0 +1,152 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#include "android/automation/AutomationController.h"
+
+#include "android/automation/AutomationEventSink.h"
+#include "android/base/testing/TestLooper.h"
+#include "android/base/testing/TestMemoryOutputStream.h"
+#include "android/physics/PhysicalModel.h"
+
+#include <google/protobuf/text_format.h>
+#include <gtest/gtest.h>
+
+using namespace android::automation;
+using android::base::System;
+using android::base::TestLooper;
+using android::base::TestMemoryOutputStream;
+
+struct PhysicalModelDeleter {
+ void operator()(PhysicalModel* physicalModel) {
+ physicalModel_free(physicalModel);
+ }
+};
+
+typedef std::unique_ptr<PhysicalModel, PhysicalModelDeleter> PhysicalModelPtr;
+
+namespace emulator_automation {
+bool operator==(const PhysicalModelEvent& msg_a,
+ const PhysicalModelEvent& msg_b) {
+ return (msg_a.GetTypeName() == msg_b.GetTypeName()) &&
+ (msg_a.SerializeAsString() == msg_b.SerializeAsString());
+}
+} // namespace emulator_automation
+
+pb::RecordedEvent ReceiveBinaryEvent(TestMemoryOutputStream& stream) {
+ auto str = stream.view();
+ const size_t size = str.size();
+ EXPECT_GE(size, 4);
+ if (size > 4) {
+ const uint32_t protoSize = uint32_t(str[0] << 24) |
+ uint32_t(str[1] << 16) |
+ uint32_t(str[2] << 8) | uint32_t(str[3]);
+ EXPECT_EQ(protoSize, size - 4);
+
+ pb::RecordedEvent receivedEvent;
+ receivedEvent.ParseFromArray(str.data() + 4, protoSize);
+ stream.reset();
+ return receivedEvent;
+ }
+
+ return pb::RecordedEvent();
+}
+
+pb::RecordedEvent ReceiveTextEvent(TestMemoryOutputStream& stream) {
+ auto str = stream.view();
+ const size_t eol = str.find("\r\n");
+ EXPECT_NE(eol, std::string::npos);
+
+ if (eol != std::string::npos) {
+ pb::RecordedEvent receivedEvent;
+ EXPECT_TRUE(google::protobuf::TextFormat::ParseFromString(
+ str.str(), &receivedEvent));
+ stream.reset();
+ return receivedEvent;
+ }
+
+ return pb::RecordedEvent();
+}
+
+void PhysicalModelEventEqual(uint64_t timeNs,
+ pb::RecordedEvent_StreamType type,
+ const pb::PhysicalModelEvent& expected,
+ const pb::RecordedEvent& event) {
+ EXPECT_EQ(event.stream_type(), type);
+ EXPECT_EQ(event.event_time().timestamp(), timeNs);
+ EXPECT_EQ(event.physical_model(), expected);
+}
+
+// EventSink doesn't crash when there are no listeners.
+TEST(AutomationEventSink, NoListeners) {
+ TestLooper looper;
+ PhysicalModelPtr model(physicalModel_new());
+ std::unique_ptr<AutomationController> controller =
+ AutomationController::createForTest(model.get(), &looper);
+
+ pb::PhysicalModelEvent event;
+ controller->getEventSink().recordPhysicalModelEvent(0, event);
+}
+
+TEST(AutomationEventSink, ReceiveBinaryEvent) {
+ TestLooper looper;
+ PhysicalModelPtr model(physicalModel_new());
+ std::unique_ptr<AutomationController> controller =
+ AutomationController::createForTest(model.get(), &looper);
+
+ constexpr uint64_t kEventTime = 1235;
+
+ AutomationEventSink& sink = controller->getEventSink();
+ TestMemoryOutputStream binaryStream;
+ sink.registerStream(&binaryStream, StreamEncoding::BinaryPbChunks);
+
+ pb::PhysicalModelEvent sentEvent;
+ sentEvent.set_type(pb::PhysicalModelEvent_ParameterType_AMBIENT_MOTION);
+ sentEvent.mutable_target_value()->add_data(0.5f);
+ sink.recordPhysicalModelEvent(kEventTime, sentEvent);
+
+ pb::RecordedEvent receivedEvent = ReceiveBinaryEvent(binaryStream);
+
+ PhysicalModelEventEqual(kEventTime,
+ pb::RecordedEvent_StreamType_PHYSICAL_MODEL,
+ sentEvent, receivedEvent);
+
+ sink.unregisterStream(&binaryStream);
+ sink.recordPhysicalModelEvent(kEventTime, sentEvent);
+ EXPECT_TRUE(binaryStream.view().empty());
+}
+
+TEST(AutomationEventSink, ReceiveTextEvent) {
+ TestLooper looper;
+ PhysicalModelPtr model(physicalModel_new());
+ std::unique_ptr<AutomationController> controller =
+ AutomationController::createForTest(model.get(), &looper);
+
+ constexpr uint64_t kEventTime = 1235;
+
+ AutomationEventSink& sink = controller->getEventSink();
+ TestMemoryOutputStream textStream;
+ sink.registerStream(&textStream, StreamEncoding::TextPb);
+
+ pb::PhysicalModelEvent sentEvent;
+ sentEvent.set_type(pb::PhysicalModelEvent_ParameterType_AMBIENT_MOTION);
+ sentEvent.mutable_target_value()->add_data(0.5f);
+ sink.recordPhysicalModelEvent(kEventTime, sentEvent);
+
+ pb::RecordedEvent receivedEvent = ReceiveTextEvent(textStream);
+
+ PhysicalModelEventEqual(kEventTime,
+ pb::RecordedEvent_StreamType_PHYSICAL_MODEL,
+ sentEvent, receivedEvent);
+
+ sink.unregisterStream(&textStream);
+ sink.recordPhysicalModelEvent(kEventTime, sentEvent);
+ EXPECT_TRUE(textStream.view().empty());
+}
diff --git a/android/android-emu/android/automation/proto/automation.proto b/android/android-emu/android/automation/proto/automation.proto
index 346f2dd242..becf272393 100644
--- a/android/android-emu/android/automation/proto/automation.proto
+++ b/android/android-emu/android/automation/proto/automation.proto
@@ -3,7 +3,13 @@ syntax = "proto2";
package emulator_automation;
message Time {
- optional int64 timestamp = 1;
+ optional uint64 timestamp = 1;
+}
+
+message InitialState {
+ optional uint32 version = 1;
+ optional Time initial_time = 2;
+ repeated PhysicalModelEvent physical_model = 3;
}
message RecordedEvent {
@@ -33,18 +39,13 @@ message PhysicalModelEvent {
AMBIENT_MOTION = 9;
}
- enum InterpolationMethod {
- Smooth = 0;
- Step = 1;
- }
-
message ParameterValue {
- repeated float data = 1;
+ repeated float data = 1 [packed=true];
}
optional ParameterType type = 1;
- optional InterpolationMethod interpolation_method = 2;
- optional ParameterValue value = 3;
+ optional ParameterValue current_value = 2;
+ optional ParameterValue target_value = 3;
}
message TouchEvent {
diff --git a/android/android-emu/android/avd/generate.cpp b/android/android-emu/android/avd/generate.cpp
new file mode 100644
index 0000000000..6bf0ae7262
--- /dev/null
+++ b/android/android-emu/android/avd/generate.cpp
@@ -0,0 +1,221 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/avd/generate.h"
+
+#include "android/base/files/IniFile.h"
+#include "android/base/files/PathUtils.h"
+#include "android/utils/path.h"
+
+#include <string>
+
+#include <stdio.h>
+
+using android::base::IniFile;
+using android::base::pj;
+using android::base::StringView;
+
+void generateAvd(const AvdGenerateInfo& genInfo) {
+ std::string name = genInfo.name;
+ std::string avdRoot =
+ pj(genInfo.sdkHomeDir, "avd");
+ std::string relPath =
+ pj("avd", name + ".avd");
+
+ std::string avdIniPath = pj(avdRoot, name + ".ini");
+ std::string avdDir = pj(avdRoot, name + ".avd");
+
+ std::string configIniPath = pj(avdDir, "config.ini");
+
+ if (path_mkdir_if_needed(avdRoot.c_str(), 0755) < 0) {
+ fprintf(stderr, "%s: could not create dir %s!\n",
+ __func__, avdDir.c_str());
+ return;
+ }
+
+ if (path_mkdir_if_needed(avdDir.c_str(), 0755) < 0) {
+ fprintf(stderr, "%s: could not create dir %s!\n",
+ __func__, avdDir.c_str());
+ return;
+ }
+
+ IniFile avdIni(avdIniPath);
+
+ avdIni.setString("avd.ini.encoding", "UTF-8");
+ avdIni.setString("path", avdDir);
+ avdIni.setString("path.rel", relPath);
+ avdIni.setString("target", genInfo.sysimgTarget);
+
+ avdIni.write();
+
+ IniFile configIni(configIniPath);
+
+ configIni.setString("AvdId", name);
+ configIni.setString("PlayStore.enabled", "false");
+ configIni.setString("abi.type", genInfo.abi);
+ configIni.setString("avd.ini.displayname", name);
+ configIni.setString("avd.ini.encoding", genInfo.encoding);
+ configIni.setString("disk.dataPartition.size", genInfo.dataPartitionSize);
+ configIni.setString("fastboot.chosenSnapshotFile", genInfo.fastbootChosenSnapshotFile);
+ configIni.setString("fastboot.forceChosenSnapshotBoot", genInfo.fastbootForceChosenSnapshotBoot);
+ configIni.setString("fastboot.forceColdBoot", genInfo.fastbootForceColdBoot);
+ configIni.setString("fastboot.forceFastBoot", genInfo.fastbootForceFastBoot);
+ configIni.setString("hw.accelerometer", genInfo.hwAccelerometer);
+ configIni.setString("hw.arc", genInfo.hwArc);
+ configIni.setString("hw.audioInput", genInfo.hwAudioInput);
+ configIni.setString("hw.battery", genInfo.hwBattery);
+ configIni.setString("hw.camera.back", genInfo.hwCameraBack);
+ configIni.setString("hw.camera.front", genInfo.hwCameraFront);
+ configIni.setString("hw.cpu.arch", genInfo.hwCpuArch);
+ configIni.setString("hw.cpu.model", genInfo.hwCpuModel);
+ configIni.setInt("hw.cpu.ncore", genInfo.hwCpuNcore);
+ configIni.setString("hw.dPad", genInfo.hwDpad);
+ configIni.setString("hw.device.hash2", genInfo.hwDeviceHash2);
+ configIni.setString("hw.device.manufacturer", genInfo.hwDeviceManufacturer);
+ configIni.setString("hw.device.name", genInfo.hwDeviceName);
+ configIni.setString("hw.gps", genInfo.hwGps);
+ configIni.setString("hw.gpu.enabled", genInfo.hwGpuEnabled);
+ configIni.setString("hw.gpu.mode", genInfo.hwGpuMode);
+ configIni.setString("hw.initialOrientation", genInfo.hwInitialOrientation);
+ configIni.setString("hw.keyboard", genInfo.hwKeyboard);
+ configIni.setInt("hw.lcd.density", genInfo.hwLcdDensity);
+ configIni.setInt("hw.lcd.height", genInfo.hwLcdHeight);
+ configIni.setInt("hw.lcd.width", genInfo.hwLcdWidth);
+ configIni.setString("hw.mainKeys", genInfo.hwMainKeys);
+ configIni.setInt("hw.ramSize", genInfo.hwRamSize);
+ configIni.setString("hw.sdCard", genInfo.hwSdCard);
+ configIni.setString("hw.sensors.orientation", genInfo.hwSensorsOrientation);
+ configIni.setString("hw.sensors.proximity", genInfo.hwSensorsProximity);
+ configIni.setString("hw.trackBall", genInfo.hwTrackball);
+ configIni.setString("image.sysdir.1", genInfo.imageSysdir1);
+ configIni.setString("runtime.network.latency", genInfo.runtimeNetworkLatency);
+ configIni.setString("runtime.network.speed", genInfo.runtimeNetworkSpeed);
+ configIni.setString("sdcard.size", genInfo.sdcardSize);
+ configIni.setString("showDeviceFrame", genInfo.showDeviceFrame);
+ configIni.setString("skin.dynamic", genInfo.skinDynamic);
+ configIni.setString("skin.name", genInfo.skinName);
+ configIni.setString("skin.path", genInfo.skinPath);
+ configIni.setString("tag.display", genInfo.tagDisplay);
+ configIni.setString("tag.id", genInfo.tagId);
+ configIni.setInt("vm.heapSize", genInfo.vmHeapSize);
+
+ configIni.write();
+}
+
+void generateAvdWithDefaults(StringView avdName,
+ StringView sdkRootPath,
+ StringView sdkHomePath,
+ StringView androidTarget,
+ StringView variant,
+ StringView abi) {
+
+ std::string cpuArch("arm");
+ std::string cpuModel("cortex-a8");
+
+ // TODO: Figure out the other correspondences
+ // between system image abi, base arch, and cpu model
+ if (abi.str() == "armeabi-v7a") {
+ cpuArch = "arm";
+ cpuModel = "cortex-a8";
+ } else if (abi.str() == "arm64-v8a") {
+ cpuArch = "arm";
+ cpuModel = "cortex-a15";
+ } else if (abi.str() == "x86") {
+ cpuArch = "x86";
+ cpuModel = "";
+ } else if (abi.str() == "x86_64") {
+ cpuArch = "x86_64";
+ cpuModel = "";
+ }
+
+ std::string sysDir =
+ pj(sdkRootPath,
+ "system-images",
+ androidTarget,
+ variant,
+ abi);
+
+ std::string skinDir =
+ pj(sdkRootPath,
+ "skins",
+ "nexus_5x");
+
+ AvdGenerateInfo genInfo = {
+ // sdk home dir, target
+ c_str(sdkHomePath),
+ c_str(androidTarget),
+
+ // config.ini
+ /* AvdId */ c_str(avdName),
+ /* PlayStore.enabled */ "false",
+ /* abi.type */ c_str(abi),
+ /* avd.ini.displayname */ c_str(avdName),
+ /* avd.ini.encoding */ "UTF-8",
+ /* disk.dataPartition.size */ "1M",
+ /* fastboot.chosenSnapshotFile */ "",
+ /* fastboot.forceChosenSnapshotBoot */ "no",
+ /* fastboot.forceColdBoot */ "no",
+ /* fastboot.forceFastBoot */ "yes",
+ /* hw.accelerometer */ "yes",
+ /* hw.arc */ "false",
+ /* hw.audioInput */ "yes",
+ /* hw.battery */ "yes",
+ /* hw.camera.back */ "virtualscene",
+ /* hw.camera.front */ "emulated",
+ /* hw.cpu.arch */ cpuArch.c_str(),
+ /* hw.cpu.model */ cpuModel.c_str(),
+ /* hw.cpu.ncore */ 4,
+ /* hw.dPad */ "no",
+ /* hw.device.hash2 */ "MD5:97c152442f4d6d2d0f1ac1110e207ea7",
+ /* hw.device.manufacturer */ "Google",
+ /* hw.device.name */ "Nexus 5X",
+ /* hw.gps */ "yes",
+ /* hw.gpu.enabled */ "yes",
+ /* hw.gpu.mode */ "auto",
+ /* hw.initialOrientation */ "Portrait",
+ /* hw.keyboard */ "yes",
+ /* hw.lcd.density */ 120,
+ /* hw.lcd.height */ 480,
+ /* hw.lcd.width */ 640,
+ /* hw.mainKeys */ "no",
+ /* hw.ramSize */ 128,
+ /* hw.sdCard */ "yes",
+ /* hw.sensors.orientation */ "yes",
+ /* hw.sensors.proximity */ "yes",
+ /* hw.trackBall */ "no",
+ /* image.sysdir.1 */ sysDir.c_str(),
+ /* runtime.network.latency */ "none",
+ /* runtime.network.speed */ "full",
+ /* sdcard.size */ "1M",
+ /* showDeviceFrame */ "yes",
+ /* skin.dynamic */ "yes",
+ /* skin.name */ "nexus_5x",
+ /* skin.path */ skinDir.c_str(),
+ /* tag.display */ "Google APIs",
+ /* tag.id */ "google_apis",
+ /* vm.heapSize */ 16,
+ };
+
+ generateAvd(genInfo);
+}
+
+void deleteAvd(StringView avdName,
+ StringView sdkHomePath) {
+ auto avdIniPath =
+ pj(sdkHomePath, "avd", avdName.str() + ".ini");
+ auto avdFolderPath =
+ pj(sdkHomePath, "avd", avdName.str() + ".avd");
+
+ path_delete_file(avdIniPath.c_str());
+ path_delete_dir(avdFolderPath.c_str());
+}
diff --git a/android/android-emu/android/avd/generate.h b/android/android-emu/android/avd/generate.h
new file mode 100644
index 0000000000..6c00d93758
--- /dev/null
+++ b/android/android-emu/android/avd/generate.h
@@ -0,0 +1,86 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "android/base/StringView.h"
+
+// Includes enough for <avdname>.ini and config.ini
+// Examples shown alongside.
+// Only purely integer fields are not strings.
+struct AvdGenerateInfo {
+ const char* sdkHomeDir;
+ // Target system image (android-19, android-26, etc.)
+ const char* sysimgTarget;
+ // config.ini
+ const char* name; // AvdId=api26
+ const char* playStoreEnabled; // PlayStore.enabled=false
+ const char* abi; // abi.type=x86
+ const char* displayname; // avd.ini.displayname=api26
+ const char* encoding; // avd.ini.encoding=UTF-8
+ const char* dataPartitionSize; // disk.dataPartition.size=2G
+ const char* fastbootChosenSnapshotFile; // fastboot.chosenSnapshotFile=
+ const char* fastbootForceChosenSnapshotBoot; // fastboot.forceChosenSnapshotBoot=no
+ const char* fastbootForceColdBoot; // fastboot.forceColdBoot=no
+ const char* fastbootForceFastBoot; // fastboot.forceFastBoot=yes
+ const char* hwAccelerometer; // hw.accelerometer=yes
+ const char* hwArc; // hw.arc=false
+ const char* hwAudioInput; // hw.audioInput=yes
+ const char* hwBattery; // hw.battery=yes
+ const char* hwCameraBack; // hw.camera.back=virtualscene
+ const char* hwCameraFront; // hw.camera.front=emulated
+ const char* hwCpuArch; // hw.cpu.arch=x86
+ const char* hwCpuModel; // hw.cpu.model=???
+ int hwCpuNcore; // hw.cpu.ncore=4
+ const char* hwDpad; // hw.dPad=no
+ const char* hwDeviceHash2; // hw.device.hash2=MD5:bc5032b2a871da511332401af3ac6bb0
+ const char* hwDeviceManufacturer; // hw.device.manufacturer=Google
+ const char* hwDeviceName; // hw.device.name=Nexus 5X
+ const char* hwGps; // hw.gps=yes
+ const char* hwGpuEnabled; // hw.gpu.enabled=yes
+ const char* hwGpuMode; // hw.gpu.mode=auto
+ const char* hwInitialOrientation; // hw.initialOrientation=Portrait
+ const char* hwKeyboard; // hw.keyboard=yes
+ int hwLcdDensity; // hw.lcd.density=420
+ int hwLcdHeight; // hw.lcd.height=1920
+ int hwLcdWidth; // hw.lcd.width=1080
+ const char* hwMainKeys; // hw.mainKeys=no
+ int hwRamSize; // hw.ramSize=1536
+ const char* hwSdCard; // hw.sdCard=yes
+ const char* hwSensorsOrientation; // hw.sensors.orientation=yes
+ const char* hwSensorsProximity; // hw.sensors.proximity=yes
+ const char* hwTrackball; // hw.trackBall=no
+ const char* imageSysdir1; // image.sysdir.1=system-images\android-26\google_apis_playstore\x86
+ const char* runtimeNetworkLatency; // runtime.network.latency=none
+ const char* runtimeNetworkSpeed; // runtime.network.speed=full
+ const char* sdcardSize; // sdcard.size=512M
+ const char* showDeviceFrame; // showDeviceFrame=yes
+ const char* skinDynamic; // skin.dynamic=yes
+ const char* skinName; // skin.name=nexus_5x
+ const char* skinPath; // skin.path=A:\android-sdk\skins\nexus_5x
+ const char* tagDisplay; // tag.display=Google Play
+ const char* tagId; // tag.id=google_apis_playstore
+ int vmHeapSize; // vm.heapSize=228
+};
+
+void generateAvd(const AvdGenerateInfo& avdGenerateInfo);
+
+void generateAvdWithDefaults(android::base::StringView avdName,
+ android::base::StringView sdkRootPath,
+ android::base::StringView sdkHomePath,
+ android::base::StringView androidTarget,
+ android::base::StringView variant,
+ android::base::StringView abi);
+
+void deleteAvd(android::base::StringView avdName,
+ android::base::StringView sdkHomePath);
diff --git a/android/android-emu/android/avd/info.c b/android/android-emu/android/avd/info.c
index d872da7f42..e5cc979908 100644
--- a/android/android-emu/android/avd/info.c
+++ b/android/android-emu/android/avd/info.c
@@ -1278,6 +1278,13 @@ avdInfo_getSystemImagePath( const AvdInfo* i )
}
char*
+avdInfo_getVerifiedBootParamsPath( const AvdInfo* i )
+{
+ const char* imageName = _imageFileNames[ AVD_IMAGE_VERIFIEDBOOTPARAMS ];
+ return _avdInfo_getContentOrSdkFilePath(i, imageName);
+}
+
+char*
avdInfo_getSystemInitImagePath( const AvdInfo* i )
{
const char* imageName = _imageFileNames[ AVD_IMAGE_INITSYSTEM ];
@@ -1855,12 +1862,19 @@ const char* avdInfo_getSdCardSize(const AvdInfo* i) {
: NULL;
}
-// This is a one-off mitigation of users getting black screen forever on startup
-// because guest rendering does not work.
-// TODO: Fix guest rendering for the next image update.
-// Let's try not to add any more build id's to this.
+// Guest rendering is deprecated in future API level. This function controls
+// the current guest rendering blacklist status; particular builds of system
+// images and particular API levels cannot run guest rendering.
bool avdInfo_sysImgGuestRenderingBlacklisted(const AvdInfo* i) {
switch (i->apiLevel) {
+ // Allow guest rendering for older API levels
+ case 10:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ return false;
+ // Disallow guest rendering for some problematic builds
case 19:
return i->incrementalVersion == 4087698;
case 21:
@@ -1875,7 +1889,13 @@ bool avdInfo_sysImgGuestRenderingBlacklisted(const AvdInfo* i) {
return i->incrementalVersion == 4153093;
case 26:
return i->incrementalVersion == 4074420;
- default:
+ case 27:
return false;
+ // bug 111971822
+ // Guest side Swiftshader becomes much harder to maintain
+ // after SELinux changes that disallow executable memory.
+ case 28:
+ default:
+ return true;
}
}
diff --git a/android/android-emu/android/avd/info.h b/android/android-emu/android/avd/info.h
index 3b8df48057..45a3a036da 100644
--- a/android/android-emu/android/avd/info.h
+++ b/android/android-emu/android/avd/info.h
@@ -71,6 +71,7 @@ ANDROID_BEGIN_HEADER
_AVD_IMG(SDCARD,"sdcard.img","SD Card") \
_AVD_IMG(ENCRYPTIONKEY,"encryptionkey.img","Encryption Key") \
_AVD_IMG(SNAPSHOTS,"snapshots.img","snapshots") \
+ _AVD_IMG(VERIFIEDBOOTPARAMS, "VerifiedBootParams.textproto","Verified Boot Parameters") \
/* define the enumared values corresponding to each AVD image type
* examples are: AVD_IMAGE_KERNEL, AVD_IMAGE_SYSTEM, etc..
@@ -202,6 +203,11 @@ char* avdInfo_getDefaultCachePath( const AvdInfo* i );
*/
char* avdInfo_getSystemImagePath( const AvdInfo* i );
+/* Will return NULL, except if the AVD content
+ * directory contains a file named "VerifiedBootParams.textproto".
+ */
+char* avdInfo_getVerifiedBootParamsPath( const AvdInfo* i );
+
/* avdInfo_getSystemInitImagePath() retrieves the path to the read-only
* initialization image for this disk image.
*/
diff --git a/android/android-emu/android/avd/util.h b/android/android-emu/android/avd/util.h
index f4ce433bb5..d312116b52 100644
--- a/android/android-emu/android/avd/util.h
+++ b/android/android-emu/android/avd/util.h
@@ -171,4 +171,6 @@ const char* emulator_getBackendSuffix(const char* targetArch);
*/
#define ANDROID_AVD_DIR "avd"
+#define ANDROID_AVD_TMP_ADB_COMMAND_DIR "tmpAdbCmds"
+
ANDROID_END_HEADER
diff --git a/android/android-emu/android/avd/util_unittest.cpp b/android/android-emu/android/avd/util_unittest.cpp
index b03ca29090..3a8585658e 100644
--- a/android/android-emu/android/avd/util_unittest.cpp
+++ b/android/android-emu/android/avd/util_unittest.cpp
@@ -13,6 +13,7 @@
#include "android/base/testing/TestSystem.h"
#include "android/utils/file_data.h"
#include "android/base/ArraySize.h"
+#include "android/base/files/PathUtils.h"
#include "android/base/memory/ScopedPtr.h"
#include "android/base/testing/TestSystem.h"
@@ -22,7 +23,7 @@
#include <gtest/gtest.h>
#include "android/base/testing/TestTempDir.h"
-
+using android::base::pj;
using android::base::ScopedCPtr;
using android::base::TestSystem;
using android::base::TestTempDir;
@@ -37,31 +38,40 @@ TEST(AvdUtil, path_getAvdSystemPath) {
TestSystem sys("/home", 64, "/");
TestTempDir* tmp = sys.getTempRoot();
tmp->makeSubDir("android_home");
- tmp->makeSubDir("android_home/sysimg");
- tmp->makeSubDir("android_home/avd");
+ tmp->makeSubDir(pj("android_home", "sysimg"));
+ tmp->makeSubDir(pj("android_home", "avd"));
tmp->makeSubDir("nothome");
- std::string sdkRoot = tmp->pathString() + "/android_home";
- std::string avdConfig = sdkRoot + "/avd/config.ini";
+ std::string sdkRoot =
+ pj(tmp->pathString(), "android_home");
+ std::string avdConfig =
+ pj(sdkRoot, "avd", "config.ini");
sys.envSet("ANDROID_AVD_HOME", sdkRoot);
// Create an in file for the @q avd.
- writeToFile(sdkRoot + "/q.ini", "path=" + sdkRoot + "/avd");
+ writeToFile(pj(sdkRoot, "q.ini"),
+ "path=" +
+ pj(sdkRoot, "avd"));
// A relative path should be resolved from ANRDOID_AVD_HOME
writeToFile(avdConfig, "image.sysdir.1=sysimg");
ScopedCPtr<char> path(path_getAvdSystemPath("q", sdkRoot.c_str()));
- EXPECT_STREQ((sdkRoot + "/sysimg").c_str(), path.get());
+ auto sysimgPath = pj(sdkRoot, "sysimg");
+ EXPECT_STREQ(sysimgPath.c_str(), path.get());
// An absolute path should be usuable as well
writeToFile(avdConfig,
- "image.sysdir.1=" + tmp->pathString() + "/nothome");
+ "image.sysdir.1=" +
+ pj(
+ tmp->pathString(),
+ "nothome"));
path.reset(path_getAvdSystemPath("q", sdkRoot.c_str()));
- EXPECT_STREQ((tmp->pathString() + "/nothome").c_str(), path.get());
+ auto notHomePath = pj(tmp->pathString(), "nothome");
+ EXPECT_STREQ(notHomePath.c_str(), path.get());
std::string noBufferOverflow(MAX_PATH * 2, 'Z');
writeToFile(avdConfig, "image.sysdir.1=" + noBufferOverflow);
diff --git a/android/android-emu/android/base/Pool.cpp b/android/android-emu/android/base/Pool.cpp
new file mode 100644
index 0000000000..6aa47b4c5e
--- /dev/null
+++ b/android/android-emu/android/base/Pool.cpp
@@ -0,0 +1,440 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/base/Pool.h"
+
+#include "android/base/AlignedBuf.h"
+
+#include <vector>
+
+#define DEBUG_POOL 0
+
+#if DEBUG_POOL
+
+#define D(fmt,...) fprintf(stderr, "%s: " fmt "\n", __func__, ##__VA_ARGS__);
+
+#else
+
+#define D(fmt,...)
+
+#endif
+
+namespace android {
+namespace base {
+
+// A Pool consists of:
+// - Heaps one for each allocation size
+// A Heap consists of:
+// - Block(s) for servicing allocation requests with actual memory backing
+// A Block consists of:
+// - A buffer that is the memory backing
+// - Chunks that correspond to usable units of the allocation size
+//
+// Block implementation:
+//
+// We want to make it fast to alloc new chunks and to free existing chunks from
+// this block, while not having to invalidate all existing pointers when
+// allocating new objects.
+// I'm p sure by now there's no way to do that withtout
+// - significant pre allocation
+// - linked list of blocks
+//
+// So that means some block chain (hehehehe, pun v much intended)
+// implementation Wherein, each block has fast allocation of chunks
+// correponding tot he desired allocation size.
+//
+// Any low overhead scheme of that kind, like slab alloc or buddy alloc, is
+// fine. This one is based on:
+//
+// Ben Kenwright (b.kenwright@ncl.ac.uk): "Fast Efficient Fixed-Size Memory
+// Pool: No Loops and No Overhead" In COMPUTATION TOOLS 2012: The Third
+// International Conference on Computational Logics, Algebras, Programming,
+// Tools, and Benchmarking
+
+// Interval:
+// Make it easy to track all ranges involved so we know which free()
+// in which heap to use.
+// Assuming this doesn't grow too much past around 100 intervals
+// so we dont need to use fancy algorithms to key on it.
+struct Interval {
+ uintptr_t start;
+ uintptr_t end;
+};
+
+static size_t ilog2Floor(size_t n) {
+ size_t res = 0;
+ size_t test = 1;
+
+ while (test < n) {
+ test <<= 1;
+ ++res;
+ }
+
+ return res;
+}
+
+struct Block {
+ Block(size_t _chunkSize, size_t _numChunks) {
+ if (_chunkSize < sizeof(void*)) {
+ fprintf(
+ stderr,
+ "FATAL: Cannot allocate block with chunk size "
+ "less then %zu (wanted: %zu)!\n",
+ sizeof(void*),
+ _chunkSize);
+ abort();
+ }
+
+ chunkSize = _chunkSize;
+ chunkSizeLog2 = ilog2Floor(chunkSize);
+ numChunks = _numChunks;
+
+ D("chunk size %zu log2 %zu numChunks %zu",
+ chunkSize,
+ chunkSizeLog2,
+ numChunks);
+
+ sizeBytes = chunkSize * numChunks;
+
+ storage.resize(sizeBytes);
+ data = storage.data();
+
+ numFree = numChunks;
+ numAlloced = 0;
+ nextFree = (size_t*)data;
+ }
+
+ Interval getInterval() const {
+ uintptr_t start = (uintptr_t)data;
+ uintptr_t end = (uintptr_t)(data + sizeBytes);
+ return { start, end };
+ }
+
+ bool isFull() const { return numFree == 0; }
+
+ uint8_t* getPtr(size_t element) {
+ uint8_t* res =
+ data + (uintptr_t)chunkSize *
+ (uintptr_t)element;
+ D("got %p element %zu chunkSize %zu",
+ res, element, chunkSize);
+ return res;
+ }
+
+ size_t getElement(void* ptr) {
+ uintptr_t ptrVal = (uintptr_t)ptr;
+ ptrVal -= (uintptr_t)data;
+ return (size_t)(ptrVal >> chunkSizeLog2);
+ }
+
+ void* alloc() {
+ // Lazily constructs the index to the
+ // next unallocated chunk.
+ if (numAlloced < numChunks) {
+ size_t* nextUnallocPtr =
+ (size_t*)getPtr(numAlloced);
+
+ ++numAlloced;
+ *nextUnallocPtr = numAlloced;
+ }
+
+ // Returns the next free object,
+ // if there is space remaining.
+ void* res = nullptr;
+ if (numFree) {
+
+ D("alloc new ptr @ %p\n", nextFree);
+
+ res = (void*)nextFree;
+ --numFree;
+ if (numFree) {
+ // Update nextFree to _point_ at the index
+ // of the next free chunk.
+ D("store %zu in %p as next free chunk",
+ *nextFree,
+ getPtr(*nextFree));
+ nextFree = (size_t*)getPtr(*nextFree);
+ } else {
+ // Signal that there are no more
+ // chunks available.
+ nextFree = nullptr;
+ }
+ }
+
+ return res;
+ }
+
+ void free(void* toFree) {
+ size_t* toFreeIndexPtr = (size_t*)toFree;
+ if (nextFree) {
+ D("freeing %p: still have other chunks available.", toFree);
+ D("nextFree: %p (end: %p)", nextFree, getPtr(numChunks));
+ D("nextFreeElt: %zu\n", getElement(nextFree));
+ // If there is a chunk available,
+ // point the just-freed chunk to that.
+ *toFreeIndexPtr = getElement(nextFree);
+ } else {
+ D("freeing free %p: no other chunks available.", toFree);
+ // If there are no chunks available,
+ // point the just-freed chunk to past the end.
+ *(size_t*)toFree = numChunks;
+ }
+ nextFree = (size_t*)toFree;
+ D("set next free to %p", nextFree);
+ ++numFree;
+ }
+
+ // To free everything, just reset back to the initial state :p
+ void freeAll() {
+ numFree = numChunks;
+ numAlloced = 0;
+ nextFree = (size_t*)data;
+ }
+
+ Block* next = nullptr; // Unused for now
+
+ size_t chunkSize = 0;
+ size_t chunkSizeLog2 = 0;
+ size_t numChunks = 0;
+ size_t sizeBytes = 0;
+
+ AlignedBuf<uint8_t, 64> storage { 0 };
+ uint8_t* data = nullptr;
+
+ size_t numFree = 0;
+ size_t numAlloced = 0;
+
+ size_t* nextFree = 0;
+};
+
+// Straight passthrough to Block for now unless
+// we find it necessary to track more than |kMaxAllocs|
+// allocs per heap.
+class Heap {
+public:
+ Heap(size_t allocSize, size_t chunksPerSize) :
+ mBlock(allocSize, chunksPerSize) {
+ }
+
+ Interval getInterval() const {
+ return mBlock.getInterval();
+ }
+
+ bool isFull() const {
+ return mBlock.isFull();
+ }
+
+ void* alloc() {
+ return mBlock.alloc();
+ }
+
+ void free(void* ptr) {
+ mBlock.free(ptr);
+ }
+
+ void freeAll() {
+ mBlock.freeAll();
+ }
+
+private:
+ // Just one block for now
+ Block mBlock;
+};
+
+static size_t leastPowerof2(size_t n) {
+ size_t res = 1;
+ while (res < n) {
+ res <<= 1;
+ }
+ return res;
+}
+
+class Pool::Impl {
+public:
+ Impl(size_t minSize,
+ size_t maxSize,
+ size_t chunksPerSize) :
+ // Need to bump up min alloc size
+ // because Blocks use free space for bookkeeping
+ // purposes.
+ mMinAllocSize(std::max(sizeof(void*), minSize)),
+ // Compute mMinAllocLog2.
+ // mMinAllocLog2 stores
+ // the number of bits to shift
+ // in order to obtain the heap index
+ // corresponding to a desired allocation size.
+ mMinAllocLog2(ilog2Floor(mMinAllocSize)),
+ mMaxFastSize(maxSize),
+ mChunksPerSize(chunksPerSize) {
+
+ size_t numHeaps =
+ 1 + ilog2Floor(mMaxFastSize >> mMinAllocLog2);
+
+ for (size_t i = 0; i < numHeaps; i++) {
+
+ size_t allocSize = mMinAllocSize << i;
+
+ D("create heap for size %zu", allocSize);
+
+ Heap* newHeap = new Heap(allocSize, mChunksPerSize);
+
+ HeapInfo info = {
+ newHeap,
+ allocSize,
+ newHeap->getInterval(),
+ };
+
+ mHeapInfos.push_back(info);
+ }
+ }
+
+ ~Impl() {
+ for (auto& info : mHeapInfos) {
+ delete info.heap;
+ }
+ }
+
+ void* alloc(size_t wantedSize) {
+ if (wantedSize > mMaxFastSize) {
+ D("requested size %zu too large", wantedSize);
+ return nullptr;
+ }
+
+ size_t minAllocSizeNeeded =
+ std::max(mMinAllocSize, leastPowerof2(wantedSize));
+
+ size_t index =
+ ilog2Floor(minAllocSizeNeeded >> mMinAllocLog2);
+
+ D("wanted: %zu min serviceable: %zu heap index: %zu",
+ wantedSize, minAllocSizeNeeded, index);
+
+ auto heap = mHeapInfos[index].heap;
+
+ if (heap->isFull()) {
+ D("heap %zu is full", index);
+ return nullptr;
+ }
+
+ return heap->alloc();
+ }
+
+ bool free(void* ptr) {
+
+ D("for %p:", ptr);
+
+ uintptr_t ptrVal = (uintptr_t)ptr;
+
+ // Scan through linearly to find any matching
+ // interval. Interval information has been
+ // brought up to be stored directly in HeapInfo
+ // so this should be quite easy on the cache
+ // at least until a match is found.
+ for (auto& info : mHeapInfos) {
+ uintptr_t start = info.interval.start;
+ uintptr_t end = info.interval.end;
+
+ if (ptrVal >= start && ptrVal < end) {
+ D("found heap to free %p.", ptr)
+ info.heap->free(ptr);
+ return true;
+ }
+ }
+
+ D("%p not found in any heap.", ptr);
+ return false;
+ }
+
+ void freeAll() {
+ for (auto& info : mHeapInfos) {
+ info.heap->freeAll();
+ }
+ }
+
+private:
+ size_t mMinAllocSize;
+ size_t mMinAllocLog2;
+ size_t mMaxFastSize;
+ size_t mChunksPerSize;
+
+ // No need to get really complex if there are
+ // not that many heaps.
+ struct HeapInfo {
+ Heap* heap;
+ size_t allocSize;
+ Interval interval;
+ };
+
+ std::vector<HeapInfo> mHeapInfos;
+};
+
+Pool::Pool(size_t minSize,
+ size_t maxSize,
+ size_t mChunksPerSize) :
+ mImpl(new Pool::Impl(minSize,
+ maxSize,
+ mChunksPerSize)) {
+}
+
+Pool::~Pool() {
+ delete mImpl;
+
+ for (auto ptr : mFallbackPtrs) {
+ D("delete fallback ptr %p\n", ptr);
+ ::free(ptr);
+ }
+}
+
+// Fall back to normal alloc if it cannot be
+// serviced by the implementation.
+void* Pool::alloc(size_t wantedSize) {
+ void* ptr = mImpl->alloc(wantedSize);
+
+ if (ptr) return ptr;
+
+ D("Fallback to malloc");
+
+ ptr = ::malloc(wantedSize);
+
+ if (!ptr) {
+ D("Failed to service allocation for %zu bytes", wantedSize);
+ abort();
+ }
+
+ mFallbackPtrs.insert(ptr);
+
+ D("Fallback to malloc: got ptr %p", ptr);
+
+ return ptr;
+}
+
+// Fall back to normal free if it cannot be
+// serviced by the implementation.
+void Pool::free(void* ptr) {
+ if (mImpl->free(ptr)) return;
+
+ D("fallback to free for %p", ptr);
+ mFallbackPtrs.erase(ptr);
+ ::free(ptr);
+}
+
+void Pool::freeAll() {
+ mImpl->freeAll();
+ for (auto ptr : mFallbackPtrs) {
+ ::free(ptr);
+ }
+ mFallbackPtrs.clear();
+}
+
+} // namespace base
+} // namespace android
diff --git a/android/android-emu/android/base/Pool.h b/android/android-emu/android/base/Pool.h
new file mode 100644
index 0000000000..bce2cc1598
--- /dev/null
+++ b/android/android-emu/android/base/Pool.h
@@ -0,0 +1,95 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include <unordered_set>
+
+#include <inttypes.h>
+#include <stddef.h>
+#include <string.h>
+
+namespace android {
+namespace base {
+
+// Class to make it easier to set up memory regions where it is fast
+// to allocate/deallocate buffers that have size within
+// the specified range.
+class Pool {
+public:
+ // minSize/maxSize: the target range of sizes for which we want to
+ // make allocations fast. the greater the range, the more space
+ // traded off.
+ // chunksPerSize: the target maximum number of live objects of
+ // each size that are expected. the higher it is, the more space
+ // traded off.
+ //
+ // Rough space cost formula:
+ // O(chunksPerSize * log2(maxSize / minSize) * maxSize)
+ Pool(size_t minSize = 8,
+ size_t maxSize = 4096,
+ size_t chunksPerSize = 256);
+
+ // All memory allocated by this pool
+ // is automatically deleted when the pool
+ // is deconstructed.
+ ~Pool();
+
+ void* alloc(size_t wantedSize);
+ void free(void* ptr);
+
+ // Convenience function to free everything currently allocated.
+ void freeAll();
+
+ // Convenience function to allocate an array
+ // of objects of type T.
+ template <class T>
+ T* allocArray(size_t count) {
+ size_t bytes = sizeof(T) * count;
+ void* res = alloc(bytes);
+ return (T*) res;
+ }
+
+ char* strDup(const char* toCopy) {
+ size_t bytes = strlen(toCopy) + 1;
+ void* res = alloc(bytes);
+ memset(res, 0x0, bytes);
+ memcpy(res, toCopy, bytes);
+ return (char*)res;
+ }
+
+ char** strDupArray(const char* const* arrayToCopy, size_t count) {
+ char** res = allocArray<char*>(count);
+
+ for (size_t i = 0; i < count; i++) {
+ res[i] = strDup(arrayToCopy[i]);
+ }
+
+ return res;
+ }
+
+ void* dupArray(const void* buf, size_t bytes) {
+ void* res = alloc(bytes);
+ memcpy(res, buf, bytes);
+ return res;
+ }
+
+private:
+ class Impl;
+ Impl* mImpl = nullptr;
+
+ std::unordered_set<void*> mFallbackPtrs;
+};
+
+} // namespace base
+} // namespace android
diff --git a/android/android-emu/android/base/Pool_unittest.cpp b/android/android-emu/android/base/Pool_unittest.cpp
new file mode 100644
index 0000000000..368e8df84f
--- /dev/null
+++ b/android/android-emu/android/base/Pool_unittest.cpp
@@ -0,0 +1,116 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/base/Pool.h"
+
+#include "android/base/FunctionView.h"
+
+#include <gtest/gtest.h>
+
+#include <string>
+
+namespace android {
+namespace base {
+
+// Tests basic function of pool:
+// 1. Can allocate/free memory of various sizes
+// 2. Can deal with allocations above the maxSize
+// and that overrun the internally set chunk counts.
+TEST(Pool, Basic) {
+ const size_t minSize = 8;
+ const size_t maxSize = 4096;
+
+ const size_t numTrials = 512;
+ const size_t chunksPerSize = numTrials - 35;
+
+ const size_t sizesToTest[] = {
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16,
+ 127, 129, 1023, 1024,
+ 2047, 2048, 2049,
+ 4096, 16384, 65535
+ };
+
+ Pool pool(minSize, maxSize, chunksPerSize);
+
+ for (size_t allocSize : sizesToTest) {
+ for (size_t i = 0; i < numTrials; i++) {
+ uint8_t* ptr1 = (uint8_t*)pool.alloc(allocSize);
+ uint8_t* ptr2 = (uint8_t*)pool.alloc(allocSize);
+ uint8_t* ptr3 = (uint8_t*)pool.alloc(allocSize);
+
+ *ptr1 = 1;
+ *ptr2 = 2;
+ *ptr3 = 3;
+
+ EXPECT_EQ(1, *ptr1);
+ EXPECT_EQ(2, *ptr2);
+ EXPECT_EQ(3, *ptr3);
+
+ pool.free(ptr1);
+
+ EXPECT_EQ(2, *ptr2);
+ EXPECT_EQ(3, *ptr3);
+
+ pool.free(ptr3);
+
+ EXPECT_EQ(2, *ptr2);
+
+ pool.free(ptr2);
+
+ uint8_t* ptr4 = (uint8_t*)pool.alloc(allocSize);
+
+ *ptr4 = 4;
+
+ EXPECT_EQ(4, *ptr4);
+
+ // always leave a bit more allocated at the end of this loop, so
+ // that we can test what happens when the internal blocks run out
+ // of chunks.
+ }
+ }
+}
+
+TEST(Pool, Buffer) {
+ const size_t minSize = 8;
+ const size_t maxSize = 4096;
+
+ const char* testBuffer = "Hello World!";
+
+ const size_t bytes = strlen(testBuffer) + 1;
+
+ Pool pool(minSize, maxSize);
+
+ char* buf = pool.allocArray<char>(bytes);
+ memset(buf, 0x0, bytes);
+ memcpy(buf, testBuffer, bytes);
+
+ EXPECT_STREQ(testBuffer, buf);
+}
+
+TEST(Pool, FreeAll) {
+ const size_t minSize = 8;
+ const size_t maxSize = 4096;
+
+ Pool pool(minSize, maxSize);
+
+ pool.alloc(8);
+ pool.alloc(8);
+ pool.alloc(8);
+
+ pool.freeAll();
+}
+
+} // namespace base
+} // namespace android
+
diff --git a/android/android-emu/android/base/Result.h b/android/android-emu/android/base/Result.h
index 3bcb141595..133e883b09 100644
--- a/android/android-emu/android/base/Result.h
+++ b/android/android-emu/android/base/Result.h
@@ -1,13 +1,16 @@
-// Copyright 2018 The Android Open Source Project
+// Copyright (C) 2018 The Android Open Source Project
//
-// This software is licensed under the terms of the GNU General Public
-// License version 2, as published by the Free Software Foundation, and
-// may be copied, distributed, and modified under those terms.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
#pragma once
diff --git a/android/android-emu/android/base/Result_unittest.cpp b/android/android-emu/android/base/Result_unittest.cpp
index d3722455db..332c40f1f7 100644
--- a/android/android-emu/android/base/Result_unittest.cpp
+++ b/android/android-emu/android/base/Result_unittest.cpp
@@ -1,16 +1,20 @@
-// Copyright 2018 The Android Open Source Project
+// Copyright (C) 2018 The Android Open Source Project
//
-// This software is licensed under the terms of the GNU General Public
-// License version 2, as published by the Free Software Foundation, and
-// may be copied, distributed, and modified under those terms.
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
#include "android/base/Result.h"
#include "android/base/Compiler.h"
+#include "android/base/testing/ResultMatchers.h"
#include <gtest/gtest.h>
#include <gmock/gmock.h>
@@ -18,13 +22,40 @@
#include <string>
using android::base::Err;
+using android::base::IsErr;
+using android::base::IsOk;
using android::base::Ok;
using android::base::Result;
using testing::Eq;
+using testing::ExplainMatchResult;
+using testing::Not;
using testing::Optional;
enum class MyError { Failed1, Failed2 };
+std::ostream& operator<<(std::ostream& os, const MyError& value) {
+ switch (value) {
+ case MyError::Failed1:
+ os << "MyError::Failed1";
+ break;
+ case MyError::Failed2:
+ os << "MyError::Failed2";
+ break;
+ // Default intentionally omitted to generate compiler warning if fields
+ // are added.
+ }
+
+ return os;
+}
+
+template <typename MatcherType>
+std::string DescribeResult(const MatcherType& m) {
+ std::stringstream ss;
+ testing::SafeMatcherCast<const Result<uint32_t, MyError>&>(m).DescribeTo(
+ &ss);
+ return ss.str();
+}
+
TEST(Result, VoidEnum) {
{
Result<void, MyError> result = Ok();
@@ -57,6 +88,28 @@ TEST(Result, ReturnValue) {
}
}
+TEST(Result, Matchers) {
+ EXPECT_EQ("Ok()", DescribeResult(IsOk()));
+ EXPECT_EQ("Ok(0)", DescribeResult(IsOk(0)));
+ EXPECT_EQ("Err(MyError::Failed1)", DescribeResult(IsErr(MyError::Failed1)));
+ EXPECT_EQ("Err(MyError::Failed2)", DescribeResult(IsErr(MyError::Failed2)));
+
+ {
+ Result<void, MyError> result = Ok();
+ EXPECT_THAT(result, IsOk());
+ }
+
+ {
+ Result<uint32_t, MyError> result = Ok(1);
+ EXPECT_THAT(result, IsOk(1));
+ }
+
+ {
+ Result<uint32_t, MyError> result = Err(MyError::Failed1);
+ EXPECT_THAT(result, IsErr(MyError::Failed1));
+ }
+}
+
TEST(Result, SameType) {
Result<uint32_t, uint32_t> success = Ok(123);
EXPECT_THAT(success.ok(), Optional(Eq(123)));
diff --git a/android/android-emu/android/base/files/PathUtils.cpp b/android/android-emu/android/base/files/PathUtils.cpp
index 15faa024c8..ddd1638a95 100644
--- a/android/android-emu/android/base/files/PathUtils.cpp
+++ b/android/android-emu/android/base/files/PathUtils.cpp
@@ -344,5 +344,36 @@ std::string PathUtils::relativeTo(StringView base, StringView path, HostType hos
return result;
}
+// static
+Optional<std::string> PathUtils::pathWithoutDirs(StringView name) {
+ if (System::get()->pathIsDir(name)) return kNullopt;
+
+ auto components = PathUtils::decompose(name);
+
+ if (components.empty()) return kNullopt;
+
+ return components.back().str();
+}
+
+std::string pj(StringView path1, StringView path2) {
+ return PathUtils::join(path1, path2);
+}
+
+std::string pj(const std::vector<std::string>& paths) {
+ std::string res;
+
+ if (paths.size() == 0) return "";
+
+ if (paths.size() == 1) return paths[0];
+
+ res = paths[0];
+
+ for (size_t i = 1; i < paths.size(); i++) {
+ res = pj(res, paths[i]);
+ }
+
+ return res;
+}
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/files/PathUtils.h b/android/android-emu/android/base/files/PathUtils.h
index d69bb0e574..741a7b88bc 100644
--- a/android/android-emu/android/base/files/PathUtils.h
+++ b/android/android-emu/android/base/files/PathUtils.h
@@ -11,6 +11,7 @@
#pragma once
+#include "android/base/Optional.h"
#include "android/base/StringView.h"
#include <string>
@@ -253,6 +254,8 @@ public:
static std::string relativeTo(StringView base, StringView path) {
return relativeTo(base, path, HOST_TYPE);
}
+
+ static Optional<std::string> pathWithoutDirs(StringView name);
};
// Useful shortcuts to avoid too much typing.
@@ -260,5 +263,17 @@ static const PathUtils::HostType kHostPosix = PathUtils::HOST_POSIX;
static const PathUtils::HostType kHostWin32 = PathUtils::HOST_WIN32;
static const PathUtils::HostType kHostType = PathUtils::HOST_TYPE;
+template <class... Paths>
+std::string pj(StringView path1,
+ StringView path2,
+ Paths&&... paths) {
+ return PathUtils::join(path1,
+ pj(path2, std::forward<Paths>(paths)...));
+}
+
+std::string pj(StringView path1, StringView path2);
+
+std::string pj(const std::vector<std::string>& paths);
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/files/StreamSerializing.cpp b/android/android-emu/android/base/files/StreamSerializing.cpp
index aef6f9a122..2a9d77af83 100644
--- a/android/android-emu/android/base/files/StreamSerializing.cpp
+++ b/android/android-emu/android/base/files/StreamSerializing.cpp
@@ -33,5 +33,21 @@ bool loadBufferRaw(Stream* stream, char* buffer) {
return ret == (int)len;
}
+void saveStringArray(Stream* stream, const char* const* strings, uint32_t count) {
+ stream->putBe32(count);
+ for (uint32_t i = 0; i < count; ++i) {
+ stream->putString(strings[i]);
+ }
+}
+
+std::vector<std::string> loadStringArray(Stream* stream) {
+ uint32_t count = stream->getBe32();
+ std::vector<std::string> res;
+ for (uint32_t i = 0; i < count; ++i) {
+ res.push_back(stream->getString());
+ }
+ return res;
+}
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/files/StreamSerializing.h b/android/android-emu/android/base/files/StreamSerializing.h
index 294fcca1ab..8e56a6e484 100644
--- a/android/android-emu/android/base/files/StreamSerializing.h
+++ b/android/android-emu/android/base/files/StreamSerializing.h
@@ -16,6 +16,7 @@
#include "android/base/files/Stream.h"
#include "android/base/TypeTraits.h"
+#include <string>
#include <vector>
namespace android {
@@ -106,5 +107,8 @@ void loadCollection(Stream* stream, Collection* c, LoadFunc&& loader) {
}
}
+void saveStringArray(Stream* stream, const char* const* strings, uint32_t count);
+std::vector<std::string> loadStringArray(Stream* stream);
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/files/StreamSerializing_unittest.cpp b/android/android-emu/android/base/files/StreamSerializing_unittest.cpp
index b184dbbf09..1cd82aab4f 100644
--- a/android/android-emu/android/base/files/StreamSerializing_unittest.cpp
+++ b/android/android-emu/android/base/files/StreamSerializing_unittest.cpp
@@ -11,11 +11,14 @@
#include "android/base/files/StreamSerializing.h"
+#include "android/base/ArraySize.h"
#include "android/base/files/MemStream.h"
#include "android/base/testing/GTestUtils.h"
#include <gtest/gtest.h>
+using android::base::arraySize;
+
namespace android {
namespace base {
@@ -41,5 +44,24 @@ TEST(StreamSerializing, smallVector) {
EXPECT_EQ(0, saveStream.readSize());
}
+TEST(StreamSerializing, StringArray) {
+ MemStream stream;
+
+ const char* const testStrings[] = {
+ "Hello World",
+ "asdf",
+ "",
+ "https://android.googlesource.com",
+ };
+
+ saveStringArray(&stream, testStrings, arraySize(testStrings));
+
+ auto stringsReturned = loadStringArray(&stream);
+
+ for (int i = 0; i < stringsReturned.size(); i++) {
+ EXPECT_EQ(stringsReturned[i], testStrings[i]);
+ }
+}
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/memory/MemoryHints.cpp b/android/android-emu/android/base/memory/MemoryHints.cpp
index 30a613852b..1e8d17f7ce 100644
--- a/android/android-emu/android/base/memory/MemoryHints.cpp
+++ b/android/android-emu/android/base/memory/MemoryHints.cpp
@@ -13,6 +13,7 @@
// limitations under the License.
#include "android/base/Compiler.h"
+#include "android/base/ContiguousRangeMapper.h"
#include "android/base/memory/LazyInstance.h"
#include "android/base/memory/MemoryHints.h"
#include "android/base/synchronization/Lock.h"
@@ -23,9 +24,54 @@
#include <sys/types.h>
#endif
+using android::base::ContiguousRangeMapper;
+using android::base::LazyInstance;
+
namespace android {
namespace base {
+static constexpr size_t kPageSize = 4096;
+
+class MemoryTouchBuffer {
+public:
+
+ MemoryTouchBuffer() {
+ mBuffer.resize(1);
+ }
+
+ uint8_t* ptr() { return mBuffer.data(); }
+
+private:
+ std::vector<uint8_t> mBuffer;
+};
+
+static LazyInstance<MemoryTouchBuffer> sTouchBuffer = LAZY_INSTANCE_INIT;
+
+// Function to touch memory (make sure it is paged in).
+// The method is to explicity copy the memory to a staging buffer.
+//
+// It might be slow, but it has advantages for being portable
+// across different platforms, and it doesn't rely as much on implementation specific details
+// of memmove / memcpy / rep movsb;
+//
+// Even if we go with asm and rep movsb to/from the same address, it could get
+// skipped as a no-op as far as paging is concerned.
+static void rewriteMemory(void* toRewrite, uint64_t length) {
+
+ ContiguousRangeMapper rewriter([](uintptr_t start, uintptr_t size) {
+ volatile uint8_t* staging = sTouchBuffer->ptr();
+ *staging = *(uint8_t*)start;
+ }, kPageSize);
+
+ uint8_t* start = (uint8_t*)toRewrite;
+
+ for (uint64_t i = 0; i < length; i += kPageSize) {
+ rewriter.add(
+ (uintptr_t)start + i,
+ std::min(length - i, (uint64_t)kPageSize));
+ }
+}
+
bool memoryHint(void* start, uint64_t length, MemoryHint hint) {
#ifdef _WIN32
switch (hint) {
@@ -46,11 +92,15 @@ bool memoryHint(void* start, uint64_t length, MemoryHint hint) {
VirtualUnlock(start, length);
VirtualUnlock(start, length);
return true;
+ case MemoryHint::Touch:
+ rewriteMemory(start, length);
+ return true;
case MemoryHint::Normal:
return true;
// TODO: Find some way to implement those on Windows
case MemoryHint::Random:
case MemoryHint::Sequential:
+ return true;
default:
return true;
}
@@ -89,6 +139,9 @@ bool memoryHint(void* start, uint64_t length, MemoryHint hint) {
case MemoryHint::Sequential:
asAdviseFlag = MADV_SEQUENTIAL;
break;
+ case MemoryHint::Touch:
+ rewriteMemory(start, length);
+ break;
default:
break;
}
diff --git a/android/android-emu/android/base/memory/MemoryHints.h b/android/android-emu/android/base/memory/MemoryHints.h
index 4c96807c01..be22b000e1 100644
--- a/android/android-emu/android/base/memory/MemoryHints.h
+++ b/android/android-emu/android/base/memory/MemoryHints.h
@@ -28,6 +28,7 @@ enum class MemoryHint {
Normal,
Random,
Sequential,
+ Touch,
};
// Returns true if successful, false otherwise.
diff --git a/android/android-emu/android/base/memory/SharedMemory.h b/android/android-emu/android/base/memory/SharedMemory.h
index cc2457fcf5..ace274ceb8 100644
--- a/android/android-emu/android/base/memory/SharedMemory.h
+++ b/android/android-emu/android/base/memory/SharedMemory.h
@@ -138,6 +138,8 @@ public:
memory_type get() const { return mAddr; }
memory_type operator*() const { return get(); }
+ handle_type getFd() { return mFd; }
+
private:
int openInternal(int oflag, int mode);
void clear() {
diff --git a/android/android-emu/android/base/memory/SharedMemory_unittest.cpp b/android/android-emu/android/base/memory/SharedMemory_unittest.cpp
index 05347d4ec9..be15591869 100644
--- a/android/android-emu/android/base/memory/SharedMemory_unittest.cpp
+++ b/android/android-emu/android/base/memory/SharedMemory_unittest.cpp
@@ -40,6 +40,9 @@ TEST(SharedMemory, ShareVisibileWithinSameProc) {
ASSERT_TRUE(mWriter.isOpen());
ASSERT_TRUE(mReader.isOpen());
+ ASSERT_TRUE(mWriter.getFd() >= 0);
+ ASSERT_TRUE(mReader.getFd() >= 0);
+
memcpy(*mWriter, message.c_str(), message.size());
std::string read((const char*) *mReader);
ASSERT_TRUE(message == read);
diff --git a/android/android-emu/android/base/synchronization/Lock.h b/android/android-emu/android/base/synchronization/Lock.h
index 4a0fe71233..851e7aaf12 100644
--- a/android/android-emu/android/base/synchronization/Lock.h
+++ b/android/android-emu/android/base/synchronization/Lock.h
@@ -59,7 +59,7 @@ public:
#else
ret = ::pthread_mutex_trylock(&mLock) == 0;
#endif
- ANDROID_IF_DEBUG(mIsLocked = true;)
+ ANDROID_IF_DEBUG(mIsLocked = ret;)
return ret;
}
@@ -142,6 +142,10 @@ class AutoLock {
public:
AutoLock(StaticLock& lock) : mLock(lock) { mLock.lock(); }
+ AutoLock(AutoLock&& other) : mLock(other.mLock), mLocked(other.mLocked) {
+ other.mLocked = false;
+ }
+
void lock() {
assert(!mLocked);
mLock.lock();
@@ -168,7 +172,7 @@ private:
friend class ConditionVariable;
// Don't allow move because this class has a non-movable object.
- DISALLOW_COPY_ASSIGN_AND_MOVE(AutoLock);
+ DISALLOW_COPY_AND_ASSIGN(AutoLock);
};
class AutoWriteLock {
diff --git a/android/android-emu/android/base/system/System.cpp b/android/android-emu/android/base/system/System.cpp
index 335b807a94..5474577745 100755
--- a/android/android-emu/android/base/system/System.cpp
+++ b/android/android-emu/android/base/system/System.cpp
@@ -40,10 +40,12 @@
#include <psapi.h>
#include <winioctl.h>
#include <ntddscsi.h>
+#include <tlhelp32.h>
#endif
#ifdef __APPLE__
#import <Carbon/Carbon.h>
+#include <libproc.h>
#include <mach/clock.h>
#include <mach/mach.h>
#include <spawn.h>
@@ -246,56 +248,7 @@ public:
const std::string& getProgramDirectory() const override {
if (mProgramDir.empty()) {
-#if defined(__linux__)
- char path[1024];
- memset(path, 0, sizeof(path)); // happy valgrind!
- int len = readlink("/proc/self/exe", path, sizeof(path));
- if (len > 0 && len < (int)sizeof(path)) {
- char* x = ::strrchr(path, '/');
- if (x) {
- *x = '\0';
- mProgramDir.assign(path);
- }
- }
-#elif defined(__APPLE__)
- ProcessSerialNumber psn;
- GetCurrentProcess(&psn);
- CFDictionaryRef dict =
- ProcessInformationCopyDictionary(&psn, 0xffffffff);
- CFStringRef value = (CFStringRef)CFDictionaryGetValue(
- dict, CFSTR("CFBundleExecutable"));
- char s[PATH_MAX];
- CFStringGetCString(value, s, PATH_MAX - 1, kCFStringEncodingUTF8);
- char* x = ::strrchr(s, '/');
- if (x) {
- // skip all slashes - there might be more than one
- while (x > s && x[-1] == '/') {
- --x;
- }
- *x = '\0';
- mProgramDir.assign(s);
- } else {
- mProgramDir.assign("<unknown-application-dir>");
- }
-#elif defined(_WIN32)
- Win32UnicodeString appDir(PATH_MAX);
- int len = GetModuleFileNameW(0, appDir.data(), appDir.size());
- mProgramDir.assign("<unknown-application-dir>");
- if (len > 0) {
- if (len > (int)appDir.size()) {
- appDir.resize(static_cast<size_t>(len));
- GetModuleFileNameW(0, appDir.data(), appDir.size());
- }
- std::string dir = appDir.toString();
- char* sep = ::strrchr(&dir[0], '\\');
- if (sep) {
- *sep = '\0';
- mProgramDir.assign(dir.c_str());
- }
- }
-#else
-#error "Unsupported platform!"
-#endif
+ mProgramDir.assign(getProgramDirectoryFromPlatform());
}
return mProgramDir;
}
@@ -925,18 +878,7 @@ public:
}
void envSet(StringView varname, StringView varvalue) override {
-#ifdef _WIN32
- std::string envStr =
- StringFormat("%s=%s", varname, varvalue);
- // Note: this leaks the result of release().
- _wputenv(Win32UnicodeString(envStr).release());
-#else
- if (varvalue.empty()) {
- unsetenv(c_str(varname));
- } else {
- setenv(c_str(varname), c_str(varvalue), 1);
- }
-#endif
+ setEnvironmentVariable(varname, varvalue);
}
bool envTest(StringView varname) const override {
@@ -2299,6 +2241,22 @@ System::FileSize System::getAlignedFileSize(System::FileSize align, System::File
}
// static
+void System::setEnvironmentVariable(StringView varname, StringView varvalue) {
+#ifdef _WIN32
+ std::string envStr =
+ StringFormat("%s=%s", varname, varvalue);
+ // Note: this leaks the result of release().
+ _wputenv(Win32UnicodeString(envStr).release());
+#else
+ if (varvalue.empty()) {
+ unsetenv(c_str(varname));
+ } else {
+ setenv(c_str(varname), c_str(varvalue), 1);
+ }
+#endif
+}
+
+// static
std::string System::getEnvironmentVariable(StringView varname) {
#ifdef _WIN32
Win32UnicodeString varname_unicode(varname);
@@ -2317,6 +2275,62 @@ std::string System::getEnvironmentVariable(StringView varname) {
#endif
}
+// static
+std::string System::getProgramDirectoryFromPlatform() {
+ std::string res;
+#if defined(__linux__)
+ char path[1024];
+ memset(path, 0, sizeof(path)); // happy valgrind!
+ int len = readlink("/proc/self/exe", path, sizeof(path));
+ if (len > 0 && len < (int)sizeof(path)) {
+ char* x = ::strrchr(path, '/');
+ if (x) {
+ *x = '\0';
+ res.assign(path);
+ }
+ }
+#elif defined(__APPLE__)
+ ProcessSerialNumber psn;
+ GetCurrentProcess(&psn);
+ CFDictionaryRef dict =
+ ProcessInformationCopyDictionary(&psn, 0xffffffff);
+ CFStringRef value = (CFStringRef)CFDictionaryGetValue(
+ dict, CFSTR("CFBundleExecutable"));
+ char s[PATH_MAX];
+ CFStringGetCString(value, s, PATH_MAX - 1, kCFStringEncodingUTF8);
+ char* x = ::strrchr(s, '/');
+ if (x) {
+ // skip all slashes - there might be more than one
+ while (x > s && x[-1] == '/') {
+ --x;
+ }
+ *x = '\0';
+ res.assign(s);
+ } else {
+ res.assign("<unknown-application-dir>");
+ }
+#elif defined(_WIN32)
+ Win32UnicodeString appDir(PATH_MAX);
+ int len = GetModuleFileNameW(0, appDir.data(), appDir.size());
+ res.assign("<unknown-application-dir>");
+ if (len > 0) {
+ if (len > (int)appDir.size()) {
+ appDir.resize(static_cast<size_t>(len));
+ GetModuleFileNameW(0, appDir.data(), appDir.size());
+ }
+ std::string dir = appDir.toString();
+ char* sep = ::strrchr(&dir[0], '\\');
+ if (sep) {
+ *sep = '\0';
+ res.assign(dir.c_str());
+ }
+ }
+#else
+#error "Unsupported platform!"
+#endif
+ return res;
+}
+
std::string toString(OsType osType) {
switch (osType) {
case OsType::Windows:
@@ -2330,5 +2344,320 @@ std::string toString(OsType osType) {
}
}
+#ifdef __APPLE__
+// From http://mirror.informatimago.com/next/developer.apple.com/qa/qa2001/qa1123.html
+typedef struct kinfo_proc kinfo_proc;
+
+static int GetBSDProcessList(kinfo_proc **procList, size_t *procCount)
+ // Returns a list of all BSD processes on the system. This routine
+ // allocates the list and puts it in *procList and a count of the
+ // number of entries in *procCount. You are responsible for freeing
+ // this list (use "free" from System framework).
+ // On success, the function returns 0.
+ // On error, the function returns a BSD errno value.
+{
+ int err;
+ kinfo_proc * result;
+ bool done;
+ static const int name[] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0 };
+ // Declaring name as const requires us to cast it when passing it to
+ // sysctl because the prototype doesn't include the const modifier.
+ size_t length;
+
+ assert( procList != NULL);
+ assert(*procList == NULL);
+ assert(procCount != NULL);
+
+ *procCount = 0;
+
+ // We start by calling sysctl with result == NULL and length == 0.
+ // That will succeed, and set length to the appropriate length.
+ // We then allocate a buffer of that size and call sysctl again
+ // with that buffer. If that succeeds, we're done. If that fails
+ // with ENOMEM, we have to throw away our buffer and loop. Note
+ // that the loop causes use to call sysctl with NULL again; this
+ // is necessary because the ENOMEM failure case sets length to
+ // the amount of data returned, not the amount of data that
+ // could have been returned.
+
+ result = NULL;
+ done = false;
+ do {
+ assert(result == NULL);
+
+ // Call sysctl with a NULL buffer.
+
+ length = 0;
+ err = sysctl( (int *) name, (sizeof(name) / sizeof(*name)) - 1,
+ NULL, &length,
+ NULL, 0);
+ if (err == -1) {
+ err = errno;
+ }
+
+ // Allocate an appropriately sized buffer based on the results
+ // from the previous call.
+
+ if (err == 0) {
+ result = (kinfo_proc*)malloc(length);
+ if (result == NULL) {
+ err = ENOMEM;
+ }
+ }
+
+ // Call sysctl again with the new buffer. If we get an ENOMEM
+ // error, toss away our buffer and start again.
+
+ if (err == 0) {
+ err = sysctl( (int *) name, (sizeof(name) / sizeof(*name)) - 1,
+ result, &length,
+ NULL, 0);
+ if (err == -1) {
+ err = errno;
+ }
+ if (err == 0) {
+ done = true;
+ } else if (err == ENOMEM) {
+ assert(result != NULL);
+ free(result);
+ result = NULL;
+ err = 0;
+ }
+ }
+ } while (err == 0 && ! done);
+
+ // Clean up and establish post conditions.
+
+ if (err != 0 && result != NULL) {
+ free(result);
+ result = NULL;
+ }
+ *procList = result;
+ if (err == 0) {
+ *procCount = length / sizeof(kinfo_proc);
+ }
+
+ assert( (err == 0) == (*procList != NULL) );
+
+ return err;
+}
+
+// From https://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid/
+Optional<std::string> getPathOfProcessByPid(pid_t pid) {
+ int ret;
+ std::string result(PROC_PIDPATHINFO_MAXSIZE + 1, 0);
+ ret = proc_pidpath(pid, (void*)result.data(), PROC_PIDPATHINFO_MAXSIZE);
+
+ if ( ret <= 0 ) {
+ return kNullopt;
+ } else {
+ return result;
+ }
+}
+
+#endif
+
+static bool sMultiStringMatch(StringView haystack,
+ const std::vector<StringView>& needles,
+ bool approxMatch) {
+ bool found = false;
+
+ for (auto needle : needles) {
+ found = found ||
+ approxMatch ?
+ (haystack.find(needle) !=
+ std::string::npos) :
+ (haystack == needle);
+ }
+
+ return found;
+}
+
+// static
+std::vector<System::Pid> System::queryRunningProcessPids(
+ const std::vector<StringView>& targets,
+ bool approxMatch) {
+
+ std::vector<System::Pid> pids;
+
+// From https://stackoverflow.com/questions/20874381/get-a-process-id-in-c-by-name
+#ifdef _WIN32
+ // Take a snapshot of all processes in the system.
+ ScopedFileHandle handle(
+ CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0));
+
+ if (!handle.valid()) return {};
+
+ PROCESSENTRY32 pe32;
+ pe32.dwSize = sizeof(PROCESSENTRY32);
+
+ // Retrieve information about the first process and exit if unsuccessful.
+ if (!Process32First(handle.get(), &pe32)) {
+ return {};
+ }
+
+ do {
+ if (sMultiStringMatch(pe32.szExeFile, targets, approxMatch)) {
+ pids.push_back((System::Pid)pe32.th32ProcessID);
+ }
+ } while (Process32Next(handle.get(), &pe32));
+#else
+
+#ifdef __APPLE__
+
+ kinfo_proc* procs = nullptr;
+ size_t procCount = 0;
+
+ GetBSDProcessList(&procs, &procCount);
+
+ for (size_t i = 0; i < procCount; i++) {
+ pid_t pid = procs[i].kp_proc.p_pid;
+ auto path = getPathOfProcessByPid(pid);
+
+ if (!path) continue;
+
+ auto filePart = PathUtils::pathWithoutDirs(*path);
+
+ if (!filePart) continue;
+
+ if (sMultiStringMatch(*filePart, targets, approxMatch)) {
+ pids.push_back((System::Pid)pid);
+ }
+ }
+
+#else
+ // TODO: It seems quite error prone to try to list processes on Linux,
+ // as opening and iterating through /proc/ seems needed.
+ // We only want to use this for Windows anyway. YAGNI.
+ fprintf(stderr, "FATAL: Process listing not implemented for Linux.\n");
+ abort();
+#endif
+
+#endif
+ return pids;
+}
+
+static bool looksLikeTempDir(StringView tempDir) {
+ auto pathComponents = PathUtils::decompose(tempDir);
+
+ if (pathComponents.empty()) return false;
+
+ // basic validity checks
+ for (auto pathComponent : pathComponents) {
+ // Treat .. as not valid for a temp dir spec.
+ // Too complex to handle in its full generality.
+ if (pathComponent == "..") {
+ return false;
+ }
+ }
+
+ std::vector<StringView> neededPathComponents = {
+#ifdef _WIN32
+ "Users", "AppData", "Local", "Temp",
+#else
+ "tmp", "android-",
+#endif
+ };
+
+ std::vector<size_t> foundPathComponentIndices;
+
+ for (auto pathComponent: pathComponents) {
+ size_t index = 0;
+ for (auto neededPathComponent : neededPathComponents) {
+ if (pathComponent.find(
+ neededPathComponent.str()) !=
+ std::string::npos) {
+ foundPathComponentIndices.push_back(index);
+ break;
+ }
+ ++index;
+ }
+ }
+
+ if (foundPathComponentIndices.size() != neededPathComponents.size()) {
+ return false;
+ }
+
+ for (size_t i = 0; i < foundPathComponentIndices.size(); i++) {
+ if (foundPathComponentIndices[i] != i) return false;
+ }
+
+ return true;
+}
+
+// static
+void System::deleteTempDir() {
+ std::string tempDir = System::get()->getTempDir();
+
+ std::vector<StringView> emulatorExePatterns = {
+ "emulator",
+ "qemu-system",
+ };
+
+#ifdef __linux__
+ printf("Temp directory deletion not supported on Linux. Skipping.\n");
+#else // !__linux__
+ printf("Checking if path is safe for deletion: %s\n", tempDir.c_str());
+
+ if (!looksLikeTempDir(tempDir)) {
+ printf("WARNING: %s does not look like a standard temp directory.\n",
+ tempDir.c_str());
+ printf("Please remove files in there manually.\n");
+ return;
+ }
+
+ printf("Checking for other emulator instances...");
+
+ std::vector<System::Pid> emuPids =
+ queryRunningProcessPids(emulatorExePatterns);
+
+ if (!emuPids.empty()) {
+#ifdef _WIN32
+ printf("Detected running emulator processes.\n");
+ printf("Marking existing files for deletion on reboot...\n");
+ path_delete_dir_contents_on_reboot(tempDir.c_str());
+ printf("Done.\n");
+#else // !_WIN32
+ printf("Detected running emulator processes. Skipping.\n");
+#endif // !_WIN32
+ return;
+ }
+
+ printf("Deleting emulator temp directory contents...");
+ path_delete_dir_contents(tempDir.c_str());
+ printf("done\n");
+#endif // !__linux__
+}
+
+// static
+void System::killProcess(System::Pid pid) {
+#ifdef _WIN32
+ ScopedFileHandle forKilling(OpenProcess(PROCESS_TERMINATE, false, pid));
+ if (forKilling.valid()) {
+ TerminateProcess(forKilling.get(), 1);
+ }
+#else
+ kill(pid, SIGKILL);
+#endif
+}
+
+// static
+void System::stopAllEmulatorProcesses() {
+// TODO: Implement process grepping for Linux.
+#ifndef __linux__
+ std::vector<StringView> emulatorExePatterns = {
+ "emulator",
+ "qemu-system",
+ };
+
+ std::vector<System::Pid> emuPids =
+ queryRunningProcessPids(emulatorExePatterns);
+
+ for (auto pid : emuPids) {
+ System::killProcess(pid);
+ }
+#endif
+}
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/base/system/System.h b/android/android-emu/android/base/system/System.h
index 9d9dfb6401..5d97b78091 100644
--- a/android/android-emu/android/base/system/System.h
+++ b/android/android-emu/android/base/system/System.h
@@ -439,6 +439,15 @@ public:
virtual Optional<std::string> runCommandWithResult( const std::vector<std::string>& commandLine,
System::Duration timeoutMs = kInfinite,
System::ProcessExitCode* outExitCode = nullptr) = 0;
+
+ static std::vector<Pid> queryRunningProcessPids(
+ const std::vector<StringView>& targets, bool approxMatch = true);
+
+ static void deleteTempDir();
+
+ static void killProcess(Pid);
+ static void stopAllEmulatorProcesses();
+
protected:
size_t mMemorySize = 0;
@@ -467,9 +476,11 @@ protected:
static Optional<DiskKind> diskKindInternal(StringView path);
static Optional<DiskKind> diskKindInternal(int fd);
- // Static version that queries host environment variables
+ // Static version that sets or queries host environment variables
// regardless of being TestSystem.
+ static void setEnvironmentVariable(StringView varname, StringView varvalue);
static std::string getEnvironmentVariable(StringView varname);
+ static std::string getProgramDirectoryFromPlatform();
private:
DISALLOW_COPY_AND_ASSIGN(System);
diff --git a/android/android-emu/android/base/testing/ResultMatchers.h b/android/android-emu/android/base/testing/ResultMatchers.h
new file mode 100644
index 0000000000..9909fe5038
--- /dev/null
+++ b/android/android-emu/android/base/testing/ResultMatchers.h
@@ -0,0 +1,65 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "android/base/Result.h"
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+namespace android {
+namespace base {
+
+template <typename T,
+ typename E,
+ typename = typename std::enable_if<!std::is_void<T>::value>::type>
+void PrintTo(const Result<T, E>& param, std::ostream* os) {
+ if (param.ok()) {
+ *os << "Ok(" << ::testing::PrintToString(param.ok().value()) << ")";
+ } else {
+ *os << "Err(" << ::testing::PrintToString(param.err().value()) << ")";
+ }
+}
+
+template <typename E>
+void PrintTo(const Result<void, E>& param, std::ostream* os) {
+ if (param.ok()) {
+ *os << "Ok()";
+ } else {
+ *os << "Err(" << ::testing::PrintToString(param.err().value()) << ")";
+ }
+}
+
+MATCHER(IsOk, "Ok()") {
+ return arg.ok();
+}
+
+MATCHER_P(IsOk, value, "Ok(" + ::testing::PrintToString(value) + ")") {
+ if (!arg.ok()) {
+ return false;
+ }
+
+ return ::testing::Matches(value)(arg.ok().value());
+}
+
+MATCHER_P(IsErr, err, "Err(" + ::testing::PrintToString(err) + ")") {
+ if (!arg.err()) {
+ return false;
+ }
+
+ return ::testing::Matches(err)(arg.err().value());
+}
+
+} // namespace base
+} // namespace android
diff --git a/android/android-emu/android/base/testing/TestEvent.h b/android/android-emu/android/base/testing/TestEvent.h
new file mode 100644
index 0000000000..31014d77e4
--- /dev/null
+++ b/android/android-emu/android/base/testing/TestEvent.h
@@ -0,0 +1,84 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#pragma once
+
+#include "android/base/Compiler.h"
+
+#include <condition_variable>
+#include <chrono>
+#include <mutex>
+
+#include <gtest/gtest.h>
+
+// Helper for multithreaded tests to wait for an event to occur before
+// continuing test execution. Usage:
+//
+// TestEvent event;
+// setCallback([&event]() {
+// event.signal();
+// });
+//
+// asyncCallCallback();
+// event.wait();
+//
+// By default, the timeout is 10 seconds but it can be changed by overriding
+// the default parameter of wait().
+//
+// TestEvent is counted, so calling signal() more than once will result in
+// multiple wait() events being triggered. Call reset() to reset the current
+// count.
+
+class TestEvent {
+ DISALLOW_COPY_AND_ASSIGN(TestEvent);
+public:
+ static constexpr int64_t kDefaultTimeoutMs = 10000; // 10 seconds.
+
+ TestEvent() = default;
+
+ void signal() {
+ {
+ std::lock_guard<std::mutex> lock(mMutex);
+ ++mSignaledCount;
+ }
+ mCv.notify_one();
+ }
+
+ bool isSignaled() {
+ std::lock_guard<std::mutex> lock(mMutex);
+ return mSignaledCount > 0;
+ }
+
+ void reset() {
+ std::lock_guard<std::mutex> lock(mMutex);
+ mSignaledCount = 0;
+ }
+
+ void wait(int64_t timeoutMs = kDefaultTimeoutMs) {
+ std::unique_lock<std::mutex> lock(mMutex);
+ if (mSignaledCount > 0 ||
+ mCv.wait_for(lock, std::chrono::milliseconds(timeoutMs),
+ [this] { return mSignaledCount > 0; })) {
+ ASSERT_GT(mSignaledCount, 0);
+ --mSignaledCount;
+ } else {
+ FAIL() << "TestEvent::wait() timed out.";
+ }
+ }
+
+private:
+ std::condition_variable mCv;
+ std::mutex mMutex;
+ size_t mSignaledCount = 0;
+};
diff --git a/android/android-emu/android/base/testing/TestEvent_unittest.cpp b/android/android-emu/android/base/testing/TestEvent_unittest.cpp
new file mode 100644
index 0000000000..44baac503f
--- /dev/null
+++ b/android/android-emu/android/base/testing/TestEvent_unittest.cpp
@@ -0,0 +1,70 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/base/testing/TestEvent.h"
+
+#include <gtest/gtest.h>
+#include <gtest/gtest-spi.h>
+
+#include <thread>
+
+TEST(TestEvent, Simple) {
+ TestEvent event;
+ EXPECT_FALSE(event.isSignaled());
+
+ event.signal();
+ EXPECT_TRUE(event.isSignaled());
+ event.wait();
+ EXPECT_FALSE(event.isSignaled());
+}
+
+TEST(TestEvent, MultipleSignals) {
+ TestEvent event;
+
+ event.signal();
+ event.signal();
+ event.wait();
+ EXPECT_TRUE(event.isSignaled());
+ event.wait();
+ EXPECT_FALSE(event.isSignaled());
+}
+
+TEST(TestEvent, Reset) {
+ TestEvent event;
+
+ event.signal();
+ event.signal();
+ event.reset();
+ EXPECT_FALSE(event.isSignaled());
+}
+
+TEST(TestEvent, Timeout) {
+ EXPECT_FATAL_FAILURE(
+ {
+ TestEvent event;
+ event.wait(0);
+ },
+ "timed out");
+}
+
+TEST(TestEvent, Multithreaded) {
+ TestEvent event;
+ std::thread worker([&event]() {
+ std::this_thread::sleep_for(std::chrono::milliseconds(50));
+ event.signal();
+ });
+
+ event.wait();
+ worker.join();
+}
diff --git a/android/android-emu/android/base/testing/TestLooper.h b/android/android-emu/android/base/testing/TestLooper.h
index 76ce6be4d4..4669f1e9f0 100644
--- a/android/android-emu/android/base/testing/TestLooper.h
+++ b/android/android-emu/android/base/testing/TestLooper.h
@@ -23,6 +23,12 @@ class TestLooper : public DefaultLooper {
public:
using DefaultLooper::DefaultLooper;
+ // Override nowMs/nowNs to allow overriding virtual time.
+ Duration nowMs(ClockType clockType = ClockType::kHost) override;
+ DurationNs nowNs(ClockType clockType = ClockType::kHost) override;
+
+ void setVirtualTimeNs(DurationNs timeNs);
+
// Add some functions to uncover the internal state
const TimerSet& timers() const;
const TimerList& activeTimers() const;
@@ -34,8 +40,31 @@ public:
bool exitRequested() const;
using DefaultLooper::runOneIterationWithDeadlineMs;
+
+private:
+ DurationNs mVirtualTimeNs = 0;
};
+inline Looper::Duration TestLooper::nowMs(ClockType clockType) {
+ if (clockType == ClockType::kVirtual) {
+ return mVirtualTimeNs / 1000LL;
+ } else {
+ return DefaultLooper::nowMs(clockType);
+ }
+}
+
+inline Looper::DurationNs TestLooper::nowNs(ClockType clockType) {
+ if (clockType == ClockType::kVirtual) {
+ return mVirtualTimeNs;
+ } else {
+ return DefaultLooper::nowNs(clockType);
+ }
+}
+
+inline void TestLooper::setVirtualTimeNs(DurationNs timeNs) {
+ mVirtualTimeNs = timeNs;
+}
+
inline const DefaultLooper::TimerSet& TestLooper::timers() const {
return mTimers;
}
diff --git a/android/android-emu/android/base/testing/TestSystem.h b/android/android-emu/android/base/testing/TestSystem.h
index f2f45cb972..971289ef5d 100644
--- a/android/android-emu/android/base/testing/TestSystem.h
+++ b/android/android-emu/android/base/testing/TestSystem.h
@@ -48,7 +48,9 @@ namespace base {
//
class TestSystem : public System {
public:
+ using System::setEnvironmentVariable;
using System::getEnvironmentVariable;
+ using System::getProgramDirectoryFromPlatform;
TestSystem(StringView launcherDir,
int hostBitness,
diff --git a/android/android-emu/android/base/threads/Thread.h b/android/android-emu/android/base/threads/Thread.h
index b3c8a6f389..433e624adb 100644
--- a/android/android-emu/android/base/threads/Thread.h
+++ b/android/android-emu/android/base/threads/Thread.h
@@ -133,5 +133,16 @@ private:
// Helper function to obtain a printable id for the current thread.
unsigned long getCurrentThreadId();
+// Subclass of Thread covering interruptible threads.
+class InterruptibleThread : public Thread {
+ DISALLOW_COPY_ASSIGN_AND_MOVE(InterruptibleThread);
+public:
+ // Public constructor.
+ InterruptibleThread(ThreadFlags flags = ThreadFlags::MaskSignals, int stackSize = 0) :
+ Thread(flags, stackSize) { }
+
+ virtual void interrupt() = 0;
+};
+
} // namespace base
} // namespace android
diff --git a/android/android-emu/android/console.cpp b/android/android-emu/android/console.cpp
index 48b51f7162..be57509b79 100644
--- a/android/android-emu/android/console.cpp
+++ b/android/android-emu/android/console.cpp
@@ -25,6 +25,7 @@
#include "android/console_internal.h"
#include "android/android.h"
+#include "android/automation/AutomationController.h"
#include "android/base/StringView.h"
#include "android/base/misc/StringUtils.h"
#include "android/cmdline-option.h"
@@ -2322,6 +2323,36 @@ static int do_snapshot_del(ControlClient client, char* args) {
return success ? 0 : -1;
}
+static int do_snapshot_remap(ControlClient client, char* args) {
+ bool shared = true;
+
+ if (args && strcmp(args, "1") == 0) {
+ shared = true;
+ } else if (args && strcmp(args, "0") == 0) {
+ shared = false;
+ } else {
+ control_write(
+ client,
+ "KO: Argument missing, "
+ "try 'avd snapshot remap <auto-save>'\r\n");
+ return -1;
+ }
+
+ bool success = vmopers(client)->snapshotRemap(shared, client,
+ control_write_err_cb);
+
+ if (!success) {
+ control_write(
+ client,
+ "KO: failed to remap ram. "
+ "wanted shared mode: %d \r\n",
+ shared);
+ return -1;
+ }
+
+ return true;
+}
+
static const CommandDefRec snapshot_commands[] =
{
{ "list", "list available state snapshots",
@@ -2344,6 +2375,24 @@ static const CommandDefRec snapshot_commands[] =
"'avd snapshot delete <name>' will delete the state snapshot with the given name\r\n",
NULL, do_snapshot_del, NULL },
+ { "remap", "remap current snapshot RAM",
+ "'avd snapshot remap <auto-save>' will activate or shut off Quickboot auto-saving\r\n"
+ "while the emulator is running.\r\n"
+ "<auto-save> value of 0: deactivate auto-save\r\n"
+ "<auto-save> value of 1: activate auto-save\r\n"
+ "- It is required that the current loaded snapshot be the Quickboot snapshot (default_boot).\r\n"
+ "- If auto-saving is currently active and gets deactivated, a snapshot will be saved\r\n"
+ " to establish the last state.\r\n"
+ "- If the emulator is not currently auto-saving and a remap command is issued,\r\n"
+ " the Quickboot snapshot will be reloaded with auto-saving enabled or disabled\r\n"
+ " according to the value of the <auto-save> argument.\r\n"
+ "- This allows the user to set a checkpoint in the middle of running the emulator:\r\n"
+ " by starting the emulator with auto-save enabled, then issuing 'avd snapshot remap 0'\r\n"
+ " to disable auto-save and thus set the checkpoint. Subsequent 'avd snapshot remap 0'\r\n"
+ " commands will then repeatedly rewind to that checkpoint.\r\n"
+ " Issuing 'avd snapshot remap 1' after that will rewind again but activate auto-saving.\r\n",
+ NULL, do_snapshot_remap, NULL },
+
{ NULL, NULL, NULL, NULL, NULL, NULL }
};
@@ -2760,22 +2809,97 @@ static const CommandDefRec sensor_commands[] =
/********************************************************************************************/
/********************************************************************************************/
/***** ******/
-/***** P H Y S I C S C O M M A N D S ******/
+/***** A U T O M A T I O N C O M M A N D S ******/
/***** ******/
/********************************************************************************************/
/********************************************************************************************/
+// Start recording device state changes to the given file.
+static int do_automation_record(ControlClient client, char* args) {
+ using namespace android::automation;
+
+ auto result = AutomationController::get().startRecording(args);
+ if (result.err()) {
+ std::ostringstream str;
+ str << "KO: " << result.unwrapErr();
+ control_write(client, "%s\r\n", str.str().c_str());
+ return -1;
+ }
+
+ return 0;
+}
+
+// Stop recording back device state.
+static int do_automation_stop_recording(ControlClient client, char* args) {
+ using namespace android::automation;
+
+ auto result = AutomationController::get().stopRecording();
+ if (result.err()) {
+ std::ostringstream str;
+ str << "KO: " << result.unwrapErr();
+ control_write(client, "%s\r\n", str.str().c_str());
+ return -1;
+ }
+
+ return 0;
+}
+
+// Start playing back device state from the given file.
+static int do_automation_play(ControlClient client, char* args) {
+ using namespace android::automation;
+
+ auto result = AutomationController::get().startPlayback(args);
+ if (result.err()) {
+ std::ostringstream str;
+ str << "KO: " << result.unwrapErr();
+ control_write(client, "%s\r\n", str.str().c_str());
+ return -1;
+ }
-// Start recording physical state changes to the given file.
-static int do_physics_record(ControlClient client, char* args) {
- return android_physical_model_record(args);
+ return 0;
}
-// Start playing physical state changes from the given file.
-static int do_physics_play(ControlClient client, char* args) {
- return android_physical_model_playback(args);
+// Stop playing back device state.
+static int do_automation_stop_playback(ControlClient client, char* args) {
+ using namespace android::automation;
+
+ auto result = AutomationController::get().stopPlayback();
+ if (result.err()) {
+ std::ostringstream str;
+ str << "KO: " << result.unwrapErr();
+ control_write(client, "%s\r\n", str.str().c_str());
+ return -1;
+ }
+
+ return 0;
}
+// Automation commands for record/playback of device state.
+static const CommandDefRec automation_commands[] = {
+ { "record", "start recording a macro.",
+ "'record <filename>': start recording a macro of device state changes to the given file.\r\n",
+ nullptr, do_automation_record, nullptr },
+ { "stop-record", "stop recording a macro.",
+ "'stop-record': stop the current recording.\r\n",
+ nullptr, do_automation_stop_recording, nullptr },
+ { "play", "playback macro.",
+ "'play <filename>': start playing back the macro from the given file.\r\n",
+ nullptr, do_automation_play, nullptr },
+ { "stop-play", "stop playing macro.",
+ "'stop-play': stop the current macro playback.\r\n",
+ nullptr, do_automation_stop_playback, nullptr },
+
+ { nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
+};
+
+/********************************************************************************************/
+/********************************************************************************************/
+/***** ******/
+/***** P H Y S I C S C O M M A N D S ******/
+/***** ******/
+/********************************************************************************************/
+/********************************************************************************************/
+
// Start recording of ground truth to the given file.
static int do_physics_record_ground_truth(ControlClient client, char* args) {
return android_physical_model_record_ground_truth(args);
@@ -2783,22 +2907,16 @@ static int do_physics_record_ground_truth(ControlClient client, char* args) {
// Stop the current recording or playback of physical state changes.
static int do_physics_stop(ControlClient client, char* args) {
- return android_physical_model_stop_record_and_playback();
+ return android_physical_model_stop_recording();
}
// Physics commands for record/playback physics state.
static const CommandDefRec physics_commands[] = {
- { "record", "start recording physical state changes.",
- "'record <filename>': start recording physical state changes to the given file.\r\n",
- nullptr, do_physics_record, nullptr },
- { "play", "start playing physical state changes.",
- "'play <filename>': start playing physical state changes from the given file.\r\n",
- nullptr, do_physics_play, nullptr },
{ "record-gt", "start recording ground truth of the physical model's 6dof poses",
"'record-gt <filename>': start recording of ground truth to the given file.\r\n",
nullptr, do_physics_record_ground_truth, nullptr },
- { "stop", "stop recording or playing back physical state changes.",
- "'stop': stop the current recording or playback of physical state changes.\r\n",
+ { "stop", "stop recording ground truth",
+ "'stop': stop the current recording of ground truth.\r\n",
nullptr, do_physics_stop, nullptr },
{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
@@ -3263,6 +3381,11 @@ extern const CommandDefRec main_commands[] = {
PING_COMMAND,
+ {"automation", "manage emulator automation",
+ "allows you to record and play back macros for device state "
+ "automation\r\n",
+ NULL, NULL, automation_commands},
+
{"event", "simulate hardware events",
"allows you to send fake hardware events to the kernel\r\n", NULL,
NULL, event_commands},
@@ -3288,7 +3411,8 @@ extern const CommandDefRec main_commands[] = {
{"kill", "kill the emulator instance", NULL, NULL, do_kill, NULL},
- {"restart", "restart the emulator instance", NULL, NULL, do_restart, NULL},
+ {"restart", "restart the emulator instance", NULL, NULL, do_restart,
+ NULL},
{"network", "manage network settings",
"allows you to manage the settings related to the network data "
@@ -3327,8 +3451,8 @@ extern const CommandDefRec main_commands[] = {
sensor_commands},
{"physics", "manage physical model",
- "allows you to record and playback physical model state changes\r\n", NULL, NULL,
- physics_commands},
+ "allows you to record and playback physical model state changes\r\n",
+ NULL, NULL, physics_commands},
{"finger", "manage emulator finger print",
"allows you to touch the emulator finger print sensor\r\n", NULL, NULL,
@@ -3340,8 +3464,8 @@ extern const CommandDefRec main_commands[] = {
{"rotate", "rotate the screen clockwise by 90 degrees", NULL, NULL,
do_rotate_90_clockwise, NULL},
- {"screenrecord", "Records the emulator's display", NULL,
- NULL, NULL, screenrecord_commands},
+ {"screenrecord", "Records the emulator's display", NULL, NULL, NULL,
+ screenrecord_commands},
{NULL, NULL, NULL, NULL, NULL, NULL}};
diff --git a/android/android-emu/android/crashreport/CrashReporter.h b/android/android-emu/android/crashreport/CrashReporter.h
index ef37c78612..1211d99b5b 100644
--- a/android/android-emu/android/crashreport/CrashReporter.h
+++ b/android/android-emu/android/crashreport/CrashReporter.h
@@ -122,6 +122,11 @@ public:
bool replace = false,
bool binary = false);
+ // To make it easier to diagnose general issues,
+ // have a function to append to the dump message file
+ // without needing to generate a minidump
+ // or crash the emulator.
+ void AppendDump(const char* message);
// The following two functions write a dump of current process state.
// Both pass the |message| to the dump writer, so it is sent together with
// the dump file
diff --git a/android/android-emu/android/crashreport/CrashReporter_common.cpp b/android/android-emu/android/crashreport/CrashReporter_common.cpp
index 497fd956ff..e00f04f865 100644
--- a/android/android-emu/android/crashreport/CrashReporter_common.cpp
+++ b/android/android-emu/android/crashreport/CrashReporter_common.cpp
@@ -117,6 +117,10 @@ const std::string& CrashReporter::getDataExchangeDir() const {
return mDataExchangeDir;
}
+void CrashReporter::AppendDump(const char* message) {
+ passDumpMessage(message);
+}
+
void CrashReporter::GenerateDump(const char* message) {
passDumpMessage(message);
writeDump();
@@ -323,6 +327,25 @@ void crashhandler_cleanup() {
CrashReporter::destroy();
}
+void crashhandler_append_message(const char* message) {
+ if (const auto reporter = CrashReporter::get()) {
+ reporter->AppendDump(message);
+ }
+}
+
+void crashhandler_append_message_format_v(const char* format, va_list args) {
+ char message[2048] = {};
+ vsnprintf(message, sizeof(message) - 1, format, args);
+ crashhandler_append_message(message);
+}
+
+void crashhandler_append_message_format(const char* format, ...) {
+ va_list args;
+ va_start(args, format);
+ crashhandler_append_message_format_v(format, args);
+ va_end(args);
+}
+
void crashhandler_die(const char* message) {
if (const auto reporter = CrashReporter::get()) {
reporter->GenerateDumpAndDie(message);
diff --git a/android/android-emu/android/crashreport/crash-handler.h b/android/android-emu/android/crashreport/crash-handler.h
index 12cef751b0..6f9c813be3 100644
--- a/android/android-emu/android/crashreport/crash-handler.h
+++ b/android/android-emu/android/crashreport/crash-handler.h
@@ -41,7 +41,14 @@ ANDROID_BEGIN_HEADER
bool crashhandler_init(void);
void crashhandler_cleanup(void);
-// Abort the program execution immidiately; when showing a crash dialog, use
+// Append message to crash dump file without aborting.
+// Useful for saving debugging information just before a crash.
+void crashhandler_append_message(const char* message);
+// A variadic overload with C interface
+void crashhandler_append_message_format(const char* format, ...);
+void crashhandler_append_message_format_v(const char* format, va_list args);
+
+// Abort the program execution immediately; when showing a crash dialog, use
// show |message| to the user instead of standard 'emulator have crashed'
ANDROID_NORETURN void crashhandler_die(const char* message)
__attribute__((noinline));
diff --git a/android/android-emu/android/crashreport/ui/ConfirmDialog.cpp b/android/android-emu/android/crashreport/ui/ConfirmDialog.cpp
index f880ef410d..2acba189e4 100644
--- a/android/android-emu/android/crashreport/ui/ConfirmDialog.cpp
+++ b/android/android-emu/android/crashreport/ui/ConfirmDialog.cpp
@@ -99,10 +99,10 @@ ConfirmDialog::ConfirmDialog(QWidget* parent,
"rendering for this device. This could avoid driver "
"problems and make it easier to debug the OpenGL code "
"in your app."
-#ifdef __APPLE__
- " (You may need to reduce your screen resolution to run "
- "this way.)"
-#endif
+ "To enable software rendering, go to:\n\n"
+ "Extended Controls > Settings > Advanced tab\n\n"
+ "and change \"OpenGL ES renderer (requires restart)\""
+ "to \"Swiftshader.\""
));
}
} else {
diff --git a/android/android-emu/android/emulation/AndroidAsyncMessagePipe.cpp b/android/android-emu/android/emulation/AndroidAsyncMessagePipe.cpp
new file mode 100644
index 0000000000..b3659a8796
--- /dev/null
+++ b/android/android-emu/android/emulation/AndroidAsyncMessagePipe.cpp
@@ -0,0 +1,343 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/emulation/AndroidAsyncMessagePipe.h"
+
+#include <cassert>
+
+namespace android {
+
+AndroidAsyncMessagePipe::AndroidAsyncMessagePipe(AndroidPipe::Service* service,
+ PipeArgs&& args)
+ : AndroidPipe(args.hwPipe, service),
+ mHandle(args.handle),
+ mDeleter(std::move(args.deleter)) {
+ LOG(INFO) << "Registering pipe service " << service->name();
+
+ if (args.loadStream) {
+ LOG(VERBOSE) << "Loading state from snapshot";
+ onLoad(args.loadStream);
+ }
+}
+
+void AndroidAsyncMessagePipe::send(std::vector<uint8_t>&& data) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ DLOG(VERBOSE) << "Sending packet, " << data.size() << " bytes";
+ mOutgoingPackets.emplace_back(std::move(data));
+
+ signalWake(PIPE_WAKE_READ);
+}
+
+void AndroidAsyncMessagePipe::onSave(base::Stream* stream) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ if (mIncomingPacket) {
+ stream->putByte(1);
+ mIncomingPacket->serialize(stream);
+ } else {
+ stream->putByte(0);
+ }
+
+ const size_t outgoingPacketCount = mOutgoingPackets.size();
+ stream->putBe64(outgoingPacketCount);
+
+ for (const OutgoingPacket& packet : mOutgoingPackets) {
+ packet.serialize(stream);
+ }
+}
+
+void AndroidAsyncMessagePipe::onLoad(base::Stream* stream) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mIncomingPacket.clear();
+ mOutgoingPackets.clear();
+
+ const bool hasIncomingPacket = stream->getByte() != 0;
+ if (hasIncomingPacket) {
+ mIncomingPacket = IncomingPacket(stream);
+ }
+
+ const uint64_t outgoingPacketCount = stream->getBe64();
+ for (uint64_t i = 0; i < outgoingPacketCount; ++i) {
+ mOutgoingPackets.emplace_back(stream);
+ }
+}
+
+bool AndroidAsyncMessagePipe::allowRead() const {
+ // If we're partially done reading data, complete that first.
+ if (mIncomingPacket && !mIncomingPacket->complete()) {
+ return true;
+ }
+
+ // Otherwise, only allow read if we don't have anything to write.
+ return mOutgoingPackets.empty();
+}
+
+int AndroidAsyncMessagePipe::readBuffers(const AndroidPipeBuffer* buffers,
+ int numBuffers) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ if (!allowRead()) {
+ DLOG(VERBOSE) << "Returning PIPE_ERROR_AGAIN, incoming="
+ << (mIncomingPacket ? 1 : 0)
+ << ", outgoing=" << mOutgoingPackets.size();
+ return PIPE_ERROR_AGAIN;
+ }
+
+ int bytesRead = 0;
+ for (int i = 0; i < numBuffers && allowRead(); ++i) {
+ const AndroidPipeBuffer& buffer = buffers[i];
+
+ // Note that we check allowRead() again here, if a packet gets sent from
+ // the onMessage() callback we stop reading additional packets, in order
+ // to ensure the responses are sent in-order.
+ for (size_t bufferReadOffset = 0;
+ bufferReadOffset != buffer.size && allowRead();) {
+ if (!mIncomingPacket) {
+ mIncomingPacket = IncomingPacket();
+ }
+
+ const size_t currentBytesRead = mIncomingPacket->copyFromBuffer(
+ buffers[i], &bufferReadOffset);
+ assert(bytesRead + currentBytesRead < INT32_MAX);
+ bytesRead += static_cast<int>(currentBytesRead);
+
+ if (mIncomingPacket->complete()) {
+ DLOG(VERBOSE) << "Packet complete, "
+ << mIncomingPacket->messageLength << " bytes";
+ onMessage(mIncomingPacket->data);
+ mIncomingPacket.clear();
+ }
+ }
+ }
+
+ DLOG(VERBOSE) << "readBuffers complete, " << bytesRead << " bytes total";
+ return bytesRead;
+}
+
+int AndroidAsyncMessagePipe::writeBuffers(AndroidPipeBuffer* buffers,
+ int numBuffers) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ if (mOutgoingPackets.empty()) {
+ DLOG(VERBOSE) << "Returning PIPE_ERROR_AGAIN, outgoing="
+ << mOutgoingPackets.size();
+ return PIPE_ERROR_AGAIN;
+ }
+
+ int bytesWritten = 0;
+ for (int i = 0; i < numBuffers && !mOutgoingPackets.empty(); ++i) {
+ size_t bufferWriteOffset = 0;
+ AndroidPipeBuffer& buffer = buffers[i];
+
+ while (!mOutgoingPackets.empty() && bufferWriteOffset != buffer.size) {
+ OutgoingPacket& packet = mOutgoingPackets.front();
+
+ packet.copyToBuffer(buffers[i], &bufferWriteOffset);
+
+ if (packet.complete()) {
+ DLOG(VERBOSE) << "Packet send complete, " << packet.data.size()
+ << " bytes";
+ mOutgoingPackets.pop_front();
+ }
+ }
+
+ assert(bytesWritten + bufferWriteOffset < INT32_MAX);
+ bytesWritten += int(bufferWriteOffset);
+ }
+
+ DLOG(VERBOSE) << "writeBuffers complete, " << bytesWritten << " bytes";
+ return bytesWritten;
+}
+
+unsigned AndroidAsyncMessagePipe::onGuestPoll() const {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ // Note that in/out is in the context of the guest, so it's "out" of the
+ // guest OS.
+
+ // If we're partially done reading data, complete that first.
+ if (mIncomingPacket && !mIncomingPacket->complete()) {
+ return PIPE_POLL_OUT;
+ }
+
+ return !mOutgoingPackets.empty() ? PIPE_POLL_IN : PIPE_POLL_OUT;
+}
+
+AndroidAsyncMessagePipe::OutgoingPacket::OutgoingPacket(
+ std::vector<uint8_t>&& packetData)
+ : data(std::move(packetData)) {
+ CHECK(packetData.size() < size_t(UINT32_MAX))
+ << "Message too large, " << data.size()
+ << " should be < UINT32_MAX";
+}
+
+AndroidAsyncMessagePipe::OutgoingPacket::OutgoingPacket(base::Stream* stream) {
+ offset = size_t(stream->getBe64());
+
+ const std::string dataStr = stream->getString();
+ data = std::vector<uint8_t>(dataStr.begin(), dataStr.end());
+}
+
+bool AndroidAsyncMessagePipe::OutgoingPacket::complete() const {
+ return offset == length();
+}
+
+void AndroidAsyncMessagePipe::OutgoingPacket::copyToBuffer(
+ AndroidPipeBuffer& buffer,
+ size_t* writeOffset) {
+ assert(*writeOffset < buffer.size);
+
+ size_t currentWriteOffset = *writeOffset;
+ size_t bytesAvailable = buffer.size - currentWriteOffset;
+
+ // Copy the header, send messageLength in little-endian order.
+ const uint32_t messageLength = static_cast<uint32_t>(data.size());
+ while (bytesAvailable && offset < sizeof(messageLength)) {
+ buffer.data[currentWriteOffset++] =
+ (messageLength >> (offset++ * 8)) & 0xFF;
+ --bytesAvailable;
+ }
+
+ // Copy the data.
+ const size_t maxWrite = std::min(length() - offset, bytesAvailable);
+ if (maxWrite > 0) {
+ memcpy(buffer.data + currentWriteOffset,
+ data.data() + offset - sizeof(messageLength), maxWrite);
+ currentWriteOffset += maxWrite;
+ offset += maxWrite;
+ }
+
+ DLOG(VERBOSE) << "copyToBuffer " << currentWriteOffset - *writeOffset
+ << " bytes";
+ *writeOffset = currentWriteOffset;
+}
+
+void AndroidAsyncMessagePipe::OutgoingPacket::serialize(
+ base::Stream* stream) const {
+ stream->putBe64(offset);
+ stream->putString(reinterpret_cast<const char*>(data.data()), data.size());
+}
+
+AndroidAsyncMessagePipe::IncomingPacket::IncomingPacket(base::Stream* stream) {
+ headerBytesRead = size_t(stream->getBe64());
+ messageLength = stream->getBe32();
+
+ const std::string dataStr = stream->getString();
+ data = std::vector<uint8_t>(dataStr.begin(), dataStr.end());
+}
+
+bool AndroidAsyncMessagePipe::IncomingPacket::lengthKnown() const {
+ return headerBytesRead == sizeof(uint32_t);
+}
+
+base::Optional<size_t> AndroidAsyncMessagePipe::IncomingPacket::bytesRemaining()
+ const {
+ if (!lengthKnown()) {
+ return {};
+ }
+
+ assert(data.size() <= size_t(messageLength));
+ return messageLength - uint32_t(data.size());
+}
+
+bool AndroidAsyncMessagePipe::IncomingPacket::complete() const {
+ auto remaining = bytesRemaining();
+ return remaining && remaining.value() == 0;
+}
+
+size_t AndroidAsyncMessagePipe::IncomingPacket::copyFromBuffer(
+ const AndroidPipeBuffer& buffer,
+ size_t* readOffset) {
+ size_t bytesRead = 0;
+ size_t currentReadOffset = *readOffset;
+
+ // Read the header first.
+ while (currentReadOffset < buffer.size && !lengthKnown()) {
+ // messageLength is read in little-endian order.
+ messageLength |= uint32_t(buffer.data[currentReadOffset++])
+ << (headerBytesRead * 8);
+ ++bytesRead;
+ ++headerBytesRead;
+
+ DLOG_IF(VERBOSE, lengthKnown())
+ << "Packet length known: " << messageLength;
+ }
+
+ // If the length isn't known at this point, currentReadOffset must equal
+ // buffer.size. If not, bytesRemaining().value() will assert.
+ if (currentReadOffset < buffer.size && !complete()) {
+ const size_t maxRead = std::min(buffer.size - currentReadOffset,
+ bytesRemaining().value());
+ const uint8_t* readStart = buffer.data + currentReadOffset;
+ data.insert(data.end(), readStart, readStart + maxRead);
+
+ bytesRead += maxRead;
+ currentReadOffset += maxRead;
+ }
+
+ DLOG(VERBOSE) << "copyFromBuffer " << currentReadOffset - *readOffset
+ << " bytes";
+ *readOffset = currentReadOffset;
+
+ return bytesRead;
+}
+
+void AndroidAsyncMessagePipe::IncomingPacket::serialize(
+ base::Stream* stream) const {
+ stream->putBe64(headerBytesRead);
+ stream->putBe32(messageLength);
+ stream->putString(reinterpret_cast<const char*>(data.data()), data.size());
+}
+
+class SimpleAndroidAsyncMessagePipe : public AndroidAsyncMessagePipe {
+public:
+ class Service : public AndroidAsyncMessagePipe::Service<
+ SimpleAndroidAsyncMessagePipe> {
+ public:
+ Service(const char* serviceName,
+ OnMessageCallbackFunction onMessageCallback)
+ : AndroidAsyncMessagePipe::Service<SimpleAndroidAsyncMessagePipe>(
+ serviceName),
+ mOnMessageCallback(onMessageCallback) {}
+
+ OnMessageCallbackFunction mOnMessageCallback;
+ };
+
+ SimpleAndroidAsyncMessagePipe(AndroidPipe::Service* service,
+ PipeArgs&& pipeArgs)
+ : AndroidAsyncMessagePipe(service, std::move(pipeArgs)),
+ mService(static_cast<Service*>(service)) {
+ AsyncMessagePipeHandle handle = getHandle();
+ Service* simpleService = mService;
+ mOnSend = [simpleService, handle](std::vector<uint8_t>&& data) {
+ auto pipeRef = simpleService->getPipe(handle);
+ if (pipeRef) {
+ pipeRef.value().pipe->send(std::move(data));
+ }
+ };
+ }
+
+ void onMessage(const std::vector<uint8_t>& data) override {
+ mService->mOnMessageCallback(data, mOnSend);
+ }
+
+private:
+ Service* const mService;
+ PipeSendFunction mOnSend;
+};
+
+void registerSimpleAndroidAsyncMessagePipeService(
+ const char* serviceName,
+ OnMessageCallbackFunction onMessageCallback) {
+ AndroidPipe::Service::add(new SimpleAndroidAsyncMessagePipe::Service(
+ serviceName, onMessageCallback));
+}
+
+} // namespace android
diff --git a/android/android-emu/android/emulation/AndroidAsyncMessagePipe.h b/android/android-emu/android/emulation/AndroidAsyncMessagePipe.h
new file mode 100644
index 0000000000..698b2e6872
--- /dev/null
+++ b/android/android-emu/android/emulation/AndroidAsyncMessagePipe.h
@@ -0,0 +1,283 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "android/base/Log.h"
+#include "android/base/Optional.h"
+#include "android/base/synchronization/Lock.h"
+#include "android/emulation/AndroidPipe.h"
+
+#include <array>
+#include <functional>
+#include <list>
+#include <memory>
+#include <mutex>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+// This is a utility class that can help implement message-based remote calls
+// between the host and guest, with optional out-of-band responses.
+//
+// Usage:
+// 1. Inherit AndroidMessagePipe, and implement OnMessage to receive callbacks
+// when messages are received.
+// 2. Call Send(data) to send a response to the client.
+//
+// VERY IMPORTANT: this function runs on a QEMU's CPU thread while BQL is
+// locked. This means the OnMessage must be quick, if any complex operation must
+// be done do it on another thread and call send(data) from that thread.
+//
+// 3. Register the service
+// void registerMyXYZService() {
+// android::AndroidPipe::Service::add(new
+// android::AndroidAsyncMessagePipe::Service<YourPipe>("MyXYZService");
+// }
+//
+// AndroidAsyncMessagePipe implements a simple packet-based protocol on top of
+// qemu pipe service. The length of each packet is encoded as a little-endian
+// uint32 immediately before the message:
+//
+// <uint32 length> <length bytes of data>
+//
+// (Little-endian is for historical reasons for compatibility with
+// AndroidMessagePipe-based pipes)
+//
+//
+// To enable async operations, AndroidAsyncMessagePipe allows holding a
+// reference to a pipe using AsyncMessagePipeHandle. To get a handle, call
+// AndroidAsyncMessagePipe::getHandle().
+//
+// To get a pipe instance back again with a handle, call
+// AndroidAsyncMessagePipe::Service<PipeType>>::getPipe(handle), which will
+// return the pipe if it is valid, or nullopt_t if it has already been
+// destroyed. This is returned in the form of a PipeRef, which holds a lock
+// on the pipe until it goes out of scope.
+//
+// AsyncMessagePipeHandle has the unique property that it also persists snapshot
+// save and restore, so it can be used to store persistent data across
+// snapshot sessions.
+
+namespace android {
+
+struct AsyncMessagePipeHandle {
+ int id = -1;
+
+ bool isValid() const { return id >= 0; }
+};
+
+class AndroidAsyncMessagePipe : public AndroidPipe {
+public:
+ struct PipeArgs {
+ AsyncMessagePipeHandle handle;
+ void* hwPipe;
+ const char* args;
+ base::Stream* loadStream;
+ std::function<void(AsyncMessagePipeHandle)> deleter;
+ };
+
+ //
+ // Pipe Service
+ //
+
+ template <typename PipeType>
+ class Service : public AndroidPipe::Service {
+ public:
+ Service(const char* serviceName) : AndroidPipe::Service(serviceName) {}
+
+ bool canLoad() const override { return true; }
+
+ virtual AndroidPipe* load(void* hwPipe,
+ const char* args,
+ base::Stream* stream) final {
+ base::AutoLock lock(mLock);
+ AsyncMessagePipeHandle handle;
+ handle.id = static_cast<int>(stream->getBe32());
+ return createPipe(handle, hwPipe, args, stream);
+ }
+
+ virtual AndroidPipe* create(void* hwPipe, const char* args) final {
+ base::AutoLock lock(mLock);
+ AsyncMessagePipeHandle handle = nextPipeHandle();
+ return createPipe(handle, hwPipe, args, nullptr);
+ }
+
+ // Called once per whole vm save/load operation.
+ virtual void preSave(base::Stream* stream) override {
+ stream->putBe32(mNextId);
+ }
+
+ virtual void preLoad(base::Stream* stream) override {
+ mNextId = stream->getBe32();
+ }
+
+ virtual void savePipe(AndroidPipe* pipe,
+ android::base::Stream* stream) override {
+ auto derivedPipe = static_cast<PipeType*>(pipe);
+ stream->putBe32(static_cast<uint32_t>(derivedPipe->getHandle().id));
+ AndroidPipe::Service::savePipe(pipe, stream);
+ }
+
+ struct PipeRef {
+ PipeType* const pipe;
+ base::AutoLock lock;
+ };
+
+ base::Optional<PipeRef> getPipe(AsyncMessagePipeHandle handle) {
+ base::AutoLock lock(mLock);
+ const auto it = mPipes.find(handle.id);
+ if (it == mPipes.end()) {
+ LOG(VERBOSE) << "getPipe could not find pipe id " << handle.id;
+ return {};
+ }
+
+ return PipeRef{it->second.get(), std::move(lock)};
+ }
+
+ private:
+ AndroidPipe* createPipe(AsyncMessagePipeHandle handle,
+ void* hwPipe,
+ const char* args,
+ base::Stream* stream) {
+ PipeArgs pipeArgs = {handle, hwPipe, args, stream,
+ std::bind(&Service::destroyPipe, this,
+ std::placeholders::_1)};
+ std::unique_ptr<PipeType> pipe(
+ new PipeType(this, std::move(pipeArgs)));
+ AndroidPipe* pipePtr = pipe.get();
+ mPipes[handle.id] = std::move(pipe);
+ return pipePtr;
+ }
+
+ void destroyPipe(AsyncMessagePipeHandle handle) {
+ base::AutoLock lock(mLock);
+ const auto it = mPipes.find(handle.id);
+ if (it == mPipes.end()) {
+ LOG(WARNING)
+ << "destroyPipe could not find pipe id " << handle.id;
+ return;
+ }
+
+ mPipes.erase(it);
+ }
+
+ AsyncMessagePipeHandle nextPipeHandle() {
+ AsyncMessagePipeHandle handle;
+ handle.id = mNextId++;
+ return handle;
+ }
+
+ base::Lock mLock;
+ int mNextId = 0;
+ std::unordered_map<int, std::unique_ptr<PipeType>> mPipes;
+ };
+
+ AndroidAsyncMessagePipe(AndroidPipe::Service* service, PipeArgs&& args);
+
+ void send(std::vector<uint8_t>&& data);
+ void send(const std::vector<uint8_t>& data);
+ virtual void onMessage(const std::vector<uint8_t>& data) = 0;
+
+ void onSave(base::Stream* stream) override;
+ virtual void onLoad(base::Stream* stream);
+
+ AsyncMessagePipeHandle getHandle() { return mHandle; }
+
+private:
+ bool allowRead() const;
+
+ int readBuffers(const AndroidPipeBuffer* buffers, int numBuffers);
+ int writeBuffers(AndroidPipeBuffer* buffers, int numBuffers);
+
+ void onGuestClose(PipeCloseReason reason) final { mDeleter(mHandle); }
+ unsigned onGuestPoll() const final;
+ void onGuestWantWakeOn(int flags) final {}
+
+ // Rename onGuestRecv/onGuestSend to be in the context of the host.
+ int onGuestRecv(AndroidPipeBuffer* buffers, int numBuffers) final {
+ return writeBuffers(buffers, numBuffers);
+ }
+
+ int onGuestSend(const AndroidPipeBuffer* buffers, int numBuffers) final {
+ return readBuffers(buffers, numBuffers);
+ }
+
+ struct OutgoingPacket {
+ size_t offset = 0;
+ std::vector<uint8_t> data;
+
+ OutgoingPacket(std::vector<uint8_t>&& data);
+ explicit OutgoingPacket(base::Stream* stream);
+
+ size_t length() const { return sizeof(uint32_t) + data.size(); }
+ bool complete() const;
+
+ // Copy the packet contents to the AndroidPipeBuffer, updating
+ // writeOffset based on how much was written.
+ void copyToBuffer(AndroidPipeBuffer& buffer, size_t* writeOffset);
+
+ // Serialize to a stream.
+ void serialize(base::Stream* stream) const;
+ };
+
+ struct IncomingPacket {
+ size_t headerBytesRead = 0;
+ uint32_t messageLength = 0;
+ std::vector<uint8_t> data;
+
+ IncomingPacket() = default;
+ explicit IncomingPacket(base::Stream* stream);
+
+ bool lengthKnown() const;
+ base::Optional<size_t> bytesRemaining() const;
+ bool complete() const;
+
+ // Read the packet data from an AndroidPipeBuffer, updating the
+ // readOffset based on how much was written.
+ //
+ // Returns the number of bytes read.
+ size_t copyFromBuffer(const AndroidPipeBuffer& buffer,
+ size_t* readOffset);
+
+ // Serialize to a stream.
+ void serialize(base::Stream* stream) const;
+ };
+
+ mutable std::recursive_mutex mMutex;
+ const AsyncMessagePipeHandle mHandle;
+ const std::function<void(AsyncMessagePipeHandle)> mDeleter;
+
+ base::Optional<IncomingPacket> mIncomingPacket;
+ std::list<OutgoingPacket> mOutgoingPackets;
+};
+
+typedef std::function<void(std::vector<uint8_t>&&)> PipeSendFunction;
+typedef std::function<void(const std::vector<uint8_t>&,
+ const PipeSendFunction& func)>
+ OnMessageCallbackFunction;
+
+// Helper to register a simple message pipe service, passing a lambda as an
+// onMessage handler.
+//
+// Takes a callback with this signature:
+// void onMessageCallback(const std::vector<uint8_t>& data,
+// sendFunction(std::vector<uint8_t>&& response));
+//
+// When ready to send a callback, simply invoke sendFunction, which works from
+// within the onMessageCallback or from any other thread.
+void registerSimpleAndroidAsyncMessagePipeService(
+ const char* serviceName,
+ OnMessageCallbackFunction onMessageCallback);
+
+} // namespace android
diff --git a/android/android-emu/android/emulation/AndroidAsyncMessagePipe_unittest.cpp b/android/android-emu/android/emulation/AndroidAsyncMessagePipe_unittest.cpp
new file mode 100644
index 0000000000..74dc7b311f
--- /dev/null
+++ b/android/android-emu/android/emulation/AndroidAsyncMessagePipe_unittest.cpp
@@ -0,0 +1,405 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/emulation/AndroidAsyncMessagePipe.h"
+#include "android/base/ArraySize.h"
+#include "android/base/async/ThreadLooper.h"
+#include "android/base/files/MemStream.h"
+#include "android/base/system/System.h"
+#include "android/base/testing/ResultMatchers.h"
+#include "android/base/testing/TestEvent.h"
+#include "android/base/testing/TestLooper.h"
+#include "android/emulation/VmLock.h"
+#include "android/emulation/android_pipe_device.h"
+#include "android/emulation/hostpipe/HostGoldfishPipe.h"
+#include "android/emulation/testing/TestVmLock.h"
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include <atomic>
+#include <chrono>
+#include <condition_variable>
+#include <deque>
+#include <mutex>
+#include <thread>
+
+using android::base::arraySize;
+using android::base::IsOk;
+using testing::ElementsAreArray;
+using testing::ElementsAre;
+using testing::StrEq;
+
+namespace android {
+
+class AndroidAsyncMessagePipeTest : public ::testing::Test {
+protected:
+ void SetUp() override {
+ AndroidPipe::Service::resetAll();
+ mDevice = HostGoldfishPipeDevice::get();
+ mLooper = std::unique_ptr<base::TestLooper>(new base::TestLooper());
+ AndroidPipe::initThreadingForTest(TestVmLock::getInstance(),
+ mLooper.get());
+ }
+
+ void TearDown() override {
+ AndroidPipe::Service::resetAll();
+ // mDevice is singleton, no need to tear down
+ // Reset initThreading to avoid using our looper.
+ AndroidPipe::initThreading(TestVmLock::getInstance());
+ mLooper.reset();
+ }
+
+ void writePacket(void* pipe, const std::vector<uint8_t>& data) {
+ const uint32_t payloadSize = static_cast<uint32_t>(data.size());
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->write(pipe, &payloadSize, sizeof(uint32_t)));
+
+ EXPECT_THAT(mDevice->write(pipe, data), IsOk());
+ }
+
+ std::vector<uint8_t> readPacket(void* pipe) {
+ uint32_t responseSize = 0;
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->read(pipe, &responseSize, sizeof(uint32_t)));
+
+ auto result = mDevice->read(pipe, responseSize);
+ EXPECT_TRUE(result.ok());
+ if (result.ok()) {
+ std::vector<uint8_t> data = result.unwrap();
+ EXPECT_EQ(data.size(), responseSize);
+ return data;
+ } else {
+ return std::vector<uint8_t>();
+ }
+ }
+
+ void pumpLooperUntilEvent(TestEvent& event) {
+ constexpr base::Looper::Duration kTimeoutMs = 15000; // 15 seconds.
+ constexpr base::Looper::Duration kStep = 50; // 50 ms.
+
+ base::Looper::Duration current = mLooper->nowMs();
+ const base::Looper::Duration deadline = mLooper->nowMs() + kTimeoutMs;
+
+ while (!event.isSignaled() && current + kStep < deadline) {
+ mLooper->runOneIterationWithDeadlineMs(current + kStep);
+ current = mLooper->nowMs();
+ }
+
+ event.wait();
+ }
+
+ void snapshotSave(void* pipe, base::Stream* stream) {
+ RecursiveScopedVmLock lock;
+ auto cStream = reinterpret_cast<Stream*>(stream);
+ android_pipe_guest_pre_save(cStream);
+ android_pipe_guest_save(pipe, cStream);
+ android_pipe_guest_post_save(cStream);
+ }
+
+ void* snapshotLoad(base::Stream* stream) {
+ RecursiveScopedVmLock lock;
+ auto cStream = reinterpret_cast<Stream*>(stream);
+ android_pipe_guest_pre_load(cStream);
+ void* pipe = mDevice->load(stream);
+ EXPECT_NE(pipe, nullptr);
+ android_pipe_guest_post_load(cStream);
+ return pipe;
+ }
+
+ HostGoldfishPipeDevice* mDevice = nullptr;
+ std::unique_ptr<base::TestLooper> mLooper;
+};
+
+constexpr uint8_t kSimplePayload[] = "Hello World";
+constexpr uint8_t kSimpleResponse[] = "response";
+
+class SimpleMessagePipe : public AndroidAsyncMessagePipe {
+public:
+ SimpleMessagePipe(AndroidPipe::Service* service, PipeArgs&& pipeArgs)
+ : AndroidAsyncMessagePipe(service, std::move(pipeArgs)) {}
+
+ void onMessage(const std::vector<uint8_t>& data) override {
+ EXPECT_THAT(data, ElementsAreArray(kSimplePayload));
+
+ const size_t bytes = arraySize(kSimpleResponse);
+ std::vector<uint8_t> output(kSimpleResponse, kSimpleResponse + bytes);
+ send(std::move(output));
+ }
+};
+
+TEST_F(AndroidAsyncMessagePipeTest, Basic) {
+ AndroidPipe::Service::add(
+ new AndroidAsyncMessagePipe::Service<SimpleMessagePipe>(
+ "TestPipe"));
+
+ auto pipe = mDevice->connect("TestPipe");
+
+ const uint32_t payloadSize = arraySize(kSimplePayload);
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->write(pipe, &payloadSize, sizeof(uint32_t)));
+
+ std::vector<uint8_t> toSend(std::begin(kSimplePayload),
+ std::end(kSimplePayload));
+ EXPECT_THAT(mDevice->write(pipe, toSend), IsOk());
+
+ uint32_t responseSize = 0;
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->read(pipe, (void*)&responseSize, sizeof(uint32_t)));
+ EXPECT_EQ(responseSize, arraySize(kSimpleResponse));
+
+ EXPECT_THAT(mDevice->read(pipe, responseSize),
+ IsOk(ElementsAreArray(kSimpleResponse)));
+ mDevice->close(pipe);
+}
+
+TEST_F(AndroidAsyncMessagePipeTest, Lambda) {
+ auto onMessage = [&](const std::vector<uint8_t>& data,
+ PipeSendFunction sendCallback) {
+ EXPECT_THAT(data, ElementsAreArray(kSimplePayload));
+
+ const size_t bytes = arraySize(kSimpleResponse);
+ std::vector<uint8_t> output(kSimpleResponse, kSimpleResponse + bytes);
+ sendCallback(std::move(output));
+ };
+
+ registerSimpleAndroidAsyncMessagePipeService("TestPipeLambda", onMessage);
+ auto pipe = mDevice->connect("TestPipeLambda");
+
+ const uint32_t payloadSize = arraySize(kSimplePayload);
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->write(pipe, &payloadSize, sizeof(uint32_t)));
+
+ std::vector<uint8_t> toSend(std::begin(kSimplePayload),
+ std::end(kSimplePayload));
+ EXPECT_THAT(mDevice->write(pipe, toSend), IsOk());
+
+ uint32_t responseSize = 0;
+ EXPECT_EQ(sizeof(uint32_t),
+ mDevice->read(pipe, (void*)&responseSize, sizeof(uint32_t)));
+ EXPECT_EQ(responseSize, arraySize(kSimpleResponse));
+
+ EXPECT_THAT(mDevice->read(pipe, responseSize),
+ IsOk(ElementsAreArray(kSimpleResponse)));
+ mDevice->close(pipe);
+}
+
+TEST_F(AndroidAsyncMessagePipeTest, OutOfBand) {
+ std::vector<uint8_t> lastMessage;
+ PipeSendFunction performSend;
+
+ auto onMessage = [&](const std::vector<uint8_t>& data,
+ PipeSendFunction sendCallback) {
+ lastMessage = data;
+ performSend = sendCallback;
+ };
+
+ registerSimpleAndroidAsyncMessagePipeService("OutOfBand", onMessage);
+ auto pipe = mDevice->connect("OutOfBand");
+
+ writePacket(pipe, {1, 2, 3});
+ EXPECT_THAT(lastMessage, ElementsAre(1, 2, 3));
+ EXPECT_EQ(mDevice->poll(pipe), PIPE_POLL_OUT);
+
+ const std::vector<uint8_t> kResponse = {5, 6, 7};
+ performSend(std::vector<uint8_t>(kResponse));
+ EXPECT_EQ(mDevice->poll(pipe), PIPE_POLL_IN);
+ EXPECT_THAT(readPacket(pipe), ElementsAreArray(kResponse));
+
+ // Now try sending a second packet.
+ EXPECT_EQ(mDevice->poll(pipe), PIPE_POLL_OUT);
+
+ const std::vector<uint8_t> kResponse2 = {8, 9, 10, 11, 12};
+ performSend(std::vector<uint8_t>(kResponse2));
+ EXPECT_EQ(mDevice->poll(pipe), PIPE_POLL_IN);
+ EXPECT_THAT(readPacket(pipe), ElementsAreArray(kResponse2));
+
+ mDevice->close(pipe);
+}
+
+class MultithreadedEchoMessagePipe : public AndroidAsyncMessagePipe {
+public:
+ MultithreadedEchoMessagePipe(AndroidPipe::Service* service,
+ PipeArgs&& pipeArgs)
+ : AndroidAsyncMessagePipe(service, std::move(pipeArgs)),
+ mWorker(&MultithreadedEchoMessagePipe::threadMain, this) {}
+ ~MultithreadedEchoMessagePipe() {
+ mQuit = true;
+ mWorker.join();
+ }
+
+ void onMessage(const std::vector<uint8_t>& data) override {
+ base::AutoLock lock(mLock);
+ mMessages.push_back(data);
+ }
+
+private:
+ void threadMain() {
+ while (!mQuit) {
+ base::System::get()->sleepMs(100);
+ {
+ base::AutoLock lock(mLock);
+ if (!mMessages.empty()) {
+ send(std::move(mMessages.front()));
+ mMessages.pop_front();
+ }
+ }
+ }
+ }
+
+ base::Lock mLock;
+ std::deque<std::vector<uint8_t>> mMessages;
+ std::atomic<bool> mQuit{false};
+ std::thread mWorker;
+};
+
+TEST_F(AndroidAsyncMessagePipeTest, Multithreaded) {
+ AndroidPipe::Service::add(
+ new AndroidAsyncMessagePipe::Service<MultithreadedEchoMessagePipe>(
+ "Multithreaded"));
+ auto pipe = mDevice->connect("Multithreaded");
+
+ std::deque<std::vector<uint8_t>> packets;
+ TestEvent event;
+
+ mDevice->setWakeCallback(pipe, [&](int wakes) {
+ EXPECT_EQ(wakes, PIPE_WAKE_READ);
+ EXPECT_THAT(readPacket(pipe), ElementsAreArray(packets.front()));
+ packets.pop_front();
+ event.signal();
+ });
+
+ auto sendData = [&](std::vector<uint8_t> data) {
+ {
+ // Wake callback is called under the VM lock, protect packets with
+ // it so we can safely access it inside the callback.
+ RecursiveScopedVmLock lock;
+ packets.push_back(data);
+ }
+ writePacket(pipe, std::move(data));
+ };
+
+ sendData({1, 2, 3});
+ pumpLooperUntilEvent(event);
+
+ sendData({2, 3, 4});
+ sendData({5, 6, 7});
+ pumpLooperUntilEvent(event);
+ pumpLooperUntilEvent(event);
+
+ mDevice->close(pipe);
+}
+
+TEST_F(AndroidAsyncMessagePipeTest, SendAfterDestroy) {
+ std::vector<uint8_t> lastMessage;
+ PipeSendFunction performSend;
+
+ auto onMessage = [&](const std::vector<uint8_t>& data,
+ PipeSendFunction sendCallback) {
+ lastMessage = data;
+ performSend = sendCallback;
+ };
+
+ registerSimpleAndroidAsyncMessagePipeService("AfterDestroy", onMessage);
+ auto pipe = mDevice->connect("AfterDestroy");
+
+ writePacket(pipe, {1, 2, 3});
+ EXPECT_THAT(lastMessage, ElementsAre(1, 2, 3));
+ mDevice->close(pipe);
+
+ const std::vector<uint8_t> kResponse = {5, 6, 7};
+ performSend(std::vector<uint8_t>(kResponse));
+}
+
+TEST_F(AndroidAsyncMessagePipeTest, Snapshot) {
+ std::vector<uint8_t> lastMessage;
+ PipeSendFunction performSend;
+
+ auto onMessage = [&](const std::vector<uint8_t>& data,
+ PipeSendFunction sendCallback) {
+ lastMessage = data;
+ performSend = sendCallback;
+ };
+
+ registerSimpleAndroidAsyncMessagePipeService("Snapshot", onMessage);
+ auto pipe = mDevice->connect("Snapshot");
+
+ writePacket(pipe, {1, 2, 3});
+ EXPECT_THAT(lastMessage, ElementsAre(1, 2, 3));
+
+ const std::vector<uint8_t> kResponse = {5, 6, 7};
+ performSend(std::vector<uint8_t>(kResponse));
+
+ base::MemStream snapshotStream;
+ snapshotSave(pipe, &snapshotStream);
+ mDevice->close(pipe);
+
+ auto restoredPipe = snapshotLoad(&snapshotStream);
+ EXPECT_EQ(mDevice->poll(restoredPipe), PIPE_POLL_IN);
+ EXPECT_THAT(readPacket(restoredPipe), ElementsAreArray(kResponse));
+}
+
+// Verifies that getPipe can restore the pipe after snapshot load.
+TEST_F(AndroidAsyncMessagePipeTest, SnapshotGetPipe) {
+ auto pipeService =
+ new AndroidAsyncMessagePipe::Service<SimpleMessagePipe>("TestPipe");
+ AndroidPipe::Service::add(pipeService);
+
+ auto pipe = mDevice->connect("TestPipe");
+
+ AsyncMessagePipeHandle handle = static_cast<AndroidAsyncMessagePipe*>(
+ static_cast<AndroidPipe*>(pipe))
+ ->getHandle();
+
+ base::MemStream snapshotStream;
+ snapshotSave(pipe, &snapshotStream);
+ mDevice->close(pipe);
+
+ auto restoredPipe = snapshotLoad(&snapshotStream);
+ SimpleMessagePipe* derivedRestoredPipe = static_cast<SimpleMessagePipe*>(
+ static_cast<AndroidPipe*>(restoredPipe));
+
+ auto pipeRefOpt = pipeService->getPipe(handle);
+ ASSERT_TRUE(pipeRefOpt.hasValue());
+ EXPECT_EQ(pipeRefOpt.value().pipe, derivedRestoredPipe);
+}
+
+// Verifies that sendCallback remains valid and works after snapshot load.
+TEST_F(AndroidAsyncMessagePipeTest, SnapshotSendCallback) {
+ std::vector<uint8_t> lastMessage;
+ PipeSendFunction performSend;
+
+ auto onMessage = [&](const std::vector<uint8_t>& data,
+ PipeSendFunction sendCallback) {
+ lastMessage = data;
+ performSend = sendCallback;
+ };
+
+ registerSimpleAndroidAsyncMessagePipeService("SnapshotSend", onMessage);
+ auto pipe = mDevice->connect("SnapshotSend");
+
+ writePacket(pipe, {1, 2, 3});
+ EXPECT_THAT(lastMessage, ElementsAre(1, 2, 3));
+
+ base::MemStream snapshotStream;
+ snapshotSave(pipe, &snapshotStream);
+ mDevice->close(pipe);
+
+ auto restoredPipe = snapshotLoad(&snapshotStream);
+ const std::vector<uint8_t> kResponse = {5, 6, 7};
+ performSend(std::vector<uint8_t>(kResponse));
+ EXPECT_THAT(readPacket(restoredPipe), ElementsAreArray(kResponse));
+}
+
+} // namespace android
diff --git a/android/android-emu/android/emulation/AndroidPipe.cpp b/android/android-emu/android/emulation/AndroidPipe.cpp
index 0dde2ab30c..608173bd45 100644
--- a/android/android-emu/android/emulation/AndroidPipe.cpp
+++ b/android/android-emu/android/emulation/AndroidPipe.cpp
@@ -17,6 +17,7 @@
#include "android/base/memory/LazyInstance.h"
#include "android/base/Optional.h"
#include "android/base/StringFormat.h"
+#include "android/base/files/MemStream.h"
#include "android/base/synchronization/Lock.h"
#include "android/base/threads/ThreadStore.h"
#include "android/crashreport/CrashReporter.h"
@@ -61,6 +62,7 @@ using OptionalString = android::base::Optional<std::string>;
using Service = android::AndroidPipe::Service;
using ServiceList = std::vector<std::unique_ptr<Service>>;
using VmLock = android::VmLock;
+using android::base::MemStream;
using android::base::StringFormat;
using android::crashreport::CrashReporter;
@@ -80,6 +82,10 @@ namespace android {
namespace {
+static bool isPipeOptional(android::base::StringView name) {
+ return name == "OffworldPipe";
+}
+
// Write an optional string |str| to |stream|. |str| can be null. Use
// readOptionalString() to read it back later.
static void writeOptionalString(BaseStream* stream, const char* str) {
@@ -455,6 +461,11 @@ void AndroidPipe::initThreading(VmLock* vmLock) {
sGlobals->pipeWaker.init(vmLock);
}
+// static
+void AndroidPipe::initThreadingForTest(VmLock* vmLock, base::Looper* looper) {
+ sGlobals->pipeWaker.init(vmLock, looper);
+}
+
AndroidPipe::~AndroidPipe() {
DD("%s: for hwpipe=%p (host %p '%s')", __FUNCTION__, mHwPipe, this,
mService->name().c_str());
@@ -508,7 +519,6 @@ void AndroidPipe::abortPendingOperation() {
sGlobals->pipeWaker.abortPending(mHwPipe);
}
-// static
void AndroidPipe::saveToStream(BaseStream* stream) {
// First, write service name.
if (mService == &sGlobals->connectorService) {
@@ -519,16 +529,20 @@ void AndroidPipe::saveToStream(BaseStream* stream) {
stream->putByte(1);
stream->putString(mService->name());
}
- writeOptionalString(stream, mArgs.c_str());
+
+ MemStream pipeStream;
+ writeOptionalString(&pipeStream, mArgs.c_str());
// Save pipe-specific state now.
if (mService->canLoad()) {
- onSave(stream);
+ mService->savePipe(this, &pipeStream);
}
// Save the pending wake or close operations as well.
const int pendingFlags = sGlobals->pipeWaker.getPendingFlags(mHwPipe);
- stream->putBe32(pendingFlags);
+ pipeStream.putBe32(pendingFlags);
+
+ pipeStream.save(stream);
}
// static
@@ -536,10 +550,14 @@ AndroidPipe* AndroidPipe::loadFromStream(BaseStream* stream,
void* hwPipe,
char* pForceClose) {
Service* service = sGlobals->loadServiceByName(stream);
+ // Always load the pipeStream, it allows us to safely skip loading streams.
+ MemStream pipeStream;
+ pipeStream.load(stream);
+
if (!service) {
return nullptr;
}
- return loadPipeFromStreamCommon(stream, hwPipe, service, pForceClose);
+ return loadPipeFromStreamCommon(&pipeStream, hwPipe, service, pForceClose);
}
// static
@@ -550,14 +568,18 @@ AndroidPipe* AndroidPipe::loadFromStreamLegacy(BaseStream* stream,
unsigned char* pClosed,
char* pForceClose) {
Service* service = sGlobals->loadServiceByName(stream);
+ // Always load the pipeStream, it allows us to safely skip loading streams.
+ MemStream pipeStream;
+ pipeStream.load(stream);
+
if (!service) {
return nullptr;
}
- *pChannel = stream->getBe64();
- *pWakes = stream->getByte();
- *pClosed = stream->getByte();
+ *pChannel = pipeStream.getBe64();
+ *pWakes = pipeStream.getByte();
+ *pClosed = pipeStream.getByte();
- return loadPipeFromStreamCommon(stream, hwPipe, service, pForceClose);
+ return loadPipeFromStreamCommon(&pipeStream, hwPipe, service, pForceClose);
}
} // namespace android
@@ -587,6 +609,7 @@ void android_pipe_guest_close(void* internalPipe, PipeCloseReason reason) {
if (pipe) {
D("%s: host=%p [%s] reason=%d", __FUNCTION__, pipe, pipe->name(),
(int)reason);
+ pipe->abortPendingOperation();
pipe->onGuestClose(reason);
}
}
@@ -597,7 +620,12 @@ static void forEachServiceToStream(CStream* stream, Func&& func) {
bs->putBe16(android::sGlobals->services.size());
for (const auto& service : android::sGlobals->services) {
bs->putString(service->name());
- func(service.get(), bs);
+
+ // Write to the pipeStream first so that we know the length and can
+ // enable skipping loading specific pipes on load, see isPipeOptional.
+ MemStream pipeStream;
+ func(service.get(), &pipeStream);
+ pipeStream.save(bs);
}
}
@@ -615,10 +643,23 @@ static void forEachServiceFromStream(CStream* stream, Func&& func) {
const auto name = bs->getString();
servicePos = android::sGlobals->findServicePositionByName(
name.c_str(), servicePos + 1);
- assert(servicePos >= 0);
- const auto& service = services[servicePos];
- func(service.get(), bs);
- missingServices.erase(service.get());
+
+ // Always load the pipeStream, so that if the pipe is missing it does
+ // not corrupt the next pipe.
+ MemStream pipeStream;
+ pipeStream.load(bs);
+
+ if (servicePos >= 0) {
+ const auto& service = services[servicePos];
+ func(service.get(), &pipeStream);
+ missingServices.erase(service.get());
+ } else if (android::isPipeOptional(name)) {
+ D("%s: Skipping optional pipe %s\n", __FUNCTION__, name.c_str());
+ } else {
+ assert(false && "Service for snapshot pipe does not exist");
+ E("%s: Could not load pipe %s, service does not exist\n",
+ __FUNCTION__, name.c_str());
+ }
}
// Now call the same function for all services that weren't in the snapshot.
diff --git a/android/android-emu/android/emulation/AndroidPipe.h b/android/android-emu/android/emulation/AndroidPipe.h
index c45be582eb..b871aa4609 100644
--- a/android/android-emu/android/emulation/AndroidPipe.h
+++ b/android/android-emu/android/emulation/AndroidPipe.h
@@ -17,6 +17,12 @@
namespace android {
+namespace base {
+// Forward-declare looper here because it is only used by
+// initThreadingForTest.
+class Looper;
+} // namespace base
+
// AndroidPipe is a mostly-abstract base class for Android pipe connections.
// It's important to understand that most pipe operations (onGuestXXX methods)
// are performed with the global VM lock held.
@@ -67,6 +73,8 @@ public:
// state lock or not (if not, operations are queued).
static void initThreading(VmLock* vmLock);
+ static void initThreadingForTest(VmLock* lock, base::Looper* looper);
+
// A base class for all AndroidPipe services, which is in charge
// of creating new instances when a guest client connects to the
// service.
@@ -94,6 +102,12 @@ public:
virtual void preSave(android::base::Stream* stream) {}
virtual void postSave(android::base::Stream* stream) {}
+ // Called for each pipe, override to save additional information.
+ virtual void savePipe(AndroidPipe* pipe,
+ android::base::Stream* stream) {
+ pipe->onSave(stream);
+ }
+
// Returns true if loading pipe instances from a stream is
// supported. If true, the load() method will be called to load
// every pipe instance state from the stream, if false, the
diff --git a/android/android-emu/android/emulation/QemuMiscPipe.cpp b/android/android-emu/android/emulation/QemuMiscPipe.cpp
index a0f6aeb012..25a722acf2 100644
--- a/android/android-emu/android/emulation/QemuMiscPipe.cpp
+++ b/android/android-emu/android/emulation/QemuMiscPipe.cpp
@@ -59,6 +59,7 @@ static void qemuMiscPipeDecodeAndExecute(const std::vector<uint8_t>& input,
output[1]='K';
output[2]='\0';
printf("emulator: INFO: boot completed\n");
+ fflush(stdout);
guest_boot_completed = 1;
if (android_hw->test_quitAfterBootTimeOut > 0) {
gQAndroidVmOperations->vmShutdown();
diff --git a/android/android-emu/android/emulation/control/AdbInterface.cpp b/android/android-emu/android/emulation/control/AdbInterface.cpp
index 7e94bce143..469e5323ea 100755
--- a/android/android-emu/android/emulation/control/AdbInterface.cpp
+++ b/android/android-emu/android/emulation/control/AdbInterface.cpp
@@ -14,6 +14,8 @@
#include "android/emulation/control/AdbInterface.h"
+#include "android/avd/info.h"
+#include "android/avd/util.h"
#include "android/base/ArraySize.h"
#include "android/base/Log.h"
#include "android/base/Optional.h"
@@ -29,6 +31,7 @@
#include "android/emulation/AdbHostServer.h"
#include "android/emulation/ComponentVersion.h"
#include "android/emulation/ConfigDirs.h"
+#include "android/globals.h"
#include "android/utils/debug.h"
#include "android/utils/path.h"
#include "android/utils/sockets.h"
@@ -269,13 +272,38 @@ AdbCommand::AdbCommand(Looper* looper,
ResultCallback&& callback)
: mLooper(looper),
mResultCallback(std::move(callback)),
- mOutputFilePath(PathUtils::join(
- System::get()->getTempDir(),
- std::string("adbcommand").append(Uuid::generate().toString()))),
mWantOutput(want_output),
mTimeoutMs(timeoutMs) {
+
mCommand.push_back(adb_path);
+ const char* avdContentPath = nullptr;
+
+ std::string outputFolder;
+
+ if (android_avdInfo) {
+ avdContentPath = avdInfo_getContentPath(android_avdInfo);
+ }
+
+ if (avdContentPath) {
+ auto avdCmdDir =
+ PathUtils::join(
+ avdContentPath,
+ ANDROID_AVD_TMP_ADB_COMMAND_DIR);
+
+ if (path_mkdir_if_needed(avdCmdDir.c_str(), 0755) < 0) {
+ outputFolder = System::get()->getTempDir();
+ } else {
+ outputFolder = avdCmdDir;
+ }
+ } else {
+ outputFolder = System::get()->getTempDir();
+ }
+
+ mOutputFilePath =
+ PathUtils::join(outputFolder,
+ std::string("adbcommand").append(Uuid::generate().toString()));
+
// TODO: when run headless, the serial string won't be properly
// initialized, so make a best attempt by using -e. This should be updated
// when the headless emulator is given an AdbInterface reference.
@@ -309,34 +337,13 @@ void AdbCommand::taskDoneFunction(const OptionalAdbCommandResult& result) {
if (!mCancelled) {
mResultCallback(result);
}
- AutoLock lock(mLock);
mFinished = true;
- mCv.broadcastAndUnlock(&lock);
// This may invalidate this object and clean it up.
// DO NOT reference any internal state from this class after this
// point.
mTask.reset();
}
-bool AdbCommand::wait(System::Duration timeoutMs) {
- if (!mTask) {
- return true;
- }
-
- AutoLock lock(mLock);
- if (timeoutMs < 0) {
- mCv.wait(&lock, [this]() { return mFinished; });
- return true;
- }
-
- const auto deadlineUs = System::get()->getUnixTimeUs() + timeoutMs * 1000;
- while (!mFinished && System::get()->getUnixTimeUs() < deadlineUs) {
- mCv.timedWait(&mLock, deadlineUs);
- }
-
- return mFinished;
-}
-
void AdbCommand::taskFunction(OptionalAdbCommandResult* result) {
if (mCommand.empty() || mCommand.front().empty()) {
result->clear();
@@ -356,6 +363,9 @@ void AdbCommand::taskFunction(OptionalAdbCommandResult* result) {
if (command_ran) {
result->emplace(exit_code,
mWantOutput ? mOutputFilePath : std::string());
+ } else {
+ // Just in case (e.g. if the command got terminated on timeout).
+ path_delete_file(mOutputFilePath.c_str());
}
}
@@ -373,20 +383,5 @@ AdbCommandResult::~AdbCommandResult() {
}
}
-AdbCommandResult::AdbCommandResult(AdbCommandResult&& other)
- : exit_code(other.exit_code),
- output(std::move(other.output)),
- output_name(std::move(other.output_name)) {
- other.output_name.clear(); // make sure |other| won't delete it
-}
-
-AdbCommandResult& AdbCommandResult::operator=(AdbCommandResult&& other) {
- exit_code = other.exit_code;
- output = std::move(other.output);
- output_name = std::move(other.output_name);
- other.output_name.clear();
- return *this;
-}
-
} // namespace emulation
} // namespace android
diff --git a/android/android-emu/android/emulation/control/AdbInterface.h b/android/android-emu/android/emulation/control/AdbInterface.h
index a9e12c194e..a8dbfcf2d3 100644
--- a/android/android-emu/android/emulation/control/AdbInterface.h
+++ b/android/android-emu/android/emulation/control/AdbInterface.h
@@ -17,8 +17,6 @@
#include "android/base/Optional.h"
#include "android/base/StringView.h"
#include "android/base/async/Looper.h"
-#include "android/base/synchronization/ConditionVariable.h"
-#include "android/base/synchronization/Lock.h"
#include "android/base/system/System.h"
#include "android/base/threads/ParallelTask.h"
@@ -51,11 +49,11 @@ struct AdbCommandResult {
const std::string& outputName);
~AdbCommandResult();
- AdbCommandResult(AdbCommandResult&&);
- AdbCommandResult& operator=(AdbCommandResult&&);
private:
std::string output_name;
+
+ DISALLOW_COPY_ASSIGN_AND_MOVE(AdbCommandResult);
};
using OptionalAdbCommandResult = android::base::Optional<AdbCommandResult>;
@@ -136,11 +134,6 @@ public:
// Cancels the running command (has no effect if the command isn't running).
void cancel() { mCancelled = true; }
- // Block until the command finishes (and the done() callback returns), or
- // timeout expires. Returns |true| if command finished, or was canceled, or
- // wasn't even started (which should not happen), and |false| on timeout.
- bool wait(base::System::Duration timeoutMs = -1);
-
private:
AdbCommand(android::base::Looper* looper,
const std::string& adb_path,
@@ -162,9 +155,6 @@ private:
bool mCancelled = false;
bool mFinished = false;
int mTimeoutMs;
- // To signal the command completion.
- base::Lock mLock;
- base::ConditionVariable mCv;
};
// Builder that can be used by unit tests to inject different behaviors,
diff --git a/android/android-emu/android/emulation/control/ScreenCapturer_unittest.cpp b/android/android-emu/android/emulation/control/ScreenCapturer_unittest.cpp
index 219a739cfc..0379581dc1 100644
--- a/android/android-emu/android/emulation/control/ScreenCapturer_unittest.cpp
+++ b/android/android-emu/android/emulation/control/ScreenCapturer_unittest.cpp
@@ -177,6 +177,9 @@ public:
pixels.resize(0);
}
}
+ void snapshotOperationCallback(
+ android::snapshot::Snapshotter::Operation op,
+ android::snapshot::Snapshotter::Stage stage) {}
private:
bool mHasValidScreenshot = false;
bool mGuestPostedAFrame = false;
diff --git a/android/android-emu/android/emulation/control/sensors_agent.h b/android/android-emu/android/emulation/control/sensors_agent.h
index be0eb10142..03110be7a7 100644
--- a/android/android-emu/android/emulation/control/sensors_agent.h
+++ b/android/android-emu/android/emulation/control/sensors_agent.h
@@ -70,6 +70,9 @@ typedef struct QAndroidSensorsAgent {
// Sets the agent used to receive callbacks to used to track whether the
// state of the physical model is currently changing.
int (*setPhysicalStateAgent)(const struct QAndroidPhysicalStateAgent* agent);
+
+ // Advance the current time on the sensors agent.
+ void (*advanceTime)();
} QAndroidSensorsAgent;
ANDROID_END_HEADER
diff --git a/android/android-emu/android/emulation/control/vm_operations.h b/android/android-emu/android/emulation/control/vm_operations.h
index 4015a3bc43..e865d8f2cf 100644
--- a/android/android-emu/android/emulation/control/vm_operations.h
+++ b/android/android-emu/android/emulation/control/vm_operations.h
@@ -99,6 +99,9 @@ typedef struct QAndroidVmOperations {
bool (*snapshotDelete)(const char* name,
void* opaque,
LineConsumerCallback errConsumer);
+ bool (*snapshotRemap)(bool shared,
+ void* opaque,
+ LineConsumerCallback errConsumer);
// Sets a set of callback to listen for snapshot operations.
void (*setSnapshotCallbacks)(void* opaque,
diff --git a/android/android-emu/android/emulation/control/window_agent.h b/android/android-emu/android/emulation/control/window_agent.h
index 277f0aaae9..52eefe74d4 100644
--- a/android/android-emu/android/emulation/control/window_agent.h
+++ b/android/android-emu/android/emulation/control/window_agent.h
@@ -23,6 +23,7 @@ typedef enum {
WINDOW_MESSAGE_INFO,
WINDOW_MESSAGE_WARNING,
WINDOW_MESSAGE_ERROR,
+ WINDOW_MESSAGE_OK,
} WindowMessageType;
static const int kWindowMessageTimeoutInfinite = -1;
diff --git a/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.cpp b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.cpp
new file mode 100644
index 0000000000..b54adc70c8
--- /dev/null
+++ b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.cpp
@@ -0,0 +1,342 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/emulation/hostpipe/HostGoldfishPipe.h"
+#include "android/emulation/hostpipe/host_goldfish_pipe.h"
+
+#include "android/base/Result.h"
+#include "android/crashreport/crash-handler.h"
+#include "android/emulation/android_pipe_device.h"
+#include "android/emulation/AndroidPipe.h"
+#include "android/emulation/testing/TestVmLock.h"
+#include "android/emulation/VmLock.h"
+
+#include "android/base/memory/LazyInstance.h"
+
+#include <algorithm>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include <errno.h>
+#include <stdint.h>
+#include <string.h>
+
+using android::base::LazyInstance;
+using android::base::Result;
+using android::base::Ok;
+using android::base::Err;
+
+namespace android {
+
+HostGoldfishPipeDevice::~HostGoldfishPipeDevice() {
+ RecursiveScopedVmLock lock;
+ for (auto pipe: mPipes) {
+ close(pipe);
+ }
+ mHwPipeWakeCallbacks.clear();
+ mPipes.clear();
+ mPipeToHwPipe.clear();
+}
+
+// Also opens.
+void* HostGoldfishPipeDevice::connect(const char* name) {
+ RecursiveScopedVmLock lock;
+ void* pipe = open(createNewHwPipeId());
+
+ mCurrentPipeWantingConnection = pipe;
+
+ std::string handshake("pipe:");
+
+ handshake += name;
+
+ int len = static_cast<int>(handshake.size()) + 1;
+ int ret = write(pipe, handshake.c_str(), len);
+
+ if (ret == len) {
+ // pipe is currently refencing the connect pipe. After writing the pipe
+ // name we should have received a resetPipe, which returns the real
+ // host-side pipe.
+ void* hostPipe = popHostPipe(pipe);
+ if (!hostPipe) {
+ crashhandler_die_format(
+ "FATAL: Tried to connect with %s, "
+ "but could not get host pipe.",
+ handshake.c_str());
+ }
+ mPipes.insert(hostPipe);
+ return hostPipe;
+ } else {
+ LOG(ERROR) << "Could not connect to goldfish pipe name: " << name;
+ mResettedPipes.erase(pipe);
+ android_pipe_guest_close(pipe, PIPE_CLOSE_GRACEFUL);
+ mErrno = EIO;
+ return nullptr;
+ }
+}
+
+void HostGoldfishPipeDevice::close(void* pipe) {
+ RecursiveScopedVmLock lock;
+
+ auto it = mPipes.find(pipe);
+ if (it != mPipes.end()) {
+ android_pipe_guest_close(pipe, PIPE_CLOSE_GRACEFUL);
+
+ auto hwPipeIt = mPipeToHwPipe.find(pipe);
+ if (hwPipeIt != mPipeToHwPipe.end()) {
+ mHwPipeWakeCallbacks.erase(hwPipeIt->second);
+ }
+ mPipeToHwPipe.erase(hwPipeIt);
+
+ mPipes.erase(it);
+ } else {
+ LOG(INFO) << "Could not close pipe, ENOENT.";
+ mErrno = ENOENT;
+ }
+}
+
+void* HostGoldfishPipeDevice::load(base::Stream* stream) {
+ RecursiveScopedVmLock lock;
+ void* hwpipe = createNewHwPipeId();
+
+ char forceClose = 0;
+ void* hostPipe = android_pipe_guest_load(reinterpret_cast<Stream*>(stream),
+ hwpipe, &forceClose);
+ if (!forceClose) {
+ mPipeToHwPipe[hostPipe] = hwpipe;
+ mPipes.insert(hostPipe);
+ return hostPipe;
+ } else {
+ LOG(ERROR) << "Could not load goldfish pipe";
+ mErrno = EIO;
+ return nullptr;
+ }
+}
+
+// Read/write/poll but for a particular pipe.
+ssize_t HostGoldfishPipeDevice::read(void* pipe, void* buffer, size_t len) {
+ RecursiveScopedVmLock lock;
+ AndroidPipeBuffer buf = { static_cast<uint8_t*>(buffer), len };
+ ssize_t res = android_pipe_guest_recv(pipe, &buf, 1);
+ setErrno(res);
+ return res;
+}
+
+HostGoldfishPipeDevice::ReadResult HostGoldfishPipeDevice::read(void* pipe, size_t maxLength) {
+ std::vector<uint8_t> resultBuffer(maxLength);
+ void* buffer = (void*)resultBuffer.data();
+ ssize_t read_size = read(pipe, buffer, maxLength);
+
+ if (read_size < 0) {
+ return Err(mErrno);
+ } else {
+ if (read_size < maxLength) {
+ resultBuffer.resize(read_size);
+ }
+ return Ok(resultBuffer);
+ }
+}
+
+ssize_t HostGoldfishPipeDevice::write(void* pipe, const void* buffer, size_t len) {
+ RecursiveScopedVmLock lock;
+ AndroidPipeBuffer buf = {
+ (uint8_t*)buffer, len };
+ ssize_t res = android_pipe_guest_send(pipe, &buf, 1);
+ setErrno(res);
+ return res;
+}
+
+HostGoldfishPipeDevice::WriteResult HostGoldfishPipeDevice::write(void* pipe, const std::vector<uint8_t>& data) {
+ ssize_t res = write(pipe, data.data(), data.size());
+
+ if (res < 0) {
+ return Err(mErrno);
+ } else {
+ return Ok(res);
+ }
+}
+
+unsigned HostGoldfishPipeDevice::poll(void* pipe) const {
+ RecursiveScopedVmLock lock;
+ return android_pipe_guest_poll(pipe);
+}
+
+void HostGoldfishPipeDevice::setWakeCallback(
+ void* pipe,
+ std::function<void(int)> callback) {
+ RecursiveScopedVmLock lock;
+ auto it = mPipeToHwPipe.find(pipe);
+ if (it != mPipeToHwPipe.end()) {
+ mHwPipeWakeCallbacks[it->second] = callback;
+ } else {
+ LOG(INFO) << "setWakeCallbacks could not find hwpipe for pipe.";
+ }
+}
+
+void HostGoldfishPipeDevice::initialize() {
+ if (mInitialized) return;
+ const AndroidPipeHwFuncs funcs = {
+ &HostGoldfishPipeDevice::resetPipeCallback,
+ &HostGoldfishPipeDevice::closeFromHostCallback,
+ &HostGoldfishPipeDevice::signalWakeCallback,
+ };
+ android_pipe_set_hw_funcs(&funcs);
+ AndroidPipe::Service::resetAll();
+ AndroidPipe::initThreading(android::TestVmLock::getInstance());
+ mInitialized = true;
+}
+
+void* HostGoldfishPipeDevice::open(void* hwpipe) {
+ RecursiveScopedVmLock lock;
+ void* res = android_pipe_guest_open(hwpipe);
+ if (!res) {
+ mErrno = ENOENT;
+ return nullptr;
+ }
+ return res;
+}
+
+void* HostGoldfishPipeDevice::popHostPipe(void* pipe) {
+ RecursiveScopedVmLock lock;
+ auto it = mResettedPipes.find(pipe);
+ if (it == mResettedPipes.end()) {
+ return nullptr;
+ } else {
+ auto res = it->second;
+ mResettedPipes.erase(pipe);
+ return res;
+ }
+}
+
+void HostGoldfishPipeDevice::setErrno(ssize_t res) {
+ if (res >= 0) return;
+ switch (res) {
+ case PIPE_ERROR_INVAL:
+ mErrno = EINVAL;
+ break;
+ case PIPE_ERROR_AGAIN:
+ mErrno = EAGAIN;
+ break;
+ case PIPE_ERROR_NOMEM:
+ mErrno = ENOMEM;
+ break;
+ case PIPE_ERROR_IO:
+ mErrno = EIO;
+ break;
+ }
+}
+
+void* HostGoldfishPipeDevice::createNewHwPipeId() {
+ return reinterpret_cast<void*>(mNextHwPipe++);
+}
+
+void HostGoldfishPipeDevice::resetPipe(void* hwpipe, void* internal_pipe) {
+ RecursiveScopedVmLock lock;
+ mPipeToHwPipe[internal_pipe] = hwpipe;
+ mResettedPipes[mCurrentPipeWantingConnection] = internal_pipe;
+}
+
+void HostGoldfishPipeDevice::closeHwPipe(void* hwpipe) {
+ RecursiveScopedVmLock lock;
+ // To avoid having to also create a hwpipe to pipe map, just do a linear
+ // scan.
+ auto it = std::find_if(mPipeToHwPipe.begin(), mPipeToHwPipe.end(),
+ [hwpipe](const std::pair<void*, void*>& v) {
+ return v.second == hwpipe;
+ });
+ if (it != mPipeToHwPipe.end()) {
+ close(it->first);
+ } else {
+ LOG(INFO) << "Could not close pipe, ENOENT.";
+ mErrno = ENOENT;
+ }
+}
+
+void HostGoldfishPipeDevice::signalWake(void* hwpipe, int wakes) {
+ RecursiveScopedVmLock lock;
+ auto callbackIt = mHwPipeWakeCallbacks.find(hwpipe);
+ if (callbackIt != mHwPipeWakeCallbacks.end()) {
+ (callbackIt->second)(wakes);
+ }
+}
+
+static LazyInstance<HostGoldfishPipeDevice> sDevice = LAZY_INSTANCE_INIT;
+
+// static
+HostGoldfishPipeDevice* HostGoldfishPipeDevice::get() {
+ auto res = sDevice.ptr();
+ // Must be separate from construction
+ // as some initialization routines require
+ // the instance to be constructed.
+ res->initialize();
+ return res;
+}
+
+// Callbacks for AndroidPipeHwFuncs.
+// static
+void HostGoldfishPipeDevice::resetPipeCallback(void* hwpipe,
+ void* internal_pipe) {
+ HostGoldfishPipeDevice::get()->resetPipe(hwpipe, internal_pipe);
+}
+
+// static
+void HostGoldfishPipeDevice::closeFromHostCallback(void* hwpipe) {
+ HostGoldfishPipeDevice::get()->close(hwpipe);
+}
+
+// static
+void HostGoldfishPipeDevice::signalWakeCallback(void* hwpipe, unsigned wakes) {
+ HostGoldfishPipeDevice::get()->signalWake(hwpipe, wakes);
+}
+
+} // namespace android
+
+extern "C" {
+
+void android_host_pipe_device_initialize() {
+ android::HostGoldfishPipeDevice::get();
+}
+
+void* android_host_pipe_connect(const char* name) {
+ return android::HostGoldfishPipeDevice::get()->connect(name);
+}
+
+void android_host_pipe_close(void* pipe) {
+ android::HostGoldfishPipeDevice::get()->close(pipe);
+}
+
+ssize_t android_host_pipe_read(void* pipe, void* buffer, size_t len) {
+ return android::HostGoldfishPipeDevice::get()->read(pipe, buffer, len);
+}
+
+ssize_t android_host_pipe_write(void* pipe, const void* buffer, size_t len) {
+ return android::HostGoldfishPipeDevice::get()->write(pipe, buffer, len);
+}
+
+unsigned android_host_pipe_poll(void* pipe) {
+ return android::HostGoldfishPipeDevice::get()->poll(pipe);
+}
+
+android_host_pipe_dispatch make_host_pipe_dispatch() {
+ android::HostGoldfishPipeDevice::get();
+ android_host_pipe_dispatch res;
+ res.connect = android_host_pipe_connect;
+ res.close = android_host_pipe_close;
+ res.read = android_host_pipe_read;
+ res.write = android_host_pipe_write;
+ res.poll = android_host_pipe_poll;
+ return res;
+}
+
+}
diff --git a/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.h b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.h
new file mode 100644
index 0000000000..34ca1e4f88
--- /dev/null
+++ b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe.h
@@ -0,0 +1,109 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "android/base/Result.h"
+#include "android/base/files/Stream.h"
+
+#include <cstdint>
+#include <functional>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include <sys/types.h>
+
+// Fake pipe driver and device for testing goldfish pipe on host without
+// running a VM.
+namespace android {
+
+class HostGoldfishPipeDevice {
+public:
+ using ReadResult = android::base::Result<std::vector<uint8_t>, int>;
+ using WriteResult = android::base::Result<ssize_t, int>;
+
+ HostGoldfishPipeDevice() = default;
+ ~HostGoldfishPipeDevice();
+
+ static HostGoldfishPipeDevice* get();
+
+ // Opens/closes pipe services.
+ void* connect(const char* name);
+ void close(void* pipe);
+
+ // Loads a pipe from a stream, returns null if the pipe can't be loaded.
+ void* load(base::Stream* stream);
+
+ // Read/write for a particular pipe, along with C++ versions.
+ ssize_t read(void* pipe, void* buffer, size_t len);
+ ssize_t write(void* pipe, const void* buffer, size_t len);
+
+ ReadResult read(void* pipe, size_t maxLength);
+ WriteResult write(void* pipe, const std::vector<uint8_t>& data);
+
+ unsigned poll(void* pipe) const;
+ int getErrno() const { return mErrno; }
+
+ // Sets a callback that will be invoked when the pipe is signaled by the
+ // host, accepts an "int wakes" parameter that matches contains PIPE_WAKE_*
+ // flags.
+ void setWakeCallback(void* pipe, std::function<void(int)> callback);
+
+private:
+ void initialize();
+ // Opens a new pipe connection, returns a pointer to the host connector
+ // pipe.
+ //
+ // hwpipe is an opaque pointer that will be used as the hwpipe id, generate
+ // one with createNewHwPipeId().
+ void* open(void* hwpipe);
+ // Returns the host-side pipe for a connector pipe, if the pipe has been
+ // reset.
+ void* popHostPipe(void* connectorPipe);
+ void setErrno(ssize_t res);
+
+ void* createNewHwPipeId();
+
+ // Called to associate a given hwpipe with a host-side pipe.
+ //
+ // |hwpipe| - hwpipe pointer, the goldfish pipe pointer.
+ // |internal_pipe| - Host-side pipe, corresponding to AndroidPipe*.
+ void resetPipe(void* hwpipe, void* internal_pipe);
+
+ // Close a hwpipe.
+ void closeHwPipe(void* hwpipe);
+ // Wake a hwpipe.
+ void signalWake(void* hwpipe, int wakes);
+
+ // Callbacks for AndroidPipeHwFuncs.
+ static void resetPipeCallback(void* hwpipe, void* internal_pipe);
+ static void closeFromHostCallback(void* hwpipe);
+ static void signalWakeCallback(void* hwpipe, unsigned wakes);
+
+ uintptr_t mNextHwPipe = 1;
+
+ bool mInitialized = false;
+ int mErrno = 0;
+ void* mCurrentPipeWantingConnection = nullptr;
+ std::unordered_set<void*> mPipes;
+ std::unordered_map<void*, void*> mResettedPipes;
+ std::unordered_map<void*, void*> mPipeToHwPipe;
+ std::unordered_map<void*, std::function<void(int)>> mHwPipeWakeCallbacks;
+};
+
+// Initializes a global pipe instance for the current process.
+HostGoldfishPipeDevice* getHostPipeInstance();
+
+} // namespace android
+
diff --git a/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe_unittest.cpp b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe_unittest.cpp
new file mode 100644
index 0000000000..c26aac3ab9
--- /dev/null
+++ b/android/android-emu/android/emulation/hostpipe/HostGoldfishPipe_unittest.cpp
@@ -0,0 +1,82 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/emulation/hostpipe/HostGoldfishPipe.h"
+
+#include "android/emulation/AndroidMessagePipe.h"
+
+#include <gtest/gtest.h>
+
+namespace android {
+
+class HostGoldfishPipeTest : public ::testing::Test {
+protected:
+ void SetUp() override {
+ AndroidPipe::Service::resetAll();
+ mDevice = HostGoldfishPipeDevice::get();
+ }
+
+ void TearDown() override {
+ AndroidPipe::Service::resetAll();
+ // mDevice is singleton, no need to tear down
+ }
+ HostGoldfishPipeDevice* mDevice = nullptr;
+};
+
+TEST_F(HostGoldfishPipeTest, Basic) { }
+
+TEST_F(HostGoldfishPipeTest, MessagePipe) {
+ const char kPayload[] = "Hello World";
+ const char kResponse[] = "response";
+
+ bool ran = false;
+
+ auto myDecodeAndExecute =
+ [kPayload, kResponse, &ran](
+ const std::vector<uint8_t>& input,
+ std::vector<uint8_t>* output) {
+ EXPECT_STREQ(kPayload, (char*)input.data());
+ size_t bytes = strlen(kResponse) + 1;
+ output->resize(bytes);
+ memset(output->data(), 0x0, bytes);
+ memcpy(output->data(), kResponse, strlen(kResponse));
+ ran = true;
+ };
+
+ registerAndroidMessagePipeService(
+ "testMessagePipe", myDecodeAndExecute);
+
+ auto pipe = mDevice->connect("testMessagePipe");
+
+ int32_t payloadSz = strlen(kPayload) + 1;
+ EXPECT_EQ(sizeof(int32_t),
+ mDevice->write(pipe, &payloadSz, sizeof(int32_t)));
+
+ std::vector<uint8_t> toSend(payloadSz, 0);
+ memcpy(toSend.data(), kPayload, strlen(kPayload));
+ EXPECT_TRUE(mDevice->write(pipe, toSend).ok());
+
+ int32_t responseSize = 0;
+ EXPECT_EQ(sizeof(int32_t),
+ mDevice->read(pipe, (void*)&responseSize, sizeof(int32_t)));
+
+ EXPECT_TRUE(ran);
+
+ auto response = mDevice->read(pipe, responseSize);
+ EXPECT_TRUE(response.ok());
+ EXPECT_STREQ(kResponse, (char*)(response.ok()->data()));
+
+ mDevice->close(pipe);
+}
+
+} // namespace android
diff --git a/android/android-emu/android/emulation/hostpipe/host_goldfish_pipe.h b/android/android-emu/android/emulation/hostpipe/host_goldfish_pipe.h
new file mode 100644
index 0000000000..557bef72cf
--- /dev/null
+++ b/android/android-emu/android/emulation/hostpipe/host_goldfish_pipe.h
@@ -0,0 +1,43 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+extern "C" {
+
+// C interface for HostGoldfishPipe.
+
+void android_host_pipe_device_initialize();
+void* android_host_pipe_connect(const char* name);
+void android_host_pipe_close(void* pipe);
+ssize_t android_host_pipe_read(void* pipe, void* buffer, size_t len);
+ssize_t android_host_pipe_write(void* pipe, const void* buffer, size_t len);
+unsigned android_host_pipe_poll(void* pipe);
+
+typedef void* (*android_host_pipe_connect_t)(const char*);
+typedef void (*android_host_pipe_close_t)(void*);
+typedef ssize_t (*android_host_pipe_read_t)(void*, void* , size_t);
+typedef ssize_t (*android_host_pipe_write_t)(void* pipe, const void* buffer, size_t len);
+typedef unsigned (*android_host_pipe_poll_t)(void* pipe);
+
+struct android_host_pipe_dispatch {
+ android_host_pipe_connect_t connect = 0;
+ android_host_pipe_close_t close = 0;
+ android_host_pipe_read_t read = 0;
+ android_host_pipe_write_t write = 0;
+ android_host_pipe_poll_t poll = 0;
+};
+
+android_host_pipe_dispatch make_host_pipe_dispatch();
+
+} // extern "C"
diff --git a/android/android-emu/android/emulation/testing/TestVmLock.cpp b/android/android-emu/android/emulation/testing/TestVmLock.cpp
new file mode 100644
index 0000000000..ccc5df3c53
--- /dev/null
+++ b/android/android-emu/android/emulation/testing/TestVmLock.cpp
@@ -0,0 +1,30 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/emulation/testing/TestVmLock.h"
+
+#include "android/base/memory/LazyInstance.h"
+
+using android::base::LazyInstance;
+
+namespace android {
+
+static LazyInstance<TestVmLock> sTestVmLock = LAZY_INSTANCE_INIT;
+
+// static
+TestVmLock* TestVmLock::getInstance() {
+ return sTestVmLock.ptr();
+}
+
+} // namespace android
diff --git a/android/android-emu/android/emulation/testing/TestVmLock.h b/android/android-emu/android/emulation/testing/TestVmLock.h
index 10ef2e6495..d09707c08a 100644
--- a/android/android-emu/android/emulation/testing/TestVmLock.h
+++ b/android/android-emu/android/emulation/testing/TestVmLock.h
@@ -11,6 +11,7 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+#pragma once
#include "android/emulation/VmLock.h"
@@ -18,6 +19,8 @@ namespace android {
class TestVmLock : public VmLock {
public:
+ static TestVmLock* getInstance();
+
TestVmLock() : mOldVmLock(VmLock::set(this)), mInstalled(true) {}
~TestVmLock() { release(); }
diff --git a/android/android-emu/android/featurecontrol/FeatureControlDefHost.h b/android/android-emu/android/featurecontrol/FeatureControlDefHost.h
index 613108d44f..320b2d3418 100644
--- a/android/android-emu/android/featurecontrol/FeatureControlDefHost.h
+++ b/android/android-emu/android/featurecontrol/FeatureControlDefHost.h
@@ -45,3 +45,5 @@ FEATURE_CONTROL_ITEM(WindowsHypervisorPlatform)
FEATURE_CONTROL_ITEM(LocationUiV2)
FEATURE_CONTROL_ITEM(SnapshotAdb)
FEATURE_CONTROL_ITEM(QuickbootFileBacked)
+FEATURE_CONTROL_ITEM(Offworld)
+FEATURE_CONTROL_ITEM(OffworldDisableSecurity)
diff --git a/android/android-emu/android/featurecontrol/FeatureControlDefSnapshotInsensitive.h b/android/android-emu/android/featurecontrol/FeatureControlDefSnapshotInsensitive.h
index e66cd22ef5..cda791b8c3 100644
--- a/android/android-emu/android/featurecontrol/FeatureControlDefSnapshotInsensitive.h
+++ b/android/android-emu/android/featurecontrol/FeatureControlDefSnapshotInsensitive.h
@@ -38,4 +38,7 @@ FEATURE_CONTROL_ITEM(VirtualScene)
FEATURE_CONTROL_ITEM(GenericSnapshotsUI)
// File-backed Quickboot
FEATURE_CONTROL_ITEM(QuickbootFileBacked)
+// Meta feature which disables a confirmation dialog, does not affect snapshot
+// data
+FEATURE_CONTROL_ITEM(OffworldDisableSecurity)
// No guest feature flags seem safe to snapshot.
diff --git a/android/android-emu/android/help.c b/android/android-emu/android/help.c
index 4b4acd0f01..15fcd0d2e7 100644
--- a/android/android-emu/android/help.c
+++ b/android/android-emu/android/help.c
@@ -1391,6 +1391,9 @@ help_gpu(stralloc_t* out)
" Windows 8.1+, or Windows 10 only).\n"
" guest -> Use guest-side software rendering. For\n"
" advanced users only. Warning: slow!\n"
+ " In API 28 and later, guest rendering\n"
+ " is not supported, and will fall back\n"
+ " automatically to swiftshader_indirect.\n"
" Note that enabling GPU emulation if the system image does not support it\n"
" will prevent the proper display of the emulated framebuffer.\n\n"
diff --git a/android/android-emu/android/hw-sensors.cpp b/android/android-emu/android/hw-sensors.cpp
index f48e9c4de4..657085fe4e 100644
--- a/android/android-emu/android/hw-sensors.cpp
+++ b/android/android-emu/android/hw-sensors.cpp
@@ -12,15 +12,16 @@
#include "android/hw-sensors.h"
+#include "android/automation/AutomationController.h"
#include "android/emulation/android_qemud.h"
#include "android/globals.h"
#include "android/physics/PhysicalModel.h"
#include "android/sensors-port.h"
#include "android/utils/debug.h"
+#include "android/utils/looper.h"
#include "android/utils/misc.h"
#include "android/utils/stream.h"
#include "android/utils/system.h"
-#include "android/utils/looper.h"
#include <assert.h>
#include <errno.h>
@@ -358,10 +359,7 @@ static void _hwSensorClient_tick(void* opaque, LoopTimer* unused) {
// time of the sensor event arrival. Since the CTS enforces this property,
// other code may also rely on it.
const DurationNs now_ns =
- looper_nowNsWithClock(looper_getForThread(), LOOPER_CLOCK_VIRTUAL);
-
- // Update the current time on the physical model.
- physicalModel_setCurrentTime(cl->sensors->physical_model, now_ns);
+ android::automation::AutomationController::get().advanceTime();
for (size_t sensor_id = 0; sensor_id < MAX_SENSORS; ++sensor_id) {
if (!_hwSensorClient_enabled(cl, sensor_id)) {
@@ -693,17 +691,6 @@ PHYSICAL_PARAMETERS_LIST
}
}
-/* Getter for simulatenous physical rotation and translation */
-static void _hwSensors_getPhysicalTransform(HwSensors* h,
- float* out_translation_x, float* out_translation_y, float* out_translation_z,
- float* out_rotation_x, float* out_rotation_y, float* out_rotation_z,
- int64_t* out_timestamp) {
- physicalModel_getTransform(h->physical_model,
- out_translation_x, out_translation_y, out_translation_z,
- out_rotation_x, out_rotation_y, out_rotation_z,
- out_timestamp);
-}
-
/*
* Saves available sensors and physical state to allow checking availability
* when loaded.
@@ -721,7 +708,7 @@ static void _hwSensors_save(Stream* f, QemudService* sv, void* opaque) {
stream_put_be32(f, s->enabled);
}
- physicalModel_save(h->physical_model, f);
+ physicalModel_snapshotSave(h->physical_model, f);
}
static int _hwSensors_load(Stream* f, QemudService* s, void* opaque) {
@@ -758,7 +745,9 @@ static int _hwSensors_load(Stream* f, QemudService* s, void* opaque) {
h->sensors[sensor_id].enabled = false;
}
- return physicalModel_load(h->physical_model, f);
+ android::automation::AutomationController::get().reset();
+
+ return physicalModel_snapshotLoad(h->physical_model, f);
}
/* change the coarse orientation (landscape/portrait) of the emulated device */
@@ -836,7 +825,7 @@ static void _hwSensors_init(HwSensors* h) {
physicalModel_free(h->physical_model);
h->physical_model = NULL;
}
- h->physical_model = physicalModel_new(true);
+ h->physical_model = physicalModel_new();
if (android_hw->hw_accelerometer) {
h->sensors[ANDROID_SENSOR_ACCELERATION].enabled = true;
@@ -1031,6 +1020,13 @@ extern int32_t android_sensors_get_delay_ms() {
return min_delay;
}
+/* Get the physical model instance. */
+extern PhysicalModel* android_physical_model_instance() {
+ HwSensors* hw = _sensorsState;
+
+ return hw->physical_model;
+}
+
/* Get a physical model parameter target value*/
extern int android_physical_model_get(
int physical_parameter, float* out_a, float* out_b, float* out_c,
@@ -1054,32 +1050,6 @@ extern int android_physical_model_get(
return PHYSICAL_PARAMETER_STATUS_OK;
}
-/* Getter for simulatenous physical rotation and translation */
-extern int android_physical_model_get_transform(
- float* out_translation_x, float* out_translation_y, float* out_translation_z,
- float* out_rotation_x, float* out_rotation_y, float* out_rotation_z,
- int64_t* out_timestamp) {
- HwSensors* hw = _sensorsState;
-
- *out_translation_x = 0;
- *out_translation_y = 0;
- *out_translation_z = 0;
- *out_rotation_x = 0;
- *out_rotation_y = 0;
- *out_rotation_z = 0;
-
- if (hw->physical_model == NULL) {
- return PHYSICAL_PARAMETER_STATUS_NO_SERVICE;
- }
-
- _hwSensors_getPhysicalTransform(
- hw, out_translation_x, out_translation_y, out_translation_z,
- out_rotation_x, out_rotation_y, out_rotation_z,
- out_timestamp);
-
- return PHYSICAL_PARAMETER_STATUS_OK;
-}
-
/* Set a physical model parameter */
extern int android_physical_model_set(
int physical_parameter, float a, float b, float c,
@@ -1131,20 +1101,6 @@ extern const char* android_physical_model_get_parameter_name_from_id(
return _physicalParamNameFromId(physical_parameter_id);
}
-// Start recording physical changes to the specified file.
-extern int android_physical_model_record(const char* file_name) {
- HwSensors* hw = _sensorsState;
-
- return physicalModel_record(hw->physical_model, file_name);
-}
-
-// Start playing back physical changes from the specified file.
-extern int android_physical_model_playback(const char* file_name) {
- HwSensors* hw = _sensorsState;
-
- return physicalModel_playback(hw->physical_model, file_name);
-}
-
// Start recording ground truth to the specified file.
extern int android_physical_model_record_ground_truth(const char* file_name) {
HwSensors* hw = _sensorsState;
@@ -1152,9 +1108,9 @@ extern int android_physical_model_record_ground_truth(const char* file_name) {
return physicalModel_recordGroundTruth(hw->physical_model, file_name);
}
-// Stop all active recording and playback.
-extern int android_physical_model_stop_record_and_playback() {
+// Stop ground truth recording.
+extern int android_physical_model_stop_recording() {
HwSensors* hw = _sensorsState;
- return physicalModel_stopRecordAndPlayback(hw->physical_model);
+ return physicalModel_stopRecording(hw->physical_model);
}
diff --git a/android/android-emu/android/hw-sensors.h b/android/android-emu/android/hw-sensors.h
index 0d06895a40..4de99003a3 100644
--- a/android/android-emu/android/hw-sensors.h
+++ b/android/android-emu/android/hw-sensors.h
@@ -16,9 +16,11 @@
#include "android/utils/compiler.h"
#include <stdint.h>
+#include <math.h>
/* forward declaration */
struct QAndroidPhysicalStateAgent;
+typedef struct PhysicalModel PhysicalModel;
ANDROID_BEGIN_HEADER
@@ -30,11 +32,29 @@ extern void android_hw_sensors_init( void );
extern void android_hw_sensors_init_remote_controller( void );
/* struct for use in sensor values */
-typedef struct vec3 {
- float x;
- float y;
- float z;
-} vec3;
+struct vec3 {
+ float x;
+ float y;
+ float z;
+
+#ifdef __cplusplus
+ bool operator==(const vec3& rhs) const {
+ const float kEpsilon = 0.00001f;
+
+ const double diffX = fabs(x - rhs.x);
+ const double diffY = fabs(y - rhs.y);
+ const double diffZ = fabs(z - rhs.z);
+ return (diffX < kEpsilon && diffY < kEpsilon && diffZ < kEpsilon);
+ }
+
+ bool operator!=(const vec3& rhs) const {
+ return !(*this == rhs);
+ }
+#endif // __cplusplus
+};
+
+typedef struct vec3 vec3;
+
/* NOTE: Sensor status Error definition, It will be used in the Sensors Command
* part in android-qemu1-glue/console.c. Details:
@@ -150,17 +170,14 @@ extern int64_t android_sensors_get_time_offset();
/* Get the current sensor delay (determines update rate) */
extern int32_t android_sensors_get_delay_ms();
+/* Get the physical model instance. */
+extern PhysicalModel* android_physical_model_instance();
+
/* Get physical model values */
extern int android_physical_model_get(
int physical_parameter, float* out_a, float* out_b, float* out_c,
ParameterValueType parameter_value_type);
-/* Getter for simulatenous physical rotation and translation */
-extern int android_physical_model_get_transform(
- float* out_translation_x, float* out_translation_y, float* out_translation_z,
- float* out_rotation_x, float* out_rotation_y, float* out_rotation_z,
- int64_t* out_timestamp);
-
/* Set physical model target values */
extern int android_physical_model_set(
int physical_parameter, float a, float b, float c,
@@ -178,16 +195,10 @@ extern int android_physical_model_get_parameter_id_from_name(
extern const char* android_physical_model_get_parameter_name_from_id(
int physical_parameter_id );
-// Start recording physical changes to the specified file.
-extern int android_physical_model_record(const char* file_name);
-
-// Start playing back physical changes from the specified file.
-extern int android_physical_model_playback(const char* file_name);
-
// Start recording ground truth to the specified file.
extern int android_physical_model_record_ground_truth(const char* file_name);
-// Stop all active recording and playback.
-extern int android_physical_model_stop_record_and_playback();
+// Stop recording ground truth.
+extern int android_physical_model_stop_recording();
ANDROID_END_HEADER
diff --git a/android/android-emu/android/main-common.c b/android/android-emu/android/main-common.c
index 9eb096b605..5c7aeac129 100644
--- a/android/android-emu/android/main-common.c
+++ b/android/android-emu/android/main-common.c
@@ -14,6 +14,7 @@
#include "android/avd/info.h"
#include "android/avd/util.h"
#include "android/camera/camera-list.h"
+#include "android/crashreport/crash-handler.h"
#include "android/emulation/android_pipe_unix.h"
#include "android/emulation/bufprint_config_dirs.h"
#include "android/featurecontrol/feature_control.h"
@@ -1951,11 +1952,8 @@ bool configAndStartRenderer(
(isGuestRendererChoice(opts->gpu) ||
isGuestRendererChoice(hw->hw_gpu_mode))) {
dwarning("Your AVD has been configured with an in-guest renderer, "
- "but there are issues with the current system image build "
- "preventing guest rendering from working. "
- "We are switching to the \'swiftshader\' software renderer "
- "until the next system image update. "
- "Sorry for the inconvenience.");
+ "but the system image does not support guest rendering."
+ "Falling back to 'swiftshader_indirect' mode.");
if (opts->gpu) {
str_reset(&opts->gpu, DEFAULT_SOFTWARE_GPU_MODE);
} else {
@@ -1980,6 +1978,10 @@ bool configAndStartRenderer(
uiPreferredBackend)) {
derror("%s", config.status);
config_out->openglAlive = 0;
+
+ crashhandler_append_message_format(
+ "androidEmuglConfigInit failed.\n");
+
lastRendererConfig = *config_out;
AFREE(api_arch);
@@ -2053,8 +2055,19 @@ bool configAndStartRenderer(
avdInfo_getApiLevel(avd),
&gles_major_version,
&gles_minor_version);
- if (gles_init_res || renderer_startup_res)
+ if (gles_init_res || renderer_startup_res) {
config_out->openglAlive = 0;
+ if (gles_init_res) {
+ crashhandler_append_message_format(
+ "android_initOpenglesEmulation failed. "
+ "Error: %d\n", gles_init_res);
+ }
+ if (renderer_startup_res) {
+ crashhandler_append_message_format(
+ "android_startOpenglesRenderer failed. "
+ "Error: %d\n", renderer_startup_res);
+ }
+ }
}
// We need to know boot property
diff --git a/android/android-emu/android/main-kernel-parameters.cpp b/android/android-emu/android/main-kernel-parameters.cpp
index 7b3e94605e..4425aba3b0 100644
--- a/android/android-emu/android/main-kernel-parameters.cpp
+++ b/android/android-emu/android/main-kernel-parameters.cpp
@@ -43,6 +43,7 @@ char* emulator_getKernelParameters(const AndroidOptions* opts,
int apiLevel,
const char* kernelSerialPrefix,
const char* avdKernelParameters,
+ const std::vector<std::string>* verifiedBootParameters,
AndroidGlesEmulationMode glesMode,
int bootPropOpenglesVersion,
uint64_t glFramebufferSizeBytes,
@@ -189,7 +190,11 @@ char* emulator_getKernelParameters(const AndroidOptions* opts,
params.add("rootwait");
params.add("ro");
params.add("init=/init");
- params.add("root=/dev/vda1");
+ // If verifiedBootParameters were added, they will provide the root
+ // argument which corresponds to a mapped device.
+ if (!verifiedBootParameters || verifiedBootParameters->empty()) {
+ params.add("root=/dev/vda1");
+ }
}
}
@@ -202,6 +207,12 @@ char* emulator_getKernelParameters(const AndroidOptions* opts,
params.add(avdKernelParameters);
}
+ if (verifiedBootParameters) {
+ for (const std::string& param : *verifiedBootParameters) {
+ params.add(param);
+ }
+ }
+
// Configure the ramoops module, and mark the region where ramoops lives as
// unusable. This will prevent anyone else from using this memory region.
if (ramoops.size > 0 && ramoops.start > 0) {
diff --git a/android/android-emu/android/main-kernel-parameters.h b/android/android-emu/android/main-kernel-parameters.h
index a46885fd97..2582ebe6c6 100644
--- a/android/android-emu/android/main-kernel-parameters.h
+++ b/android/android-emu/android/main-kernel-parameters.h
@@ -16,6 +16,8 @@
#include "android/opengl/emugl_config.h"
#include <stdint.h>
+#include <string>
+#include <vector>
ANDROID_BEGIN_HEADER
@@ -33,6 +35,8 @@ typedef struct mem_map {
// |avdKernelParameters| are the optional extra kernel parameters stored
// in the AVD's kernel.parameters hardware property, if any. They will
// be appended to the result.
+// |verifiedBootParameters| is a vector of verified boot kernel parameters to
+// add. Passing NULL is OK. Passing an empty vector is OK.
// |glesMode| is the EGL/GLES emulation mode.
// |glesGuestCmaMB| is the size in megabytes of the contiguous memory
// allocation to be used when |glesMode| is kAndroidGlesEmulationGuest.
@@ -47,6 +51,7 @@ char* emulator_getKernelParameters(const AndroidOptions* opts,
int apiLevel,
const char* kernelSerialPrefix,
const char* avdKernelParameters,
+ const std::vector<std::string>* verifiedBootParameters,
AndroidGlesEmulationMode glesMode,
int bootPropOpenglesVersion,
uint64_t glFramebufferSizeBytes,
diff --git a/android/android-emu/android/metrics/AdbLivenessChecker.cpp b/android/android-emu/android/metrics/AdbLivenessChecker.cpp
index 8f531e15d6..79ced90004 100644
--- a/android/android-emu/android/metrics/AdbLivenessChecker.cpp
+++ b/android/android-emu/android/metrics/AdbLivenessChecker.cpp
@@ -93,7 +93,19 @@ AdbLivenessChecker::AdbLivenessChecker(
mBootCheckTask(looper,
[this]() { return runBootCheck(); },
bootCheckTaskTimeoutMs(mCheckIntervalMs)),
- mRemainingAttempts(kMaxAttempts) {
+ // TODO: bug 115582308
+ // Remove the liveness checker.
+ // Until we figure out how to run adb from socket directly.
+ //
+ // The liveness checker is only meant to measure one extremely narrow
+ // thing: the edge trigger for online -> offline. This one thing, that
+ // we don't even look at very much in metrics, and whose rate of going
+ // offline is very low already, is a guaranteed onerous burden for users
+ // as it is a heavyweight operation that starts a subprocess and involves
+ // temp file handling, and easily falls over or overloads the user's
+ // machine with adb procesess when the smallest thing is out of whack,
+ // such as when there are mismatched ADB servers running on the host.
+ mRemainingAttempts(0) {
// Don't call start() here: start() launches a parallel task that calls
// shared_from_this(), which needs at least one shared pointer owning
// |this|. We can't guarantee that until the constructor call returns.
@@ -113,13 +125,15 @@ AdbLivenessChecker::~AdbLivenessChecker() {
}
void AdbLivenessChecker::start() {
- mRecurrentTask.start(true);
- mBootCheckTask.start(true);
+ // TODO: bug 115582308
+ // mRecurrentTask.start(true);
+ // mBootCheckTask.start(true);
}
void AdbLivenessChecker::stop() {
- mRecurrentTask.stopAndWait();
- mBootCheckTask.stopAndWait();
+ // TODO: bug 115582308
+ // mRecurrentTask.stopAndWait();
+ // mBootCheckTask.stopAndWait();
}
bool AdbLivenessChecker::adbCheckRequest() {
@@ -287,7 +301,7 @@ void AdbLivenessChecker::reportCheckResult(const CheckResult& result) {
}
if (result == CheckResult::kOnline) {
- mRemainingAttempts = kMaxAttempts;
+ mRemainingAttempts = 0;
dropMetrics(result);
} else if (--mRemainingAttempts == 0) {
LOG(VERBOSE) << "Reporting error: " << static_cast<int>(result);
diff --git a/android/android-emu/android/metrics/MemoryUsageReporter.cpp b/android/android-emu/android/metrics/MemoryUsageReporter.cpp
index d474f71052..8bf05873ac 100644
--- a/android/android-emu/android/metrics/MemoryUsageReporter.cpp
+++ b/android/android-emu/android/metrics/MemoryUsageReporter.cpp
@@ -24,6 +24,8 @@
static const uint32_t kMemUsageMetricsReportIntervalMs = 60 * 1000;
+static bool sStopping = false;
+
namespace android {
namespace metrics {
@@ -56,6 +58,9 @@ MemoryUsageReporter::MemoryUsageReporter(
using android::metrics::PeriodicReporter;
PeriodicReporter::get().addTask(kMemUsageMetricsReportIntervalMs,
[this](android_studio::AndroidStudioEvent* event) {
+
+ if (sStopping) return true;
+
android_studio::EmulatorMemoryUsage* memUsageProto =
event->mutable_emulator_performance_stats()->add_memory_usage();
@@ -90,6 +95,7 @@ void MemoryUsageReporter::start() {
}
void MemoryUsageReporter::stop() {
+ sStopping = true;
mRecurrentTask.stopAndWait();
}
diff --git a/android/android-emu/android/metrics/StudioConfig.cpp b/android/android-emu/android/metrics/StudioConfig.cpp
index 6e0ca1f7a3..e3719b37e4 100644
--- a/android/android-emu/android/metrics/StudioConfig.cpp
+++ b/android/android-emu/android/metrics/StudioConfig.cpp
@@ -177,18 +177,21 @@ std::string latestAndroidStudioDir(const std::string& scanPath) {
// End of enumeration.
break;
}
- // ignore files, only interested in subDirs
- if (!system->pathIsDir(full_path)) {
- continue;
- }
char* name = path_basename(full_path);
if (name == NULL) {
continue;
}
+
Version v = extractAndroidStudioVersion(name);
free(name);
- if (v.isValid() && latest_version < v) {
+
+ // ignore files, only interested in subDirs
+ if (!v.isValid() || !system->pathIsDir(full_path)) {
+ continue;
+ }
+
+ if (latest_version < v) {
latest_version = v;
latest_path = full_path;
}
diff --git a/android/android-emu/android/metrics/metrics.cpp b/android/android-emu/android/metrics/metrics.cpp
index 5451258fdc..b6c3fc8af3 100644
--- a/android/android-emu/android/metrics/metrics.cpp
+++ b/android/android-emu/android/metrics/metrics.cpp
@@ -379,11 +379,13 @@ static android_studio::EmulatorFeatureFlagState::EmulatorFeatureFlag toClearcutF
case android::featurecontrol::LocationUiV2:
return android_studio::EmulatorFeatureFlagState::LOCATION_UI_V2;
case android::featurecontrol::SnapshotAdb:
+ return android_studio::EmulatorFeatureFlagState::SNAPSHOT_ADB;
case android::featurecontrol::QuickbootFileBacked:
- // TODO: uncomment the following line when we get the studio stats
- // ready
- // return android_studio::EmulatorFeatureFlagState::SNAPSHOT_ADB;
- // return android_studio::EmulatorFeatureFlagState::QUICKBOOT_FILE_BACKED;
+ return android_studio::EmulatorFeatureFlagState::QUICKBOOT_FILE_BACKED;
+ case android::featurecontrol::Offworld:
+ return android_studio::EmulatorFeatureFlagState::OFFWORLD;
+ case android::featurecontrol::OffworldDisableSecurity:
+ return android_studio::EmulatorFeatureFlagState::OFFWORLD_DISABLE_SECURITY;
case android::featurecontrol::Feature_n_items:
return android_studio::EmulatorFeatureFlagState::EMULATOR_FEATURE_FLAG_UNSPECIFIED;
}
diff --git a/android/android-emu/android/metrics/proto/studio_stats.proto b/android/android-emu/android/metrics/proto/studio_stats.proto
index 25388d8a14..215c771545 100755
--- a/android/android-emu/android/metrics/proto/studio_stats.proto
+++ b/android/android-emu/android/metrics/proto/studio_stats.proto
@@ -150,6 +150,7 @@ message AndroidStudioEvent {
// set when kind = STUDIO_PROCESS_STATS
// or kind = GRADLE_BUILD_PROFILE
// or kind = STUDIO_UI_OOM_DIALOG_EVENT
+ // or kind = STUDIO_LOW_MEMORY_EVENT
optional JavaProcessStats java_process_stats = 37;
// set when kind = STUDIO_PERFORMANCE_STATS
@@ -238,8 +239,8 @@ message AndroidStudioEvent {
// set when kind == LINT_ACTION
optional LintAction lint_action = 64;
- // set when kind = STUDIO_RUN_STATS
- optional StudioRunEvent studio_run_event = 65;
+ // set when kind = STUDIO_RUN_EVENT
+ optional StudioRunEvent studio_run_event = 65 [deprecated = true];
// set when kind = INTELLIJ_PROJECT_SIZE_STATS
repeated IntellijProjectSizeStats intellij_project_size_stats = 66;
@@ -263,6 +264,10 @@ message AndroidStudioEvent {
// Describes a group of event kinds related to each other.
// This is redundant in the presence of EventKind + event specific message,
// and is only necessary for events originally sent to GA.
+
+ // set when kind = RUN_EVENT
+ optional RunEvent run_event = 72;
+
enum EventCategory {
// The event was not grouped into any specific category (default).
NO_EVENT_CATEGORY = 0;
@@ -630,7 +635,7 @@ message AndroidStudioEvent {
LINT_ACTION = 133;
// Events related to a “Run” in studio
- STUDIO_RUN_EVENT = 134;
+ STUDIO_RUN_EVENT = 134 [ deprecated = true ];
// The event is related to count files in a search scope
INTELLIJ_PROJECT_SIZE_STATS = 135;
@@ -673,6 +678,12 @@ message AndroidStudioEvent {
PROJECT_STRUCTURE_DIALOG_FLAVORS_PRODUCTFLAVOR_REMOVE = 164;
PROJECT_STRUCTURE_DIALOG_FLAVORS_PRODUCTFLAVOR_RENAME = 165;
PROJECT_STRUCTURE_DIALOG_UPDATE_LIBRARY_VERSION = 166;
+
+ // Deploying and running apps from studio
+ RUN_EVENT = 167;
+
+ // Studio's LowMemoryWatcher triggered
+ STUDIO_LOW_MEMORY_EVENT = 168;
}
// Represents different Performance Monitoring types.
@@ -773,6 +784,8 @@ message AndroidStudioEvent {
APP_WIDGET = 35;
ANDROID_INSTANT_APP_PROJECT = 36;
ANDROID_INSTANT_APP_MODULE = 37;
+ ANDROID_INSTANT_APP_BUNDLE_PROJECT = 38;
+ ANDROID_INSTANT_APP_DYNAMIC_MODULE = 39;
}
// Reasons Gradle sync failed.
@@ -816,6 +829,8 @@ message ProductDetails {
optional CpuArchitecture os_architecture = 5;
// The state in the software lifecycle of this product.
optional SoftwareLifeCycleChannel channel = 6;
+ // Set when ProductKind = STUDIO, the look and feel of the product.
+ optional IdeTheme theme = 7;
// Various states in the software life cycle this software could be in.
enum SoftwareLifeCycleChannel {
@@ -841,6 +856,16 @@ message ProductDetails {
X86 = 1;
X86_64 = 2;
}
+
+ // The current theme set for Android Studio
+ enum IdeTheme {
+ UNKNOWN_THEME = 0;
+ DARCULA = 1;
+ LIGHT = 2;
+ LIGHT_MAC_NATIVE = 3;
+ LIGHT_WIN_NATIVE = 4;
+ GTK = 5;
+ }
}
// Describes a emulator or physical Android Device.
@@ -1107,7 +1132,10 @@ message EmulatorFeatureFlagState {
LOCATION_UI_V2 = 28;
GENERIC_INCREMENTAL_SNAPSHOT = 29;
SNAPSHOT_ADB = 30;
- // Next tag: 31
+ OFFWORLD = 31;
+ OFFWORLD_DISABLE_SECURITY = 32;
+ QUICKBOOT_FILE_BACKED = 33;
+ // Next tag: 34
}
// Which features were enabled by default or through the server-side config.
repeated EmulatorFeatureFlag attempted_enabled_feature_flags = 1;
@@ -1155,7 +1183,9 @@ enum EmulatorSnapshotSaveState {
EMULATOR_SNAPSHOT_SAVE_SKIPPED_NOT_BOOTED = 3;
// Saving skipped: No snapshot name given.
EMULATOR_SNAPSHOT_SAVE_SKIPPED_NO_SNAPSHOT = 4;
- // Next tag: 5
+ // Saving skipped: Disk under pressure.
+ EMULATOR_SNAPSHOT_SAVE_SKIPPED_DISK_PRESSURE = 5;
+ // Next tag: 6
}
// Generic snapshot load states. Distinguished
@@ -1792,6 +1822,8 @@ message JniInspectionEvent {
PARAMETERS_INSPECTION_EVENT = 3;
// Set when the OnLoad / OnUnload inspection quickfix is used.
ONLOAD_INSPECTION_EVENT = 4;
+ // Set when the FindMethod inspection quickfix is used.
+ FIND_METHOD_INSPECTION_EVENT = 5;
}
optional JniInspectionType type = 1;
@@ -4118,6 +4150,8 @@ message GradleSyncStats {
GRADLE_SYNC_TYPE_COMPOUND = 3;
// Shipped sync
GRADLE_SYNC_TYPE_SHIPPED = 4;
+ // New sync (without other features)
+ GRADLE_SYNC_TYPE_NEW_SYNC = 5;
}
}
@@ -4448,7 +4482,74 @@ message LintAction {
}
}
+message RunEvent {
+ enum Status {
+ UNKNOWN_STATUS = 0;
+ // The run finished successfully
+ SUCCESS = 1;
+ // The run finished with an error
+ FAIL = 2;
+ // The run was aborted mid-way
+ ABORT = 3;
+ }
+
+ optional Status status = 1;
+ // The executor used, from Executor::getId()
+ optional string executor = 2;
+ // Whether the app is debuggable
+ optional bool debuggable = 3;
+ // Whether instant run is enabled
+ optional bool instant_run_enabled = 4;
+ // Whether the apply changes button was used
+ optional bool apply_changes = 5;
+ // Whether the device dialog was open
+ optional bool user_selected_target = 6;
+ // Weather a device, like the emulator, was launched
+ optional bool launched_devices = 7;
+ // How many devices were targeted
+ optional int32 device_count = 8;
+ // True if this run event started mid-way
+ optional bool partial = 9;
+ // All the launch tasks executed during deploy
+ repeated LaunchTaskDetail launch_task_detail = 10;
+
+ // Timestamps in expected order
+ // The run cycle begins
+ optional int64 begin_timestamp_ms = 11;
+ // The before-run tasks start (i.e. running gradle)
+ optional int64 begin_before_run_tasks_timestamp_ms = 12;
+ // End of the before-run tasks
+ optional int64 end_before_run_tasks_timestamp_ms = 13;
+ // Before launching, we must wait for devices
+ optional int64 begin_wait_for_device_timestamp_ms = 14;
+ // All devices are now ready
+ optional int64 end_wait_for_device_timestamp_ms = 15;
+ // Launch tasks start being executed
+ optional int64 begin_launch_tasks_timestamp_ms = 16;
+ // All launch tasks completed
+ optional int64 end_launch_tasks_timestamp_ms = 17;
+ // The run cycle finished
+ optional int64 end_timestamp_ms = 18;
+
+ // Whether the run configuration was set to deploy as instant
+ optional bool deployed_as_instant = 19;
+ // Whether the run configuration was set to deploy from app bundle
+ optional bool deployed_from_bundle = 20;
+}
+
+message LaunchTaskDetail {
+ // The id of the task from LaunchTask::getId()
+ optional string id = 1;
+ // This task starts
+ optional int64 start_timestamp_ms = 2;
+ // This task ends
+ optional int64 end_timestamp_ms = 3;
+ // For the tasks that deploy artifacts, their details.
+ repeated ArtifactDetail artifact = 4;
+}
+
message StudioRunEvent {
+ option deprecated = true;
enum RunType {
UNKNOWN = 0;
RUN = 1;
@@ -4814,6 +4915,8 @@ message UserSentiment {
UNKNOWN_SENTIMENT_STATE = 0;
POSITIVE = 1;
NEGATIVE = 2;
+ // The user is feeling strong enough about the issue to start filing a bug.
+ FILE_BUG = 3;
}
}
@@ -4824,6 +4927,7 @@ message EmulatorBootInfo {
BOOT_COMPLETED = 1;
BOOT_FAILED = 2;
}
+ // Outcome of the emulator boot.
optional BootStatus boot_status = 1;
// How long it took to boot, either successfully or not.
optional uint64 duration_ms = 2;
diff --git a/android/android-emu/android/multi-instance.cpp b/android/android-emu/android/multi-instance.cpp
index fec206c501..e8aabaa943 100644
--- a/android/android-emu/android/multi-instance.cpp
+++ b/android/android-emu/android/multi-instance.cpp
@@ -62,6 +62,7 @@ bool android::multiinstance::updateInstanceShareMode(
}
if (android::base::updateFileShare(sMultiInstanceState->sharedFile,
shareMode)) {
+ assert(sMultiInstanceState->updateDriveShareModeFunc);
if (sMultiInstanceState->updateDriveShareModeFunc) {
if (!sMultiInstanceState->updateDriveShareModeFunc(snapshotName,
shareMode)) {
diff --git a/android/android-emu/android/offworld/OffworldPipe.cpp b/android/android-emu/android/offworld/OffworldPipe.cpp
new file mode 100644
index 0000000000..171f9e6d46
--- /dev/null
+++ b/android/android-emu/android/offworld/OffworldPipe.cpp
@@ -0,0 +1,236 @@
+// Copyright 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#include "android/base/Log.h"
+#include "android/base/async/ThreadLooper.h"
+#include "android/base/memory/LazyInstance.h"
+#include "android/base/synchronization/Lock.h"
+#include "android/emulation/AndroidMessagePipe.h"
+#include "android/featurecontrol/FeatureControl.h"
+#include "android/metrics/MetricsLogging.h"
+#include "android/offworld/proto/offworld.pb.h"
+#include "android/snapshot/SnapshotAPI.h"
+#include "android/snapshot/common.h"
+#include "android/snapshot/interface.h"
+
+#include <assert.h>
+#include <atomic>
+#include <cstdint>
+#include <memory>
+#include <sstream>
+#include <vector>
+
+using android::base::LazyInstance;
+using android::base::Lock;
+using android::base::Optional;
+
+namespace {
+
+struct OffworldState {
+ android::base::Lock sLock = {};
+};
+
+static constexpr uint32_t kProtocolVersion = 1;
+android::base::LazyInstance<OffworldState> sOffworldState;
+
+static std::vector<uint8_t> protoToVector(
+ const google::protobuf::Message& message) {
+ const int size = message.ByteSize();
+ std::vector<uint8_t> result(static_cast<size_t>(size));
+ message.SerializeToArray(result.data(), size);
+ return result;
+}
+
+class OffworldPipe : public android::AndroidMessagePipe {
+public:
+ class Service : public android::AndroidPipe::Service {
+ public:
+ Service() : android::AndroidPipe::Service("OffworldPipe") {}
+ bool canLoad() const override { return true; }
+
+ virtual android::AndroidPipe* create(void* hwPipe, const char* args)
+ override {
+ // To avoid complicated synchronization issues, only 1 instance
+ // of a OffworldPipe is allowed at a time
+ if (sOffworldState->sLock.tryLock()) {
+ return new OffworldPipe(hwPipe, this);
+ } else {
+ return nullptr;
+ }
+ }
+
+ android::AndroidPipe* load(void* hwPipe,
+ const char* args,
+ android::base::Stream* stream) override {
+ __attribute__((unused)) bool success =
+ sOffworldState->sLock.tryLock();
+ assert(success);
+ return new OffworldPipe(hwPipe, this, stream);
+ }
+ };
+ OffworldPipe(void* hwPipe,
+ Service* service,
+ android::base::Stream* loadStream = nullptr)
+ : android::AndroidMessagePipe(hwPipe,
+ service,
+ std::bind(&OffworldPipe::decodeAndExecute,
+ this,
+ std::placeholders::_1,
+ std::placeholders::_2),
+ loadStream) {
+ ANDROID_IF_DEBUG(assert(sOffworldState->sLock.isLocked()));
+ const bool isLoad = static_cast<bool>(loadStream);
+ if (isLoad) {
+ // TODO(jwmcglynn): Store state on the stream to make sure handshake
+ // was successful.
+ mHandshakeComplete = true;
+ resetRecvPayload(android::snapshot::getLoadMetadata());
+ }
+ }
+ ~OffworldPipe() { sOffworldState->sLock.unlock(); }
+
+private:
+ void decodeAndExecute(const std::vector<uint8_t>& input,
+ std::vector<uint8_t>* output) {
+ output->clear();
+
+ if (!mHandshakeComplete) {
+ offworld::ConnectHandshake request;
+ offworld::ConnectHandshakeResponse response;
+ response.set_result(
+ offworld::ConnectHandshakeResponse::RESULT_NO_ERROR);
+
+ bool error = false;
+ if (request.ParseFromArray(input.data(), input.size())) {
+ if (request.version() != kProtocolVersion) {
+ VLOG(offworld) << "Unsupported offworld version: "
+ << request.version();
+ error = true;
+ response.set_result(offworld::ConnectHandshakeResponse::
+ RESULT_ERROR_VERSION_MISMATCH);
+ }
+ } else {
+ LOG(ERROR) << "Failed to parse offworld handshake.";
+ error = true;
+ response.set_result(offworld::ConnectHandshakeResponse::
+ RESULT_ERROR_UNKNOWN);
+ }
+
+ // TODO(jwmcglynn): Close the pipe if there was a handshake error.
+ if (!error) {
+ mHandshakeComplete = true;
+ }
+
+ *output = std::move(protoToVector(response));
+
+ } else {
+ offworld::Request request;
+ offworld::Response response;
+ bool shouldReply = false;
+
+ if (!request.ParseFromArray(input.data(), input.size())) {
+ LOG(ERROR) << "Offworld lib message parsing failed.";
+ } else {
+ switch (request.module_case()) {
+ case offworld::Request::ModuleCase::kSnapshot:
+ handleSnapshotPb(request.snapshot(), &shouldReply,
+ &response);
+ break;
+ case offworld::Request::ModuleCase::kAutomation:
+ // TODO
+ break;
+ default:
+ LOG(ERROR) << "Offworld lib received unrecognized "
+ "message!";
+ }
+ }
+ if (shouldReply) {
+ *output = std::move(protoToVector(response));
+ }
+ }
+ }
+
+ static void handleSnapshotPb(const offworld::SnapshotRequest& request,
+ bool* shouldReply,
+ offworld::Response* response) {
+ using MS = offworld::SnapshotRequest;
+
+ switch (request.function_case()) {
+ case MS::FunctionCase::kCreateCheckpoint: {
+ android::snapshot::createCheckpoint(
+ request.create_checkpoint().snapshot_name());
+ *shouldReply = true;
+ response->Clear();
+ break;
+ }
+ case MS::FunctionCase::kGotoCheckpoint: {
+ const MS::GotoCheckpoint& gotoCheckpoint =
+ request.goto_checkpoint();
+
+ Optional<android::base::FileShare> shareMode;
+
+ if (gotoCheckpoint.has_share_mode()) {
+ switch (gotoCheckpoint.share_mode()) {
+ case MS::GotoCheckpoint::UNKNOWN:
+ case MS::GotoCheckpoint::UNCHANGED:
+ break;
+ case MS::GotoCheckpoint::READ_ONLY:
+ shareMode = android::base::FileShare::Read;
+ break;
+ case MS::GotoCheckpoint::WRITABLE:
+ shareMode = android::base::FileShare::Write;
+ break;
+ default:
+ LOG(WARNING) << "Unsupported share mode, "
+ "defaulting to unchanged.";
+ break;
+ }
+ }
+
+ android::snapshot::gotoCheckpoint(
+ gotoCheckpoint.snapshot_name(),
+ gotoCheckpoint.metadata(), shareMode);
+ *shouldReply = false;
+ break;
+ }
+ case MS::FunctionCase::kForkReadOnlyInstances: {
+ android::snapshot::forkReadOnlyInstances(
+ request.fork_read_only_instances().num_instances());
+ *shouldReply = false;
+ break;
+ }
+ case MS::FunctionCase::kDoneInstance: {
+ android::snapshot::doneInstance();
+ *shouldReply = false;
+ break;
+ }
+ default:
+ LOG(ERROR) << "Unrecognized offworld snapshot message";
+ *shouldReply = false;
+ }
+ }
+
+ bool mHandshakeComplete = false;
+};
+
+} // namespace
+
+namespace android {
+namespace offworld {
+
+void registerOffworldPipeService() {
+ if (android::featurecontrol::isEnabled(android::featurecontrol::Offworld)) {
+ android::AndroidPipe::Service::add(new OffworldPipe::Service());
+ }
+}
+
+} // namespace offworld
+} // namespace android
diff --git a/android/android-emu/android/snapshot/SnapshotPipe.h b/android/android-emu/android/offworld/OffworldPipe.h
index 80e7ab4eea..740673295a 100644
--- a/android/android-emu/android/snapshot/SnapshotPipe.h
+++ b/android/android-emu/android/offworld/OffworldPipe.h
@@ -12,9 +12,9 @@
#pragma once
namespace android {
-namespace snapshot {
+namespace offworld {
-void registerSnapshotPipeService();
+void registerOffworldPipeService();
-}
-} // namespace android \ No newline at end of file
+} // namespace offworld
+} // namespace android
diff --git a/android/android-emu/android/offworld/proto/OffworldProto.mk b/android/android-emu/android/offworld/proto/OffworldProto.mk
new file mode 100644
index 0000000000..314ea6cfc1
--- /dev/null
+++ b/android/android-emu/android/offworld/proto/OffworldProto.mk
@@ -0,0 +1,24 @@
+#
+# A static library containing the offworld protobuf generated code
+#
+
+# Compute OFFWORLDPROTO_DIR relative to LOCAL_PATH
+
+OFFWORLDPROTO_DIR := $(call my-dir)
+OFFWORLDPROTO_DIR := $(OFFWORLDPROTO_DIR:$(LOCAL_PATH)/%=%)
+
+$(call start-emulator-library,liboffworld_proto)
+
+LOCAL_CFLAGS := $(EMULATOR_COMMON_CFLAGS)
+
+LOCAL_C_INCLUDES := \
+ $(PROTOBUF_INCLUDES) \
+
+LOCAL_PROTO_SOURCES := \
+ $(OFFWORLDPROTO_DIR)/offworld.proto \
+
+$(call end-emulator-library)
+
+OFFWORLD_PROTO_STATIC_LIBRARIES := \
+ liboffworld_proto \
+ $(PROTOBUF_STATIC_LIBRARIES) \
diff --git a/android/android-emu/android/offworld/proto/offworld.proto b/android/android-emu/android/offworld/proto/offworld.proto
new file mode 100644
index 0000000000..f715282914
--- /dev/null
+++ b/android/android-emu/android/offworld/proto/offworld.proto
@@ -0,0 +1,178 @@
+syntax = "proto2";
+
+package offworld;
+
+// Offworld is a protocol implemented by the Android Emulator to enable
+// controlling features of the emulator from the guest OS.
+//
+// The protocol is implemented on top of qemu pipe service, and the underlying
+// encoding of the pipe is a stream of protobufs, with the length of each
+// message encoded as a little-endian uint32 immediately before it:
+//
+// <uint32 length> <length bytes of binary-serialized protobuf>
+//
+// Upon receiving each message, the protobuf is deserialized from its binary
+// form and dispatched.
+//
+// On connect, the guest is expected to first send a ConnectHandshake. For
+// notational purposes, assume that the protobuf has been serialized with the
+// above encoding. The guest then waits for the host to respond with a
+// ConnectHandshakeResponse message.
+//
+// guest->host: ConnectHandshake { version: 1 }
+// host->guest: ConnectHandshakeResponse { result: OK }
+//
+// The ConnectHandshakeResponse will either contain Result.OK or an error.
+// If an error value is returned the host will not handle any further guest
+// messages.
+//
+// After the connection is established, the guest may send Request messages, and
+// will receive synchronous replies with a Response message. The response may
+// include a pending_async_id, in which case there may be additional messages
+// with an AsyncResponse payload corresponding to that async_id.
+//
+// For synchronous messages, the flow is:
+//
+// guest->host: Request { snapshot { create_checkpoint {
+// snapshot_name: "Test" } } }
+// host->guest: Response { result: OK, snapshot { create_checkpoint { ... } } }
+//
+//
+// For asynchronous messages, a synchronous response is immediately returned
+// with a pending_async_id, followed by one or more AsyncResponse messages with
+// a matching async_id. Multiple async messages may be generated as a stream;
+// to determine when the stream is complete check AsyncResponse.complete.
+//
+// guest->host: Request { automation { replay { event: "..." } } }
+// host->guest: Response { result: OK, pending_async_id: 1 } }
+// ...
+// host->guest: Response { async { async_id: 1, complete: true, automation {
+// replay_complete { } } } }
+
+message ConnectHandshake {
+ optional uint32 version = 1;
+}
+
+message ConnectHandshakeResponse {
+ enum Result {
+ RESULT_NO_ERROR = 0;
+ RESULT_ERROR_UNKNOWN = 1;
+ RESULT_ERROR_VERSION_MISMATCH = 2;
+ }
+
+ optional Result result = 1;
+}
+
+//
+// Requests
+//
+
+message Request {
+ oneof module {
+ SnapshotRequest snapshot = 1;
+ AutomationRequest automation = 2;
+ }
+}
+
+message SnapshotRequest {
+ message CreateCheckpoint {
+ optional string snapshot_name = 1;
+ }
+ message GotoCheckpoint {
+ enum ShareMode {
+ UNKNOWN = 0;
+ UNCHANGED = 1;
+ WRITABLE = 2;
+ READ_ONLY = 3;
+ };
+ optional string snapshot_name = 1;
+ optional bytes metadata = 2;
+ optional ShareMode share_mode = 3;
+ }
+ message ForkReadOnlyInstances {
+ optional int32 num_instances = 1;
+ }
+ message DoneInstance {}
+
+ oneof function {
+ CreateCheckpoint create_checkpoint = 1;
+ GotoCheckpoint goto_checkpoint = 2;
+ ForkReadOnlyInstances fork_read_only_instances = 3;
+ DoneInstance done_instance = 4;
+ }
+}
+
+message AutomationRequest {}
+
+//
+// Responses
+//
+
+message Response {
+ enum Result {
+ RESULT_NO_ERROR = 0;
+ RESULT_ERROR_UNKNOWN = 1;
+ RESULT_ERROR_ACCESS_DENIED = 2;
+ }
+
+ optional Result result = 1;
+
+ oneof module {
+ // Sync.
+ SnapshotResponse snapshot = 100;
+
+ // Async.
+ // Indicates that this is an async messages and there will be additional
+ // messages with a matching module.async.async_id.
+ uint32 pending_async_id = 200;
+ // Async response.
+ AsyncResponse async = 201;
+ }
+}
+
+message AsyncResponse {
+ // An async id corresponding to the async_id from the original synchronous
+ // response.
+ optional uint32 async_id = 1;
+ // True if there will be no further messages with this async_id.
+ optional bool complete = 2;
+
+ oneof module {
+ AutomationAsyncResponse automation = 100;
+ }
+}
+
+message SnapshotResponse {
+ message CreateCheckpoint {
+ optional bytes metadata = 1;
+ }
+ message GotoCheckpoint {}
+ message ForkReadOnlyInstances {
+ optional int32 instance_id = 1;
+ }
+ message DoneInstance {}
+
+ oneof function {
+ CreateCheckpoint create_checkpoint = 1;
+ GotoCheckpoint goto_checkpoint = 2;
+ ForkReadOnlyInstances fork_read_only_instances = 3;
+ DoneInstance done_instance = 4;
+ }
+}
+
+message AutomationAsyncResponse {
+ message ReplayComplete {}
+
+ message EventGenerated {
+ // An text-encoded protobuf containing the initial state of the system,
+ // may be replayed as a standard event.
+ optional string initial_state = 1;
+ // A text-encoded protobuf containing a replayable event.
+ optional string event = 2;
+ }
+
+ oneof function {
+ ReplayComplete replay_complete = 1;
+ EventGenerated event_generated = 2;
+ }
+}
diff --git a/android/android-emu/android/opengl/EmuglBackendList_unittest.cpp b/android/android-emu/android/opengl/EmuglBackendList_unittest.cpp
index 6e2ed43242..a8f6af0418 100644
--- a/android/android-emu/android/opengl/EmuglBackendList_unittest.cpp
+++ b/android/android-emu/android/opengl/EmuglBackendList_unittest.cpp
@@ -11,7 +11,7 @@
#include "android/opengl/EmuglBackendList.h"
-#include "android/base/StringFormat.h"
+#include "android/base/files/PathUtils.h"
#include "android/base/testing/TestSystem.h"
#include "android/base/testing/TestTempDir.h"
@@ -22,13 +22,13 @@ namespace opengl {
#define ARRAYLEN(x) (sizeof(x)/sizeof(x[0]))
-using android::base::StringFormat;
+using android::base::pj;
using android::base::System;
using android::base::TestTempDir;
using android::base::TestSystem;
static std::string makeLibSubPath(const char* name) {
- return StringFormat("foo/%s/%s", System::kLibSubDir, name);
+ return pj("foo", System::kLibSubDir, name);
}
static void makeLibSubDir(TestTempDir* dir, const char* name) {
@@ -98,21 +98,21 @@ TEST(EmuglBackendList, getBackendLibPath) {
const size_t kDataLen = ARRAYLEN(kData);
for (size_t n = 0; n < kDataLen; ++n) {
- std::string file = "gles_bar/";
- file += kData[n].libName;
+ std::string file =
+ pj("gles_bar", kData[n].libName);
makeLibSubFile(myDir, file.c_str());
}
- EmuglBackendList list("/foo", System::kProgramBitness);
+ auto sysdir = pj("/", "foo");
+ EmuglBackendList list(sysdir.c_str(), System::kProgramBitness);
const std::vector<std::string>& names = list.names();
EXPECT_EQ(1U, names.size());
EXPECT_STREQ("bar", names[0].c_str());
for (size_t n = 0; n < kDataLen; ++n) {
- std::string expected = StringFormat("/foo/%s/gles_bar/%s",
- System::kLibSubDir,
- kData[n].libName);
+ std::string expected =
+ pj("/", "foo", System::kLibSubDir, "gles_bar", kData[n].libName);
std::string libdir;
EXPECT_TRUE(list.getBackendLibPath("bar", kData[n].library, &libdir));
EXPECT_TRUE(list.contains("bar"));
diff --git a/android/android-emu/android/opengles.cpp b/android/android-emu/android/opengles.cpp
index 74ac0733a0..5f06d1f84e 100644
--- a/android/android-emu/android/opengles.cpp
+++ b/android/android-emu/android/opengles.cpp
@@ -19,6 +19,7 @@
#include "android/opengl/emugl_config.h"
#include "android/opengl/logger.h"
#include "android/snapshot/PathUtils.h"
+#include "android/snapshot/Snapshotter.h"
#include "android/utils/bufprint.h"
#include "android/utils/debug.h"
#include "android/utils/dll.h"
@@ -33,8 +34,20 @@
#include <stdio.h>
#include <stdlib.h>
-#define D(...) VERBOSE_PRINT(init,__VA_ARGS__)
-#define DD(...) VERBOSE_PRINT(gles,__VA_ARGS__)
+#define D(...) do { \
+ VERBOSE_PRINT(init,__VA_ARGS__); \
+ android_opengl_logger_write(__VA_ARGS__); \
+} while(0);
+
+#define DD(...) do { \
+ VERBOSE_PRINT(gles,__VA_ARGS__); \
+ android_opengl_logger_write(__VA_ARGS__); \
+} while(0);
+
+#define E(fmt,...) do { \
+ derror(fmt, ##__VA_ARGS__); \
+ android_opengl_logger_write(fmt "\n", ##__VA_ARGS__); \
+} while(0);
/* Name of the GLES rendering library we're going to use */
#if UINTPTR_MAX == UINT32_MAX
@@ -66,7 +79,7 @@ static int initOpenglesEmulationFuncs(ADynamicLibrary* rendererLib) {
using type = ret(sig); \
name = (type*)symbol; \
} else { \
- derror("GLES emulation: Could not find required symbol (%s): %s", #name, error); \
+ E("GLES emulation: Could not find required symbol (%s): %s", #name, error); \
free(error); \
return -1; \
}
@@ -76,15 +89,19 @@ static int initOpenglesEmulationFuncs(ADynamicLibrary* rendererLib) {
return 0;
}
-static bool sRendererUsesSubWindow;
-static bool sEgl2egl;
+static bool sOpenglLoggerInitialized = false;
+static bool sRendererUsesSubWindow = false;
+static bool sEgl2egl = false;
static emugl::RenderLibPtr sRenderLib = nullptr;
static emugl::RendererPtr sRenderer = nullptr;
-static EGLDispatch* sEgl;
-static GLESv2Dispatch* sGLES;
+static EGLDispatch* sEgl = nullptr;
+static GLESv2Dispatch* sGLES = nullptr;
int android_initOpenglesEmulation() {
+ android_init_opengl_logger();
+ sOpenglLoggerInitialized = true;
+
char* error = NULL;
if (sRenderLib != NULL)
@@ -95,20 +112,23 @@ int android_initOpenglesEmulation() {
ADynamicLibrary* const rendererSo =
adynamicLibrary_open(RENDERER_LIB_NAME, &error);
if (rendererSo == NULL) {
- derror("Could not load OpenGLES emulation library [%s]: %s",
+ E("Could not load OpenGLES emulation library [%s]: %s",
RENDERER_LIB_NAME, error);
return -1;
}
/* Resolve the functions */
if (initOpenglesEmulationFuncs(rendererSo) < 0) {
- derror("OpenGLES emulation library mismatch. Be sure to use the correct version!");
+ E("OpenGLES emulation library mismatch. Be sure to use the correct version!");
+ crashhandler_append_message_format(
+ "OpenGLES emulation library mismatch. Be sure to use the correct version!");
goto BAD_EXIT;
}
sRenderLib = initLibrary();
if (!sRenderLib) {
- derror("OpenGLES initialization failed!");
+ E("OpenGLES initialization failed!");
+ crashhandler_append_message_format("OpenGLES initialization failed!");
goto BAD_EXIT;
}
@@ -132,7 +152,7 @@ int android_initOpenglesEmulation() {
return 0;
BAD_EXIT:
- derror("OpenGLES emulation library could not be initialized!");
+ E("OpenGLES emulation library could not be initialized!");
adynamicLibrary_close(rendererSo);
return -1;
}
@@ -147,11 +167,24 @@ android_startOpenglesRenderer(int width, int height, bool guestPhoneApi, int gue
return -1;
}
+ if (!sEgl) {
+ D("Can't start OpenGLES renderer without EGL libraries");
+ return -1;
+ }
+
+ if (!sGLES) {
+ D("Can't start OpenGLES renderer without GLES libraries");
+ return -1;
+ }
+
if (sRenderer) {
return 0;
}
- android_init_opengl_logger();
+ const GpuInfoList& gpuList = globalGpuInfoList();
+ std::string gpuInfoAsString = gpuList.dump();
+ android_opengl_logger_write("%s: gpu info", __func__);
+ android_opengl_logger_write("%s", gpuInfoAsString.c_str());
sRenderLib->setRenderer(emuglConfig_get_current_renderer());
sRenderLib->setAvdInfo(guestPhoneApi, guestApiLevel);
@@ -177,6 +210,12 @@ android_startOpenglesRenderer(int width, int height, bool guestPhoneApi, int gue
sRenderLib->setDmaOps(dma_ops);
sRenderer = sRenderLib->initRenderer(width, height, sRendererUsesSubWindow, sEgl2egl);
+ android::snapshot::Snapshotter::get().addOperationCallback(
+ [](android::snapshot::Snapshotter::Operation op,
+ android::snapshot::Snapshotter::Stage stage) {
+ sRenderer->snapshotOperationCallback(op, stage);
+ });
+
if (!sRenderer) {
D("Can't start OpenGLES renderer?");
return -1;
@@ -290,6 +329,10 @@ android_stopOpenglesRenderer(bool wait)
}
}
+static emugl::RenderOpt sOpt;
+static int sWidth, sHeight;
+static int sNewWidth, sNewHeight;
+
int
android_showOpenglesWindow(void* window, int wx, int wy, int ww, int wh,
int fbw, int fbh, float dpr, float rotation,
@@ -302,6 +345,8 @@ android_showOpenglesWindow(void* window, int wx, int wy, int ww, int wh,
bool success = sRenderer->showOpenGLSubwindow(
win, wx, wy, ww, wh, fbw, fbh, dpr, rotation,
deleteExisting);
+ sNewWidth = ww * dpr;
+ sNewHeight = wh * dpr;
return success ? 0 : -1;
}
@@ -380,16 +425,14 @@ void android_cleanupProcGLObjects(uint64_t puid) {
}
}
-static void* sDisplay, * sSurface, * sConfig, * sContext;
-static int sWidth, sHeight;
+
+static void* sContext, * sRenderContext, * sSurface;
static EGLint s_gles_attr[5];
extern void tinyepoxy_init(GLESv2Dispatch* gles, int version);
static bool prepare_epoxy(void) {
- void* unused;
- if (!sRenderLib->getDSCC(&sDisplay, &sSurface, &sConfig, &unused,
- &sWidth, &sHeight)) {
+ if (!sRenderLib->getOpt(&sOpt)) {
return false;
}
int major, minor;
@@ -399,11 +442,26 @@ static bool prepare_epoxy(void) {
EGL_CONTEXT_MINOR_VERSION_KHR, minor,
EGL_NONE
};
- sContext = sEgl->eglCreateContext(sDisplay, sConfig, EGL_NO_CONTEXT,
+ sContext = sEgl->eglCreateContext(sOpt.display, sOpt.config, EGL_NO_CONTEXT,
attr);
if (sContext == nullptr) {
return false;
}
+ sRenderContext = sEgl->eglCreateContext(sOpt.display, sOpt.config,
+ sContext, attr);
+ if (sRenderContext == nullptr) {
+ return false;
+ }
+ static constexpr EGLint surface_attr[] = {
+ EGL_WIDTH, 1,
+ EGL_HEIGHT, 1,
+ EGL_NONE
+ };
+ sSurface = sEgl->eglCreatePbufferSurface(sOpt.display, sOpt.config,
+ surface_attr);
+ if (sSurface == EGL_NO_SURFACE) {
+ return false;
+ }
static_assert(sizeof(attr) == sizeof(s_gles_attr), "Mismatch");
memcpy(s_gles_attr, attr, sizeof(s_gles_attr));
tinyepoxy_init(sGLES, major * 10 + minor);
@@ -419,16 +477,16 @@ void * android_gl_create_context(DisplayChangeListener * unuse1,
if (!ok) {
return nullptr;
}
- sEgl->eglMakeCurrent(sDisplay, sSurface, sSurface, sContext);
- return sEgl->eglCreateContext(sDisplay, sConfig, sContext, s_gles_attr);
+ sEgl->eglMakeCurrent(sOpt.display, sSurface, sSurface, sContext);
+ return sEgl->eglCreateContext(sOpt.display, sOpt.config, sContext, s_gles_attr);
}
void android_gl_destroy_context(DisplayChangeListener* unused, void * ctx) {
- sEgl->eglDestroyContext(sDisplay, ctx);
+ sEgl->eglDestroyContext(sOpt.display, ctx);
}
int android_gl_make_context_current(DisplayChangeListener* unused, void * ctx) {
- return sEgl->eglMakeCurrent(sDisplay, sSurface, sSurface, ctx);
+ return sEgl->eglMakeCurrent(sOpt.display, sSurface, sSurface, ctx);
}
static GLuint s_tex_id, s_fbo_id;
@@ -447,11 +505,18 @@ void android_gl_scanout_texture(DisplayChangeListener* unuse,
s_gfx_h = h;
s_gfx_w = w;
s_y0_top = backing_y_0_top;
- sEgl->eglMakeCurrent(sDisplay, sSurface, sSurface, sContext);
+ if (sNewWidth != sWidth || sNewHeight != sHeight) {
+ sRenderLib->getOpt(&sOpt);
+ sWidth = sNewWidth;
+ sHeight = sNewHeight;
+ }
+ sEgl->eglMakeCurrent(sOpt.display, sOpt.surface, sOpt.surface,
+ sRenderContext);
if (!s_fbo_id) {
sGLES->glGenFramebuffers(1, &s_fbo_id);
}
sGLES->glBindFramebuffer(GL_FRAMEBUFFER_EXT, s_fbo_id);
+ sGLES->glViewport(0, 0, h, w);
sGLES->glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, backing_id, 0);
}
@@ -462,7 +527,8 @@ void android_gl_scanout_flush(DisplayChangeListener* unuse,
if (!s_fbo_id) {
return;
}
- sEgl->eglMakeCurrent(sDisplay, sSurface, sSurface, sContext);
+ sEgl->eglMakeCurrent(sOpt.display, sOpt.surface, sOpt.surface,
+ sRenderContext);
sGLES->glBindFramebuffer(GL_READ_FRAMEBUFFER, s_fbo_id);
sGLES->glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
@@ -474,6 +540,6 @@ void android_gl_scanout_flush(DisplayChangeListener* unuse,
sGLES->glBlitFramebuffer(0, y1, s_gfx_w, y2,
0, 0, sWidth, sHeight,
GL_COLOR_BUFFER_BIT, GL_NEAREST);
- sEgl->eglSwapBuffers(sDisplay, sSurface);
+ sEgl->eglSwapBuffers(sOpt.display, sOpt.surface);
sGLES->glBindFramebuffer(GL_FRAMEBUFFER_EXT, s_fbo_id);
}
diff --git a/android/android-emu/android/physics/GlmHelpers.h b/android/android-emu/android/physics/GlmHelpers.h
new file mode 100644
index 0000000000..20f4aaec2c
--- /dev/null
+++ b/android/android-emu/android/physics/GlmHelpers.h
@@ -0,0 +1,30 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#pragma once
+
+#include <glm/gtc/epsilon.hpp>
+#include <glm/gtc/quaternion.hpp>
+#include <glm/vec3.hpp>
+
+constexpr float kPhysicsEpsilon = 0.001f;
+
+inline bool vecNearEqual(glm::vec3 lhs, glm::vec3 rhs) {
+ return glm::all(glm::epsilonEqual(lhs, rhs, kPhysicsEpsilon));
+}
+
+inline bool quaternionNearEqual(glm::quat lhs, glm::quat rhs) {
+ return glm::all(glm::epsilonEqual(lhs, rhs, kPhysicsEpsilon)) ||
+ glm::all(glm::epsilonEqual(lhs, -rhs, kPhysicsEpsilon));
+}
diff --git a/android/android-emu/android/physics/InertialModel_unittest.cpp b/android/android-emu/android/physics/InertialModel_unittest.cpp
index dde4ae3fe7..2636b104e8 100644
--- a/android/android-emu/android/physics/InertialModel_unittest.cpp
+++ b/android/android-emu/android/physics/InertialModel_unittest.cpp
@@ -248,7 +248,6 @@ TEST(InertialModel, MultipleTargets) {
EXPECT_NEAR(singleIntegratedPosition.z, targetPosition.z, 0.05f);
}
-
TEST(InertialModel, TargetPosition) {
TestSystem testSystem("/", System::kProgramBitness);
@@ -309,6 +308,44 @@ TEST(InertialModel, TargetVelocity) {
oneSecondLaterRetrievedPosition.z, 0.0001f);
}
+TEST(InertialModel, TargetPositionForVelocity) {
+ TestSystem testSystem("/", System::kProgramBitness);
+
+ const glm::vec3 velocity(10.0f, -5.f, 1.f);
+
+ InertialModel inertialModel;
+ inertialModel.setCurrentTime(0UL);
+ inertialModel.setTargetVelocity(velocity, PHYSICAL_INTERPOLATION_STEP);
+
+ inertialModel.setCurrentTime(500000000UL);
+
+ const glm::vec3 targetPosition =
+ inertialModel.getPosition(PARAMETER_VALUE_TYPE_TARGET);
+
+ EXPECT_NEAR(targetPosition.x, 0.f, 0.0001f);
+ EXPECT_NEAR(targetPosition.y, 0.f, 0.0001f);
+ EXPECT_NEAR(targetPosition.z, 0.f, 0.0001f);
+}
+
+TEST(InertialModel, TargetVelocityForPosition) {
+ TestSystem testSystem("/", System::kProgramBitness);
+
+ const glm::vec3 velocity(3.0f, 8.f, -2.f);
+ const glm::vec3 position(10.0f, -5.f, 1.f);
+
+ InertialModel inertialModel;
+ inertialModel.setCurrentTime(0UL);
+ inertialModel.setTargetVelocity(velocity, PHYSICAL_INTERPOLATION_STEP);
+ inertialModel.setTargetPosition(position, PHYSICAL_INTERPOLATION_SMOOTH);
+
+ const glm::vec3 targetVelocity =
+ inertialModel.getVelocity(PARAMETER_VALUE_TYPE_TARGET);
+
+ EXPECT_NEAR(targetVelocity.x, 0.f, 0.0001f);
+ EXPECT_NEAR(targetVelocity.y, 0.f, 0.0001f);
+ EXPECT_NEAR(targetVelocity.z, 0.f, 0.0001f);
+}
+
TEST(InertialModel, CurrentInitialPositionValue) {
TestSystem testSystem("/", System::kProgramBitness);
diff --git a/android/android-emu/android/physics/PhysicalModel.cpp b/android/android-emu/android/physics/PhysicalModel.cpp
index 19bca88d23..b025bc5cda 100644
--- a/android/android-emu/android/physics/PhysicalModel.cpp
+++ b/android/android-emu/android/physics/PhysicalModel.cpp
@@ -21,7 +21,9 @@
#include <glm/gtx/quaternion.hpp>
#include <glm/vec3.hpp>
+#include "android/automation/AutomationController.h"
#include "android/automation/AutomationEventSink.h"
+#include "android/base/async/ThreadLooper.h"
#include "android/base/files/PathUtils.h"
#include "android/base/files/StdioStream.h"
#include "android/base/system/System.h"
@@ -29,8 +31,6 @@
#include "android/hw-sensors.h"
#include "android/physics/AmbientEnvironment.h"
#include "android/physics/InertialModel.h"
-#include "android/utils/debug.h"
-#include "android/utils/looper.h"
#include "android/utils/stream.h"
#include <cstdio>
@@ -40,6 +40,7 @@
#define W(...) dwarning(__VA_ARGS__)
#define E(...) derror(__VA_ARGS__)
+using android::automation::AutomationController;
using android::base::PathUtils;
using android::base::StdioStream;
using android::base::System;
@@ -65,7 +66,7 @@ namespace physics {
*/
class PhysicalModelImpl {
public:
- PhysicalModelImpl(bool shouldTick);
+ PhysicalModelImpl();
~PhysicalModelImpl();
/*
@@ -87,6 +88,11 @@ public:
void setCurrentTime(int64_t time_ns);
/*
+ * Replays a PhysicalModelEvent onto the current PhysicalModel state.
+ */
+ void replayEvent(const pb::PhysicalModelEvent& event);
+
+ /*
* Sets the target value for the given physical parameter that the physical
* model should move towards and records the result.
* Can be called from any thread.
@@ -149,37 +155,37 @@ public:
void setPhysicalStateAgent(const QAndroidPhysicalStateAgent* agent);
/*
- * Save the current physical state to the given stream.
+ * Set or unset the automation controller.
+ * Can be called from any thread.
*/
- void save(Stream* f);
+ void setAutomationController(AutomationController* controller);
/*
- * Load the current physical state from the given stream.
+ * Save the full physical state to the given stream for snapshots.
*/
- int load(Stream* f);
+ void snapshotSave(Stream* f);
/*
- * Start recording physical model changes to the given file.
- * Returns 0 if successful.
+ * Load the full physical state from the given stream.
*/
- int record(const char* filename);
+ int snapshotLoad(Stream* f);
/*
- * Start recording physical model ground truth to the given file.
- * Returns 0 if successful.
+ * Save physical model state, used for automation. Does not include
+ * overrides.
*/
- int recordGroundTruth(const char* filename);
+ void saveState(pb::InitialState* state);
/*
- * Play a recording from the given file.
- * Returns 0 if successful.
+ * Load physical model state, used for automation.
*/
- int playback(const char* filename);
+ void loadState(const pb::InitialState& state);
/*
- * Stop the current recording or playback of physical state changes.
+ * Start recording physical model ground truth to the given file.
+ * Returns 0 if successful.
*/
- void stopRecordAndPlayback();
+ int recordGroundTruth(const char* filename);
/*
* Stop recording the ground truth.
@@ -187,9 +193,6 @@ public:
void stopRecordGroundTruth();
private:
-
- void setCurrentTimeInternal(int64_t time_ns);
-
/*
* Sets the target value for the given physical parameter that the physical
* model should move towards.
@@ -218,15 +221,17 @@ private:
/*
* Helper for setting overrides.
*/
- template<class T>
+ template <class T>
void setOverride(AndroidSensor sensor,
T* overrideMemberPointer,
T overrideValue) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mUseOverride[sensor] = true;
- mMeasurementId[sensor]++;
- *overrideMemberPointer = overrideValue;
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mUseOverride[sensor] = true;
+ mMeasurementId[sensor]++;
+ *overrideMemberPointer = overrideValue;
+ }
}
/*
@@ -259,16 +264,12 @@ private:
PhysicalInterpolation mode,
ValueType value);
- /*
- * Ticks the physical model.
- */
- static void tick(void* opaque, LoopTimer* unused);
-
mutable std::recursive_mutex mMutex;
InertialModel mInertialModel;
AmbientEnvironment mAmbientEnvironment;
+ AutomationController* mAutomationController = nullptr;
const QAndroidPhysicalStateAgent* mAgent = nullptr;
bool mIsPhysicalStateChanging = false;
@@ -282,26 +283,10 @@ private:
#undef SENSOR_
#undef OVERRIDE_NAME
- enum PlaybackState {
- PLAYBACK_STATE_NONE,
- PLAYBACK_STATE_RECORDING,
- PLAYBACK_STATE_PLAYING,
- };
-
- PlaybackState mPlaybackState = PLAYBACK_STATE_NONE;
- int64_t mPlaybackAndRecordingStartTimeNs = 0L;
-
- pb::Time mNextPlaybackCommandTime;
- pb::PhysicalModelEvent mNextPlaybackCommand;
- std::unique_ptr<StdioStream> mRecordingAndPlaybackStream;
std::unique_ptr<StdioStream> mGroundTruthStream;
- const uint32_t kPlaybackFileVersion = 1;
-
int64_t mModelTimeNs = 0L;
- LoopTimer* mLoopTimer = nullptr;
-
PhysicalModel mPhysicalModelInterface;
};
@@ -317,16 +302,8 @@ static vec3 fromGlm(glm::vec3 input) {
return value;
}
-PhysicalModelImpl::PhysicalModelImpl(bool shouldTick) {
+PhysicalModelImpl::PhysicalModelImpl() {
mPhysicalModelInterface.opaque = reinterpret_cast<void*>(this);
-
- if (shouldTick) {
- mLoopTimer = loopTimer_newWithClock(
- looper_getForThread(),
- PhysicalModelImpl::tick,
- reinterpret_cast<void*>(&mPhysicalModelInterface),
- LOOPER_CLOCK_VIRTUAL);
- }
}
PhysicalModelImpl::~PhysicalModelImpl() {
@@ -343,33 +320,6 @@ PhysicalModelImpl* PhysicalModelImpl::getImpl(PhysicalModel* physicalModel) {
nullptr;
}
-pb::PhysicalModelEvent_InterpolationMethod toProto(
- PhysicalInterpolation interpolation) {
- switch (interpolation) {
- case PHYSICAL_INTERPOLATION_SMOOTH:
- return pb::PhysicalModelEvent_InterpolationMethod_Smooth;
- case PHYSICAL_INTERPOLATION_STEP:
- return pb::PhysicalModelEvent_InterpolationMethod_Step;
- default:
- assert(false); // should never happen
- return pb::PhysicalModelEvent_InterpolationMethod_Smooth;
- }
-}
-
-PhysicalInterpolation fromProto(
- pb::PhysicalModelEvent_InterpolationMethod interpolation) {
- switch (interpolation) {
- case pb::PhysicalModelEvent_InterpolationMethod_Smooth:
- return PHYSICAL_INTERPOLATION_SMOOTH;
- case pb::PhysicalModelEvent_InterpolationMethod_Step:
- return PHYSICAL_INTERPOLATION_STEP;
- default:
- W("%s: Unknown interpolation mode %d. Defaulting to smooth.",
- __FUNCTION__, interpolation);
- return PHYSICAL_INTERPOLATION_SMOOTH;
- }
-}
-
pb::PhysicalModelEvent_ParameterType toProto(PhysicalParameter param) {
switch (param) {
#define PHYSICAL_PARAMETER_ENUM(x) PHYSICAL_PARAMETER_##x
@@ -406,198 +356,205 @@ PhysicalParameter fromProto(pb::PhysicalModelEvent_ParameterType param) {
}
}
-float getProtoValue_float(const pb::PhysicalModelEvent& target) {
- if (!target.has_value() || target.value().data_size() != 1) {
+template <typename T>
+T getProtoValue(const pb::PhysicalModelEvent_ParameterValue& parameter);
+
+template <>
+float getProtoValue<float>(const pb::PhysicalModelEvent_ParameterValue& parameter) {
+ if (parameter.data_size() != 1) {
W("%s: Error in parsed physics command. Float parameters should have "
"exactly one value. Found %d.",
- __FUNCTION__, target.value().data_size());
+ __FUNCTION__, parameter.data_size());
return 0.f;
}
- return target.value().data(0);
+ return parameter.data(0);
}
-vec3 getProtoValue_vec3(const pb::PhysicalModelEvent& target) {
- if (!target.has_value() || target.value().data_size() != 3) {
+template <>
+vec3 getProtoValue<vec3>(const pb::PhysicalModelEvent_ParameterValue& parameter) {
+ if (parameter.data_size() != 3) {
W("%s: Error in parsed physics command. Vec3 parameters should have "
"exactly three values. Found %d.",
- __FUNCTION__, target.value().data_size());
+ __FUNCTION__, parameter.data_size());
return vec3{0.f, 0.f, 0.f};
}
- const pb::PhysicalModelEvent_ParameterValue& value = target.value();
- return vec3{value.data(0), value.data(1), value.data(2)};
+ return vec3{parameter.data(0), parameter.data(1), parameter.data(2)};
}
-void setProtoValue(pb::PhysicalModelEvent* target, float value) {
- target->mutable_value()->add_data(value);
+void setProtoCurrentValue(pb::PhysicalModelEvent* event, float value) {
+ event->mutable_current_value()->add_data(value);
}
-void setProtoValue(pb::PhysicalModelEvent* target, vec3 value) {
- pb::PhysicalModelEvent_ParameterValue* pbValue = target->mutable_value();
+void setProtoCurrentValue(pb::PhysicalModelEvent* event, vec3 value) {
+ pb::PhysicalModelEvent_ParameterValue* pbValue =
+ event->mutable_current_value();
pbValue->add_data(value.x);
pbValue->add_data(value.y);
pbValue->add_data(value.z);
}
-static bool isPhysicalModelEventValid(const pb::PhysicalModelEvent& event) {
- return (event.has_type() && event.has_interpolation_method());
+void setProtoTargetValue(pb::PhysicalModelEvent* event, float value) {
+ event->mutable_target_value()->add_data(value);
}
-static bool parseNextCommand(StdioStream* inStream,
- pb::Time* outTime,
- pb::PhysicalModelEvent* outCommand) {
- const std::string nextCommand = inStream->getString();
-
- pb::RecordedEvent event;
- if (nextCommand.empty() || !event.ParseFromString(nextCommand)) {
- return false;
- }
+void setProtoTargetValue(pb::PhysicalModelEvent* event, vec3 value) {
+ pb::PhysicalModelEvent_ParameterValue* pbValue =
+ event->mutable_target_value();
+ pbValue->add_data(value.x);
+ pbValue->add_data(value.y);
+ pbValue->add_data(value.z);
+}
- if (!event.has_stream_type() ||
- event.stream_type() != pb::RecordedEvent_StreamType_PHYSICAL_MODEL) {
- // Currently if other stream types are present the recording is
- // considered invalid.
- return false;
+void PhysicalModelImpl::setCurrentTime(int64_t time_ns) {
+ bool stateStabilized = false;
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mModelTimeNs = time_ns;
+ const bool isInertialModelStable =
+ mInertialModel.setCurrentTime(time_ns) == INERTIAL_STATE_STABLE;
+ const bool isAmbientModelStable =
+ mAmbientEnvironment.setCurrentTime(time_ns) ==
+ AMBIENT_STATE_STABLE;
+ stateStabilized = (isInertialModelStable && isAmbientModelStable &&
+ mIsPhysicalStateChanging);
}
- if (!event.has_event_time() || !event.has_physical_model() ||
- !isPhysicalModelEventValid(event.physical_model())) {
- return false;
+ if (stateStabilized) {
+ physicalStateStabilized();
}
-
- *outTime = event.event_time();
- *outCommand = event.physical_model();
- return true;
}
-void PhysicalModelImpl::setCurrentTime(int64_t time_ns) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
- while (mPlaybackState == PLAYBACK_STATE_PLAYING &&
- time_ns >= mPlaybackAndRecordingStartTimeNs +
- mNextPlaybackCommandTime.timestamp()) {
- setCurrentTimeInternal(mPlaybackAndRecordingStartTimeNs +
- mNextPlaybackCommandTime.timestamp());
- switch (fromProto(mNextPlaybackCommand.type())) {
+void PhysicalModelImpl::replayEvent(const pb::PhysicalModelEvent& event) {
+ switch (fromProto(event.type())) {
#define PHYSICAL_PARAMETER_ENUM(x) PHYSICAL_PARAMETER_##x
#define SET_TARGET_INTERNAL_FUNCTION_NAME(x) setTargetInternal##x
#define GET_PROTO_VALUE_FUNCTION_NAME(x) getProtoValue_##x
-#define PHYSICAL_PARAMETER_(x,y,z,w) \
- case PHYSICAL_PARAMETER_ENUM(x):\
- SET_TARGET_INTERNAL_FUNCTION_NAME(z)(\
- GET_PROTO_VALUE_FUNCTION_NAME(w)(mNextPlaybackCommand),\
- fromProto(mNextPlaybackCommand.interpolation_method()));\
- break;
+#define PHYSICAL_PARAMETER_(x, y, z, type) \
+ case PHYSICAL_PARAMETER_ENUM(x): \
+ if (event.has_current_value()) { \
+ SET_TARGET_INTERNAL_FUNCTION_NAME(z)( \
+ getProtoValue<type>(event.current_value()), \
+ PHYSICAL_INTERPOLATION_STEP); \
+ } \
+ if (event.has_target_value()) { \
+ SET_TARGET_INTERNAL_FUNCTION_NAME(z)( \
+ getProtoValue<type>(event.target_value()), \
+ PHYSICAL_INTERPOLATION_SMOOTH); \
+ } \
+ break;
- PHYSICAL_PARAMETERS_LIST
+ PHYSICAL_PARAMETERS_LIST
#undef PHYSICAL_PARAMETER_
#undef GET_PROTO_VALUE_FUNCTION_NAME
#undef SET_TARGET_INTERNAL_FUNCTION_NAME
#undef PHYSICAL_PARAMETER_ENUM
- default:
- break;
- }
- if (!parseNextCommand(mRecordingAndPlaybackStream.get(),
- &mNextPlaybackCommandTime,
- &mNextPlaybackCommand)) {
- stopRecordAndPlayback();
- }
- }
-
- setCurrentTimeInternal(time_ns);
-}
-
-void PhysicalModelImpl::setCurrentTimeInternal(int64_t time_ns) {
- mModelTimeNs = time_ns;
- bool isInertialModelStable = mInertialModel.setCurrentTime(time_ns) ==
- INERTIAL_STATE_STABLE;
- bool isAmbientModelStable = mAmbientEnvironment.setCurrentTime(time_ns) ==
- AMBIENT_STATE_STABLE;
- if (isInertialModelStable && isAmbientModelStable &&
- mIsPhysicalStateChanging) {
- physicalStateStabilized();
+ default:
+ break;
}
}
void PhysicalModelImpl::setTargetInternalPosition(vec3 position,
PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mInertialModel.setTargetPosition(toGlm(position), mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mInertialModel.setTargetPosition(toGlm(position), mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalVelocity(vec3 velocity,
PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mInertialModel.setTargetVelocity(toGlm(velocity), mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mInertialModel.setTargetVelocity(toGlm(velocity), mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalAmbientMotion(float bounds,
PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mInertialModel.setTargetAmbientMotion(bounds, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mInertialModel.setTargetAmbientMotion(bounds, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalRotation(vec3 rotation,
PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mInertialModel.setTargetRotation(glm::toQuat(glm::eulerAngleXYZ(
- glm::radians(rotation.x),
- glm::radians(rotation.y),
- glm::radians(rotation.z))), mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mInertialModel.setTargetRotation(
+ glm::toQuat(glm::eulerAngleXYZ(glm::radians(rotation.x),
+ glm::radians(rotation.y),
+ glm::radians(rotation.z))),
+ mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalMagneticField(
- vec3 field, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
+ vec3 field,
+ PhysicalInterpolation mode) {
physicalStateChanging();
- mAmbientEnvironment.setMagneticField(
- field.x, field.y, field.z, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setMagneticField(field.x, field.y, field.z, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalTemperature(
float celsius, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mAmbientEnvironment.setTemperature(celsius, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setTemperature(celsius, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalProximity(
float centimeters, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mAmbientEnvironment.setProximity(centimeters, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setProximity(centimeters, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalLight(
float lux, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mAmbientEnvironment.setLight(lux, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setLight(lux, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalPressure(
float hPa, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mAmbientEnvironment.setPressure(hPa, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setPressure(hPa, mode);
+ }
targetStateChanged();
}
void PhysicalModelImpl::setTargetInternalHumidity(
float percentage, PhysicalInterpolation mode) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
physicalStateChanging();
- mAmbientEnvironment.setHumidity(percentage, mode);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAmbientEnvironment.setHumidity(percentage, mode);
+ }
targetStateChanged();
}
@@ -761,14 +718,6 @@ void PhysicalModelImpl::getTransform(
int64_t* out_timestamp) {
std::lock_guard<std::recursive_mutex> lock(mMutex);
- // Note: when getting the transform, we always update the current time
- // so that consumers of this transform get the most up-to-date
- // value possible, and so that transform timestamps progress even when
- // sensors are not polling.
- const DurationNs now_ns =
- looper_nowNsWithClock(looper_getForThread(), LOOPER_CLOCK_VIRTUAL);
- setCurrentTime(now_ns);
-
const vec3 position = getParameterPosition(PARAMETER_VALUE_TYPE_CURRENT);
*out_translation_x = position.x;
*out_translation_y = position.y;
@@ -789,37 +738,47 @@ void PhysicalModelImpl::getTransform(
void PhysicalModelImpl::setPhysicalStateAgent(
const QAndroidPhysicalStateAgent* agent) {
- std::lock_guard<std::recursive_mutex> lock(mMutex);
+ bool stateChanging = false;
- if (mAgent != nullptr && mAgent->onPhysicalStateStabilized != nullptr) {
- mAgent->onPhysicalStateStabilized(mAgent->context);
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAgent = agent;
+ stateChanging = mIsPhysicalStateChanging;
}
- mAgent = agent;
- if (mAgent != nullptr) {
- if (mIsPhysicalStateChanging) {
+
+ // Invoke callbacks outside of the lock.
+ if (agent) {
+ if (stateChanging) {
// Ensure the new agent is set correctly if the is a pending state
// change.
- if (mAgent->onPhysicalStateChanging != nullptr) {
- mAgent->onPhysicalStateChanging(mAgent->context);
+ if (agent->onPhysicalStateChanging) {
+ agent->onPhysicalStateChanging(agent->context);
}
} else {
// If no state change is pending, we still send a change/stabilize
// message so that agents can depend on them for initialization.
- if (mAgent->onPhysicalStateChanging != nullptr) {
- mAgent->onPhysicalStateChanging(mAgent->context);
+ if (agent->onPhysicalStateChanging) {
+ agent->onPhysicalStateChanging(agent->context);
}
- if (mAgent->onPhysicalStateStabilized != nullptr) {
- mAgent->onPhysicalStateStabilized(mAgent->context);
+ if (agent->onPhysicalStateStabilized) {
+ agent->onPhysicalStateStabilized(agent->context);
}
}
+
// We send an initial target state change so agents can depend on this
// for initialization.
- if (mAgent->onTargetStateChanged != nullptr) {
- mAgent->onTargetStateChanged(mAgent->context);
+ if (agent->onTargetStateChanged) {
+ agent->onTargetStateChanged(agent->context);
}
}
}
+void PhysicalModelImpl::setAutomationController(
+ AutomationController* controller) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ mAutomationController = controller;
+}
+
static void readValueFromStream(Stream* f, vec3* value) {
value->x = stream_get_float(f);
value->y = stream_get_float(f);
@@ -840,7 +799,7 @@ static void writeValueToStream(Stream* f, float value) {
stream_put_float(f, value);
}
-void PhysicalModelImpl::save(Stream* f) {
+void PhysicalModelImpl::snapshotSave(Stream* f) {
std::lock_guard<std::recursive_mutex> lock(mMutex);
// first save targets
@@ -899,7 +858,7 @@ void PhysicalModelImpl::save(Stream* f) {
}
}
-int PhysicalModelImpl::load(Stream* f) {
+int PhysicalModelImpl::snapshotLoad(Stream* f) {
// first load targets
const int32_t num_physical_parameters = stream_get_be32(f);
if (num_physical_parameters > MAX_PHYSICAL_PARAMETERS) {
@@ -909,8 +868,6 @@ int PhysicalModelImpl::load(Stream* f) {
return -EIO;
}
- stopRecordAndPlayback();
-
// Note: any new target params will remain at their defaults.
for (int parameter = 0;
@@ -978,33 +935,92 @@ int PhysicalModelImpl::load(Stream* f) {
return 0;
}
-int PhysicalModelImpl::record(const char* filename) {
- stopRecordAndPlayback();
+template <typename ValueType>
+void serializeState(pb::InitialState* state, PhysicalParameter type,
+ ValueType currentValue, ValueType targetValue) {
+ pb::PhysicalModelEvent* command = state->add_physical_model();
+ command->set_type(toProto(type));
+ setProtoCurrentValue(command, currentValue);
+ setProtoTargetValue(command, targetValue);
+}
- if (!filename) {
- E("%s: Must specify filename for writing. Physical Motion will not be "
- "recorded.", __FUNCTION__, filename);
- return -1;
+void PhysicalModelImpl::saveState(pb::InitialState* state) {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+
+ state->mutable_initial_time()->set_timestamp(mModelTimeNs);
+
+ // TODO(jwmcglynn): Prune state and only save non-default parameters.
+
+ for (int parameter = 0; parameter < MAX_PHYSICAL_PARAMETERS; parameter++) {
+ switch (parameter) {
+#define PHYSICAL_PARAMETER_NAME(x) PHYSICAL_PARAMETER_##x
+#define GET_PARAMETER_FUNCTION_NAME(x) getParameter##x
+#define PHYSICAL_PARAMETER_(x, y, z, w) \
+ case PHYSICAL_PARAMETER_NAME(x): { \
+ serializeState( \
+ state, PHYSICAL_PARAMETER_NAME(x), \
+ GET_PARAMETER_FUNCTION_NAME(z)(PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION), \
+ GET_PARAMETER_FUNCTION_NAME(z)(PARAMETER_VALUE_TYPE_TARGET)); \
+ break; \
+ }
+
+ PHYSICAL_PARAMETERS_LIST
+#undef PHYSICAL_PARAMETER_
+#undef GET_PARAMETER_FUNCTION_NAME
+#undef PHYSICAL_PARAMETER_NAME
+ default:
+ assert(false); // should never happen
+ break;
+ }
}
+}
- const std::string path = PathUtils::join(
- System::get()->getHomeDirectory(), filename);
+void PhysicalModelImpl::loadState(const pb::InitialState& state) {
+ constexpr vec3 kVecZero = {0.f, 0.f, 0.f};
+ vec3 currentPosition = {0.f, 0.f, 0.f};
+ vec3 targetPosition = {0.f, 0.f, 0.f};
+ vec3 currentVelocity = {0.f, 0.f, 0.f};
+ vec3 targetVelocity = {0.f, 0.f, 0.f};
- mRecordingAndPlaybackStream.reset(new StdioStream(fopen(path.c_str(), "wb"),
- StdioStream::kOwner));
- if (!mRecordingAndPlaybackStream.get()) {
- E("%s: Error unable to open physics file %s for writing. "
- "Physical Motion will not be recorded.", __FUNCTION__, filename);
- return -1;
+ for (int i = 0; i < state.physical_model_size(); ++i) {
+ const pb::PhysicalModelEvent& event = state.physical_model(i);
+
+ // Position and velocity require special ordering to replay properly,
+ // dispatch those events separately.
+ if (event.type() == pb::PhysicalModelEvent_ParameterType_POSITION) {
+ if (event.has_current_value()) {
+ currentPosition = getProtoValue<vec3>(event.current_value());
+ }
+ if (event.has_target_value()) {
+ targetPosition = getProtoValue<vec3>(event.target_value());
+ }
+ } else if (event.type() ==
+ pb::PhysicalModelEvent_ParameterType_VELOCITY) {
+ if (event.has_current_value()) {
+ currentVelocity = getProtoValue<vec3>(event.current_value());
+ }
+ if (event.has_target_value()) {
+ targetVelocity = getProtoValue<vec3>(event.target_value());
+ }
+ } else {
+ replayEvent(event);
+ }
}
- mPlaybackState = PLAYBACK_STATE_RECORDING;
- mPlaybackAndRecordingStartTimeNs = mModelTimeNs;
- mRecordingAndPlaybackStream->putBe32(kPlaybackFileVersion);
- automation::AutomationEventSink::get().registerStream(
- mRecordingAndPlaybackStream.get(),
- automation::StreamEncoding::BinaryPbChunks);
- return 0;
+ // To avoid overriding the velocity, first replay current position, then
+ // current velocity, then the target position and velocity.
+ setTargetInternalPosition(currentPosition, PHYSICAL_INTERPOLATION_STEP);
+ setTargetInternalVelocity(currentVelocity, PHYSICAL_INTERPOLATION_STEP);
+
+ if (targetVelocity != kVecZero) {
+ // If we have a non-zero target velocity, then we are moving at a
+ // velocity instead of towards a position.
+ setTargetInternalVelocity(targetVelocity,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+ } else {
+ setTargetInternalPosition(targetPosition,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+ }
}
int PhysicalModelImpl::recordGroundTruth(const char* filename) {
@@ -1034,59 +1050,6 @@ int PhysicalModelImpl::recordGroundTruth(const char* filename) {
return 0;
}
-int PhysicalModelImpl::playback(const char* filename) {
- stopRecordAndPlayback();
-
- if (!filename) {
- E("%s: Must specify filename for reading. Physical Motion will not be "
- "played back.", __FUNCTION__, filename);
- return -1;
- }
-
- const std::string path = PathUtils::join(
- System::get()->getHomeDirectory(), filename);
-
- std::unique_ptr<StdioStream> playbackStream(
- new StdioStream(fopen(path.c_str(), "rb"), StdioStream::kOwner));
- if (!playbackStream.get()) {
- E("%s: Error unable to open physics file %s for reading. "
- "Physical Motion will not be played back.", __FUNCTION__, filename);
- return -1;
- }
-
- uint32_t version = playbackStream->getBe32();
- if (kPlaybackFileVersion != version) {
- E("%s: Unsupported version %d in physics file %s. Required Version "
- "is %d. Physical Motion will not be played back.",
- __FUNCTION__, version, filename, kPlaybackFileVersion);
- return -1;
- }
-
- if (!parseNextCommand(playbackStream.get(), &mNextPlaybackCommandTime,
- &mNextPlaybackCommand)) {
- E("%s: Invalid physics file %s. Physical Motion will not be played "
- "back.",
- __FUNCTION__, filename);
- return -1;
- }
- mRecordingAndPlaybackStream.swap(playbackStream);
- mPlaybackState = PLAYBACK_STATE_PLAYING;
- mPlaybackAndRecordingStartTimeNs = mModelTimeNs;
- return 0;
-}
-
-void PhysicalModelImpl::stopRecordAndPlayback() {
- if (mRecordingAndPlaybackStream &&
- mPlaybackState == PLAYBACK_STATE_RECORDING) {
- automation::AutomationEventSink::get().unregisterStream(
- mRecordingAndPlaybackStream.get());
- }
- mRecordingAndPlaybackStream.reset(nullptr);
- mPlaybackState = PLAYBACK_STATE_NONE;
- mPlaybackAndRecordingStartTimeNs = 0;
- stopRecordGroundTruth();
-}
-
void PhysicalModelImpl::stopRecordGroundTruth() {
mGroundTruthStream.reset(nullptr);
}
@@ -1108,39 +1071,61 @@ PHYSICAL_PARAMETERS_LIST
#undef SET_TARGET_FUNCTION_NAME
void PhysicalModelImpl::physicalStateChanging() {
- // Note: We only call onPhysicalStateChanging if this is a transition from
- // stable to changing (i.e. don't call if we get to physicalStateChanging
- // calls in a row without a physicalStateStabilized call in between).
- if (!mIsPhysicalStateChanging && mAgent != nullptr &&
- mAgent->onPhysicalStateChanging != nullptr) {
- mAgent->onPhysicalStateChanging(mAgent->context);
+ const QAndroidPhysicalStateAgent* agent = nullptr;
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ // Note: We only call onPhysicalStateChanging if this is a transition
+ // from stable to changing (i.e. don't call if we get to
+ // physicalStateChanging calls in a row without a
+ // physicalStateStabilized call in between).
+ if (!mIsPhysicalStateChanging) {
+ mIsPhysicalStateChanging = true;
+ agent = mAgent;
+ }
}
- if (mLoopTimer != nullptr) {
- loopTimer_startRelative(mLoopTimer, 0);
+
+ // Call the callback outside of the lock.
+ if (agent && agent->onPhysicalStateChanging) {
+ agent->onPhysicalStateChanging(agent->context);
}
- mIsPhysicalStateChanging = true;
}
void PhysicalModelImpl::physicalStateStabilized() {
- assert(mIsPhysicalStateChanging);
- if (mAgent != nullptr && mAgent->onPhysicalStateStabilized != nullptr) {
- mAgent->onPhysicalStateStabilized(mAgent->context);
+ const QAndroidPhysicalStateAgent* agent;
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ assert(mIsPhysicalStateChanging);
+ agent = mAgent;
+
+ // Increment all of the measurement ids because the physical state has
+ // stabilized.
+ for (size_t i = 0; i < MAX_SENSORS; i++) {
+ mMeasurementId[i]++;
+ }
+ mIsPhysicalStateChanging = false;
}
- // Increment all of the measurement ids because the physical state has
- // stabilized.
- for (int i = 0; i < MAX_SENSORS; i++) {
- mMeasurementId[i]++;
+
+ // Call the callback outside of the lock.
+ if (agent && agent->onPhysicalStateStabilized) {
+ agent->onPhysicalStateStabilized(agent->context);
}
- mIsPhysicalStateChanging = false;
}
void PhysicalModelImpl::targetStateChanged() {
- /* when target state changes we reset all sensor overrides */
- for (int i = 0; i < MAX_SENSORS; i++) {
- mUseOverride[i] = false;
+ const QAndroidPhysicalStateAgent* agent;
+ {
+ std::lock_guard<std::recursive_mutex> lock(mMutex);
+ // When target state changes we reset all sensor overrides.
+ for (size_t i = 0; i < MAX_SENSORS; ++i) {
+ mUseOverride[i] = false;
+ }
+
+ agent = mAgent;
}
- if (mAgent != nullptr && mAgent->onTargetStateChanged != nullptr) {
- mAgent->onTargetStateChanged(mAgent->context);
+
+ // Call the callback outside of the lock.
+ if (agent && agent->onTargetStateChanged) {
+ agent->onTargetStateChanged(agent->context);
}
}
@@ -1148,34 +1133,17 @@ template <typename ValueType>
void PhysicalModelImpl::generateEvent(PhysicalParameter type,
PhysicalInterpolation mode,
ValueType value) {
- // TODO(jwmcglynn): For recordings we need some way to save the initial
- // state.
- pb::Time time;
- time.set_timestamp(mModelTimeNs - mPlaybackAndRecordingStartTimeNs);
-
pb::PhysicalModelEvent command;
command.set_type(toProto(type));
- command.set_interpolation_method(toProto(mode));
- setProtoValue(&command, value);
-
- automation::AutomationEventSink::get().recordPhysicalModelEvent(time,
- command);
-}
+ if (mode == PHYSICAL_INTERPOLATION_SMOOTH) {
+ setProtoTargetValue(&command, value);
+ } else {
+ setProtoCurrentValue(&command, value);
+ }
-void PhysicalModelImpl::tick(void* opaque, LoopTimer* unused) {
- PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(
- reinterpret_cast<PhysicalModel*>(opaque));
- if (impl != nullptr) {
- const DurationNs now_ns =
- looper_nowNsWithClock(looper_getForThread(),
- LOOPER_CLOCK_VIRTUAL);
- impl->setCurrentTime(now_ns);
-
- // if the model is still changing, schedule another timer.
- if (impl->mIsPhysicalStateChanging) {
- assert(impl->mLoopTimer != nullptr);
- loopTimer_startRelative(impl->mLoopTimer, 10);
- }
+ if (mAutomationController) {
+ mAutomationController->getEventSink().recordPhysicalModelEvent(
+ mModelTimeNs, command);
}
}
@@ -1184,8 +1152,8 @@ void PhysicalModelImpl::tick(void* opaque, LoopTimer* unused) {
using android::physics::PhysicalModelImpl;
-PhysicalModel* physicalModel_new(bool shouldTick) {
- PhysicalModelImpl* impl = new PhysicalModelImpl(shouldTick);
+PhysicalModel* physicalModel_new() {
+ PhysicalModelImpl* impl = new PhysicalModelImpl();
return impl != nullptr ? impl->getPhysicalModel() : nullptr;
}
@@ -1295,36 +1263,58 @@ void physicalModel_setPhysicalStateAgent(PhysicalModel* model,
}
}
-void physicalModel_save(PhysicalModel* model, Stream* f) {
+void physicalModel_setAutomationController(PhysicalModel* model,
+ AutomationController* controller) {
+ PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
+ if (impl != nullptr) {
+ impl->setAutomationController(controller);
+ }
+}
+
+void physicalModel_snapshotSave(PhysicalModel* model, Stream* f) {
+ PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
+ if (impl != nullptr) {
+ impl->snapshotSave(f);
+ }
+}
+
+int physicalModel_snapshotLoad(PhysicalModel* model, Stream* f) {
PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
if (impl != nullptr) {
- impl->save(f);
+ return impl->snapshotLoad(f);
+ } else {
+ return -EIO;
}
}
-int physicalModel_load(PhysicalModel* model, Stream* f) {
+int physicalModel_saveState(PhysicalModel* model, pb::InitialState* state) {
PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
if (impl != nullptr) {
- return impl->load(f);
+ impl->saveState(state);
+ return 0;
} else {
return -EIO;
}
}
-int physicalModel_record(PhysicalModel* model, const char* filename) {
+int physicalModel_loadState(PhysicalModel* model, const pb::InitialState& state) {
PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
if (impl != nullptr) {
- return impl->record(filename);
+ impl->loadState(state);
+ return 0;
+ } else {
+ return -EIO;
}
- return -1;
}
-int physicalModel_playback(PhysicalModel* model, const char* filename) {
+void physicalModel_replayEvent(PhysicalModel* model,
+ const pb::PhysicalModelEvent& event) {
PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
if (impl != nullptr) {
- return impl->playback(filename);
+ impl->replayEvent(event);
+ } else {
+ D("%s: Discarding sensor event", __FUNCTION__);
}
- return -1;
}
int physicalModel_recordGroundTruth(PhysicalModel* model,
@@ -1336,10 +1326,9 @@ int physicalModel_recordGroundTruth(PhysicalModel* model,
return -1;
}
-int physicalModel_stopRecordAndPlayback(PhysicalModel* model) {
+int physicalModel_stopRecording(PhysicalModel* model) {
PhysicalModelImpl* impl = PhysicalModelImpl::getImpl(model);
if (impl != nullptr) {
- impl->stopRecordAndPlayback();
impl->stopRecordGroundTruth();
return 0;
}
diff --git a/android/android-emu/android/physics/PhysicalModel.h b/android/android-emu/android/physics/PhysicalModel.h
index 3eba0c8785..094510b04c 100644
--- a/android/android-emu/android/physics/PhysicalModel.h
+++ b/android/android-emu/android/physics/PhysicalModel.h
@@ -26,20 +26,31 @@ ANDROID_BEGIN_HEADER
struct QAndroidPhysicalStateAgent;
struct Stream;
+namespace emulator_automation {
+class InitialState;
+class PhysicalModelEvent;
+} // namespace emulator_automation
+
+namespace android {
+namespace automation {
+class AutomationController;
+} // namespace automation
+} // namespace android
+
/*
- * Implements a model of an ambient environment containing a rigid
- * body, and produces accurately simulated sensor values for various
- * sensors in this environment.
- *
- * The physical model should be updated with target ambient and rigid
- * body state, and regularly polled for the most recent sensor values.
- *
- * Components that only require updates when the model is actively
- * changing (i.e. not at rest) should register state change callbacks
- * via setStateChangingCallbacks. TargetStateChange callbacks occur
- * on the same thread that setTargetXXXXXX is called from. Sensor
- * state changing callbacks may occur on an arbitrary thread.
- */
+* Implements a model of an ambient environment containing a rigid
+* body, and produces accurately simulated sensor values for various
+* sensors in this environment.
+*
+* The physical model should be updated with target ambient and rigid
+* body state, and regularly polled for the most recent sensor values.
+*
+* Components that only require updates when the model is actively
+* changing (i.e. not at rest) should register state change callbacks
+* via setStateChangingCallbacks. TargetStateChange callbacks occur
+* on the same thread that setTargetXXXXXX is called from. Sensor
+* state changing callbacks may occur on an arbitrary thread.
+*/
typedef struct PhysicalModel {
/* Opaque pointer used by the physical model c api. */
@@ -47,7 +58,7 @@ typedef struct PhysicalModel {
} PhysicalModel;
/* Allocate and initialize a physical model */
-PhysicalModel* physicalModel_new(bool shouldTick);
+PhysicalModel* physicalModel_new();
/* Destroy and free a physical model */
void physicalModel_free(PhysicalModel* model);
@@ -106,30 +117,42 @@ void physicalModel_getTransform(PhysicalModel* model,
void physicalModel_setPhysicalStateAgent(PhysicalModel* model,
const struct QAndroidPhysicalStateAgent* agent);
-/* Save the physical model state to the specified stream. */
-void physicalModel_save(PhysicalModel* model, Stream* f);
+/* Sets or unsets the automation controller */
+void physicalModel_setAutomationController(
+ PhysicalModel* model,
+ android::automation::AutomationController* controller);
+
+/* Save the full physical model state to the specified stream. */
+void physicalModel_snapshotSave(PhysicalModel* model, Stream* f);
-/* Load the physical model state from the specified stream. */
-int physicalModel_load(PhysicalModel* model, Stream* f);
+/* Load the full physical model state from the specified stream. */
+int physicalModel_snapshotLoad(PhysicalModel* model, Stream* f);
-/* Start recording physical changes to the specified file.
+/* Get the current state of the physical model, used for automation.
* Returns 0 if successful.
*/
-int physicalModel_record(PhysicalModel* model, const char* filename);
+int physicalModel_saveState(PhysicalModel* model,
+ emulator_automation::InitialState* state);
-/* Start playing back physical changes from the specified file.
+/* Load physical model state, used for automation.
* Returns 0 if successful.
*/
-int physicalModel_playback(PhysicalModel* model, const char* filename);
+int physicalModel_loadState(PhysicalModel* model,
+ const emulator_automation::InitialState& state);
+
+/* Replay a PhysicalModel event. */
+void physicalModel_replayEvent(
+ PhysicalModel* model,
+ const emulator_automation::PhysicalModelEvent& event);
/* Start recording ground truth to the specified file.
* Returns 0 if successful.
*/
int physicalModel_recordGroundTruth(PhysicalModel* model, const char* filename);
-/* Stop all active recording and playback.
+/* Stop recording ground truth.
* Returns 0 if successful.
*/
-int physicalModel_stopRecordAndPlayback(PhysicalModel* model);
+int physicalModel_stopRecording(PhysicalModel* model);
ANDROID_END_HEADER
diff --git a/android/android-emu/android/physics/PhysicalModel_unittest.cpp b/android/android-emu/android/physics/PhysicalModel_unittest.cpp
index 8e9957a8e7..50f5c8b8cb 100644
--- a/android/android-emu/android/physics/PhysicalModel_unittest.cpp
+++ b/android/android-emu/android/physics/PhysicalModel_unittest.cpp
@@ -14,11 +14,12 @@
#include "android/base/testing/TestSystem.h"
#include "android/base/testing/TestTempDir.h"
+#include "android/automation/proto/automation.pb.h"
+#include "android/base/Debug.h"
+#include "android/base/files/MemStream.h"
#include "android/physics/InertialModel.h"
#include "android/physics/physical_state_agent.h"
#include "android/utils/stream.h"
-#include "android/base/files/MemStream.h"
-#include "android/base/Debug.h"
#include <glm/vec3.hpp>
#include <glm/gtx/euler_angles.hpp>
@@ -30,6 +31,10 @@
using android::base::TestSystem;
using android::base::System;
+static constexpr float kDefaultProximity = 1.f;
+static constexpr vec3 kDefaultAccelerometer = {0.f, 9.81f, 0.f};
+static constexpr vec3 kDefaultMagnetometer = {0.0f, 5.9f, -48.4f};
+
static Stream* asStream(android::base::Stream* stream) {
return reinterpret_cast<Stream*>(stream);
}
@@ -41,14 +46,14 @@ EXPECT_NEAR(e.z,a.z,d);
TEST(PhysicalModel, CreateAndDestroy) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
EXPECT_NE(model, nullptr);
physicalModel_free(model);
}
TEST(PhysicalModel, DefaultInertialSensorValues) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 1000000000L);
long measurement_id;
vec3 accelerometer = physicalModel_getAccelerometer(model,
@@ -63,7 +68,7 @@ TEST(PhysicalModel, DefaultInertialSensorValues) {
TEST(PhysicalModel, ConstantMeasurementId) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 1000000000L);
long measurement_id0;
physicalModel_getAccelerometer(model, &measurement_id0);
@@ -81,7 +86,7 @@ TEST(PhysicalModel, ConstantMeasurementId) {
TEST(PhysicalModel, NewMeasurementId) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 1000000000L);
long measurement_id0;
physicalModel_getAccelerometer(model, &measurement_id0);
@@ -106,7 +111,7 @@ TEST(PhysicalModel, NewMeasurementId) {
TEST(PhysicalModel, SetTargetPosition) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
vec3 targetPosition;
targetPosition.x = 2.0f;
@@ -127,7 +132,7 @@ TEST(PhysicalModel, SetTargetPosition) {
TEST(PhysicalModel, SetTargetRotation) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
vec3 targetRotation;
targetRotation.x = 45.0f;
@@ -163,7 +168,7 @@ const GravityTestCase gravityTestCases[] = {
TEST(PhysicalModel, GravityAcceleration) {
TestSystem mTestSystem("/", System::kProgramBitness);
for (const auto& testCase : gravityTestCases) {
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 1000000000L);
vec3 targetRotation;
@@ -189,7 +194,7 @@ TEST(PhysicalModel, GravityAcceleration) {
TEST(PhysicalModel, GravityOnlyAcceleration) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 1000000000L);
vec3 targetPosition;
@@ -209,14 +214,14 @@ TEST(PhysicalModel, GravityOnlyAcceleration) {
// the acceleration is expected to be close to zero at this point.
vec3 currentAcceleration = physicalModel_getAccelerometer(model,
&measurement_id);
- EXPECT_VEC3_NEAR((vec3{0.f, 9.81f, 0.f}), currentAcceleration, 0.01f);
+ EXPECT_VEC3_NEAR(kDefaultAccelerometer, currentAcceleration, 0.01f);
physicalModel_free(model);
}
TEST(PhysicalModel, NonInstantaneousRotation) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0L);
vec3 startRotation;
@@ -249,7 +254,7 @@ TEST(PhysicalModel, NonInstantaneousRotation) {
TEST(PhysicalModel, InstantaneousRotation) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0L);
vec3 startRotation;
@@ -276,7 +281,7 @@ TEST(PhysicalModel, InstantaneousRotation) {
TEST(PhysicalModel, OverrideAccelerometer) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0L);
long initial_measurement_id;
@@ -305,7 +310,7 @@ TEST(PhysicalModel, OverrideAccelerometer) {
long physical_measurement_id;
vec3 sensorPhysicalValue = physicalModel_getAccelerometer(model,
&physical_measurement_id);
- EXPECT_VEC3_NEAR((vec3 {0.f, 9.81f, 0.f}), sensorPhysicalValue, 0.000001f);
+ EXPECT_VEC3_NEAR(kDefaultAccelerometer, sensorPhysicalValue, 0.000001f);
EXPECT_NE(physical_measurement_id, override_measurement_id);
EXPECT_NE(physical_measurement_id, initial_measurement_id);
@@ -315,196 +320,361 @@ TEST(PhysicalModel, OverrideAccelerometer) {
TEST(PhysicalModel, SaveLoad) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
android::base::MemStream modelStream;
Stream* saveStream = asStream(&modelStream);
- physicalModel_save(model, saveStream);
+ physicalModel_snapshotSave(model, saveStream);
const uint32_t streamEndMarker = 1923789U;
stream_put_be32(saveStream, streamEndMarker);
physicalModel_free(model);
- PhysicalModel* loadedModel = physicalModel_new(false);
- physicalModel_load(loadedModel, saveStream);
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_snapshotLoad(loadedModel, saveStream);
EXPECT_EQ(streamEndMarker, stream_get_be32(saveStream));
physicalModel_free(loadedModel);
}
-TEST(PhysicalModel, SaveLoadOverrides) {
+TEST(PhysicalModel, SaveLoadStateSimple) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
-
- const vec3 accelOverride = {1.f, 2.f, 3.f};
- const vec3 gyroOverride = {4.f, 5.f, 6.f};
- const vec3 magnetometerOverride = {7.f, 8.f, 9.f};
- const vec3 orientationOverride = {10.f, 11.f, 12.f};
- const float temperatureOverride = 13.f;
- const float proximityOverride = 14.f;
- const float lightOverride = 15.f;
- const float pressureOverride = 16.f;
- const float humidityOverride = 17.f;
- const vec3 magneticUncalibratedOverride = {18.f, 19.f, 20.f};
- const vec3 gyroUncalibratedOverride = {21.f, 22.f, 23.f};
-
- physicalModel_overrideAccelerometer(model, accelOverride);
- physicalModel_overrideGyroscope(model, gyroOverride);
- physicalModel_overrideMagnetometer(model, magnetometerOverride);
- physicalModel_overrideOrientation(model, orientationOverride);
- physicalModel_overrideTemperature(model, temperatureOverride);
- physicalModel_overrideProximity(model, proximityOverride);
- physicalModel_overrideLight(model, lightOverride);
- physicalModel_overridePressure(model, pressureOverride);
- physicalModel_overrideHumidity(model, humidityOverride);
- physicalModel_overrideMagnetometerUncalibrated(model,
- magneticUncalibratedOverride);
+ PhysicalModel* model = physicalModel_new();
+
+ emulator_automation::InitialState state;
+ physicalModel_saveState(model, &state);
+
+ physicalModel_free(model);
+
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_loadState(loadedModel, state);
+
+ physicalModel_free(loadedModel);
+}
+
+static constexpr vec3 kVecZero = {0.f, 0.f, 0.f};
+static constexpr vec3 kAccelOverride = {1.f, 2.f, 3.f};
+static constexpr vec3 kGyroOverride = {4.f, 5.f, 6.f};
+static constexpr vec3 kMagnetometerOverride = {7.f, 8.f, 9.f};
+static constexpr vec3 kOrientationOverride = {10.f, 11.f, 12.f};
+static constexpr float kTemperatureOverride = 13.f;
+static constexpr float kProximityOverride = 14.f;
+static constexpr float kLightOverride = 15.f;
+static constexpr float kPressureOverride = 16.f;
+static constexpr float kHumidityOverride = 17.f;
+static constexpr vec3 kMagneticUncalibratedOverride = {18.f, 19.f, 20.f};
+static constexpr vec3 kGyroUncalibratedOverride = {21.f, 22.f, 23.f};
+
+static void applyOverrides(PhysicalModel* model) {
+ physicalModel_overrideAccelerometer(model, kAccelOverride);
+ physicalModel_overrideGyroscope(model, kGyroOverride);
+ physicalModel_overrideMagnetometer(model, kMagnetometerOverride);
+ physicalModel_overrideOrientation(model, kOrientationOverride);
+ physicalModel_overrideTemperature(model, kTemperatureOverride);
+ physicalModel_overrideProximity(model, kProximityOverride);
+ physicalModel_overrideLight(model, kLightOverride);
+ physicalModel_overridePressure(model, kPressureOverride);
+ physicalModel_overrideHumidity(model, kHumidityOverride);
+ physicalModel_overrideMagnetometerUncalibrated(
+ model, kMagneticUncalibratedOverride);
physicalModel_overrideGyroscopeUncalibrated(model,
- gyroUncalibratedOverride);
+ kGyroUncalibratedOverride);
+}
+
+TEST(PhysicalModel, SaveLoadOverrides) {
+ TestSystem mTestSystem("/", System::kProgramBitness);
+ PhysicalModel* model = physicalModel_new();
+
+ applyOverrides(model);
android::base::MemStream modelStream;
Stream* saveStream = asStream(&modelStream);
- physicalModel_save(model, saveStream);
+ physicalModel_snapshotSave(model, saveStream);
physicalModel_free(model);
const uint32_t streamEndMarker = 349087U;
stream_put_be32(saveStream, streamEndMarker);
- PhysicalModel* loadedModel = physicalModel_new(false);
- physicalModel_load(loadedModel, saveStream);
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_snapshotLoad(loadedModel, saveStream);
EXPECT_EQ(streamEndMarker, stream_get_be32(saveStream));
long measurement_id;
- EXPECT_VEC3_NEAR(accelOverride,
+ EXPECT_VEC3_NEAR(
+ kAccelOverride,
physicalModel_getAccelerometer(loadedModel, &measurement_id),
0.00001f);
- EXPECT_VEC3_NEAR(gyroOverride,
- physicalModel_getGyroscope(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_VEC3_NEAR(magnetometerOverride,
+ EXPECT_VEC3_NEAR(kGyroOverride,
+ physicalModel_getGyroscope(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(
+ kMagnetometerOverride,
physicalModel_getMagnetometer(loadedModel, &measurement_id),
0.00001f);
- EXPECT_VEC3_NEAR(orientationOverride,
- physicalModel_getOrientation(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_NEAR(temperatureOverride,
- physicalModel_getTemperature(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_NEAR(proximityOverride,
- physicalModel_getProximity(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_NEAR(lightOverride,
- physicalModel_getLight(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_NEAR(pressureOverride,
- physicalModel_getPressure(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_NEAR(humidityOverride,
- physicalModel_getHumidity(loadedModel, &measurement_id),
- 0.00001f);
- EXPECT_VEC3_NEAR(magneticUncalibratedOverride,
- physicalModel_getMagnetometerUncalibrated(
- loadedModel, &measurement_id),
+ EXPECT_VEC3_NEAR(kOrientationOverride,
+ physicalModel_getOrientation(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(kTemperatureOverride,
+ physicalModel_getTemperature(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(kProximityOverride,
+ physicalModel_getProximity(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(kLightOverride,
+ physicalModel_getLight(loadedModel, &measurement_id), 0.00001f);
+ EXPECT_NEAR(kPressureOverride,
+ physicalModel_getPressure(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(kHumidityOverride,
+ physicalModel_getHumidity(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kMagneticUncalibratedOverride,
+ physicalModel_getMagnetometerUncalibrated(loadedModel,
+ &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kGyroUncalibratedOverride,
+ physicalModel_getGyroscopeUncalibrated(loadedModel,
+ &measurement_id),
+ 0.00001f);
+
+ physicalModel_free(loadedModel);
+}
+
+TEST(PhysicalModel, SaveLoadStateOverrides) {
+ TestSystem mTestSystem("/", System::kProgramBitness);
+ PhysicalModel* model = physicalModel_new();
+
+ applyOverrides(model);
+
+ emulator_automation::InitialState state;
+ physicalModel_saveState(model, &state);
+ physicalModel_free(model);
+
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_loadState(loadedModel, state);
+
+ // loadState doesn't load overrides, verify they all are zero.
+ long measurement_id;
+ EXPECT_VEC3_NEAR(
+ kDefaultAccelerometer,
+ physicalModel_getAccelerometer(loadedModel, &measurement_id),
0.00001f);
- EXPECT_VEC3_NEAR(gyroUncalibratedOverride,
- physicalModel_getGyroscopeUncalibrated(
- loadedModel, &measurement_id),
+ EXPECT_VEC3_NEAR(kVecZero,
+ physicalModel_getGyroscope(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(
+ kDefaultMagnetometer,
+ physicalModel_getMagnetometer(loadedModel, &measurement_id),
0.00001f);
+ EXPECT_VEC3_NEAR(kVecZero,
+ physicalModel_getOrientation(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(0.f, physicalModel_getTemperature(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(kDefaultProximity,
+ physicalModel_getProximity(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(0.f, physicalModel_getLight(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(0.f, physicalModel_getPressure(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_NEAR(0.f, physicalModel_getHumidity(loadedModel, &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kVecZero,
+ physicalModel_getGyroscopeUncalibrated(loadedModel,
+ &measurement_id),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kDefaultMagnetometer,
+ physicalModel_getMagnetometerUncalibrated(loadedModel,
+ &measurement_id),
+ 0.00001f);
physicalModel_free(loadedModel);
}
TEST(PhysicalModel, SaveLoadTargets) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel* model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
- const vec3 positionTarget = {24.f, 25.f, 26.f};
- const vec3 rotationTarget = {27.f, 28.f, 29.f};
- const vec3 magneticFieldTarget = {30.f, 31.f, 32.f};
- const float temperatureTarget = 33.f;
- const float proximityTarget = 34.f;
- const float lightTarget = 35.f;
- const float pressureTarget = 36.f;
- const float humidityTarget = 37.f;
+ const vec3 kPositionTarget = {24.f, 25.f, 26.f};
+ const vec3 kRotationTarget = {27.f, 28.f, 29.f};
+ const vec3 kMagneticFieldTarget = {30.f, 31.f, 32.f};
+ const float kTemperatureTarget = 33.f;
+ const float kProximityTarget = 34.f;
+ const float kLightTarget = 35.f;
+ const float kPressureTarget = 36.f;
+ const float kHumidityTarget = 37.f;
// Note: Save/Load should save out target state - interpolation mode should
// not be used, nor relevant (i.e. when loading, the interpolation is
// considered to have finisshed).
- physicalModel_setTargetPosition(model, positionTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetRotation(model, rotationTarget,
- PHYSICAL_INTERPOLATION_SMOOTH);
- physicalModel_setTargetMagneticField(model, magneticFieldTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetTemperature(model, temperatureTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetProximity(model, proximityTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetLight(model, lightTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetPressure(model, pressureTarget,
- PHYSICAL_INTERPOLATION_STEP);
- physicalModel_setTargetHumidity(model, humidityTarget,
- PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetPosition(model, kPositionTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetRotation(model, kRotationTarget,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+ physicalModel_setTargetMagneticField(model, kMagneticFieldTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetTemperature(model, kTemperatureTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetProximity(model, kProximityTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetLight(model, kLightTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetPressure(model, kPressureTarget,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetHumidity(model, kHumidityTarget,
+ PHYSICAL_INTERPOLATION_STEP);
android::base::MemStream modelStream;
Stream* saveStream = asStream(&modelStream);
- physicalModel_save(model, saveStream);
+ physicalModel_snapshotSave(model, saveStream);
physicalModel_free(model);
const uint32_t streamEndMarker = 3489U;
stream_put_be32(saveStream, streamEndMarker);
- PhysicalModel* loadedModel = physicalModel_new(false);
- physicalModel_load(loadedModel, saveStream);
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_snapshotLoad(loadedModel, saveStream);
EXPECT_EQ(streamEndMarker, stream_get_be32(saveStream));
- EXPECT_VEC3_NEAR(positionTarget,
- physicalModel_getParameterPosition(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_VEC3_NEAR(rotationTarget,
- physicalModel_getParameterRotation(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.0001f);
- EXPECT_VEC3_NEAR(magneticFieldTarget,
- physicalModel_getParameterMagneticField(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_NEAR(temperatureTarget,
- physicalModel_getParameterTemperature(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_NEAR(proximityTarget,
- physicalModel_getParameterProximity(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_NEAR(lightTarget,
- physicalModel_getParameterLight(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_NEAR(pressureTarget,
- physicalModel_getParameterPressure(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
- EXPECT_NEAR(humidityTarget,
- physicalModel_getParameterHumidity(loadedModel,
- PARAMETER_VALUE_TYPE_TARGET),
- 0.00001f);
+ EXPECT_VEC3_NEAR(kPositionTarget,
+ physicalModel_getParameterPosition(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kRotationTarget,
+ physicalModel_getParameterRotation(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.0001f);
+ EXPECT_VEC3_NEAR(kMagneticFieldTarget,
+ physicalModel_getParameterMagneticField(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_NEAR(kTemperatureTarget,
+ physicalModel_getParameterTemperature(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_NEAR(kProximityTarget,
+ physicalModel_getParameterProximity(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_NEAR(kLightTarget,
+ physicalModel_getParameterLight(loadedModel,
+ PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_NEAR(kPressureTarget,
+ physicalModel_getParameterPressure(loadedModel,
+ PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_NEAR(kHumidityTarget,
+ physicalModel_getParameterHumidity(loadedModel,
+ PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+
+ physicalModel_free(loadedModel);
+}
+
+TEST(PhysicalModel, SaveLoadStatePosition) {
+ TestSystem mTestSystem("/", System::kProgramBitness);
+ PhysicalModel* model = physicalModel_new();
+
+ const vec3 kPositionCurrent = {-1.f, 21.f, -6.f};
+ const vec3 kRotationCurrent = {5.f, 35.f, -5.f};
+ const vec3 kPositionTarget = {24.f, 25.f, 26.f};
+ const vec3 kRotationTarget = {27.f, 28.f, 29.f};
+
+ // NOTE: saveState/loadState should save out both current and target state.
+ physicalModel_setTargetPosition(model, kPositionCurrent,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetPosition(model, kPositionTarget,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+ physicalModel_setTargetRotation(model, kRotationCurrent,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetRotation(model, kRotationTarget,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+
+ emulator_automation::InitialState state;
+ physicalModel_saveState(model, &state);
+ physicalModel_free(model);
+
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_loadState(loadedModel, state);
+
+ EXPECT_VEC3_NEAR(kPositionCurrent,
+ physicalModel_getParameterPosition(
+ loadedModel,
+ PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kPositionTarget,
+ physicalModel_getParameterPosition(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.00001f);
+ EXPECT_VEC3_NEAR(kRotationCurrent,
+ physicalModel_getParameterRotation(
+ loadedModel,
+ PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION),
+ 0.0001f);
+ EXPECT_VEC3_NEAR(kRotationTarget,
+ physicalModel_getParameterRotation(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.0001f);
+
+ physicalModel_free(loadedModel);
+}
+
+TEST(PhysicalModel, SaveLoadStateVelocity) {
+ TestSystem mTestSystem("/", System::kProgramBitness);
+ PhysicalModel* model = physicalModel_new();
+
+ const vec3 kPositionCurrent = {-1.f, 21.f, -6.f};
+ const vec3 kVelocityCurrent = {5.f, 35.f, -5.f};
+ const vec3 kPositionTarget = {24.f, 25.f, 26.f};
+ const vec3 kVelocityTarget = {27.f, 28.f, 29.f};
+
+ physicalModel_setTargetPosition(model, kPositionCurrent,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetPosition(model, kPositionTarget,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+ physicalModel_setTargetVelocity(model, kVelocityCurrent,
+ PHYSICAL_INTERPOLATION_STEP);
+ physicalModel_setTargetVelocity(model, kVelocityTarget,
+ PHYSICAL_INTERPOLATION_SMOOTH);
+
+ emulator_automation::InitialState state;
+ physicalModel_saveState(model, &state);
+ physicalModel_free(model);
+
+ PhysicalModel* loadedModel = physicalModel_new();
+ physicalModel_loadState(loadedModel, state);
+
+ EXPECT_VEC3_NEAR(kPositionCurrent,
+ physicalModel_getParameterPosition(
+ loadedModel,
+ PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION),
+ 0.00001f);
+ // NOTE: When velocity is set target position is no longer valid.
+ EXPECT_VEC3_NEAR(kVelocityCurrent,
+ physicalModel_getParameterVelocity(
+ loadedModel,
+ PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION),
+ 0.0001f);
+ EXPECT_VEC3_NEAR(kVelocityTarget,
+ physicalModel_getParameterVelocity(
+ loadedModel, PARAMETER_VALUE_TYPE_TARGET),
+ 0.0001f);
physicalModel_free(loadedModel);
}
TEST(PhysicalModel, SetRotatedIMUResults) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
const vec3 initialRotation {45.0f, 10.0f, 4.0f};
@@ -523,6 +693,8 @@ TEST(PhysicalModel, SetRotatedIMUResults) {
uint64_t time = 500000000UL;
const uint64_t stepNs = 1000UL;
+ const uint64_t maxConvergenceTimeNs =
+ time + android::physics::secondsToNs(5.0f);
const vec3 targetPosition {1.0f, 2.0f, 3.0f};
@@ -560,12 +732,19 @@ TEST(PhysicalModel, SetRotatedIMUResults) {
const float stepSeconds = android::physics::nsToSeconds(stepNs);
long prevMeasurementId = -1;
time += stepNs / 2;
+
+ size_t iteration = 0;
while (physicalStateChanging) {
+ SCOPED_TRACE(testing::Message() << "Iteration " << iteration);
+ ++iteration;
+
+ ASSERT_LT(time, maxConvergenceTimeNs)
+ << "Physical state did not stabilize";
physicalModel_setCurrentTime(model, time);
long measurementId;
const vec3 measuredAcceleration = physicalModel_getAccelerometer(
model, &measurementId);
- EXPECT_NE(prevMeasurementId, measurementId);
+ ASSERT_NE(prevMeasurementId, measurementId);
prevMeasurementId = measurementId;
const glm::vec3 acceleration(
measuredAcceleration.x,
@@ -589,7 +768,7 @@ TEST(PhysicalModel, SetRotatedIMUResults) {
TEST(PhysicalModel, SetRotationIMUResults) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
vec3 initialRotation {45.0f, 10.0f, 4.0f};
@@ -599,6 +778,8 @@ TEST(PhysicalModel, SetRotationIMUResults) {
uint64_t time = 0UL;
const uint64_t stepNs = 5000UL;
+ const uint64_t maxConvergenceTimeNs =
+ time + android::physics::secondsToNs(5.0f);
vec3 targetRotation {-10.0f, 20.0f, 45.0f};
@@ -635,11 +816,13 @@ TEST(PhysicalModel, SetRotationIMUResults) {
long prevMeasurementId = -1;
time += stepNs / 2;
while (physicalStateChanging) {
+ ASSERT_LT(time, maxConvergenceTimeNs)
+ << "Physical state did not stabilize";
physicalModel_setCurrentTime(model, time);
long measurementId;
const vec3 measuredGyroscope = physicalModel_getGyroscope(
model, &measurementId);
- EXPECT_NE(prevMeasurementId, measurementId);
+ ASSERT_NE(prevMeasurementId, measurementId);
prevMeasurementId = measurementId;
const glm::vec3 deviceSpaceRotationalVelocity(
measuredGyroscope.x,
@@ -674,7 +857,7 @@ TEST(PhysicalModel, SetRotationIMUResults) {
TEST(PhysicalModel, MoveWhileRotating) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
const vec3 initialRotation {45.0f, 10.0f, 4.0f};
@@ -688,6 +871,8 @@ TEST(PhysicalModel, MoveWhileRotating) {
uint64_t time = 0UL;
const uint64_t stepNs = 5000UL;
+ const uint64_t maxConvergenceTimeNs =
+ time + android::physics::secondsToNs(5.0f);
const vec3 targetPosition {1.0f, 2.0f, 3.0f};
const vec3 targetRotation {-10.0f, 20.0f, 45.0f};
@@ -732,11 +917,13 @@ TEST(PhysicalModel, MoveWhileRotating) {
long prevAccelMeasurementId = -1;
time += stepNs / 2;
while (physicalStateChanging) {
+ ASSERT_LT(time, maxConvergenceTimeNs)
+ << "Physical state did not stabilize";
physicalModel_setCurrentTime(model, time);
long gyroMeasurementId;
const vec3 measuredGyroscope = physicalModel_getGyroscope(
model, &gyroMeasurementId);
- EXPECT_NE(prevGyroMeasurementId, gyroMeasurementId);
+ ASSERT_NE(prevGyroMeasurementId, gyroMeasurementId);
prevGyroMeasurementId = gyroMeasurementId;
const glm::vec3 deviceSpaceRotationalVelocity(
measuredGyroscope.x,
@@ -789,7 +976,7 @@ TEST(PhysicalModel, MoveWhileRotating) {
TEST(PhysicalModel, SetVelocityAndPositionWhileRotating) {
TestSystem mTestSystem("/", System::kProgramBitness);
- PhysicalModel *model = physicalModel_new(false);
+ PhysicalModel* model = physicalModel_new();
physicalModel_setCurrentTime(model, 0UL);
const vec3 initialRotation {45.0f, 10.0f, 4.0f};
@@ -848,11 +1035,15 @@ TEST(PhysicalModel, SetVelocityAndPositionWhileRotating) {
glm::vec3 position(initialPosition.x, initialPosition.y, initialPosition.z);
const float stepSeconds = android::physics::nsToSeconds(stepNs);
+ const float maxConvergenceTimeNs =
+ time + android::physics::secondsToNs(5.0f);
long prevGyroMeasurementId = -1;
long prevAccelMeasurementId = -1;
time += stepNs / 2;
int stepsRemainingAfterStable = 10;
while (physicalStateChanging || stepsRemainingAfterStable > 0) {
+ ASSERT_LT(time, maxConvergenceTimeNs)
+ << "Physical state did not stabilize";
if (!physicalStateChanging) {
stepsRemainingAfterStable--;
}
@@ -869,7 +1060,7 @@ TEST(PhysicalModel, SetVelocityAndPositionWhileRotating) {
const vec3 measuredGyroscope = physicalModel_getGyroscope(
model, &gyroMeasurementId);
if (physicalStateChanging) {
- EXPECT_NE(prevGyroMeasurementId, gyroMeasurementId);
+ ASSERT_NE(prevGyroMeasurementId, gyroMeasurementId);
}
prevGyroMeasurementId = gyroMeasurementId;
const glm::vec3 deviceSpaceRotationalVelocity(
@@ -889,7 +1080,7 @@ TEST(PhysicalModel, SetVelocityAndPositionWhileRotating) {
const vec3 measuredAcceleration = physicalModel_getAccelerometer(
model, &accelMeasurementId);
if (physicalStateChanging) {
- EXPECT_NE(prevAccelMeasurementId, accelMeasurementId);
+ ASSERT_NE(prevAccelMeasurementId, accelMeasurementId);
}
prevAccelMeasurementId = accelMeasurementId;
const glm::vec3 acceleration(measuredAcceleration.x,
diff --git a/android/android-emu/android/physics/Physics.h b/android/android-emu/android/physics/Physics.h
index 4673f0958b..62bab0e9ba 100644
--- a/android/android-emu/android/physics/Physics.h
+++ b/android/android-emu/android/physics/Physics.h
@@ -17,11 +17,6 @@
#pragma once
#include "android/utils/compiler.h"
-#ifdef __cplusplus
-#include <glm/gtc/epsilon.hpp>
-#include <glm/gtc/quaternion.hpp>
-#include <glm/vec3.hpp>
-#endif // __cplusplus
ANDROID_BEGIN_HEADER
@@ -36,19 +31,4 @@ typedef enum {
PARAMETER_VALUE_TYPE_CURRENT_NO_AMBIENT_MOTION=2,
} ParameterValueType;
-#ifdef __cplusplus
-
-constexpr float kPhysicsEpsilon = 0.001f;
-
-inline bool vecNearEqual(glm::vec3 lhs, glm::vec3 rhs) {
- return glm::all(glm::epsilonEqual(lhs, rhs, kPhysicsEpsilon));
-}
-
-inline bool quaternionNearEqual(glm::quat lhs, glm::quat rhs) {
- return glm::all(glm::epsilonEqual(lhs, rhs, kPhysicsEpsilon)) ||
- glm::all(glm::epsilonEqual(lhs, -rhs, kPhysicsEpsilon));
-}
-
-#endif // __cplusplus
-
ANDROID_END_HEADER
diff --git a/android/android-emu/android/qemu-setup.cpp b/android/android-emu/android/qemu-setup.cpp
index fe590afb4a..26496d46f2 100644
--- a/android/android-emu/android/qemu-setup.cpp
+++ b/android/android-emu/android/qemu-setup.cpp
@@ -12,6 +12,7 @@
#include "android/adb-server.h"
#include "android/android.h"
+#include "android/automation/AutomationController.h"
#include "android/base/async/ThreadLooper.h"
#include "android/boot-properties.h"
#include "android/car.h"
@@ -31,9 +32,9 @@
#include "android/hw-fingerprint.h"
#include "android/hw-sensors.h"
#include "android/logcat-pipe.h"
+#include "android/offworld/OffworldPipe.h"
#include "android/opengles-pipe.h"
#include "android/proxy/proxy_setup.h"
-#include "android/snapshot/SnapshotPipe.h"
#include "android/utils/bufprint.h"
#include "android/utils/debug.h"
#include "android/utils/ipaddr.h"
@@ -327,7 +328,7 @@ bool android_emulation_setup(const AndroidConsoleAgents* agents, bool isQemu2) {
android_init_opengles_pipe();
android_init_clipboard_pipe();
android_init_logcat_pipe();
- android::snapshot::registerSnapshotPipeService();
+ android::offworld::registerOffworldPipeService();
#ifndef _WIN32
// bug: 70566718
@@ -422,6 +423,7 @@ bool android_emulation_setup(const AndroidConsoleAgents* agents, bool isQemu2) {
/* initialize sensors, this must be done here due to timer issues */
android_hw_sensors_init();
+ android::automation::AutomationController::initialize();
AvdFlavor flavor = avdInfo_getAvdFlavor(android_avdInfo);
/* initialize the car data emulation if the system image is a Android Auto build */
@@ -441,3 +443,7 @@ bool android_emulation_setup(const AndroidConsoleAgents* agents, bool isQemu2) {
return true;
}
+
+void android_emulation_teardown() {
+ android::automation::AutomationController::shutdown();
+}
diff --git a/android/android-emu/android/skin/qt/OverlayMessageCenter.cpp b/android/android-emu/android/skin/qt/OverlayMessageCenter.cpp
index 618897e892..f0ea2571bb 100644
--- a/android/android-emu/android/skin/qt/OverlayMessageCenter.cpp
+++ b/android/android-emu/android/skin/qt/OverlayMessageCenter.cpp
@@ -33,17 +33,34 @@ using android::base::Optional;
namespace Ui {
+static QString sTextColorFromMessageType(OverlayMessageType messageType) {
+ switch (messageType) {
+ case OverlayMessageType::None:
+ case OverlayMessageType::Info:
+ return QString("rgb(255, 255, 255)");
+ case OverlayMessageType::Warning:
+ return QString("rgb(255, 255, 204)");
+ case OverlayMessageType::Error:
+ return QString("rgb(255, 204, 204)");
+ default:
+ case OverlayMessageType::Ok:
+ return QString("rgb(204, 255, 204)");
+ }
+}
+
OverlayChildWidget::OverlayChildWidget(OverlayMessageCenter* parent,
QString text,
- QPixmap icon)
+ QPixmap icon,
+ OverlayMessageType messageType)
: QFrame(parent), mText(text) {
setObjectName("OverlayChildWidget");
- setStyleSheet(QString("* { font-size: %1; } #OverlayChildWidget { "
- "border-radius: %2px; border-style: outward; "
+ setStyleSheet(QString("* { font-size: %1; color: %2; } #OverlayChildWidget { "
+ "border-radius: %3px; border-style: outward; "
"border-color: rgba(255, 255, 255, 10%); "
- "border-top-width: %3; border-left-width: %3; "
- "border-bottom-width: %4; border-right-width: %4; }")
+ "border-top-width: %4; border-left-width: %4; "
+ "border-bottom-width: %5; border-right-width: %5; }")
.arg(Ui::stylesheetFontSize(Ui::FontSize::Larger))
+ .arg(sTextColorFromMessageType(messageType))
.arg(qCeil(SizeTweaker::scaleFactor(this).x()))
.arg(qCeil(1 * SizeTweaker::scaleFactor(this).x()))
.arg(qCeil(3 * SizeTweaker::scaleFactor(this).x())));
@@ -247,20 +264,23 @@ static Optional<int> calcTimeout(int timeoutMs) {
}
}
-QPixmap OverlayMessageCenter::icon(Icon type) {
+QPixmap OverlayMessageCenter::iconFromMessageType(MessageType type) {
const char* name = nullptr;
switch (type) {
- case Icon::None:
+ case MessageType::None:
return {};
- case Icon::Info:
+ case MessageType::Info:
name = "info";
break;
- case Icon::Warning:
+ case MessageType::Warning:
name = "warning";
break;
- case Icon::Error:
+ case MessageType::Error:
name = "error";
break;
+ case MessageType::Ok:
+ name = "success";
+ break;
}
if (!name) {
return {};
@@ -326,7 +346,7 @@ void OverlayMessageCenter::dismissMessageImmediately(OverlayChildWidget* message
}
OverlayChildWidget* OverlayMessageCenter::addMessage(QString message,
- Icon icon,
+ MessageType messageType,
int timeoutMs) {
// Don't add too many items at once.
const auto children =
@@ -335,7 +355,11 @@ OverlayChildWidget* OverlayMessageCenter::addMessage(QString message,
dismissMessage(static_cast<OverlayChildWidget*>(children[i]));
}
- auto widget = new OverlayChildWidget(this, message, this->icon(icon));
+ auto widget =
+ new OverlayChildWidget(
+ this, message,
+ this->iconFromMessageType(messageType),
+ messageType);
QPointer<OverlayChildWidget> widgetPtr = widget;
widget->dismissButton()->connect(widget->dismissButton(),
diff --git a/android/android-emu/android/skin/qt/OverlayMessageCenter.h b/android/android-emu/android/skin/qt/OverlayMessageCenter.h
index 88b1c210af..d389e2dd02 100644
--- a/android/android-emu/android/skin/qt/OverlayMessageCenter.h
+++ b/android/android-emu/android/skin/qt/OverlayMessageCenter.h
@@ -27,7 +27,7 @@ namespace Ui {
class OverlayMessageCenter;
-enum class OverlayMessageIcon { None, Info, Warning, Error };
+enum class OverlayMessageType { None, Info, Warning, Error, Ok };
// A widget to hold a single overlay message.
class OverlayChildWidget : public QFrame {
@@ -36,7 +36,8 @@ public:
using DismissFunc = std::function<void()>;
OverlayChildWidget(OverlayMessageCenter* parent,
QString text,
- QPixmap icon);
+ QPixmap icon,
+ OverlayMessageType messageType);
QLabel* icon() const { return mIcon; }
QLabel* label() const { return mLabel; }
@@ -70,13 +71,13 @@ public:
void adjustSize();
- using Icon = OverlayMessageIcon;
+ using MessageType = OverlayMessageType;
static constexpr int kDefaultTimeoutMs = 0;
static constexpr int kInfiniteTimeout = -1;
OverlayChildWidget* addMessage(QString message,
- OverlayMessageIcon icon,
+ OverlayMessageType messageType,
int timeoutMs = kDefaultTimeoutMs);
signals:
@@ -88,7 +89,7 @@ private:
void reattachToParent();
void dismissMessage(OverlayChildWidget* messageWidget);
void dismissMessageImmediately(OverlayChildWidget* messageWidget);
- QPixmap icon(Icon type);
+ QPixmap iconFromMessageType(MessageType type);
SizeTweaker mSizeTweaker;
};
diff --git a/android/android-emu/android/skin/qt/QtLogger.cpp b/android/android-emu/android/skin/qt/QtLogger.cpp
new file mode 100644
index 0000000000..f38329371f
--- /dev/null
+++ b/android/android-emu/android/skin/qt/QtLogger.cpp
@@ -0,0 +1,71 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/skin/qt/QtLogger.h"
+
+#include "android/base/Log.h"
+#include "android/base/files/PathUtils.h"
+#include "android/base/memory/LazyInstance.h"
+#include "android/base/system/System.h"
+#include "android/crashreport/CrashReporter.h"
+
+using android::base::LazyInstance;
+using android::crashreport::CrashReporter;
+using android::base::pj;
+
+static LazyInstance<QtLogger> sLogger = LAZY_INSTANCE_INIT;
+
+static const int kBufferLen = 2048;
+
+// static
+QtLogger* QtLogger::get() {
+ return sLogger.ptr();
+}
+
+// static
+void QtLogger::stop() {
+ if (sLogger.hasInstance()) {
+ sLogger->closeLog();
+ }
+}
+
+QtLogger::QtLogger() :
+ mLogFilePath(CrashReporter::get()->getDataExchangeDir()) {
+
+ mFileHandle.open(pj(mLogFilePath, "qt_log.txt"),
+ std::ios::app);
+}
+
+QtLogger::~QtLogger() {
+ stop();
+}
+
+void QtLogger::closeLog() {
+ if (mFileHandle) {
+ mFileHandle.close();
+ }
+}
+
+void QtLogger::write(const char* fmt, ...) {
+ char buf[kBufferLen] = {};
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf) - 1, fmt, ap);
+ va_end(ap);
+
+ LOG(INFO) << buf << "\n";
+
+ if (!mFileHandle) return;
+
+ mFileHandle << buf << std::endl;
+}
diff --git a/android/android-emu/android/skin/qt/QtLogger.h b/android/android-emu/android/skin/qt/QtLogger.h
new file mode 100644
index 0000000000..158a88ef17
--- /dev/null
+++ b/android/android-emu/android/skin/qt/QtLogger.h
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include <fstream>
+#include <string>
+
+class QtLogger {
+public:
+ static QtLogger* get();
+ static void stop();
+
+ QtLogger();
+ ~QtLogger();
+
+ void closeLog();
+ void write(const char* fmt, ...);
+
+private:
+ std::string mLogFilePath;
+ std::ofstream mFileHandle;
+};
diff --git a/android/android-emu/android/skin/qt/accelerometer-3d-widget.cpp b/android/android-emu/android/skin/qt/accelerometer-3d-widget.cpp
index e69a77fd5f..b5d6e73f3f 100644
--- a/android/android-emu/android/skin/qt/accelerometer-3d-widget.cpp
+++ b/android/android-emu/android/skin/qt/accelerometer-3d-widget.cpp
@@ -13,7 +13,7 @@
#include "android/base/system/System.h"
#include "android/emulation/control/sensors_agent.h"
#include "android/hw-sensors.h"
-#include "android/physics/Physics.h"
+#include "android/physics/GlmHelpers.h"
#include "android/skin/qt/gl-common.h"
#include "android/skin/qt/wavefront-obj-parser.h"
diff --git a/android/android-emu/android/skin/qt/emulator-container.cpp b/android/android-emu/android/skin/qt/emulator-container.cpp
index 5beaffb343..fddb95860d 100644
--- a/android/android-emu/android/skin/qt/emulator-container.cpp
+++ b/android/android-emu/android/skin/qt/emulator-container.cpp
@@ -156,42 +156,73 @@ bool EmulatorContainer::event(QEvent* e) {
return QScrollArea::event(e);
}
+#if defined(__linux__)
+// All callers to this function are currently under __linux__ so
+// we needs an ifdef to avoid a "defined but not used" build failure
+// on other platforms.
+static SkinEvent* createSkinEvent(SkinEventType t) {
+ SkinEvent* e = new SkinEvent();
+ e->type = t;
+ return e;
+}
+#endif
+
void EmulatorContainer::changeEvent(QEvent* event) {
- // Strictly preventing the maximizing (called "zooming" on OS X) of a
- // window is hard - it changes by host, and even by window manager on
- // Linux. Therefore, we counteract it by seeing if the window ever
- // enters a maximized state, and if it does, immediately undoing that
- // maximization.
- //
- // Note that we *do not* call event->ignore(). Maximizing happens in the
- // OS-level window, not Qt's representation of the window. This event
- // simply notifies the Qt representation (and us) that the OS-level window
- // has changed to a maximized state. We do not want to ignore this state
- // change, we just want to counteract the effects it had.
- if (event->type() == QEvent::WindowStateChange) {
- if (windowState() & Qt::WindowMaximized) {
- showNormal();
- if (mModalOverlay) {
- mModalOverlay->showNormal();
- }
- if (mVirtualSceneInfo) {
- mVirtualSceneInfo->showNormal();
- }
- mMessages->showNormal();
- } else if (windowState() & Qt::WindowMinimized) {
- // In case the window was minimized without pressing the toolbar's
- // minimize button (which is possible on some window managers),
- // remember to hide the toolbar (which will also hide the extended
- // window, if it exists).
- mEmulatorWindow->toolWindow()->hide();
- if (mModalOverlay) {
- mModalOverlay->hide();
+ switch (event->type()) {
+ case QEvent::WindowStateChange:
+ // Strictly preventing the maximizing (called "zooming" on OS X) of
+ // a window is hard - it changes by host, and even by window manager
+ // on Linux. Therefore, we counteract it by seeing if the window
+ // ever enters a maximized state, and if it does, immediately
+ // undoing that maximization.
+ //
+ // Note that we *do not* call event->ignore(). Maximizing happens in
+ // the OS-level window, not Qt's representation of the window. This
+ // event simply notifies the Qt representation (and us) that the
+ // OS-level window has changed to a maximized state. We do not want
+ // to ignore this state change, we just want to counteract the
+ // effects it had.
+ if (windowState() & Qt::WindowMaximized) {
+ showNormal();
+ if (mModalOverlay) {
+ mModalOverlay->showNormal();
+ }
+ if (mVirtualSceneInfo) {
+ mVirtualSceneInfo->showNormal();
+ }
+ mMessages->showNormal();
+ } else if (windowState() & Qt::WindowMinimized) {
+ // In case the window was minimized without pressing the
+ // toolbar's minimize button (which is possible on some
+ // window managers), remember to hide the toolbar (which
+ // will also hide the extended window, if it exists).
+ mEmulatorWindow->toolWindow()->hide();
+ if (mModalOverlay) {
+ mModalOverlay->hide();
+ }
+ if (mVirtualSceneInfo) {
+ mVirtualSceneInfo->hide();
+ }
+ mMessages->hide();
}
- if (mVirtualSceneInfo) {
- mVirtualSceneInfo->hide();
- }
- mMessages->hide();
- }
+
+ break;
+
+ case QEvent::ActivationChange:
+#if defined(__linux__)
+ // b/79158122: When restoring from minimize or a desktop switch,
+ // Linux/OpenGL does not refresh the screen on it's own, normal
+ // Linux/QT does work. This logic pushes a refresh event to work
+ // around the issue. Note that putting this logic under
+ // QEvent::WindowStateChange above does not work as that event comes
+ // too early for refreshes to be effective.
+ mEmulatorWindow->queueSkinEvent(createSkinEvent(kEventForceRedraw));
+#endif
+ break;
+
+ default:
+ // Ignore other event types
+ break;
}
}
@@ -300,9 +331,7 @@ void EmulatorContainer::showEvent(QShowEvent* event) {
// The subwindow won't redraw until the guest screen changes, which
// may not happen for a minute (when the clock changes), so force a
// redraw after re-showing the window.
- SkinEvent* event = new SkinEvent();
- event->type = kEventForceRedraw;
- mEmulatorWindow->queueSkinEvent(event);
+ mEmulatorWindow->queueSkinEvent(createSkinEvent(kEventForceRedraw));
}
#endif // __linux__
mEmulatorWindow->toolWindow()->show();
diff --git a/android/android-emu/android/skin/qt/emulator-qt-window.cpp b/android/android-emu/android/skin/qt/emulator-qt-window.cpp
index ba4aa738c0..517c3bb6b7 100644
--- a/android/android-emu/android/skin/qt/emulator-qt-window.cpp
+++ b/android/android-emu/android/skin/qt/emulator-qt-window.cpp
@@ -370,7 +370,7 @@ EmulatorQtWindow::EmulatorQtWindow(QWidget* parent)
qRegisterMetaType<SkinRotation>();
qRegisterMetaType<SkinGenericFunction>();
qRegisterMetaType<RunOnUiThreadFunc>();
- qRegisterMetaType<Ui::OverlayMessageIcon>();
+ qRegisterMetaType<Ui::OverlayMessageType>();
qRegisterMetaType<Ui::OverlayChildWidget::DismissFunc>();
mOrientation = !strcmp(android_hw->hw_initialOrientation, "landscape") ?
@@ -1787,17 +1787,17 @@ void EmulatorQtWindow::slot_adbPushCanceled() {
}
void EmulatorQtWindow::slot_showMessage(QString text,
- Ui::OverlayMessageIcon icon,
+ Ui::OverlayMessageType messageType,
int timeoutMs) {
- mContainer.messageCenter().addMessage(text, icon, timeoutMs);
+ mContainer.messageCenter().addMessage(text, messageType, timeoutMs);
}
void EmulatorQtWindow::slot_showMessageWithDismissCallback(QString text,
- Ui::OverlayMessageIcon icon,
+ Ui::OverlayMessageType messageType,
QString dismissText,
RunOnUiThreadFunc func,
int timeoutMs) {
- auto msg = mContainer.messageCenter().addMessage(text, icon, timeoutMs);
+ auto msg = mContainer.messageCenter().addMessage(text, messageType, timeoutMs);
msg->setDismissCallback(dismissText, std::move(func));
}
diff --git a/android/android-emu/android/skin/qt/emulator-qt-window.h b/android/android-emu/android/skin/qt/emulator-qt-window.h
index 9c3e08d09c..c854d78cc9 100644
--- a/android/android-emu/android/skin/qt/emulator-qt-window.h
+++ b/android/android-emu/android/skin/qt/emulator-qt-window.h
@@ -60,7 +60,7 @@ Q_DECLARE_METATYPE(QPainter::CompositionMode);
Q_DECLARE_METATYPE(RunOnUiThreadFunc);
Q_DECLARE_METATYPE(SkinGenericFunction);
Q_DECLARE_METATYPE(SkinRotation);
-Q_DECLARE_METATYPE(Ui::OverlayMessageIcon);
+Q_DECLARE_METATYPE(Ui::OverlayMessageType);
class MainLoopThread : public QThread {
Q_OBJECT
@@ -191,9 +191,9 @@ signals:
void updateRotation(SkinRotation rotation);
void layoutChanged(SkinRotation rot);
- void showMessage(QString text, Ui::OverlayMessageIcon icon, int timeoutMs);
+ void showMessage(QString text, Ui::OverlayMessageType icon, int timeoutMs);
void showMessageWithDismissCallback(QString text,
- Ui::OverlayMessageIcon icon,
+ Ui::OverlayMessageType icon,
QString dismissText,
RunOnUiThreadFunc func,
int timeoutMs);
@@ -314,10 +314,10 @@ private slots:
void slot_installCanceled();
void slot_adbPushCanceled();
- void slot_showMessage(QString text, Ui::OverlayMessageIcon icon,
+ void slot_showMessage(QString text, Ui::OverlayMessageType icon,
int timeoutMs);
void slot_showMessageWithDismissCallback(QString text,
- Ui::OverlayMessageIcon icon,
+ Ui::OverlayMessageType icon,
QString dismissText,
Ui::OverlayChildWidget::DismissFunc func,
int timeoutMs);
diff --git a/android/android-emu/android/skin/qt/extended-pages/battery-page.cpp b/android/android-emu/android/skin/qt/extended-pages/battery-page.cpp
index ff39eb25bd..4e523c437b 100644
--- a/android/android-emu/android/skin/qt/extended-pages/battery-page.cpp
+++ b/android/android-emu/android/skin/qt/extended-pages/battery-page.cpp
@@ -12,9 +12,12 @@
#include "android/emulation/control/battery_agent.h"
#include "android/emulation/VmLock.h"
+#include "android/globals.h"
+#include "android/skin/qt/qt-settings.h"
+
#include "ui_battery-page.h"
-#include <vector>
-#include <utility>
+
+#include <QSettings>
// Must be protected by the BQL!
static const QAndroidBatteryAgent* sBatteryAgent = nullptr;
@@ -50,60 +53,91 @@ BatteryPage::BatteryPage(QWidget* parent)
{BATTERY_STATUS_FULL, "Full"},
});
- int chargeLevel = 50;
- BatteryCharger bCharger = BATTERY_CHARGER_AC;
- BatteryHealth bHealth = BATTERY_HEALTH_UNKNOWN;
- int chargeIdx = 0;
- int healthIdx = 0;
- BatteryStatus bStatus = BATTERY_STATUS_UNKNOWN;
- int statusIdx = 0;
-
- // Update the UI with values read from the battery agent.
- // At least the VM lock (TODO: see if main loop runner is needed)
- // is needed because battery agent touches the goldfish battery
- // virtual device explicitly.
- {
- android::RecursiveScopedVmLock vmlock;
- if (sBatteryAgent && sBatteryAgent->chargeLevel) {
- chargeLevel = sBatteryAgent->chargeLevel();
- }
-
- if (sBatteryAgent && sBatteryAgent->charger) {
- bCharger = sBatteryAgent->charger();
- }
+ if (android_hw->hw_battery) {
+ // Update the UI with the saved values
+ QSettings settings;
+ int chargeLevel = settings.value(Ui::Settings::BATTERY_CHARGE_LEVEL, 100).toInt();
+
+ BatteryCharger batteryCharger = (BatteryCharger)settings.value(
+ Ui::Settings::BATTERY_CHARGER_TYPE,
+ BATTERY_CHARGER_AC).toInt();
+ int chargerIdx = mUi->bat_healthBox->findData(batteryCharger);
+ if (chargerIdx < 0) chargerIdx = 0; // In case the saved value wasn't found in the pull-down
+
+ BatteryHealth batteryHealth = (BatteryHealth)settings.value(Ui::Settings::BATTERY_HEALTH,
+ BATTERY_HEALTH_GOOD).toInt();
+ int healthIdx = mUi->bat_healthBox->findData(batteryHealth);
+ if (healthIdx < 0) healthIdx = 0;
+
+ BatteryStatus defaultBatteryStatus = (batteryCharger == BATTERY_CHARGER_AC) ?
+ BATTERY_STATUS_CHARGING :
+ BATTERY_STATUS_NOT_CHARGING;
+ BatteryStatus batteryStatus = (BatteryStatus)settings.value(Ui::Settings::BATTERY_STATUS,
+ defaultBatteryStatus).toInt();
+ int statusIdx = mUi->bat_statusBox->findData(batteryStatus);
+ if (statusIdx < 0) statusIdx = 0;
+
+ mUi->bat_levelSlider->setValue(chargeLevel);
+ mUi->bat_chargeLevelText->setText(QString::number(chargeLevel) + "%");
+ mUi->bat_chargerBox->setCurrentIndex(chargerIdx);
+ mUi->bat_healthBox->setCurrentIndex(healthIdx);
+ mUi->bat_statusBox->setCurrentIndex(statusIdx);
+
+ // Don't show the overlay that obscures the buttons.
+ // Don't show the message saying that there is no battery.
+ mUi->bat_noBat_mask->hide();
+ mUi->bat_noBat_message->hide();
+ } else {
+ // The device has no battery. Show the "no battery" message.
+ mUi->bat_noBat_mask->raise();
+ mUi->bat_noBat_message->raise();
+ }
+}
- chargeIdx = mUi->bat_chargerBox->findData(bCharger);
- if (chargeIdx < 0)
- chargeIdx = 0; // In case the saved value wasn't found
+// static
+void BatteryPage::setBatteryAgent(const QAndroidBatteryAgent* agent) {
+ if (!android_hw->hw_battery) {
+ // This device has no battery. Ignore the agent.
+ return;
+ }
- if (sBatteryAgent && sBatteryAgent->health) {
- bHealth = sBatteryAgent->health();
+ // The VM lock is needed because the battery agent touches the
+ // goldfish battery virtual device explicitly
+ android::RecursiveScopedVmLock vmlock;
+ sBatteryAgent = agent;
+
+ if (sBatteryAgent) {
+ // Send the current settings to the device
+ QSettings settings;
+ if (sBatteryAgent->setChargeLevel) {
+ int chargeLevel = settings.value(Ui::Settings::BATTERY_CHARGE_LEVEL,
+ 100).toInt();
+ sBatteryAgent->setChargeLevel(chargeLevel);
}
- healthIdx = mUi->bat_healthBox->findData(bHealth);
- if (healthIdx < 0)
- healthIdx = 0; // In case the saved value wasn't found
-
- if (sBatteryAgent && sBatteryAgent->status) {
- bStatus = sBatteryAgent->status();
+ BatteryCharger batteryCharger = (BatteryCharger)settings.value(
+ Ui::Settings::BATTERY_CHARGER_TYPE,
+ BATTERY_CHARGER_AC).toInt();
+ if (sBatteryAgent->setCharger) {
+ sBatteryAgent->setCharger(batteryCharger);
}
- }
-
- statusIdx = mUi->bat_statusBox->findData(bStatus);
- if (statusIdx < 0)
- statusIdx = 0; // In case the saved value wasn't found
- mUi->bat_levelSlider->setValue(chargeLevel);
- mUi->bat_chargerBox->setCurrentIndex(chargeIdx);
- mUi->bat_healthBox->setCurrentIndex(healthIdx);
- mUi->bat_statusBox->setCurrentIndex(statusIdx);
-}
+ if (sBatteryAgent->health) {
+ BatteryHealth batteryHealth = (BatteryHealth)settings.value(
+ Ui::Settings::BATTERY_HEALTH,
+ BATTERY_HEALTH_GOOD).toInt();
+ sBatteryAgent->setHealth(batteryHealth);
+ }
-// static
-void BatteryPage::setBatteryAgent(const QAndroidBatteryAgent* agent) {
- {
- android::RecursiveScopedVmLock vmlock;
- sBatteryAgent = agent;
+ if (sBatteryAgent->setStatus) {
+ BatteryStatus defaultBatteryStatus = (batteryCharger == BATTERY_CHARGER_AC) ?
+ BATTERY_STATUS_CHARGING :
+ BATTERY_STATUS_NOT_CHARGING;
+ BatteryStatus batteryStatus = (BatteryStatus)settings.value(
+ Ui::Settings::BATTERY_STATUS,
+ defaultBatteryStatus).toInt();
+ sBatteryAgent->setStatus(batteryStatus);
+ }
}
}
@@ -120,6 +154,9 @@ void BatteryPage::on_bat_chargerBox_activated(int index) {
BatteryCharger bCharger = static_cast<BatteryCharger>(
mUi->bat_statusBox->itemData(index).toInt());
+ QSettings settings;
+ settings.setValue(Ui::Settings::BATTERY_CHARGER_TYPE, bCharger);
+
android::RecursiveScopedVmLock vmlock;
if (bCharger >= 0 && bCharger < BATTERY_CHARGER_NUM_ENTRIES) {
if (sBatteryAgent && sBatteryAgent->setCharger) {
@@ -132,6 +169,9 @@ void BatteryPage::on_bat_levelSlider_valueChanged(int value) {
// Update the text output
mUi->bat_chargeLevelText->setText(QString::number(value) + "%");
+ QSettings settings;
+ settings.setValue(Ui::Settings::BATTERY_CHARGE_LEVEL, value);
+
android::RecursiveScopedVmLock vmlock;
if (sBatteryAgent && sBatteryAgent->setChargeLevel) {
sBatteryAgent->setChargeLevel(value);
@@ -142,6 +182,9 @@ void BatteryPage::on_bat_healthBox_activated(int index) {
BatteryHealth bHealth = static_cast<BatteryHealth>(
mUi->bat_healthBox->itemData(index).toInt());
+ QSettings settings;
+ settings.setValue(Ui::Settings::BATTERY_HEALTH, bHealth);
+
android::RecursiveScopedVmLock vmlock;
if (bHealth >= 0 && bHealth < BATTERY_HEALTH_NUM_ENTRIES) {
if (sBatteryAgent && sBatteryAgent->setHealth) {
@@ -154,6 +197,9 @@ void BatteryPage::on_bat_statusBox_activated(int index) {
BatteryStatus bStatus = static_cast<BatteryStatus>(
mUi->bat_statusBox->itemData(index).toInt());
+ QSettings settings;
+ settings.setValue(Ui::Settings::BATTERY_STATUS, bStatus);
+
android::RecursiveScopedVmLock vmlock;
if (bStatus >= 0 && bStatus < BATTERY_STATUS_NUM_ENTRIES) {
if (sBatteryAgent && sBatteryAgent->setStatus) {
diff --git a/android/android-emu/android/skin/qt/extended-pages/battery-page.ui b/android/android-emu/android/skin/qt/extended-pages/battery-page.ui
index 389aa6498a..9f89c2b6de 100644
--- a/android/android-emu/android/skin/qt/extended-pages/battery-page.ui
+++ b/android/android-emu/android/skin/qt/extended-pages/battery-page.ui
@@ -313,6 +313,58 @@
<string notr="true">Title</string>
</property>
</widget>
+ <widget class="QLabel" name="bat_noBat_mask">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>600</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgba(128, 128, 128, 200)</string>
+ </property>
+ </widget>
+ <widget class="QLabel" name="bat_noBat_message">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>250</y>
+ <width>600</width>
+ <height>81</height>
+ </rect>
+ </property>
+ <property name="font">
+ <font>
+ <family>Roboto</family>
+ </font>
+ </property>
+ <property name="autoFillBackground">
+ <bool>false</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgba(128, 128, 128, 0)</string>
+ </property>
+ <property name="text">
+ <string>This emulated device does not have a battery.</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ <zorder>bat_noBat_mask</zorder>
+ <zorder>bat_noBat_message</zorder>
+ <zorder>bat_acGroup</zorder>
+ <zorder>bat_healthBox</zorder>
+ <zorder>bat_chargeGroup</zorder>
+ <zorder>bat_statusGroup</zorder>
+ <zorder>bat_statusBox</zorder>
+ <zorder>bat_chargerBox</zorder>
+ <zorder>bat_healthGroup</zorder>
</widget>
<resources/>
<connections/>
diff --git a/android/android-emu/android/skin/qt/extended-pages/bug-report-page.cpp b/android/android-emu/android/skin/qt/extended-pages/bug-report-page.cpp
index 521caa767e..3af7a55357 100644
--- a/android/android-emu/android/skin/qt/extended-pages/bug-report-page.cpp
+++ b/android/android-emu/android/skin/qt/extended-pages/bug-report-page.cpp
@@ -362,7 +362,8 @@ void BugreportPage::loadAdbBugreport() {
} else {
// TODO(wdu) Better error handling for failed adb bugreport
// generation
- showErrorDialog(tr("There was an error while generating "
+ showErrorDialog(tr("Bug report interrupted by snapshot load? "
+ "There was an error while generating "
"adb bugreport"),
tr("Bugreport"));
}
diff --git a/android/android-emu/android/skin/qt/extended-pages/telephony-page.ui b/android/android-emu/android/skin/qt/extended-pages/telephony-page.ui
index f77334094e..9c1fee32d8 100644
--- a/android/android-emu/android/skin/qt/extended-pages/telephony-page.ui
+++ b/android/android-emu/android/skin/qt/extended-pages/telephony-page.ui
@@ -26,7 +26,7 @@
<string notr="true">padding: 4px 2px 2px 2px;</string>
</property>
<property name="plainText">
- <string>Oreo's a slam dunk!</string>
+ <string>Yumm! Pie à la Android mode!</string>
</property>
<property name="ColorGroup" stdset="0">
<string>SmsBox</string>
diff --git a/android/android-emu/android/skin/qt/extended-pages/virtual-sensors-page.cpp b/android/android-emu/android/skin/qt/extended-pages/virtual-sensors-page.cpp
index 7c6bacefa4..6c5e78af4d 100644
--- a/android/android-emu/android/skin/qt/extended-pages/virtual-sensors-page.cpp
+++ b/android/android-emu/android/skin/qt/extended-pages/virtual-sensors-page.cpp
@@ -14,7 +14,7 @@
#include "android/hw-sensors.h"
#include "android/metrics/PeriodicReporter.h"
#include "android/metrics/proto/studio_stats.pb.h"
-#include "android/physics/Physics.h"
+#include "android/physics/GlmHelpers.h"
#include "android/skin/ui.h"
#include "android/skin/qt/stylesheet.h"
@@ -312,7 +312,10 @@ void VirtualSensorsPage::startSensorUpdateTimer() {
void VirtualSensorsPage::stopSensorUpdateTimer() {
mBypassOrientationChecks = false;
mAccelerationTimer.stop();
- updateSensorValuesInUI();
+
+ // Do one last sync with the UI, but do it outside of this callback to
+ // prevent a deadlock.
+ QTimer::singleShot(0, this, SLOT(updateSensorValuesInUI()));
}
void VirtualSensorsPage::onVirtualSceneControlsEngaged(bool engaged) {
@@ -572,6 +575,8 @@ void VirtualSensorsPage::updateSensorValuesInUI() {
updateUIFromModelCurrentState();
if (sSensorsAgent != nullptr) {
+ sSensorsAgent->advanceTime();
+
glm::vec3 gravity_vector(0.0f, 9.81f, 0.0f);
glm::vec3 device_accelerometer;
diff --git a/android/android-emu/android/skin/qt/images/all/error.svg b/android/android-emu/android/skin/qt/images/all/error.svg
new file mode 100755
index 0000000000..9fd90d3c1c
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/error.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>ERROR</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="ERROR" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="add-connection" transform="translate(8.000000, 8.000000) rotate(135.000000) translate(-8.000000, -8.000000) ">
+ <rect id="Rectangle-path" x="0" y="0" width="16" height="16"></rect>
+ <path d="M9,7 L9,3 L7,3 L7,7 L3,7 L3,9 L7,9 L7,13 L9,13 L9,9 L13,9 L13,7 L9,7 Z M8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 Z" id="Shape" fill="#D04455"></path>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/android/android-emu/android/skin/qt/images/all/error_2x.svg b/android/android-emu/android/skin/qt/images/all/error_2x.svg
new file mode 100644
index 0000000000..a765ef08ef
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/error_2x.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>ERROR</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="ERROR" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="add-connection" transform="translate(16.000000, 16.000000) rotate(135.000000) translate(-16.000000, -16.000000) ">
+ <rect id="Rectangle-path" x="0" y="0" width="32" height="32"></rect>
+ <path d="M18,14 L18,6 L14,6 L14,14 L6,14 L6,18 L14,18 L14,26 L18,26 L18,18 L26,18 L26,14 L18,14 Z M16,30 C8.2680135,30 2,23.7319864 2,16 C2,8.2680135 8.2680135,2 16,2 C23.7319864,2 30,8.2680135 30,16 C30,23.7319864 23.7319864,30 16,30 Z" id="Shape" fill="#D04455"></path>
+ </g>
+ </g>
+</svg>
diff --git a/android/android-emu/android/skin/qt/images/all/ic_warning_amber_24dp.svg b/android/android-emu/android/skin/qt/images/all/ic_warning_amber_24dp.svg
new file mode 100644
index 0000000000..aa1bd351a6
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/ic_warning_amber_24dp.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="#FFC107">
+ <path d="M0 0h24v24H0z" fill="none"/>
+ <path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/>
+</svg>
diff --git a/android/android-emu/android/skin/qt/images/all/ic_warning_amber_48dp.svg b/android/android-emu/android/skin/qt/images/all/ic_warning_amber_48dp.svg
new file mode 100644
index 0000000000..3ed492c69e
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/ic_warning_amber_48dp.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="48px" height="48px" viewBox="0 0 48 48" fill="#FFC107">
+ <path d="M0 0h48v48H0z" fill="none"/>
+ <path d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/>
+</svg>
diff --git a/android/android-emu/android/skin/qt/images/all/success.svg b/android/android-emu/android/skin/qt/images/all/success.svg
new file mode 100755
index 0000000000..c7ffe8a6a7
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/success.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>SUCCESS</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="SUCCESS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="success">
+ <rect id="Rectangle-path" x="0" y="0" width="16" height="16"></rect>
+ <path d="M8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 Z M4.685,7.484 L3.776,8.403 L6.536,11.136 L12.106,5.639 L11.189,4.728 L6.529,9.31 L4.685,7.484 Z" id="Shape" fill="#48C64D"></path>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/android/android-emu/android/skin/qt/images/all/success_2x.svg b/android/android-emu/android/skin/qt/images/all/success_2x.svg
new file mode 100644
index 0000000000..133943bf18
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/success_2x.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>SUCCESS</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="SUCCESS" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="success">
+ <rect id="Rectangle-path" x="0" y="0" width="32" height="32"></rect>
+ <path d="M16,30 C8.2680135,30 2,23.7319864 2,16 C2,8.2680135 8.2680135,2 16,2 C23.7319864,2 30,8.2680135 30,16 C30,23.7319864 23.7319864,30 16,30 Z M9.37,14.968 L7.552,16.806 L13.072,22.272 L24.212,11.278 L22.378,9.456 L13.058,18.62 L9.37,14.968 Z" id="Shape" fill="#48C64D"></path>
+ </g>
+ </g>
+</svg>
diff --git a/android/android-emu/android/skin/qt/images/all/warning.svg b/android/android-emu/android/skin/qt/images/all/warning.svg
new file mode 100755
index 0000000000..67286e765e
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/warning.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>INFO</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="INFO" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="info">
+ <rect id="Rectangle-path" x="0" y="0" width="16" height="16"></rect>
+ <path d="M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M9,12 L9,7 L7,7 L7,12 L9,12 Z M9,6 L9,4 L7,4 L7,6 L9,6 Z" id="Shape" fill="#F8BC1C"></path>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/android/android-emu/android/skin/qt/images/all/warning_2x.svg b/android/android-emu/android/skin/qt/images/all/warning_2x.svg
new file mode 100644
index 0000000000..076d84c738
--- /dev/null
+++ b/android/android-emu/android/skin/qt/images/all/warning_2x.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.2 (57519) - http://www.bohemiancoding.com/sketch -->
+ <title>INFO</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="INFO" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="info">
+ <rect id="Rectangle-path" x="0" y="0" width="32" height="32"></rect>
+ <path d="M16,2 C23.7319864,2 30,8.2680135 30,16 C30,23.7319864 23.7319864,30 16,30 C8.2680135,30 2,23.7319864 2,16 C2,8.2680135 8.2680135,2 16,2 Z M18,24 L18,14 L14,14 L14,24 L18,24 Z M18,12 L18,8 L14,8 L14,12 L18,12 Z" id="Shape" fill="#F8BC1C"></path>
+ </g>
+ </g>
+</svg>
diff --git a/android/android-emu/android/skin/qt/qt-settings.h b/android/android-emu/android/skin/qt/qt-settings.h
index ec72e0739f..c5c2a3bab4 100644
--- a/android/android-emu/android/skin/qt/qt-settings.h
+++ b/android/android-emu/android/skin/qt/qt-settings.h
@@ -47,11 +47,19 @@ constexpr char ADB_PATH[] = "set/adbPath";
constexpr char AUTO_FIND_ADB[] = "set/autoFindAdb";
constexpr char ALWAYS_ON_TOP[] = "set/alwaysOnTop";
constexpr char FORWARD_SHORTCUTS_TO_DEVICE[] = "set/forwardShortcutsToDevice";
-constexpr char FRAME_ALWAYS[] = "set/frameAlways4"; // Do not use "set/frameAlways" (current version: 4 (for canary, default with frame for Wear devices only, default off for everything else))
+constexpr char FRAME_ALWAYS[] = "set/frameAlways4"; // Do not use "set/frameAlways": the current
+ // version is 4
+ // (for canary, default with frame ON for Wear
+ // devices, default OFF for everything else)
constexpr char SAVE_PATH[] = "set/savePath";
constexpr char UI_THEME[] = "set/theme";
constexpr char DISABLE_MOUSE_WHEEL[] = "set/disableMouseWheel";
+constexpr char BATTERY_CHARGE_LEVEL[] = "battery/charge_level";
+constexpr char BATTERY_CHARGER_TYPE[] = "battery/charger_type";
+constexpr char BATTERY_HEALTH[] = "battery/health";
+constexpr char BATTERY_STATUS[] = "battery/status";
+
constexpr char CELLULAR_NETWORK_TYPE[] = "cell/network_type";
constexpr char CELLULAR_SIGNAL_STRENGTH[] = "cell/signal_strength";
constexpr char CELLULAR_VOICE_STATUS[] = "cell/voice_status";
diff --git a/android/android-emu/android/skin/qt/resources.qrc b/android/android-emu/android/skin/qt/resources.qrc
index 311f739468..02fe5eae37 100644
--- a/android/android-emu/android/skin/qt/resources.qrc
+++ b/android/android-emu/android/skin/qt/resources.qrc
@@ -277,11 +277,13 @@
<file alias="wasd">images/virtualscene/ic_wasd_white_48dp.svg</file>
</qresource>
<qresource prefix="/all">
- <file alias="error">images/all/error.png</file>
- <file alias="error_2x">images/all/error_2x.png</file>
+ <file alias="error">images/all/error.svg</file>
+ <file alias="error_2x">images/all/error_2x.svg</file>
<file alias="info">images/all/ic_info_outline_0BA_24dp.svg</file>
<file alias="info_2x">images/all/ic_info_outline_0BA_48dp.svg</file>
- <file alias="warning">images/all/warning.png</file>
- <file alias="warning_2x">images/all/warning_2x.png</file>
+ <file alias="warning">images/all/warning.svg</file>
+ <file alias="warning_2x">images/all/warning_2x.svg</file>
+ <file alias="success">images/all/success.svg</file>
+ <file alias="success_2x">images/all/success_2x.svg</file>
</qresource>
</RCC>
diff --git a/android/android-emu/android/skin/qt/sources.mk b/android/android-emu/android/skin/qt/sources.mk
index a5b5a51467..5d7ca412c2 100644
--- a/android/android-emu/android/skin/qt/sources.mk
+++ b/android/android-emu/android/skin/qt/sources.mk
@@ -5,6 +5,7 @@ ANDROID_SKIN_SOURCES += \
android/skin/qt/init-qt.cpp \
android/skin/qt/surface-qt.cpp \
android/skin/qt/winsys-qt.cpp \
+ android/skin/qt/QtLogger.cpp \
ifeq (darwin,$(BUILD_TARGET_OS))
ANDROID_SKIN_SOURCES += \
diff --git a/android/android-emu/android/skin/qt/winsys-qt.cpp b/android/android-emu/android/skin/qt/winsys-qt.cpp
index 63cc1294d5..42f627c6fa 100755
--- a/android/android-emu/android/skin/qt/winsys-qt.cpp
+++ b/android/android-emu/android/skin/qt/winsys-qt.cpp
@@ -27,6 +27,7 @@
#include "android/skin/qt/extended-pages/snapshot-page.h"
#include "android/skin/qt/init-qt.h"
#include "android/skin/qt/qt-settings.h"
+#include "android/skin/qt/QtLogger.h"
#include "android/utils/setenv.h"
#include "android/main-common-ui.h"
@@ -365,6 +366,8 @@ extern void skin_winsys_quit_request()
void skin_winsys_destroy() {
D(__FUNCTION__);
+ QtLogger::stop();
+
// Mac is still causing us troubles - it somehow manages to not call the
// main window destructor (in qemi1 only!) and crashes if QApplication
// is destroyed right here. So let's delay the deletion for now
@@ -539,8 +542,35 @@ extern void skin_winsys_init_args(int argc, char** argv) {
g->argv = argv;
}
+void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+{
+ QtLogger* q = QtLogger::get();
+ QByteArray localMsg = msg.toLocal8Bit();
+ switch (type) {
+ case QtDebugMsg:
+ q->write("Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ break;
+ case QtInfoMsg:
+ q->write("Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ break;
+ case QtWarningMsg:
+ fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ q->write("Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ break;
+ case QtCriticalMsg:
+ fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ q->write("Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ break;
+ case QtFatalMsg:
+ fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ q->write("Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
+ break;
+ }
+}
+
extern int skin_winsys_snapshot_control_start() {
GlobalState* g = globalState();
+
g->app = new QApplication(g->argc, g->argv);
androidQtDefaultInit();
// Pop up a stand-alone Snapshot pane
@@ -562,6 +592,7 @@ extern void skin_winsys_start(bool no_window) {
#endif
skin_winsys_setup_library_paths();
+ qInstallMessageHandler(myMessageOutput);
if (no_window) {
g->app = new QCoreApplication(g->argc, g->argv);
EmulatorQtNoWindow::create();
diff --git a/android/android-emu/android/snapshot/Loader.cpp b/android/android-emu/android/snapshot/Loader.cpp
index a2e2b0b1b3..feb7283421 100644
--- a/android/android-emu/android/snapshot/Loader.cpp
+++ b/android/android-emu/android/snapshot/Loader.cpp
@@ -110,6 +110,10 @@ void Loader::interrupt() {
if (mRamLoader && !mRamLoader->hasError()) {
mRamLoader->interrupt();
}
+
+ if (mTextureLoader && !mTextureLoader->hasError()) {
+ mTextureLoader->interrupt();
+ }
}
ITextureLoaderPtr Loader::textureLoader() const {
@@ -151,6 +155,12 @@ void Loader::onInvalidSnapshotLoad() {
}
}
+void Loader::touchAllPages() {
+ if (mRamLoader) {
+ mRamLoader->touchAllPages();
+ }
+}
+
void Loader::synchronize(bool isOnExit) {
if (mTextureLoader) {
mTextureLoader->join();
diff --git a/android/android-emu/android/snapshot/Loader.h b/android/android-emu/android/snapshot/Loader.h
index c200c6dc5b..dd2c1b9baa 100644
--- a/android/android-emu/android/snapshot/Loader.h
+++ b/android/android-emu/android/snapshot/Loader.h
@@ -44,6 +44,8 @@ public:
void complete(bool succeeded);
void onInvalidSnapshotLoad();
+ void touchAllPages();
+
// synchronize() will finish all background loading operations and update
// the gap tracker with gap info from the ram file on disk, making the
// Loader good for doing all other operations that can happen on it.
diff --git a/android/android-emu/android/snapshot/Quickboot.cpp b/android/android-emu/android/snapshot/Quickboot.cpp
index 02db588afd..f198bc7d0c 100644
--- a/android/android-emu/android/snapshot/Quickboot.cpp
+++ b/android/android-emu/android/snapshot/Quickboot.cpp
@@ -136,7 +136,7 @@ void Quickboot::reportSuccessfulSave(StringView name,
constexpr int kLivenessTimerTimeoutMs = 100;
constexpr int kBootTimeoutMs = 7 * 1000;
-constexpr int kMaxAdbConnectionRetries = 2;
+constexpr int kMaxAdbConnectionRetries = 3;
static int bootTimeoutMs() {
if (android_cmdLineOptions->read_only) {
@@ -168,14 +168,23 @@ void Quickboot::onLivenessTimer() {
const auto nowMs = System::get()->getHighResTimeUs() / 1000;
if (int64_t(nowMs - mLoadTimeMs) > bootTimeoutMs()) {
- if (android_cmdLineOptions->read_only ||
+ if (mAdbConnectionRetries == 0) {
+ mWindow.showMessage(
+ StringFormat("Guest isn't online after %d seconds, "
+ "loading remaining RAM pages",
+ int(nowMs - mLoadTimeMs) / 1000)
+ .c_str(),
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
+ Snapshotter::get().touchAllPages();
+ mAdbConnectionRetries++;
+ } else if (android_cmdLineOptions->read_only ||
mAdbConnectionRetries < kMaxAdbConnectionRetries) {
mWindow.showMessage(
StringFormat("Guest isn't online after %d seconds, "
"retrying ADB connection",
int(nowMs - mLoadTimeMs) / 1000)
.c_str(),
- WINDOW_MESSAGE_ERROR, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
android_adb_reset_connection();
mLoadTimeMs = nowMs;
mAdbConnectionRetries++;
@@ -241,7 +250,7 @@ bool Quickboot::load(StringView name) {
// Only display a message if this is a one-time-like thing (command
// line), and not an AVD option.
mWindow.showMessage("Cold boot: requested by the user",
- WINDOW_MESSAGE_INFO, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
}
reportFailedLoad(
android_hw->fastboot_forceColdBoot
@@ -254,7 +263,7 @@ bool Quickboot::load(StringView name) {
mWindow.showMessage(
StringFormat(
"Cold boot: in Android build system").c_str(),
- WINDOW_MESSAGE_INFO, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
reportFailedLoad(pb::EmulatorQuickbootLoad::
EMULATOR_QUICKBOOT_LOAD_COLD_AVD,
FailureReason::Empty);
@@ -265,7 +274,7 @@ bool Quickboot::load(StringView name) {
emuglConfig_renderer_to_string(
emuglConfig_get_current_renderer()))
.c_str(),
- WINDOW_MESSAGE_INFO, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
reportFailedLoad(pb::EmulatorQuickbootLoad::
EMULATOR_QUICKBOOT_LOAD_COLD_UNSUPPORTED,
FailureReason::Empty);
@@ -341,7 +350,7 @@ void Quickboot::decideFailureReport(StringView name,
// There's no quickboot snapshot and the user is configured
// for NO save on exit. Say that is the reason.
mWindow.showMessage("Cold boot based on user configuration",
- WINDOW_MESSAGE_INFO, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
reportFailedLoad(pb::EmulatorQuickbootLoad::EMULATOR_QUICKBOOT_LOAD_COLD_AVD,
*failureReason);
} else {
@@ -351,7 +360,7 @@ void Quickboot::decideFailureReport(StringView name,
failureReasonToString(*failureReason,
SNAPSHOT_LOAD))
.c_str(),
- WINDOW_MESSAGE_INFO, kDefaultMessageTimeoutMs);
+ WINDOW_MESSAGE_OK, kDefaultMessageTimeoutMs);
}
reportFailedLoad(
failureReason < FailureReason::UnrecoverableErrorLimit
@@ -426,7 +435,10 @@ bool Quickboot::save(StringView name) {
const auto nowMs = System::get()->getHighResTimeUs() / 1000;
const auto sessionUptimeMs =
nowMs - (mLoadTimeMs ? mLoadTimeMs : mStartTimeMs);
- const bool ranLongEnoughForSaving = sessionUptimeMs > kMinUptimeForSavingMs;
+ const bool ranLongEnoughForSaving =
+ (Snapshotter::get().hasRamFile() &&
+ Snapshotter::get().isRamFileShared()) ||
+ sessionUptimeMs > kMinUptimeForSavingMs;
// TODO: when cleaning the current 'default_boot' snapshot, save the reason
// of its invalidation in it - this way emulator will be able to give a
@@ -529,7 +541,8 @@ bool androidSnapshot_quickbootSave(const char* _name) {
// Write user choice to the ini file if we are using file-backed RAM.
if (android::snapshot::Snapshotter::get().hasRamFile()) {
- bool wantedSaveOnExit = !(android_avdParams->flags & AVDINFO_NO_SNAPSHOT_SAVE_ON_EXIT);
+ bool wantedSaveOnExit =
+ !(android_avdParams->flags & AVDINFO_NO_SNAPSHOT_SAVE_ON_EXIT);
androidSnapshot_writeQuickbootChoice(wantedSaveOnExit);
}
diff --git a/android/android-emu/android/snapshot/RamLoader.cpp b/android/android-emu/android/snapshot/RamLoader.cpp
index 92021e5f9e..89363eb09e 100644
--- a/android/android-emu/android/snapshot/RamLoader.cpp
+++ b/android/android-emu/android/snapshot/RamLoader.cpp
@@ -18,6 +18,7 @@
#include "android/base/files/MemStream.h"
#include "android/base/files/PathUtils.h"
#include "android/base/files/preadwrite.h"
+#include "android/base/memory/MemoryHints.h"
#include "android/base/misc/StringUtils.h"
#include "android/base/Profiler.h"
#include "android/base/Stopwatch.h"
@@ -35,6 +36,7 @@
using android::base::ContiguousRangeMapper;
using android::base::ScopedMemoryProfiler;
+using android::base::MemoryHint;
using android::base::MemStream;
using android::base::PathUtils;
using android::base::Stopwatch;
@@ -211,6 +213,19 @@ void RamLoader::interrupt() {
mStream.close();
}
+// Touches all pages that are currently file-backed, making sure
+// they are in memory. Cost is similar to an eager RAM load.
+void RamLoader::touchAllPages() {
+ if (mLazyLoadingFromFileBacking) {
+ for (const auto& block : mIndex.blocks) {
+ if (block.ramBlock.path.empty()) continue;
+ android::base::memoryHint(block.ramBlock.hostPtr, block.ramBlock.totalSize, MemoryHint::Touch);
+ }
+ } else {
+ join();
+ }
+}
+
const RamLoader::Page* RamLoader::findPage(int blockIndex,
const char* id,
int pageIndex) const {
@@ -333,6 +348,7 @@ void RamLoader::readBlockPages(base::Stream* stream,
if ((savedFlags & SNAPSHOT_RAM_MAPPED_SHARED) &&
(activeFlags & SNAPSHOT_RAM_MAPPED) &&
savedMemPath == activeMemPath) {
+ mLazyLoadingFromFileBacking = true;
return;
}
@@ -358,12 +374,16 @@ void RamLoader::readBlockPages(base::Stream* stream,
int ramFileFd = fileno(ramFileStream.get());
uint8_t* hostPtr = block.ramBlock.hostPtr;
- uint64_t totalSz = block.ramBlock.totalSize;
+ int64_t totalSz = block.ramBlock.totalSize;
- static constexpr size_t readChunkSize = 16 * 1048576;
+ static constexpr int64_t kReadChunkSize = 16 * 1048576;
- for (size_t i = 0; i < totalSz; i += readChunkSize) {
- HANDLE_EINTR(base::pread(ramFileFd, hostPtr + i, readChunkSize, i));
+ for (int64_t i = 0; i < totalSz; i += kReadChunkSize) {
+ HANDLE_EINTR(
+ base::pread(ramFileFd,
+ hostPtr + i,
+ std::min(kReadChunkSize, totalSz - i),
+ i));
}
// Mark that we loaded this directly
@@ -671,8 +691,11 @@ bool RamLoader::readDataFromDisk(Page* pagePtr, uint8_t* preallocatedBuffer) {
return false;
}
+ bool decompressorThreadPoolOwned = false;
+
if (compressed) {
if (mDecompressor) {
+ decompressorThreadPoolOwned = true;
page.data = buf;
mDecompressor->enqueue(&page);
} else {
@@ -703,7 +726,9 @@ bool RamLoader::readDataFromDisk(Page* pagePtr, uint8_t* preallocatedBuffer) {
}
}
- page.data = buf;
+ if (!decompressorThreadPoolOwned) {
+ page.data = buf;
+ }
page.state.store(uint8_t(State::Read), std::memory_order_release);
return true;
}
diff --git a/android/android-emu/android/snapshot/RamLoader.h b/android/android-emu/android/snapshot/RamLoader.h
index 7b84a67a18..2697cb2c74 100644
--- a/android/android-emu/android/snapshot/RamLoader.h
+++ b/android/android-emu/android/snapshot/RamLoader.h
@@ -89,6 +89,8 @@ public:
void join();
void interrupt();
+ void touchAllPages();
+
bool hasError() const { return mHasError; }
void invalidateGaps() { mGaps.reset(nullptr); }
bool hasGaps() const { return mGaps ? 1 : 0; }
@@ -194,6 +196,9 @@ private:
// Whether we loaded to a ram.img
bool mLoadedToFileBacking = false;
+
+ // Whether we are currently lazy loading from a ram.img by mmap
+ bool mLazyLoadingFromFileBacking = false;
};
struct RamLoader::Page {
diff --git a/android/android-emu/android/snapshot/Saver.cpp b/android/android-emu/android/snapshot/Saver.cpp
index eececee436..f6faa41916 100644
--- a/android/android-emu/android/snapshot/Saver.cpp
+++ b/android/android-emu/android/snapshot/Saver.cpp
@@ -30,7 +30,7 @@ namespace android {
namespace snapshot {
Saver::Saver(const Snapshot& snapshot, RamLoader* loader, bool isOnExit,
- base::StringView ramMapFile, bool ramFileShared)
+ base::StringView ramMapFile, bool ramFileShared, bool isRemapping)
: mStatus(OperationStatus::Error), mSnapshot(snapshot) {
if (path_mkdir_if_needed(c_str(mSnapshot.dataDir()), 0777) != 0) {
return;
@@ -41,9 +41,9 @@ Saver::Saver(const Snapshot& snapshot, RamLoader* loader, bool isOnExit,
// If we're using a file-backed RAM that is writing through,
// no need to save pages synchronously on exit.
- if (isOnExit &&
- !ramMapFile.empty() &&
- ramFileShared) {
+ if ((!ramMapFile.empty() &&
+ ramFileShared) &&
+ (isOnExit || isRemapping)) {
flags |= RamSaver::Flags::Async;
}
diff --git a/android/android-emu/android/snapshot/Saver.h b/android/android-emu/android/snapshot/Saver.h
index ed0b3f056a..e9cc5ccf6c 100644
--- a/android/android-emu/android/snapshot/Saver.h
+++ b/android/android-emu/android/snapshot/Saver.h
@@ -31,7 +31,8 @@ public:
Saver(const Snapshot& snapshot, RamLoader* loader,
bool isOnExit,
base::StringView ramMapFile,
- bool ramFileShared);
+ bool ramFileShared,
+ bool isRemapping);
~Saver();
RamSaver& ramSaver() { return *mRamSaver; }
diff --git a/android/android-emu/android/snapshot/Snapshot.cpp b/android/android-emu/android/snapshot/Snapshot.cpp
index 30046aa8ff..f414cdfb68 100644
--- a/android/android-emu/android/snapshot/Snapshot.cpp
+++ b/android/android-emu/android/snapshot/Snapshot.cpp
@@ -336,7 +336,7 @@ struct {
avdInfo_getEncryptionKeyImagePath},
};
-static constexpr int kVersion = 26;
+static constexpr int kVersion = 27;
static constexpr int kMaxSaveStatsHistory = 10;
base::StringView Snapshot::dataDir(const char* name) {
diff --git a/android/android-emu/android/snapshot/SnapshotAPI.cpp b/android/android-emu/android/snapshot/SnapshotAPI.cpp
new file mode 100644
index 0000000000..7b9d53e0a9
--- /dev/null
+++ b/android/android-emu/android/snapshot/SnapshotAPI.cpp
@@ -0,0 +1,192 @@
+// Copyright 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#include "android/base/async/ThreadLooper.h"
+#include "android/base/memory/LazyInstance.h"
+#include "android/base/synchronization/Lock.h"
+#include "android/crashreport/crash-handler.h"
+#include "android/emulation/AndroidMessagePipe.h"
+#include "android/metrics/MetricsLogging.h"
+#include "android/multi-instance.h"
+#include "android/offworld/proto/offworld.pb.h"
+#include "android/snapshot/common.h"
+#include "android/snapshot/interface.h"
+
+#include <assert.h>
+#include <atomic>
+#include <cstdint>
+#include <memory>
+#include <sstream>
+#include <vector>
+
+extern const QAndroidVmOperations* const gQAndroidVmOperations;
+
+namespace {
+
+struct SnapshotCrossSession {
+ android::AndroidMessagePipe::DataBuffer sMetaData = {};
+ android::base::Lock sLock = {};
+ int sForkTotal = 0;
+ int sForkId = 0;
+};
+
+android::base::LazyInstance<SnapshotCrossSession> sSnapshotCrossSession;
+
+static void setResponseAfterLoad(const google::protobuf::Message& message) {
+ std::vector<uint8_t> output;
+
+ uint32_t recvSize = message.ByteSize();
+ output.resize(recvSize + sizeof(recvSize));
+ memcpy(output.data(), (void*)&recvSize, sizeof(recvSize));
+ message.SerializeToArray(output.data() + sizeof(recvSize), recvSize);
+
+ sSnapshotCrossSession->sMetaData = std::move(output);
+}
+
+void setCheckpointMetadataResponse(android::base::StringView metadata) {
+ // Note: metadata are raw bytes, not necessary a string. It is
+ // just protobuf encodes them into strings. The data should be
+ // handled as raw bytes (no extra '\0' at the end). Please try
+ // not to use metadata.c_str().
+ offworld::Response response;
+ response.set_result(offworld::Response::RESULT_NO_ERROR);
+ response.mutable_snapshot()->mutable_create_checkpoint()->set_metadata(
+ metadata);
+ setResponseAfterLoad(response);
+}
+
+void setForkIdResponse(int forkId) {
+ offworld::Response response;
+ response.set_result(offworld::Response::RESULT_NO_ERROR);
+ response.mutable_snapshot()
+ ->mutable_fork_read_only_instances()
+ ->set_instance_id(forkId);
+ setResponseAfterLoad(response);
+}
+
+} // namespace
+
+namespace android {
+namespace snapshot {
+
+void createCheckpoint(android::base::StringView name) {
+ const std::string snapshotName = name;
+
+ gQAndroidVmOperations->vmStop();
+ android::base::ThreadLooper::runOnMainLooper([snapshotName]() {
+ androidSnapshot_save(snapshotName.c_str());
+ gQAndroidVmOperations->vmStart();
+ });
+}
+
+void gotoCheckpoint(
+ android::base::StringView name,
+ android::base::StringView metadata,
+ android::base::Optional<android::base::FileShare> shareMode) {
+ const std::string snapshotName = name;
+
+ setCheckpointMetadataResponse(metadata);
+
+ gQAndroidVmOperations->vmStop();
+ android::base::ThreadLooper::runOnMainLooper([snapshotName, shareMode]() {
+ if (shareMode) {
+ bool res = android::multiinstance::updateInstanceShareMode(
+ snapshotName.c_str(), *shareMode);
+ if (!res) {
+ fprintf(stderr, "WARNING: share mode update failure\n");
+ }
+ }
+ androidSnapshot_load(snapshotName.c_str());
+ gQAndroidVmOperations->vmStart();
+ });
+}
+
+void forkReadOnlyInstances(int forkTotal) {
+ if (android::multiinstance::getInstanceShareMode() !=
+ android::base::FileShare::Write) {
+ return;
+ }
+
+ sSnapshotCrossSession->sForkTotal = forkTotal;
+ sSnapshotCrossSession->sForkId = 0;
+
+ setForkIdResponse(0);
+
+ gQAndroidVmOperations->vmStop();
+ android::base::ThreadLooper::runOnMainLooper([]() {
+ // snapshotRemap triggers a snapshot save.
+ // It must happen before changing disk backend
+ bool res =
+ gQAndroidVmOperations->snapshotRemap(false, nullptr, nullptr);
+ if (!res) {
+ fprintf(stderr, "WARNING: RAM share mode update failure\n");
+ }
+ // Update share mode flag and disk backend
+ res = android::multiinstance::updateInstanceShareMode(
+ android::snapshot::kDefaultBootSnapshot,
+ android::base::FileShare::Read);
+ if (!res) {
+ fprintf(stderr, "WARNING: share mode update failure\n");
+ }
+ assert(res);
+ androidSnapshot_load(android::snapshot::kDefaultBootSnapshot);
+ gQAndroidVmOperations->vmStart();
+ });
+}
+
+void doneInstance() {
+ if (sSnapshotCrossSession->sForkId <
+ sSnapshotCrossSession->sForkTotal - 1) {
+ sSnapshotCrossSession->sForkId++;
+
+ setForkIdResponse(sSnapshotCrossSession->sForkId);
+
+ if (sSnapshotCrossSession->sForkId <
+ sSnapshotCrossSession->sForkTotal - 1) {
+ gQAndroidVmOperations->vmStop();
+ // Load back to write mode for the last run
+ android::base::FileShare mode =
+ sSnapshotCrossSession->sForkId <
+ sSnapshotCrossSession->sForkTotal - 2
+ ? android::base::FileShare::Read
+ : android::base::FileShare::Write;
+ android::base::ThreadLooper::runOnMainLooper([mode]() {
+ bool res = android::multiinstance::updateInstanceShareMode(
+ android::snapshot::kDefaultBootSnapshot, mode);
+ if (!res) {
+ fprintf(stderr, "WARNING: share mode update failure\n");
+ }
+ res = gQAndroidVmOperations->snapshotRemap(
+ mode == android::base::FileShare::Write, nullptr,
+ nullptr);
+ gQAndroidVmOperations->vmStart();
+ });
+ }
+ } else if (sSnapshotCrossSession->sForkId ==
+ sSnapshotCrossSession->sForkTotal - 1) {
+ // We don't load after the last run
+ sSnapshotCrossSession->sForkId = 0;
+ sSnapshotCrossSession->sForkTotal = 0;
+
+ // TODO(yahan): Send a DoneInstance response.
+
+ } else {
+ fprintf(stderr, "WARNING: bad fork session ID\n");
+ }
+}
+
+std::vector<uint8_t> getLoadMetadata() {
+ // sMetaData should be cleared after the move
+ return std::move(sSnapshotCrossSession->sMetaData);
+}
+
+} // namespace snapshot
+} // namespace android
diff --git a/android/android-emu/android/snapshot/SnapshotAPI.h b/android/android-emu/android/snapshot/SnapshotAPI.h
new file mode 100644
index 0000000000..84ce2754db
--- /dev/null
+++ b/android/android-emu/android/snapshot/SnapshotAPI.h
@@ -0,0 +1,36 @@
+// Copyright 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#pragma once
+
+#include "android/base/Optional.h"
+#include "android/base/StringView.h"
+#include "android/base/files/FileShareOpen.h"
+
+#include <vector>
+
+namespace android {
+namespace snapshot {
+
+void createCheckpoint(android::base::StringView name);
+
+void gotoCheckpoint(
+ android::base::StringView name,
+ android::base::StringView metadata,
+ android::base::Optional<android::base::FileShare> shareMode);
+
+void forkReadOnlyInstances(int forkTotal);
+void doneInstance();
+
+std::vector<uint8_t> getLoadMetadata();
+
+} // namespace snapshot
+} // namespace android
diff --git a/android/android-emu/android/snapshot/SnapshotPipe.cpp b/android/android-emu/android/snapshot/SnapshotPipe.cpp
deleted file mode 100644
index b24d42df48..0000000000
--- a/android/android-emu/android/snapshot/SnapshotPipe.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright 2018 The Android Open Source Project
-//
-// This software is licensed under the terms of the GNU General Public
-// License version 2, as published by the Free Software Foundation, and
-// may be copied, distributed, and modified under those terms.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-#include "android/base/async/ThreadLooper.h"
-#include "android/base/synchronization/Lock.h"
-#include "android/crashreport/crash-handler.h"
-#include "android/emulation/AndroidMessagePipe.h"
-#include "android/metrics/MetricsLogging.h"
-#include "android/multi-instance.h"
-#include "android/snapshot/interface.h"
-#include "android/snapshot/proto/offworld.pb.h"
-
-#include <assert.h>
-#include <atomic>
-#include <cstdint>
-#include <memory>
-#include <sstream>
-#include <vector>
-
-extern const QAndroidVmOperations* const gQAndroidVmOperations;
-
-namespace {
-
-size_t getReadable(std::iostream& stream) {
- size_t beg = stream.tellg();
- stream.seekg(0, stream.end);
- size_t ret = (size_t)stream.tellg() - beg;
- stream.seekg(beg, stream.beg);
- return ret;
-}
-
-class SnapshotPipe : public android::AndroidMessagePipe {
-public:
- class Service : public android::AndroidPipe::Service {
- public:
- Service() : android::AndroidPipe::Service("SnapshotPipe") {}
- bool canLoad() const override { return true; }
-
- virtual android::AndroidPipe* create(void* hwPipe, const char* args)
- override {
- // To avoid complicated synchronization issues, only 1 instance
- // of a SnapshotPipe is allowed at a time
- if (sLock.tryLock()) {
- return new SnapshotPipe(hwPipe, this);
- } else {
- return nullptr;
- }
- }
-
- android::AndroidPipe* load(void* hwPipe,
- const char* args,
- android::base::Stream* stream) override {
- __attribute__((unused)) bool success = sLock.tryLock();
- assert(success);
- return new SnapshotPipe(hwPipe, this, stream);
- }
- };
- SnapshotPipe(void* hwPipe,
- Service* service,
- android::base::Stream* loadStream = nullptr)
- : android::AndroidMessagePipe(hwPipe, service, decodeAndExecute,
- loadStream) {
- ANDROID_IF_DEBUG(assert(sLock.isLocked()));
- mIsLoad = static_cast<bool>(loadStream);
- if (mIsLoad) {
- resetRecvPayload(std::move(sMetaData));
- // sMetaData should be cleared after the move
- }
- }
- ~SnapshotPipe() {
- sLock.unlock();
- }
-
-private:
- static void encodeGuestRecvFrame(const google::protobuf::Message& message,
- std::vector<uint8_t>* output) {
- uint32_t recvSize = message.ByteSize();
- output->resize(recvSize + sizeof(recvSize));
- memcpy(output->data(), (void*)&recvSize, sizeof(recvSize));
- message.SerializeToArray(output->data() + sizeof(recvSize),
- recvSize);
- }
- static void decodeAndExecute(const std::vector<uint8_t>& input,
- std::vector<uint8_t>* output) {
- offworld::GuestSend guestSendPb;
- offworld::GuestRecv guestRecvPb;
- bool shouldReply = false;
- if (!guestSendPb.ParseFromArray(input.data(), input.size())) {
- E("Offworld lib message parsing failed.");
- } else {
- switch (guestSendPb.module_case()) {
- case offworld::GuestSend::ModuleCase::kSnapshot:
- handleSnapshotPb(guestSendPb, &shouldReply, &guestRecvPb);
- break;
- case offworld::GuestSend::ModuleCase::kArTesting:
- // TODO
- break;
- default:
- E("Offworld lib received unrecognized message!");
- }
- }
- if (shouldReply) {
- output->resize(guestRecvPb.ByteSize());
- guestRecvPb.SerializeToArray(output, output->size());
- } else {
- output->clear();
- }
- }
- static void handleSnapshotPb(const offworld::GuestSend& guestSend,
- bool* shouldReply, offworld::GuestRecv* guerstRecv) {
- const offworld::GuestSend::ModuleSnapshot& snapshotPb
- = guestSend.snapshot();
- using MS = offworld::GuestSend::ModuleSnapshot;
- switch (snapshotPb.function_case()) {
- case MS::FunctionCase::kCreateCheckpointParam: {
- const std::string& snapshotName
- = snapshotPb.create_checkpoint_param().snapshot_name();
- gQAndroidVmOperations->vmStop();
- android::base::ThreadLooper::runOnMainLooper([snapshotName]() {
- androidSnapshot_save(snapshotName.data());
- gQAndroidVmOperations->vmStart();
- });
- *shouldReply = false;
- break;
- }
- case MS::FunctionCase::kGotoCheckpointParam: {
- const MS::GotoCheckpoint& gotoCheckpointParam
- = snapshotPb.goto_checkpoint_param();
- const std::string& snapshotName
- = gotoCheckpointParam.snapshot_name();
- // Note: metadata are raw bytes, not necessary a string. It is
- // just protobuf encodes them into strings. The data should be
- // handled as raw bytes (no extra '\0' at the end). Please try
- // not to use metadata.c_str().
- const std::string& metadata
- = gotoCheckpointParam.metadata();
- offworld::GuestRecv::ModuleSnapshot::CreateCheckpoint guestRecv;
- guestRecv.set_metadata(metadata);
- encodeGuestRecvFrame(guestRecv, &sMetaData);
- gQAndroidVmOperations->vmStop();
- android::base::FileShare shareMode =
- android::multiinstance::getInstanceShareMode();
- if (gotoCheckpointParam.has_share_mode() &&
- gotoCheckpointParam.share_mode() !=
- MS::GotoCheckpoint::UNKNOWN &&
- gotoCheckpointParam.share_mode() !=
- MS::GotoCheckpoint::UNCHANGED) {
- switch (gotoCheckpointParam.share_mode()) {
- case MS::GotoCheckpoint::READ_ONLY:
- shareMode = android::base::FileShare::Read;
- break;
- case MS::GotoCheckpoint::WRITABLE:
- shareMode = android::base::FileShare::Write;
- break;
- default:
- fprintf(stderr,
- "WARNING: unsupported share mode, "
- "default to unchanged.\n");
- break;
- }
- }
- android::base::ThreadLooper::runOnMainLooper([snapshotName,
- shareMode]() {
- bool res = android::multiinstance::updateInstanceShareMode(
- snapshotName.c_str(), shareMode);
- if (!res) {
- fprintf(stderr, "WARNING: share mode update failure\n");
- }
- androidSnapshot_load(snapshotName.data());
- gQAndroidVmOperations->vmStart();
- });
- *shouldReply = false;
- break;
- }
- default:
- fprintf(stderr, "Error: offworld lib received unrecognized "
- "message!");
- *shouldReply = false;
- }
- }
- enum class OP : int32_t { Save = 0, Load = 1 };
- bool mIsLoad;
- static DataBuffer sMetaData;
- static android::base::Lock sLock;
-};
-
-android::AndroidMessagePipe::DataBuffer SnapshotPipe::sMetaData = {};
-android::base::Lock SnapshotPipe::sLock = {};
-
-} // namespace
-
-namespace android {
-namespace snapshot {
-void registerSnapshotPipeService() {
- android::AndroidPipe::Service::add(new SnapshotPipe::Service());
-}
-} // namespace snapshot
-} // namespace android
diff --git a/android/android-emu/android/snapshot/Snapshotter.cpp b/android/android-emu/android/snapshot/Snapshotter.cpp
index 3661a58bed..696fdff749 100644
--- a/android/android-emu/android/snapshot/Snapshotter.cpp
+++ b/android/android-emu/android/snapshot/Snapshotter.cpp
@@ -284,6 +284,17 @@ OperationStatus Snapshotter::load(bool isQuickboot, const char* name) {
return mLoader->status();
}
+void Snapshotter::touchAllPages() {
+ android::RecursiveScopedVmLock lock;
+ if (mLoader) {
+ CrashReporter::get()->hangDetector().pause(true);
+ callCallbacks(Operation::Load, Stage::Start);
+ mLoader->touchAllPages();
+ callCallbacks(Operation::Load, Stage::End);
+ CrashReporter::get()->hangDetector().pause(false);
+ }
+}
+
void Snapshotter::prepareLoaderForSaving(const char* name) {
if (!mLoader) {
return;
@@ -498,7 +509,7 @@ bool Snapshotter::checkSafeToSave(const char* name, bool reportMetrics) {
if (reportMetrics) {
appendFailedSave(
pb::EmulatorSnapshotSaveState::
- EMULATOR_SNAPSHOT_SAVE_SKIPPED_NOT_BOOTED,
+ EMULATOR_SNAPSHOT_SAVE_SKIPPED_DISK_PRESSURE,
FailureReason::OutOfDiskSpace);
}
return false;
@@ -628,12 +639,14 @@ OperationStatus Snapshotter::prepareForSaving(const char* name) {
prepareLoaderForSaving(name);
mVmOperations.vmStop();
mSaver.reset(new Saver(
- name, (mLoader && mLoader->status() != OperationStatus::Error)
+ name, (mLoader && mLoader->hasRamLoader() &&
+ mLoader->status() != OperationStatus::Error)
? &mLoader->ramLoader()
: nullptr,
mIsOnExit,
mRamFile,
- mRamFileShared));
+ mRamFileShared,
+ mIsRemapping));
mVmOperations.vmStart();
mSaver->prepare();
return mSaver->status();
@@ -658,6 +671,10 @@ void Snapshotter::setRamFile(const char* path, bool shared) {
mRamFileShared = shared;
}
+void Snapshotter::setRamFileShared(bool shared) {
+ mRamFileShared = shared;
+}
+
void Snapshotter::cancelSave() {
if (!mSaver)
return;
@@ -770,12 +787,14 @@ bool Snapshotter::onStartSaving(const char* name) {
prepareLoaderForSaving(name);
if (!mSaver || isComplete(*mSaver)) {
mSaver.reset(new Saver(
- name, (mLoader && mLoader->status() != OperationStatus::Error)
+ name, (mLoader && mLoader->hasRamLoader() &&
+ mLoader->status() != OperationStatus::Error)
? &mLoader->ramLoader()
: nullptr,
mIsOnExit,
mRamFile,
- mRamFileShared));
+ mRamFileShared,
+ mIsRemapping));
}
if (mSaver->status() == OperationStatus::Error) {
onSavingComplete(name, -1);
diff --git a/android/android-emu/android/snapshot/Snapshotter.h b/android/android-emu/android/snapshot/Snapshotter.h
index 8dbec9029b..370fe76712 100644
--- a/android/android-emu/android/snapshot/Snapshotter.h
+++ b/android/android-emu/android/snapshot/Snapshotter.h
@@ -71,10 +71,12 @@ public:
OperationStatus prepareForLoading(const char* name);
OperationStatus load(bool isQuickboot, const char* name);
+ void touchAllPages();
OperationStatus prepareForSaving(const char* name);
OperationStatus save(bool isOnExit, const char* name);
void setRamFile(const char* path, bool shared);
+ void setRamFileShared(bool shared);
// Cancels the current save operation, and queries
// whether saving was canceled.
@@ -128,6 +130,7 @@ public:
bool isQuickboot() const { return mIsQuickboot; }
bool hasRamFile() const { return !mRamFile.empty(); }
bool isRamFileShared() const { return !mRamFile.empty() && mRamFileShared; }
+ void setRemapping(bool remapping) { mIsRemapping = remapping; }
private:
bool onStartSaving(const char* name);
@@ -167,6 +170,7 @@ private:
bool mIsQuickboot = false;
bool mIsOnExit = false;
bool mIsInvalidating = false;
+ bool mIsRemapping = false;
std::string mRamFile;
bool mRamFileShared = false;
diff --git a/android/android-emu/android/snapshot/TextureLoader.h b/android/android-emu/android/snapshot/TextureLoader.h
index e03e0f0d9f..0c2accd49c 100644
--- a/android/android-emu/android/snapshot/TextureLoader.h
+++ b/android/android-emu/android/snapshot/TextureLoader.h
@@ -34,7 +34,7 @@ protected:
public:
ITextureLoader() = default;
- using LoaderThreadPtr = std::shared_ptr<android::base::Thread>;
+ using LoaderThreadPtr = std::shared_ptr<android::base::InterruptibleThread>;
using loader_t = std::function<void(android::base::Stream*)>;
virtual bool start() = 0;
@@ -45,6 +45,7 @@ public:
virtual uint64_t diskSize() const = 0;
virtual bool compressed() const = 0;
virtual void join() = 0;
+ virtual void interrupt() = 0;
};
class TextureLoader final : public ITextureLoader {
@@ -70,6 +71,16 @@ public:
mEndTime = base::System::get()->getHighResTimeUs();
}
+ void interrupt() override {
+ if (mLoaderThread) {
+ mLoaderThread->interrupt();
+ mLoaderThread->wait();
+ mLoaderThread.reset();
+ }
+ mStream.close();
+ mEndTime = base::System::get()->getHighResTimeUs();
+ }
+
// getDuration():
// Returns true if there was save with measurable time
// (and writes it to |duration| if |duration| is not null),
diff --git a/android/android-emu/android/snapshot/common.cpp b/android/android-emu/android/snapshot/common.cpp
index dbb2be0cb6..06a1142ec9 100644
--- a/android/android-emu/android/snapshot/common.cpp
+++ b/android/android-emu/android/snapshot/common.cpp
@@ -81,16 +81,24 @@ const char* failureReasonToString(FailureReason failure,
}
}
+// bug: 116315668
+// The current scheme of snapshot liveness checking
+// causes more problems than it solves;
+// adb reliability or idle app graphics will cause
+// hang signals.
+// For now, just fall back on the hang detector.
void resetSnapshotLiveness() {
- android_resetGuestPostedAFrame();
+ // android_resetGuestPostedAFrame();
}
bool isSnapshotAlive() {
- return metrics::AdbLivenessChecker::isEmulatorBooted() ||
- guest_boot_completed ||
- android_hasGuestPostedAFrame() ||
- android::featurecontrol::isEnabled(
- android::featurecontrol::AllowSnapshotMigration);
+ // bug: 116315668
+ return true;
+ // return metrics::AdbLivenessChecker::isEmulatorBooted() ||
+ // guest_boot_completed ||
+ // android_hasGuestPostedAFrame() ||
+ // android::featurecontrol::isEnabled(
+ // android::featurecontrol::AllowSnapshotMigration);
}
} // namespace android
diff --git a/android/android-emu/android/snapshot/interface.cpp b/android/android-emu/android/snapshot/interface.cpp
index dcea397e9e..15f3c2e400 100644
--- a/android/android-emu/android/snapshot/interface.cpp
+++ b/android/android-emu/android/snapshot/interface.cpp
@@ -12,6 +12,7 @@
#include "android/snapshot/interface.h"
#include "android/base/files/PathUtils.h"
+#include "android/base/Log.h"
#include "android/base/system/System.h"
#include "android/emulation/CpuAccelerator.h"
#include "android/snapshot/common.h"
@@ -127,7 +128,7 @@ const char* androidSnapshot_prepareAutosave(int memSizeMb, const char* _name) {
// Delete the snapshot dir if RAM file still dirty.
if (androidSnapshot_isRamFileDirty(name)) {
- fprintf(stderr, "Found invalid RAM file. Deleting snapshot\n");
+ VLOG(snapshot) << "Found invalid RAM file. Deleting snapshot.";
path_delete_dir(dir.c_str());
// Reinitialize the directory since QEMU might need it created already
// for the next RAM file.
@@ -138,9 +139,9 @@ const char* androidSnapshot_prepareAutosave(int memSizeMb, const char* _name) {
System::get()->pathFileSize(mapPath, &existingSize);
if (existingSize != ramSizeBytesWithAlign) {
- fprintf(stderr, "Refreshing RAM file (size mismatch): existing %llu curr %llu\n",
- (unsigned long long)existingSize,
- (unsigned long long)ramSizeBytesWithAlign);
+ VLOG(snapshot) <<
+ "Refreshing RAM file (size mismatch): existing " <<
+ existingSize << " current " << ramSizeBytesWithAlign;
path_delete_file(mapPath.c_str());
existingSize = 0;
}
diff --git a/android/android-emu/android/snapshot/proto/SnapshotProto.mk b/android/android-emu/android/snapshot/proto/SnapshotProto.mk
index db383a687c..33a4fe9330 100644
--- a/android/android-emu/android/snapshot/proto/SnapshotProto.mk
+++ b/android/android-emu/android/snapshot/proto/SnapshotProto.mk
@@ -17,7 +17,6 @@ LOCAL_C_INCLUDES := \
LOCAL_PROTO_SOURCES := \
$(SNAPSHOTPROTO_DIR)/snapshot.proto \
$(SNAPSHOTPROTO_DIR)/snapshot_deps.proto \
- $(SNAPSHOTPROTO_DIR)/offworld.proto \
$(call end-emulator-library)
diff --git a/android/android-emu/android/snapshot/proto/offworld.proto b/android/android-emu/android/snapshot/proto/offworld.proto
deleted file mode 100644
index 87274f8112..0000000000
--- a/android/android-emu/android/snapshot/proto/offworld.proto
+++ /dev/null
@@ -1,64 +0,0 @@
-syntax = "proto2";
-
-package offworld;
-
-enum ModuleName {
- UNKNOWN = 0;
- SNAPSHOT = 1;
- AR_TESTING = 2; // TODO jwmcglynn@: rename it as you like
-}
-
-message GuestSend {
- message ModuleSnapshot {
- message CreateCheckpoint {
- optional string snapshot_name = 1;
- }
- message GotoCheckpoint {
- enum ShareMode {
- UNKNOWN = 0;
- UNCHANGED = 1;
- WRITABLE = 2;
- READ_ONLY = 3;
- };
- optional string snapshot_name = 1;
- optional bytes metadata = 2;
- optional ShareMode share_mode = 3;
- }
- oneof function {
- CreateCheckpoint create_checkpoint_param = 1;
- GotoCheckpoint goto_checkpoint_param = 2;
- }
- }
- message ModuleArTesting { // TODO
- }
- optional int32 version = 1;
- oneof module {
- ModuleSnapshot snapshot = 2;
- ModuleArTesting ar_testing = 3;
- }
-}
-
-// Most of the time we don't use GuestRecv. Instead we directly use the
-// function parameter messages because the function knows what is supposed
-// to be returned from the pipe.
-
-message GuestRecv {
- message ModuleSnapshot {
- message CreateCheckpoint {
- optional bytes metadata = 1;
- }
- message GotoCheckpoint {
- }
- oneof function {
- CreateCheckpoint create_checkpoint_param = 1;
- GotoCheckpoint goto_checkpoint_param = 2;
- }
- }
- message ModuleArTesting { // TODO
- }
- optional int32 version = 1;
- oneof module {
- ModuleSnapshot snapshot = 2;
- ModuleArTesting arTesting = 3;
- }
-}
diff --git a/android/android-emu/android/update-check/UpdateChecker.cpp b/android/android-emu/android/update-check/UpdateChecker.cpp
index 54df8e29cc..c2589b5c85 100644
--- a/android/android-emu/android/update-check/UpdateChecker.cpp
+++ b/android/android-emu/android/update-check/UpdateChecker.cpp
@@ -20,6 +20,7 @@
#include "android/base/Uri.h"
#include "android/curl-support.h"
#include "android/emulation/ConfigDirs.h"
+#include "android/globals.h"
#include "android/metrics/StudioConfig.h"
#include "android/update-check/update_check.h"
#include "android/update-check/VersionExtractor.h"
@@ -258,7 +259,12 @@ void UpdateChecker::asyncWorker() {
"UpdateCheck: current version '%s', last version '%s'",
current.toString().c_str(), last->first.toString().c_str());
- if (current < last->first) {
+ bool inAndroidBuild =
+ !android_avdInfo ||
+ avdInfo_inAndroidBuild(android_avdInfo);
+
+ if (!inAndroidBuild &&
+ (current < last->first)) {
mReporter->reportNewerVersion(current, last->first);
}
diff --git a/android/android-emu/android/utils/debug.h b/android/android-emu/android/utils/debug.h
index 3299410532..a6cdc02a21 100644
--- a/android/android-emu/android/utils/debug.h
+++ b/android/android-emu/android/utils/debug.h
@@ -66,6 +66,7 @@ ANDROID_BEGIN_HEADER
_VERBOSE_TAG(snapshot, "Snapshots") \
_VERBOSE_TAG(virtualscene, "Virtual scene rendering") \
_VERBOSE_TAG(automation, "Automation") \
+ _VERBOSE_TAG(offworld, "Offworld") \
#define _VERBOSE_TAG(x,y) VERBOSE_##x,
typedef enum {
diff --git a/android/android-emu/android/utils/filelock.cpp b/android/android-emu/android/utils/filelock.cpp
index fd52482d16..9af4955297 100644
--- a/android/android-emu/android/utils/filelock.cpp
+++ b/android/android-emu/android/utils/filelock.cpp
@@ -26,12 +26,14 @@
#include <sys/stat.h>
#include <time.h>
#ifdef _WIN32
+# include "android/base/files/ScopedFileHandle.h"
# include "android/base/memory/ScopedPtr.h"
# include "android/base/system/Win32UnicodeString.h"
# ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
# endif
# include <windows.h>
+using android::base::ScopedFileHandle;
#else
# include <sys/types.h>
# include <unistd.h>
@@ -152,6 +154,7 @@ static int filelock_lock(FileLock* lock, int timeout) {
lock->lock_handle = nullptr;
const auto unicodeDir = android::base::Win32UnicodeString(lock->lock);
const auto unicodeName = android::base::Win32UnicodeString(lock->temp);
+ static constexpr size_t pidCharsMax = 11;
HANDLE lockHandle = INVALID_HANDLE_VALUE;
bool createFileResult = false;
@@ -189,7 +192,7 @@ static int filelock_lock(FileLock* lock, int timeout) {
(lastErr == ERROR_ACCESS_DENIED ||
lastErr == ERROR_SHARING_VIOLATION)) {
- HANDLE getpidHandle =
+ ScopedFileHandle getpidHandle(
::CreateFileW(
unicodeName.c_str(),
GENERIC_READ, // open only for reading
@@ -199,25 +202,27 @@ static int filelock_lock(FileLock* lock, int timeout) {
nullptr, // default security
OPEN_EXISTING, // existing file only
FILE_ATTRIBUTE_NORMAL, // normal file
- nullptr); // no template file
-
- // Read the pid of the locking process.
- char buf[12] = {};
- DWORD bytesRead;
- if (::ReadFile(getpidHandle, buf, 12, &bytesRead, nullptr)) {
- DWORD lockingPid;
- if (sscanf(buf, "%lu", &lockingPid) == 1) {
- // Try waiting for the specified timeout for
- // the locking process to exit. If that doesn't work, bail.
- System::get()->waitForProcessExit(lockingPid,
- sleep_duration_ms);
- slept = true;
+ nullptr)); // no template file
+
+ if (getpidHandle.valid()) {
+ // Read the pid of the locking process.
+ char buf[pidCharsMax + 1] = {};
+ DWORD bytesRead;
+ if (::ReadFile(getpidHandle.get(), buf, pidCharsMax, &bytesRead, nullptr)) {
+ DWORD lockingPid;
+ if (sscanf(buf, "%lu", &lockingPid) == 1) {
+ // Try waiting for the specified timeout for
+ // the locking process to exit. If that doesn't work, bail.
+ System::get()->waitForProcessExit(lockingPid,
+ sleep_duration_ms);
+ slept = true;
+ }
}
+ // Sometimes a previous file gets readonly attribute even when
+ // its parent process has exited; that prevents us from opening
+ // it for writing.
+ SetFileAttributesW(unicodeName.c_str(), FILE_ATTRIBUTE_NORMAL);
}
- // Sometimes a previous file gets readonly attribute even when
- // its parent process has exited; that prevents us from opening
- // it for writing.
- SetFileAttributesW(unicodeName.c_str(), FILE_ATTRIBUTE_NORMAL);
}
if (lockHandle != INVALID_HANDLE_VALUE) {
createFileResult = true;
@@ -252,7 +257,7 @@ static int filelock_lock(FileLock* lock, int timeout) {
// We're good. Now write down the process ID as Android Studio relies on it.
const DWORD pid = ::GetCurrentProcessId();
- char pidBuf[12];
+ char pidBuf[pidCharsMax + 1] = {};
const int len = snprintf(pidBuf, sizeof(pidBuf), "%lu", pid);
assert(len > 0 && len < (int)sizeof(pidBuf));
DWORD bytesWritten;
diff --git a/android/android-emu/android/utils/path.cpp b/android/android-emu/android/utils/path.cpp
index 669856a64e..6d7375ac82 100755
--- a/android/android-emu/android/utils/path.cpp
+++ b/android/android-emu/android/utils/path.cpp
@@ -675,6 +675,77 @@ APosixStatus path_copy_dir(const char* dst, const char* src) {
}
APosixStatus path_delete_dir(const char* path) {
+ APosixStatus contentsDeleteStatus =
+ path_delete_dir_contents(path);
+
+ auto res = rmdir(path);
+ res = contentsDeleteStatus ? contentsDeleteStatus : res;
+ return res;
+}
+
+APosixStatus path_delete_dir_contents(const char* path) {
+ auto dirScanner = android::base::makeCustomScopedPtr(dirScanner_new(path),
+ dirScanner_free);
+ if (!dirScanner)
+ return -EINVAL;
+
+ int fullRes = 0;
+ const char* name = dirScanner_nextFull(dirScanner.get());
+ while (name) {
+ if (path_is_dir(name)) {
+ if (auto res = path_delete_dir(name)) {
+ fullRes = fullRes ? fullRes : res;
+ }
+ } else {
+ if (auto res = path_delete_file(name)) {
+ fullRes = fullRes ? fullRes : res;
+ }
+ }
+ name = dirScanner_nextFull(dirScanner.get());
+ }
+
+ return fullRes;
+}
+
+bool path_dir_has_files(const char* path) {
+
+ if (!path_is_dir(path)) return false;
+
+ auto dirScanner = android::base::makeCustomScopedPtr(dirScanner_new(path),
+ dirScanner_free);
+ if (!dirScanner)
+ return false;
+
+ const char* name = dirScanner_nextFull(dirScanner.get());
+ return name != nullptr;
+}
+
+APosixStatus path_delete_file_on_reboot(const char* path) {
+#ifdef _WIN32
+ // MoveFileEx requires an empty directory.
+ if (path_is_dir(path) && path_dir_has_files(path)) {
+ return -EINVAL;
+ }
+
+ Win32UnicodeString utf16Path(path);
+ BOOL result =
+ MoveFileExW(
+ utf16Path.c_str(),
+ NULL,
+ MOVEFILE_DELAY_UNTIL_REBOOT);
+
+ if (!result) {
+ return -1;
+ }
+
+ return 0;
+#else
+ // Not yet implemented on POSIX
+ return -EINVAL;
+#endif
+}
+
+APosixStatus path_delete_dir_contents_on_reboot(const char* path) {
auto dirScanner = android::base::makeCustomScopedPtr(dirScanner_new(path),
dirScanner_free);
if (!dirScanner)
@@ -695,7 +766,5 @@ APosixStatus path_delete_dir(const char* path) {
name = dirScanner_nextFull(dirScanner.get());
}
- auto res = rmdir(path);
- fullRes = fullRes ? fullRes : res;
return fullRes;
}
diff --git a/android/android-emu/android/utils/path.h b/android/android-emu/android/utils/path.h
index 3ba427c13e..d5c09b9a51 100644
--- a/android/android-emu/android/utils/path.h
+++ b/android/android-emu/android/utils/path.h
@@ -199,6 +199,21 @@ extern APosixStatus path_delete_file( const char* path );
*/
extern APosixStatus path_delete_dir( const char* path );
+/* delete a given directory's contents recursively.
+ * Same thing with Win32 - doesn't work if any file inside is open.
+ */
+extern APosixStatus path_delete_dir_contents( const char* path );
+
+/* Returns whether or not the directory has files in it.
+ * For regular files, returns false. */
+extern bool path_dir_has_files( const char* path );
+
+/* Mark a file to be deleted on reboot. */
+extern APosixStatus path_delete_file_on_reboot( const char* path );
+
+/* Mark files in a directory to be deleted on reboot. */
+extern APosixStatus path_delete_dir_contents_on_reboot( const char* path );
+
/* try to load a given file into a heap-allocated block.
* if 'pSize' is not NULL, this will set the file's size in '*pSize'
* note that this actually zero-terminates the file for convenience.
diff --git a/android/android-emu/android/utils/path_unittest.cpp b/android/android-emu/android/utils/path_unittest.cpp
index 8869cbb692..2b001bfb0f 100644
--- a/android/android-emu/android/utils/path_unittest.cpp
+++ b/android/android-emu/android/utils/path_unittest.cpp
@@ -11,11 +11,13 @@
#include "android/utils/path.h"
+#include "android/base/files/PathUtils.h"
#include "android/base/testing/TestSystem.h"
#include "android/base/testing/TestTempDir.h"
#include "gtest/gtest.h"
+using android::base::pj;
using android::base::TestTempDir;
namespace android {
@@ -117,5 +119,33 @@ TEST(Path, EscapePath) {
free(result);
}
+TEST(Path, DeleteDir) {
+ TestTempDir tempDir("deleteDirTest");
+
+ auto dirToDelete = tempDir.makeSubPath("toDelete");
+ auto dirToDeleteSubDir = tempDir.makeSubPath(pj("toDelete", "subdir"));
+
+ EXPECT_EQ(0, path_mkdir_if_needed(dirToDeleteSubDir.c_str(), 0755));
+ EXPECT_TRUE(path_is_dir(dirToDeleteSubDir.c_str()));
+ EXPECT_EQ(0, path_delete_dir(dirToDelete.c_str()));
+ EXPECT_FALSE(path_is_dir(dirToDeleteSubDir.c_str()));
+ EXPECT_FALSE(path_is_dir(dirToDelete.c_str()));
+}
+
+TEST(Path, DeleteDirContents) {
+ TestTempDir tempDir("deleteDirContentsTest");
+
+ auto dirToDelete = tempDir.makeSubPath("toDelete");
+ auto dirToDeleteSubDir = tempDir.makeSubPath(pj("toDelete", "subdir"));
+
+ EXPECT_EQ(0, path_mkdir_if_needed(dirToDeleteSubDir.c_str(), 0755));
+ EXPECT_TRUE(path_is_dir(dirToDeleteSubDir.c_str()));
+
+ EXPECT_EQ(0, path_delete_dir_contents(dirToDelete.c_str()));
+
+ EXPECT_FALSE(path_is_dir(dirToDeleteSubDir.c_str()));
+ EXPECT_TRUE(path_is_dir(dirToDelete.c_str()));
+}
+
} // namespace path
} // namespace android
diff --git a/android/android-emu/android/verified-boot/load_config.cpp b/android/android-emu/android/verified-boot/load_config.cpp
new file mode 100644
index 0000000000..374704af18
--- /dev/null
+++ b/android/android-emu/android/verified-boot/load_config.cpp
@@ -0,0 +1,256 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#include "android/verified-boot/load_config.h"
+
+#include "android/base/Log.h"
+#include "android/verified-boot/proto/verified_boot_config.pb.h"
+
+#include <google/protobuf/io/tokenizer.h>
+#include <google/protobuf/io/zero_copy_stream_impl.h>
+#include <google/protobuf/text_format.h>
+
+#include <fcntl.h>
+#include <unistd.h>
+
+using ::android::verifiedboot::Status;
+using ::android::verifiedboot::VerifiedBootConfig;
+using ::google::protobuf::TextFormat;
+using ::google::protobuf::io::ArrayInputStream;
+using ::google::protobuf::io::ColumnNumber;
+using ::google::protobuf::io::FileInputStream;
+using ::google::protobuf::io::ZeroCopyInputStream;
+
+static const int kMaxSupportedMajorVersion = 1;
+
+namespace {
+
+// Simple Proto parsing class that dumps parsing errors to the logs.
+//
+// This class is needed to satisfy the API requirements specified by the
+// TextFormat proto parsing library.
+class SimpleErrorCollector : public ::google::protobuf::io::ErrorCollector {
+public:
+ ~SimpleErrorCollector() override = default;
+ void AddError(int line,
+ ColumnNumber column,
+ const std::string& message) override {
+ if (mFirstError) {
+ mFirstError = false;
+ LOG(WARNING) << "Could not parse verified boot config: ";
+ }
+ LOG(WARNING) << " " << (line + 1) << ":" << (column + 1) << ": "
+ << message.c_str();
+ }
+
+private:
+ bool mFirstError = {true};
+};
+
+} // namespace
+
+// Parses |input| as a textproto, placing result in |config|.
+//
+// If |input| fails to parse, returns Status::ParseError
+// and writes the specifc reason to the logs.
+static Status parseMessage(ZeroCopyInputStream* input,
+ VerifiedBootConfig* config) {
+ SimpleErrorCollector error_collector;
+ TextFormat::Parser parser;
+ parser.RecordErrorsTo(&error_collector);
+ if (!parser.Parse(input, config)) {
+ return Status::ParseError;
+ }
+ return Status::OK;
+}
+
+// Checks a given parameter for illegal characters.
+//
+// |param| is the parameter to check.
+// |prefix| is used to log a better error message. It should name the
+// repeated proto field.
+// |param_idx| is used to log a better error message. It should
+// identify the paramter number and be zero indexed.
+static Status checkParam(const std::string& param,
+ const char* prefix,
+ int param_idx) {
+ ++param_idx; // Make the index 1-based
+ if (param.empty()) {
+ LOG(WARNING) << "Verified boot config " << prefix << " parameter "
+ << param_idx << " is empty.";
+ return Status::EmptyParameter;
+ }
+
+ for (const char c : param) {
+ const bool ok = (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') ||
+ (c >= 'a' && c <= 'z') || (c == '/') || (c == ',') ||
+ (c == '_') || (c == '-') || (c == '=') || (c == '.');
+
+ if (!ok) {
+ LOG(WARNING) << "Verified boot config " << prefix << " parameter "
+ << param_idx << " contains an illegal character: '"
+ << c << "'";
+ return Status::IllegalCharacter;
+ }
+ }
+
+ return Status::OK;
+}
+
+// Checks for the existance of max_version and asserts that
+// it's value is within kMaxSupportedMajorVersion.
+//
+// |config| is the proto message that's expected to contain a
+// major_version field.
+static Status checkVersion(const VerifiedBootConfig& config) {
+ if (!config.has_major_version()) {
+ LOG(WARNING) << "Verified boot config is missing a required key: "
+ << "major_version";
+ return Status::MissingVersion;
+ }
+
+ if (config.major_version() > kMaxSupportedMajorVersion) {
+ LOG(WARNING) << "Verified boot config version is too large to be "
+ << " supported. major_version = " << config.major_version()
+ << ", supported = " << kMaxSupportedMajorVersion;
+ return Status::UnsupportedVersion;
+ }
+
+ return Status::OK;
+}
+
+// Builds a dm="..." string into the provided |dm_param| by parsing
+// through config.dm_params.
+//
+// |config| is the configuration proto
+// |dm_param| is the target string that will be populated with
+// dm="...".
+static Status buildDMParam(const VerifiedBootConfig& config,
+ std::string* dm_param) {
+ if (config.dm_param_size() < 1) {
+ LOG(WARNING) << "Verified boot config does not contain any dm_param "
+ << "options";
+ return Status::MissingDMParam;
+ }
+
+ *dm_param = "dm=\"";
+ for (int i = 0; i < config.dm_param_size(); ++i) {
+ const std::string& param = config.dm_param(i);
+ Status status = Status::OK;
+ if ((status = checkParam(param, "dm_param", i)) != Status::OK) {
+ return status;
+ }
+ if (i > 0) {
+ *dm_param += ' ';
+ }
+ *dm_param += param;
+ }
+ *dm_param += '\"';
+
+ return Status::OK;
+}
+
+// Converts |config| into a list of |params| that can be added to the kernel.
+//
+// |config| is the configuration proto
+// |params| is the target vector that will be populated with
+// resulting kernel parameters.
+//
+// If any parameter fails it's check, logs the error and
+// returns an error status. On an error |params| may be left
+// in a partially built state.
+static Status buildParams(const VerifiedBootConfig& config,
+ std::vector<std::string>* params) {
+ std::string dm_param;
+ Status status = Status::OK;
+ if ((status = buildDMParam(config, &dm_param)) != Status::OK) {
+ return status;
+ }
+ params->push_back(dm_param);
+
+ for (int i = 0; i < config.param_size(); ++i) {
+ const std::string& param = config.param(i);
+ if ((status = checkParam(param, "param", i)) != Status::OK) {
+ return status;
+ }
+ params->push_back(param);
+ }
+
+ return Status::OK;
+}
+
+// Common logic that is shared between getParameters()
+// and getParametersFromFile().
+//
+// This interface is private because ZeroCopyInputStream is a proto-specific
+// concept - The caller should not have to deal with it directly.
+//
+// |input| is the input stream that was prepared by the caller.
+// |params| is populated with the resulting kernel parameters.
+//
+// Returns Status::OK if successful. If there was a problem, |params|
+// will be empty and false is returned.
+static Status getParametersCommon(ZeroCopyInputStream* input,
+ std::vector<std::string>* params) {
+ VerifiedBootConfig config;
+ Status status = Status::OK;
+
+ if ((status = parseMessage(input, &config)) != Status::OK) {
+ return status;
+ }
+
+ if ((status = checkVersion(config)) != Status::OK) {
+ return status;
+ }
+
+ if ((status = buildParams(config, params)) != Status::OK) {
+ params->clear();
+ return status;
+ }
+
+ return Status::OK;
+}
+
+namespace android {
+namespace verifiedboot {
+
+// Public interface, see header for docs.
+Status getParameters(const std::string& textproto,
+ std::vector<std::string>* params) {
+ ArrayInputStream input(textproto.c_str(), textproto.length());
+ return getParametersCommon(&input, params);
+}
+
+// Public interface, see header for docs.
+Status getParametersFromFile(const char* pathname,
+ std::vector<std::string>* params) {
+ if (!pathname) {
+ LOG(VERBOSE) << "Verified boot params were not found.";
+ return Status::CouldNotOpenFile;
+ }
+
+ const int fd = open(pathname, O_RDONLY);
+ if (fd < 0) {
+ LOG(INFO) << "Could not open " << pathname << ": " << strerror(errno);
+ return Status::CouldNotOpenFile;
+ }
+
+ // fd is now an open file handle - don't return without closing it.
+
+ FileInputStream input(fd);
+ Status status = getParametersCommon(&input, params);
+
+ close(fd);
+ return status;
+}
+
+} // namespace verifiedboot
+} // namespace android
diff --git a/android/android-emu/android/verified-boot/load_config.h b/android/android-emu/android/verified-boot/load_config.h
new file mode 100644
index 0000000000..75b0bed414
--- /dev/null
+++ b/android/android-emu/android/verified-boot/load_config.h
@@ -0,0 +1,61 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// This software is licensed under the terms of the GNU General Public
+// License version 2, as published by the Free Software Foundation, and
+// may be copied, distributed, and modified under those terms.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+#pragma once
+
+#include "android/utils/compiler.h"
+
+#include <string>
+#include <vector>
+
+namespace android {
+namespace verifiedboot {
+
+enum class Status {
+ OK = 0, // No Errors
+
+ CouldNotOpenFile = 1, // Could not open config file
+ EmptyParameter = 2, // An empty Parameter was provided
+ IllegalCharacter = 3, // A Parameter contained an illegal character
+ MissingDMParam = 4, // No dm-verity paramters were provided
+ MissingVersion = 5, // Version information is missing
+ ParseError = 6, // Errors parsing the proto file
+ UnsupportedVersion = 7, // Version is unsupported
+};
+
+// Reads verified boot parameters from the given pathname
+// and formats them into |params|.
+//
+// It is legal for |pathname| to be NULL. In that case,
+// Status::CouldNotOpenFile is returned.
+//
+// If any of the following issues occur, the vector is not populated and
+// the function returns an error Status:
+// - File is not found or can not be read.
+// - Parsing the file fails.
+// - The file's version is unsupported.
+// - Insufficient paramater counts.
+// - Illegal characters within parameters.
+//
+// In each case above, more information about the issue will be written to the
+// debug logs.
+Status getParametersFromFile(const char* pathname,
+ std::vector<std::string>* params);
+
+// Reads parameters from the provided |textproto|. This function is used
+// to provide the text proto directly, such as in unit testing.
+// Outside of the data source, operation is identical to getParameters()
+// described above.
+Status getParameters(const std::string& textproto,
+ std::vector<std::string>* params);
+
+} // namespace verifiedboot
+} // namespace android
diff --git a/android/android-emu/android/verified-boot/load_config_unittest.cpp b/android/android-emu/android/verified-boot/load_config_unittest.cpp
new file mode 100644
index 0000000000..deb72ca301
--- /dev/null
+++ b/android/android-emu/android/verified-boot/load_config_unittest.cpp
@@ -0,0 +1,246 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "android/verified-boot/load_config.h"
+
+#include <gtest/gtest.h>
+
+#include <fcntl.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string>
+#include <vector>
+
+using ::android::verifiedboot::getParameters;
+using ::android::verifiedboot::getParametersFromFile;
+using ::android::verifiedboot::Status;
+
+// Simple baseline test.
+TEST(VerifiedBootLoadConfigTest, Baseline) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: \"bar\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::OK, getParameters(textproto, &params));
+ EXPECT_EQ(2, params.size());
+ EXPECT_EQ("dm=\"foo\"", params[0]);
+ EXPECT_EQ("bar", params[1]);
+}
+
+// Create a file and read the proto from it
+TEST(VerifiedBootLoadConfigTest, ReadFromFile) {
+ const char* path = tmpnam(NULL);
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: \"bar\"";
+ int fd = open(path, O_CREAT | O_WRONLY | O_EXCL, 0666);
+ ASSERT_LT(-1, fd);
+ write(fd, textproto.c_str(), textproto.length());
+ close(fd);
+
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::OK, getParametersFromFile(path, &params));
+ EXPECT_EQ(2, params.size());
+ EXPECT_EQ("dm=\"foo\"", params[0]);
+ EXPECT_EQ("bar", params[1]);
+
+ unlink(path);
+}
+
+// Pass a NULL to the file API
+TEST(VerifiedBootLoadConfigTest, NullPathname) {
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::CouldNotOpenFile, getParametersFromFile(NULL, &params));
+}
+
+// Try to read from invalid pathname
+TEST(VerifiedBootLoadConfigTest, ReadFromInvalidPathname) {
+ const char* path = tmpnam(NULL);
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::CouldNotOpenFile, getParametersFromFile(path, &params));
+}
+
+// Use real-world parameters to flush out problems that might come up with
+// read world data (such as unexpected illegal characters or formatting).
+TEST(VerifiedBootLoadConfigTest, RealWorldParams) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"1\"\n"
+ "dm_param: \"vroot\"\n"
+ "dm_param: \"none\"\n"
+ "dm_param: \"ro\"\n"
+ "dm_param: \"1,0\"\n"
+ "dm_param: \"5159992\"\n"
+ "dm_param: \"verity\"\n"
+ "dm_param: \"1\"\n"
+ "dm_param: \"PARTUUID=1ff336db-96f8-4906-9c0b-149da994cf78\"\n"
+ "dm_param: \"PARTUUID=1ff336db-96f8-4906-9c0b-149da994cf78\"\n"
+ "dm_param: \"4096\"\n"
+ "dm_param: \"4096\"\n"
+ "dm_param: \"644999\"\n"
+ "dm_param: \"644999\"\n"
+ "dm_param: \"sha1\"\n"
+ "dm_param: \"07e8da3c6ffe2ea52d14ad342beb6bb15060cd45\"\n"
+ "dm_param: \"27e6b2075f9a47160d21f824b923f4ebdb755c3f\"\n"
+ "dm_param: \"1\"\n"
+ "dm_param: \"ignore_zero_blocks\"\n"
+ "param: \"androidboot.veritymode=enforcing\"\n"
+ "param: \"root=/dev/dm-0\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::OK, getParameters(textproto, &params));
+ EXPECT_EQ(3, params.size());
+ EXPECT_EQ(
+ "dm=\"1 vroot none ro 1,0 5159992 verity 1 "
+ "PARTUUID=1ff336db-96f8-4906-9c0b-149da994cf78 "
+ "PARTUUID=1ff336db-96f8-4906-9c0b-149da994cf78 "
+ "4096 4096 644999 644999 sha1 "
+ "07e8da3c6ffe2ea52d14ad342beb6bb15060cd45 "
+ "27e6b2075f9a47160d21f824b923f4ebdb755c3f "
+ "1 ignore_zero_blocks\"",
+ params[0]);
+ EXPECT_EQ("androidboot.veritymode=enforcing", params[1]);
+ EXPECT_EQ("root=/dev/dm-0", params[2]);
+}
+
+// Pass data that can not be parsed as a proto.
+TEST(VerifiedBootLoadConfigTest, ParseError) {
+ const std::string textproto = "::";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::ParseError, getParameters(textproto, &params));
+}
+
+// Pass the wrong type for version.
+TEST(VerifiedBootLoadConfigTest, IntTypeExpected) {
+ const std::string textproto =
+ "major_version: \"1\"\n"
+ "dm_param: \"foo\"\n"
+ "param: \"bar\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::ParseError, getParameters(textproto, &params));
+}
+
+// Pass the wrong type for dm_param.
+TEST(VerifiedBootLoadConfigTest, DMParamNeedsString) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: 5\n"
+ "param: \"bar\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::ParseError, getParameters(textproto, &params));
+}
+
+// Pass the wrong type for param.
+TEST(VerifiedBootLoadConfigTest, ParamNeedsString) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: 5";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::ParseError, getParameters(textproto, &params));
+}
+
+// Pass in an empty param.
+TEST(VerifiedBootLoadConfigTest, EmptyParameter) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: \"\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::EmptyParameter, getParameters(textproto, &params));
+}
+
+// Pass in an empty dm_param.
+TEST(VerifiedBootLoadConfigTest, DMEmptyParameter) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "dm_param: \"\"\n"
+ "param: \"foo\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::EmptyParameter, getParameters(textproto, &params));
+}
+
+// Test for illegal characters in param and dm_param.
+TEST(VerifiedBootLoadConfigTest, IllegalChars) {
+ const std::string baseproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: \"foo\"\n";
+
+ const std::string illegal_chars = " !@#$%^&*()+[]{}|';:?<>";
+ std::vector<std::string> params;
+
+ for (const char c : illegal_chars) {
+ const std::string textproto = baseproto + "param: \"aaa" + c + "bbb\"";
+ EXPECT_EQ(Status::IllegalCharacter, getParameters(textproto, &params));
+ }
+
+ for (const char c : illegal_chars) {
+ const std::string textproto =
+ baseproto + "dm_param: \"ccc" + c + "ddd\"";
+ EXPECT_EQ(Status::IllegalCharacter, getParameters(textproto, &params));
+ }
+}
+
+// Test for illegal quoted characters.
+TEST(VerifiedBootLoadConfigTest, IllegalQuotedChars) {
+ const std::string baseproto =
+ "major_version: 1\n"
+ "dm_param: \"foo\"\n"
+ "param: \"foo\"\n";
+
+ const std::string illegal_chars = "\"\\";
+ std::vector<std::string> params;
+
+ for (const char c : illegal_chars) {
+ const std::string textproto =
+ baseproto + "param: \"aaa\\" + c + "bbb\"";
+ EXPECT_EQ(Status::IllegalCharacter, getParameters(textproto, &params));
+ }
+
+ for (const char c : illegal_chars) {
+ const std::string textproto =
+ baseproto + "dm_param: \"ccc\\" + c + "ddd\"";
+ EXPECT_EQ(Status::IllegalCharacter, getParameters(textproto, &params));
+ }
+}
+
+// Does not pass in any dm_params.
+TEST(VerifiedBootLoadConfigTest, MissingDMParam) {
+ const std::string textproto =
+ "major_version: 1\n"
+ "param: \"foo\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::MissingDMParam, getParameters(textproto, &params));
+}
+
+// Omit version information.
+TEST(VerifiedBootLoadConfigTest, MissingVersion) {
+ const std::string textproto =
+ "dm_param: \"foo\"\n"
+ "param: \"foo\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::MissingVersion, getParameters(textproto, &params));
+}
+
+// Pass in an unsupported version.
+TEST(VerifiedBootLoadConfigTest, UnsupportedVersion) {
+ const std::string textproto =
+ "major_version: 2\n"
+ "dm_param: \"foo\"\n"
+ "param: \"foo\"";
+ std::vector<std::string> params;
+ EXPECT_EQ(Status::UnsupportedVersion, getParameters(textproto, &params));
+}
diff --git a/android/android-emu/android/verified-boot/proto/VerifiedBootConfigProto.mk b/android/android-emu/android/verified-boot/proto/VerifiedBootConfigProto.mk
new file mode 100644
index 0000000000..7d9f7a0227
--- /dev/null
+++ b/android/android-emu/android/verified-boot/proto/VerifiedBootConfigProto.mk
@@ -0,0 +1,24 @@
+#
+# A static library containing the verifiedbootcfg protobuf generated code
+#
+
+# Compute VERIFIEDBOOTCFG_DIR relative to LOCAL_PATH
+VERIFIEDBOOTCFG_DIR := $(call my-dir)
+VERIFIEDBOOTCFG_DIR := $(VERIFIEDBOOTCFG_DIR:$(LOCAL_PATH)/%=%)
+
+$(call start-emulator-library,libverifiedbootcfg_proto)
+
+LOCAL_CFLAGS := $(EMULATOR_COMMON_CFLAGS)
+
+LOCAL_C_INCLUDES := \
+ $(PROTOBUF_INCLUDES) \
+
+LOCAL_PROTO_SOURCES := \
+ $(VERIFIEDBOOTCFG_DIR)/verified_boot_config.proto \
+
+$(call end-emulator-library)
+
+VERIFIEDBOOTCFG_PROTO_INCLUDES := $(PROTOBUF_INCLUDES)
+VERIFIEDBOOTCFG_PROTO_STATIC_LIBRARIES := \
+ libverifiedbootcfg_proto \
+ $(PROTOBUF_STATIC_LIBRARIES) \
diff --git a/android/android-emu/android/verified-boot/proto/verified_boot_config.proto b/android/android-emu/android/verified-boot/proto/verified_boot_config.proto
new file mode 100644
index 0000000000..fc2b843b3a
--- /dev/null
+++ b/android/android-emu/android/verified-boot/proto/verified_boot_config.proto
@@ -0,0 +1,28 @@
+syntax = "proto2";
+
+package android.verifiedboot;
+
+// Communicates verified boot parameters to the emulator.
+//
+// The system image build produces a textproto of the format below
+// The emulator then loads this text proto and processes it into
+// a set of kernel commandline parameters.
+
+message VerifiedBootConfig {
+ // Version number of this data. The emulator will ignore
+ // configurations that have an unrecognized version number.
+ //
+ // The value of this can be incremented in the system image
+ // build inder the following cases:
+ //
+ // 1. New dm-verity features were added that older emulators
+ // can not support
+ // 2. The proto format is changed with new or different fields.
+ optional int32 major_version = 1;
+
+ // Parameters that should be placed within the dm="" block
+ repeated string dm_param = 2;
+
+ // Parameters that should be placed outside of the dm="" block
+ repeated string param = 3;
+}
diff --git a/android/android-emu/android/virtualscene/SceneCamera.cpp b/android/android-emu/android/virtualscene/SceneCamera.cpp
index 81fe43bcb2..ce030a039e 100644
--- a/android/android-emu/android/virtualscene/SceneCamera.cpp
+++ b/android/android-emu/android/virtualscene/SceneCamera.cpp
@@ -15,7 +15,9 @@
*/
#include "android/virtualscene/SceneCamera.h"
+#include "android/automation/AutomationController.h"
#include "android/hw-sensors.h"
+#include "android/physics/PhysicalModel.h"
#include "android/utils/debug.h"
#include <glm/gtc/matrix_transform.hpp>
@@ -89,11 +91,18 @@ void SceneCamera::setAspectRatio(float aspectRatio) {
}
void SceneCamera::update() {
+ // Note: when getting the transform, we always update the current time
+ // so that consumers of this transform get the most up-to-date
+ // value possible, and so that transform timestamps progress even when
+ // sensors are not polling.
+ automation::AutomationController::tryAdvanceTime();
+
int64_t timestamp;
glm::vec3 position;
glm::vec3 rotationEuler;
- android_physical_model_get_transform(&position.x, &position.y, &position.z,
- &rotationEuler.x, &rotationEuler.y, &rotationEuler.z, &timestamp);
+ physicalModel_getTransform(android_physical_model_instance(), &position.x,
+ &position.y, &position.z, &rotationEuler.x,
+ &rotationEuler.y, &rotationEuler.z, &timestamp);
const glm::mat4 rotationMat = glm::eulerAngleXYZ(
glm::radians(rotationEuler.x), glm::radians(rotationEuler.y),
diff --git a/android/android-emu/android/virtualscene/TextureUtils.cpp b/android/android-emu/android/virtualscene/TextureUtils.cpp
index 8bfb3120e8..e24609eb35 100644
--- a/android/android-emu/android/virtualscene/TextureUtils.cpp
+++ b/android/android-emu/android/virtualscene/TextureUtils.cpp
@@ -45,6 +45,11 @@ static inline T alignRowBytes(T value) {
return (value + 3) / 4 * 4;
}
+static void pngWarningCallback(png_structp readPtr,
+ png_const_charp warningMessage) {
+ D("%s: %s\n", __FUNCTION__, warningMessage);
+}
+
TextureUtils::Result TextureUtils::createEmpty(uint32_t width,
uint32_t height) {
Result result;
@@ -109,6 +114,8 @@ Optional<TextureUtils::Result> TextureUtils::loadPNG(const char* filename) {
return {};
}
+ png_set_error_fn(png, nullptr, nullptr, pngWarningCallback);
+
if (setjmp(png_jmpbuf(png))) {
E("%s: PNG library error", __FUNCTION__);
png_destroy_read_struct(&png, &pngInfo, 0);
diff --git a/android/android-emu/android/window-agent-impl.cpp b/android/android-emu/android/window-agent-impl.cpp
index c82837e47b..65e4d773fb 100644
--- a/android/android-emu/android/window-agent-impl.cpp
+++ b/android/android-emu/android/window-agent-impl.cpp
@@ -19,14 +19,16 @@
#include "android/skin/qt/emulator-qt-window.h"
#include "android/utils/debug.h"
-static_assert(WINDOW_MESSAGE_GENERIC == int(Ui::OverlayMessageIcon::None),
+static_assert(WINDOW_MESSAGE_GENERIC == int(Ui::OverlayMessageType::None),
"Bad message type enum value (None)");
-static_assert(WINDOW_MESSAGE_INFO == int(Ui::OverlayMessageIcon::Info),
+static_assert(WINDOW_MESSAGE_INFO == int(Ui::OverlayMessageType::Info),
"Bad message type enum value (Info)");
-static_assert(WINDOW_MESSAGE_WARNING == int(Ui::OverlayMessageIcon::Warning),
+static_assert(WINDOW_MESSAGE_WARNING == int(Ui::OverlayMessageType::Warning),
"Bad message type enum value (Warning)");
-static_assert(WINDOW_MESSAGE_ERROR == int(Ui::OverlayMessageIcon::Error),
+static_assert(WINDOW_MESSAGE_ERROR == int(Ui::OverlayMessageType::Error),
"Bad message type enum value (Error)");
+static_assert(WINDOW_MESSAGE_OK == int(Ui::OverlayMessageType::Ok),
+ "Bad message type enum value (Ok)");
static const QAndroidEmulatorWindowAgent sQAndroidEmulatorWindowAgent = {
.getEmulatorWindow = emulator_window_get,
@@ -48,7 +50,7 @@ static const QAndroidEmulatorWindowAgent sQAndroidEmulatorWindowAgent = {
if (const auto win = EmulatorQtWindow::getInstance()) {
win->showMessage(
QString::fromUtf8(message),
- static_cast<Ui::OverlayMessageIcon>(type),
+ static_cast<Ui::OverlayMessageType>(type),
timeoutMs);
} else {
const auto printer =
@@ -67,7 +69,7 @@ static const QAndroidEmulatorWindowAgent sQAndroidEmulatorWindowAgent = {
if (const auto win = EmulatorQtWindow::getInstance()) {
win->showMessageWithDismissCallback(
QString::fromUtf8(message),
- static_cast<Ui::OverlayMessageIcon>(type),
+ static_cast<Ui::OverlayMessageType>(type),
QString::fromUtf8(dismissText),
[func, context] { if (func) func(context); },
timeoutMs);
diff --git a/android/android-emugl/Android.mk b/android/android-emugl/Android.mk
index df4d7d355a..627a44c274 100644
--- a/android/android-emugl/Android.mk
+++ b/android/android-emugl/Android.mk
@@ -52,8 +52,6 @@ include $(EMUGL_PATH)/common.mk
# module that hasn't been declared yet anyway.
#
-include $(EMUGL_PATH)/../third_party/astc-codec/Android.mk
-
# Required by our units test.
include $(EMUGL_PATH)/googletest.mk
@@ -91,6 +89,7 @@ include $(EMUGL_PATH)/host/libs/Translator/EGL/Android.mk
include $(EMUGL_PATH)/host/libs/libOpenGLESDispatch/Android.mk
# Vulkan
+include $(EMUGL_PATH)/host/libs/libOpenglRender/vulkan/cereal/Android.mk
include $(EMUGL_PATH)/host/libs/libOpenglRender/vulkan/Android.mk
# Host shared libraries
@@ -98,4 +97,17 @@ include $(EMUGL_PATH)/host/libs/libOpenglRender/Android.mk
include $(EMUGL_PATH)/host/libs/libGLES12Translator/Android.mk
include $(EMUGL_PATH)/host/libs/libGLSnapshot/Android.mk
+ifneq ($(BUILD_TARGET_OS),darwin)
+ifneq ($(BUILD_TARGET_OS),windows)
+ifeq (64,$(BUILD_TARGET_BITS))
+# Guest libraries built for host
+# Note: must be included last as it overrides existing
+# EMUGL_COMMON_* variables.
+GOLDFISH_OPENGL_BUILD_FOR_HOST := true
+include $(EMUGL_PATH)/guest/Android.mk
+include $(GOLDFISH_OPENGL_DIR)/Android.mk
+endif
+endif
+endif
+
LOCAL_PATH := $(EMUGL_OLD_LOCAL_PATH)
diff --git a/android/android-emugl/guest/Android.mk b/android/android-emugl/guest/Android.mk
new file mode 100644
index 0000000000..b892394a13
--- /dev/null
+++ b/android/android-emugl/guest/Android.mk
@@ -0,0 +1,20 @@
+LOCAL_PATH := $(call my-dir)
+
+# Implementation of enough Android for graphics#################################
+
+# Android libraries
+$(call emugl-begin-shared-library,libutils)
+
+$(call emugl-end-module)
+
+$(call emugl-begin-shared-library,libcutils)
+
+$(call emugl-end-module)
+
+$(call emugl-begin-shared-library,liblog)
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)
+LOCAL_SRC_FILES := \
+ androidImpl/Log.cpp
+
+$(call emugl-end-module)
diff --git a/android/android-emugl/guest/android/hardware_buffer.h b/android/android-emugl/guest/android/hardware_buffer.h
new file mode 100644
index 0000000000..ce1f0446bc
--- /dev/null
+++ b/android/android-emugl/guest/android/hardware_buffer.h
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @addtogroup NativeActivity Native Activity
+ * @{
+ */
+/**
+ * @file hardware_buffer.h
+ */
+#ifndef ANDROID_HARDWARE_BUFFER_H
+#define ANDROID_HARDWARE_BUFFER_H
+#include <inttypes.h>
+#include <sys/cdefs.h>
+#include <android/rect.h>
+#include <android/versioning.h>
+__BEGIN_DECLS
+/**
+ * Buffer pixel formats.
+ */
+enum {
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_R8G8B8A8_UNORM
+ * OpenGL ES: GL_RGBA8
+ */
+ AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM = 1,
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_R8G8B8A8_UNORM
+ * OpenGL ES: GL_RGBA8
+ */
+ AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM = 2,
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_R8G8B8_UNORM
+ * OpenGL ES: GL_RGB8
+ */
+ AHARDWAREBUFFER_FORMAT_R8G8B8_UNORM = 3,
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_R5G6B5_UNORM_PACK16
+ * OpenGL ES: GL_RGB565
+ */
+ AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM = 4,
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_R16G16B16A16_SFLOAT
+ * OpenGL ES: GL_RGBA16F
+ */
+ AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT = 0x16,
+ /**
+ * Corresponding formats:
+ * Vulkan: VK_FORMAT_A2B10G10R10_UNORM_PACK32
+ * OpenGL ES: GL_RGB10_A2
+ */
+ AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM = 0x2b,
+ /**
+ * An opaque binary blob format that must have height 1, with width equal to
+ * the buffer size in bytes.
+ */
+ AHARDWAREBUFFER_FORMAT_BLOB = 0x21,
+};
+enum {
+ /* The buffer will never be read by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_READ_NEVER = 0UL,
+ /* The buffer will sometimes be read by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_READ_RARELY = 2UL,
+ /* The buffer will often be read by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN = 3UL,
+ /* CPU read value mask */
+ AHARDWAREBUFFER_USAGE_CPU_READ_MASK = 0xFUL,
+ /* The buffer will never be written by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER = 0UL << 4,
+ /* The buffer will sometimes be written to by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY = 2UL << 4,
+ /* The buffer will often be written to by the CPU */
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_OFTEN = 3UL << 4,
+ /* CPU write value mask */
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_MASK = 0xFUL << 4,
+ /* The buffer will be read from by the GPU */
+ AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE = 1UL << 8,
+ /* The buffer will be written to by the GPU */
+ AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT = 1UL << 9,
+ /* The buffer must not be used outside of a protected hardware path */
+ AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT = 1UL << 14,
+ /* The buffer will be read by a hardware video encoder */
+ AHARDWAREBUFFER_USAGE_VIDEO_ENCODE = 1UL << 16,
+ /** The buffer will be used for sensor direct data */
+ AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA = 1UL << 23,
+ /* The buffer will be used as a shader storage or uniform buffer object*/
+ AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER = 1UL << 24,
+ AHARDWAREBUFFER_USAGE_VENDOR_0 = 1ULL << 28,
+ AHARDWAREBUFFER_USAGE_VENDOR_1 = 1ULL << 29,
+ AHARDWAREBUFFER_USAGE_VENDOR_2 = 1ULL << 30,
+ AHARDWAREBUFFER_USAGE_VENDOR_3 = 1ULL << 31,
+ AHARDWAREBUFFER_USAGE_VENDOR_4 = 1ULL << 48,
+ AHARDWAREBUFFER_USAGE_VENDOR_5 = 1ULL << 49,
+ AHARDWAREBUFFER_USAGE_VENDOR_6 = 1ULL << 50,
+ AHARDWAREBUFFER_USAGE_VENDOR_7 = 1ULL << 51,
+ AHARDWAREBUFFER_USAGE_VENDOR_8 = 1ULL << 52,
+ AHARDWAREBUFFER_USAGE_VENDOR_9 = 1ULL << 53,
+ AHARDWAREBUFFER_USAGE_VENDOR_10 = 1ULL << 54,
+ AHARDWAREBUFFER_USAGE_VENDOR_11 = 1ULL << 55,
+ AHARDWAREBUFFER_USAGE_VENDOR_12 = 1ULL << 56,
+ AHARDWAREBUFFER_USAGE_VENDOR_13 = 1ULL << 57,
+ AHARDWAREBUFFER_USAGE_VENDOR_14 = 1ULL << 58,
+ AHARDWAREBUFFER_USAGE_VENDOR_15 = 1ULL << 59,
+ AHARDWAREBUFFER_USAGE_VENDOR_16 = 1ULL << 60,
+ AHARDWAREBUFFER_USAGE_VENDOR_17 = 1ULL << 61,
+ AHARDWAREBUFFER_USAGE_VENDOR_18 = 1ULL << 62,
+ AHARDWAREBUFFER_USAGE_VENDOR_19 = 1ULL << 63,
+};
+typedef struct AHardwareBuffer_Desc {
+ uint32_t width; // width in pixels
+ uint32_t height; // height in pixels
+ uint32_t layers; // number of images
+ uint32_t format; // One of AHARDWAREBUFFER_FORMAT_*
+ uint64_t usage; // Combination of AHARDWAREBUFFER_USAGE_*
+ uint32_t stride; // Stride in pixels, ignored for AHardwareBuffer_allocate()
+ uint32_t rfu0; // Initialize to zero, reserved for future use
+ uint64_t rfu1; // Initialize to zero, reserved for future use
+} AHardwareBuffer_Desc;
+typedef struct AHardwareBuffer AHardwareBuffer;
+/**
+ * Allocates a buffer that backs an AHardwareBuffer using the passed
+ * AHardwareBuffer_Desc.
+ *
+ * Returns NO_ERROR on success, or an error number of the allocation fails for
+ * any reason.
+ */
+int AHardwareBuffer_allocate(const AHardwareBuffer_Desc* desc,
+ AHardwareBuffer** outBuffer) __INTRODUCED_IN(26);
+/**
+ * Acquire a reference on the given AHardwareBuffer object. This prevents the
+ * object from being deleted until the last reference is removed.
+ */
+void AHardwareBuffer_acquire(AHardwareBuffer* buffer) __INTRODUCED_IN(26);
+/**
+ * Remove a reference that was previously acquired with
+ * AHardwareBuffer_acquire().
+ */
+void AHardwareBuffer_release(AHardwareBuffer* buffer) __INTRODUCED_IN(26);
+/**
+ * Return a description of the AHardwareBuffer in the passed
+ * AHardwareBuffer_Desc struct.
+ */
+void AHardwareBuffer_describe(const AHardwareBuffer* buffer,
+ AHardwareBuffer_Desc* outDesc) __INTRODUCED_IN(26);
+/*
+ * Lock the AHardwareBuffer for reading or writing, depending on the usage flags
+ * passed. This call may block if the hardware needs to finish rendering or if
+ * CPU caches need to be synchronized, or possibly for other implementation-
+ * specific reasons. If fence is not negative, then it specifies a fence file
+ * descriptor that will be signaled when the buffer is locked, otherwise the
+ * caller will block until the buffer is available.
+ *
+ * If rect is not NULL, the caller promises to modify only data in the area
+ * specified by rect. If rect is NULL, the caller may modify the contents of the
+ * entire buffer.
+ *
+ * The content of the buffer outside of the specified rect is NOT modified
+ * by this call.
+ *
+ * The buffer usage may only specify AHARDWAREBUFFER_USAGE_CPU_*. If set, then
+ * outVirtualAddress is filled with the address of the buffer in virtual memory,
+ * otherwise this function will fail.
+ *
+ * THREADING CONSIDERATIONS:
+ *
+ * It is legal for several different threads to lock a buffer for read access;
+ * none of the threads are blocked.
+ *
+ * Locking a buffer simultaneously for write or read/write is undefined, but
+ * will neither terminate the process nor block the caller; AHardwareBuffer_lock
+ * may return an error or leave the buffer's content into an indeterminate
+ * state.
+ *
+ * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL or if the usage
+ * flags are not a combination of AHARDWAREBUFFER_USAGE_CPU_*, or an error
+ * number of the lock fails for any reason.
+ */
+int AHardwareBuffer_lock(AHardwareBuffer* buffer, uint64_t usage,
+ int32_t fence, const ARect* rect, void** outVirtualAddress) __INTRODUCED_IN(26);
+/*
+ * Unlock the AHardwareBuffer; must be called after all changes to the buffer
+ * are completed by the caller. If fence is not NULL then it will be set to a
+ * file descriptor that is signaled when all pending work on the buffer is
+ * completed. The caller is responsible for closing the fence when it is no
+ * longer needed.
+ *
+ * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error
+ * number of the lock fails for any reason.
+ */
+int AHardwareBuffer_unlock(AHardwareBuffer* buffer, int32_t* fence) __INTRODUCED_IN(26);
+/*
+ * Send the AHardwareBuffer to an AF_UNIX socket.
+ *
+ * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error
+ * number of the lock fails for any reason.
+ */
+int AHardwareBuffer_sendHandleToUnixSocket(const AHardwareBuffer* buffer, int socketFd) __INTRODUCED_IN(26);
+/*
+ * Receive the AHardwareBuffer from an AF_UNIX socket.
+ *
+ * Returns NO_ERROR on success, BAD_VALUE if the buffer is NULL, or an error
+ * number of the lock fails for any reason.
+ */
+int AHardwareBuffer_recvHandleFromUnixSocket(int socketFd, AHardwareBuffer** outBuffer) __INTRODUCED_IN(26);
+__END_DECLS
+#endif // ANDROID_HARDWARE_BUFFER_H
+/** @} */
diff --git a/android/android-emugl/guest/android/log.h b/android/android-emugl/guest/android/log.h
new file mode 100644
index 0000000000..ee9220d4ad
--- /dev/null
+++ b/android/android-emugl/guest/android/log.h
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ANDROID_LOG_H
+#define _ANDROID_LOG_H
+
+/******************************************************************
+ *
+ * IMPORTANT NOTICE:
+ *
+ * This file is part of Android's set of stable system headers
+ * exposed by the Android NDK (Native Development Kit) since
+ * platform release 1.5
+ *
+ * Third-party source AND binary code relies on the definitions
+ * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
+ *
+ * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
+ * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
+ * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
+ * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
+ */
+
+/**
+ * @addtogroup Logging
+ * @{
+ */
+
+/**
+ * \file
+ *
+ * Support routines to send messages to the Android log buffer,
+ * which can later be accessed through the `logcat` utility.
+ *
+ * Each log message must have
+ * - a priority
+ * - a log tag
+ * - some text
+ *
+ * The tag normally corresponds to the component that emits the log message,
+ * and should be reasonably small.
+ *
+ * Log message text may be truncated to less than an implementation-specific
+ * limit (1023 bytes).
+ *
+ * Note that a newline character ("\n") will be appended automatically to your
+ * log message, if not already there. It is not possible to send several
+ * messages and have them appear on a single line in logcat.
+ *
+ * Please use logging in moderation:
+ *
+ * - Sending log messages eats CPU and slow down your application and the
+ * system.
+ *
+ * - The circular log buffer is pretty small, so sending many messages
+ * will hide other important log messages.
+ *
+ * - In release builds, only send log messages to account for exceptional
+ * conditions.
+ */
+
+#include <stdarg.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Android log priority values, in increasing order of priority.
+ */
+typedef enum android_LogPriority {
+ /** For internal use only. */
+ ANDROID_LOG_UNKNOWN = 0,
+ /** The default priority, for internal use only. */
+ ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
+ /** Verbose logging. Should typically be disabled for a release apk. */
+ ANDROID_LOG_VERBOSE,
+ /** Debug logging. Should typically be disabled for a release apk. */
+ ANDROID_LOG_DEBUG,
+ /** Informational logging. Should typically be disabled for a release apk. */
+ ANDROID_LOG_INFO,
+ /** Warning logging. For use with recoverable failures. */
+ ANDROID_LOG_WARN,
+ /** Error logging. For use with unrecoverable failures. */
+ ANDROID_LOG_ERROR,
+ /** Fatal logging. For use when aborting. */
+ ANDROID_LOG_FATAL,
+ /** For internal use only. */
+ ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
+} android_LogPriority;
+
+/**
+ * Writes the constant string `text` to the log, with priority `prio` and tag
+ * `tag`.
+ */
+int __android_log_write(int prio, const char* tag, const char* text);
+
+/**
+ * Writes a formatted string to the log, with priority `prio` and tag `tag`.
+ * The details of formatting are the same as for
+ * [printf(3)](http://man7.org/linux/man-pages/man3/printf.3.html).
+ */
+int __android_log_print(int prio, const char* tag, const char* fmt, ...)
+#if defined(__GNUC__)
+ __attribute__((__format__(printf, 3, 4)))
+#endif
+ ;
+
+/**
+ * Equivalent to `__android_log_print`, but taking a `va_list`.
+ * (If `__android_log_print` is like `printf`, this is like `vprintf`.)
+ */
+int __android_log_vprint(int prio, const char* tag, const char* fmt, va_list ap)
+#if defined(__GNUC__)
+ __attribute__((__format__(printf, 3, 0)))
+#endif
+ ;
+
+/**
+ * Writes an assertion failure to the log (as `ANDROID_LOG_FATAL`) and to
+ * stderr, before calling
+ * [abort(3)](http://man7.org/linux/man-pages/man3/abort.3.html).
+ *
+ * If `fmt` is non-null, `cond` is unused. If `fmt` is null, the string
+ * `Assertion failed: %s` is used with `cond` as the string argument.
+ * If both `fmt` and `cond` are null, a default string is provided.
+ *
+ * Most callers should use
+ * [assert(3)](http://man7.org/linux/man-pages/man3/assert.3.html) from
+ * `<assert.h>` instead, or the `__assert` and `__assert2` functions provided by
+ * bionic if more control is needed. They support automatically including the
+ * source filename and line number more conveniently than this function.
+ */
+void __android_log_assert(const char* cond, const char* tag, const char* fmt,
+ ...)
+#if defined(__GNUC__)
+ __attribute__((__noreturn__))
+ __attribute__((__format__(printf, 3, 4)))
+#endif
+ ;
+
+#ifndef log_id_t_defined
+#define log_id_t_defined
+typedef enum log_id {
+ LOG_ID_MIN = 0,
+
+ LOG_ID_MAIN = 0,
+ LOG_ID_RADIO = 1,
+ LOG_ID_EVENTS = 2,
+ LOG_ID_SYSTEM = 3,
+ LOG_ID_CRASH = 4,
+ LOG_ID_STATS = 5,
+ LOG_ID_SECURITY = 6,
+ LOG_ID_KERNEL = 7, /* place last, third-parties can not use it */
+
+ LOG_ID_MAX
+} log_id_t;
+#endif
+
+/*
+ * Send a simple string to the log.
+ */
+int __android_log_buf_write(int bufID, int prio, const char* tag,
+ const char* text);
+int __android_log_buf_print(int bufID, int prio, const char* tag,
+ const char* fmt, ...)
+#if defined(__GNUC__)
+ __attribute__((__format__(printf, 4, 5)))
+#endif
+ ;
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @} */
+
+#endif /* _ANDROID_LOG_H */
diff --git a/android/android-emugl/guest/android/native_window.h b/android/android-emugl/guest/android/native_window.h
new file mode 100644
index 0000000000..6e1b6d8b20
--- /dev/null
+++ b/android/android-emugl/guest/android/native_window.h
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @addtogroup NativeActivity Native Activity
+ * @{
+ */
+/**
+ * @file native_window.h
+ * @brief API for accessing a native window.
+ */
+#ifndef ANDROID_NATIVE_WINDOW_H
+#define ANDROID_NATIVE_WINDOW_H
+#include <sys/cdefs.h>
+#include <android/hardware_buffer.h>
+#include <android/rect.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+/**
+ * Legacy window pixel format names, kept for backwards compatibility.
+ * New code and APIs should use AHARDWAREBUFFER_FORMAT_*.
+ */
+enum {
+ // NOTE: these values must match the values from graphics/common/x.x/types.hal
+ /** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits. **/
+ WINDOW_FORMAT_RGBA_8888 = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,
+ /** Red: 8 bits, Green: 8 bits, Blue: 8 bits, Unused: 8 bits. **/
+ WINDOW_FORMAT_RGBX_8888 = AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM,
+ /** Red: 5 bits, Green: 6 bits, Blue: 5 bits. **/
+ WINDOW_FORMAT_RGB_565 = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,
+};
+/**
+ * Transforms that can be applied to buffers as they are displayed to a window.
+ *
+ * Supported transforms are any combination of horizontal mirror, vertical
+ * mirror, and clockwise 90 degree rotation, in that order. Rotations of 180
+ * and 270 degrees are made up of those basic transforms.
+ */
+enum ANativeWindowTransform {
+ ANATIVEWINDOW_TRANSFORM_IDENTITY = 0x00,
+ ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL = 0x01,
+ ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL = 0x02,
+ ANATIVEWINDOW_TRANSFORM_ROTATE_90 = 0x04,
+ ANATIVEWINDOW_TRANSFORM_ROTATE_180 = ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL |
+ ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL,
+ ANATIVEWINDOW_TRANSFORM_ROTATE_270 = ANATIVEWINDOW_TRANSFORM_ROTATE_180 |
+ ANATIVEWINDOW_TRANSFORM_ROTATE_90,
+};
+struct ANativeWindow;
+/**
+ * Opaque type that provides access to a native window.
+ *
+ * A pointer can be obtained using {@link ANativeWindow_fromSurface()}.
+ */
+typedef struct ANativeWindow ANativeWindow;
+/**
+ * Struct that represents a windows buffer.
+ *
+ * A pointer can be obtained using {@link ANativeWindow_lock()}.
+ */
+typedef struct ANativeWindow_Buffer {
+ // The number of pixels that are show horizontally.
+ int32_t width;
+ // The number of pixels that are shown vertically.
+ int32_t height;
+ // The number of *pixels* that a line in the buffer takes in
+ // memory. This may be >= width.
+ int32_t stride;
+ // The format of the buffer. One of AHARDWAREBUFFER_FORMAT_*
+ int32_t format;
+ // The actual bits.
+ void* bits;
+ // Do not touch.
+ uint32_t reserved[6];
+} ANativeWindow_Buffer;
+/**
+ * Acquire a reference on the given {@link ANativeWindow} object. This prevents the object
+ * from being deleted until the reference is removed.
+ */
+void ANativeWindow_acquire(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Remove a reference that was previously acquired with {@link ANativeWindow_acquire()}.
+ */
+void ANativeWindow_release(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Return the current width in pixels of the window surface.
+ *
+ * \return negative value on error.
+ */
+int32_t ANativeWindow_getWidth(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Return the current height in pixels of the window surface.
+ *
+ * \return a negative value on error.
+ */
+int32_t ANativeWindow_getHeight(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Return the current pixel format (AHARDWAREBUFFER_FORMAT_*) of the window surface.
+ *
+ * \return a negative value on error.
+ */
+int32_t ANativeWindow_getFormat(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Change the format and size of the window buffers.
+ *
+ * The width and height control the number of pixels in the buffers, not the
+ * dimensions of the window on screen. If these are different than the
+ * window's physical size, then its buffer will be scaled to match that size
+ * when compositing it to the screen. The width and height must be either both zero
+ * or both non-zero.
+ *
+ * For all of these parameters, if 0 is supplied then the window's base
+ * value will come back in force.
+ *
+ * \param width width of the buffers in pixels.
+ * \param height height of the buffers in pixels.
+ * \param format one of AHARDWAREBUFFER_FORMAT_* constants.
+ * \return 0 for success, or a negative value on error.
+ */
+int32_t ANativeWindow_setBuffersGeometry(ANativeWindow* window,
+ int32_t width, int32_t height, int32_t format) __INTRODUCED_IN(26);
+/**
+ * Lock the window's next drawing surface for writing.
+ * inOutDirtyBounds is used as an in/out parameter, upon entering the
+ * function, it contains the dirty region, that is, the region the caller
+ * intends to redraw. When the function returns, inOutDirtyBounds is updated
+ * with the actual area the caller needs to redraw -- this region is often
+ * extended by {@link ANativeWindow_lock}.
+ *
+ * \return 0 for success, or a negative value on error.
+ */
+int32_t ANativeWindow_lock(ANativeWindow* window, ANativeWindow_Buffer* outBuffer,
+ ARect* inOutDirtyBounds) __INTRODUCED_IN(26);
+/**
+ * Unlock the window's drawing surface after previously locking it,
+ * posting the new buffer to the display.
+ *
+ * \return 0 for success, or a negative value on error.
+ */
+int32_t ANativeWindow_unlockAndPost(ANativeWindow* window) __INTRODUCED_IN(26);
+/**
+ * Set a transform that will be applied to future buffers posted to the window.
+ *
+ * \param transform combination of {@link ANativeWindowTransform} flags
+ * \return 0 for success, or -EINVAL if \p transform is invalid
+ */
+int32_t ANativeWindow_setBuffersTransform(ANativeWindow* window, int32_t transform) __INTRODUCED_IN(26);
+#ifdef __cplusplus
+};
+#endif
+#endif // ANDROID_NATIVE_WINDOW_H
+/** @} */
diff --git a/android/android-emugl/guest/android/rect.h b/android/android-emugl/guest/android/rect.h
new file mode 100644
index 0000000000..6161274313
--- /dev/null
+++ b/android/android-emugl/guest/android/rect.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * @addtogroup NativeActivity Native Activity
+ * @{
+ */
+/**
+ * @file rect.h
+ */
+#ifndef ANDROID_RECT_H
+#define ANDROID_RECT_H
+#include <stdint.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+/**
+ * {@link ARect} is a struct that represents a rectangular window area.
+ *
+ * It is used with {@link
+ * ANativeActivityCallbacks::onContentRectChanged} event callback and
+ * ANativeWindow_lock() function.
+ */
+typedef struct ARect {
+#ifdef __cplusplus
+ typedef int32_t value_type;
+#endif
+ /** left position */
+ int32_t left;
+ /** top position */
+ int32_t top;
+ /** left position */
+ int32_t right;
+ /** bottom position */
+ int32_t bottom;
+} ARect;
+#ifdef __cplusplus
+};
+#endif
+#endif // ANDROID_RECT_H
+/** @} */
diff --git a/android/android-emugl/guest/android/versioning.h b/android/android-emugl/guest/android/versioning.h
new file mode 100644
index 0000000000..56f6053d0c
--- /dev/null
+++ b/android/android-emugl/guest/android/versioning.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ANDROID_VERSIONING_H
+#define ANDROID_VERSIONING_H
+#define __INTRODUCED_IN(api_level) __attribute__((annotate("introduced_in=" #api_level)))
+#define __INTRODUCED_IN_FUTURE __attribute__((annotate("introduced_in_future")))
+#define __DEPRECATED_IN(api_level) __attribute__((annotate("deprecated_in=" #api_level)))
+#define __REMOVED_IN(api_level) __attribute__((annotate("obsoleted_in=" #api_level)))
+#define __INTRODUCED_IN_32(api_level) __attribute__((annotate("introduced_in_32=" #api_level)))
+#define __INTRODUCED_IN_64(api_level) __attribute__((annotate("introduced_in_64=" #api_level)))
+#define __INTRODUCED_IN_ARM(api_level) __attribute__((annotate("introduced_in_arm=" #api_level)))
+#define __INTRODUCED_IN_X86(api_level) __attribute__((annotate("introduced_in_x86=" #api_level)))
+#define __INTRODUCED_IN_MIPS(api_level) __attribute__((annotate("introduced_in_mips=" #api_level)))
+#define __VERSIONER_NO_GUARD __attribute__((annotate("versioner_no_guard")))
+#endif /* ANDROID_VERSIONING_H */
diff --git a/android/android-emugl/guest/androidImpl/Log.cpp b/android/android-emugl/guest/androidImpl/Log.cpp
new file mode 100644
index 0000000000..895b3ea5cc
--- /dev/null
+++ b/android/android-emugl/guest/androidImpl/Log.cpp
@@ -0,0 +1,36 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <cstdarg>
+
+#include <stdio.h>
+
+#define LOG_BUF_SIZE 1024
+
+#ifdef _WIN32
+#define EXPORT __declspec(dllexport)
+#else
+#define EXPORT __attribute__((visibility("default")))
+#endif
+
+extern "C" {
+
+EXPORT int __android_log_print(int prio, const char* tag, const char* fmt, ...) {
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ return 0;
+}
+
+}
diff --git a/android/android-emugl/guest/cutils/ashmem.h b/android/android-emugl/guest/cutils/ashmem.h
new file mode 100644
index 0000000000..d80caa698c
--- /dev/null
+++ b/android/android-emugl/guest/cutils/ashmem.h
@@ -0,0 +1,34 @@
+/* cutils/ashmem.h
+ **
+ ** Copyright 2008 The Android Open Source Project
+ **
+ ** This file is dual licensed. It may be redistributed and/or modified
+ ** under the terms of the Apache 2.0 License OR version 2 of the GNU
+ ** General Public License.
+ */
+
+#ifndef _CUTILS_ASHMEM_H
+#define _CUTILS_ASHMEM_H
+
+#include <stddef.h>
+
+#if defined(__BIONIC__)
+#include <linux/ashmem.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int ashmem_valid(int fd);
+int ashmem_create_region(const char *name, size_t size);
+int ashmem_set_prot_region(int fd, int prot);
+int ashmem_pin_region(int fd, size_t offset, size_t len);
+int ashmem_unpin_region(int fd, size_t offset, size_t len);
+int ashmem_get_size_region(int fd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CUTILS_ASHMEM_H */
diff --git a/android/android-emugl/guest/cutils/atomic.h b/android/android-emugl/guest/cutils/atomic.h
new file mode 100644
index 0000000000..0c88bfedd3
--- /dev/null
+++ b/android/android-emugl/guest/cutils/atomic.h
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_CUTILS_ATOMIC_H
+#define ANDROID_CUTILS_ATOMIC_H
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <stdatomic.h>
+
+#ifndef ANDROID_ATOMIC_INLINE
+#define ANDROID_ATOMIC_INLINE static inline
+#endif
+
+/*
+ * A handful of basic atomic operations.
+ * THESE ARE HERE FOR LEGACY REASONS ONLY. AVOID.
+ *
+ * PREFERRED ALTERNATIVES:
+ * - Use C++/C/pthread locks/mutexes whenever there is not a
+ * convincing reason to do otherwise. Note that very clever and
+ * complicated, but correct, lock-free code is often slower than
+ * using locks, especially where nontrivial data structures
+ * are involved.
+ * - C11 stdatomic.h.
+ * - Where supported, C++11 std::atomic<T> .
+ *
+ * PLEASE STOP READING HERE UNLESS YOU ARE TRYING TO UNDERSTAND
+ * OR UPDATE OLD CODE.
+ *
+ * The "acquire" and "release" terms can be defined intuitively in terms
+ * of the placement of memory barriers in a simple lock implementation:
+ * - wait until compare-and-swap(lock-is-free --> lock-is-held) succeeds
+ * - barrier
+ * - [do work]
+ * - barrier
+ * - store(lock-is-free)
+ * In very crude terms, the initial (acquire) barrier prevents any of the
+ * "work" from happening before the lock is held, and the later (release)
+ * barrier ensures that all of the work happens before the lock is released.
+ * (Think of cached writes, cache read-ahead, and instruction reordering
+ * around the CAS and store instructions.)
+ *
+ * The barriers must apply to both the compiler and the CPU. Note it is
+ * legal for instructions that occur before an "acquire" barrier to be
+ * moved down below it, and for instructions that occur after a "release"
+ * barrier to be moved up above it.
+ *
+ * The ARM-driven implementation we use here is short on subtlety,
+ * and actually requests a full barrier from the compiler and the CPU.
+ * The only difference between acquire and release is in whether they
+ * are issued before or after the atomic operation with which they
+ * are associated. To ease the transition to C/C++ atomic intrinsics,
+ * you should not rely on this, and instead assume that only the minimal
+ * acquire/release protection is provided.
+ *
+ * NOTE: all int32_t* values are expected to be aligned on 32-bit boundaries.
+ * If they are not, atomicity is not guaranteed.
+ */
+
+ANDROID_ATOMIC_INLINE
+volatile atomic_int_least32_t* to_atomic_int_least32_t(volatile const int32_t* addr) {
+#ifdef __cplusplus
+ return reinterpret_cast<volatile atomic_int_least32_t*>(const_cast<volatile int32_t*>(addr));
+#else
+ return (volatile atomic_int_least32_t*)addr;
+#endif
+}
+
+/*
+ * Basic arithmetic and bitwise operations. These all provide a
+ * barrier with "release" ordering, and return the previous value.
+ *
+ * These have the same characteristics (e.g. what happens on overflow)
+ * as the equivalent non-atomic C operations.
+ */
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_inc(volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ /* Int32_t, if it exists, is the same as int_least32_t. */
+ return atomic_fetch_add_explicit(a, 1, memory_order_release);
+}
+
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_dec(volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return atomic_fetch_sub_explicit(a, 1, memory_order_release);
+}
+
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_add(int32_t value, volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return atomic_fetch_add_explicit(a, value, memory_order_release);
+}
+
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_and(int32_t value, volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return atomic_fetch_and_explicit(a, value, memory_order_release);
+}
+
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_or(int32_t value, volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return atomic_fetch_or_explicit(a, value, memory_order_release);
+}
+
+/*
+ * Perform an atomic load with "acquire" or "release" ordering.
+ *
+ * Note that the notion of a "release" ordering for a load does not
+ * really fit into the C11 or C++11 memory model. The extra ordering
+ * is normally observable only by code using memory_order_relaxed
+ * atomics, or data races. In the rare cases in which such ordering
+ * is called for, use memory_order_relaxed atomics and a leading
+ * atomic_thread_fence (typically with memory_order_acquire,
+ * not memory_order_release!) instead. If you do not understand
+ * this comment, you are in the vast majority, and should not be
+ * using release loads or replacing them with anything other than
+ * locks or default sequentially consistent atomics.
+ */
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_acquire_load(volatile const int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return atomic_load_explicit(a, memory_order_acquire);
+}
+
+ANDROID_ATOMIC_INLINE
+int32_t android_atomic_release_load(volatile const int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ atomic_thread_fence(memory_order_seq_cst);
+ /* Any reasonable clients of this interface would probably prefer */
+ /* something weaker. But some remaining clients seem to be */
+ /* abusing this API in strange ways, e.g. by using it as a fence. */
+ /* Thus we are conservative until we can get rid of remaining */
+ /* clients (and this function). */
+ return atomic_load_explicit(a, memory_order_relaxed);
+}
+
+/*
+ * Perform an atomic store with "acquire" or "release" ordering.
+ *
+ * Note that the notion of an "acquire" ordering for a store does not
+ * really fit into the C11 or C++11 memory model. The extra ordering
+ * is normally observable only by code using memory_order_relaxed
+ * atomics, or data races. In the rare cases in which such ordering
+ * is called for, use memory_order_relaxed atomics and a trailing
+ * atomic_thread_fence (typically with memory_order_release,
+ * not memory_order_acquire!) instead.
+ */
+ANDROID_ATOMIC_INLINE
+void android_atomic_acquire_store(int32_t value, volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ atomic_store_explicit(a, value, memory_order_relaxed);
+ atomic_thread_fence(memory_order_seq_cst);
+ /* Again overly conservative to accomodate weird clients. */
+}
+
+ANDROID_ATOMIC_INLINE
+void android_atomic_release_store(int32_t value, volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ atomic_store_explicit(a, value, memory_order_release);
+}
+
+/*
+ * Compare-and-set operation with "acquire" or "release" ordering.
+ *
+ * This returns zero if the new value was successfully stored, which will
+ * only happen when *addr == oldvalue.
+ *
+ * (The return value is inverted from implementations on other platforms,
+ * but matches the ARM ldrex/strex result.)
+ *
+ * Implementations that use the release CAS in a loop may be less efficient
+ * than possible, because we re-issue the memory barrier on each iteration.
+ */
+ANDROID_ATOMIC_INLINE
+int android_atomic_acquire_cas(int32_t oldvalue, int32_t newvalue,
+ volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return !atomic_compare_exchange_strong_explicit(
+ a, &oldvalue, newvalue,
+ memory_order_acquire,
+ memory_order_acquire);
+}
+
+ANDROID_ATOMIC_INLINE
+int android_atomic_release_cas(int32_t oldvalue, int32_t newvalue,
+ volatile int32_t* addr)
+{
+ volatile atomic_int_least32_t* a = to_atomic_int_least32_t(addr);
+ return !atomic_compare_exchange_strong_explicit(
+ a, &oldvalue, newvalue,
+ memory_order_release,
+ memory_order_relaxed);
+}
+
+/*
+ * Fence primitives.
+ */
+ANDROID_ATOMIC_INLINE
+void android_compiler_barrier(void)
+{
+ __asm__ __volatile__ ("" : : : "memory");
+ /* Could probably also be: */
+ /* atomic_signal_fence(memory_order_seq_cst); */
+}
+
+ANDROID_ATOMIC_INLINE
+void android_memory_barrier(void)
+{
+ atomic_thread_fence(memory_order_seq_cst);
+}
+
+/*
+ * Aliases for code using an older version of this header. These are now
+ * deprecated and should not be used. The definitions will be removed
+ * in a future release.
+ */
+#define android_atomic_write android_atomic_release_store
+#define android_atomic_cmpxchg android_atomic_release_cas
+
+#endif // ANDROID_CUTILS_ATOMIC_H
diff --git a/android/android-emugl/guest/cutils/compiler.h b/android/android-emugl/guest/cutils/compiler.h
new file mode 100644
index 0000000000..70f884a1e7
--- /dev/null
+++ b/android/android-emugl/guest/cutils/compiler.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_CUTILS_COMPILER_H
+#define ANDROID_CUTILS_COMPILER_H
+
+/*
+ * helps the compiler's optimizer predicting branches
+ */
+
+#ifdef __cplusplus
+# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), true ))
+# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), false ))
+#else
+# define CC_LIKELY( exp ) (__builtin_expect( !!(exp), 1 ))
+# define CC_UNLIKELY( exp ) (__builtin_expect( !!(exp), 0 ))
+#endif
+
+/**
+ * exports marked symbols
+ *
+ * if used on a C++ class declaration, this macro must be inserted
+ * after the "class" keyword. For instance:
+ *
+ * template <typename TYPE>
+ * class ANDROID_API Singleton { }
+ */
+
+#define ANDROID_API __attribute__((visibility("default")))
+
+#endif // ANDROID_CUTILS_COMPILER_H
diff --git a/android/android-emugl/guest/cutils/log.h b/android/android-emugl/guest/cutils/log.h
new file mode 100644
index 0000000000..0e0248e50f
--- /dev/null
+++ b/android/android-emugl/guest/cutils/log.h
@@ -0,0 +1 @@
+#include <log/log.h>
diff --git a/android/android-emugl/guest/cutils/native_handle.h b/android/android-emugl/guest/cutils/native_handle.h
new file mode 100644
index 0000000000..10f5bc0946
--- /dev/null
+++ b/android/android-emugl/guest/cutils/native_handle.h
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef NATIVE_HANDLE_H_
+#define NATIVE_HANDLE_H_
+
+#include <stdalign.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Declare a char array for use with native_handle_init */
+#define NATIVE_HANDLE_DECLARE_STORAGE(name, maxFds, maxInts) \
+ alignas(native_handle_t) char (name)[ \
+ sizeof(native_handle_t) + sizeof(int) * ((maxFds) + (maxInts))]
+
+typedef struct native_handle
+{
+ int version; /* sizeof(native_handle_t) */
+ int numFds; /* number of file-descriptors at &data[0] */
+ int numInts; /* number of ints at &data[numFds] */
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wzero-length-array"
+#endif
+ int data[0]; /* numFds + numInts ints */
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+} native_handle_t;
+
+typedef const native_handle_t* buffer_handle_t;
+
+/*
+ * native_handle_close
+ *
+ * closes the file descriptors contained in this native_handle_t
+ *
+ * return 0 on success, or a negative error code on failure
+ *
+ */
+int native_handle_close(const native_handle_t* h);
+
+/*
+ * native_handle_init
+ *
+ * Initializes a native_handle_t from storage. storage must be declared with
+ * NATIVE_HANDLE_DECLARE_STORAGE. numFds and numInts must not respectively
+ * exceed maxFds and maxInts used to declare the storage.
+ */
+native_handle_t* native_handle_init(char* storage, int numFds, int numInts);
+
+/*
+ * native_handle_create
+ *
+ * creates a native_handle_t and initializes it. must be destroyed with
+ * native_handle_delete().
+ *
+ */
+native_handle_t* native_handle_create(int numFds, int numInts);
+
+/*
+ * native_handle_clone
+ *
+ * creates a native_handle_t and initializes it from another native_handle_t.
+ * Must be destroyed with native_handle_delete().
+ *
+ */
+native_handle_t* native_handle_clone(const native_handle_t* handle);
+
+/*
+ * native_handle_delete
+ *
+ * frees a native_handle_t allocated with native_handle_create().
+ * This ONLY frees the memory allocated for the native_handle_t, but doesn't
+ * close the file descriptors; which can be achieved with native_handle_close().
+ *
+ * return 0 on success, or a negative error code on failure
+ *
+ */
+int native_handle_delete(native_handle_t* h);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NATIVE_HANDLE_H_ */
diff --git a/android/android-emugl/guest/cutils/properties.h b/android/android-emugl/guest/cutils/properties.h
new file mode 100644
index 0000000000..d2e08712a8
--- /dev/null
+++ b/android/android-emugl/guest/cutils/properties.h
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CUTILS_PROPERTIES_H
+#define __CUTILS_PROPERTIES_H
+
+#include <sys/cdefs.h>
+#include <stddef.h>
+#include <sys/system_properties.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* System properties are *small* name value pairs managed by the
+** property service. If your data doesn't fit in the provided
+** space it is not appropriate for a system property.
+**
+** WARNING: system/bionic/include/sys/system_properties.h also defines
+** these, but with different names. (TODO: fix that)
+*/
+#define PROPERTY_KEY_MAX PROP_NAME_MAX
+#define PROPERTY_VALUE_MAX PROP_VALUE_MAX
+
+/* property_get: returns the length of the value which will never be
+** greater than PROPERTY_VALUE_MAX - 1 and will always be zero terminated.
+** (the length does not include the terminating zero).
+**
+** If the property read fails or returns an empty value, the default
+** value is used (if nonnull).
+*/
+int property_get(const char* key, char* value, const char* default_value);
+
+/* property_get_bool: returns the value of key coerced into a
+** boolean. If the property is not set, then the default value is returned.
+**
+* The following is considered to be true (1):
+** "1", "true", "y", "yes", "on"
+**
+** The following is considered to be false (0):
+** "0", "false", "n", "no", "off"
+**
+** The conversion is whitespace-sensitive (e.g. " off" will not be false).
+**
+** If no property with this key is set (or the key is NULL) or the boolean
+** conversion fails, the default value is returned.
+**/
+int8_t property_get_bool(const char *key, int8_t default_value);
+
+/* property_get_int64: returns the value of key truncated and coerced into a
+** int64_t. If the property is not set, then the default value is used.
+**
+** The numeric conversion is identical to strtoimax with the base inferred:
+** - All digits up to the first non-digit characters are read
+** - The longest consecutive prefix of digits is converted to a long
+**
+** Valid strings of digits are:
+** - An optional sign character + or -
+** - An optional prefix indicating the base (otherwise base 10 is assumed)
+** -- 0 prefix is octal
+** -- 0x / 0X prefix is hex
+**
+** Leading/trailing whitespace is ignored. Overflow/underflow will cause
+** numeric conversion to fail.
+**
+** If no property with this key is set (or the key is NULL) or the numeric
+** conversion fails, the default value is returned.
+**/
+int64_t property_get_int64(const char *key, int64_t default_value);
+
+/* property_get_int32: returns the value of key truncated and coerced into an
+** int32_t. If the property is not set, then the default value is used.
+**
+** The numeric conversion is identical to strtoimax with the base inferred:
+** - All digits up to the first non-digit characters are read
+** - The longest consecutive prefix of digits is converted to a long
+**
+** Valid strings of digits are:
+** - An optional sign character + or -
+** - An optional prefix indicating the base (otherwise base 10 is assumed)
+** -- 0 prefix is octal
+** -- 0x / 0X prefix is hex
+**
+** Leading/trailing whitespace is ignored. Overflow/underflow will cause
+** numeric conversion to fail.
+**
+** If no property with this key is set (or the key is NULL) or the numeric
+** conversion fails, the default value is returned.
+**/
+int32_t property_get_int32(const char *key, int32_t default_value);
+
+/* property_set: returns 0 on success, < 0 on failure
+*/
+int property_set(const char *key, const char *value);
+
+int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie);
+
+#if defined(__BIONIC_FORTIFY)
+#define __property_get_err_str "property_get() called with too small of a buffer"
+
+#if defined(__clang__)
+
+/* Some projects use -Weverything; diagnose_if is clang-specific. */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wgcc-compat"
+int property_get(const char* key, char* value, const char* default_value)
+ __clang_error_if(__bos(value) != __BIONIC_FORTIFY_UNKNOWN_SIZE &&
+ __bos(value) < PROPERTY_VALUE_MAX,
+ __property_get_err_str);
+#pragma clang diagnostic pop
+
+#else /* defined(__clang__) */
+
+extern int __property_get_real(const char *, char *, const char *)
+ __asm__(__USER_LABEL_PREFIX__ "property_get");
+__errordecl(__property_get_too_small_error, __property_get_err_str);
+
+__BIONIC_FORTIFY_INLINE
+int property_get(const char *key, char *value, const char *default_value) {
+ size_t bos = __bos(value);
+ if (bos < PROPERTY_VALUE_MAX) {
+ __property_get_too_small_error();
+ }
+ return __property_get_real(key, value, default_value);
+}
+
+#endif /* defined(__clang__) */
+
+#undef __property_get_err_str
+#endif /* defined(__BIONIC_FORTIFY) */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/android/android-emugl/guest/cutils/sockets.h b/android/android-emugl/guest/cutils/sockets.h
new file mode 100644
index 0000000000..b24468bf4e
--- /dev/null
+++ b/android/android-emugl/guest/cutils/sockets.h
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __CUTILS_SOCKETS_H
+#define __CUTILS_SOCKETS_H
+
+#include <errno.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#if defined(_WIN32)
+
+#include <winsock2.h>
+#include <ws2tcpip.h>
+
+typedef int socklen_t;
+typedef SOCKET cutils_socket_t;
+
+#else
+
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+typedef int cutils_socket_t;
+#define INVALID_SOCKET (-1)
+
+#endif
+
+#define ANDROID_SOCKET_ENV_PREFIX "ANDROID_SOCKET_"
+#define ANDROID_SOCKET_DIR "/dev/socket"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * android_get_control_socket - simple helper function to get the file
+ * descriptor of our init-managed Unix domain socket. `name' is the name of the
+ * socket, as given in init.rc. Returns -1 on error.
+ */
+int android_get_control_socket(const char* name);
+
+/*
+ * See also android.os.LocalSocketAddress.Namespace
+ */
+// Linux "abstract" (non-filesystem) namespace
+#define ANDROID_SOCKET_NAMESPACE_ABSTRACT 0
+// Android "reserved" (/dev/socket) namespace
+#define ANDROID_SOCKET_NAMESPACE_RESERVED 1
+// Normal filesystem namespace
+#define ANDROID_SOCKET_NAMESPACE_FILESYSTEM 2
+
+/*
+ * Functions to create sockets for some common usages.
+ *
+ * All these functions are implemented for Unix, but only a few are implemented
+ * for Windows. Those which are can be identified by the cutils_socket_t
+ * return type. The idea is to be able to use this return value with the
+ * standard Unix socket functions on any platform.
+ *
+ * On Unix the returned cutils_socket_t is a standard int file descriptor and
+ * can always be used as normal with all file descriptor functions.
+ *
+ * On Windows utils_socket_t is an unsigned int pointer, and is only valid
+ * with functions that specifically take a socket, e.g. send(), sendto(),
+ * recv(), and recvfrom(). General file descriptor functions such as read(),
+ * write(), and close() will not work with utils_socket_t and will require
+ * special handling.
+ *
+ * These functions return INVALID_SOCKET (-1) on failure for all platforms.
+ */
+cutils_socket_t socket_network_client(const char* host, int port, int type);
+int socket_network_client_timeout(const char* host, int port, int type,
+ int timeout, int* getaddrinfo_error);
+int socket_local_server(const char* name, int namespaceId, int type);
+int socket_local_server_bind(int s, const char* name, int namespaceId);
+int socket_local_client_connect(int fd, const char *name, int namespaceId,
+ int type);
+int socket_local_client(const char* name, int namespaceId, int type);
+cutils_socket_t socket_inaddr_any_server(int port, int type);
+
+/*
+ * Closes a cutils_socket_t. Windows doesn't allow calling close() on a socket
+ * so this is a cross-platform way to close a cutils_socket_t.
+ *
+ * Returns 0 on success.
+ */
+int socket_close(cutils_socket_t sock);
+
+/*
+ * Sets socket receive timeout using SO_RCVTIMEO. Setting |timeout_ms| to 0
+ * disables receive timeouts.
+ *
+ * Return 0 on success.
+ */
+int socket_set_receive_timeout(cutils_socket_t sock, int timeout_ms);
+
+/*
+ * Returns the local port the socket is bound to or -1 on error.
+ */
+int socket_get_local_port(cutils_socket_t sock);
+
+/*
+ * Sends to a socket from multiple buffers; wraps writev() on Unix or WSASend()
+ * on Windows. This can give significant speedup compared to calling send()
+ * multiple times.
+ *
+ * Example usage:
+ * cutils_socket_buffer_t buffers[2] = { {data0, len0}, {data1, len1} };
+ * socket_send_buffers(sock, buffers, 2);
+ *
+ * If you try to pass more than SOCKET_SEND_BUFFERS_MAX_BUFFERS buffers into
+ * this function it will return -1 without sending anything.
+ *
+ * Returns the number of bytes written or -1 on error.
+ */
+typedef struct {
+ const void* data;
+ size_t length;
+} cutils_socket_buffer_t;
+
+#define SOCKET_SEND_BUFFERS_MAX_BUFFERS 16
+
+ssize_t socket_send_buffers(cutils_socket_t sock,
+ const cutils_socket_buffer_t* buffers,
+ size_t num_buffers);
+
+/*
+ * socket_peer_is_trusted - Takes a socket which is presumed to be a
+ * connected local socket (e.g. AF_LOCAL) and returns whether the peer
+ * (the userid that owns the process on the other end of that socket)
+ * is one of the two trusted userids, root or shell.
+ *
+ * Note: This only works as advertised on the Android OS and always
+ * just returns true when called on other operating systems.
+ */
+extern bool socket_peer_is_trusted(int fd);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __CUTILS_SOCKETS_H */
diff --git a/android/android-emugl/guest/cutils/trace.h b/android/android-emugl/guest/cutils/trace.h
new file mode 100644
index 0000000000..58b9f0946c
--- /dev/null
+++ b/android/android-emugl/guest/cutils/trace.h
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_CUTILS_TRACE_H
+#define _LIBS_CUTILS_TRACE_H
+
+#include <inttypes.h>
+#include <stdatomic.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <cutils/compiler.h>
+
+__BEGIN_DECLS
+
+/**
+ * The ATRACE_TAG macro can be defined before including this header to trace
+ * using one of the tags defined below. It must be defined to one of the
+ * following ATRACE_TAG_* macros. The trace tag is used to filter tracing in
+ * userland to avoid some of the runtime cost of tracing when it is not desired.
+ *
+ * Defining ATRACE_TAG to be ATRACE_TAG_ALWAYS will result in the tracing always
+ * being enabled - this should ONLY be done for debug code, as userland tracing
+ * has a performance cost even when the trace is not being recorded. Defining
+ * ATRACE_TAG to be ATRACE_TAG_NEVER or leaving ATRACE_TAG undefined will result
+ * in the tracing always being disabled.
+ *
+ * ATRACE_TAG_HAL should be bitwise ORed with the relevant tags for tracing
+ * within a hardware module. For example a camera hardware module would set:
+ * #define ATRACE_TAG (ATRACE_TAG_CAMERA | ATRACE_TAG_HAL)
+ *
+ * Keep these in sync with frameworks/base/core/java/android/os/Trace.java.
+ */
+#define ATRACE_TAG_NEVER 0 // This tag is never enabled.
+#define ATRACE_TAG_ALWAYS (1<<0) // This tag is always enabled.
+#define ATRACE_TAG_GRAPHICS (1<<1)
+#define ATRACE_TAG_INPUT (1<<2)
+#define ATRACE_TAG_VIEW (1<<3)
+#define ATRACE_TAG_WEBVIEW (1<<4)
+#define ATRACE_TAG_WINDOW_MANAGER (1<<5)
+#define ATRACE_TAG_ACTIVITY_MANAGER (1<<6)
+#define ATRACE_TAG_SYNC_MANAGER (1<<7)
+#define ATRACE_TAG_AUDIO (1<<8)
+#define ATRACE_TAG_VIDEO (1<<9)
+#define ATRACE_TAG_CAMERA (1<<10)
+#define ATRACE_TAG_HAL (1<<11)
+#define ATRACE_TAG_APP (1<<12)
+#define ATRACE_TAG_RESOURCES (1<<13)
+#define ATRACE_TAG_DALVIK (1<<14)
+#define ATRACE_TAG_RS (1<<15)
+#define ATRACE_TAG_BIONIC (1<<16)
+#define ATRACE_TAG_POWER (1<<17)
+#define ATRACE_TAG_PACKAGE_MANAGER (1<<18)
+#define ATRACE_TAG_SYSTEM_SERVER (1<<19)
+#define ATRACE_TAG_DATABASE (1<<20)
+#define ATRACE_TAG_NETWORK (1<<21)
+#define ATRACE_TAG_ADB (1<<22)
+#define ATRACE_TAG_VIBRATOR (1<<23)
+#define ATRACE_TAG_AIDL (1<<24)
+#define ATRACE_TAG_NNAPI (1<<25)
+#define ATRACE_TAG_LAST ATRACE_TAG_NNAPI
+
+// Reserved for initialization.
+#define ATRACE_TAG_NOT_READY (1ULL<<63)
+
+#define ATRACE_TAG_VALID_MASK ((ATRACE_TAG_LAST - 1) | ATRACE_TAG_LAST)
+
+#ifndef ATRACE_TAG
+#define ATRACE_TAG ATRACE_TAG_NEVER
+#elif ATRACE_TAG > ATRACE_TAG_VALID_MASK
+#error ATRACE_TAG must be defined to be one of the tags defined in cutils/trace.h
+#endif
+
+/**
+ * Opens the trace file for writing and reads the property for initial tags.
+ * The atrace.tags.enableflags property sets the tags to trace.
+ * This function should not be explicitly called, the first call to any normal
+ * trace function will cause it to be run safely.
+ */
+void atrace_setup();
+
+/**
+ * If tracing is ready, set atrace_enabled_tags to the system property
+ * debug.atrace.tags.enableflags. Can be used as a sysprop change callback.
+ */
+void atrace_update_tags();
+
+/**
+ * Set whether the process is debuggable. By default the process is not
+ * considered debuggable. If the process is not debuggable then application-
+ * level tracing is not allowed unless the ro.debuggable system property is
+ * set to '1'.
+ */
+void atrace_set_debuggable(bool debuggable);
+
+/**
+ * Set whether tracing is enabled for the current process. This is used to
+ * prevent tracing within the Zygote process.
+ */
+void atrace_set_tracing_enabled(bool enabled);
+
+/**
+ * Flag indicating whether setup has been completed, initialized to 0.
+ * Nonzero indicates setup has completed.
+ * Note: This does NOT indicate whether or not setup was successful.
+ */
+extern atomic_bool atrace_is_ready;
+
+/**
+ * Set of ATRACE_TAG flags to trace for, initialized to ATRACE_TAG_NOT_READY.
+ * A value of zero indicates setup has failed.
+ * Any other nonzero value indicates setup has succeeded, and tracing is on.
+ */
+extern uint64_t atrace_enabled_tags;
+
+/**
+ * Handle to the kernel's trace buffer, initialized to -1.
+ * Any other value indicates setup has succeeded, and is a valid fd for tracing.
+ */
+extern int atrace_marker_fd;
+
+/**
+ * atrace_init readies the process for tracing by opening the trace_marker file.
+ * Calling any trace function causes this to be run, so calling it is optional.
+ * This can be explicitly run to avoid setup delay on first trace function.
+ */
+#define ATRACE_INIT() atrace_init()
+static inline void atrace_init()
+{
+ if (CC_UNLIKELY(!atomic_load_explicit(&atrace_is_ready, memory_order_acquire))) {
+ atrace_setup();
+ }
+}
+
+/**
+ * Get the mask of all tags currently enabled.
+ * It can be used as a guard condition around more expensive trace calculations.
+ * Every trace function calls this, which ensures atrace_init is run.
+ */
+#define ATRACE_GET_ENABLED_TAGS() atrace_get_enabled_tags()
+static inline uint64_t atrace_get_enabled_tags()
+{
+ atrace_init();
+ return atrace_enabled_tags;
+}
+
+/**
+ * Test if a given tag is currently enabled.
+ * Returns nonzero if the tag is enabled, otherwise zero.
+ * It can be used as a guard condition around more expensive trace calculations.
+ */
+#define ATRACE_ENABLED() atrace_is_tag_enabled(ATRACE_TAG)
+static inline uint64_t atrace_is_tag_enabled(uint64_t tag)
+{
+ return atrace_get_enabled_tags() & tag;
+}
+
+/**
+ * Trace the beginning of a context. name is used to identify the context.
+ * This is often used to time function execution.
+ */
+#define ATRACE_BEGIN(name) atrace_begin(ATRACE_TAG, name)
+static inline void atrace_begin(uint64_t tag, const char* name)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_begin_body(const char*);
+ atrace_begin_body(name);
+ }
+}
+
+/**
+ * Trace the end of a context.
+ * This should match up (and occur after) a corresponding ATRACE_BEGIN.
+ */
+#define ATRACE_END() atrace_end(ATRACE_TAG)
+static inline void atrace_end(uint64_t tag)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_end_body();
+ atrace_end_body();
+ }
+}
+
+/**
+ * Trace the beginning of an asynchronous event. Unlike ATRACE_BEGIN/ATRACE_END
+ * contexts, asynchronous events do not need to be nested. The name describes
+ * the event, and the cookie provides a unique identifier for distinguishing
+ * simultaneous events. The name and cookie used to begin an event must be
+ * used to end it.
+ */
+#define ATRACE_ASYNC_BEGIN(name, cookie) \
+ atrace_async_begin(ATRACE_TAG, name, cookie)
+static inline void atrace_async_begin(uint64_t tag, const char* name,
+ int32_t cookie)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_async_begin_body(const char*, int32_t);
+ atrace_async_begin_body(name, cookie);
+ }
+}
+
+/**
+ * Trace the end of an asynchronous event.
+ * This should have a corresponding ATRACE_ASYNC_BEGIN.
+ */
+#define ATRACE_ASYNC_END(name, cookie) atrace_async_end(ATRACE_TAG, name, cookie)
+static inline void atrace_async_end(uint64_t tag, const char* name, int32_t cookie)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_async_end_body(const char*, int32_t);
+ atrace_async_end_body(name, cookie);
+ }
+}
+
+/**
+ * Traces an integer counter value. name is used to identify the counter.
+ * This can be used to track how a value changes over time.
+ */
+#define ATRACE_INT(name, value) atrace_int(ATRACE_TAG, name, value)
+static inline void atrace_int(uint64_t tag, const char* name, int32_t value)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_int_body(const char*, int32_t);
+ atrace_int_body(name, value);
+ }
+}
+
+/**
+ * Traces a 64-bit integer counter value. name is used to identify the
+ * counter. This can be used to track how a value changes over time.
+ */
+#define ATRACE_INT64(name, value) atrace_int64(ATRACE_TAG, name, value)
+static inline void atrace_int64(uint64_t tag, const char* name, int64_t value)
+{
+ if (CC_UNLIKELY(atrace_is_tag_enabled(tag))) {
+ void atrace_int64_body(const char*, int64_t);
+ atrace_int64_body(name, value);
+ }
+}
+
+__END_DECLS
+
+#endif // _LIBS_CUTILS_TRACE_H
diff --git a/android/android-emugl/guest/hardware/camera.h b/android/android-emugl/guest/hardware/camera.h
new file mode 100644
index 0000000000..b1f18fffce
--- /dev/null
+++ b/android/android-emugl/guest/hardware/camera.h
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2010-2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_CAMERA_H
+#define ANDROID_INCLUDE_CAMERA_H
+
+#include "camera_common.h"
+
+/**
+ * Camera device HAL, initial version [ CAMERA_DEVICE_API_VERSION_1_0 ]
+ *
+ * DEPRECATED. New devices should use Camera HAL v3.2 or newer.
+ *
+ * Supports the android.hardware.Camera API, and the android.hardware.camera2
+ * API in legacy mode only.
+ *
+ * Camera devices that support this version of the HAL must return a value in
+ * the range HARDWARE_DEVICE_API_VERSION(0,0)-(1,FF) in
+ * camera_device_t.common.version. CAMERA_DEVICE_API_VERSION_1_0 is the
+ * recommended value.
+ *
+ * Camera modules that implement version 2.0 or higher of camera_module_t must
+ * also return the value of camera_device_t.common.version in
+ * camera_info_t.device_version.
+ *
+ * See camera_common.h for more details.
+ */
+
+__BEGIN_DECLS
+
+struct camera_memory;
+typedef void (*camera_release_memory)(struct camera_memory *mem);
+
+typedef struct camera_memory {
+ void *data;
+ size_t size;
+ void *handle;
+ camera_release_memory release;
+} camera_memory_t;
+
+typedef camera_memory_t* (*camera_request_memory)(int fd, size_t buf_size, unsigned int num_bufs,
+ void *user);
+
+typedef void (*camera_notify_callback)(int32_t msg_type,
+ int32_t ext1,
+ int32_t ext2,
+ void *user);
+
+typedef void (*camera_data_callback)(int32_t msg_type,
+ const camera_memory_t *data, unsigned int index,
+ camera_frame_metadata_t *metadata, void *user);
+
+typedef void (*camera_data_timestamp_callback)(int64_t timestamp,
+ int32_t msg_type,
+ const camera_memory_t *data, unsigned int index,
+ void *user);
+
+#define HAL_CAMERA_PREVIEW_WINDOW_TAG 0xcafed00d
+
+typedef struct preview_stream_ops {
+ int (*dequeue_buffer)(struct preview_stream_ops* w,
+ buffer_handle_t** buffer, int *stride);
+ int (*enqueue_buffer)(struct preview_stream_ops* w,
+ buffer_handle_t* buffer);
+ int (*cancel_buffer)(struct preview_stream_ops* w,
+ buffer_handle_t* buffer);
+ int (*set_buffer_count)(struct preview_stream_ops* w, int count);
+ int (*set_buffers_geometry)(struct preview_stream_ops* pw,
+ int w, int h, int format);
+ int (*set_crop)(struct preview_stream_ops *w,
+ int left, int top, int right, int bottom);
+ int (*set_usage)(struct preview_stream_ops* w, int usage);
+ int (*set_swap_interval)(struct preview_stream_ops *w, int interval);
+ int (*get_min_undequeued_buffer_count)(const struct preview_stream_ops *w,
+ int *count);
+ int (*lock_buffer)(struct preview_stream_ops* w,
+ buffer_handle_t* buffer);
+ // Timestamps are measured in nanoseconds, and must be comparable
+ // and monotonically increasing between two frames in the same
+ // preview stream. They do not need to be comparable between
+ // consecutive or parallel preview streams, cameras, or app runs.
+ int (*set_timestamp)(struct preview_stream_ops *w, int64_t timestamp);
+} preview_stream_ops_t;
+
+struct camera_device;
+typedef struct camera_device_ops {
+ /** Set the ANativeWindow to which preview frames are sent */
+ int (*set_preview_window)(struct camera_device *,
+ struct preview_stream_ops *window);
+
+ /** Set the notification and data callbacks */
+ void (*set_callbacks)(struct camera_device *,
+ camera_notify_callback notify_cb,
+ camera_data_callback data_cb,
+ camera_data_timestamp_callback data_cb_timestamp,
+ camera_request_memory get_memory,
+ void *user);
+
+ /**
+ * The following three functions all take a msg_type, which is a bitmask of
+ * the messages defined in include/ui/Camera.h
+ */
+
+ /**
+ * Enable a message, or set of messages.
+ */
+ void (*enable_msg_type)(struct camera_device *, int32_t msg_type);
+
+ /**
+ * Disable a message, or a set of messages.
+ *
+ * Once received a call to disableMsgType(CAMERA_MSG_VIDEO_FRAME), camera
+ * HAL should not rely on its client to call releaseRecordingFrame() to
+ * release video recording frames sent out by the cameral HAL before and
+ * after the disableMsgType(CAMERA_MSG_VIDEO_FRAME) call. Camera HAL
+ * clients must not modify/access any video recording frame after calling
+ * disableMsgType(CAMERA_MSG_VIDEO_FRAME).
+ */
+ void (*disable_msg_type)(struct camera_device *, int32_t msg_type);
+
+ /**
+ * Query whether a message, or a set of messages, is enabled. Note that
+ * this is operates as an AND, if any of the messages queried are off, this
+ * will return false.
+ */
+ int (*msg_type_enabled)(struct camera_device *, int32_t msg_type);
+
+ /**
+ * Start preview mode.
+ */
+ int (*start_preview)(struct camera_device *);
+
+ /**
+ * Stop a previously started preview.
+ */
+ void (*stop_preview)(struct camera_device *);
+
+ /**
+ * Returns true if preview is enabled.
+ */
+ int (*preview_enabled)(struct camera_device *);
+
+ /**
+ * Request the camera HAL to store meta data or real YUV data in the video
+ * buffers sent out via CAMERA_MSG_VIDEO_FRAME for a recording session. If
+ * it is not called, the default camera HAL behavior is to store real YUV
+ * data in the video buffers.
+ *
+ * This method should be called before startRecording() in order to be
+ * effective.
+ *
+ * If meta data is stored in the video buffers, it is up to the receiver of
+ * the video buffers to interpret the contents and to find the actual frame
+ * data with the help of the meta data in the buffer. How this is done is
+ * outside of the scope of this method.
+ *
+ * Some camera HALs may not support storing meta data in the video buffers,
+ * but all camera HALs should support storing real YUV data in the video
+ * buffers. If the camera HAL does not support storing the meta data in the
+ * video buffers when it is requested to do do, INVALID_OPERATION must be
+ * returned. It is very useful for the camera HAL to pass meta data rather
+ * than the actual frame data directly to the video encoder, since the
+ * amount of the uncompressed frame data can be very large if video size is
+ * large.
+ *
+ * @param enable if true to instruct the camera HAL to store
+ * meta data in the video buffers; false to instruct
+ * the camera HAL to store real YUV data in the video
+ * buffers.
+ *
+ * @return OK on success.
+ */
+ int (*store_meta_data_in_buffers)(struct camera_device *, int enable);
+
+ /**
+ * Start record mode. When a record image is available, a
+ * CAMERA_MSG_VIDEO_FRAME message is sent with the corresponding
+ * frame. Every record frame must be released by a camera HAL client via
+ * releaseRecordingFrame() before the client calls
+ * disableMsgType(CAMERA_MSG_VIDEO_FRAME). After the client calls
+ * disableMsgType(CAMERA_MSG_VIDEO_FRAME), it is the camera HAL's
+ * responsibility to manage the life-cycle of the video recording frames,
+ * and the client must not modify/access any video recording frames.
+ */
+ int (*start_recording)(struct camera_device *);
+
+ /**
+ * Stop a previously started recording.
+ */
+ void (*stop_recording)(struct camera_device *);
+
+ /**
+ * Returns true if recording is enabled.
+ */
+ int (*recording_enabled)(struct camera_device *);
+
+ /**
+ * Release a record frame previously returned by CAMERA_MSG_VIDEO_FRAME.
+ *
+ * It is camera HAL client's responsibility to release video recording
+ * frames sent out by the camera HAL before the camera HAL receives a call
+ * to disableMsgType(CAMERA_MSG_VIDEO_FRAME). After it receives the call to
+ * disableMsgType(CAMERA_MSG_VIDEO_FRAME), it is the camera HAL's
+ * responsibility to manage the life-cycle of the video recording frames.
+ */
+ void (*release_recording_frame)(struct camera_device *,
+ const void *opaque);
+
+ /**
+ * Start auto focus, the notification callback routine is called with
+ * CAMERA_MSG_FOCUS once when focusing is complete. autoFocus() will be
+ * called again if another auto focus is needed.
+ */
+ int (*auto_focus)(struct camera_device *);
+
+ /**
+ * Cancels auto-focus function. If the auto-focus is still in progress,
+ * this function will cancel it. Whether the auto-focus is in progress or
+ * not, this function will return the focus position to the default. If
+ * the camera does not support auto-focus, this is a no-op.
+ */
+ int (*cancel_auto_focus)(struct camera_device *);
+
+ /**
+ * Take a picture.
+ */
+ int (*take_picture)(struct camera_device *);
+
+ /**
+ * Cancel a picture that was started with takePicture. Calling this method
+ * when no picture is being taken is a no-op.
+ */
+ int (*cancel_picture)(struct camera_device *);
+
+ /**
+ * Set the camera parameters. This returns BAD_VALUE if any parameter is
+ * invalid or not supported.
+ */
+ int (*set_parameters)(struct camera_device *, const char *parms);
+
+ /** Retrieve the camera parameters. The buffer returned by the camera HAL
+ must be returned back to it with put_parameters, if put_parameters
+ is not NULL.
+ */
+ char *(*get_parameters)(struct camera_device *);
+
+ /** The camera HAL uses its own memory to pass us the parameters when we
+ call get_parameters. Use this function to return the memory back to
+ the camera HAL, if put_parameters is not NULL. If put_parameters
+ is NULL, then you have to use free() to release the memory.
+ */
+ void (*put_parameters)(struct camera_device *, char *);
+
+ /**
+ * Send command to camera driver.
+ */
+ int (*send_command)(struct camera_device *,
+ int32_t cmd, int32_t arg1, int32_t arg2);
+
+ /**
+ * Release the hardware resources owned by this object. Note that this is
+ * *not* done in the destructor.
+ */
+ void (*release)(struct camera_device *);
+
+ /**
+ * Dump state of the camera hardware
+ */
+ int (*dump)(struct camera_device *, int fd);
+} camera_device_ops_t;
+
+typedef struct camera_device {
+ /**
+ * camera_device.common.version must be in the range
+ * HARDWARE_DEVICE_API_VERSION(0,0)-(1,FF). CAMERA_DEVICE_API_VERSION_1_0 is
+ * recommended.
+ */
+ hw_device_t common;
+ camera_device_ops_t *ops;
+ void *priv;
+} camera_device_t;
+
+__END_DECLS
+
+#endif /* #ifdef ANDROID_INCLUDE_CAMERA_H */
diff --git a/android/android-emugl/guest/hardware/camera2.h b/android/android-emugl/guest/hardware/camera2.h
new file mode 100644
index 0000000000..547a1d7874
--- /dev/null
+++ b/android/android-emugl/guest/hardware/camera2.h
@@ -0,0 +1,842 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_CAMERA2_H
+#define ANDROID_INCLUDE_CAMERA2_H
+
+#include "camera_common.h"
+#include "system/camera_metadata.h"
+
+/**
+ * Camera device HAL 2.1 [ CAMERA_DEVICE_API_VERSION_2_0, CAMERA_DEVICE_API_VERSION_2_1 ]
+ *
+ * NO LONGER SUPPORTED. The camera service will no longer load HAL modules that
+ * contain HAL v2.0 or v2.1 devices.
+ *
+ * New devices should use Camera HAL v3.2 or newer.
+ *
+ * Supports the android.hardware.Camera API, and the android.hardware.camera2
+ * API in legacy mode only.
+ *
+ * Camera devices that support this version of the HAL must return
+ * CAMERA_DEVICE_API_VERSION_2_1 in camera_device_t.common.version and in
+ * camera_info_t.device_version (from camera_module_t.get_camera_info).
+ *
+ * Camera modules that may contain version 2.x devices must implement at least
+ * version 2.0 of the camera module interface (as defined by
+ * camera_module_t.common.module_api_version).
+ *
+ * See camera_common.h for more versioning details.
+ *
+ * Version history:
+ *
+ * 2.0: CAMERA_DEVICE_API_VERSION_2_0. Initial release (Android 4.2):
+ * - Sufficient for implementing existing android.hardware.Camera API.
+ * - Allows for ZSL queue in camera service layer
+ * - Not tested for any new features such manual capture control,
+ * Bayer RAW capture, reprocessing of RAW data.
+ *
+ * 2.1: CAMERA_DEVICE_API_VERSION_2_1. Support per-device static metadata:
+ * - Add get_instance_metadata() method to retrieve metadata that is fixed
+ * after device open, but may be variable between open() calls.
+ */
+
+__BEGIN_DECLS
+
+struct camera2_device;
+
+/**********************************************************************
+ *
+ * Input/output stream buffer queue interface definitions
+ *
+ */
+
+/**
+ * Output image stream queue interface. A set of these methods is provided to
+ * the HAL device in allocate_stream(), and are used to interact with the
+ * gralloc buffer queue for that stream. They may not be called until after
+ * allocate_stream returns.
+ */
+typedef struct camera2_stream_ops {
+ /**
+ * Get a buffer to fill from the queue. The size and format of the buffer
+ * are fixed for a given stream (defined in allocate_stream), and the stride
+ * should be queried from the platform gralloc module. The gralloc buffer
+ * will have been allocated based on the usage flags provided by
+ * allocate_stream, and will be locked for use.
+ */
+ int (*dequeue_buffer)(const struct camera2_stream_ops* w,
+ buffer_handle_t** buffer);
+
+ /**
+ * Push a filled buffer to the stream to be used by the consumer.
+ *
+ * The timestamp represents the time at start of exposure of the first row
+ * of the image; it must be from a monotonic clock, and is measured in
+ * nanoseconds. The timestamps do not need to be comparable between
+ * different cameras, or consecutive instances of the same camera. However,
+ * they must be comparable between streams from the same camera. If one
+ * capture produces buffers for multiple streams, each stream must have the
+ * same timestamp for that buffer, and that timestamp must match the
+ * timestamp in the output frame metadata.
+ */
+ int (*enqueue_buffer)(const struct camera2_stream_ops* w,
+ int64_t timestamp,
+ buffer_handle_t* buffer);
+ /**
+ * Return a buffer to the queue without marking it as filled.
+ */
+ int (*cancel_buffer)(const struct camera2_stream_ops* w,
+ buffer_handle_t* buffer);
+ /**
+ * Set the crop window for subsequently enqueued buffers. The parameters are
+ * measured in pixels relative to the buffer width and height.
+ */
+ int (*set_crop)(const struct camera2_stream_ops *w,
+ int left, int top, int right, int bottom);
+
+} camera2_stream_ops_t;
+
+/**
+ * Temporary definition during transition.
+ *
+ * These formats will be removed and replaced with
+ * HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED. To maximize forward compatibility,
+ * HAL implementations are strongly recommended to treat FORMAT_OPAQUE and
+ * FORMAT_ZSL as equivalent to HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, and
+ * return HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED in the format_actual output
+ * parameter of allocate_stream, allowing the gralloc module to select the
+ * specific format based on the usage flags from the camera and the stream
+ * consumer.
+ */
+enum {
+ CAMERA2_HAL_PIXEL_FORMAT_OPAQUE = HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
+ CAMERA2_HAL_PIXEL_FORMAT_ZSL = -1
+};
+
+/**
+ * Transport header for compressed JPEG buffers in output streams.
+ *
+ * To capture JPEG images, a stream is created using the pixel format
+ * HAL_PIXEL_FORMAT_BLOB, and the static metadata field android.jpeg.maxSize is
+ * used as the buffer size. Since compressed JPEG images are of variable size,
+ * the HAL needs to include the final size of the compressed image using this
+ * structure inside the output stream buffer. The JPEG blob ID field must be set
+ * to CAMERA2_JPEG_BLOB_ID.
+ *
+ * Transport header should be at the end of the JPEG output stream buffer. That
+ * means the jpeg_blob_id must start at byte[android.jpeg.maxSize -
+ * sizeof(camera2_jpeg_blob)]. Any HAL using this transport header must
+ * account for it in android.jpeg.maxSize. The JPEG data itself starts at
+ * byte[0] and should be jpeg_size bytes long.
+ */
+typedef struct camera2_jpeg_blob {
+ uint16_t jpeg_blob_id;
+ uint32_t jpeg_size;
+} camera2_jpeg_blob_t;
+
+enum {
+ CAMERA2_JPEG_BLOB_ID = 0x00FF
+};
+
+/**
+ * Input reprocess stream queue management. A set of these methods is provided
+ * to the HAL device in allocate_reprocess_stream(); they are used to interact
+ * with the reprocess stream's input gralloc buffer queue.
+ */
+typedef struct camera2_stream_in_ops {
+ /**
+ * Get the next buffer of image data to reprocess. The width, height, and
+ * format of the buffer is fixed in allocate_reprocess_stream(), and the
+ * stride and other details should be queried from the platform gralloc
+ * module as needed. The buffer will already be locked for use.
+ */
+ int (*acquire_buffer)(const struct camera2_stream_in_ops *w,
+ buffer_handle_t** buffer);
+ /**
+ * Return a used buffer to the buffer queue for reuse.
+ */
+ int (*release_buffer)(const struct camera2_stream_in_ops *w,
+ buffer_handle_t* buffer);
+
+} camera2_stream_in_ops_t;
+
+/**********************************************************************
+ *
+ * Metadata queue management, used for requests sent to HAL module, and for
+ * frames produced by the HAL.
+ *
+ */
+
+enum {
+ CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS = -1
+};
+
+/**
+ * Request input queue protocol:
+ *
+ * The framework holds the queue and its contents. At start, the queue is empty.
+ *
+ * 1. When the first metadata buffer is placed into the queue, the framework
+ * signals the device by calling notify_request_queue_not_empty().
+ *
+ * 2. After receiving notify_request_queue_not_empty, the device must call
+ * dequeue() once it's ready to handle the next buffer.
+ *
+ * 3. Once the device has processed a buffer, and is ready for the next buffer,
+ * it must call dequeue() again instead of waiting for a notification. If
+ * there are no more buffers available, dequeue() will return NULL. After
+ * this point, when a buffer becomes available, the framework must call
+ * notify_request_queue_not_empty() again. If the device receives a NULL
+ * return from dequeue, it does not need to query the queue again until a
+ * notify_request_queue_not_empty() call is received from the source.
+ *
+ * 4. If the device calls buffer_count() and receives 0, this does not mean that
+ * the framework will provide a notify_request_queue_not_empty() call. The
+ * framework will only provide such a notification after the device has
+ * received a NULL from dequeue, or on initial startup.
+ *
+ * 5. The dequeue() call in response to notify_request_queue_not_empty() may be
+ * on the same thread as the notify_request_queue_not_empty() call, and may
+ * be performed from within the notify call.
+ *
+ * 6. All dequeued request buffers must be returned to the framework by calling
+ * free_request, including when errors occur, a device flush is requested, or
+ * when the device is shutting down.
+ */
+typedef struct camera2_request_queue_src_ops {
+ /**
+ * Get the count of request buffers pending in the queue. May return
+ * CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS if a repeating request (stream
+ * request) is currently configured. Calling this method has no effect on
+ * whether the notify_request_queue_not_empty() method will be called by the
+ * framework.
+ */
+ int (*request_count)(const struct camera2_request_queue_src_ops *q);
+
+ /**
+ * Get a metadata buffer from the framework. Returns OK if there is no
+ * error. If the queue is empty, returns NULL in buffer. In that case, the
+ * device must wait for a notify_request_queue_not_empty() message before
+ * attempting to dequeue again. Buffers obtained in this way must be
+ * returned to the framework with free_request().
+ */
+ int (*dequeue_request)(const struct camera2_request_queue_src_ops *q,
+ camera_metadata_t **buffer);
+ /**
+ * Return a metadata buffer to the framework once it has been used, or if
+ * an error or shutdown occurs.
+ */
+ int (*free_request)(const struct camera2_request_queue_src_ops *q,
+ camera_metadata_t *old_buffer);
+
+} camera2_request_queue_src_ops_t;
+
+/**
+ * Frame output queue protocol:
+ *
+ * The framework holds the queue and its contents. At start, the queue is empty.
+ *
+ * 1. When the device is ready to fill an output metadata frame, it must dequeue
+ * a metadata buffer of the required size.
+ *
+ * 2. It should then fill the metadata buffer, and place it on the frame queue
+ * using enqueue_frame. The framework takes ownership of the frame.
+ *
+ * 3. In case of an error, a request to flush the pipeline, or shutdown, the
+ * device must return any affected dequeued frames to the framework by
+ * calling cancel_frame.
+ */
+typedef struct camera2_frame_queue_dst_ops {
+ /**
+ * Get an empty metadata buffer to fill from the framework. The new metadata
+ * buffer will have room for entries number of metadata entries, plus
+ * data_bytes worth of extra storage. Frames dequeued here must be returned
+ * to the framework with either cancel_frame or enqueue_frame.
+ */
+ int (*dequeue_frame)(const struct camera2_frame_queue_dst_ops *q,
+ size_t entries, size_t data_bytes,
+ camera_metadata_t **buffer);
+
+ /**
+ * Return a dequeued metadata buffer to the framework for reuse; do not mark it as
+ * filled. Use when encountering errors, or flushing the internal request queue.
+ */
+ int (*cancel_frame)(const struct camera2_frame_queue_dst_ops *q,
+ camera_metadata_t *buffer);
+
+ /**
+ * Place a completed metadata frame on the frame output queue.
+ */
+ int (*enqueue_frame)(const struct camera2_frame_queue_dst_ops *q,
+ camera_metadata_t *buffer);
+
+} camera2_frame_queue_dst_ops_t;
+
+/**********************************************************************
+ *
+ * Notification callback and message definition, and trigger definitions
+ *
+ */
+
+/**
+ * Asynchronous notification callback from the HAL, fired for various
+ * reasons. Only for information independent of frame capture, or that require
+ * specific timing. The user pointer must be the same one that was passed to the
+ * device in set_notify_callback().
+ */
+typedef void (*camera2_notify_callback)(int32_t msg_type,
+ int32_t ext1,
+ int32_t ext2,
+ int32_t ext3,
+ void *user);
+
+/**
+ * Possible message types for camera2_notify_callback
+ */
+enum {
+ /**
+ * An error has occurred. Argument ext1 contains the error code, and
+ * ext2 and ext3 contain any error-specific information.
+ */
+ CAMERA2_MSG_ERROR = 0x0001,
+ /**
+ * The exposure of a given request has begun. Argument ext1 contains the
+ * frame number, and ext2 and ext3 contain the low-order and high-order
+ * bytes of the timestamp for when exposure began.
+ * (timestamp = (ext3 << 32 | ext2))
+ */
+ CAMERA2_MSG_SHUTTER = 0x0010,
+ /**
+ * The autofocus routine has changed state. Argument ext1 contains the new
+ * state; the values are the same as those for the metadata field
+ * android.control.afState. Ext2 contains the latest trigger ID passed to
+ * trigger_action(CAMERA2_TRIGGER_AUTOFOCUS) or
+ * trigger_action(CAMERA2_TRIGGER_CANCEL_AUTOFOCUS), or 0 if trigger has not
+ * been called with either of those actions.
+ */
+ CAMERA2_MSG_AUTOFOCUS = 0x0020,
+ /**
+ * The autoexposure routine has changed state. Argument ext1 contains the
+ * new state; the values are the same as those for the metadata field
+ * android.control.aeState. Ext2 contains the latest trigger ID value passed to
+ * trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING), or 0 if that method
+ * has not been called.
+ */
+ CAMERA2_MSG_AUTOEXPOSURE = 0x0021,
+ /**
+ * The auto-whitebalance routine has changed state. Argument ext1 contains
+ * the new state; the values are the same as those for the metadata field
+ * android.control.awbState. Ext2 contains the latest trigger ID passed to
+ * trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING), or 0 if that method
+ * has not been called.
+ */
+ CAMERA2_MSG_AUTOWB = 0x0022
+};
+
+/**
+ * Error codes for CAMERA_MSG_ERROR
+ */
+enum {
+ /**
+ * A serious failure occured. Camera device may not work without reboot, and
+ * no further frames or buffer streams will be produced by the
+ * device. Device should be treated as closed.
+ */
+ CAMERA2_MSG_ERROR_HARDWARE = 0x0001,
+ /**
+ * A serious failure occured. No further frames or buffer streams will be
+ * produced by the device. Device should be treated as closed. The client
+ * must reopen the device to use it again.
+ */
+ CAMERA2_MSG_ERROR_DEVICE,
+ /**
+ * An error has occurred in processing a request. No output (metadata or
+ * buffers) will be produced for this request. ext2 contains the frame
+ * number of the request. Subsequent requests are unaffected, and the device
+ * remains operational.
+ */
+ CAMERA2_MSG_ERROR_REQUEST,
+ /**
+ * An error has occurred in producing an output frame metadata buffer for a
+ * request, but image buffers for it will still be available. Subsequent
+ * requests are unaffected, and the device remains operational. ext2
+ * contains the frame number of the request.
+ */
+ CAMERA2_MSG_ERROR_FRAME,
+ /**
+ * An error has occurred in placing an output buffer into a stream for a
+ * request. The frame metadata and other buffers may still be
+ * available. Subsequent requests are unaffected, and the device remains
+ * operational. ext2 contains the frame number of the request, and ext3
+ * contains the stream id.
+ */
+ CAMERA2_MSG_ERROR_STREAM,
+ /**
+ * Number of error types
+ */
+ CAMERA2_MSG_NUM_ERRORS
+};
+
+/**
+ * Possible trigger ids for trigger_action()
+ */
+enum {
+ /**
+ * Trigger an autofocus cycle. The effect of the trigger depends on the
+ * autofocus mode in effect when the trigger is received, which is the mode
+ * listed in the latest capture request to be dequeued by the HAL. If the
+ * mode is OFF, EDOF, or FIXED, the trigger has no effect. In AUTO, MACRO,
+ * or CONTINUOUS_* modes, see below for the expected behavior. The state of
+ * the autofocus cycle can be tracked in android.control.afMode and the
+ * corresponding notifications.
+ *
+ **
+ * In AUTO or MACRO mode, the AF state transitions (and notifications)
+ * when calling with trigger ID = N with the previous ID being K are:
+ *
+ * Initial state Transitions
+ * INACTIVE (K) -> ACTIVE_SCAN (N) -> AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * AF_FOCUSED (K) -> ACTIVE_SCAN (N) -> AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * AF_NOT_FOCUSED (K) -> ACTIVE_SCAN (N) -> AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * ACTIVE_SCAN (K) -> AF_FOCUSED(N) or AF_NOT_FOCUSED(N)
+ * PASSIVE_SCAN (K) Not used in AUTO/MACRO mode
+ * PASSIVE_FOCUSED (K) Not used in AUTO/MACRO mode
+ *
+ **
+ * In CONTINUOUS_PICTURE mode, triggering AF must lock the AF to the current
+ * lens position and transition the AF state to either AF_FOCUSED or
+ * NOT_FOCUSED. If a passive scan is underway, that scan must complete and
+ * then lock the lens position and change AF state. TRIGGER_CANCEL_AUTOFOCUS
+ * will allow the AF to restart its operation.
+ *
+ * Initial state Transitions
+ * INACTIVE (K) -> immediate AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * PASSIVE_FOCUSED (K) -> immediate AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * PASSIVE_SCAN (K) -> AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * AF_FOCUSED (K) no effect except to change next notification ID to N
+ * AF_NOT_FOCUSED (K) no effect except to change next notification ID to N
+ *
+ **
+ * In CONTINUOUS_VIDEO mode, triggering AF must lock the AF to the current
+ * lens position and transition the AF state to either AF_FOCUSED or
+ * NOT_FOCUSED. If a passive scan is underway, it must immediately halt, in
+ * contrast with CONTINUOUS_PICTURE mode. TRIGGER_CANCEL_AUTOFOCUS will
+ * allow the AF to restart its operation.
+ *
+ * Initial state Transitions
+ * INACTIVE (K) -> immediate AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * PASSIVE_FOCUSED (K) -> immediate AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * PASSIVE_SCAN (K) -> immediate AF_FOCUSED (N) or AF_NOT_FOCUSED (N)
+ * AF_FOCUSED (K) no effect except to change next notification ID to N
+ * AF_NOT_FOCUSED (K) no effect except to change next notification ID to N
+ *
+ * Ext1 is an ID that must be returned in subsequent auto-focus state change
+ * notifications through camera2_notify_callback() and stored in
+ * android.control.afTriggerId.
+ */
+ CAMERA2_TRIGGER_AUTOFOCUS = 0x0001,
+ /**
+ * Send a cancel message to the autofocus algorithm. The effect of the
+ * cancellation depends on the autofocus mode in effect when the trigger is
+ * received, which is the mode listed in the latest capture request to be
+ * dequeued by the HAL. If the AF mode is OFF or EDOF, the cancel has no
+ * effect. For other modes, the lens should return to its default position,
+ * any current autofocus scan must be canceled, and the AF state should be
+ * set to INACTIVE.
+ *
+ * The state of the autofocus cycle can be tracked in android.control.afMode
+ * and the corresponding notification. Continuous autofocus modes may resume
+ * focusing operations thereafter exactly as if the camera had just been set
+ * to a continuous AF mode.
+ *
+ * Ext1 is an ID that must be returned in subsequent auto-focus state change
+ * notifications through camera2_notify_callback() and stored in
+ * android.control.afTriggerId.
+ */
+ CAMERA2_TRIGGER_CANCEL_AUTOFOCUS,
+ /**
+ * Trigger a pre-capture metering cycle, which may include firing the flash
+ * to determine proper capture parameters. Typically, this trigger would be
+ * fired for a half-depress of a camera shutter key, or before a snapshot
+ * capture in general. The state of the metering cycle can be tracked in
+ * android.control.aeMode and the corresponding notification. If the
+ * auto-exposure mode is OFF, the trigger does nothing.
+ *
+ * Ext1 is an ID that must be returned in subsequent
+ * auto-exposure/auto-white balance state change notifications through
+ * camera2_notify_callback() and stored in android.control.aePrecaptureId.
+ */
+ CAMERA2_TRIGGER_PRECAPTURE_METERING
+};
+
+/**
+ * Possible template types for construct_default_request()
+ */
+enum {
+ /**
+ * Standard camera preview operation with 3A on auto.
+ */
+ CAMERA2_TEMPLATE_PREVIEW = 1,
+ /**
+ * Standard camera high-quality still capture with 3A and flash on auto.
+ */
+ CAMERA2_TEMPLATE_STILL_CAPTURE,
+ /**
+ * Standard video recording plus preview with 3A on auto, torch off.
+ */
+ CAMERA2_TEMPLATE_VIDEO_RECORD,
+ /**
+ * High-quality still capture while recording video. Application will
+ * include preview, video record, and full-resolution YUV or JPEG streams in
+ * request. Must not cause stuttering on video stream. 3A on auto.
+ */
+ CAMERA2_TEMPLATE_VIDEO_SNAPSHOT,
+ /**
+ * Zero-shutter-lag mode. Application will request preview and
+ * full-resolution data for each frame, and reprocess it to JPEG when a
+ * still image is requested by user. Settings should provide highest-quality
+ * full-resolution images without compromising preview frame rate. 3A on
+ * auto.
+ */
+ CAMERA2_TEMPLATE_ZERO_SHUTTER_LAG,
+
+ /* Total number of templates */
+ CAMERA2_TEMPLATE_COUNT
+};
+
+
+/**********************************************************************
+ *
+ * Camera device operations
+ *
+ */
+typedef struct camera2_device_ops {
+
+ /**********************************************************************
+ * Request and frame queue setup and management methods
+ */
+
+ /**
+ * Pass in input request queue interface methods.
+ */
+ int (*set_request_queue_src_ops)(const struct camera2_device *,
+ const camera2_request_queue_src_ops_t *request_src_ops);
+
+ /**
+ * Notify device that the request queue is no longer empty. Must only be
+ * called when the first buffer is added a new queue, or after the source
+ * has returned NULL in response to a dequeue call.
+ */
+ int (*notify_request_queue_not_empty)(const struct camera2_device *);
+
+ /**
+ * Pass in output frame queue interface methods
+ */
+ int (*set_frame_queue_dst_ops)(const struct camera2_device *,
+ const camera2_frame_queue_dst_ops_t *frame_dst_ops);
+
+ /**
+ * Number of camera requests being processed by the device at the moment
+ * (captures/reprocesses that have had their request dequeued, but have not
+ * yet been enqueued onto output pipeline(s) ). No streams may be released
+ * by the framework until the in-progress count is 0.
+ */
+ int (*get_in_progress_count)(const struct camera2_device *);
+
+ /**
+ * Flush all in-progress captures. This includes all dequeued requests
+ * (regular or reprocessing) that have not yet placed any outputs into a
+ * stream or the frame queue. Partially completed captures must be completed
+ * normally. No new requests may be dequeued from the request queue until
+ * the flush completes.
+ */
+ int (*flush_captures_in_progress)(const struct camera2_device *);
+
+ /**
+ * Create a filled-in default request for standard camera use cases.
+ *
+ * The device must return a complete request that is configured to meet the
+ * requested use case, which must be one of the CAMERA2_TEMPLATE_*
+ * enums. All request control fields must be included, except for
+ * android.request.outputStreams.
+ *
+ * The metadata buffer returned must be allocated with
+ * allocate_camera_metadata. The framework takes ownership of the buffer.
+ */
+ int (*construct_default_request)(const struct camera2_device *,
+ int request_template,
+ camera_metadata_t **request);
+
+ /**********************************************************************
+ * Stream management
+ */
+
+ /**
+ * allocate_stream:
+ *
+ * Allocate a new output stream for use, defined by the output buffer width,
+ * height, target, and possibly the pixel format. Returns the new stream's
+ * ID, gralloc usage flags, minimum queue buffer count, and possibly the
+ * pixel format, on success. Error conditions:
+ *
+ * - Requesting a width/height/format combination not listed as
+ * supported by the sensor's static characteristics
+ *
+ * - Asking for too many streams of a given format type (2 bayer raw
+ * streams, for example).
+ *
+ * Input parameters:
+ *
+ * - width, height, format: Specification for the buffers to be sent through
+ * this stream. Format is a value from the HAL_PIXEL_FORMAT_* list. If
+ * HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED is used, then the platform
+ * gralloc module will select a format based on the usage flags provided
+ * by the camera HAL and the consumer of the stream. The camera HAL should
+ * inspect the buffers handed to it in the register_stream_buffers call to
+ * obtain the implementation-specific format if necessary.
+ *
+ * - stream_ops: A structure of function pointers for obtaining and queuing
+ * up buffers for this stream. The underlying stream will be configured
+ * based on the usage and max_buffers outputs. The methods in this
+ * structure may not be called until after allocate_stream returns.
+ *
+ * Output parameters:
+ *
+ * - stream_id: An unsigned integer identifying this stream. This value is
+ * used in incoming requests to identify the stream, and in releasing the
+ * stream.
+ *
+ * - usage: The gralloc usage mask needed by the HAL device for producing
+ * the requested type of data. This is used in allocating new gralloc
+ * buffers for the stream buffer queue.
+ *
+ * - max_buffers: The maximum number of buffers the HAL device may need to
+ * have dequeued at the same time. The device may not dequeue more buffers
+ * than this value at the same time.
+ *
+ */
+ int (*allocate_stream)(
+ const struct camera2_device *,
+ // inputs
+ uint32_t width,
+ uint32_t height,
+ int format,
+ const camera2_stream_ops_t *stream_ops,
+ // outputs
+ uint32_t *stream_id,
+ uint32_t *format_actual, // IGNORED, will be removed
+ uint32_t *usage,
+ uint32_t *max_buffers);
+
+ /**
+ * Register buffers for a given stream. This is called after a successful
+ * allocate_stream call, and before the first request referencing the stream
+ * is enqueued. This method is intended to allow the HAL device to map or
+ * otherwise prepare the buffers for later use. num_buffers is guaranteed to
+ * be at least max_buffers (from allocate_stream), but may be larger. The
+ * buffers will already be locked for use. At the end of the call, all the
+ * buffers must be ready to be returned to the queue. If the stream format
+ * was set to HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, the camera HAL should
+ * inspect the passed-in buffers here to determine any platform-private
+ * pixel format information.
+ */
+ int (*register_stream_buffers)(
+ const struct camera2_device *,
+ uint32_t stream_id,
+ int num_buffers,
+ buffer_handle_t *buffers);
+
+ /**
+ * Release a stream. Returns an error if called when get_in_progress_count
+ * is non-zero, or if the stream id is invalid.
+ */
+ int (*release_stream)(
+ const struct camera2_device *,
+ uint32_t stream_id);
+
+ /**
+ * allocate_reprocess_stream:
+ *
+ * Allocate a new input stream for use, defined by the output buffer width,
+ * height, and the pixel format. Returns the new stream's ID, gralloc usage
+ * flags, and required simultaneously acquirable buffer count, on
+ * success. Error conditions:
+ *
+ * - Requesting a width/height/format combination not listed as
+ * supported by the sensor's static characteristics
+ *
+ * - Asking for too many reprocessing streams to be configured at once.
+ *
+ * Input parameters:
+ *
+ * - width, height, format: Specification for the buffers to be sent through
+ * this stream. Format must be a value from the HAL_PIXEL_FORMAT_* list.
+ *
+ * - reprocess_stream_ops: A structure of function pointers for acquiring
+ * and releasing buffers for this stream. The underlying stream will be
+ * configured based on the usage and max_buffers outputs.
+ *
+ * Output parameters:
+ *
+ * - stream_id: An unsigned integer identifying this stream. This value is
+ * used in incoming requests to identify the stream, and in releasing the
+ * stream. These ids are numbered separately from the input stream ids.
+ *
+ * - consumer_usage: The gralloc usage mask needed by the HAL device for
+ * consuming the requested type of data. This is used in allocating new
+ * gralloc buffers for the stream buffer queue.
+ *
+ * - max_buffers: The maximum number of buffers the HAL device may need to
+ * have acquired at the same time. The device may not have more buffers
+ * acquired at the same time than this value.
+ *
+ */
+ int (*allocate_reprocess_stream)(const struct camera2_device *,
+ uint32_t width,
+ uint32_t height,
+ uint32_t format,
+ const camera2_stream_in_ops_t *reprocess_stream_ops,
+ // outputs
+ uint32_t *stream_id,
+ uint32_t *consumer_usage,
+ uint32_t *max_buffers);
+
+ /**
+ * allocate_reprocess_stream_from_stream:
+ *
+ * Allocate a new input stream for use, which will use the buffers allocated
+ * for an existing output stream. That is, after the HAL enqueues a buffer
+ * onto the output stream, it may see that same buffer handed to it from
+ * this input reprocessing stream. After the HAL releases the buffer back to
+ * the reprocessing stream, it will be returned to the output queue for
+ * reuse.
+ *
+ * Error conditions:
+ *
+ * - Using an output stream of unsuitable size/format for the basis of the
+ * reprocessing stream.
+ *
+ * - Attempting to allocatee too many reprocessing streams at once.
+ *
+ * Input parameters:
+ *
+ * - output_stream_id: The ID of an existing output stream which has
+ * a size and format suitable for reprocessing.
+ *
+ * - reprocess_stream_ops: A structure of function pointers for acquiring
+ * and releasing buffers for this stream. The underlying stream will use
+ * the same graphics buffer handles as the output stream uses.
+ *
+ * Output parameters:
+ *
+ * - stream_id: An unsigned integer identifying this stream. This value is
+ * used in incoming requests to identify the stream, and in releasing the
+ * stream. These ids are numbered separately from the input stream ids.
+ *
+ * The HAL client must always release the reprocessing stream before it
+ * releases the output stream it is based on.
+ *
+ */
+ int (*allocate_reprocess_stream_from_stream)(const struct camera2_device *,
+ uint32_t output_stream_id,
+ const camera2_stream_in_ops_t *reprocess_stream_ops,
+ // outputs
+ uint32_t *stream_id);
+
+ /**
+ * Release a reprocessing stream. Returns an error if called when
+ * get_in_progress_count is non-zero, or if the stream id is not
+ * valid.
+ */
+ int (*release_reprocess_stream)(
+ const struct camera2_device *,
+ uint32_t stream_id);
+
+ /**********************************************************************
+ * Miscellaneous methods
+ */
+
+ /**
+ * Trigger asynchronous activity. This is used for triggering special
+ * behaviors of the camera 3A routines when they are in use. See the
+ * documentation for CAMERA2_TRIGGER_* above for details of the trigger ids
+ * and their arguments.
+ */
+ int (*trigger_action)(const struct camera2_device *,
+ uint32_t trigger_id,
+ int32_t ext1,
+ int32_t ext2);
+
+ /**
+ * Notification callback setup
+ */
+ int (*set_notify_callback)(const struct camera2_device *,
+ camera2_notify_callback notify_cb,
+ void *user);
+
+ /**
+ * Get methods to query for vendor extension metadata tag infomation. May
+ * set ops to NULL if no vendor extension tags are defined.
+ */
+ int (*get_metadata_vendor_tag_ops)(const struct camera2_device*,
+ vendor_tag_query_ops_t **ops);
+
+ /**
+ * Dump state of the camera hardware
+ */
+ int (*dump)(const struct camera2_device *, int fd);
+
+ /**
+ * Get device-instance-specific metadata. This metadata must be constant for
+ * a single instance of the camera device, but may be different between
+ * open() calls. The returned camera_metadata pointer must be valid until
+ * the device close() method is called.
+ *
+ * Version information:
+ *
+ * CAMERA_DEVICE_API_VERSION_2_0:
+ *
+ * Not available. Framework may not access this function pointer.
+ *
+ * CAMERA_DEVICE_API_VERSION_2_1:
+ *
+ * Valid. Can be called by the framework.
+ *
+ */
+ int (*get_instance_metadata)(const struct camera2_device *,
+ camera_metadata **instance_metadata);
+
+} camera2_device_ops_t;
+
+/**********************************************************************
+ *
+ * Camera device definition
+ *
+ */
+typedef struct camera2_device {
+ /**
+ * common.version must equal CAMERA_DEVICE_API_VERSION_2_0 to identify
+ * this device as implementing version 2.0 of the camera device HAL.
+ */
+ hw_device_t common;
+ camera2_device_ops_t *ops;
+ void *priv;
+} camera2_device_t;
+
+__END_DECLS
+
+#endif /* #ifdef ANDROID_INCLUDE_CAMERA2_H */
diff --git a/android/android-emugl/guest/hardware/camera3.h b/android/android-emugl/guest/hardware/camera3.h
new file mode 100644
index 0000000000..cec2ab3cee
--- /dev/null
+++ b/android/android-emugl/guest/hardware/camera3.h
@@ -0,0 +1,3121 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_CAMERA3_H
+#define ANDROID_INCLUDE_CAMERA3_H
+
+#include <system/camera_metadata.h>
+#include "camera_common.h"
+
+/**
+ * Camera device HAL 3.4 [ CAMERA_DEVICE_API_VERSION_3_4 ]
+ *
+ * This is the current recommended version of the camera device HAL.
+ *
+ * Supports the android.hardware.Camera API, and as of v3.2, the
+ * android.hardware.camera2 API as LIMITED or above hardware level.
+ *
+ * Camera devices that support this version of the HAL must return
+ * CAMERA_DEVICE_API_VERSION_3_4 in camera_device_t.common.version and in
+ * camera_info_t.device_version (from camera_module_t.get_camera_info).
+ *
+ * CAMERA_DEVICE_API_VERSION_3_3 and above:
+ * Camera modules that may contain version 3.3 or above devices must
+ * implement at least version 2.2 of the camera module interface (as defined
+ * by camera_module_t.common.module_api_version).
+ *
+ * CAMERA_DEVICE_API_VERSION_3_2:
+ * Camera modules that may contain version 3.2 devices must implement at
+ * least version 2.2 of the camera module interface (as defined by
+ * camera_module_t.common.module_api_version).
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ * Camera modules that may contain version 3.1 (or 3.0) devices must
+ * implement at least version 2.0 of the camera module interface
+ * (as defined by camera_module_t.common.module_api_version).
+ *
+ * See camera_common.h for more versioning details.
+ *
+ * Documentation index:
+ * S1. Version history
+ * S2. Startup and operation sequencing
+ * S3. Operational modes
+ * S4. 3A modes and state machines
+ * S5. Cropping
+ * S6. Error management
+ * S7. Key Performance Indicator (KPI) glossary
+ * S8. Sample Use Cases
+ * S9. Notes on Controls and Metadata
+ * S10. Reprocessing flow and controls
+ */
+
+/**
+ * S1. Version history:
+ *
+ * 1.0: Initial Android camera HAL (Android 4.0) [camera.h]:
+ *
+ * - Converted from C++ CameraHardwareInterface abstraction layer.
+ *
+ * - Supports android.hardware.Camera API.
+ *
+ * 2.0: Initial release of expanded-capability HAL (Android 4.2) [camera2.h]:
+ *
+ * - Sufficient for implementing existing android.hardware.Camera API.
+ *
+ * - Allows for ZSL queue in camera service layer
+ *
+ * - Not tested for any new features such manual capture control, Bayer RAW
+ * capture, reprocessing of RAW data.
+ *
+ * 3.0: First revision of expanded-capability HAL:
+ *
+ * - Major version change since the ABI is completely different. No change to
+ * the required hardware capabilities or operational model from 2.0.
+ *
+ * - Reworked input request and stream queue interfaces: Framework calls into
+ * HAL with next request and stream buffers already dequeued. Sync framework
+ * support is included, necessary for efficient implementations.
+ *
+ * - Moved triggers into requests, most notifications into results.
+ *
+ * - Consolidated all callbacks into framework into one structure, and all
+ * setup methods into a single initialize() call.
+ *
+ * - Made stream configuration into a single call to simplify stream
+ * management. Bidirectional streams replace STREAM_FROM_STREAM construct.
+ *
+ * - Limited mode semantics for older/limited hardware devices.
+ *
+ * 3.1: Minor revision of expanded-capability HAL:
+ *
+ * - configure_streams passes consumer usage flags to the HAL.
+ *
+ * - flush call to drop all in-flight requests/buffers as fast as possible.
+ *
+ * 3.2: Minor revision of expanded-capability HAL:
+ *
+ * - Deprecates get_metadata_vendor_tag_ops. Please use get_vendor_tag_ops
+ * in camera_common.h instead.
+ *
+ * - register_stream_buffers deprecated. All gralloc buffers provided
+ * by framework to HAL in process_capture_request may be new at any time.
+ *
+ * - add partial result support. process_capture_result may be called
+ * multiple times with a subset of the available result before the full
+ * result is available.
+ *
+ * - add manual template to camera3_request_template. The applications may
+ * use this template to control the capture settings directly.
+ *
+ * - Rework the bidirectional and input stream specifications.
+ *
+ * - change the input buffer return path. The buffer is returned in
+ * process_capture_result instead of process_capture_request.
+ *
+ * 3.3: Minor revision of expanded-capability HAL:
+ *
+ * - OPAQUE and YUV reprocessing API updates.
+ *
+ * - Basic support for depth output buffers.
+ *
+ * - Addition of data_space field to camera3_stream_t.
+ *
+ * - Addition of rotation field to camera3_stream_t.
+ *
+ * - Addition of camera3 stream configuration operation mode to camera3_stream_configuration_t
+ *
+ * 3.4: Minor additions to supported metadata and changes to data_space support
+ *
+ * - Add ANDROID_SENSOR_OPAQUE_RAW_SIZE static metadata as mandatory if
+ * RAW_OPAQUE format is supported.
+ *
+ * - Add ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE static metadata as
+ * mandatory if any RAW format is supported
+ *
+ * - Switch camera3_stream_t data_space field to a more flexible definition,
+ * using the version 0 definition of dataspace encoding.
+ *
+ * - General metadata additions which are available to use for HALv3.2 or
+ * newer:
+ * - ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
+ * - ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
+ * - ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
+ * - ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
+ * - ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
+ * - ANDROID_SENSOR_OPAQUE_RAW_SIZE
+ * - ANDROID_SENSOR_OPTICAL_BLACK_REGIONS
+ */
+
+/**
+ * S2. Startup and general expected operation sequence:
+ *
+ * 1. Framework calls camera_module_t->common.open(), which returns a
+ * hardware_device_t structure.
+ *
+ * 2. Framework inspects the hardware_device_t->version field, and instantiates
+ * the appropriate handler for that version of the camera hardware device. In
+ * case the version is CAMERA_DEVICE_API_VERSION_3_0, the device is cast to
+ * a camera3_device_t.
+ *
+ * 3. Framework calls camera3_device_t->ops->initialize() with the framework
+ * callback function pointers. This will only be called this one time after
+ * open(), before any other functions in the ops structure are called.
+ *
+ * 4. The framework calls camera3_device_t->ops->configure_streams() with a list
+ * of input/output streams to the HAL device.
+ *
+ * 5. <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * The framework allocates gralloc buffers and calls
+ * camera3_device_t->ops->register_stream_buffers() for at least one of the
+ * output streams listed in configure_streams. The same stream is registered
+ * only once.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * camera3_device_t->ops->register_stream_buffers() is not called and must
+ * be NULL.
+ *
+ * 6. The framework requests default settings for some number of use cases with
+ * calls to camera3_device_t->ops->construct_default_request_settings(). This
+ * may occur any time after step 3.
+ *
+ * 7. The framework constructs and sends the first capture request to the HAL,
+ * with settings based on one of the sets of default settings, and with at
+ * least one output stream, which has been registered earlier by the
+ * framework. This is sent to the HAL with
+ * camera3_device_t->ops->process_capture_request(). The HAL must block the
+ * return of this call until it is ready for the next request to be sent.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The buffer_handle_t provided in the camera3_stream_buffer_t array
+ * in the camera3_capture_request_t may be new and never-before-seen
+ * by the HAL on any given new request.
+ *
+ * 8. The framework continues to submit requests, and call
+ * construct_default_request_settings to get default settings buffers for
+ * other use cases.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * The framework may call register_stream_buffers() at this time for
+ * not-yet-registered streams.
+ *
+ * 9. When the capture of a request begins (sensor starts exposing for the
+ * capture) or processing a reprocess request begins, the HAL
+ * calls camera3_callback_ops_t->notify() with the SHUTTER event, including
+ * the frame number and the timestamp for start of exposure. For a reprocess
+ * request, the timestamp must be the start of exposure of the input image
+ * which can be looked up with android.sensor.timestamp from
+ * camera3_capture_request_t.settings when process_capture_request() is
+ * called.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * This notify call must be made before the first call to
+ * process_capture_result() for that frame number.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The camera3_callback_ops_t->notify() call with the SHUTTER event should
+ * be made as early as possible since the framework will be unable to
+ * deliver gralloc buffers to the application layer (for that frame) until
+ * it has a valid timestamp for the start of exposure (or the input image's
+ * start of exposure for a reprocess request).
+ *
+ * Both partial metadata results and the gralloc buffers may be sent to the
+ * framework at any time before or after the SHUTTER event.
+ *
+ * 10. After some pipeline delay, the HAL begins to return completed captures to
+ * the framework with camera3_callback_ops_t->process_capture_result(). These
+ * are returned in the same order as the requests were submitted. Multiple
+ * requests can be in flight at once, depending on the pipeline depth of the
+ * camera HAL device.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Once a buffer is returned by process_capture_result as part of the
+ * camera3_stream_buffer_t array, and the fence specified by release_fence
+ * has been signaled (this is a no-op for -1 fences), the ownership of that
+ * buffer is considered to be transferred back to the framework. After that,
+ * the HAL must no longer retain that particular buffer, and the
+ * framework may clean up the memory for it immediately.
+ *
+ * process_capture_result may be called multiple times for a single frame,
+ * each time with a new disjoint piece of metadata and/or set of gralloc
+ * buffers. The framework will accumulate these partial metadata results
+ * into one result.
+ *
+ * In particular, it is legal for a process_capture_result to be called
+ * simultaneously for both a frame N and a frame N+1 as long as the
+ * above rule holds for gralloc buffers (both input and output).
+ *
+ * 11. After some time, the framework may stop submitting new requests, wait for
+ * the existing captures to complete (all buffers filled, all results
+ * returned), and then call configure_streams() again. This resets the camera
+ * hardware and pipeline for a new set of input/output streams. Some streams
+ * may be reused from the previous configuration; if these streams' buffers
+ * had already been registered with the HAL, they will not be registered
+ * again. The framework then continues from step 7, if at least one
+ * registered output stream remains (otherwise, step 5 is required first).
+ *
+ * 12. Alternatively, the framework may call camera3_device_t->common->close()
+ * to end the camera session. This may be called at any time when no other
+ * calls from the framework are active, although the call may block until all
+ * in-flight captures have completed (all results returned, all buffers
+ * filled). After the close call returns, no more calls to the
+ * camera3_callback_ops_t functions are allowed from the HAL. Once the
+ * close() call is underway, the framework may not call any other HAL device
+ * functions.
+ *
+ * 13. In case of an error or other asynchronous event, the HAL must call
+ * camera3_callback_ops_t->notify() with the appropriate error/event
+ * message. After returning from a fatal device-wide error notification, the
+ * HAL should act as if close() had been called on it. However, the HAL must
+ * either cancel or complete all outstanding captures before calling
+ * notify(), so that once notify() is called with a fatal error, the
+ * framework will not receive further callbacks from the device. Methods
+ * besides close() should return -ENODEV or NULL after the notify() method
+ * returns from a fatal error message.
+ */
+
+/**
+ * S3. Operational modes:
+ *
+ * The camera 3 HAL device can implement one of two possible operational modes;
+ * limited and full. Full support is expected from new higher-end
+ * devices. Limited mode has hardware requirements roughly in line with those
+ * for a camera HAL device v1 implementation, and is expected from older or
+ * inexpensive devices. Full is a strict superset of limited, and they share the
+ * same essential operational flow, as documented above.
+ *
+ * The HAL must indicate its level of support with the
+ * android.info.supportedHardwareLevel static metadata entry, with 0 indicating
+ * limited mode, and 1 indicating full mode support.
+ *
+ * Roughly speaking, limited-mode devices do not allow for application control
+ * of capture settings (3A control only), high-rate capture of high-resolution
+ * images, raw sensor readout, or support for YUV output streams above maximum
+ * recording resolution (JPEG only for large images).
+ *
+ * ** Details of limited mode behavior:
+ *
+ * - Limited-mode devices do not need to implement accurate synchronization
+ * between capture request settings and the actual image data
+ * captured. Instead, changes to settings may take effect some time in the
+ * future, and possibly not for the same output frame for each settings
+ * entry. Rapid changes in settings may result in some settings never being
+ * used for a capture. However, captures that include high-resolution output
+ * buffers ( > 1080p ) have to use the settings as specified (but see below
+ * for processing rate).
+ *
+ * - Limited-mode devices do not need to support most of the
+ * settings/result/static info metadata. Specifically, only the following settings
+ * are expected to be consumed or produced by a limited-mode HAL device:
+ *
+ * android.control.aeAntibandingMode (controls and dynamic)
+ * android.control.aeExposureCompensation (controls and dynamic)
+ * android.control.aeLock (controls and dynamic)
+ * android.control.aeMode (controls and dynamic)
+ * android.control.aeRegions (controls and dynamic)
+ * android.control.aeTargetFpsRange (controls and dynamic)
+ * android.control.aePrecaptureTrigger (controls and dynamic)
+ * android.control.afMode (controls and dynamic)
+ * android.control.afRegions (controls and dynamic)
+ * android.control.awbLock (controls and dynamic)
+ * android.control.awbMode (controls and dynamic)
+ * android.control.awbRegions (controls and dynamic)
+ * android.control.captureIntent (controls and dynamic)
+ * android.control.effectMode (controls and dynamic)
+ * android.control.mode (controls and dynamic)
+ * android.control.sceneMode (controls and dynamic)
+ * android.control.videoStabilizationMode (controls and dynamic)
+ * android.control.aeAvailableAntibandingModes (static)
+ * android.control.aeAvailableModes (static)
+ * android.control.aeAvailableTargetFpsRanges (static)
+ * android.control.aeCompensationRange (static)
+ * android.control.aeCompensationStep (static)
+ * android.control.afAvailableModes (static)
+ * android.control.availableEffects (static)
+ * android.control.availableSceneModes (static)
+ * android.control.availableVideoStabilizationModes (static)
+ * android.control.awbAvailableModes (static)
+ * android.control.maxRegions (static)
+ * android.control.sceneModeOverrides (static)
+ * android.control.aeState (dynamic)
+ * android.control.afState (dynamic)
+ * android.control.awbState (dynamic)
+ *
+ * android.flash.mode (controls and dynamic)
+ * android.flash.info.available (static)
+ *
+ * android.info.supportedHardwareLevel (static)
+ *
+ * android.jpeg.gpsCoordinates (controls and dynamic)
+ * android.jpeg.gpsProcessingMethod (controls and dynamic)
+ * android.jpeg.gpsTimestamp (controls and dynamic)
+ * android.jpeg.orientation (controls and dynamic)
+ * android.jpeg.quality (controls and dynamic)
+ * android.jpeg.thumbnailQuality (controls and dynamic)
+ * android.jpeg.thumbnailSize (controls and dynamic)
+ * android.jpeg.availableThumbnailSizes (static)
+ * android.jpeg.maxSize (static)
+ *
+ * android.lens.info.minimumFocusDistance (static)
+ *
+ * android.request.id (controls and dynamic)
+ *
+ * android.scaler.cropRegion (controls and dynamic)
+ * android.scaler.availableStreamConfigurations (static)
+ * android.scaler.availableMinFrameDurations (static)
+ * android.scaler.availableStallDurations (static)
+ * android.scaler.availableMaxDigitalZoom (static)
+ * android.scaler.maxDigitalZoom (static)
+ * android.scaler.croppingType (static)
+ *
+ * android.sensor.orientation (static)
+ * android.sensor.timestamp (dynamic)
+ *
+ * android.statistics.faceDetectMode (controls and dynamic)
+ * android.statistics.info.availableFaceDetectModes (static)
+ * android.statistics.faceIds (dynamic)
+ * android.statistics.faceLandmarks (dynamic)
+ * android.statistics.faceRectangles (dynamic)
+ * android.statistics.faceScores (dynamic)
+ *
+ * android.sync.frameNumber (dynamic)
+ * android.sync.maxLatency (static)
+ *
+ * - Captures in limited mode that include high-resolution (> 1080p) output
+ * buffers may block in process_capture_request() until all the output buffers
+ * have been filled. A full-mode HAL device must process sequences of
+ * high-resolution requests at the rate indicated in the static metadata for
+ * that pixel format. The HAL must still call process_capture_result() to
+ * provide the output; the framework must simply be prepared for
+ * process_capture_request() to block until after process_capture_result() for
+ * that request completes for high-resolution captures for limited-mode
+ * devices.
+ *
+ * - Full-mode devices must support below additional capabilities:
+ * - 30fps at maximum resolution is preferred, more than 20fps is required.
+ * - Per frame control (android.sync.maxLatency == PER_FRAME_CONTROL).
+ * - Sensor manual control metadata. See MANUAL_SENSOR defined in
+ * android.request.availableCapabilities.
+ * - Post-processing manual control metadata. See MANUAL_POST_PROCESSING defined
+ * in android.request.availableCapabilities.
+ *
+ */
+
+/**
+ * S4. 3A modes and state machines:
+ *
+ * While the actual 3A algorithms are up to the HAL implementation, a high-level
+ * state machine description is defined by the HAL interface, to allow the HAL
+ * device and the framework to communicate about the current state of 3A, and to
+ * trigger 3A events.
+ *
+ * When the device is opened, all the individual 3A states must be
+ * STATE_INACTIVE. Stream configuration does not reset 3A. For example, locked
+ * focus must be maintained across the configure() call.
+ *
+ * Triggering a 3A action involves simply setting the relevant trigger entry in
+ * the settings for the next request to indicate start of trigger. For example,
+ * the trigger for starting an autofocus scan is setting the entry
+ * ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTROL_AF_TRIGGER_START for one
+ * request, and cancelling an autofocus scan is triggered by setting
+ * ANDROID_CONTROL_AF_TRIGGER to ANDROID_CONTRL_AF_TRIGGER_CANCEL. Otherwise,
+ * the entry will not exist, or be set to ANDROID_CONTROL_AF_TRIGGER_IDLE. Each
+ * request with a trigger entry set to a non-IDLE value will be treated as an
+ * independent triggering event.
+ *
+ * At the top level, 3A is controlled by the ANDROID_CONTROL_MODE setting, which
+ * selects between no 3A (ANDROID_CONTROL_MODE_OFF), normal AUTO mode
+ * (ANDROID_CONTROL_MODE_AUTO), and using the scene mode setting
+ * (ANDROID_CONTROL_USE_SCENE_MODE).
+ *
+ * - In OFF mode, each of the individual AE/AF/AWB modes are effectively OFF,
+ * and none of the capture controls may be overridden by the 3A routines.
+ *
+ * - In AUTO mode, Auto-focus, auto-exposure, and auto-whitebalance all run
+ * their own independent algorithms, and have their own mode, state, and
+ * trigger metadata entries, as listed in the next section.
+ *
+ * - In USE_SCENE_MODE, the value of the ANDROID_CONTROL_SCENE_MODE entry must
+ * be used to determine the behavior of 3A routines. In SCENE_MODEs other than
+ * FACE_PRIORITY, the HAL must override the values of
+ * ANDROId_CONTROL_AE/AWB/AF_MODE to be the mode it prefers for the selected
+ * SCENE_MODE. For example, the HAL may prefer SCENE_MODE_NIGHT to use
+ * CONTINUOUS_FOCUS AF mode. Any user selection of AE/AWB/AF_MODE when scene
+ * must be ignored for these scene modes.
+ *
+ * - For SCENE_MODE_FACE_PRIORITY, the AE/AWB/AF_MODE controls work as in
+ * ANDROID_CONTROL_MODE_AUTO, but the 3A routines must bias toward metering
+ * and focusing on any detected faces in the scene.
+ *
+ * S4.1. Auto-focus settings and result entries:
+ *
+ * Main metadata entries:
+ *
+ * ANDROID_CONTROL_AF_MODE: Control for selecting the current autofocus
+ * mode. Set by the framework in the request settings.
+ *
+ * AF_MODE_OFF: AF is disabled; the framework/app directly controls lens
+ * position.
+ *
+ * AF_MODE_AUTO: Single-sweep autofocus. No lens movement unless AF is
+ * triggered.
+ *
+ * AF_MODE_MACRO: Single-sweep up-close autofocus. No lens movement unless
+ * AF is triggered.
+ *
+ * AF_MODE_CONTINUOUS_VIDEO: Smooth continuous focusing, for recording
+ * video. Triggering immediately locks focus in current
+ * position. Canceling resumes cotinuous focusing.
+ *
+ * AF_MODE_CONTINUOUS_PICTURE: Fast continuous focusing, for
+ * zero-shutter-lag still capture. Triggering locks focus once currently
+ * active sweep concludes. Canceling resumes continuous focusing.
+ *
+ * AF_MODE_EDOF: Advanced extended depth of field focusing. There is no
+ * autofocus scan, so triggering one or canceling one has no effect.
+ * Images are focused automatically by the HAL.
+ *
+ * ANDROID_CONTROL_AF_STATE: Dynamic metadata describing the current AF
+ * algorithm state, reported by the HAL in the result metadata.
+ *
+ * AF_STATE_INACTIVE: No focusing has been done, or algorithm was
+ * reset. Lens is not moving. Always the state for MODE_OFF or MODE_EDOF.
+ * When the device is opened, it must start in this state.
+ *
+ * AF_STATE_PASSIVE_SCAN: A continuous focus algorithm is currently scanning
+ * for good focus. The lens is moving.
+ *
+ * AF_STATE_PASSIVE_FOCUSED: A continuous focus algorithm believes it is
+ * well focused. The lens is not moving. The HAL may spontaneously leave
+ * this state.
+ *
+ * AF_STATE_PASSIVE_UNFOCUSED: A continuous focus algorithm believes it is
+ * not well focused. The lens is not moving. The HAL may spontaneously
+ * leave this state.
+ *
+ * AF_STATE_ACTIVE_SCAN: A scan triggered by the user is underway.
+ *
+ * AF_STATE_FOCUSED_LOCKED: The AF algorithm believes it is focused. The
+ * lens is not moving.
+ *
+ * AF_STATE_NOT_FOCUSED_LOCKED: The AF algorithm has been unable to
+ * focus. The lens is not moving.
+ *
+ * ANDROID_CONTROL_AF_TRIGGER: Control for starting an autofocus scan, the
+ * meaning of which is mode- and state- dependent. Set by the framework in
+ * the request settings.
+ *
+ * AF_TRIGGER_IDLE: No current trigger.
+ *
+ * AF_TRIGGER_START: Trigger start of AF scan. Effect is mode and state
+ * dependent.
+ *
+ * AF_TRIGGER_CANCEL: Cancel current AF scan if any, and reset algorithm to
+ * default.
+ *
+ * Additional metadata entries:
+ *
+ * ANDROID_CONTROL_AF_REGIONS: Control for selecting the regions of the FOV
+ * that should be used to determine good focus. This applies to all AF
+ * modes that scan for focus. Set by the framework in the request
+ * settings.
+ *
+ * S4.2. Auto-exposure settings and result entries:
+ *
+ * Main metadata entries:
+ *
+ * ANDROID_CONTROL_AE_MODE: Control for selecting the current auto-exposure
+ * mode. Set by the framework in the request settings.
+ *
+ * AE_MODE_OFF: Autoexposure is disabled; the user controls exposure, gain,
+ * frame duration, and flash.
+ *
+ * AE_MODE_ON: Standard autoexposure, with flash control disabled. User may
+ * set flash to fire or to torch mode.
+ *
+ * AE_MODE_ON_AUTO_FLASH: Standard autoexposure, with flash on at HAL's
+ * discretion for precapture and still capture. User control of flash
+ * disabled.
+ *
+ * AE_MODE_ON_ALWAYS_FLASH: Standard autoexposure, with flash always fired
+ * for capture, and at HAL's discretion for precapture.. User control of
+ * flash disabled.
+ *
+ * AE_MODE_ON_AUTO_FLASH_REDEYE: Standard autoexposure, with flash on at
+ * HAL's discretion for precapture and still capture. Use a flash burst
+ * at end of precapture sequence to reduce redeye in the final
+ * picture. User control of flash disabled.
+ *
+ * ANDROID_CONTROL_AE_STATE: Dynamic metadata describing the current AE
+ * algorithm state, reported by the HAL in the result metadata.
+ *
+ * AE_STATE_INACTIVE: Initial AE state after mode switch. When the device is
+ * opened, it must start in this state.
+ *
+ * AE_STATE_SEARCHING: AE is not converged to a good value, and is adjusting
+ * exposure parameters.
+ *
+ * AE_STATE_CONVERGED: AE has found good exposure values for the current
+ * scene, and the exposure parameters are not changing. HAL may
+ * spontaneously leave this state to search for better solution.
+ *
+ * AE_STATE_LOCKED: AE has been locked with the AE_LOCK control. Exposure
+ * values are not changing.
+ *
+ * AE_STATE_FLASH_REQUIRED: The HAL has converged exposure, but believes
+ * flash is required for a sufficiently bright picture. Used for
+ * determining if a zero-shutter-lag frame can be used.
+ *
+ * AE_STATE_PRECAPTURE: The HAL is in the middle of a precapture
+ * sequence. Depending on AE mode, this mode may involve firing the
+ * flash for metering, or a burst of flash pulses for redeye reduction.
+ *
+ * ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER: Control for starting a metering
+ * sequence before capturing a high-quality image. Set by the framework in
+ * the request settings.
+ *
+ * PRECAPTURE_TRIGGER_IDLE: No current trigger.
+ *
+ * PRECAPTURE_TRIGGER_START: Start a precapture sequence. The HAL should
+ * use the subsequent requests to measure good exposure/white balance
+ * for an upcoming high-resolution capture.
+ *
+ * Additional metadata entries:
+ *
+ * ANDROID_CONTROL_AE_LOCK: Control for locking AE controls to their current
+ * values
+ *
+ * ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION: Control for adjusting AE
+ * algorithm target brightness point.
+ *
+ * ANDROID_CONTROL_AE_TARGET_FPS_RANGE: Control for selecting the target frame
+ * rate range for the AE algorithm. The AE routine cannot change the frame
+ * rate to be outside these bounds.
+ *
+ * ANDROID_CONTROL_AE_REGIONS: Control for selecting the regions of the FOV
+ * that should be used to determine good exposure levels. This applies to
+ * all AE modes besides OFF.
+ *
+ * S4.3. Auto-whitebalance settings and result entries:
+ *
+ * Main metadata entries:
+ *
+ * ANDROID_CONTROL_AWB_MODE: Control for selecting the current white-balance
+ * mode.
+ *
+ * AWB_MODE_OFF: Auto-whitebalance is disabled. User controls color matrix.
+ *
+ * AWB_MODE_AUTO: Automatic white balance is enabled; 3A controls color
+ * transform, possibly using more complex transforms than a simple
+ * matrix.
+ *
+ * AWB_MODE_INCANDESCENT: Fixed white balance settings good for indoor
+ * incandescent (tungsten) lighting, roughly 2700K.
+ *
+ * AWB_MODE_FLUORESCENT: Fixed white balance settings good for fluorescent
+ * lighting, roughly 5000K.
+ *
+ * AWB_MODE_WARM_FLUORESCENT: Fixed white balance settings good for
+ * fluorescent lighting, roughly 3000K.
+ *
+ * AWB_MODE_DAYLIGHT: Fixed white balance settings good for daylight,
+ * roughly 5500K.
+ *
+ * AWB_MODE_CLOUDY_DAYLIGHT: Fixed white balance settings good for clouded
+ * daylight, roughly 6500K.
+ *
+ * AWB_MODE_TWILIGHT: Fixed white balance settings good for
+ * near-sunset/sunrise, roughly 15000K.
+ *
+ * AWB_MODE_SHADE: Fixed white balance settings good for areas indirectly
+ * lit by the sun, roughly 7500K.
+ *
+ * ANDROID_CONTROL_AWB_STATE: Dynamic metadata describing the current AWB
+ * algorithm state, reported by the HAL in the result metadata.
+ *
+ * AWB_STATE_INACTIVE: Initial AWB state after mode switch. When the device
+ * is opened, it must start in this state.
+ *
+ * AWB_STATE_SEARCHING: AWB is not converged to a good value, and is
+ * changing color adjustment parameters.
+ *
+ * AWB_STATE_CONVERGED: AWB has found good color adjustment values for the
+ * current scene, and the parameters are not changing. HAL may
+ * spontaneously leave this state to search for better solution.
+ *
+ * AWB_STATE_LOCKED: AWB has been locked with the AWB_LOCK control. Color
+ * adjustment values are not changing.
+ *
+ * Additional metadata entries:
+ *
+ * ANDROID_CONTROL_AWB_LOCK: Control for locking AWB color adjustments to
+ * their current values.
+ *
+ * ANDROID_CONTROL_AWB_REGIONS: Control for selecting the regions of the FOV
+ * that should be used to determine good color balance. This applies only
+ * to auto-WB mode.
+ *
+ * S4.4. General state machine transition notes
+ *
+ * Switching between AF, AE, or AWB modes always resets the algorithm's state
+ * to INACTIVE. Similarly, switching between CONTROL_MODE or
+ * CONTROL_SCENE_MODE if CONTROL_MODE == USE_SCENE_MODE resets all the
+ * algorithm states to INACTIVE.
+ *
+ * The tables below are per-mode.
+ *
+ * S4.5. AF state machines
+ *
+ * when enabling AF or changing AF mode
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| Any | AF mode change| INACTIVE | |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AF_MODE_OFF or AF_MODE_EDOF
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | | INACTIVE | Never changes |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AF_MODE_AUTO or AF_MODE_MACRO
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | AF_TRIGGER | ACTIVE_SCAN | Start AF sweep |
+ *| | | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| ACTIVE_SCAN | AF sweep done | FOCUSED_LOCKED | If AF successful |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| ACTIVE_SCAN | AF sweep done | NOT_FOCUSED_LOCKED | If AF successful |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| ACTIVE_SCAN | AF_CANCEL | INACTIVE | Cancel/reset AF |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Cancel/reset AF |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_TRIGGER | ACTIVE_SCAN | Start new sweep |
+ *| | | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Cancel/reset AF |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_TRIGGER | ACTIVE_SCAN | Start new sweep |
+ *| | | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| All states | mode change | INACTIVE | |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AF_MODE_CONTINUOUS_VIDEO
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | AF_TRIGGER | NOT_FOCUSED_LOCKED | AF state query |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | HAL completes | PASSIVE_FOCUSED | End AF scan |
+ *| | current scan | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | HAL fails | PASSIVE_UNFOCUSED | End AF scan |
+ *| | current scan | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. |
+ *| | | | if focus is good |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. |
+ *| | | | if focus is bad |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_CANCEL | INACTIVE | Reset lens |
+ *| | | | position |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_FOCUSED | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_UNFOCUSED | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_FOCUSED | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_UNFOCUSED | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_TRIGGER | FOCUSED_LOCKED | No effect |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_TRIGGER | NOT_FOCUSED_LOCKED | No effect |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AF_MODE_CONTINUOUS_PICTURE
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | AF_TRIGGER | NOT_FOCUSED_LOCKED | AF state query |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | HAL completes | PASSIVE_FOCUSED | End AF scan |
+ *| | current scan | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | HAL fails | PASSIVE_UNFOCUSED | End AF scan |
+ *| | current scan | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_TRIGGER | FOCUSED_LOCKED | Eventual trans. |
+ *| | | | once focus good |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_TRIGGER | NOT_FOCUSED_LOCKED | Eventual trans. |
+ *| | | | if cannot focus |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_SCAN | AF_CANCEL | INACTIVE | Reset lens |
+ *| | | | position |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_FOCUSED | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_UNFOCUSED | HAL initiates | PASSIVE_SCAN | Start AF scan |
+ *| | new scan | | Lens now moving |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_FOCUSED | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PASSIVE_UNFOCUSED | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. |
+ *| | | | Lens now locked |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_TRIGGER | FOCUSED_LOCKED | No effect |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_TRIGGER | NOT_FOCUSED_LOCKED | No effect |
+ *+--------------------+---------------+--------------------+------------------+
+ *| NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * S4.6. AE and AWB state machines
+ *
+ * The AE and AWB state machines are mostly identical. AE has additional
+ * FLASH_REQUIRED and PRECAPTURE states. So rows below that refer to those two
+ * states should be ignored for the AWB state machine.
+ *
+ * when enabling AE/AWB or changing AE/AWB mode
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| Any | mode change | INACTIVE | |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AE_MODE_OFF / AWB mode not AUTO
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | | INACTIVE | AE/AWB disabled |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ * mode = AE_MODE_ON_* / AWB_MODE_AUTO
+ *| state | trans. cause | new state | notes |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | HAL initiates | SEARCHING | |
+ *| | AE/AWB scan | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| INACTIVE | AE/AWB_LOCK | LOCKED | values locked |
+ *| | on | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| SEARCHING | HAL finishes | CONVERGED | good values, not |
+ *| | AE/AWB scan | | changing |
+ *+--------------------+---------------+--------------------+------------------+
+ *| SEARCHING | HAL finishes | FLASH_REQUIRED | converged but too|
+ *| | AE scan | | dark w/o flash |
+ *+--------------------+---------------+--------------------+------------------+
+ *| SEARCHING | AE/AWB_LOCK | LOCKED | values locked |
+ *| | on | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| CONVERGED | HAL initiates | SEARCHING | values locked |
+ *| | AE/AWB scan | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| CONVERGED | AE/AWB_LOCK | LOCKED | values locked |
+ *| | on | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FLASH_REQUIRED | HAL initiates | SEARCHING | values locked |
+ *| | AE/AWB scan | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| FLASH_REQUIRED | AE/AWB_LOCK | LOCKED | values locked |
+ *| | on | | |
+ *+--------------------+---------------+--------------------+------------------+
+ *| LOCKED | AE/AWB_LOCK | SEARCHING | values not good |
+ *| | off | | after unlock |
+ *+--------------------+---------------+--------------------+------------------+
+ *| LOCKED | AE/AWB_LOCK | CONVERGED | values good |
+ *| | off | | after unlock |
+ *+--------------------+---------------+--------------------+------------------+
+ *| LOCKED | AE_LOCK | FLASH_REQUIRED | exposure good, |
+ *| | off | | but too dark |
+ *+--------------------+---------------+--------------------+------------------+
+ *| All AE states | PRECAPTURE_ | PRECAPTURE | Start precapture |
+ *| | START | | sequence |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PRECAPTURE | Sequence done.| CONVERGED | Ready for high- |
+ *| | AE_LOCK off | | quality capture |
+ *+--------------------+---------------+--------------------+------------------+
+ *| PRECAPTURE | Sequence done.| LOCKED | Ready for high- |
+ *| | AE_LOCK on | | quality capture |
+ *+--------------------+---------------+--------------------+------------------+
+ *
+ */
+
+/**
+ * S5. Cropping:
+ *
+ * Cropping of the full pixel array (for digital zoom and other use cases where
+ * a smaller FOV is desirable) is communicated through the
+ * ANDROID_SCALER_CROP_REGION setting. This is a per-request setting, and can
+ * change on a per-request basis, which is critical for implementing smooth
+ * digital zoom.
+ *
+ * The region is defined as a rectangle (x, y, width, height), with (x, y)
+ * describing the top-left corner of the rectangle. The rectangle is defined on
+ * the coordinate system of the sensor active pixel array, with (0,0) being the
+ * top-left pixel of the active pixel array. Therefore, the width and height
+ * cannot be larger than the dimensions reported in the
+ * ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY static info field. The minimum allowed
+ * width and height are reported by the HAL through the
+ * ANDROID_SCALER_MAX_DIGITAL_ZOOM static info field, which describes the
+ * maximum supported zoom factor. Therefore, the minimum crop region width and
+ * height are:
+ *
+ * {width, height} =
+ * { floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[0] /
+ * ANDROID_SCALER_MAX_DIGITAL_ZOOM),
+ * floor(ANDROID_SENSOR_ACTIVE_PIXEL_ARRAY[1] /
+ * ANDROID_SCALER_MAX_DIGITAL_ZOOM) }
+ *
+ * If the crop region needs to fulfill specific requirements (for example, it
+ * needs to start on even coordinates, and its width/height needs to be even),
+ * the HAL must do the necessary rounding and write out the final crop region
+ * used in the output result metadata. Similarly, if the HAL implements video
+ * stabilization, it must adjust the result crop region to describe the region
+ * actually included in the output after video stabilization is applied. In
+ * general, a camera-using application must be able to determine the field of
+ * view it is receiving based on the crop region, the dimensions of the image
+ * sensor, and the lens focal length.
+ *
+ * It is assumed that the cropping is applied after raw to other color space
+ * conversion. Raw streams (RAW16 and RAW_OPAQUE) don't have this conversion stage,
+ * and are not croppable. Therefore, the crop region must be ignored by the HAL
+ * for raw streams.
+ *
+ * Since the crop region applies to all non-raw streams, which may have different aspect
+ * ratios than the crop region, the exact sensor region used for each stream may
+ * be smaller than the crop region. Specifically, each stream should maintain
+ * square pixels and its aspect ratio by minimally further cropping the defined
+ * crop region. If the stream's aspect ratio is wider than the crop region, the
+ * stream should be further cropped vertically, and if the stream's aspect ratio
+ * is narrower than the crop region, the stream should be further cropped
+ * horizontally.
+ *
+ * In all cases, the stream crop must be centered within the full crop region,
+ * and each stream is only either cropped horizontally or vertical relative to
+ * the full crop region, never both.
+ *
+ * For example, if two streams are defined, a 640x480 stream (4:3 aspect), and a
+ * 1280x720 stream (16:9 aspect), below demonstrates the expected output regions
+ * for each stream for a few sample crop regions, on a hypothetical 3 MP (2000 x
+ * 1500 pixel array) sensor.
+ *
+ * Crop region: (500, 375, 1000, 750) (4:3 aspect ratio)
+ *
+ * 640x480 stream crop: (500, 375, 1000, 750) (equal to crop region)
+ * 1280x720 stream crop: (500, 469, 1000, 562) (marked with =)
+ *
+ * 0 1000 2000
+ * +---------+---------+---------+----------+
+ * | Active pixel array |
+ * | |
+ * | |
+ * + +-------------------+ + 375
+ * | | | |
+ * | O===================O |
+ * | I 1280x720 stream I |
+ * + I I + 750
+ * | I I |
+ * | O===================O |
+ * | | | |
+ * + +-------------------+ + 1125
+ * | Crop region, 640x480 stream |
+ * | |
+ * | |
+ * +---------+---------+---------+----------+ 1500
+ *
+ * Crop region: (500, 375, 1333, 750) (16:9 aspect ratio)
+ *
+ * 640x480 stream crop: (666, 375, 1000, 750) (marked with =)
+ * 1280x720 stream crop: (500, 375, 1333, 750) (equal to crop region)
+ *
+ * 0 1000 2000
+ * +---------+---------+---------+----------+
+ * | Active pixel array |
+ * | |
+ * | |
+ * + +---O==================O---+ + 375
+ * | | I 640x480 stream I | |
+ * | | I I | |
+ * | | I I | |
+ * + | I I | + 750
+ * | | I I | |
+ * | | I I | |
+ * | | I I | |
+ * + +---O==================O---+ + 1125
+ * | Crop region, 1280x720 stream |
+ * | |
+ * | |
+ * +---------+---------+---------+----------+ 1500
+ *
+ * Crop region: (500, 375, 750, 750) (1:1 aspect ratio)
+ *
+ * 640x480 stream crop: (500, 469, 750, 562) (marked with =)
+ * 1280x720 stream crop: (500, 543, 750, 414) (marged with #)
+ *
+ * 0 1000 2000
+ * +---------+---------+---------+----------+
+ * | Active pixel array |
+ * | |
+ * | |
+ * + +--------------+ + 375
+ * | O==============O |
+ * | ################ |
+ * | # # |
+ * + # # + 750
+ * | # # |
+ * | ################ 1280x720 |
+ * | O==============O 640x480 |
+ * + +--------------+ + 1125
+ * | Crop region |
+ * | |
+ * | |
+ * +---------+---------+---------+----------+ 1500
+ *
+ * And a final example, a 1024x1024 square aspect ratio stream instead of the
+ * 480p stream:
+ *
+ * Crop region: (500, 375, 1000, 750) (4:3 aspect ratio)
+ *
+ * 1024x1024 stream crop: (625, 375, 750, 750) (marked with #)
+ * 1280x720 stream crop: (500, 469, 1000, 562) (marked with =)
+ *
+ * 0 1000 2000
+ * +---------+---------+---------+----------+
+ * | Active pixel array |
+ * | |
+ * | 1024x1024 stream |
+ * + +--###############--+ + 375
+ * | | # # | |
+ * | O===================O |
+ * | I 1280x720 stream I |
+ * + I I + 750
+ * | I I |
+ * | O===================O |
+ * | | # # | |
+ * + +--###############--+ + 1125
+ * | Crop region |
+ * | |
+ * | |
+ * +---------+---------+---------+----------+ 1500
+ *
+ */
+
+/**
+ * S6. Error management:
+ *
+ * Camera HAL device ops functions that have a return value will all return
+ * -ENODEV / NULL in case of a serious error. This means the device cannot
+ * continue operation, and must be closed by the framework. Once this error is
+ * returned by some method, or if notify() is called with ERROR_DEVICE, only
+ * the close() method can be called successfully. All other methods will return
+ * -ENODEV / NULL.
+ *
+ * If a device op is called in the wrong sequence, for example if the framework
+ * calls configure_streams() is called before initialize(), the device must
+ * return -ENOSYS from the call, and do nothing.
+ *
+ * Transient errors in image capture must be reported through notify() as follows:
+ *
+ * - The failure of an entire capture to occur must be reported by the HAL by
+ * calling notify() with ERROR_REQUEST. Individual errors for the result
+ * metadata or the output buffers must not be reported in this case.
+ *
+ * - If the metadata for a capture cannot be produced, but some image buffers
+ * were filled, the HAL must call notify() with ERROR_RESULT.
+ *
+ * - If an output image buffer could not be filled, but either the metadata was
+ * produced or some other buffers were filled, the HAL must call notify() with
+ * ERROR_BUFFER for each failed buffer.
+ *
+ * In each of these transient failure cases, the HAL must still call
+ * process_capture_result, with valid output and input (if an input buffer was
+ * submitted) buffer_handle_t. If the result metadata could not be produced, it
+ * should be NULL. If some buffers could not be filled, they must be returned with
+ * process_capture_result in the error state, their release fences must be set to
+ * the acquire fences passed by the framework, or -1 if they have been waited on by
+ * the HAL already.
+ *
+ * Invalid input arguments result in -EINVAL from the appropriate methods. In
+ * that case, the framework must act as if that call had never been made.
+ *
+ */
+
+/**
+ * S7. Key Performance Indicator (KPI) glossary:
+ *
+ * This includes some critical definitions that are used by KPI metrics.
+ *
+ * Pipeline Latency:
+ * For a given capture request, the duration from the framework calling
+ * process_capture_request to the HAL sending capture result and all buffers
+ * back by process_capture_result call. To make the Pipeline Latency measure
+ * independent of frame rate, it is measured by frame count.
+ *
+ * For example, when frame rate is 30 (fps), the frame duration (time interval
+ * between adjacent frame capture time) is 33 (ms).
+ * If it takes 5 frames for framework to get the result and buffers back for
+ * a given request, then the Pipeline Latency is 5 (frames), instead of
+ * 5 x 33 = 165 (ms).
+ *
+ * The Pipeline Latency is determined by android.request.pipelineDepth and
+ * android.request.pipelineMaxDepth, see their definitions for more details.
+ *
+ */
+
+/**
+ * S8. Sample Use Cases:
+ *
+ * This includes some typical use case examples the camera HAL may support.
+ *
+ * S8.1 Zero Shutter Lag (ZSL) with CAMERA3_STREAM_BIDIRECTIONAL stream.
+ *
+ * For this use case, the bidirectional stream will be used by the framework as follows:
+ *
+ * 1. The framework includes a buffer from this stream as output buffer in a
+ * request as normal.
+ *
+ * 2. Once the HAL device returns a filled output buffer to the framework,
+ * the framework may do one of two things with the filled buffer:
+ *
+ * 2. a. The framework uses the filled data, and returns the now-used buffer
+ * to the stream queue for reuse. This behavior exactly matches the
+ * OUTPUT type of stream.
+ *
+ * 2. b. The framework wants to reprocess the filled data, and uses the
+ * buffer as an input buffer for a request. Once the HAL device has
+ * used the reprocessing buffer, it then returns it to the
+ * framework. The framework then returns the now-used buffer to the
+ * stream queue for reuse.
+ *
+ * 3. The HAL device will be given the buffer again as an output buffer for
+ * a request at some future point.
+ *
+ * For ZSL use case, the pixel format for bidirectional stream will be
+ * HAL_PIXEL_FORMAT_RAW_OPAQUE or HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED if it
+ * is listed in android.scaler.availableInputOutputFormatsMap. When
+ * HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED is used, the gralloc
+ * usage flags for the consumer endpoint will be set to GRALLOC_USAGE_HW_CAMERA_ZSL.
+ * A configuration stream list that has BIDIRECTIONAL stream used as input, will
+ * usually also have a distinct OUTPUT stream to get the reprocessing data. For example,
+ * for the ZSL use case, the stream list might be configured with the following:
+ *
+ * - A HAL_PIXEL_FORMAT_RAW_OPAQUE bidirectional stream is used
+ * as input.
+ * - And a HAL_PIXEL_FORMAT_BLOB (JPEG) output stream.
+ *
+ * S8.2 ZSL (OPAQUE) reprocessing with CAMERA3_STREAM_INPUT stream.
+ *
+ * CAMERA_DEVICE_API_VERSION_3_3:
+ * When OPAQUE_REPROCESSING capability is supported by the camera device, the INPUT stream
+ * can be used for application/framework implemented use case like Zero Shutter Lag (ZSL).
+ * This kind of stream will be used by the framework as follows:
+ *
+ * 1. Application/framework configures an opaque (RAW or YUV based) format output stream that is
+ * used to produce the ZSL output buffers. The stream pixel format will be
+ * HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED.
+ *
+ * 2. Application/framework configures an opaque format input stream that is used to
+ * send the reprocessing ZSL buffers to the HAL. The stream pixel format will
+ * also be HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED.
+ *
+ * 3. Application/framework configures a YUV/JPEG output stream that is used to receive the
+ * reprocessed data. The stream pixel format will be YCbCr_420/HAL_PIXEL_FORMAT_BLOB.
+ *
+ * 4. Application/framework picks a ZSL buffer from the ZSL output stream when a ZSL capture is
+ * issued by the application, and sends the data back as an input buffer in a
+ * reprocessing request, then sends to the HAL for reprocessing.
+ *
+ * 5. The HAL sends back the output YUV/JPEG result to framework.
+ *
+ * The HAL can select the actual opaque buffer format and configure the ISP pipeline
+ * appropriately based on the HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED format and
+ * the gralloc usage flag GRALLOC_USAGE_HW_CAMERA_ZSL.
+
+ * S8.3 YUV reprocessing with CAMERA3_STREAM_INPUT stream.
+ *
+ * When YUV reprocessing is supported by the HAL, the INPUT stream
+ * can be used for the YUV reprocessing use cases like lucky-shot and image fusion.
+ * This kind of stream will be used by the framework as follows:
+ *
+ * 1. Application/framework configures an YCbCr_420 format output stream that is
+ * used to produce the output buffers.
+ *
+ * 2. Application/framework configures an YCbCr_420 format input stream that is used to
+ * send the reprocessing YUV buffers to the HAL.
+ *
+ * 3. Application/framework configures a YUV/JPEG output stream that is used to receive the
+ * reprocessed data. The stream pixel format will be YCbCr_420/HAL_PIXEL_FORMAT_BLOB.
+ *
+ * 4. Application/framework processes the output buffers (could be as simple as picking
+ * an output buffer directly) from the output stream when a capture is issued, and sends
+ * the data back as an input buffer in a reprocessing request, then sends to the HAL
+ * for reprocessing.
+ *
+ * 5. The HAL sends back the output YUV/JPEG result to framework.
+ *
+ */
+
+/**
+ * S9. Notes on Controls and Metadata
+ *
+ * This section contains notes about the interpretation and usage of various metadata tags.
+ *
+ * S9.1 HIGH_QUALITY and FAST modes.
+ *
+ * Many camera post-processing blocks may be listed as having HIGH_QUALITY,
+ * FAST, and OFF operating modes. These blocks will typically also have an
+ * 'available modes' tag representing which of these operating modes are
+ * available on a given device. The general policy regarding implementing
+ * these modes is as follows:
+ *
+ * 1. Operating mode controls of hardware blocks that cannot be disabled
+ * must not list OFF in their corresponding 'available modes' tags.
+ *
+ * 2. OFF will always be included in their corresponding 'available modes'
+ * tag if it is possible to disable that hardware block.
+ *
+ * 3. FAST must always be included in the 'available modes' tags for all
+ * post-processing blocks supported on the device. If a post-processing
+ * block also has a slower and higher quality operating mode that does
+ * not meet the framerate requirements for FAST mode, HIGH_QUALITY should
+ * be included in the 'available modes' tag to represent this operating
+ * mode.
+ */
+
+/**
+ * S10. Reprocessing flow and controls
+ *
+ * This section describes the OPAQUE and YUV reprocessing flow and controls. OPAQUE reprocessing
+ * uses an opaque format that is not directly application-visible, and the application can
+ * only select some of the output buffers and send back to HAL for reprocessing, while YUV
+ * reprocessing gives the application opportunity to process the buffers before reprocessing.
+ *
+ * S8 gives the stream configurations for the typical reprocessing uses cases,
+ * this section specifies the buffer flow and controls in more details.
+ *
+ * S10.1 OPAQUE (typically for ZSL use case) reprocessing flow and controls
+ *
+ * For OPAQUE reprocessing (e.g. ZSL) use case, after the application creates the specific
+ * output and input streams, runtime buffer flow and controls are specified as below:
+ *
+ * 1. Application starts output streaming by sending repeating requests for output
+ * opaque buffers and preview. The buffers are held by an application
+ * maintained circular buffer. The requests are based on CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG
+ * capture template, which should have all necessary settings that guarantee output
+ * frame rate is not slowed down relative to sensor output frame rate.
+ *
+ * 2. When a capture is issued, the application selects one output buffer based
+ * on application buffer selection logic, e.g. good AE and AF statistics etc.
+ * Application then creates an reprocess request based on the capture result associated
+ * with this selected buffer. The selected output buffer is now added to this reprocess
+ * request as an input buffer, the output buffer of this reprocess request should be
+ * either JPEG output buffer or YUV output buffer, or both, depending on the application
+ * choice.
+ *
+ * 3. Application then alters the reprocess settings to get best image quality. The HAL must
+ * support and only support below controls if the HAL support OPAQUE_REPROCESSING capability:
+ * - android.jpeg.* (if JPEG buffer is included as one of the output)
+ * - android.noiseReduction.mode (change to HIGH_QUALITY if it is supported)
+ * - android.edge.mode (change to HIGH_QUALITY if it is supported)
+ * All other controls must be ignored by the HAL.
+ * 4. HAL processed the input buffer and return the output buffers in the capture results
+ * as normal.
+ *
+ * S10.2 YUV reprocessing flow and controls
+ *
+ * The YUV reprocessing buffer flow is similar as OPAQUE reprocessing, with below difference:
+ *
+ * 1. Application may want to have finer granularity control of the intermediate YUV images
+ * (before reprocessing). For example, application may choose
+ * - android.noiseReduction.mode == MINIMAL
+ * to make sure the no YUV domain noise reduction has applied to the output YUV buffers,
+ * then it can do its own advanced noise reduction on them. For OPAQUE reprocessing case, this
+ * doesn't matter, as long as the final reprocessed image has the best quality.
+ * 2. Application may modify the YUV output buffer data. For example, for image fusion use
+ * case, where multiple output images are merged together to improve the signal-to-noise
+ * ratio (SNR). The input buffer may be generated from multiple buffers by the application.
+ * To avoid excessive amount of noise reduction and insufficient amount of edge enhancement
+ * being applied to the input buffer, the application can hint the HAL how much effective
+ * exposure time improvement has been done by the application, then the HAL can adjust the
+ * noise reduction and edge enhancement paramters to get best reprocessed image quality.
+ * Below tag can be used for this purpose:
+ * - android.reprocess.effectiveExposureFactor
+ * The value would be exposure time increase factor applied to the original output image,
+ * for example, if there are N image merged, the exposure time increase factor would be up
+ * to sqrt(N). See this tag spec for more details.
+ *
+ * S10.3 Reprocessing pipeline characteristics
+ *
+ * Reprocessing pipeline has below different characteristics comparing with normal output
+ * pipeline:
+ *
+ * 1. The reprocessing result can be returned ahead of the pending normal output results. But
+ * the FIFO ordering must be maintained for all reprocessing results. For example, there are
+ * below requests (A stands for output requests, B stands for reprocessing requests)
+ * being processed by the HAL:
+ * A1, A2, A3, A4, B1, A5, B2, A6...
+ * result of B1 can be returned before A1-A4, but result of B2 must be returned after B1.
+ * 2. Single input rule: For a given reprocessing request, all output buffers must be from the
+ * input buffer, rather than sensor output. For example, if a reprocess request include both
+ * JPEG and preview buffers, all output buffers must be produced from the input buffer
+ * included by the reprocessing request, rather than sensor. The HAL must not output preview
+ * buffers from sensor, while output JPEG buffer from the input buffer.
+ * 3. Input buffer will be from camera output directly (ZSL case) or indirectly(image fusion
+ * case). For the case where buffer is modified, the size will remain same. The HAL can
+ * notify CAMERA3_MSG_ERROR_REQUEST if buffer from unknown source is sent.
+ * 4. Result as reprocessing request: The HAL can expect that a reprocessing request is a copy
+ * of one of the output results with minor allowed setting changes. The HAL can notify
+ * CAMERA3_MSG_ERROR_REQUEST if a request from unknown source is issued.
+ * 5. Output buffers may not be used as inputs across the configure stream boundary, This is
+ * because an opaque stream like the ZSL output stream may have different actual image size
+ * inside of the ZSL buffer to save power and bandwidth for smaller resolution JPEG capture.
+ * The HAL may notify CAMERA3_MSG_ERROR_REQUEST if this case occurs.
+ * 6. HAL Reprocess requests error reporting during flush should follow the same rule specified
+ * by flush() method.
+ *
+ */
+
+__BEGIN_DECLS
+
+struct camera3_device;
+
+/**********************************************************************
+ *
+ * Camera3 stream and stream buffer definitions.
+ *
+ * These structs and enums define the handles and contents of the input and
+ * output streams connecting the HAL to various framework and application buffer
+ * consumers. Each stream is backed by a gralloc buffer queue.
+ *
+ */
+
+/**
+ * camera3_stream_type_t:
+ *
+ * The type of the camera stream, which defines whether the camera HAL device is
+ * the producer or the consumer for that stream, and how the buffers of the
+ * stream relate to the other streams.
+ */
+typedef enum camera3_stream_type {
+ /**
+ * This stream is an output stream; the camera HAL device will be
+ * responsible for filling buffers from this stream with newly captured or
+ * reprocessed image data.
+ */
+ CAMERA3_STREAM_OUTPUT = 0,
+
+ /**
+ * This stream is an input stream; the camera HAL device will be responsible
+ * for reading buffers from this stream and sending them through the camera
+ * processing pipeline, as if the buffer was a newly captured image from the
+ * imager.
+ *
+ * The pixel format for input stream can be any format reported by
+ * android.scaler.availableInputOutputFormatsMap. The pixel format of the
+ * output stream that is used to produce the reprocessing data may be any
+ * format reported by android.scaler.availableStreamConfigurations. The
+ * supported input/output stream combinations depends the camera device
+ * capabilities, see android.scaler.availableInputOutputFormatsMap for
+ * stream map details.
+ *
+ * This kind of stream is generally used to reprocess data into higher
+ * quality images (that otherwise would cause a frame rate performance
+ * loss), or to do off-line reprocessing.
+ *
+ * CAMERA_DEVICE_API_VERSION_3_3:
+ * The typical use cases are OPAQUE (typically ZSL) and YUV reprocessing,
+ * see S8.2, S8.3 and S10 for more details.
+ */
+ CAMERA3_STREAM_INPUT = 1,
+
+ /**
+ * This stream can be used for input and output. Typically, the stream is
+ * used as an output stream, but occasionally one already-filled buffer may
+ * be sent back to the HAL device for reprocessing.
+ *
+ * This kind of stream is meant generally for Zero Shutter Lag (ZSL)
+ * features, where copying the captured image from the output buffer to the
+ * reprocessing input buffer would be expensive. See S8.1 for more details.
+ *
+ * Note that the HAL will always be reprocessing data it produced.
+ *
+ */
+ CAMERA3_STREAM_BIDIRECTIONAL = 2,
+
+ /**
+ * Total number of framework-defined stream types
+ */
+ CAMERA3_NUM_STREAM_TYPES
+
+} camera3_stream_type_t;
+
+/**
+ * camera3_stream_rotation_t:
+ *
+ * The required counterclockwise rotation of camera stream.
+ */
+typedef enum camera3_stream_rotation {
+ /* No rotation */
+ CAMERA3_STREAM_ROTATION_0 = 0,
+
+ /* Rotate by 90 degree counterclockwise */
+ CAMERA3_STREAM_ROTATION_90 = 1,
+
+ /* Rotate by 180 degree counterclockwise */
+ CAMERA3_STREAM_ROTATION_180 = 2,
+
+ /* Rotate by 270 degree counterclockwise */
+ CAMERA3_STREAM_ROTATION_270 = 3
+} camera3_stream_rotation_t;
+
+/**
+ * camera3_stream_configuration_mode_t:
+ *
+ * This defines the general operation mode for the HAL (for a given stream configuration), where
+ * modes besides NORMAL have different semantics, and usually limit the generality of the API in
+ * exchange for higher performance in some particular area.
+ */
+typedef enum camera3_stream_configuration_mode {
+ /**
+ * Normal stream configuration operation mode. This is the default camera operation mode,
+ * where all semantics of HAL APIs and metadata controls apply.
+ */
+ CAMERA3_STREAM_CONFIGURATION_NORMAL_MODE = 0,
+
+ /**
+ * Special constrained high speed operation mode for devices that can not support high
+ * speed output in NORMAL mode. All streams in this configuration are operating at high speed
+ * mode and have different characteristics and limitations to achieve high speed output.
+ * The NORMAL mode can still be used for high speed output if the HAL can support high speed
+ * output while satisfying all the semantics of HAL APIs and metadata controls. It is
+ * recommended for the HAL to support high speed output in NORMAL mode (by advertising the high
+ * speed FPS ranges in android.control.aeAvailableTargetFpsRanges) if possible.
+ *
+ * This mode has below limitations/requirements:
+ *
+ * 1. The HAL must support up to 2 streams with sizes reported by
+ * android.control.availableHighSpeedVideoConfigurations.
+ * 2. In this mode, the HAL is expected to output up to 120fps or higher. This mode must
+ * support the targeted FPS range and size configurations reported by
+ * android.control.availableHighSpeedVideoConfigurations.
+ * 3. The HAL must support HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED output stream format.
+ * 4. To achieve efficient high speed streaming, the HAL may have to aggregate
+ * multiple frames together and send to camera device for processing where the request
+ * controls are same for all the frames in this batch (batch mode). The HAL must support
+ * max batch size and the max batch size requirements defined by
+ * android.control.availableHighSpeedVideoConfigurations.
+ * 5. In this mode, the HAL must override aeMode, awbMode, and afMode to ON, ON, and
+ * CONTINUOUS_VIDEO, respectively. All post-processing block mode controls must be
+ * overridden to be FAST. Therefore, no manual control of capture and post-processing
+ * parameters is possible. All other controls operate the same as when
+ * android.control.mode == AUTO. This means that all other android.control.* fields
+ * must continue to work, such as
+ *
+ * android.control.aeTargetFpsRange
+ * android.control.aeExposureCompensation
+ * android.control.aeLock
+ * android.control.awbLock
+ * android.control.effectMode
+ * android.control.aeRegions
+ * android.control.afRegions
+ * android.control.awbRegions
+ * android.control.afTrigger
+ * android.control.aePrecaptureTrigger
+ *
+ * Outside of android.control.*, the following controls must work:
+ *
+ * android.flash.mode (TORCH mode only, automatic flash for still capture will not work
+ * since aeMode is ON)
+ * android.lens.opticalStabilizationMode (if it is supported)
+ * android.scaler.cropRegion
+ * android.statistics.faceDetectMode (if it is supported)
+ * 6. To reduce the amount of data passed across process boundaries at
+ * high frame rate, within one batch, camera framework only propagates
+ * the last shutter notify and the last capture results (including partial
+ * results and final result) to the app. The shutter notifies and capture
+ * results for the other requests in the batch are derived by
+ * the camera framework. As a result, the HAL can return empty metadata
+ * except for the last result in the batch.
+ *
+ * For more details about high speed stream requirements, see
+ * android.control.availableHighSpeedVideoConfigurations and CONSTRAINED_HIGH_SPEED_VIDEO
+ * capability defined in android.request.availableCapabilities.
+ *
+ * This mode only needs to be supported by HALs that include CONSTRAINED_HIGH_SPEED_VIDEO in
+ * the android.request.availableCapabilities static metadata.
+ */
+ CAMERA3_STREAM_CONFIGURATION_CONSTRAINED_HIGH_SPEED_MODE = 1,
+
+ /**
+ * First value for vendor-defined stream configuration modes.
+ */
+ CAMERA3_VENDOR_STREAM_CONFIGURATION_MODE_START = 0x8000
+} camera3_stream_configuration_mode_t;
+
+/**
+ * camera3_stream_t:
+ *
+ * A handle to a single camera input or output stream. A stream is defined by
+ * the framework by its buffer resolution and format, and additionally by the
+ * HAL with the gralloc usage flags and the maximum in-flight buffer count.
+ *
+ * The stream structures are owned by the framework, but pointers to a
+ * camera3_stream passed into the HAL by configure_streams() are valid until the
+ * end of the first subsequent configure_streams() call that _does not_ include
+ * that camera3_stream as an argument, or until the end of the close() call.
+ *
+ * All camera3_stream framework-controlled members are immutable once the
+ * camera3_stream is passed into configure_streams(). The HAL may only change
+ * the HAL-controlled parameters during a configure_streams() call, except for
+ * the contents of the private pointer.
+ *
+ * If a configure_streams() call returns a non-fatal error, all active streams
+ * remain valid as if configure_streams() had not been called.
+ *
+ * The endpoint of the stream is not visible to the camera HAL device.
+ * In DEVICE_API_VERSION_3_1, this was changed to share consumer usage flags
+ * on streams where the camera is a producer (OUTPUT and BIDIRECTIONAL stream
+ * types) see the usage field below.
+ */
+typedef struct camera3_stream {
+
+ /*****
+ * Set by framework before configure_streams()
+ */
+
+ /**
+ * The type of the stream, one of the camera3_stream_type_t values.
+ */
+ int stream_type;
+
+ /**
+ * The width in pixels of the buffers in this stream
+ */
+ uint32_t width;
+
+ /**
+ * The height in pixels of the buffers in this stream
+ */
+ uint32_t height;
+
+ /**
+ * The pixel format for the buffers in this stream. Format is a value from
+ * the HAL_PIXEL_FORMAT_* list in system/core/include/system/graphics.h, or
+ * from device-specific headers.
+ *
+ * If HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED is used, then the platform
+ * gralloc module will select a format based on the usage flags provided by
+ * the camera device and the other endpoint of the stream.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * The camera HAL device must inspect the buffers handed to it in the
+ * subsequent register_stream_buffers() call to obtain the
+ * implementation-specific format details, if necessary.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * register_stream_buffers() won't be called by the framework, so the HAL
+ * should configure the ISP and sensor pipeline based purely on the sizes,
+ * usage flags, and formats for the configured streams.
+ */
+ int format;
+
+ /*****
+ * Set by HAL during configure_streams().
+ */
+
+ /**
+ * The gralloc usage flags for this stream, as needed by the HAL. The usage
+ * flags are defined in gralloc.h (GRALLOC_USAGE_*), or in device-specific
+ * headers.
+ *
+ * For output streams, these are the HAL's producer usage flags. For input
+ * streams, these are the HAL's consumer usage flags. The usage flags from
+ * the producer and the consumer will be combined together and then passed
+ * to the platform gralloc HAL module for allocating the gralloc buffers for
+ * each stream.
+ *
+ * Version information:
+ *
+ * == CAMERA_DEVICE_API_VERSION_3_0:
+ *
+ * No initial value guaranteed when passed via configure_streams().
+ * HAL may not use this field as input, and must write over this field
+ * with its usage flags.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * For stream_type OUTPUT and BIDIRECTIONAL, when passed via
+ * configure_streams(), the initial value of this is the consumer's
+ * usage flags. The HAL may use these consumer flags to decide stream
+ * configuration.
+ * For stream_type INPUT, when passed via configure_streams(), the initial
+ * value of this is 0.
+ * For all streams passed via configure_streams(), the HAL must write
+ * over this field with its usage flags.
+ *
+ * From Android O, the usage flag for an output stream may be bitwise
+ * combination of usage flags for multiple consumers, for the purpose of
+ * sharing one camera stream between those consumers. The HAL must fail
+ * configure_streams call with -EINVAL if the combined flags cannot be
+ * supported due to imcompatible buffer format, dataSpace, or other hardware
+ * limitations.
+ */
+ uint32_t usage;
+
+ /**
+ * The maximum number of buffers the HAL device may need to have dequeued at
+ * the same time. The HAL device may not have more buffers in-flight from
+ * this stream than this value.
+ */
+ uint32_t max_buffers;
+
+ /**
+ * A handle to HAL-private information for the stream. Will not be inspected
+ * by the framework code.
+ */
+ void *priv;
+
+ /**
+ * A field that describes the contents of the buffer. The format and buffer
+ * dimensions define the memory layout and structure of the stream buffers,
+ * while dataSpace defines the meaning of the data within the buffer.
+ *
+ * For most formats, dataSpace defines the color space of the image data.
+ * In addition, for some formats, dataSpace indicates whether image- or
+ * depth-based data is requested. See system/core/include/system/graphics.h
+ * for details of formats and valid dataSpace values for each format.
+ *
+ * Version information:
+ *
+ * < CAMERA_DEVICE_API_VERSION_3_3:
+ *
+ * Not defined and should not be accessed. dataSpace should be assumed to
+ * be HAL_DATASPACE_UNKNOWN, and the appropriate color space, etc, should
+ * be determined from the usage flags and the format.
+ *
+ * = CAMERA_DEVICE_API_VERSION_3_3:
+ *
+ * Always set by the camera service. HAL must use this dataSpace to
+ * configure the stream to the correct colorspace, or to select between
+ * color and depth outputs if supported. The dataspace values are the
+ * legacy definitions in graphics.h
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_4:
+ *
+ * Always set by the camera service. HAL must use this dataSpace to
+ * configure the stream to the correct colorspace, or to select between
+ * color and depth outputs if supported. The dataspace values are set
+ * using the V0 dataspace definitions in graphics.h
+ */
+ android_dataspace_t data_space;
+
+ /**
+ * The required output rotation of the stream, one of
+ * the camera3_stream_rotation_t values. This must be inspected by HAL along
+ * with stream width and height. For example, if the rotation is 90 degree
+ * and the stream width and height is 720 and 1280 respectively, camera service
+ * will supply buffers of size 720x1280, and HAL should capture a 1280x720 image
+ * and rotate the image by 90 degree counterclockwise. The rotation field is
+ * no-op when the stream type is input. Camera HAL must ignore the rotation
+ * field for an input stream.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Not defined and must not be accessed. HAL must not apply any rotation
+ * on output images.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_3:
+ *
+ * Always set by camera service. HAL must inspect this field during stream
+ * configuration and returns -EINVAL if HAL cannot perform such rotation.
+ * HAL must always support CAMERA3_STREAM_ROTATION_0, so a
+ * configure_streams() call must not fail for unsupported rotation if
+ * rotation field of all streams is CAMERA3_STREAM_ROTATION_0.
+ *
+ */
+ int rotation;
+
+ /* reserved for future use */
+ void *reserved[7];
+
+} camera3_stream_t;
+
+/**
+ * camera3_stream_configuration_t:
+ *
+ * A structure of stream definitions, used by configure_streams(). This
+ * structure defines all the output streams and the reprocessing input
+ * stream for the current camera use case.
+ */
+typedef struct camera3_stream_configuration {
+ /**
+ * The total number of streams requested by the framework. This includes
+ * both input and output streams. The number of streams will be at least 1,
+ * and there will be at least one output-capable stream.
+ */
+ uint32_t num_streams;
+
+ /**
+ * An array of camera stream pointers, defining the input/output
+ * configuration for the camera HAL device.
+ *
+ * At most one input-capable stream may be defined (INPUT or BIDIRECTIONAL)
+ * in a single configuration.
+ *
+ * At least one output-capable stream must be defined (OUTPUT or
+ * BIDIRECTIONAL).
+ */
+ camera3_stream_t **streams;
+
+ /**
+ * >= CAMERA_DEVICE_API_VERSION_3_3:
+ *
+ * The operation mode of streams in this configuration, one of the value
+ * defined in camera3_stream_configuration_mode_t. The HAL can use this
+ * mode as an indicator to set the stream property (e.g.,
+ * camera3_stream->max_buffers) appropriately. For example, if the
+ * configuration is
+ * CAMERA3_STREAM_CONFIGURATION_CONSTRAINED_HIGH_SPEED_MODE, the HAL may
+ * want to set aside more buffers for batch mode operation (see
+ * android.control.availableHighSpeedVideoConfigurations for batch mode
+ * definition).
+ *
+ */
+ uint32_t operation_mode;
+} camera3_stream_configuration_t;
+
+/**
+ * camera3_buffer_status_t:
+ *
+ * The current status of a single stream buffer.
+ */
+typedef enum camera3_buffer_status {
+ /**
+ * The buffer is in a normal state, and can be used after waiting on its
+ * sync fence.
+ */
+ CAMERA3_BUFFER_STATUS_OK = 0,
+
+ /**
+ * The buffer does not contain valid data, and the data in it should not be
+ * used. The sync fence must still be waited on before reusing the buffer.
+ */
+ CAMERA3_BUFFER_STATUS_ERROR = 1
+
+} camera3_buffer_status_t;
+
+/**
+ * camera3_stream_buffer_t:
+ *
+ * A single buffer from a camera3 stream. It includes a handle to its parent
+ * stream, the handle to the gralloc buffer itself, and sync fences
+ *
+ * The buffer does not specify whether it is to be used for input or output;
+ * that is determined by its parent stream type and how the buffer is passed to
+ * the HAL device.
+ */
+typedef struct camera3_stream_buffer {
+ /**
+ * The handle of the stream this buffer is associated with
+ */
+ camera3_stream_t *stream;
+
+ /**
+ * The native handle to the buffer
+ */
+ buffer_handle_t *buffer;
+
+ /**
+ * Current state of the buffer, one of the camera3_buffer_status_t
+ * values. The framework will not pass buffers to the HAL that are in an
+ * error state. In case a buffer could not be filled by the HAL, it must
+ * have its status set to CAMERA3_BUFFER_STATUS_ERROR when returned to the
+ * framework with process_capture_result().
+ */
+ int status;
+
+ /**
+ * The acquire sync fence for this buffer. The HAL must wait on this fence
+ * fd before attempting to read from or write to this buffer.
+ *
+ * The framework may be set to -1 to indicate that no waiting is necessary
+ * for this buffer.
+ *
+ * When the HAL returns an output buffer to the framework with
+ * process_capture_result(), the acquire_fence must be set to -1. If the HAL
+ * never waits on the acquire_fence due to an error in filling a buffer,
+ * when calling process_capture_result() the HAL must set the release_fence
+ * of the buffer to be the acquire_fence passed to it by the framework. This
+ * will allow the framework to wait on the fence before reusing the buffer.
+ *
+ * For input buffers, the HAL must not change the acquire_fence field during
+ * the process_capture_request() call.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * When the HAL returns an input buffer to the framework with
+ * process_capture_result(), the acquire_fence must be set to -1. If the HAL
+ * never waits on input buffer acquire fence due to an error, the sync
+ * fences should be handled similarly to the way they are handled for output
+ * buffers.
+ */
+ int acquire_fence;
+
+ /**
+ * The release sync fence for this buffer. The HAL must set this fence when
+ * returning buffers to the framework, or write -1 to indicate that no
+ * waiting is required for this buffer.
+ *
+ * For the output buffers, the fences must be set in the output_buffers
+ * array passed to process_capture_result().
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * For the input buffer, the release fence must be set by the
+ * process_capture_request() call.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * For the input buffer, the fences must be set in the input_buffer
+ * passed to process_capture_result().
+ *
+ * After signaling the release_fence for this buffer, the HAL
+ * should not make any further attempts to access this buffer as the
+ * ownership has been fully transferred back to the framework.
+ *
+ * If a fence of -1 was specified then the ownership of this buffer
+ * is transferred back immediately upon the call of process_capture_result.
+ */
+ int release_fence;
+
+} camera3_stream_buffer_t;
+
+/**
+ * camera3_stream_buffer_set_t:
+ *
+ * The complete set of gralloc buffers for a stream. This structure is given to
+ * register_stream_buffers() to allow the camera HAL device to register/map/etc
+ * newly allocated stream buffers.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Deprecated (and not used). In particular,
+ * register_stream_buffers is also deprecated and will never be invoked.
+ *
+ */
+typedef struct camera3_stream_buffer_set {
+ /**
+ * The stream handle for the stream these buffers belong to
+ */
+ camera3_stream_t *stream;
+
+ /**
+ * The number of buffers in this stream. It is guaranteed to be at least
+ * stream->max_buffers.
+ */
+ uint32_t num_buffers;
+
+ /**
+ * The array of gralloc buffer handles for this stream. If the stream format
+ * is set to HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, the camera HAL device
+ * should inspect the passed-in buffers to determine any platform-private
+ * pixel format information.
+ */
+ buffer_handle_t **buffers;
+
+} camera3_stream_buffer_set_t;
+
+/**
+ * camera3_jpeg_blob:
+ *
+ * Transport header for compressed JPEG buffers in output streams.
+ *
+ * To capture JPEG images, a stream is created using the pixel format
+ * HAL_PIXEL_FORMAT_BLOB. The buffer size for the stream is calculated by the
+ * framework, based on the static metadata field android.jpeg.maxSize. Since
+ * compressed JPEG images are of variable size, the HAL needs to include the
+ * final size of the compressed image using this structure inside the output
+ * stream buffer. The JPEG blob ID field must be set to CAMERA3_JPEG_BLOB_ID.
+ *
+ * Transport header should be at the end of the JPEG output stream buffer. That
+ * means the jpeg_blob_id must start at byte[buffer_size -
+ * sizeof(camera3_jpeg_blob)], where the buffer_size is the size of gralloc buffer.
+ * Any HAL using this transport header must account for it in android.jpeg.maxSize
+ * The JPEG data itself starts at the beginning of the buffer and should be
+ * jpeg_size bytes long.
+ */
+typedef struct camera3_jpeg_blob {
+ uint16_t jpeg_blob_id;
+ uint32_t jpeg_size;
+} camera3_jpeg_blob_t;
+
+enum {
+ CAMERA3_JPEG_BLOB_ID = 0x00FF
+};
+
+/**********************************************************************
+ *
+ * Message definitions for the HAL notify() callback.
+ *
+ * These definitions are used for the HAL notify callback, to signal
+ * asynchronous events from the HAL device to the Android framework.
+ *
+ */
+
+/**
+ * camera3_msg_type:
+ *
+ * Indicates the type of message sent, which specifies which member of the
+ * message union is valid.
+ *
+ */
+typedef enum camera3_msg_type {
+ /**
+ * An error has occurred. camera3_notify_msg.message.error contains the
+ * error information.
+ */
+ CAMERA3_MSG_ERROR = 1,
+
+ /**
+ * The exposure of a given request or processing a reprocess request has
+ * begun. camera3_notify_msg.message.shutter contains the information
+ * the capture.
+ */
+ CAMERA3_MSG_SHUTTER = 2,
+
+ /**
+ * Number of framework message types
+ */
+ CAMERA3_NUM_MESSAGES
+
+} camera3_msg_type_t;
+
+/**
+ * Defined error codes for CAMERA_MSG_ERROR
+ */
+typedef enum camera3_error_msg_code {
+ /**
+ * A serious failure occured. No further frames or buffer streams will
+ * be produced by the device. Device should be treated as closed. The
+ * client must reopen the device to use it again. The frame_number field
+ * is unused.
+ */
+ CAMERA3_MSG_ERROR_DEVICE = 1,
+
+ /**
+ * An error has occurred in processing a request. No output (metadata or
+ * buffers) will be produced for this request. The frame_number field
+ * specifies which request has been dropped. Subsequent requests are
+ * unaffected, and the device remains operational.
+ */
+ CAMERA3_MSG_ERROR_REQUEST = 2,
+
+ /**
+ * An error has occurred in producing an output result metadata buffer
+ * for a request, but output stream buffers for it will still be
+ * available. Subsequent requests are unaffected, and the device remains
+ * operational. The frame_number field specifies the request for which
+ * result metadata won't be available.
+ */
+ CAMERA3_MSG_ERROR_RESULT = 3,
+
+ /**
+ * An error has occurred in placing an output buffer into a stream for a
+ * request. The frame metadata and other buffers may still be
+ * available. Subsequent requests are unaffected, and the device remains
+ * operational. The frame_number field specifies the request for which the
+ * buffer was dropped, and error_stream contains a pointer to the stream
+ * that dropped the frame.
+ */
+ CAMERA3_MSG_ERROR_BUFFER = 4,
+
+ /**
+ * Number of error types
+ */
+ CAMERA3_MSG_NUM_ERRORS
+
+} camera3_error_msg_code_t;
+
+/**
+ * camera3_error_msg_t:
+ *
+ * Message contents for CAMERA3_MSG_ERROR
+ */
+typedef struct camera3_error_msg {
+ /**
+ * Frame number of the request the error applies to. 0 if the frame number
+ * isn't applicable to the error.
+ */
+ uint32_t frame_number;
+
+ /**
+ * Pointer to the stream that had a failure. NULL if the stream isn't
+ * applicable to the error.
+ */
+ camera3_stream_t *error_stream;
+
+ /**
+ * The code for this error; one of the CAMERA_MSG_ERROR enum values.
+ */
+ int error_code;
+
+} camera3_error_msg_t;
+
+/**
+ * camera3_shutter_msg_t:
+ *
+ * Message contents for CAMERA3_MSG_SHUTTER
+ */
+typedef struct camera3_shutter_msg {
+ /**
+ * Frame number of the request that has begun exposure or reprocessing.
+ */
+ uint32_t frame_number;
+
+ /**
+ * Timestamp for the start of capture. For a reprocess request, this must
+ * be input image's start of capture. This must match the capture result
+ * metadata's sensor exposure start timestamp.
+ */
+ uint64_t timestamp;
+
+} camera3_shutter_msg_t;
+
+/**
+ * camera3_notify_msg_t:
+ *
+ * The message structure sent to camera3_callback_ops_t.notify()
+ */
+typedef struct camera3_notify_msg {
+
+ /**
+ * The message type. One of camera3_notify_msg_type, or a private extension.
+ */
+ int type;
+
+ union {
+ /**
+ * Error message contents. Valid if type is CAMERA3_MSG_ERROR
+ */
+ camera3_error_msg_t error;
+
+ /**
+ * Shutter message contents. Valid if type is CAMERA3_MSG_SHUTTER
+ */
+ camera3_shutter_msg_t shutter;
+
+ /**
+ * Generic message contents. Used to ensure a minimum size for custom
+ * message types.
+ */
+ uint8_t generic[32];
+ } message;
+
+} camera3_notify_msg_t;
+
+/**********************************************************************
+ *
+ * Capture request/result definitions for the HAL process_capture_request()
+ * method, and the process_capture_result() callback.
+ *
+ */
+
+/**
+ * camera3_request_template_t:
+ *
+ * Available template types for
+ * camera3_device_ops.construct_default_request_settings()
+ */
+typedef enum camera3_request_template {
+ /**
+ * Standard camera preview operation with 3A on auto.
+ */
+ CAMERA3_TEMPLATE_PREVIEW = 1,
+
+ /**
+ * Standard camera high-quality still capture with 3A and flash on auto.
+ */
+ CAMERA3_TEMPLATE_STILL_CAPTURE = 2,
+
+ /**
+ * Standard video recording plus preview with 3A on auto, torch off.
+ */
+ CAMERA3_TEMPLATE_VIDEO_RECORD = 3,
+
+ /**
+ * High-quality still capture while recording video. Application will
+ * include preview, video record, and full-resolution YUV or JPEG streams in
+ * request. Must not cause stuttering on video stream. 3A on auto.
+ */
+ CAMERA3_TEMPLATE_VIDEO_SNAPSHOT = 4,
+
+ /**
+ * Zero-shutter-lag mode. Application will request preview and
+ * full-resolution data for each frame, and reprocess it to JPEG when a
+ * still image is requested by user. Settings should provide highest-quality
+ * full-resolution images without compromising preview frame rate. 3A on
+ * auto.
+ */
+ CAMERA3_TEMPLATE_ZERO_SHUTTER_LAG = 5,
+
+ /**
+ * A basic template for direct application control of capture
+ * parameters. All automatic control is disabled (auto-exposure, auto-white
+ * balance, auto-focus), and post-processing parameters are set to preview
+ * quality. The manual capture parameters (exposure, sensitivity, etc.)
+ * are set to reasonable defaults, but should be overridden by the
+ * application depending on the intended use case.
+ */
+ CAMERA3_TEMPLATE_MANUAL = 6,
+
+ /* Total number of templates */
+ CAMERA3_TEMPLATE_COUNT,
+
+ /**
+ * First value for vendor-defined request templates
+ */
+ CAMERA3_VENDOR_TEMPLATE_START = 0x40000000
+
+} camera3_request_template_t;
+
+/**
+ * camera3_capture_request_t:
+ *
+ * A single request for image capture/buffer reprocessing, sent to the Camera
+ * HAL device by the framework in process_capture_request().
+ *
+ * The request contains the settings to be used for this capture, and the set of
+ * output buffers to write the resulting image data in. It may optionally
+ * contain an input buffer, in which case the request is for reprocessing that
+ * input buffer instead of capturing a new image with the camera sensor. The
+ * capture is identified by the frame_number.
+ *
+ * In response, the camera HAL device must send a camera3_capture_result
+ * structure asynchronously to the framework, using the process_capture_result()
+ * callback.
+ */
+typedef struct camera3_capture_request {
+ /**
+ * The frame number is an incrementing integer set by the framework to
+ * uniquely identify this capture. It needs to be returned in the result
+ * call, and is also used to identify the request in asynchronous
+ * notifications sent to camera3_callback_ops_t.notify().
+ */
+ uint32_t frame_number;
+
+ /**
+ * The settings buffer contains the capture and processing parameters for
+ * the request. As a special case, a NULL settings buffer indicates that the
+ * settings are identical to the most-recently submitted capture request. A
+ * NULL buffer cannot be used as the first submitted request after a
+ * configure_streams() call.
+ */
+ const camera_metadata_t *settings;
+
+ /**
+ * The input stream buffer to use for this request, if any.
+ *
+ * If input_buffer is NULL, then the request is for a new capture from the
+ * imager. If input_buffer is valid, the request is for reprocessing the
+ * image contained in input_buffer.
+ *
+ * In the latter case, the HAL must set the release_fence of the
+ * input_buffer to a valid sync fence, or to -1 if the HAL does not support
+ * sync, before process_capture_request() returns.
+ *
+ * The HAL is required to wait on the acquire sync fence of the input buffer
+ * before accessing it.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * Any input buffer included here will have been registered with the HAL
+ * through register_stream_buffers() before its inclusion in a request.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The buffers will not have been pre-registered with the HAL.
+ * Subsequent requests may reuse buffers, or provide entirely new buffers.
+ */
+ camera3_stream_buffer_t *input_buffer;
+
+ /**
+ * The number of output buffers for this capture request. Must be at least
+ * 1.
+ */
+ uint32_t num_output_buffers;
+
+ /**
+ * An array of num_output_buffers stream buffers, to be filled with image
+ * data from this capture/reprocess. The HAL must wait on the acquire fences
+ * of each stream buffer before writing to them.
+ *
+ * The HAL takes ownership of the actual buffer_handle_t entries in
+ * output_buffers; the framework does not access them until they are
+ * returned in a camera3_capture_result_t.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * All the buffers included here will have been registered with the HAL
+ * through register_stream_buffers() before their inclusion in a request.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Any or all of the buffers included here may be brand new in this
+ * request (having never before seen by the HAL).
+ */
+ const camera3_stream_buffer_t *output_buffers;
+
+} camera3_capture_request_t;
+
+/**
+ * camera3_capture_result_t:
+ *
+ * The result of a single capture/reprocess by the camera HAL device. This is
+ * sent to the framework asynchronously with process_capture_result(), in
+ * response to a single capture request sent to the HAL with
+ * process_capture_request(). Multiple process_capture_result() calls may be
+ * performed by the HAL for each request.
+ *
+ * Each call, all with the same frame
+ * number, may contain some subset of the output buffers, and/or the result
+ * metadata. The metadata may only be provided once for a given frame number;
+ * all other calls must set the result metadata to NULL.
+ *
+ * The result structure contains the output metadata from this capture, and the
+ * set of output buffers that have been/will be filled for this capture. Each
+ * output buffer may come with a release sync fence that the framework will wait
+ * on before reading, in case the buffer has not yet been filled by the HAL.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The metadata may be provided multiple times for a single frame number. The
+ * framework will accumulate together the final result set by combining each
+ * partial result together into the total result set.
+ *
+ * If an input buffer is given in a request, the HAL must return it in one of
+ * the process_capture_result calls, and the call may be to just return the input
+ * buffer, without metadata and output buffers; the sync fences must be handled
+ * the same way they are done for output buffers.
+ *
+ *
+ * Performance considerations:
+ *
+ * Applications will also receive these partial results immediately, so sending
+ * partial results is a highly recommended performance optimization to avoid
+ * the total pipeline latency before sending the results for what is known very
+ * early on in the pipeline.
+ *
+ * A typical use case might be calculating the AF state halfway through the
+ * pipeline; by sending the state back to the framework immediately, we get a
+ * 50% performance increase and perceived responsiveness of the auto-focus.
+ *
+ */
+typedef struct camera3_capture_result {
+ /**
+ * The frame number is an incrementing integer set by the framework in the
+ * submitted request to uniquely identify this capture. It is also used to
+ * identify the request in asynchronous notifications sent to
+ * camera3_callback_ops_t.notify().
+ */
+ uint32_t frame_number;
+
+ /**
+ * The result metadata for this capture. This contains information about the
+ * final capture parameters, the state of the capture and post-processing
+ * hardware, the state of the 3A algorithms, if enabled, and the output of
+ * any enabled statistics units.
+ *
+ * Only one call to process_capture_result() with a given frame_number may
+ * include the result metadata. All other calls for the same frame_number
+ * must set this to NULL.
+ *
+ * If there was an error producing the result metadata, result must be an
+ * empty metadata buffer, and notify() must be called with ERROR_RESULT.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Multiple calls to process_capture_result() with a given frame_number
+ * may include the result metadata.
+ *
+ * Partial metadata submitted should not include any metadata key returned
+ * in a previous partial result for a given frame. Each new partial result
+ * for that frame must also set a distinct partial_result value.
+ *
+ * If notify has been called with ERROR_RESULT, all further partial
+ * results for that frame are ignored by the framework.
+ */
+ const camera_metadata_t *result;
+
+ /**
+ * The number of output buffers returned in this result structure. Must be
+ * less than or equal to the matching capture request's count. If this is
+ * less than the buffer count in the capture request, at least one more call
+ * to process_capture_result with the same frame_number must be made, to
+ * return the remaining output buffers to the framework. This may only be
+ * zero if the structure includes valid result metadata or an input buffer
+ * is returned in this result.
+ */
+ uint32_t num_output_buffers;
+
+ /**
+ * The handles for the output stream buffers for this capture. They may not
+ * yet be filled at the time the HAL calls process_capture_result(); the
+ * framework will wait on the release sync fences provided by the HAL before
+ * reading the buffers.
+ *
+ * The HAL must set the stream buffer's release sync fence to a valid sync
+ * fd, or to -1 if the buffer has already been filled.
+ *
+ * If the HAL encounters an error while processing the buffer, and the
+ * buffer is not filled, the buffer's status field must be set to
+ * CAMERA3_BUFFER_STATUS_ERROR. If the HAL did not wait on the acquire fence
+ * before encountering the error, the acquire fence should be copied into
+ * the release fence, to allow the framework to wait on the fence before
+ * reusing the buffer.
+ *
+ * The acquire fence must be set to -1 for all output buffers. If
+ * num_output_buffers is zero, this may be NULL. In that case, at least one
+ * more process_capture_result call must be made by the HAL to provide the
+ * output buffers.
+ *
+ * When process_capture_result is called with a new buffer for a frame,
+ * all previous frames' buffers for that corresponding stream must have been
+ * already delivered (the fences need not have yet been signaled).
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Gralloc buffers for a frame may be sent to framework before the
+ * corresponding SHUTTER-notify.
+ *
+ * Performance considerations:
+ *
+ * Buffers delivered to the framework will not be dispatched to the
+ * application layer until a start of exposure timestamp has been received
+ * via a SHUTTER notify() call. It is highly recommended to
+ * dispatch that call as early as possible.
+ */
+ const camera3_stream_buffer_t *output_buffers;
+
+ /**
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The handle for the input stream buffer for this capture. It may not
+ * yet be consumed at the time the HAL calls process_capture_result(); the
+ * framework will wait on the release sync fences provided by the HAL before
+ * reusing the buffer.
+ *
+ * The HAL should handle the sync fences the same way they are done for
+ * output_buffers.
+ *
+ * Only one input buffer is allowed to be sent per request. Similarly to
+ * output buffers, the ordering of returned input buffers must be
+ * maintained by the HAL.
+ *
+ * Performance considerations:
+ *
+ * The input buffer should be returned as early as possible. If the HAL
+ * supports sync fences, it can call process_capture_result to hand it back
+ * with sync fences being set appropriately. If the sync fences are not
+ * supported, the buffer can only be returned when it is consumed, which
+ * may take long time; the HAL may choose to copy this input buffer to make
+ * the buffer return sooner.
+ */
+ const camera3_stream_buffer_t *input_buffer;
+
+ /**
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * In order to take advantage of partial results, the HAL must set the
+ * static metadata android.request.partialResultCount to the number of
+ * partial results it will send for each frame.
+ *
+ * Each new capture result with a partial result must set
+ * this field (partial_result) to a distinct inclusive value between
+ * 1 and android.request.partialResultCount.
+ *
+ * HALs not wishing to take advantage of this feature must not
+ * set an android.request.partialResultCount or partial_result to a value
+ * other than 1.
+ *
+ * This value must be set to 0 when a capture result contains buffers only
+ * and no metadata.
+ */
+ uint32_t partial_result;
+
+} camera3_capture_result_t;
+
+/**********************************************************************
+ *
+ * Callback methods for the HAL to call into the framework.
+ *
+ * These methods are used to return metadata and image buffers for a completed
+ * or failed captures, and to notify the framework of asynchronous events such
+ * as errors.
+ *
+ * The framework will not call back into the HAL from within these callbacks,
+ * and these calls will not block for extended periods.
+ *
+ */
+typedef struct camera3_callback_ops {
+
+ /**
+ * process_capture_result:
+ *
+ * Send results from a completed capture to the framework.
+ * process_capture_result() may be invoked multiple times by the HAL in
+ * response to a single capture request. This allows, for example, the
+ * metadata and low-resolution buffers to be returned in one call, and
+ * post-processed JPEG buffers in a later call, once it is available. Each
+ * call must include the frame number of the request it is returning
+ * metadata or buffers for.
+ *
+ * A component (buffer or metadata) of the complete result may only be
+ * included in one process_capture_result call. A buffer for each stream,
+ * and the result metadata, must be returned by the HAL for each request in
+ * one of the process_capture_result calls, even in case of errors producing
+ * some of the output. A call to process_capture_result() with neither
+ * output buffers or result metadata is not allowed.
+ *
+ * The order of returning metadata and buffers for a single result does not
+ * matter, but buffers for a given stream must be returned in FIFO order. So
+ * the buffer for request 5 for stream A must always be returned before the
+ * buffer for request 6 for stream A. This also applies to the result
+ * metadata; the metadata for request 5 must be returned before the metadata
+ * for request 6.
+ *
+ * However, different streams are independent of each other, so it is
+ * acceptable and expected that the buffer for request 5 for stream A may be
+ * returned after the buffer for request 6 for stream B is. And it is
+ * acceptable that the result metadata for request 6 for stream B is
+ * returned before the buffer for request 5 for stream A is.
+ *
+ * The HAL retains ownership of result structure, which only needs to be
+ * valid to access during this call. The framework will copy whatever it
+ * needs before this call returns.
+ *
+ * The output buffers do not need to be filled yet; the framework will wait
+ * on the stream buffer release sync fence before reading the buffer
+ * data. Therefore, this method should be called by the HAL as soon as
+ * possible, even if some or all of the output buffers are still in
+ * being filled. The HAL must include valid release sync fences into each
+ * output_buffers stream buffer entry, or -1 if that stream buffer is
+ * already filled.
+ *
+ * If the result buffer cannot be constructed for a request, the HAL should
+ * return an empty metadata buffer, but still provide the output buffers and
+ * their sync fences. In addition, notify() must be called with an
+ * ERROR_RESULT message.
+ *
+ * If an output buffer cannot be filled, its status field must be set to
+ * STATUS_ERROR. In addition, notify() must be called with a ERROR_BUFFER
+ * message.
+ *
+ * If the entire capture has failed, then this method still needs to be
+ * called to return the output buffers to the framework. All the buffer
+ * statuses should be STATUS_ERROR, and the result metadata should be an
+ * empty buffer. In addition, notify() must be called with a ERROR_REQUEST
+ * message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages
+ * should not be sent.
+ *
+ * Performance requirements:
+ *
+ * This is a non-blocking call. The framework will return this call in 5ms.
+ *
+ * The pipeline latency (see S7 for definition) should be less than or equal to
+ * 4 frame intervals, and must be less than or equal to 8 frame intervals.
+ *
+ */
+ void (*process_capture_result)(const struct camera3_callback_ops *,
+ const camera3_capture_result_t *result);
+
+ /**
+ * notify:
+ *
+ * Asynchronous notification callback from the HAL, fired for various
+ * reasons. Only for information independent of frame capture, or that
+ * require specific timing. The ownership of the message structure remains
+ * with the HAL, and the msg only needs to be valid for the duration of this
+ * call.
+ *
+ * Multiple threads may call notify() simultaneously.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * The notification for the start of exposure for a given request must be
+ * sent by the HAL before the first call to process_capture_result() for
+ * that request is made.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Buffers delivered to the framework will not be dispatched to the
+ * application layer until a start of exposure timestamp (or input image's
+ * start of exposure timestamp for a reprocess request) has been received
+ * via a SHUTTER notify() call. It is highly recommended to dispatch this
+ * call as early as possible.
+ *
+ * ------------------------------------------------------------------------
+ * Performance requirements:
+ *
+ * This is a non-blocking call. The framework will return this call in 5ms.
+ */
+ void (*notify)(const struct camera3_callback_ops *,
+ const camera3_notify_msg_t *msg);
+
+} camera3_callback_ops_t;
+
+/**********************************************************************
+ *
+ * Camera device operations
+ *
+ */
+typedef struct camera3_device_ops {
+
+ /**
+ * initialize:
+ *
+ * One-time initialization to pass framework callback function pointers to
+ * the HAL. Will be called once after a successful open() call, before any
+ * other functions are called on the camera3_device_ops structure.
+ *
+ * Performance requirements:
+ *
+ * This should be a non-blocking call. The HAL should return from this call
+ * in 5ms, and must return from this call in 10ms.
+ *
+ * Return values:
+ *
+ * 0: On successful initialization
+ *
+ * -ENODEV: If initialization fails. Only close() can be called successfully
+ * by the framework after this.
+ */
+ int (*initialize)(const struct camera3_device *,
+ const camera3_callback_ops_t *callback_ops);
+
+ /**********************************************************************
+ * Stream management
+ */
+
+ /**
+ * configure_streams:
+ *
+ * CAMERA_DEVICE_API_VERSION_3_0 only:
+ *
+ * Reset the HAL camera device processing pipeline and set up new input and
+ * output streams. This call replaces any existing stream configuration with
+ * the streams defined in the stream_list. This method will be called at
+ * least once after initialize() before a request is submitted with
+ * process_capture_request().
+ *
+ * The stream_list must contain at least one output-capable stream, and may
+ * not contain more than one input-capable stream.
+ *
+ * The stream_list may contain streams that are also in the currently-active
+ * set of streams (from the previous call to configure_stream()). These
+ * streams will already have valid values for usage, max_buffers, and the
+ * private pointer.
+ *
+ * If such a stream has already had its buffers registered,
+ * register_stream_buffers() will not be called again for the stream, and
+ * buffers from the stream can be immediately included in input requests.
+ *
+ * If the HAL needs to change the stream configuration for an existing
+ * stream due to the new configuration, it may rewrite the values of usage
+ * and/or max_buffers during the configure call.
+ *
+ * The framework will detect such a change, and will then reallocate the
+ * stream buffers, and call register_stream_buffers() again before using
+ * buffers from that stream in a request.
+ *
+ * If a currently-active stream is not included in stream_list, the HAL may
+ * safely remove any references to that stream. It will not be reused in a
+ * later configure() call by the framework, and all the gralloc buffers for
+ * it will be freed after the configure_streams() call returns.
+ *
+ * The stream_list structure is owned by the framework, and may not be
+ * accessed once this call completes. The address of an individual
+ * camera3_stream_t structure will remain valid for access by the HAL until
+ * the end of the first configure_stream() call which no longer includes
+ * that camera3_stream_t in the stream_list argument. The HAL may not change
+ * values in the stream structure outside of the private pointer, except for
+ * the usage and max_buffers members during the configure_streams() call
+ * itself.
+ *
+ * If the stream is new, the usage, max_buffer, and private pointer fields
+ * of the stream structure will all be set to 0. The HAL device must set
+ * these fields before the configure_streams() call returns. These fields
+ * are then used by the framework and the platform gralloc module to
+ * allocate the gralloc buffers for each stream.
+ *
+ * Before such a new stream can have its buffers included in a capture
+ * request, the framework will call register_stream_buffers() with that
+ * stream. However, the framework is not required to register buffers for
+ * _all_ streams before submitting a request. This allows for quick startup
+ * of (for example) a preview stream, with allocation for other streams
+ * happening later or concurrently.
+ *
+ * ------------------------------------------------------------------------
+ * CAMERA_DEVICE_API_VERSION_3_1 only:
+ *
+ * Reset the HAL camera device processing pipeline and set up new input and
+ * output streams. This call replaces any existing stream configuration with
+ * the streams defined in the stream_list. This method will be called at
+ * least once after initialize() before a request is submitted with
+ * process_capture_request().
+ *
+ * The stream_list must contain at least one output-capable stream, and may
+ * not contain more than one input-capable stream.
+ *
+ * The stream_list may contain streams that are also in the currently-active
+ * set of streams (from the previous call to configure_stream()). These
+ * streams will already have valid values for usage, max_buffers, and the
+ * private pointer.
+ *
+ * If such a stream has already had its buffers registered,
+ * register_stream_buffers() will not be called again for the stream, and
+ * buffers from the stream can be immediately included in input requests.
+ *
+ * If the HAL needs to change the stream configuration for an existing
+ * stream due to the new configuration, it may rewrite the values of usage
+ * and/or max_buffers during the configure call.
+ *
+ * The framework will detect such a change, and will then reallocate the
+ * stream buffers, and call register_stream_buffers() again before using
+ * buffers from that stream in a request.
+ *
+ * If a currently-active stream is not included in stream_list, the HAL may
+ * safely remove any references to that stream. It will not be reused in a
+ * later configure() call by the framework, and all the gralloc buffers for
+ * it will be freed after the configure_streams() call returns.
+ *
+ * The stream_list structure is owned by the framework, and may not be
+ * accessed once this call completes. The address of an individual
+ * camera3_stream_t structure will remain valid for access by the HAL until
+ * the end of the first configure_stream() call which no longer includes
+ * that camera3_stream_t in the stream_list argument. The HAL may not change
+ * values in the stream structure outside of the private pointer, except for
+ * the usage and max_buffers members during the configure_streams() call
+ * itself.
+ *
+ * If the stream is new, max_buffer, and private pointer fields of the
+ * stream structure will all be set to 0. The usage will be set to the
+ * consumer usage flags. The HAL device must set these fields before the
+ * configure_streams() call returns. These fields are then used by the
+ * framework and the platform gralloc module to allocate the gralloc
+ * buffers for each stream.
+ *
+ * Before such a new stream can have its buffers included in a capture
+ * request, the framework will call register_stream_buffers() with that
+ * stream. However, the framework is not required to register buffers for
+ * _all_ streams before submitting a request. This allows for quick startup
+ * of (for example) a preview stream, with allocation for other streams
+ * happening later or concurrently.
+ *
+ * ------------------------------------------------------------------------
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * Reset the HAL camera device processing pipeline and set up new input and
+ * output streams. This call replaces any existing stream configuration with
+ * the streams defined in the stream_list. This method will be called at
+ * least once after initialize() before a request is submitted with
+ * process_capture_request().
+ *
+ * The stream_list must contain at least one output-capable stream, and may
+ * not contain more than one input-capable stream.
+ *
+ * The stream_list may contain streams that are also in the currently-active
+ * set of streams (from the previous call to configure_stream()). These
+ * streams will already have valid values for usage, max_buffers, and the
+ * private pointer.
+ *
+ * If the HAL needs to change the stream configuration for an existing
+ * stream due to the new configuration, it may rewrite the values of usage
+ * and/or max_buffers during the configure call.
+ *
+ * The framework will detect such a change, and may then reallocate the
+ * stream buffers before using buffers from that stream in a request.
+ *
+ * If a currently-active stream is not included in stream_list, the HAL may
+ * safely remove any references to that stream. It will not be reused in a
+ * later configure() call by the framework, and all the gralloc buffers for
+ * it will be freed after the configure_streams() call returns.
+ *
+ * The stream_list structure is owned by the framework, and may not be
+ * accessed once this call completes. The address of an individual
+ * camera3_stream_t structure will remain valid for access by the HAL until
+ * the end of the first configure_stream() call which no longer includes
+ * that camera3_stream_t in the stream_list argument. The HAL may not change
+ * values in the stream structure outside of the private pointer, except for
+ * the usage and max_buffers members during the configure_streams() call
+ * itself.
+ *
+ * If the stream is new, max_buffer, and private pointer fields of the
+ * stream structure will all be set to 0. The usage will be set to the
+ * consumer usage flags. The HAL device must set these fields before the
+ * configure_streams() call returns. These fields are then used by the
+ * framework and the platform gralloc module to allocate the gralloc
+ * buffers for each stream.
+ *
+ * Newly allocated buffers may be included in a capture request at any time
+ * by the framework. Once a gralloc buffer is returned to the framework
+ * with process_capture_result (and its respective release_fence has been
+ * signaled) the framework may free or reuse it at any time.
+ *
+ * ------------------------------------------------------------------------
+ *
+ * Preconditions:
+ *
+ * The framework will only call this method when no captures are being
+ * processed. That is, all results have been returned to the framework, and
+ * all in-flight input and output buffers have been returned and their
+ * release sync fences have been signaled by the HAL. The framework will not
+ * submit new requests for capture while the configure_streams() call is
+ * underway.
+ *
+ * Postconditions:
+ *
+ * The HAL device must configure itself to provide maximum possible output
+ * frame rate given the sizes and formats of the output streams, as
+ * documented in the camera device's static metadata.
+ *
+ * Performance requirements:
+ *
+ * This call is expected to be heavyweight and possibly take several hundred
+ * milliseconds to complete, since it may require resetting and
+ * reconfiguring the image sensor and the camera processing pipeline.
+ * Nevertheless, the HAL device should attempt to minimize the
+ * reconfiguration delay to minimize the user-visible pauses during
+ * application operational mode changes (such as switching from still
+ * capture to video recording).
+ *
+ * The HAL should return from this call in 500ms, and must return from this
+ * call in 1000ms.
+ *
+ * Return values:
+ *
+ * 0: On successful stream configuration
+ *
+ * -EINVAL: If the requested stream configuration is invalid. Some examples
+ * of invalid stream configurations include:
+ *
+ * - Including more than 1 input-capable stream (INPUT or
+ * BIDIRECTIONAL)
+ *
+ * - Not including any output-capable streams (OUTPUT or
+ * BIDIRECTIONAL)
+ *
+ * - Including streams with unsupported formats, or an unsupported
+ * size for that format.
+ *
+ * - Including too many output streams of a certain format.
+ *
+ * - Unsupported rotation configuration (only applies to
+ * devices with version >= CAMERA_DEVICE_API_VERSION_3_3)
+ *
+ * - Stream sizes/formats don't satisfy the
+ * camera3_stream_configuration_t->operation_mode requirements for non-NORMAL mode,
+ * or the requested operation_mode is not supported by the HAL.
+ * (only applies to devices with version >= CAMERA_DEVICE_API_VERSION_3_3)
+ *
+ * Note that the framework submitting an invalid stream
+ * configuration is not normal operation, since stream
+ * configurations are checked before configure. An invalid
+ * configuration means that a bug exists in the framework code, or
+ * there is a mismatch between the HAL's static metadata and the
+ * requirements on streams.
+ *
+ * -ENODEV: If there has been a fatal error and the device is no longer
+ * operational. Only close() can be called successfully by the
+ * framework after this error is returned.
+ */
+ int (*configure_streams)(const struct camera3_device *,
+ camera3_stream_configuration_t *stream_list);
+
+ /**
+ * register_stream_buffers:
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * DEPRECATED. This will not be called and must be set to NULL.
+ *
+ * <= CAMERA_DEVICE_API_VERSION_3_1:
+ *
+ * Register buffers for a given stream with the HAL device. This method is
+ * called by the framework after a new stream is defined by
+ * configure_streams, and before buffers from that stream are included in a
+ * capture request. If the same stream is listed in a subsequent
+ * configure_streams() call, register_stream_buffers will _not_ be called
+ * again for that stream.
+ *
+ * The framework does not need to register buffers for all configured
+ * streams before it submits the first capture request. This allows quick
+ * startup for preview (or similar use cases) while other streams are still
+ * being allocated.
+ *
+ * This method is intended to allow the HAL device to map or otherwise
+ * prepare the buffers for later use. The buffers passed in will already be
+ * locked for use. At the end of the call, all the buffers must be ready to
+ * be returned to the stream. The buffer_set argument is only valid for the
+ * duration of this call.
+ *
+ * If the stream format was set to HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
+ * the camera HAL should inspect the passed-in buffers here to determine any
+ * platform-private pixel format information.
+ *
+ * Performance requirements:
+ *
+ * This should be a non-blocking call. The HAL should return from this call
+ * in 1ms, and must return from this call in 5ms.
+ *
+ * Return values:
+ *
+ * 0: On successful registration of the new stream buffers
+ *
+ * -EINVAL: If the stream_buffer_set does not refer to a valid active
+ * stream, or if the buffers array is invalid.
+ *
+ * -ENOMEM: If there was a failure in registering the buffers. The framework
+ * must consider all the stream buffers to be unregistered, and can
+ * try to register again later.
+ *
+ * -ENODEV: If there is a fatal error, and the device is no longer
+ * operational. Only close() can be called successfully by the
+ * framework after this error is returned.
+ */
+ int (*register_stream_buffers)(const struct camera3_device *,
+ const camera3_stream_buffer_set_t *buffer_set);
+
+ /**********************************************************************
+ * Request creation and submission
+ */
+
+ /**
+ * construct_default_request_settings:
+ *
+ * Create capture settings for standard camera use cases.
+ *
+ * The device must return a settings buffer that is configured to meet the
+ * requested use case, which must be one of the CAMERA3_TEMPLATE_*
+ * enums. All request control fields must be included.
+ *
+ * The HAL retains ownership of this structure, but the pointer to the
+ * structure must be valid until the device is closed. The framework and the
+ * HAL may not modify the buffer once it is returned by this call. The same
+ * buffer may be returned for subsequent calls for the same template, or for
+ * other templates.
+ *
+ * Performance requirements:
+ *
+ * This should be a non-blocking call. The HAL should return from this call
+ * in 1ms, and must return from this call in 5ms.
+ *
+ * Return values:
+ *
+ * Valid metadata: On successful creation of a default settings
+ * buffer.
+ *
+ * NULL: In case of a fatal error. After this is returned, only
+ * the close() method can be called successfully by the
+ * framework.
+ */
+ const camera_metadata_t* (*construct_default_request_settings)(
+ const struct camera3_device *,
+ int type);
+
+ /**
+ * process_capture_request:
+ *
+ * Send a new capture request to the HAL. The HAL should not return from
+ * this call until it is ready to accept the next request to process. Only
+ * one call to process_capture_request() will be made at a time by the
+ * framework, and the calls will all be from the same thread. The next call
+ * to process_capture_request() will be made as soon as a new request and
+ * its associated buffers are available. In a normal preview scenario, this
+ * means the function will be called again by the framework almost
+ * instantly.
+ *
+ * The actual request processing is asynchronous, with the results of
+ * capture being returned by the HAL through the process_capture_result()
+ * call. This call requires the result metadata to be available, but output
+ * buffers may simply provide sync fences to wait on. Multiple requests are
+ * expected to be in flight at once, to maintain full output frame rate.
+ *
+ * The framework retains ownership of the request structure. It is only
+ * guaranteed to be valid during this call. The HAL device must make copies
+ * of the information it needs to retain for the capture processing. The HAL
+ * is responsible for waiting on and closing the buffers' fences and
+ * returning the buffer handles to the framework.
+ *
+ * The HAL must write the file descriptor for the input buffer's release
+ * sync fence into input_buffer->release_fence, if input_buffer is not
+ * NULL. If the HAL returns -1 for the input buffer release sync fence, the
+ * framework is free to immediately reuse the input buffer. Otherwise, the
+ * framework will wait on the sync fence before refilling and reusing the
+ * input buffer.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ *
+ * The input/output buffers provided by the framework in each request
+ * may be brand new (having never before seen by the HAL).
+ *
+ * ------------------------------------------------------------------------
+ * Performance considerations:
+ *
+ * Handling a new buffer should be extremely lightweight and there should be
+ * no frame rate degradation or frame jitter introduced.
+ *
+ * This call must return fast enough to ensure that the requested frame
+ * rate can be sustained, especially for streaming cases (post-processing
+ * quality settings set to FAST). The HAL should return this call in 1
+ * frame interval, and must return from this call in 4 frame intervals.
+ *
+ * Return values:
+ *
+ * 0: On a successful start to processing the capture request
+ *
+ * -EINVAL: If the input is malformed (the settings are NULL when not
+ * allowed, there are 0 output buffers, etc) and capture processing
+ * cannot start. Failures during request processing should be
+ * handled by calling camera3_callback_ops_t.notify(). In case of
+ * this error, the framework will retain responsibility for the
+ * stream buffers' fences and the buffer handles; the HAL should
+ * not close the fences or return these buffers with
+ * process_capture_result.
+ *
+ * -ENODEV: If the camera device has encountered a serious error. After this
+ * error is returned, only the close() method can be successfully
+ * called by the framework.
+ *
+ */
+ int (*process_capture_request)(const struct camera3_device *,
+ camera3_capture_request_t *request);
+
+ /**********************************************************************
+ * Miscellaneous methods
+ */
+
+ /**
+ * get_metadata_vendor_tag_ops:
+ *
+ * Get methods to query for vendor extension metadata tag information. The
+ * HAL should fill in all the vendor tag operation methods, or leave ops
+ * unchanged if no vendor tags are defined.
+ *
+ * The definition of vendor_tag_query_ops_t can be found in
+ * system/media/camera/include/system/camera_metadata.h.
+ *
+ * >= CAMERA_DEVICE_API_VERSION_3_2:
+ * DEPRECATED. This function has been deprecated and should be set to
+ * NULL by the HAL. Please implement get_vendor_tag_ops in camera_common.h
+ * instead.
+ */
+ void (*get_metadata_vendor_tag_ops)(const struct camera3_device*,
+ vendor_tag_query_ops_t* ops);
+
+ /**
+ * dump:
+ *
+ * Print out debugging state for the camera device. This will be called by
+ * the framework when the camera service is asked for a debug dump, which
+ * happens when using the dumpsys tool, or when capturing a bugreport.
+ *
+ * The passed-in file descriptor can be used to write debugging text using
+ * dprintf() or write(). The text should be in ASCII encoding only.
+ *
+ * Performance requirements:
+ *
+ * This must be a non-blocking call. The HAL should return from this call
+ * in 1ms, must return from this call in 10ms. This call must avoid
+ * deadlocks, as it may be called at any point during camera operation.
+ * Any synchronization primitives used (such as mutex locks or semaphores)
+ * should be acquired with a timeout.
+ */
+ void (*dump)(const struct camera3_device *, int fd);
+
+ /**
+ * flush:
+ *
+ * Flush all currently in-process captures and all buffers in the pipeline
+ * on the given device. The framework will use this to dump all state as
+ * quickly as possible in order to prepare for a configure_streams() call.
+ *
+ * No buffers are required to be successfully returned, so every buffer
+ * held at the time of flush() (whether successfully filled or not) may be
+ * returned with CAMERA3_BUFFER_STATUS_ERROR. Note the HAL is still allowed
+ * to return valid (CAMERA3_BUFFER_STATUS_OK) buffers during this call,
+ * provided they are successfully filled.
+ *
+ * All requests currently in the HAL are expected to be returned as soon as
+ * possible. Not-in-process requests should return errors immediately. Any
+ * interruptible hardware blocks should be stopped, and any uninterruptible
+ * blocks should be waited on.
+ *
+ * flush() may be called concurrently to process_capture_request(), with the expectation that
+ * process_capture_request will return quickly and the request submitted in that
+ * process_capture_request call is treated like all other in-flight requests. Due to
+ * concurrency issues, it is possible that from the HAL's point of view, a
+ * process_capture_request() call may be started after flush has been invoked but has not
+ * returned yet. If such a call happens before flush() returns, the HAL should treat the new
+ * capture request like other in-flight pending requests (see #4 below).
+ *
+ * More specifically, the HAL must follow below requirements for various cases:
+ *
+ * 1. For captures that are too late for the HAL to cancel/stop, and will be
+ * completed normally by the HAL; i.e. the HAL can send shutter/notify and
+ * process_capture_result and buffers as normal.
+ *
+ * 2. For pending requests that have not done any processing, the HAL must call notify
+ * CAMERA3_MSG_ERROR_REQUEST, and return all the output buffers with
+ * process_capture_result in the error state (CAMERA3_BUFFER_STATUS_ERROR).
+ * The HAL must not place the release fence into an error state, instead,
+ * the release fences must be set to the acquire fences passed by the framework,
+ * or -1 if they have been waited on by the HAL already. This is also the path
+ * to follow for any captures for which the HAL already called notify() with
+ * CAMERA3_MSG_SHUTTER but won't be producing any metadata/valid buffers for.
+ * After CAMERA3_MSG_ERROR_REQUEST, for a given frame, only process_capture_results with
+ * buffers in CAMERA3_BUFFER_STATUS_ERROR are allowed. No further notifys or
+ * process_capture_result with non-null metadata is allowed.
+ *
+ * 3. For partially completed pending requests that will not have all the output
+ * buffers or perhaps missing metadata, the HAL should follow below:
+ *
+ * 3.1. Call notify with CAMERA3_MSG_ERROR_RESULT if some of the expected result
+ * metadata (i.e. one or more partial metadata) won't be available for the capture.
+ *
+ * 3.2. Call notify with CAMERA3_MSG_ERROR_BUFFER for every buffer that won't
+ * be produced for the capture.
+ *
+ * 3.3 Call notify with CAMERA3_MSG_SHUTTER with the capture timestamp before
+ * any buffers/metadata are returned with process_capture_result.
+ *
+ * 3.4 For captures that will produce some results, the HAL must not call
+ * CAMERA3_MSG_ERROR_REQUEST, since that indicates complete failure.
+ *
+ * 3.5. Valid buffers/metadata should be passed to the framework as normal.
+ *
+ * 3.6. Failed buffers should be returned to the framework as described for case 2.
+ * But failed buffers do not have to follow the strict ordering valid buffers do,
+ * and may be out-of-order with respect to valid buffers. For example, if buffers
+ * A, B, C, D, E are sent, D and E are failed, then A, E, B, D, C is an acceptable
+ * return order.
+ *
+ * 3.7. For fully-missing metadata, calling CAMERA3_MSG_ERROR_RESULT is sufficient, no
+ * need to call process_capture_result with NULL metadata or equivalent.
+ *
+ * 4. If a flush() is invoked while a process_capture_request() invocation is active, that
+ * process call should return as soon as possible. In addition, if a process_capture_request()
+ * call is made after flush() has been invoked but before flush() has returned, the
+ * capture request provided by the late process_capture_request call should be treated like
+ * a pending request in case #2 above.
+ *
+ * flush() should only return when there are no more outstanding buffers or
+ * requests left in the HAL. The framework may call configure_streams (as
+ * the HAL state is now quiesced) or may issue new requests.
+ *
+ * Note that it's sufficient to only support fully-succeeded and fully-failed result cases.
+ * However, it is highly desirable to support the partial failure cases as well, as it
+ * could help improve the flush call overall performance.
+ *
+ * Performance requirements:
+ *
+ * The HAL should return from this call in 100ms, and must return from this
+ * call in 1000ms. And this call must not be blocked longer than pipeline
+ * latency (see S7 for definition).
+ *
+ * Version information:
+ *
+ * only available if device version >= CAMERA_DEVICE_API_VERSION_3_1.
+ *
+ * Return values:
+ *
+ * 0: On a successful flush of the camera HAL.
+ *
+ * -EINVAL: If the input is malformed (the device is not valid).
+ *
+ * -ENODEV: If the camera device has encountered a serious error. After this
+ * error is returned, only the close() method can be successfully
+ * called by the framework.
+ */
+ int (*flush)(const struct camera3_device *);
+
+ /* reserved for future use */
+ void *reserved[8];
+} camera3_device_ops_t;
+
+/**********************************************************************
+ *
+ * Camera device definition
+ *
+ */
+typedef struct camera3_device {
+ /**
+ * common.version must equal CAMERA_DEVICE_API_VERSION_3_0 to identify this
+ * device as implementing version 3.0 of the camera device HAL.
+ *
+ * Performance requirements:
+ *
+ * Camera open (common.module->common.methods->open) should return in 200ms, and must return
+ * in 500ms.
+ * Camera close (common.close) should return in 200ms, and must return in 500ms.
+ *
+ */
+ hw_device_t common;
+ camera3_device_ops_t *ops;
+ void *priv;
+} camera3_device_t;
+
+__END_DECLS
+
+#endif /* #ifdef ANDROID_INCLUDE_CAMERA3_H */
diff --git a/android/android-emugl/guest/hardware/camera_common.h b/android/android-emugl/guest/hardware/camera_common.h
new file mode 100644
index 0000000000..7bafa88f05
--- /dev/null
+++ b/android/android-emugl/guest/hardware/camera_common.h
@@ -0,0 +1,917 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// FIXME: add well-defined names for cameras
+
+#ifndef ANDROID_INCLUDE_CAMERA_COMMON_H
+#define ANDROID_INCLUDE_CAMERA_COMMON_H
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <cutils/native_handle.h>
+#include <system/camera.h>
+#include <system/camera_vendor_tags.h>
+#include <hardware/hardware.h>
+#include <hardware/gralloc.h>
+
+__BEGIN_DECLS
+
+/**
+ * The id of this module
+ */
+#define CAMERA_HARDWARE_MODULE_ID "camera"
+
+/**
+ * Module versioning information for the Camera hardware module, based on
+ * camera_module_t.common.module_api_version. The two most significant hex
+ * digits represent the major version, and the two least significant represent
+ * the minor version.
+ *
+ *******************************************************************************
+ * Versions: 0.X - 1.X [CAMERA_MODULE_API_VERSION_1_0]
+ *
+ * Camera modules that report these version numbers implement the initial
+ * camera module HAL interface. All camera devices openable through this
+ * module support only version 1 of the camera device HAL. The device_version
+ * and static_camera_characteristics fields of camera_info are not valid. Only
+ * the android.hardware.Camera API can be supported by this module and its
+ * devices.
+ *
+ *******************************************************************************
+ * Version: 2.0 [CAMERA_MODULE_API_VERSION_2_0]
+ *
+ * Camera modules that report this version number implement the second version
+ * of the camera module HAL interface. Camera devices openable through this
+ * module may support either version 1.0 or version 2.0 of the camera device
+ * HAL interface. The device_version field of camera_info is always valid; the
+ * static_camera_characteristics field of camera_info is valid if the
+ * device_version field is 2.0 or higher.
+ *
+ *******************************************************************************
+ * Version: 2.1 [CAMERA_MODULE_API_VERSION_2_1]
+ *
+ * This camera module version adds support for asynchronous callbacks to the
+ * framework from the camera HAL module, which is used to notify the framework
+ * about changes to the camera module state. Modules that provide a valid
+ * set_callbacks() method must report at least this version number.
+ *
+ *******************************************************************************
+ * Version: 2.2 [CAMERA_MODULE_API_VERSION_2_2]
+ *
+ * This camera module version adds vendor tag support from the module, and
+ * deprecates the old vendor_tag_query_ops that were previously only
+ * accessible with a device open.
+ *
+ *******************************************************************************
+ * Version: 2.3 [CAMERA_MODULE_API_VERSION_2_3]
+ *
+ * This camera module version adds open legacy camera HAL device support.
+ * Framework can use it to open the camera device as lower device HAL version
+ * HAL device if the same device can support multiple device API versions.
+ * The standard hardware module open call (common.methods->open) continues
+ * to open the camera device with the latest supported version, which is
+ * also the version listed in camera_info_t.device_version.
+ *
+ *******************************************************************************
+ * Version: 2.4 [CAMERA_MODULE_API_VERSION_2_4]
+ *
+ * This camera module version adds below API changes:
+ *
+ * 1. Torch mode support. The framework can use it to turn on torch mode for
+ * any camera device that has a flash unit, without opening a camera device. The
+ * camera device has a higher priority accessing the flash unit than the camera
+ * module; opening a camera device will turn off the torch if it had been enabled
+ * through the module interface. When there are any resource conflicts, such as
+ * open() is called to open a camera device, the camera HAL module must notify the
+ * framework through the torch mode status callback that the torch mode has been
+ * turned off.
+ *
+ * 2. External camera (e.g. USB hot-plug camera) support. The API updates specify that
+ * the camera static info is only available when camera is connected and ready to
+ * use for external hot-plug cameras. Calls to get static info will be invalid
+ * calls when camera status is not CAMERA_DEVICE_STATUS_PRESENT. The frameworks
+ * will only count on device status change callbacks to manage the available external
+ * camera list.
+ *
+ * 3. Camera arbitration hints. This module version adds support for explicitly
+ * indicating the number of camera devices that can be simultaneously opened and used.
+ * To specify valid combinations of devices, the resource_cost and conflicting_devices
+ * fields should always be set in the camera_info structure returned by the
+ * get_camera_info call.
+ *
+ * 4. Module initialization method. This will be called by the camera service
+ * right after the HAL module is loaded, to allow for one-time initialization
+ * of the HAL. It is called before any other module methods are invoked.
+ */
+
+/**
+ * Predefined macros for currently-defined version numbers
+ */
+
+/**
+ * All module versions <= HARDWARE_MODULE_API_VERSION(1, 0xFF) must be treated
+ * as CAMERA_MODULE_API_VERSION_1_0
+ */
+#define CAMERA_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
+#define CAMERA_MODULE_API_VERSION_2_0 HARDWARE_MODULE_API_VERSION(2, 0)
+#define CAMERA_MODULE_API_VERSION_2_1 HARDWARE_MODULE_API_VERSION(2, 1)
+#define CAMERA_MODULE_API_VERSION_2_2 HARDWARE_MODULE_API_VERSION(2, 2)
+#define CAMERA_MODULE_API_VERSION_2_3 HARDWARE_MODULE_API_VERSION(2, 3)
+#define CAMERA_MODULE_API_VERSION_2_4 HARDWARE_MODULE_API_VERSION(2, 4)
+
+#define CAMERA_MODULE_API_VERSION_CURRENT CAMERA_MODULE_API_VERSION_2_4
+
+/**
+ * All device versions <= HARDWARE_DEVICE_API_VERSION(1, 0xFF) must be treated
+ * as CAMERA_DEVICE_API_VERSION_1_0
+ */
+#define CAMERA_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION(1, 0) // DEPRECATED
+#define CAMERA_DEVICE_API_VERSION_2_0 HARDWARE_DEVICE_API_VERSION(2, 0) // NO LONGER SUPPORTED
+#define CAMERA_DEVICE_API_VERSION_2_1 HARDWARE_DEVICE_API_VERSION(2, 1) // NO LONGER SUPPORTED
+#define CAMERA_DEVICE_API_VERSION_3_0 HARDWARE_DEVICE_API_VERSION(3, 0) // NO LONGER SUPPORTED
+#define CAMERA_DEVICE_API_VERSION_3_1 HARDWARE_DEVICE_API_VERSION(3, 1) // NO LONGER SUPPORTED
+#define CAMERA_DEVICE_API_VERSION_3_2 HARDWARE_DEVICE_API_VERSION(3, 2)
+#define CAMERA_DEVICE_API_VERSION_3_3 HARDWARE_DEVICE_API_VERSION(3, 3)
+#define CAMERA_DEVICE_API_VERSION_3_4 HARDWARE_DEVICE_API_VERSION(3, 4)
+
+// Device version 3.4 is current, older HAL camera device versions are not
+// recommended for new devices.
+#define CAMERA_DEVICE_API_VERSION_CURRENT CAMERA_DEVICE_API_VERSION_3_4
+
+/**
+ * Defined in /system/media/camera/include/system/camera_metadata.h
+ */
+typedef struct camera_metadata camera_metadata_t;
+
+typedef struct camera_info {
+ /**
+ * The direction that the camera faces to. See system/core/include/system/camera.h
+ * for camera facing definitions.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * It should be CAMERA_FACING_BACK or CAMERA_FACING_FRONT.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * It should be CAMERA_FACING_BACK, CAMERA_FACING_FRONT or
+ * CAMERA_FACING_EXTERNAL.
+ */
+ int facing;
+
+ /**
+ * The orientation of the camera image. The value is the angle that the
+ * camera image needs to be rotated clockwise so it shows correctly on the
+ * display in its natural orientation. It should be 0, 90, 180, or 270.
+ *
+ * For example, suppose a device has a naturally tall screen. The
+ * back-facing camera sensor is mounted in landscape. You are looking at the
+ * screen. If the top side of the camera sensor is aligned with the right
+ * edge of the screen in natural orientation, the value should be 90. If the
+ * top side of a front-facing camera sensor is aligned with the right of the
+ * screen, the value should be 270.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Valid in all camera_module versions.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * Valid if camera facing is CAMERA_FACING_BACK or CAMERA_FACING_FRONT,
+ * not valid if camera facing is CAMERA_FACING_EXTERNAL.
+ */
+ int orientation;
+
+ /**
+ * The value of camera_device_t.common.version.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_0:
+ *
+ * Not valid. Can be assumed to be CAMERA_DEVICE_API_VERSION_1_0. Do
+ * not read this field.
+ *
+ * CAMERA_MODULE_API_VERSION_2_0 or higher:
+ *
+ * Always valid
+ *
+ */
+ uint32_t device_version;
+
+ /**
+ * The camera's fixed characteristics, which include all static camera metadata
+ * specified in system/media/camera/docs/docs.html. This should be a sorted metadata
+ * buffer, and may not be modified or freed by the caller. The pointer should remain
+ * valid for the lifetime of the camera module, and values in it may not
+ * change after it is returned by get_camera_info().
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_0:
+ *
+ * Not valid. Extra characteristics are not available. Do not read this
+ * field.
+ *
+ * CAMERA_MODULE_API_VERSION_2_0 or higher:
+ *
+ * Valid if device_version >= CAMERA_DEVICE_API_VERSION_2_0. Do not read
+ * otherwise.
+ *
+ */
+ const camera_metadata_t *static_camera_characteristics;
+
+ /**
+ * The total resource "cost" of using this camera, represented as an integer
+ * value in the range [0, 100] where 100 represents total usage of the shared
+ * resource that is the limiting bottleneck of the camera subsystem. This may
+ * be a very rough estimate, and is used as a hint to the camera service to
+ * determine when to disallow multiple applications from simultaneously
+ * opening different cameras advertised by the camera service.
+ *
+ * The camera service must be able to simultaneously open and use any
+ * combination of camera devices exposed by the HAL where the sum of
+ * the resource costs of these cameras is <= 100. For determining cost,
+ * each camera device must be assumed to be configured and operating at
+ * the maximally resource-consuming framerate and stream size settings
+ * available in the configuration settings exposed for that device through
+ * the camera metadata.
+ *
+ * The camera service may still attempt to simultaneously open combinations
+ * of camera devices with a total resource cost > 100. This may succeed or
+ * fail. If this succeeds, combinations of configurations that are not
+ * supported due to resource constraints from having multiple open devices
+ * should fail during the configure calls. If the total resource cost is
+ * <= 100, open and configure should never fail for any stream configuration
+ * settings or other device capabilities that would normally succeed for a
+ * device when it is the only open camera device.
+ *
+ * This field will be used to determine whether background applications are
+ * allowed to use this camera device while other applications are using other
+ * camera devices. Note: multiple applications will never be allowed by the
+ * camera service to simultaneously open the same camera device.
+ *
+ * Example use cases:
+ *
+ * Ex. 1: Camera Device 0 = Back Camera
+ * Camera Device 1 = Front Camera
+ * - Using both camera devices causes a large framerate slowdown due to
+ * limited ISP bandwidth.
+ *
+ * Configuration:
+ *
+ * Camera Device 0 - resource_cost = 51
+ * conflicting_devices = null
+ * Camera Device 1 - resource_cost = 51
+ * conflicting_devices = null
+ *
+ * Result:
+ *
+ * Since the sum of the resource costs is > 100, if a higher-priority
+ * application has either device open, no lower-priority applications will be
+ * allowed by the camera service to open either device. If a lower-priority
+ * application is using a device that a higher-priority subsequently attempts
+ * to open, the lower-priority application will be forced to disconnect the
+ * the device.
+ *
+ * If the highest-priority application chooses, it may still attempt to open
+ * both devices (since these devices are not listed as conflicting in the
+ * conflicting_devices fields), but usage of these devices may fail in the
+ * open or configure calls.
+ *
+ * Ex. 2: Camera Device 0 = Left Back Camera
+ * Camera Device 1 = Right Back Camera
+ * Camera Device 2 = Combined stereo camera using both right and left
+ * back camera sensors used by devices 0, and 1
+ * Camera Device 3 = Front Camera
+ * - Due to do hardware constraints, up to two cameras may be open at once. The
+ * combined stereo camera may never be used at the same time as either of the
+ * two back camera devices (device 0, 1), and typically requires too much
+ * bandwidth to use at the same time as the front camera (device 3).
+ *
+ * Configuration:
+ *
+ * Camera Device 0 - resource_cost = 50
+ * conflicting_devices = { 2 }
+ * Camera Device 1 - resource_cost = 50
+ * conflicting_devices = { 2 }
+ * Camera Device 2 - resource_cost = 100
+ * conflicting_devices = { 0, 1 }
+ * Camera Device 3 - resource_cost = 50
+ * conflicting_devices = null
+ *
+ * Result:
+ *
+ * Based on the conflicting_devices fields, the camera service guarantees that
+ * the following sets of open devices will never be allowed: { 1, 2 }, { 0, 2 }.
+ *
+ * Based on the resource_cost fields, if a high-priority foreground application
+ * is using camera device 0, a background application would be allowed to open
+ * camera device 1 or 3 (but would be forced to disconnect it again if the
+ * foreground application opened another device).
+ *
+ * The highest priority application may still attempt to simultaneously open
+ * devices 0, 2, and 3, but the HAL may fail in open or configure calls for
+ * this combination.
+ *
+ * Ex. 3: Camera Device 0 = Back Camera
+ * Camera Device 1 = Front Camera
+ * Camera Device 2 = Low-power Front Camera that uses the same
+ * sensor as device 1, but only exposes image stream
+ * resolutions that can be used in low-power mode
+ * - Using both front cameras (device 1, 2) at the same time is impossible due
+ * a shared physical sensor. Using the back and "high-power" front camera
+ * (device 1) may be impossible for some stream configurations due to hardware
+ * limitations, but the "low-power" front camera option may always be used as
+ * it has special dedicated hardware.
+ *
+ * Configuration:
+ *
+ * Camera Device 0 - resource_cost = 100
+ * conflicting_devices = null
+ * Camera Device 1 - resource_cost = 100
+ * conflicting_devices = { 2 }
+ * Camera Device 2 - resource_cost = 0
+ * conflicting_devices = { 1 }
+ * Result:
+ *
+ * Based on the conflicting_devices fields, the camera service guarantees that
+ * the following sets of open devices will never be allowed: { 1, 2 }.
+ *
+ * Based on the resource_cost fields, only the highest priority application
+ * may attempt to open both device 0 and 1 at the same time. If a higher-priority
+ * application is not using device 1 or 2, a low-priority background application
+ * may open device 2 (but will be forced to disconnect it if a higher-priority
+ * application subsequently opens device 1 or 2).
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Not valid. Can be assumed to be 100. Do not read this field.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * Always valid.
+ */
+ int resource_cost;
+
+ /**
+ * An array of camera device IDs represented as NULL-terminated strings
+ * indicating other devices that cannot be simultaneously opened while this
+ * camera device is in use.
+ *
+ * This field is intended to be used to indicate that this camera device
+ * is a composite of several other camera devices, or otherwise has
+ * hardware dependencies that prohibit simultaneous usage. If there are no
+ * dependencies, a NULL may be returned in this field to indicate this.
+ *
+ * The camera service will never simultaneously open any of the devices
+ * in this list while this camera device is open.
+ *
+ * The strings pointed to in this field will not be cleaned up by the camera
+ * service, and must remain while this device is plugged in.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Not valid. Can be assumed to be NULL. Do not read this field.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * Always valid.
+ */
+ char** conflicting_devices;
+
+ /**
+ * The length of the array given in the conflicting_devices field.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Not valid. Can be assumed to be 0. Do not read this field.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * Always valid.
+ */
+ size_t conflicting_devices_length;
+
+} camera_info_t;
+
+/**
+ * camera_device_status_t:
+ *
+ * The current status of the camera device, as provided by the HAL through the
+ * camera_module_callbacks.camera_device_status_change() call.
+ *
+ * At module load time, the framework will assume all camera devices are in the
+ * CAMERA_DEVICE_STATUS_PRESENT state. The HAL should invoke
+ * camera_module_callbacks::camera_device_status_change to inform the framework
+ * of any initially NOT_PRESENT devices.
+ *
+ * Allowed transitions:
+ * PRESENT -> NOT_PRESENT
+ * NOT_PRESENT -> ENUMERATING
+ * NOT_PRESENT -> PRESENT
+ * ENUMERATING -> PRESENT
+ * ENUMERATING -> NOT_PRESENT
+ */
+typedef enum camera_device_status {
+ /**
+ * The camera device is not currently connected, and opening it will return
+ * failure.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Calls to get_camera_info must still succeed, and provide the same information
+ * it would if the camera were connected.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ *
+ * The camera device at this status must return -EINVAL for get_camera_info call,
+ * as the device is not connected.
+ */
+ CAMERA_DEVICE_STATUS_NOT_PRESENT = 0,
+
+ /**
+ * The camera device is connected, and opening it will succeed.
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * The information returned by get_camera_info cannot change due to this status
+ * change. By default, the framework will assume all devices are in this state.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ *
+ * The information returned by get_camera_info will become valid after a device's
+ * status changes to this. By default, the framework will assume all devices are in
+ * this state.
+ */
+ CAMERA_DEVICE_STATUS_PRESENT = 1,
+
+ /**
+ * The camera device is connected, but it is undergoing an enumeration and
+ * so opening the device will return -EBUSY.
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * Calls to get_camera_info must still succeed, as if the camera was in the
+ * PRESENT status.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ *
+ * The camera device at this status must return -EINVAL for get_camera_info for call,
+ * as the device is not ready.
+ */
+ CAMERA_DEVICE_STATUS_ENUMERATING = 2,
+
+} camera_device_status_t;
+
+/**
+ * torch_mode_status_t:
+ *
+ * The current status of the torch mode, as provided by the HAL through the
+ * camera_module_callbacks.torch_mode_status_change() call.
+ *
+ * The torch mode status of a camera device is applicable only when the camera
+ * device is present. The framework will not call set_torch_mode() to turn on
+ * torch mode of a camera device if the camera device is not present. At module
+ * load time, the framework will assume torch modes are in the
+ * TORCH_MODE_STATUS_AVAILABLE_OFF state if the camera device is present and
+ * android.flash.info.available is reported as true via get_camera_info() call.
+ *
+ * The behaviors of the camera HAL module that the framework expects in the
+ * following situations when a camera device's status changes:
+ * 1. A previously-disconnected camera device becomes connected.
+ * After camera_module_callbacks::camera_device_status_change() is invoked
+ * to inform the framework that the camera device is present, the framework
+ * will assume the camera device's torch mode is in
+ * TORCH_MODE_STATUS_AVAILABLE_OFF state. The camera HAL module does not need
+ * to invoke camera_module_callbacks::torch_mode_status_change() unless the
+ * flash unit is unavailable to use by set_torch_mode().
+ *
+ * 2. A previously-connected camera becomes disconnected.
+ * After camera_module_callbacks::camera_device_status_change() is invoked
+ * to inform the framework that the camera device is not present, the
+ * framework will not call set_torch_mode() for the disconnected camera
+ * device until its flash unit becomes available again. The camera HAL
+ * module does not need to invoke
+ * camera_module_callbacks::torch_mode_status_change() separately to inform
+ * that the flash unit has become unavailable.
+ *
+ * 3. open() is called to open a camera device.
+ * The camera HAL module must invoke
+ * camera_module_callbacks::torch_mode_status_change() for all flash units
+ * that have entered TORCH_MODE_STATUS_NOT_AVAILABLE state and can not be
+ * turned on by calling set_torch_mode() anymore due to this open() call.
+ * open() must not trigger TORCH_MODE_STATUS_AVAILABLE_OFF before
+ * TORCH_MODE_STATUS_NOT_AVAILABLE for all flash units that have become
+ * unavailable.
+ *
+ * 4. close() is called to close a camera device.
+ * The camera HAL module must invoke
+ * camera_module_callbacks::torch_mode_status_change() for all flash units
+ * that have entered TORCH_MODE_STATUS_AVAILABLE_OFF state and can be turned
+ * on by calling set_torch_mode() again because of enough resources freed
+ * up by this close() call.
+ *
+ * Note that the framework calling set_torch_mode() successfully must trigger
+ * TORCH_MODE_STATUS_AVAILABLE_OFF or TORCH_MODE_STATUS_AVAILABLE_ON callback
+ * for the given camera device. Additionally it must trigger
+ * TORCH_MODE_STATUS_AVAILABLE_OFF callbacks for other previously-on torch
+ * modes if HAL cannot keep multiple torch modes on simultaneously.
+ */
+typedef enum torch_mode_status {
+
+ /**
+ * The flash unit is no longer available and the torch mode can not be
+ * turned on by calling set_torch_mode(). If the torch mode is on, it
+ * will be turned off by HAL before HAL calls torch_mode_status_change().
+ */
+ TORCH_MODE_STATUS_NOT_AVAILABLE = 0,
+
+ /**
+ * A torch mode has become off and available to be turned on via
+ * set_torch_mode(). This may happen in the following
+ * cases:
+ * 1. After the resources to turn on the torch mode have become available.
+ * 2. After set_torch_mode() is called to turn off the torch mode.
+ * 3. After the framework turned on the torch mode of some other camera
+ * device and HAL had to turn off the torch modes of any camera devices
+ * that were previously on.
+ */
+ TORCH_MODE_STATUS_AVAILABLE_OFF = 1,
+
+ /**
+ * A torch mode has become on and available to be turned off via
+ * set_torch_mode(). This can happen only after set_torch_mode() is called
+ * to turn on the torch mode.
+ */
+ TORCH_MODE_STATUS_AVAILABLE_ON = 2,
+
+} torch_mode_status_t;
+
+/**
+ * Callback functions for the camera HAL module to use to inform the framework
+ * of changes to the camera subsystem.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * Each callback is called only by HAL modules implementing the indicated
+ * version or higher of the HAL module API interface.
+ *
+ * CAMERA_MODULE_API_VERSION_2_1:
+ * camera_device_status_change()
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ * torch_mode_status_change()
+
+ */
+typedef struct camera_module_callbacks {
+
+ /**
+ * camera_device_status_change:
+ *
+ * Callback to the framework to indicate that the state of a specific camera
+ * device has changed. At module load time, the framework will assume all
+ * camera devices are in the CAMERA_DEVICE_STATUS_PRESENT state. The HAL
+ * must call this method to inform the framework of any initially
+ * NOT_PRESENT devices.
+ *
+ * This callback is added for CAMERA_MODULE_API_VERSION_2_1.
+ *
+ * camera_module_callbacks: The instance of camera_module_callbacks_t passed
+ * to the module with set_callbacks.
+ *
+ * camera_id: The ID of the camera device that has a new status.
+ *
+ * new_status: The new status code, one of the camera_device_status_t enums,
+ * or a platform-specific status.
+ *
+ */
+ void (*camera_device_status_change)(const struct camera_module_callbacks*,
+ int camera_id,
+ int new_status);
+
+ /**
+ * torch_mode_status_change:
+ *
+ * Callback to the framework to indicate that the state of the torch mode
+ * of the flash unit associated with a specific camera device has changed.
+ * At module load time, the framework will assume the torch modes are in
+ * the TORCH_MODE_STATUS_AVAILABLE_OFF state if android.flash.info.available
+ * is reported as true via get_camera_info() call.
+ *
+ * This callback is added for CAMERA_MODULE_API_VERSION_2_4.
+ *
+ * camera_module_callbacks: The instance of camera_module_callbacks_t
+ * passed to the module with set_callbacks.
+ *
+ * camera_id: The ID of camera device whose flash unit has a new torch mode
+ * status.
+ *
+ * new_status: The new status code, one of the torch_mode_status_t enums.
+ */
+ void (*torch_mode_status_change)(const struct camera_module_callbacks*,
+ const char* camera_id,
+ int new_status);
+
+
+} camera_module_callbacks_t;
+
+typedef struct camera_module {
+ /**
+ * Common methods of the camera module. This *must* be the first member of
+ * camera_module as users of this structure will cast a hw_module_t to
+ * camera_module pointer in contexts where it's known the hw_module_t
+ * references a camera_module.
+ *
+ * The return values for common.methods->open for camera_module are:
+ *
+ * 0: On a successful open of the camera device.
+ *
+ * -ENODEV: The camera device cannot be opened due to an internal
+ * error.
+ *
+ * -EINVAL: The input arguments are invalid, i.e. the id is invalid,
+ * and/or the module is invalid.
+ *
+ * -EBUSY: The camera device was already opened for this camera id
+ * (by using this method or open_legacy),
+ * regardless of the device HAL version it was opened as.
+ *
+ * -EUSERS: The maximal number of camera devices that can be
+ * opened concurrently were opened already, either by
+ * this method or the open_legacy method.
+ *
+ * All other return values from common.methods->open will be treated as
+ * -ENODEV.
+ */
+ hw_module_t common;
+
+ /**
+ * get_number_of_cameras:
+ *
+ * Returns the number of camera devices accessible through the camera
+ * module. The camera devices are numbered 0 through N-1, where N is the
+ * value returned by this call. The name of the camera device for open() is
+ * simply the number converted to a string. That is, "0" for camera ID 0,
+ * "1" for camera ID 1.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_3 or lower:
+ *
+ * The value here must be static, and cannot change after the first call
+ * to this method.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * The value here must be static, and must count only built-in cameras,
+ * which have CAMERA_FACING_BACK or CAMERA_FACING_FRONT camera facing values
+ * (camera_info.facing). The HAL must not include the external cameras
+ * (camera_info.facing == CAMERA_FACING_EXTERNAL) into the return value
+ * of this call. Frameworks will use camera_device_status_change callback
+ * to manage number of external cameras.
+ */
+ int (*get_number_of_cameras)(void);
+
+ /**
+ * get_camera_info:
+ *
+ * Return the static camera information for a given camera device. This
+ * information may not change for a camera device.
+ *
+ * Return values:
+ *
+ * 0: On a successful operation
+ *
+ * -ENODEV: The information cannot be provided due to an internal
+ * error.
+ *
+ * -EINVAL: The input arguments are invalid, i.e. the id is invalid,
+ * and/or the module is invalid.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_2_4 or higher:
+ *
+ * When a camera is disconnected, its camera id becomes invalid. Calling this
+ * this method with this invalid camera id will get -EINVAL and NULL camera
+ * static metadata (camera_info.static_camera_characteristics).
+ */
+ int (*get_camera_info)(int camera_id, struct camera_info *info);
+
+ /**
+ * set_callbacks:
+ *
+ * Provide callback function pointers to the HAL module to inform framework
+ * of asynchronous camera module events. The framework will call this
+ * function once after initial camera HAL module load, after the
+ * get_number_of_cameras() method is called for the first time, and before
+ * any other calls to the module.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:
+ *
+ * Not provided by HAL module. Framework may not call this function.
+ *
+ * CAMERA_MODULE_API_VERSION_2_1:
+ *
+ * Valid to be called by the framework.
+ *
+ * Return values:
+ *
+ * 0: On a successful operation
+ *
+ * -ENODEV: The operation cannot be completed due to an internal
+ * error.
+ *
+ * -EINVAL: The input arguments are invalid, i.e. the callbacks are
+ * null
+ */
+ int (*set_callbacks)(const camera_module_callbacks_t *callbacks);
+
+ /**
+ * get_vendor_tag_ops:
+ *
+ * Get methods to query for vendor extension metadata tag information. The
+ * HAL should fill in all the vendor tag operation methods, or leave ops
+ * unchanged if no vendor tags are defined.
+ *
+ * The vendor_tag_ops structure used here is defined in:
+ * system/media/camera/include/system/vendor_tags.h
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_x/2_0/2_1:
+ * Not provided by HAL module. Framework may not call this function.
+ *
+ * CAMERA_MODULE_API_VERSION_2_2:
+ * Valid to be called by the framework.
+ */
+ void (*get_vendor_tag_ops)(vendor_tag_ops_t* ops);
+
+ /**
+ * open_legacy:
+ *
+ * Open a specific legacy camera HAL device if multiple device HAL API
+ * versions are supported by this camera HAL module. For example, if the
+ * camera module supports both CAMERA_DEVICE_API_VERSION_1_0 and
+ * CAMERA_DEVICE_API_VERSION_3_2 device API for the same camera id,
+ * framework can call this function to open the camera device as
+ * CAMERA_DEVICE_API_VERSION_1_0 device.
+ *
+ * This is an optional method. A Camera HAL module does not need to support
+ * more than one device HAL version per device, and such modules may return
+ * -ENOSYS for all calls to this method. For all older HAL device API
+ * versions that are not supported, it may return -EOPNOTSUPP. When above
+ * cases occur, The normal open() method (common.methods->open) will be
+ * used by the framework instead.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2:
+ * Not provided by HAL module. Framework will not call this function.
+ *
+ * CAMERA_MODULE_API_VERSION_2_3:
+ * Valid to be called by the framework.
+ *
+ * Return values:
+ *
+ * 0: On a successful open of the camera device.
+ *
+ * -ENOSYS This method is not supported.
+ *
+ * -EOPNOTSUPP: The requested HAL version is not supported by this method.
+ *
+ * -EINVAL: The input arguments are invalid, i.e. the id is invalid,
+ * and/or the module is invalid.
+ *
+ * -EBUSY: The camera device was already opened for this camera id
+ * (by using this method or common.methods->open method),
+ * regardless of the device HAL version it was opened as.
+ *
+ * -EUSERS: The maximal number of camera devices that can be
+ * opened concurrently were opened already, either by
+ * this method or common.methods->open method.
+ */
+ int (*open_legacy)(const struct hw_module_t* module, const char* id,
+ uint32_t halVersion, struct hw_device_t** device);
+
+ /**
+ * set_torch_mode:
+ *
+ * Turn on or off the torch mode of the flash unit associated with a given
+ * camera ID. If the operation is successful, HAL must notify the framework
+ * torch state by invoking
+ * camera_module_callbacks.torch_mode_status_change() with the new state.
+ *
+ * The camera device has a higher priority accessing the flash unit. When
+ * there are any resource conflicts, such as open() is called to open a
+ * camera device, HAL module must notify the framework through
+ * camera_module_callbacks.torch_mode_status_change() that the
+ * torch mode has been turned off and the torch mode state has become
+ * TORCH_MODE_STATUS_NOT_AVAILABLE. When resources to turn on torch mode
+ * become available again, HAL module must notify the framework through
+ * camera_module_callbacks.torch_mode_status_change() that the torch mode
+ * state has become TORCH_MODE_STATUS_AVAILABLE_OFF for set_torch_mode() to
+ * be called.
+ *
+ * When the framework calls set_torch_mode() to turn on the torch mode of a
+ * flash unit, if HAL cannot keep multiple torch modes on simultaneously,
+ * HAL should turn off the torch mode that was turned on by
+ * a previous set_torch_mode() call and notify the framework that the torch
+ * mode state of that flash unit has become TORCH_MODE_STATUS_AVAILABLE_OFF.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:
+ * Not provided by HAL module. Framework will not call this function.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ * Valid to be called by the framework.
+ *
+ * Return values:
+ *
+ * 0: On a successful operation.
+ *
+ * -ENOSYS: The camera device does not support this operation. It is
+ * returned if and only if android.flash.info.available is
+ * false.
+ *
+ * -EBUSY: The camera device is already in use.
+ *
+ * -EUSERS: The resources needed to turn on the torch mode are not
+ * available, typically because other camera devices are
+ * holding the resources to make using the flash unit not
+ * possible.
+ *
+ * -EINVAL: camera_id is invalid.
+ *
+ */
+ int (*set_torch_mode)(const char* camera_id, bool enabled);
+
+ /**
+ * init:
+ *
+ * This method is called by the camera service before any other methods
+ * are invoked, right after the camera HAL library has been successfully
+ * loaded. It may be left as NULL by the HAL module, if no initialization
+ * in needed.
+ *
+ * It can be used by HAL implementations to perform initialization and
+ * other one-time operations.
+ *
+ * Version information (based on camera_module_t.common.module_api_version):
+ *
+ * CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:
+ * Not provided by HAL module. Framework will not call this function.
+ *
+ * CAMERA_MODULE_API_VERSION_2_4:
+ * If not NULL, will always be called by the framework once after the HAL
+ * module is loaded, before any other HAL module method is called.
+ *
+ * Return values:
+ *
+ * 0: On a successful operation.
+ *
+ * -ENODEV: Initialization cannot be completed due to an internal
+ * error. The HAL must be assumed to be in a nonfunctional
+ * state.
+ *
+ */
+ int (*init)();
+
+ /* reserved for future use */
+ void* reserved[5];
+} camera_module_t;
+
+__END_DECLS
+
+#endif /* ANDROID_INCLUDE_CAMERA_COMMON_H */
diff --git a/android/android-emugl/guest/hardware/consumerir.h b/android/android-emugl/guest/hardware/consumerir.h
new file mode 100644
index 0000000000..15334c1111
--- /dev/null
+++ b/android/android-emugl/guest/hardware/consumerir.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_HARDWARE_CONSUMERIR_H
+#define ANDROID_INCLUDE_HARDWARE_CONSUMERIR_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <hardware/hardware.h>
+#include <hardware/hwcomposer_defs.h>
+
+#define CONSUMERIR_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
+#define CONSUMERIR_HARDWARE_MODULE_ID "consumerir"
+#define CONSUMERIR_TRANSMITTER "transmitter"
+
+typedef struct consumerir_freq_range {
+ int min;
+ int max;
+} consumerir_freq_range_t;
+
+typedef struct consumerir_module {
+ /**
+ * Common methods of the consumer IR module. This *must* be the first member of
+ * consumerir_module as users of this structure will cast a hw_module_t to
+ * consumerir_module pointer in contexts where it's known the hw_module_t references a
+ * consumerir_module.
+ */
+ struct hw_module_t common;
+} consumerir_module_t;
+
+typedef struct consumerir_device {
+ /**
+ * Common methods of the consumer IR device. This *must* be the first member of
+ * consumerir_device as users of this structure will cast a hw_device_t to
+ * consumerir_device pointer in contexts where it's known the hw_device_t references a
+ * consumerir_device.
+ */
+ struct hw_device_t common;
+
+ /*
+ * (*transmit)() is called to by the ConsumerIrService to send an IR pattern
+ * at a given carrier_freq.
+ *
+ * The pattern is alternating series of carrier on and off periods measured in
+ * microseconds. The carrier should be turned off at the end of a transmit
+ * even if there are and odd number of entries in the pattern array.
+ *
+ * This call should return when the transmit is complete or encounters an error.
+ *
+ * returns: 0 on success. A negative error code on error.
+ */
+ int (*transmit)(struct consumerir_device *dev, int carrier_freq,
+ const int pattern[], int pattern_len);
+
+ /*
+ * (*get_num_carrier_freqs)() is called by the ConsumerIrService to get the
+ * number of carrier freqs to allocate space for, which is then filled by
+ * a subsequent call to (*get_carrier_freqs)().
+ *
+ * returns: the number of ranges on success. A negative error code on error.
+ */
+ int (*get_num_carrier_freqs)(struct consumerir_device *dev);
+
+ /*
+ * (*get_carrier_freqs)() is called by the ConsumerIrService to enumerate
+ * which frequencies the IR transmitter supports. The HAL implementation
+ * should fill an array of consumerir_freq_range structs with the
+ * appropriate values for the transmitter, up to len elements.
+ *
+ * returns: the number of ranges on success. A negative error code on error.
+ */
+ int (*get_carrier_freqs)(struct consumerir_device *dev,
+ size_t len, consumerir_freq_range_t *ranges);
+
+ /* Reserved for future use. Must be NULL. */
+ void* reserved[8 - 3];
+} consumerir_device_t;
+
+#endif /* ANDROID_INCLUDE_HARDWARE_CONSUMERIR_H */
diff --git a/android/android-emugl/guest/hardware/context_hub.h b/android/android-emugl/guest/hardware/context_hub.h
new file mode 100644
index 0000000000..137cb3e58d
--- /dev/null
+++ b/android/android-emugl/guest/hardware/context_hub.h
@@ -0,0 +1,450 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef CONTEXT_HUB_H
+#define CONTEXT_HUB_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include <hardware/hardware.h>
+
+/**
+ * This header file defines the interface of a Context Hub Implementation to
+ * the Android service exposing Context hub capabilities to applications.
+ * The Context hub is expected to a low power compute domain with the following
+ * defining charecteristics -
+ *
+ * 1) Access to sensors like accelerometer, gyroscope, magenetometer.
+ * 2) Access to radios like GPS, Wifi, Bluetooth etc.
+ * 3) Access to low power audio sensing.
+ *
+ * Implementations of this HAL can add additional sensors not defined by the
+ * Android API. Such information sources shall be private to the implementation.
+ *
+ * The Context Hub HAL exposes the construct of code download. A piece of binary
+ * code can be pushed to the context hub through the supported APIs.
+ *
+ * This version of the HAL designs in the possibility of multiple context hubs.
+ */
+
+__BEGIN_DECLS
+
+/*****************************************************************************/
+
+#define CONTEXT_HUB_HEADER_MAJOR_VERSION 1
+#define CONTEXT_HUB_HEADER_MINOR_VERSION 1
+#define CONTEXT_HUB_DEVICE_API_VERSION \
+ HARDWARE_DEVICE_API_VERSION(CONTEXT_HUB_HEADER_MAJOR_VERSION, \
+ CONTEXT_HUB_HEADER_MINOR_VERSION)
+
+#define CONTEXT_HUB_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION(1, 0)
+#define CONTEXT_HUB_DEVICE_API_VERSION_1_1 HARDWARE_DEVICE_API_VERSION(1, 1)
+
+/**
+ * The id of this module
+ */
+#define CONTEXT_HUB_MODULE_ID "context_hub"
+
+/**
+ * Name of the device to open
+ */
+#define CONTEXT_HUB_HARDWARE_POLL "ctxt_poll"
+
+/**
+ * Memory types for code upload. Device-specific. At least HUB_MEM_TYPE_MAIN must be supported
+ */
+#define HUB_MEM_TYPE_MAIN 0
+#define HUB_MEM_TYPE_SECONDARY 1
+#define HUB_MEM_TYPE_TCM 2
+
+
+#define HUB_MEM_TYPE_FIRST_VENDOR 0x80000000ul
+
+#define NANOAPP_VENDORS_ALL 0xFFFFFFFFFF000000ULL
+#define NANOAPP_VENDOR_ALL_APPS 0x0000000000FFFFFFULL
+
+#define NANOAPP_VENDOR(name) \
+ (((uint64_t)(name)[0] << 56) | \
+ ((uint64_t)(name)[1] << 48) | \
+ ((uint64_t)(name)[2] << 40) | \
+ ((uint64_t)(name)[3] << 32) | \
+ ((uint64_t)(name)[4] << 24))
+
+/*
+ * generates the NANOAPP ID from vendor id and app seq# id
+ */
+#define NANO_APP_ID(vendor, seq_id) \
+ (((uint64_t)(vendor) & NANOAPP_VENDORS_ALL) | ((uint64_t)(seq_id) & NANOAPP_VENDOR_ALL_APPS))
+
+struct hub_app_name_t {
+ uint64_t id;
+};
+
+/**
+ * Other memory types (likely not writeable, informational only)
+ */
+#define HUB_MEM_TYPE_BOOTLOADER 0xfffffffful
+#define HUB_MEM_TYPE_OS 0xfffffffeul
+#define HUB_MEM_TYPE_EEDATA 0xfffffffdul
+#define HUB_MEM_TYPE_RAM 0xfffffffcul
+
+/**
+ * Types of memory blocks on the context hub
+ * */
+#define MEM_FLAG_READ 0x1 // Memory can be written to
+#define MEM_FLAG_WRITE 0x2 // Memory can be written to
+#define MEM_FLAG_EXEC 0x4 // Memory can be executed from
+
+/**
+ * The following structure defines each memory block in detail
+ */
+struct mem_range_t {
+ uint32_t total_bytes;
+ uint32_t free_bytes;
+ uint32_t type; // HUB_MEM_TYPE_*
+ uint32_t mem_flags; // MEM_FLAG_*
+};
+
+#define NANOAPP_SIGNED_FLAG 0x1
+#define NANOAPP_ENCRYPTED_FLAG 0x2
+#define NANOAPP_MAGIC (((uint32_t)'N' << 0) | ((uint32_t)'A' << 8) | ((uint32_t)'N' << 16) | ((uint32_t)'O' << 24))
+
+// The binary format below is in little endian format
+struct nano_app_binary_t {
+ uint32_t header_version; // 0x1 for this version
+ uint32_t magic; // "NANO"
+ struct hub_app_name_t app_id; // App Id contains vendor id
+ uint32_t app_version; // Version of the app
+ uint32_t flags; // Signed, encrypted
+ uint64_t hw_hub_type; // which hub type is this compiled for
+
+ // The version of the CHRE API that this nanoapp was compiled against.
+ // If these values are both set to 0, then they must be interpreted the same
+ // as if major version were set to 1, and minor 0 (the first valid CHRE API
+ // version).
+ uint8_t target_chre_api_major_version;
+ uint8_t target_chre_api_minor_version;
+
+ uint8_t reserved[6]; // Should be all zeroes
+ uint8_t custom_binary[0]; // start of custom binary data
+} __attribute__((packed));
+
+struct hub_app_info {
+ struct hub_app_name_t app_name;
+ uint32_t version;
+ uint32_t num_mem_ranges;
+ struct mem_range_t mem_usage[2]; // Apps could only have RAM and SHARED_DATA
+};
+
+/**
+ * Following enum defines the types of sensors that a hub may declare support
+ * for. Declaration for support would mean that the hub can access and process
+ * data from that particular sensor type.
+ */
+
+typedef enum {
+ CONTEXT_SENSOR_RESERVED, // 0
+ CONTEXT_SENSOR_ACCELEROMETER, // 1
+ CONTEXT_SENSOR_GYROSCOPE, // 2
+ CONTEXT_SENSOR_MAGNETOMETER, // 3
+ CONTEXT_SENSOR_BAROMETER, // 4
+ CONTEXT_SENSOR_PROXIMITY_SENSOR, // 5
+ CONTEXT_SENSOR_AMBIENT_LIGHT_SENSOR, // 6
+
+ CONTEXT_SENSOR_GPS = 0x100, // 0x100
+ // Reserving this space for variants on GPS
+ CONTEXT_SENSOR_WIFI = 0x200, // 0x200
+ // Reserving this space for variants on WIFI
+ CONTEXT_SENSOR_AUDIO = 0x300, // 0x300
+ // Reserving this space for variants on Audio
+ CONTEXT_SENSOR_CAMERA = 0x400, // 0x400
+ // Reserving this space for variants on Camera
+ CONTEXT_SENSOR_BLE = 0x500, // 0x500
+
+ CONTEXT_SENSOR_MAX = 0xffffffff, //make sure enum size is set
+} context_sensor_e;
+
+/**
+ * Sensor types beyond CONTEXT_HUB_TYPE_PRIVATE_SENSOR_BASE are custom types
+ */
+#define CONTEXT_HUB_TYPE_PRIVATE_SENSOR_BASE 0x10000
+
+/**
+ * The following structure describes a sensor
+ */
+struct physical_sensor_description_t {
+ uint32_t sensor_type; // From the definitions above eg: 100
+ const char *type_string; // Type as a string. eg: "GPS"
+ const char *name; // Identifier eg: "Bosch BMI160"
+ const char *vendor; // Vendor : eg "STM"
+ uint32_t version; // Version : eg 0x1001
+ uint32_t fifo_reserved_count; // Batching possible in hardware. Please
+ // note that here hardware does not include
+ // the context hub itself. Thus, this
+ // definition may be different from say the
+ // number advertised in the sensors HAL
+ // which allows for batching in a hub.
+ uint32_t fifo_max_count; // maximum number of batchable events.
+ uint64_t min_delay_ms; // in milliseconds, corresponding to highest
+ // sampling freq.
+ uint64_t max_delay_ms; // in milliseconds, corresponds to minimum
+ // sampling frequency
+ float peak_power_mw; // At max frequency & no batching, power
+ // in milliwatts
+};
+
+struct connected_sensor_t {
+ uint32_t sensor_id; // identifier for this sensor
+
+ /* This union may be extended to other sensor types */
+ union {
+ struct physical_sensor_description_t physical_sensor;
+ };
+};
+
+struct hub_message_t {
+ struct hub_app_name_t app_name; /* To/From this nanoapp */
+ uint32_t message_type;
+ uint32_t message_len;
+ const void *message;
+};
+
+/**
+ * Definition of a context hub. A device may contain more than one low
+ * power domain. In that case, please add an entry for each hub. However,
+ * it is perfectly OK for a device to declare one context hub and manage
+ * them internally as several
+ */
+
+struct context_hub_t {
+ const char *name; // descriptive name eg: "Awesome Hub #1"
+ const char *vendor; // hub hardware vendor eg: "Qualcomm"
+ const char *toolchain; // toolchain to make binaries eg:"gcc ARM"
+ uint32_t platform_version; // Version of the hardware : eg 0x20
+ uint32_t toolchain_version; // Version of the toolchain : eg: 0x484
+ uint32_t hub_id; // a device unique id for this hub
+
+ float peak_mips; // Peak MIPS platform can deliver
+ float stopped_power_draw_mw; // if stopped, retention power, milliwatts
+ float sleep_power_draw_mw; // if sleeping, retention power, milliwatts
+ float peak_power_draw_mw; // for a busy CPUm power in milliwatts
+
+ const struct connected_sensor_t *connected_sensors; // array of connected sensors
+ uint32_t num_connected_sensors; // number of connected sensors
+
+ const struct hub_app_name_t os_app_name; /* send msgs here for OS functions */
+ uint32_t max_supported_msg_len; // This is the maximum size of the message that can
+ // be sent to the hub in one chunk (in bytes)
+};
+
+/**
+ * Definitions of message payloads, see hub_messages_e
+ */
+
+struct status_response_t {
+ int32_t result; // 0 on success, < 0 : error on failure. > 0 for any descriptive status
+};
+
+struct apps_enable_request_t {
+ struct hub_app_name_t app_name;
+};
+
+struct apps_disable_request_t {
+ struct hub_app_name_t app_name;
+};
+
+struct load_app_request_t {
+ struct nano_app_binary_t app_binary;
+};
+
+struct unload_app_request_t {
+ struct hub_app_name_t app_name;
+};
+
+struct query_apps_request_t {
+ struct hub_app_name_t app_name;
+};
+
+/**
+ * CONTEXT_HUB_APPS_ENABLE
+ * Enables the specified nano-app(s)
+ *
+ * Payload : apps_enable_request_t
+ *
+ * Response : status_response_t
+ * On receipt of a successful response, it is
+ * expected that
+ *
+ * i) the app is executing and able to receive
+ * any messages.
+ *
+ * ii) the system should be able to respond to an
+ * CONTEXT_HUB_QUERY_APPS request.
+ *
+ */
+
+/**
+ * CONTEXT_HUB_APPS_DISABLE
+ * Stops the specified nano-app(s)
+ *
+ * Payload : apps_disable_request_t
+ *
+ * Response : status_response_t
+ * On receipt of a successful response,
+ * i) No further events are delivered to the
+ * nanoapp.
+ *
+ * ii) The app should not show up in a
+ * CONTEXT_HUB_QUERY_APPS request.
+ */
+
+/**
+ * CONTEXT_HUB_LOAD_APP
+ * Loads a nanoApp. Upon loading the nanoApp's init method is
+ * called.
+ *
+ *
+ * Payload : load_app_request_t
+ *
+ * Response : status_response_t On receipt of a successful
+ * response, it is expected that
+ * i) the app is executing and able to receive
+ * messages.
+ *
+ * ii) the system should be able to respond to a
+ * CONTEXT_HUB_QUERY_APPS.
+ */
+
+/**
+ * CONTEXT_HUB_UNLOAD_APP
+ * Unloads a nanoApp. Before the unload, the app's deinit method
+ * is called.
+ *
+ * Payload : unload_app_request_t.
+ *
+ * Response : status_response_t On receipt of a
+ * successful response, it is expected that
+ * i) No further events are delivered to the
+ * nanoapp.
+ *
+ * ii) the system does not list the app in a
+ * response to a CONTEXT_HUB_QUERY_APPS.
+ *
+ * iii) Any resources used by the app should be
+ * freed up and available to the system.
+ */
+
+/**
+ * CONTEXT_HUB_QUERY_APPS Queries for status of apps
+ *
+ * Payload : query_apps_request_t
+ *
+ * Response : struct hub_app_info[]
+ */
+
+/**
+ * CONTEXT_HUB_QUERY_MEMORY Queries for memory regions on the
+ * hub
+ *
+ * Payload : NULL
+ *
+ * Response : struct mem_range_t[]
+ */
+
+/**
+ * CONTEXT_HUB_OS_REBOOT
+ * Reboots context hub OS, restarts all the nanoApps.
+ * No reboot notification is sent to nanoApps; reboot happens immediately and
+ * unconditionally; all volatile FW state and any data is lost as a result
+ *
+ * Payload : none
+ *
+ * Response : status_response_t
+ * On receipt of a successful response, it is
+ * expected that
+ *
+ * i) system reboot has completed;
+ * status contains reboot reason code (platform-specific)
+ *
+ * Unsolicited response:
+ * System may send unsolicited response at any time;
+ * this should be interpreted as FW reboot, and necessary setup
+ * has to be done (same or similar to the setup done on system boot)
+ */
+
+/**
+ * All communication between the context hubs and the Context Hub Service is in
+ * the form of messages. Some message types are distinguished and their
+ * Semantics shall be well defined.
+ * Custom message types should be defined starting above
+ * CONTEXT_HUB_PRIVATE_MSG_BASE
+ */
+
+typedef enum {
+ CONTEXT_HUB_APPS_ENABLE = 1, // Enables loaded nano-app(s)
+ CONTEXT_HUB_APPS_DISABLE = 2, // Disables loaded nano-app(s)
+ CONTEXT_HUB_LOAD_APP = 3, // Load a supplied app
+ CONTEXT_HUB_UNLOAD_APP = 4, // Unload a specified app
+ CONTEXT_HUB_QUERY_APPS = 5, // Query for app(s) info on hub
+ CONTEXT_HUB_QUERY_MEMORY = 6, // Query for memory info
+ CONTEXT_HUB_OS_REBOOT = 7, // Request to reboot context HUB OS
+} hub_messages_e;
+
+#define CONTEXT_HUB_TYPE_PRIVATE_MSG_BASE 0x00400
+
+/**
+ * A callback registers with the context hub service to pass messages
+ * coming from the hub to the service/clients.
+ */
+typedef int context_hub_callback(uint32_t hub_id, const struct hub_message_t *rxed_msg, void *cookie);
+
+
+/**
+ * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
+ * and the fields of this data structure must begin with hw_module_t
+ * followed by module specific information.
+ */
+struct context_hub_module_t {
+ struct hw_module_t common;
+
+ /**
+ * Enumerate all available hubs.The list is returned in "list".
+ * @return result : number of hubs in list or error (negative)
+ *
+ * This method shall be called at device bootup.
+ */
+ int (*get_hubs)(struct context_hub_module_t* module, const struct context_hub_t ** list);
+
+ /**
+ * Registers a callback for the HAL implementation to communicate
+ * with the context hub service.
+ * @return result : 0 if successful, error code otherwise
+ */
+ int (*subscribe_messages)(uint32_t hub_id, context_hub_callback cbk, void *cookie);
+
+ /**
+ * Send a message to a hub
+ * @return result : 0 if successful, error code otherwise
+ */
+ int (*send_message)(uint32_t hub_id, const struct hub_message_t *msg);
+
+};
+
+__END_DECLS
+
+#endif // CONTEXT_HUB_SENSORS_INTERFACE_H
diff --git a/android/android-emugl/guest/hardware/fb.h b/android/android-emugl/guest/hardware/fb.h
new file mode 100644
index 0000000000..65720a3931
--- /dev/null
+++ b/android/android-emugl/guest/hardware/fb.h
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_FB_INTERFACE_H
+#define ANDROID_FB_INTERFACE_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include <cutils/native_handle.h>
+
+#include <hardware/hardware.h>
+
+__BEGIN_DECLS
+
+#define GRALLOC_HARDWARE_FB0 "fb0"
+
+/*****************************************************************************/
+
+
+/*****************************************************************************/
+
+typedef struct framebuffer_device_t {
+ /**
+ * Common methods of the framebuffer device. This *must* be the first member of
+ * framebuffer_device_t as users of this structure will cast a hw_device_t to
+ * framebuffer_device_t pointer in contexts where it's known the hw_device_t references a
+ * framebuffer_device_t.
+ */
+ struct hw_device_t common;
+
+ /* flags describing some attributes of the framebuffer */
+ const uint32_t flags;
+
+ /* dimensions of the framebuffer in pixels */
+ const uint32_t width;
+ const uint32_t height;
+
+ /* frambuffer stride in pixels */
+ const int stride;
+
+ /* framebuffer pixel format */
+ const int format;
+
+ /* resolution of the framebuffer's display panel in pixel per inch*/
+ const float xdpi;
+ const float ydpi;
+
+ /* framebuffer's display panel refresh rate in frames per second */
+ const float fps;
+
+ /* min swap interval supported by this framebuffer */
+ const int minSwapInterval;
+
+ /* max swap interval supported by this framebuffer */
+ const int maxSwapInterval;
+
+ /* Number of framebuffers supported*/
+ const int numFramebuffers;
+
+ int reserved[7];
+
+ /*
+ * requests a specific swap-interval (same definition than EGL)
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*setSwapInterval)(struct framebuffer_device_t* window,
+ int interval);
+
+ /*
+ * This hook is OPTIONAL.
+ *
+ * It is non NULL If the framebuffer driver supports "update-on-demand"
+ * and the given rectangle is the area of the screen that gets
+ * updated during (*post)().
+ *
+ * This is useful on devices that are able to DMA only a portion of
+ * the screen to the display panel, upon demand -- as opposed to
+ * constantly refreshing the panel 60 times per second, for instance.
+ *
+ * Only the area defined by this rectangle is guaranteed to be valid, that
+ * is, the driver is not allowed to post anything outside of this
+ * rectangle.
+ *
+ * The rectangle evaluated during (*post)() and specifies which area
+ * of the buffer passed in (*post)() shall to be posted.
+ *
+ * return -EINVAL if width or height <=0, or if left or top < 0
+ */
+ int (*setUpdateRect)(struct framebuffer_device_t* window,
+ int left, int top, int width, int height);
+
+ /*
+ * Post <buffer> to the display (display it on the screen)
+ * The buffer must have been allocated with the
+ * GRALLOC_USAGE_HW_FB usage flag.
+ * buffer must be the same width and height as the display and must NOT
+ * be locked.
+ *
+ * The buffer is shown during the next VSYNC.
+ *
+ * If the same buffer is posted again (possibly after some other buffer),
+ * post() will block until the the first post is completed.
+ *
+ * Internally, post() is expected to lock the buffer so that a
+ * subsequent call to gralloc_module_t::(*lock)() with USAGE_RENDER or
+ * USAGE_*_WRITE will block until it is safe; that is typically once this
+ * buffer is shown and another buffer has been posted.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*post)(struct framebuffer_device_t* dev, buffer_handle_t buffer);
+
+
+ /*
+ * The (*compositionComplete)() method must be called after the
+ * compositor has finished issuing GL commands for client buffers.
+ */
+
+ int (*compositionComplete)(struct framebuffer_device_t* dev);
+
+ /*
+ * This hook is OPTIONAL.
+ *
+ * If non NULL it will be caused by SurfaceFlinger on dumpsys
+ */
+ void (*dump)(struct framebuffer_device_t* dev, char *buff, int buff_len);
+
+ /*
+ * (*enableScreen)() is used to either blank (enable=0) or
+ * unblank (enable=1) the screen this framebuffer is attached to.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*enableScreen)(struct framebuffer_device_t* dev, int enable);
+
+ void* reserved_proc[6];
+
+} framebuffer_device_t;
+
+
+/** convenience API for opening and closing a supported device */
+
+static inline int framebuffer_open(const struct hw_module_t* module,
+ struct framebuffer_device_t** device) {
+ return module->methods->open(module,
+ GRALLOC_HARDWARE_FB0, TO_HW_DEVICE_T_OPEN(device));
+}
+
+static inline int framebuffer_close(struct framebuffer_device_t* device) {
+ return device->common.close(&device->common);
+}
+
+
+__END_DECLS
+
+#endif // ANDROID_FB_INTERFACE_H
diff --git a/android/android-emugl/guest/hardware/gralloc.h b/android/android-emugl/guest/hardware/gralloc.h
new file mode 100644
index 0000000000..5dafea0202
--- /dev/null
+++ b/android/android-emugl/guest/hardware/gralloc.h
@@ -0,0 +1,415 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef ANDROID_GRALLOC_INTERFACE_H
+#define ANDROID_GRALLOC_INTERFACE_H
+
+#include <system/graphics.h>
+#include <hardware/hardware.h>
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#include <cutils/native_handle.h>
+
+#include <hardware/hardware.h>
+#include <hardware/fb.h>
+
+__BEGIN_DECLS
+
+/**
+ * Module versioning information for the Gralloc hardware module, based on
+ * gralloc_module_t.common.module_api_version.
+ *
+ * Version History:
+ *
+ * GRALLOC_MODULE_API_VERSION_0_1:
+ * Initial Gralloc hardware module API.
+ *
+ * GRALLOC_MODULE_API_VERSION_0_2:
+ * Add support for flexible YCbCr format with (*lock_ycbcr)() method.
+ *
+ * GRALLOC_MODULE_API_VERSION_0_3:
+ * Add support for fence passing to/from lock/unlock.
+ */
+
+#define GRALLOC_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
+#define GRALLOC_MODULE_API_VERSION_0_2 HARDWARE_MODULE_API_VERSION(0, 2)
+#define GRALLOC_MODULE_API_VERSION_0_3 HARDWARE_MODULE_API_VERSION(0, 3)
+
+#define GRALLOC_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION(0, 1)
+
+/**
+ * The id of this module
+ */
+#define GRALLOC_HARDWARE_MODULE_ID "gralloc"
+
+/**
+ * Name of the graphics device to open
+ */
+
+#define GRALLOC_HARDWARE_GPU0 "gpu0"
+
+enum {
+ /* buffer is never read in software */
+ GRALLOC_USAGE_SW_READ_NEVER = 0x00000000U,
+ /* buffer is rarely read in software */
+ GRALLOC_USAGE_SW_READ_RARELY = 0x00000002U,
+ /* buffer is often read in software */
+ GRALLOC_USAGE_SW_READ_OFTEN = 0x00000003U,
+ /* mask for the software read values */
+ GRALLOC_USAGE_SW_READ_MASK = 0x0000000FU,
+
+ /* buffer is never written in software */
+ GRALLOC_USAGE_SW_WRITE_NEVER = 0x00000000U,
+ /* buffer is rarely written in software */
+ GRALLOC_USAGE_SW_WRITE_RARELY = 0x00000020U,
+ /* buffer is often written in software */
+ GRALLOC_USAGE_SW_WRITE_OFTEN = 0x00000030U,
+ /* mask for the software write values */
+ GRALLOC_USAGE_SW_WRITE_MASK = 0x000000F0U,
+
+ /* buffer will be used as an OpenGL ES texture */
+ GRALLOC_USAGE_HW_TEXTURE = 0x00000100U,
+ /* buffer will be used as an OpenGL ES render target */
+ GRALLOC_USAGE_HW_RENDER = 0x00000200U,
+ /* buffer will be used by the 2D hardware blitter */
+ GRALLOC_USAGE_HW_2D = 0x00000400U,
+ /* buffer will be used by the HWComposer HAL module */
+ GRALLOC_USAGE_HW_COMPOSER = 0x00000800U,
+ /* buffer will be used with the framebuffer device */
+ GRALLOC_USAGE_HW_FB = 0x00001000U,
+
+ /* buffer should be displayed full-screen on an external display when
+ * possible */
+ GRALLOC_USAGE_EXTERNAL_DISP = 0x00002000U,
+
+ /* Must have a hardware-protected path to external display sink for
+ * this buffer. If a hardware-protected path is not available, then
+ * either don't composite only this buffer (preferred) to the
+ * external sink, or (less desirable) do not route the entire
+ * composition to the external sink. */
+ GRALLOC_USAGE_PROTECTED = 0x00004000U,
+
+ /* buffer may be used as a cursor */
+ GRALLOC_USAGE_CURSOR = 0x00008000U,
+
+ /* buffer will be used with the HW video encoder */
+ GRALLOC_USAGE_HW_VIDEO_ENCODER = 0x00010000U,
+ /* buffer will be written by the HW camera pipeline */
+ GRALLOC_USAGE_HW_CAMERA_WRITE = 0x00020000U,
+ /* buffer will be read by the HW camera pipeline */
+ GRALLOC_USAGE_HW_CAMERA_READ = 0x00040000U,
+ /* buffer will be used as part of zero-shutter-lag queue */
+ GRALLOC_USAGE_HW_CAMERA_ZSL = 0x00060000U,
+ /* mask for the camera access values */
+ GRALLOC_USAGE_HW_CAMERA_MASK = 0x00060000U,
+ /* mask for the software usage bit-mask */
+ GRALLOC_USAGE_HW_MASK = 0x00071F00U,
+
+ /* buffer will be used as a RenderScript Allocation */
+ GRALLOC_USAGE_RENDERSCRIPT = 0x00100000U,
+
+ /* Set by the consumer to indicate to the producer that they may attach a
+ * buffer that they did not detach from the BufferQueue. Will be filtered
+ * out by GRALLOC_USAGE_ALLOC_MASK, so gralloc modules will not need to
+ * handle this flag. */
+ GRALLOC_USAGE_FOREIGN_BUFFERS = 0x00200000U,
+
+ /* Mask of all flags which could be passed to a gralloc module for buffer
+ * allocation. Any flags not in this mask do not need to be handled by
+ * gralloc modules. */
+ GRALLOC_USAGE_ALLOC_MASK = ~(GRALLOC_USAGE_FOREIGN_BUFFERS),
+
+ /* implementation-specific private usage flags */
+ GRALLOC_USAGE_PRIVATE_0 = 0x10000000U,
+ GRALLOC_USAGE_PRIVATE_1 = 0x20000000U,
+ GRALLOC_USAGE_PRIVATE_2 = 0x40000000U,
+ GRALLOC_USAGE_PRIVATE_3 = 0x80000000U,
+ GRALLOC_USAGE_PRIVATE_MASK = 0xF0000000U,
+};
+
+/*****************************************************************************/
+
+/**
+ * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
+ * and the fields of this data structure must begin with hw_module_t
+ * followed by module specific information.
+ */
+typedef struct gralloc_module_t {
+ struct hw_module_t common;
+
+ /*
+ * (*registerBuffer)() must be called before a buffer_handle_t that has not
+ * been created with (*alloc_device_t::alloc)() can be used.
+ *
+ * This is intended to be used with buffer_handle_t's that have been
+ * received in this process through IPC.
+ *
+ * This function checks that the handle is indeed a valid one and prepares
+ * it for use with (*lock)() and (*unlock)().
+ *
+ * It is not necessary to call (*registerBuffer)() on a handle created
+ * with (*alloc_device_t::alloc)().
+ *
+ * returns an error if this buffer_handle_t is not valid.
+ */
+ int (*registerBuffer)(struct gralloc_module_t const* module,
+ buffer_handle_t handle);
+
+ /*
+ * (*unregisterBuffer)() is called once this handle is no longer needed in
+ * this process. After this call, it is an error to call (*lock)(),
+ * (*unlock)(), or (*registerBuffer)().
+ *
+ * This function doesn't close or free the handle itself; this is done
+ * by other means, usually through libcutils's native_handle_close() and
+ * native_handle_free().
+ *
+ * It is an error to call (*unregisterBuffer)() on a buffer that wasn't
+ * explicitly registered first.
+ */
+ int (*unregisterBuffer)(struct gralloc_module_t const* module,
+ buffer_handle_t handle);
+
+ /*
+ * The (*lock)() method is called before a buffer is accessed for the
+ * specified usage. This call may block, for instance if the h/w needs
+ * to finish rendering or if CPU caches need to be synchronized.
+ *
+ * The caller promises to modify only pixels in the area specified
+ * by (l,t,w,h).
+ *
+ * The content of the buffer outside of the specified area is NOT modified
+ * by this call.
+ *
+ * If usage specifies GRALLOC_USAGE_SW_*, vaddr is filled with the address
+ * of the buffer in virtual memory.
+ *
+ * Note calling (*lock)() on HAL_PIXEL_FORMAT_YCbCr_*_888 buffers will fail
+ * and return -EINVAL. These buffers must be locked with (*lock_ycbcr)()
+ * instead.
+ *
+ * THREADING CONSIDERATIONS:
+ *
+ * It is legal for several different threads to lock a buffer from
+ * read access, none of the threads are blocked.
+ *
+ * However, locking a buffer simultaneously for write or read/write is
+ * undefined, but:
+ * - shall not result in termination of the process
+ * - shall not block the caller
+ * It is acceptable to return an error or to leave the buffer's content
+ * into an indeterminate state.
+ *
+ * If the buffer was created with a usage mask incompatible with the
+ * requested usage flags here, -EINVAL is returned.
+ *
+ */
+
+ int (*lock)(struct gralloc_module_t const* module,
+ buffer_handle_t handle, int usage,
+ int l, int t, int w, int h,
+ void** vaddr);
+
+
+ /*
+ * The (*unlock)() method must be called after all changes to the buffer
+ * are completed.
+ */
+
+ int (*unlock)(struct gralloc_module_t const* module,
+ buffer_handle_t handle);
+
+
+ /* reserved for future use */
+ int (*perform)(struct gralloc_module_t const* module,
+ int operation, ... );
+
+ /*
+ * The (*lock_ycbcr)() method is like the (*lock)() method, with the
+ * difference that it fills a struct ycbcr with a description of the buffer
+ * layout, and zeroes out the reserved fields.
+ *
+ * If the buffer format is not compatible with a flexible YUV format (e.g.
+ * the buffer layout cannot be represented with the ycbcr struct), it
+ * will return -EINVAL.
+ *
+ * This method must work on buffers with HAL_PIXEL_FORMAT_YCbCr_*_888
+ * if supported by the device, as well as with any other format that is
+ * requested by the multimedia codecs when they are configured with a
+ * flexible-YUV-compatible color-format with android native buffers.
+ *
+ * Note that this method may also be called on buffers of other formats,
+ * including non-YUV formats.
+ *
+ * Added in GRALLOC_MODULE_API_VERSION_0_2.
+ */
+
+ int (*lock_ycbcr)(struct gralloc_module_t const* module,
+ buffer_handle_t handle, int usage,
+ int l, int t, int w, int h,
+ struct android_ycbcr *ycbcr);
+
+ /*
+ * The (*lockAsync)() method is like the (*lock)() method except
+ * that the buffer's sync fence object is passed into the lock
+ * call instead of requiring the caller to wait for completion.
+ *
+ * The gralloc implementation takes ownership of the fenceFd and
+ * is responsible for closing it when no longer needed.
+ *
+ * Added in GRALLOC_MODULE_API_VERSION_0_3.
+ */
+ int (*lockAsync)(struct gralloc_module_t const* module,
+ buffer_handle_t handle, int usage,
+ int l, int t, int w, int h,
+ void** vaddr, int fenceFd);
+
+ /*
+ * The (*unlockAsync)() method is like the (*unlock)() method
+ * except that a buffer sync fence object is returned from the
+ * lock call, representing the completion of any pending work
+ * performed by the gralloc implementation.
+ *
+ * The caller takes ownership of the fenceFd and is responsible
+ * for closing it when no longer needed.
+ *
+ * Added in GRALLOC_MODULE_API_VERSION_0_3.
+ */
+ int (*unlockAsync)(struct gralloc_module_t const* module,
+ buffer_handle_t handle, int* fenceFd);
+
+ /*
+ * The (*lockAsync_ycbcr)() method is like the (*lock_ycbcr)()
+ * method except that the buffer's sync fence object is passed
+ * into the lock call instead of requiring the caller to wait for
+ * completion.
+ *
+ * The gralloc implementation takes ownership of the fenceFd and
+ * is responsible for closing it when no longer needed.
+ *
+ * Added in GRALLOC_MODULE_API_VERSION_0_3.
+ */
+ int (*lockAsync_ycbcr)(struct gralloc_module_t const* module,
+ buffer_handle_t handle, int usage,
+ int l, int t, int w, int h,
+ struct android_ycbcr *ycbcr, int fenceFd);
+
+ /* reserved for future use */
+ void* reserved_proc[3];
+} gralloc_module_t;
+
+/*****************************************************************************/
+
+/**
+ * Every device data structure must begin with hw_device_t
+ * followed by module specific public methods and attributes.
+ */
+
+typedef struct alloc_device_t {
+ struct hw_device_t common;
+
+ /*
+ * (*alloc)() Allocates a buffer in graphic memory with the requested
+ * parameters and returns a buffer_handle_t and the stride in pixels to
+ * allow the implementation to satisfy hardware constraints on the width
+ * of a pixmap (eg: it may have to be multiple of 8 pixels).
+ * The CALLER TAKES OWNERSHIP of the buffer_handle_t.
+ *
+ * If format is HAL_PIXEL_FORMAT_YCbCr_420_888, the returned stride must be
+ * 0, since the actual strides are available from the android_ycbcr
+ * structure.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+
+ int (*alloc)(struct alloc_device_t* dev,
+ int w, int h, int format, int usage,
+ buffer_handle_t* handle, int* stride);
+
+ /*
+ * (*free)() Frees a previously allocated buffer.
+ * Behavior is undefined if the buffer is still mapped in any process,
+ * but shall not result in termination of the program or security breaches
+ * (allowing a process to get access to another process' buffers).
+ * THIS FUNCTION TAKES OWNERSHIP of the buffer_handle_t which becomes
+ * invalid after the call.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*free)(struct alloc_device_t* dev,
+ buffer_handle_t handle);
+
+ /* This hook is OPTIONAL.
+ *
+ * If non NULL it will be caused by SurfaceFlinger on dumpsys
+ */
+ void (*dump)(struct alloc_device_t *dev, char *buff, int buff_len);
+
+ void* reserved_proc[7];
+} alloc_device_t;
+
+
+/** convenience API for opening and closing a supported device */
+
+static inline int gralloc_open(const struct hw_module_t* module,
+ struct alloc_device_t** device) {
+ return module->methods->open(module,
+ GRALLOC_HARDWARE_GPU0, TO_HW_DEVICE_T_OPEN(device));
+}
+
+static inline int gralloc_close(struct alloc_device_t* device) {
+ return device->common.close(&device->common);
+}
+
+/**
+ * map_usage_to_memtrack should be called after allocating a gralloc buffer.
+ *
+ * @param usage - it is the flag used when alloc function is called.
+ *
+ * This function maps the gralloc usage flags to appropriate memtrack bucket.
+ * GrallocHAL implementers and users should make an additional ION_IOCTL_TAG
+ * call using the memtrack tag returned by this function. This will help the
+ * in-kernel memtack to categorize the memory allocated by different processes
+ * according to their usage.
+ *
+ */
+static inline const char* map_usage_to_memtrack(uint32_t usage) {
+ usage &= GRALLOC_USAGE_ALLOC_MASK;
+
+ if ((usage & GRALLOC_USAGE_HW_CAMERA_WRITE) != 0) {
+ return "camera";
+ } else if ((usage & GRALLOC_USAGE_HW_VIDEO_ENCODER) != 0 ||
+ (usage & GRALLOC_USAGE_EXTERNAL_DISP) != 0) {
+ return "video";
+ } else if ((usage & GRALLOC_USAGE_HW_RENDER) != 0 ||
+ (usage & GRALLOC_USAGE_HW_TEXTURE) != 0) {
+ return "gl";
+ } else if ((usage & GRALLOC_USAGE_HW_CAMERA_READ) != 0) {
+ return "camera";
+ } else if ((usage & GRALLOC_USAGE_SW_READ_MASK) != 0 ||
+ (usage & GRALLOC_USAGE_SW_WRITE_MASK) != 0) {
+ return "cpu";
+ }
+ return "graphics";
+}
+
+__END_DECLS
+
+#endif // ANDROID_GRALLOC_INTERFACE_H
diff --git a/android/android-emugl/guest/hardware/gralloc1.h b/android/android-emugl/guest/hardware/gralloc1.h
new file mode 100644
index 0000000000..0a6843f034
--- /dev/null
+++ b/android/android-emugl/guest/hardware/gralloc1.h
@@ -0,0 +1,953 @@
+/*
+ * Copyright 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_HARDWARE_GRALLOC1_H
+#define ANDROID_HARDWARE_GRALLOC1_H
+
+#include <hardware/hardware.h>
+#include <cutils/native_handle.h>
+
+__BEGIN_DECLS
+
+#define GRALLOC_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
+#define GRALLOC_HARDWARE_MODULE_ID "gralloc"
+
+/*
+ * Enums
+ */
+
+typedef enum {
+ GRALLOC1_CAPABILITY_INVALID = 0,
+
+ /* If this capability is supported, then the outBuffers parameter to
+ * allocate may be NULL, which instructs the device to report whether the
+ * given allocation is possible or not. */
+ GRALLOC1_CAPABILITY_TEST_ALLOCATE = 1,
+
+ /* If this capability is supported, then the implementation supports
+ * allocating buffers with more than one image layer. */
+ GRALLOC1_CAPABILITY_LAYERED_BUFFERS = 2,
+
+ /* If this capability is supported, then the implementation always closes
+ * and deletes a buffer handle whenever the last reference is removed.
+ *
+ * Supporting this capability is strongly recommended. It will become
+ * mandatory in future releases. */
+ GRALLOC1_CAPABILITY_RELEASE_IMPLY_DELETE = 3,
+
+ GRALLOC1_LAST_CAPABILITY = 3,
+} gralloc1_capability_t;
+
+typedef enum {
+ GRALLOC1_CONSUMER_USAGE_NONE = 0,
+ GRALLOC1_CONSUMER_USAGE_CPU_READ_NEVER = 0,
+ /* 1ULL << 0 */
+ GRALLOC1_CONSUMER_USAGE_CPU_READ = 1ULL << 1,
+ GRALLOC1_CONSUMER_USAGE_CPU_READ_OFTEN = 1ULL << 2 |
+ GRALLOC1_CONSUMER_USAGE_CPU_READ,
+ /* 1ULL << 3 */
+ /* 1ULL << 4 */
+ /* 1ULL << 5 */
+ /* 1ULL << 6 */
+ /* 1ULL << 7 */
+ GRALLOC1_CONSUMER_USAGE_GPU_TEXTURE = 1ULL << 8,
+ /* 1ULL << 9 */
+ /* 1ULL << 10 */
+ GRALLOC1_CONSUMER_USAGE_HWCOMPOSER = 1ULL << 11,
+ GRALLOC1_CONSUMER_USAGE_CLIENT_TARGET = 1ULL << 12,
+ /* 1ULL << 13 */
+ /* 1ULL << 14 */
+ GRALLOC1_CONSUMER_USAGE_CURSOR = 1ULL << 15,
+ GRALLOC1_CONSUMER_USAGE_VIDEO_ENCODER = 1ULL << 16,
+ /* 1ULL << 17 */
+ GRALLOC1_CONSUMER_USAGE_CAMERA = 1ULL << 18,
+ /* 1ULL << 19 */
+ GRALLOC1_CONSUMER_USAGE_RENDERSCRIPT = 1ULL << 20,
+
+ /* Indicates that the consumer may attach buffers to their end of the
+ * BufferQueue, which means that the producer may never have seen a given
+ * dequeued buffer before. May be ignored by the gralloc device. */
+ GRALLOC1_CONSUMER_USAGE_FOREIGN_BUFFERS = 1ULL << 21,
+
+ /* 1ULL << 22 */
+ GRALLOC1_CONSUMER_USAGE_GPU_DATA_BUFFER = 1ULL << 23,
+ /* 1ULL << 24 */
+ /* 1ULL << 25 */
+ /* 1ULL << 26 */
+ /* 1ULL << 27 */
+
+ /* Bits reserved for implementation-specific usage flags */
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_0 = 1ULL << 28,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_1 = 1ULL << 29,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_2 = 1ULL << 30,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_3 = 1ULL << 31,
+
+ /* 1ULL << 32 */
+ /* 1ULL << 33 */
+ /* 1ULL << 34 */
+ /* 1ULL << 35 */
+ /* 1ULL << 36 */
+ /* 1ULL << 37 */
+ /* 1ULL << 38 */
+ /* 1ULL << 39 */
+ /* 1ULL << 40 */
+ /* 1ULL << 41 */
+ /* 1ULL << 42 */
+ /* 1ULL << 43 */
+ /* 1ULL << 44 */
+ /* 1ULL << 45 */
+ /* 1ULL << 46 */
+ /* 1ULL << 47 */
+
+ /* Bits reserved for implementation-specific usage flags */
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_19 = 1ULL << 48,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_18 = 1ULL << 49,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_17 = 1ULL << 50,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_16 = 1ULL << 51,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_15 = 1ULL << 52,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_14 = 1ULL << 53,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_13 = 1ULL << 54,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_12 = 1ULL << 55,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_11 = 1ULL << 56,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_10 = 1ULL << 57,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_9 = 1ULL << 58,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_8 = 1ULL << 59,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_7 = 1ULL << 60,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_6 = 1ULL << 61,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_5 = 1ULL << 62,
+ GRALLOC1_CONSUMER_USAGE_PRIVATE_4 = 1ULL << 63,
+} gralloc1_consumer_usage_t;
+
+typedef enum {
+ GRALLOC1_FUNCTION_INVALID = 0,
+ GRALLOC1_FUNCTION_DUMP = 1,
+ GRALLOC1_FUNCTION_CREATE_DESCRIPTOR = 2,
+ GRALLOC1_FUNCTION_DESTROY_DESCRIPTOR = 3,
+ GRALLOC1_FUNCTION_SET_CONSUMER_USAGE = 4,
+ GRALLOC1_FUNCTION_SET_DIMENSIONS = 5,
+ GRALLOC1_FUNCTION_SET_FORMAT = 6,
+ GRALLOC1_FUNCTION_SET_PRODUCER_USAGE = 7,
+ GRALLOC1_FUNCTION_GET_BACKING_STORE = 8,
+ GRALLOC1_FUNCTION_GET_CONSUMER_USAGE = 9,
+ GRALLOC1_FUNCTION_GET_DIMENSIONS = 10,
+ GRALLOC1_FUNCTION_GET_FORMAT = 11,
+ GRALLOC1_FUNCTION_GET_PRODUCER_USAGE = 12,
+ GRALLOC1_FUNCTION_GET_STRIDE = 13,
+ GRALLOC1_FUNCTION_ALLOCATE = 14,
+ GRALLOC1_FUNCTION_RETAIN = 15,
+ GRALLOC1_FUNCTION_RELEASE = 16,
+ GRALLOC1_FUNCTION_GET_NUM_FLEX_PLANES = 17,
+ GRALLOC1_FUNCTION_LOCK = 18,
+ GRALLOC1_FUNCTION_LOCK_FLEX = 19,
+ GRALLOC1_FUNCTION_UNLOCK = 20,
+ GRALLOC1_FUNCTION_SET_LAYER_COUNT = 21,
+ GRALLOC1_FUNCTION_GET_LAYER_COUNT = 22,
+ GRALLOC1_LAST_FUNCTION = 22,
+} gralloc1_function_descriptor_t;
+
+typedef enum {
+ GRALLOC1_ERROR_NONE = 0,
+ GRALLOC1_ERROR_BAD_DESCRIPTOR = 1,
+ GRALLOC1_ERROR_BAD_HANDLE = 2,
+ GRALLOC1_ERROR_BAD_VALUE = 3,
+ GRALLOC1_ERROR_NOT_SHARED = 4,
+ GRALLOC1_ERROR_NO_RESOURCES = 5,
+ GRALLOC1_ERROR_UNDEFINED = 6,
+ GRALLOC1_ERROR_UNSUPPORTED = 7,
+} gralloc1_error_t;
+
+typedef enum {
+ GRALLOC1_PRODUCER_USAGE_NONE = 0,
+ GRALLOC1_PRODUCER_USAGE_CPU_WRITE_NEVER = 0,
+ /* 1ULL << 0 */
+ GRALLOC1_PRODUCER_USAGE_CPU_READ = 1ULL << 1,
+ GRALLOC1_PRODUCER_USAGE_CPU_READ_OFTEN = 1ULL << 2 |
+ GRALLOC1_PRODUCER_USAGE_CPU_READ,
+ /* 1ULL << 3 */
+ /* 1ULL << 4 */
+ GRALLOC1_PRODUCER_USAGE_CPU_WRITE = 1ULL << 5,
+ GRALLOC1_PRODUCER_USAGE_CPU_WRITE_OFTEN = 1ULL << 6 |
+ GRALLOC1_PRODUCER_USAGE_CPU_WRITE,
+ /* 1ULL << 7 */
+ /* 1ULL << 8 */
+ GRALLOC1_PRODUCER_USAGE_GPU_RENDER_TARGET = 1ULL << 9,
+ /* 1ULL << 10 */
+ /* 1ULL << 11 */
+ /* 1ULL << 12 */
+ /* 1ULL << 13 */
+
+ /* The consumer must have a hardware-protected path to an external display
+ * sink for this buffer. If a hardware-protected path is not available, then
+ * do not attempt to display this buffer. */
+ GRALLOC1_PRODUCER_USAGE_PROTECTED = 1ULL << 14,
+
+ /* 1ULL << 15 */
+ /* 1ULL << 16 */
+ GRALLOC1_PRODUCER_USAGE_CAMERA = 1ULL << 17,
+ /* 1ULL << 18 */
+ /* 1ULL << 19 */
+ /* 1ULL << 20 */
+ /* 1ULL << 21 */
+ GRALLOC1_PRODUCER_USAGE_VIDEO_DECODER = 1ULL << 22,
+ GRALLOC1_PRODUCER_USAGE_SENSOR_DIRECT_DATA = 1ULL << 23,
+ /* 1ULL << 24 */
+ /* 1ULL << 25 */
+ /* 1ULL << 26 */
+ /* 1ULL << 27 */
+
+ /* Bits reserved for implementation-specific usage flags */
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_0 = 1ULL << 28,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_1 = 1ULL << 29,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_2 = 1ULL << 30,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_3 = 1ULL << 31,
+
+ /* 1ULL << 32 */
+ /* 1ULL << 33 */
+ /* 1ULL << 34 */
+ /* 1ULL << 35 */
+ /* 1ULL << 36 */
+ /* 1ULL << 37 */
+ /* 1ULL << 38 */
+ /* 1ULL << 39 */
+ /* 1ULL << 40 */
+ /* 1ULL << 41 */
+ /* 1ULL << 42 */
+ /* 1ULL << 43 */
+ /* 1ULL << 44 */
+ /* 1ULL << 45 */
+ /* 1ULL << 46 */
+ /* 1ULL << 47 */
+
+ /* Bits reserved for implementation-specific usage flags */
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_19 = 1ULL << 48,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_18 = 1ULL << 49,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_17 = 1ULL << 50,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_16 = 1ULL << 51,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_15 = 1ULL << 52,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_14 = 1ULL << 53,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_13 = 1ULL << 54,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_12 = 1ULL << 55,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_11 = 1ULL << 56,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_10 = 1ULL << 57,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_9 = 1ULL << 58,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_8 = 1ULL << 59,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_7 = 1ULL << 60,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_6 = 1ULL << 61,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_5 = 1ULL << 62,
+ GRALLOC1_PRODUCER_USAGE_PRIVATE_4 = 1ULL << 63,
+} gralloc1_producer_usage_t;
+
+/*
+ * Typedefs
+ */
+
+typedef void (*gralloc1_function_pointer_t)();
+
+typedef uint64_t gralloc1_backing_store_t;
+typedef uint64_t gralloc1_buffer_descriptor_t;
+
+/*
+ * Device Struct
+ */
+
+typedef struct gralloc1_device {
+ /* Must be the first member of this struct, since a pointer to this struct
+ * will be generated by casting from a hw_device_t* */
+ struct hw_device_t common;
+
+ /* getCapabilities(..., outCount, outCapabilities)
+ *
+ * Provides a list of capabilities (described in the definition of
+ * gralloc1_capability_t above) supported by this device. This list must not
+ * change after the device has been loaded.
+ *
+ * Parameters:
+ * outCount - if outCapabilities was NULL, the number of capabilities
+ * which would have been returned; if outCapabilities was not NULL,
+ * the number of capabilities returned, which must not exceed the
+ * value stored in outCount prior to the call
+ * outCapabilities - a list of capabilities supported by this device; may
+ * be NULL, in which case this function must write into outCount the
+ * number of capabilities which would have been written into
+ * outCapabilities
+ */
+ void (*getCapabilities)(struct gralloc1_device* device, uint32_t* outCount,
+ int32_t* /*gralloc1_capability_t*/ outCapabilities);
+
+ /* getFunction(..., descriptor)
+ *
+ * Returns a function pointer which implements the requested description.
+ *
+ * Parameters:
+ * descriptor - the function to return
+ *
+ * Returns either a function pointer implementing the requested descriptor
+ * or NULL if the described function is not supported by this device.
+ */
+ gralloc1_function_pointer_t (*getFunction)(struct gralloc1_device* device,
+ int32_t /*gralloc1_function_descriptor_t*/ descriptor);
+} gralloc1_device_t;
+
+static inline int gralloc1_open(const struct hw_module_t* module,
+ gralloc1_device_t** device) {
+ return module->methods->open(module, GRALLOC_HARDWARE_MODULE_ID,
+ TO_HW_DEVICE_T_OPEN(device));
+}
+
+static inline int gralloc1_close(gralloc1_device_t* device) {
+ return device->common.close(&device->common);
+}
+
+/* dump(..., outSize, outBuffer)
+ * Function descriptor: GRALLOC1_FUNCTION_DUMP
+ * Must be provided by all gralloc1 devices
+ *
+ * Retrieves implementation-defined debug information, which will be displayed
+ * during, for example, `dumpsys SurfaceFlinger`.
+ *
+ * If called with outBuffer == NULL, the device should store a copy of the
+ * desired output and return its length in bytes in outSize. If the device
+ * already has a stored copy, that copy should be purged and replaced with a
+ * fresh copy.
+ *
+ * If called with outBuffer != NULL, the device should copy its stored version
+ * of the output into outBuffer and store how many bytes of data it copied into
+ * outSize. Prior to this call, the client will have populated outSize with the
+ * maximum number of bytes outBuffer can hold. The device must not write more
+ * than this amount into outBuffer. If the device does not currently have a
+ * stored copy, then it should return 0 in outSize.
+ *
+ * Any data written into outBuffer need not be null-terminated.
+ *
+ * Parameters:
+ * outSize - if outBuffer was NULL, the number of bytes needed to copy the
+ * device's stored output; if outBuffer was not NULL, the number of bytes
+ * written into it, which must not exceed the value stored in outSize
+ * prior to the call; pointer will be non-NULL
+ * outBuffer - the buffer to write the dump output into; may be NULL as
+ * described above; data written into this buffer need not be
+ * null-terminated
+ */
+typedef void (*GRALLOC1_PFN_DUMP)(gralloc1_device_t* device, uint32_t* outSize,
+ char* outBuffer);
+
+/*
+ * Buffer descriptor lifecycle functions
+ *
+ * All of these functions take as their first parameter a device pointer, so
+ * this parameter is omitted from the described parameter lists.
+ */
+
+/* createDescriptor(..., outDescriptor)
+ * Function descriptor: GRALLOC1_FUNCTION_CREATE_DESCRIPTOR
+ * Must be provided by all gralloc1 devices
+ *
+ * Creates a new, empty buffer descriptor.
+ *
+ * Parameters:
+ * outDescriptor - the new buffer descriptor
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_NO_RESOURCES - no more descriptors can currently be created
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_CREATE_DESCRIPTOR)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t* outDescriptor);
+
+/* destroyDescriptor(..., descriptor)
+ * Function descriptor: GRALLOC1_FUNCTION_DESTROY_DESCRIPTOR
+ * Must be provided by all gralloc1 devices
+ *
+ * Destroys an existing buffer descriptor.
+ *
+ * Parameters:
+ * descriptor - the buffer descriptor to destroy
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - descriptor does not refer to a valid
+ * buffer descriptor
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_DESTROY_DESCRIPTOR)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor);
+
+/*
+ * Buffer descriptor modification functions
+ *
+ * All of these functions take as their first two parameters a device pointer
+ * and a buffer descriptor, so these parameters are omitted from the described
+ * parameter lists.
+ */
+
+/* setConsumerUsage(..., usage)
+ * Function descriptor: GRALLOC1_FUNCTION_SET_CONSUMER_USAGE
+ * Must be provided by all gralloc1 devices
+ *
+ * Sets the desired consumer usage flags of the buffer.
+ *
+ * Valid usage flags can be found in the definition of gralloc1_consumer_usage_t
+ * above.
+ *
+ * Parameters:
+ * usage - the desired consumer usage flags
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - the buffer descriptor is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - an invalid usage flag was passed in
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_SET_CONSUMER_USAGE)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor,
+ uint64_t /*gralloc1_consumer_usage_t*/ usage);
+
+/* setDimensions(..., width, height)
+ * Function descriptor: GRALLOC1_FUNCTION_SET_DIMENSIONS
+ * Must be provided by all gralloc1 devices
+ *
+ * Sets the desired width and height of the buffer in pixels.
+ *
+ * The width specifies how many columns of pixels should be in the allocated
+ * buffer, but does not necessarily represent the offset in columns between the
+ * same column in adjacent rows. If this offset is required, consult getStride
+ * below.
+ *
+ * The height specifies how many rows of pixels should be in the allocated
+ * buffer.
+ *
+ * Parameters:
+ * width - the desired width in pixels
+ * height - the desired height in pixels
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - the buffer descriptor is invalid
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_SET_DIMENSIONS)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor,
+ uint32_t width, uint32_t height);
+
+/* setFormat(..., format)
+ * Function descriptor: GRALLOC1_FUNCTION_SET_FORMAT
+ * Must be provided by all gralloc1 devices
+ *
+ * Sets the desired format of the buffer.
+ *
+ * The valid formats can be found in <system/graphics.h>.
+ *
+ * Parameters:
+ * format - the desired format
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - the buffer descriptor is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - format is invalid
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_SET_FORMAT)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor,
+ int32_t /*android_pixel_format_t*/ format);
+
+/* setLayerCount(..., layerCount)
+ * Function descriptor: GRALLOC1_FUNCTION_SET_LAYER_COUNT
+ * Must be provided by all gralloc1 devices that provide the
+ * GRALLOC1_CAPABILITY_LAYERED_BUFFERS capability.
+ *
+ * Sets the number of layers in the buffer.
+ *
+ * A buffer with multiple layers may be used as the backing store of an array
+ * texture. All layers of a buffer share the same characteristics (e.g.,
+ * dimensions, format, usage). Devices that do not support
+ * GRALLOC1_CAPABILITY_LAYERED_BUFFERS must allocate only buffers with a single
+ * layer.
+ *
+ * Parameters:
+ * layerCount - the desired number of layers, must be non-zero
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - the buffer descriptor is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - the layer count is invalid
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_SET_LAYER_COUNT)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor,
+ uint32_t layerCount);
+
+/* setProducerUsage(..., usage)
+ * Function descriptor: GRALLOC1_FUNCTION_SET_PRODUCER_USAGE
+ * Must be provided by all gralloc1 devices
+ *
+ * Sets the desired producer usage flags of the buffer.
+ *
+ * Valid usage flags can be found in the definition of gralloc1_producer_usage_t
+ * above.
+ *
+ * Parameters:
+ * usage - the desired producer usage flags
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - the buffer descriptor is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - an invalid usage flag was passed in
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_SET_PRODUCER_USAGE)(
+ gralloc1_device_t* device, gralloc1_buffer_descriptor_t descriptor,
+ uint64_t /*gralloc1_producer_usage_t*/ usage);
+
+/*
+ * Buffer handle query functions
+ *
+ * All of these functions take as their first two parameters a device pointer
+ * and a buffer handle, so these parameters are omitted from the described
+ * parameter lists.
+ *
+ * [1] Currently many of these functions may return GRALLOC1_ERROR_UNSUPPORTED,
+ * which means that the device is not able to retrieve the requested information
+ * from the buffer. This is necessary to enable a smooth transition from earlier
+ * versions of the gralloc HAL, but gralloc1 implementers are strongly
+ * discouraged from returning this value, as future versions of the platform
+ * code will require all of these functions to succeed given a valid handle.
+ */
+
+/* getBackingStore(..., outStore)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_BACKING_STORE
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets a value that uniquely identifies the backing store of the given buffer.
+ *
+ * Buffers which share a backing store should return the same value from this
+ * function. If the buffer is present in more than one process, the backing
+ * store value for that buffer is not required to be the same in every process.
+ *
+ * Parameters:
+ * outStore - the backing store identifier for this buffer
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the
+ * backing store identifier from the buffer; see note [1] in this
+ * section's header for more information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_BACKING_STORE)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ gralloc1_backing_store_t* outStore);
+
+/* getConsumerUsage(..., outUsage)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_CONSUMER_USAGE
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets the consumer usage flags which were used to allocate this buffer.
+ *
+ * Usage flags can be found in the definition of gralloc1_consumer_usage_t above
+ *
+ * Parameters:
+ * outUsage - the consumer usage flags used to allocate this buffer; must be
+ * non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the
+ * dimensions from the buffer; see note [1] in this section's header for
+ * more information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_CONSUMER_USAGE)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint64_t* /*gralloc1_consumer_usage_t*/ outUsage);
+
+/* getDimensions(..., outWidth, outHeight)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_DIMENSIONS
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets the width and height of the buffer in pixels.
+ *
+ * See setDimensions for more information about these values.
+ *
+ * Parameters:
+ * outWidth - the width of the buffer in pixels, must be non-NULL
+ * outHeight - the height of the buffer in pixels, must be non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the
+ * dimensions from the buffer; see note [1] in this section's header for
+ * more information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_DIMENSIONS)(
+ gralloc1_device_t* device, buffer_handle_t buffer, uint32_t* outWidth,
+ uint32_t* outHeight);
+
+/* getFormat(..., outFormat)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_FORMAT
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets the format of the buffer.
+ *
+ * The valid formats can be found in the HAL_PIXEL_FORMAT_* enum in
+ * system/graphics.h.
+ *
+ * Parameters:
+ * outFormat - the format of the buffer; must be non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the format
+ * from the buffer; see note [1] in this section's header for more
+ * information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_FORMAT)(
+ gralloc1_device_t* device, buffer_handle_t descriptor,
+ int32_t* outFormat);
+
+/* getLayerCount(..., outLayerCount)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_LAYER_COUNT
+ * Must be provided by all gralloc1 devices that provide the
+ * GRALLOC1_CAPABILITY_LAYERED_BUFFERS capability.
+ *
+ * Gets the number of layers of the buffer.
+ *
+ * See setLayerCount for more information about this value.
+ *
+ * Parameters:
+ * outLayerCount - the number of layers in the image, must be non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the
+ * layer count from the buffer; see note [1] in this section's header for
+ * more information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_LAYER_COUNT)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint32_t* outLayerCount);
+
+/* getProducerUsage(..., outUsage)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_PRODUCER_USAGE
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets the producer usage flags which were used to allocate this buffer.
+ *
+ * Usage flags can be found in the definition of gralloc1_producer_usage_t above
+ *
+ * Parameters:
+ * outUsage - the producer usage flags used to allocate this buffer; must be
+ * non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the usage
+ * from the buffer; see note [1] in this section's header for more
+ * information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_PRODUCER_USAGE)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint64_t* /*gralloc1_producer_usage_t*/ outUsage);
+
+/* getStride(..., outStride)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_STRIDE
+ * Must be provided by all gralloc1 devices
+ *
+ * Gets the stride of the buffer in pixels.
+ *
+ * The stride is the offset in pixel-sized elements between the same column in
+ * two adjacent rows of pixels. This may not be equal to the width of the
+ * buffer.
+ *
+ * Parameters:
+ * outStride - the stride in pixels; must be non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNDEFINED - the notion of a stride is not meaningful for
+ * this format
+ * GRALLOC1_ERROR_UNSUPPORTED - the device is unable to retrieve the stride
+ * from the descriptor; see note [1] in this section's header for more
+ * information
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_STRIDE)(
+ gralloc1_device_t* device, buffer_handle_t buffer, uint32_t* outStride);
+
+/*
+ * Buffer management functions
+ */
+
+/* allocate(..., numDescriptors, descriptors, outBuffers)
+ * Function descriptor: GRALLOC1_FUNCTION_ALLOCATE
+ * Must be provided by all gralloc1 devices
+ *
+ * Attempts to allocate a number of buffers sharing a backing store.
+ *
+ * Each buffer will correspond to one of the descriptors passed into the
+ * function. If the device is unable to share the backing store between the
+ * buffers, it should attempt to allocate the buffers with different backing
+ * stores and return GRALLOC1_ERROR_NOT_SHARED if it is successful.
+ *
+ * If this call is successful, the client is responsible for freeing the
+ * buffer_handle_t using release() when it is finished with the buffer. It is
+ * not necessary to call retain() on the returned buffers, as they must have a
+ * reference added by the device before returning.
+ *
+ * If GRALLOC1_CAPABILITY_TEST_ALLOCATE is supported by this device, outBuffers
+ * may be NULL. In this case, the device must not attempt to allocate any
+ * buffers, but instead must return either GRALLOC1_ERROR_NONE if such an
+ * allocation is possible (ignoring potential resource contention which might
+ * lead to a GRALLOC1_ERROR_NO_RESOURCES error), GRALLOC1_ERROR_NOT_SHARED if
+ * the buffers can be allocated, but cannot share a backing store, or
+ * GRALLOC1_ERROR_UNSUPPORTED if one or more of the descriptors can never be
+ * allocated by the device.
+ *
+ * Parameters:
+ * numDescriptors - the number of buffer descriptors, which must also be equal
+ * to the size of the outBuffers array
+ * descriptors - the buffer descriptors to attempt to allocate
+ * outBuffers - the allocated buffers; must be non-NULL unless the device
+ * supports GRALLOC1_CAPABILITY_TEST_ALLOCATE (see above), and must not be
+ * modified by the device if allocation is unsuccessful
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_DESCRIPTOR - one of the descriptors does not refer to a
+ * valid buffer descriptor
+ * GRALLOC1_ERROR_NOT_SHARED - allocation was successful, but required more
+ * than one backing store to satisfy all of the buffer descriptors
+ * GRALLOC1_ERROR_NO_RESOURCES - allocation failed because one or more of the
+ * backing stores could not be created at this time (but this allocation
+ * might succeed at a future time)
+ * GRALLOC1_ERROR_UNSUPPORTED - one or more of the descriptors can never be
+ * satisfied by the device
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_ALLOCATE)(
+ gralloc1_device_t* device, uint32_t numDescriptors,
+ const gralloc1_buffer_descriptor_t* descriptors,
+ buffer_handle_t* outBuffers);
+
+/* retain(..., buffer)
+ * Function descriptor: GRALLOC1_FUNCTION_RETAIN
+ * Must be provided by all gralloc1 devices
+ *
+ * Adds a reference to the given buffer.
+ *
+ * This function must be called when a buffer_handle_t is received from a remote
+ * process to prevent the buffer's data from being freed when the remote process
+ * releases the buffer. It may also be called to increase the reference count if
+ * two components in the same process want to interact with the buffer
+ * independently.
+ *
+ * Parameters:
+ * buffer - the buffer to which a reference should be added
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_NO_RESOURCES - it is not possible to add a reference to this
+ * buffer at this time
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_RETAIN)(
+ gralloc1_device_t* device, buffer_handle_t buffer);
+
+/* release(..., buffer)
+ * Function descriptor: GRALLOC1_FUNCTION_RELEASE
+ * Must be provided by all gralloc1 devices
+ *
+ * Removes a reference from the given buffer.
+ *
+ * If no references remain, the buffer should be freed. When the last buffer
+ * referring to a particular backing store is freed, that backing store should
+ * also be freed.
+ *
+ * When GRALLOC1_CAPABILITY_RELEASE_IMPLY_DELETE is supported,
+ * native_handle_close and native_handle_delete must always be called by the
+ * implementation whenever the last reference is removed. Otherwise, a call
+ * to release() will be followed by native_handle_close and native_handle_delete
+ * by the caller when the buffer is not allocated locally through allocate().
+ *
+ * Parameters:
+ * buffer - the buffer from which a reference should be removed
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_RELEASE)(
+ gralloc1_device_t* device, buffer_handle_t buffer);
+
+/*
+ * Buffer access functions
+ *
+ * All of these functions take as their first parameter a device pointer, so
+ * this parameter is omitted from the described parameter lists.
+ */
+
+typedef struct gralloc1_rect {
+ int32_t left;
+ int32_t top;
+ int32_t width;
+ int32_t height;
+} gralloc1_rect_t;
+
+/* getNumFlexPlanes(..., buffer, outNumPlanes)
+ * Function descriptor: GRALLOC1_FUNCTION_GET_NUM_FLEX_PLANES
+ * Must be provided by all gralloc1 devices
+ *
+ * Returns the number of flex layout planes which are needed to represent the
+ * given buffer. This may be used to efficiently allocate only as many plane
+ * structures as necessary before calling into lockFlex.
+ *
+ * If the given buffer cannot be locked as a flex format, this function may
+ * return GRALLOC1_ERROR_UNSUPPORTED (as lockFlex would).
+ *
+ * Parameters:
+ * buffer - the buffers for which the number of planes should be queried
+ * outNumPlanes - the number of flex planes required to describe the given
+ * buffer; must be non-NULL
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_UNSUPPORTED - the buffer's format cannot be represented in a
+ * flex layout
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_GET_NUM_FLEX_PLANES)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint32_t* outNumPlanes);
+
+/* lock(..., buffer, producerUsage, consumerUsage, accessRegion, outData,
+ * acquireFence)
+ * Function descriptor: GRALLOC1_FUNCTION_LOCK
+ * Must be provided by all gralloc1 devices
+ *
+ * Locks the given buffer for the specified CPU usage.
+ *
+ * Exactly one of producerUsage and consumerUsage must be *_USAGE_NONE. The
+ * usage which is not *_USAGE_NONE must be one of the *_USAGE_CPU_* values, as
+ * applicable. Locking a buffer for a non-CPU usage is not supported.
+ *
+ * Locking the same buffer simultaneously from multiple threads is permitted,
+ * but if any of the threads attempt to lock the buffer for writing, the
+ * behavior is undefined, except that it must not cause process termination or
+ * block the client indefinitely. Leaving the buffer content in an indeterminate
+ * state or returning an error are both acceptable.
+ *
+ * The client must not modify the content of the buffer outside of accessRegion,
+ * and the device need not guarantee that content outside of accessRegion is
+ * valid for reading. The result of reading or writing outside of accessRegion
+ * is undefined, except that it must not cause process termination.
+ *
+ * outData must be a non-NULL pointer, the contents of which which will be
+ * filled with a pointer to the locked buffer memory. This address will
+ * represent the top-left corner of the entire buffer, even if accessRegion does
+ * not begin at the top-left corner.
+ *
+ * acquireFence is a file descriptor referring to a acquire sync fence object,
+ * which will be signaled when it is safe for the device to access the contents
+ * of the buffer (prior to locking). If it is already safe to access the buffer
+ * contents, -1 may be passed instead.
+ *
+ * Parameters:
+ * buffer - the buffer to lock
+ * producerUsage - the producer usage flags to request; either this or
+ * consumerUsage must be GRALLOC1_*_USAGE_NONE, and the other must be a
+ * CPU usage
+ * consumerUsage - the consumer usage flags to request; either this or
+ * producerUsage must be GRALLOC1_*_USAGE_NONE, and the other must be a
+ * CPU usage
+ * accessRegion - the portion of the buffer that the client intends to access;
+ * must be non-NULL
+ * outData - will be filled with a CPU-accessible pointer to the buffer data;
+ * must be non-NULL
+ * acquireFence - a sync fence file descriptor as described above
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - neither or both of producerUsage and
+ * consumerUsage were GRALLOC1_*_USAGE_NONE, or the usage which was not
+ * *_USAGE_NONE was not a CPU usage
+ * GRALLOC1_ERROR_NO_RESOURCES - the buffer cannot be locked at this time, but
+ * locking may succeed at a future time
+ * GRALLOC1_ERROR_UNSUPPORTED - the buffer cannot be locked with the given
+ * usage, and any future attempts at locking will also fail
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_LOCK)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint64_t /*gralloc1_producer_usage_t*/ producerUsage,
+ uint64_t /*gralloc1_consumer_usage_t*/ consumerUsage,
+ const gralloc1_rect_t* accessRegion, void** outData,
+ int32_t acquireFence);
+
+/* lockFlex(..., buffer, producerUsage, consumerUsage, accessRegion,
+ * outFlexLayout, outAcquireFence)
+ * Function descriptor: GRALLOC1_FUNCTION_LOCK_FLEX
+ * Must be provided by all gralloc1 devices
+ *
+ * This is largely the same as lock(), except that instead of returning a
+ * pointer directly to the buffer data, it returns an android_flex_layout
+ * struct describing how to access the data planes.
+ *
+ * This function must work on buffers with HAL_PIXEL_FORMAT_YCbCr_*_888 if
+ * supported by the device, as well as with any other formats requested by
+ * multimedia codecs when they are configured with a flexible-YUV-compatible
+ * color format.
+ *
+ * This function may also be called on buffers of other formats, including
+ * non-YUV formats, but if the buffer format is not compatible with a flexible
+ * representation, it may return GRALLOC1_ERROR_UNSUPPORTED.
+ *
+ * Parameters:
+ * buffer - the buffer to lock
+ * producerUsage - the producer usage flags to request; either this or
+ * consumerUsage must be GRALLOC1_*_USAGE_NONE, and the other must be a
+ * CPU usage
+ * consumerUsage - the consumer usage flags to request; either this or
+ * producerUsage must be GRALLOC1_*_USAGE_NONE, and the other must be a
+ * CPU usage
+ * accessRegion - the portion of the buffer that the client intends to access;
+ * must be non-NULL
+ * outFlexLayout - will be filled with the description of the planes in the
+ * buffer
+ * acquireFence - a sync fence file descriptor as described in lock()
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ * GRALLOC1_ERROR_BAD_VALUE - neither or both of producerUsage and
+ * consumerUsage were *_USAGE_NONE, or the usage which was not
+ * *_USAGE_NONE was not a CPU usage
+ * GRALLOC1_ERROR_NO_RESOURCES - the buffer cannot be locked at this time, but
+ * locking may succeed at a future time
+ * GRALLOC1_ERROR_UNSUPPORTED - the buffer cannot be locked with the given
+ * usage, and any future attempts at locking will also fail
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_LOCK_FLEX)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ uint64_t /*gralloc1_producer_usage_t*/ producerUsage,
+ uint64_t /*gralloc1_consumer_usage_t*/ consumerUsage,
+ const gralloc1_rect_t* accessRegion,
+ struct android_flex_layout* outFlexLayout, int32_t acquireFence);
+
+/* unlock(..., buffer, releaseFence)
+ * Function descriptor: GRALLOC1_FUNCTION_UNLOCK
+ * Must be provided by all gralloc1 devices
+ *
+ * This function indicates to the device that the client will be done with the
+ * buffer when releaseFence signals.
+ *
+ * outReleaseFence will be filled with a file descriptor referring to a release
+ * sync fence object, which will be signaled when it is safe to access the
+ * contents of the buffer (after the buffer has been unlocked). If it is already
+ * safe to access the buffer contents, then -1 may be returned instead.
+ *
+ * This function is used to unlock both buffers locked by lock() and those
+ * locked by lockFlex().
+ *
+ * Parameters:
+ * buffer - the buffer to unlock
+ * outReleaseFence - a sync fence file descriptor as described above
+ *
+ * Returns GRALLOC1_ERROR_NONE or one of the following errors:
+ * GRALLOC1_ERROR_BAD_HANDLE - the buffer handle is invalid
+ */
+typedef int32_t /*gralloc1_error_t*/ (*GRALLOC1_PFN_UNLOCK)(
+ gralloc1_device_t* device, buffer_handle_t buffer,
+ int32_t* outReleaseFence);
+
+__END_DECLS
+
+#endif
diff --git a/android/android-emugl/guest/hardware/hardware.h b/android/android-emugl/guest/hardware/hardware.h
new file mode 100644
index 0000000000..bf076f6c34
--- /dev/null
+++ b/android/android-emugl/guest/hardware/hardware.h
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_HARDWARE_HARDWARE_H
+#define ANDROID_INCLUDE_HARDWARE_HARDWARE_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+
+#include <cutils/native_handle.h>
+#include <system/graphics.h>
+
+__BEGIN_DECLS
+
+/*
+ * Value for the hw_module_t.tag field
+ */
+
+#define MAKE_TAG_CONSTANT(A,B,C,D) (((A) << 24) | ((B) << 16) | ((C) << 8) | (D))
+
+#define HARDWARE_MODULE_TAG MAKE_TAG_CONSTANT('H', 'W', 'M', 'T')
+#define HARDWARE_DEVICE_TAG MAKE_TAG_CONSTANT('H', 'W', 'D', 'T')
+
+#define HARDWARE_MAKE_API_VERSION(maj,min) \
+ ((((maj) & 0xff) << 8) | ((min) & 0xff))
+
+#define HARDWARE_MAKE_API_VERSION_2(maj,min,hdr) \
+ ((((maj) & 0xff) << 24) | (((min) & 0xff) << 16) | ((hdr) & 0xffff))
+#define HARDWARE_API_VERSION_2_MAJ_MIN_MASK 0xffff0000
+#define HARDWARE_API_VERSION_2_HEADER_MASK 0x0000ffff
+
+
+/*
+ * The current HAL API version.
+ *
+ * All module implementations must set the hw_module_t.hal_api_version field
+ * to this value when declaring the module with HAL_MODULE_INFO_SYM.
+ *
+ * Note that previous implementations have always set this field to 0.
+ * Therefore, libhardware HAL API will always consider versions 0.0 and 1.0
+ * to be 100% binary compatible.
+ *
+ */
+#define HARDWARE_HAL_API_VERSION HARDWARE_MAKE_API_VERSION(1, 0)
+
+/*
+ * Helper macros for module implementors.
+ *
+ * The derived modules should provide convenience macros for supported
+ * versions so that implementations can explicitly specify module/device
+ * versions at definition time.
+ *
+ * Use this macro to set the hw_module_t.module_api_version field.
+ */
+#define HARDWARE_MODULE_API_VERSION(maj,min) HARDWARE_MAKE_API_VERSION(maj,min)
+#define HARDWARE_MODULE_API_VERSION_2(maj,min,hdr) HARDWARE_MAKE_API_VERSION_2(maj,min,hdr)
+
+/*
+ * Use this macro to set the hw_device_t.version field
+ */
+#define HARDWARE_DEVICE_API_VERSION(maj,min) HARDWARE_MAKE_API_VERSION(maj,min)
+#define HARDWARE_DEVICE_API_VERSION_2(maj,min,hdr) HARDWARE_MAKE_API_VERSION_2(maj,min,hdr)
+
+struct hw_module_t;
+struct hw_module_methods_t;
+struct hw_device_t;
+
+/**
+ * Every hardware module must have a data structure named HAL_MODULE_INFO_SYM
+ * and the fields of this data structure must begin with hw_module_t
+ * followed by module specific information.
+ */
+typedef struct hw_module_t {
+ /** tag must be initialized to HARDWARE_MODULE_TAG */
+ uint32_t tag;
+
+ /**
+ * The API version of the implemented module. The module owner is
+ * responsible for updating the version when a module interface has
+ * changed.
+ *
+ * The derived modules such as gralloc and audio own and manage this field.
+ * The module user must interpret the version field to decide whether or
+ * not to inter-operate with the supplied module implementation.
+ * For example, SurfaceFlinger is responsible for making sure that
+ * it knows how to manage different versions of the gralloc-module API,
+ * and AudioFlinger must know how to do the same for audio-module API.
+ *
+ * The module API version should include a major and a minor component.
+ * For example, version 1.0 could be represented as 0x0100. This format
+ * implies that versions 0x0100-0x01ff are all API-compatible.
+ *
+ * In the future, libhardware will expose a hw_get_module_version()
+ * (or equivalent) function that will take minimum/maximum supported
+ * versions as arguments and would be able to reject modules with
+ * versions outside of the supplied range.
+ */
+ uint16_t module_api_version;
+#define version_major module_api_version
+ /**
+ * version_major/version_minor defines are supplied here for temporary
+ * source code compatibility. They will be removed in the next version.
+ * ALL clients must convert to the new version format.
+ */
+
+ /**
+ * The API version of the HAL module interface. This is meant to
+ * version the hw_module_t, hw_module_methods_t, and hw_device_t
+ * structures and definitions.
+ *
+ * The HAL interface owns this field. Module users/implementations
+ * must NOT rely on this value for version information.
+ *
+ * Presently, 0 is the only valid value.
+ */
+ uint16_t hal_api_version;
+#define version_minor hal_api_version
+
+ /** Identifier of module */
+ const char *id;
+
+ /** Name of this module */
+ const char *name;
+
+ /** Author/owner/implementor of the module */
+ const char *author;
+
+ /** Modules methods */
+ struct hw_module_methods_t* methods;
+
+ /** module's dso */
+ void* dso;
+
+#ifdef __LP64__
+ uint64_t reserved[32-7];
+#else
+ /** padding to 128 bytes, reserved for future use */
+ uint32_t reserved[32-7];
+#endif
+
+} hw_module_t;
+
+typedef struct hw_module_methods_t {
+ /** Open a specific device */
+ int (*open)(const struct hw_module_t* module, const char* id,
+ struct hw_device_t** device);
+
+} hw_module_methods_t;
+
+/**
+ * Every device data structure must begin with hw_device_t
+ * followed by module specific public methods and attributes.
+ */
+typedef struct hw_device_t {
+ /** tag must be initialized to HARDWARE_DEVICE_TAG */
+ uint32_t tag;
+
+ /**
+ * Version of the module-specific device API. This value is used by
+ * the derived-module user to manage different device implementations.
+ *
+ * The module user is responsible for checking the module_api_version
+ * and device version fields to ensure that the user is capable of
+ * communicating with the specific module implementation.
+ *
+ * One module can support multiple devices with different versions. This
+ * can be useful when a device interface changes in an incompatible way
+ * but it is still necessary to support older implementations at the same
+ * time. One such example is the Camera 2.0 API.
+ *
+ * This field is interpreted by the module user and is ignored by the
+ * HAL interface itself.
+ */
+ uint32_t version;
+
+ /** reference to the module this device belongs to */
+ struct hw_module_t* module;
+
+ /** padding reserved for future use */
+#ifdef __LP64__
+ uint64_t reserved[12];
+#else
+ uint32_t reserved[12];
+#endif
+
+ /** Close this device */
+ int (*close)(struct hw_device_t* device);
+
+} hw_device_t;
+
+#ifdef __cplusplus
+#define TO_HW_DEVICE_T_OPEN(x) reinterpret_cast<struct hw_device_t**>(x)
+#else
+#define TO_HW_DEVICE_T_OPEN(x) (struct hw_device_t**)(x)
+#endif
+
+/**
+ * Name of the hal_module_info
+ */
+#define HAL_MODULE_INFO_SYM HMI
+
+/**
+ * Name of the hal_module_info as a string
+ */
+#define HAL_MODULE_INFO_SYM_AS_STR "HMI"
+
+/**
+ * Get the module info associated with a module by id.
+ *
+ * @return: 0 == success, <0 == error and *module == NULL
+ */
+int hw_get_module(const char *id, const struct hw_module_t **module);
+
+/**
+ * Get the module info associated with a module instance by class 'class_id'
+ * and instance 'inst'.
+ *
+ * Some modules types necessitate multiple instances. For example audio supports
+ * multiple concurrent interfaces and thus 'audio' is the module class
+ * and 'primary' or 'a2dp' are module interfaces. This implies that the files
+ * providing these modules would be named audio.primary.<variant>.so and
+ * audio.a2dp.<variant>.so
+ *
+ * @return: 0 == success, <0 == error and *module == NULL
+ */
+int hw_get_module_by_class(const char *class_id, const char *inst,
+ const struct hw_module_t **module);
+
+__END_DECLS
+
+#endif /* ANDROID_INCLUDE_HARDWARE_HARDWARE_H */
diff --git a/android/android-emugl/guest/hardware/hwcomposer.h b/android/android-emugl/guest/hardware/hwcomposer.h
new file mode 100644
index 0000000000..9eb1aafbed
--- /dev/null
+++ b/android/android-emugl/guest/hardware/hwcomposer.h
@@ -0,0 +1,798 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H
+#define ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+
+#include <hardware/gralloc.h>
+#include <hardware/hardware.h>
+#include <cutils/native_handle.h>
+
+#include <hardware/hwcomposer_defs.h>
+
+__BEGIN_DECLS
+
+/*****************************************************************************/
+
+/* for compatibility */
+#define HWC_MODULE_API_VERSION HWC_MODULE_API_VERSION_0_1
+#define HWC_DEVICE_API_VERSION HWC_DEVICE_API_VERSION_0_1
+#define HWC_API_VERSION HWC_DEVICE_API_VERSION
+
+/*****************************************************************************/
+
+typedef struct hwc_layer_1 {
+ /*
+ * compositionType is used to specify this layer's type and is set by either
+ * the hardware composer implementation, or by the caller (see below).
+ *
+ * This field is always reset to HWC_BACKGROUND or HWC_FRAMEBUFFER
+ * before (*prepare)() is called when the HWC_GEOMETRY_CHANGED flag is
+ * also set, otherwise, this field is preserved between (*prepare)()
+ * calls.
+ *
+ * HWC_BACKGROUND
+ * Always set by the caller before calling (*prepare)(), this value
+ * indicates this is a special "background" layer. The only valid field
+ * is backgroundColor.
+ * The HWC can toggle this value to HWC_FRAMEBUFFER to indicate it CANNOT
+ * handle the background color.
+ *
+ *
+ * HWC_FRAMEBUFFER_TARGET
+ * Always set by the caller before calling (*prepare)(), this value
+ * indicates this layer is the framebuffer surface used as the target of
+ * OpenGL ES composition. If the HWC sets all other layers to HWC_OVERLAY
+ * or HWC_BACKGROUND, then no OpenGL ES composition will be done, and
+ * this layer should be ignored during set().
+ *
+ * This flag (and the framebuffer surface layer) will only be used if the
+ * HWC version is HWC_DEVICE_API_VERSION_1_1 or higher. In older versions,
+ * the OpenGL ES target surface is communicated by the (dpy, sur) fields
+ * in hwc_compositor_device_1_t.
+ *
+ * This value cannot be set by the HWC implementation.
+ *
+ *
+ * HWC_FRAMEBUFFER
+ * Set by the caller before calling (*prepare)() ONLY when the
+ * HWC_GEOMETRY_CHANGED flag is also set.
+ *
+ * Set by the HWC implementation during (*prepare)(), this indicates
+ * that the layer will be drawn into the framebuffer using OpenGL ES.
+ * The HWC can toggle this value to HWC_OVERLAY to indicate it will
+ * handle the layer.
+ *
+ *
+ * HWC_OVERLAY
+ * Set by the HWC implementation during (*prepare)(), this indicates
+ * that the layer will be handled by the HWC (ie: it must not be
+ * composited with OpenGL ES).
+ *
+ *
+ * HWC_SIDEBAND
+ * Set by the caller before calling (*prepare)(), this value indicates
+ * the contents of this layer come from a sideband video stream.
+ *
+ * The h/w composer is responsible for receiving new image buffers from
+ * the stream at the appropriate time (e.g. synchronized to a separate
+ * audio stream), compositing them with the current contents of other
+ * layers, and displaying the resulting image. This happens
+ * independently of the normal prepare/set cycle. The prepare/set calls
+ * only happen when other layers change, or when properties of the
+ * sideband layer such as position or size change.
+ *
+ * If the h/w composer can't handle the layer as a sideband stream for
+ * some reason (e.g. unsupported scaling/blending/rotation, or too many
+ * sideband layers) it can set compositionType to HWC_FRAMEBUFFER in
+ * (*prepare)(). However, doing so will result in the layer being shown
+ * as a solid color since the platform is not currently able to composite
+ * sideband layers with the GPU. This may be improved in future
+ * versions of the platform.
+ *
+ *
+ * HWC_CURSOR_OVERLAY
+ * Set by the HWC implementation during (*prepare)(), this value
+ * indicates the layer's composition will now be handled by the HWC.
+ * Additionally, the client can now asynchronously update the on-screen
+ * position of this layer using the setCursorPositionAsync() api.
+ */
+ int32_t compositionType;
+
+ /*
+ * hints is bit mask set by the HWC implementation during (*prepare)().
+ * It is preserved between (*prepare)() calls, unless the
+ * HWC_GEOMETRY_CHANGED flag is set, in which case it is reset to 0.
+ *
+ * see hwc_layer_t::hints
+ */
+ uint32_t hints;
+
+ /* see hwc_layer_t::flags */
+ uint32_t flags;
+
+ union {
+ /* color of the background. hwc_color_t.a is ignored */
+ hwc_color_t backgroundColor;
+
+ struct {
+ union {
+ /* When compositionType is HWC_FRAMEBUFFER, HWC_OVERLAY,
+ * HWC_FRAMEBUFFER_TARGET, this is the handle of the buffer to
+ * compose. This handle is guaranteed to have been allocated
+ * from gralloc using the GRALLOC_USAGE_HW_COMPOSER usage flag.
+ * If the layer's handle is unchanged across two consecutive
+ * prepare calls and the HWC_GEOMETRY_CHANGED flag is not set
+ * for the second call then the HWComposer implementation may
+ * assume that the contents of the buffer have not changed. */
+ buffer_handle_t handle;
+
+ /* When compositionType is HWC_SIDEBAND, this is the handle
+ * of the sideband video stream to compose. */
+ const native_handle_t* sidebandStream;
+ };
+
+ /* transformation to apply to the buffer during composition */
+ uint32_t transform;
+
+ /* blending to apply during composition */
+ int32_t blending;
+
+ /* area of the source to consider, the origin is the top-left corner of
+ * the buffer. As of HWC_DEVICE_API_VERSION_1_3, sourceRect uses floats.
+ * If the h/w can't support a non-integer source crop rectangle, it should
+ * punt to OpenGL ES composition.
+ */
+ union {
+ // crop rectangle in integer (pre HWC_DEVICE_API_VERSION_1_3)
+ hwc_rect_t sourceCropi;
+ hwc_rect_t sourceCrop; // just for source compatibility
+ // crop rectangle in floats (as of HWC_DEVICE_API_VERSION_1_3)
+ hwc_frect_t sourceCropf;
+ };
+
+ /* where to composite the sourceCrop onto the display. The sourceCrop
+ * is scaled using linear filtering to the displayFrame. The origin is the
+ * top-left corner of the screen.
+ */
+ hwc_rect_t displayFrame;
+
+ /* visible region in screen space. The origin is the
+ * top-left corner of the screen.
+ * The visible region INCLUDES areas overlapped by a translucent layer.
+ */
+ hwc_region_t visibleRegionScreen;
+
+ /* Sync fence object that will be signaled when the buffer's
+ * contents are available. May be -1 if the contents are already
+ * available. This field is only valid during set(), and should be
+ * ignored during prepare(). The set() call must not wait for the
+ * fence to be signaled before returning, but the HWC must wait for
+ * all buffers to be signaled before reading from them.
+ *
+ * HWC_FRAMEBUFFER layers will never have an acquire fence, since
+ * reads from them are complete before the framebuffer is ready for
+ * display.
+ *
+ * HWC_SIDEBAND layers will never have an acquire fence, since
+ * synchronization is handled through implementation-defined
+ * sideband mechanisms.
+ *
+ * The HWC takes ownership of the acquireFenceFd and is responsible
+ * for closing it when no longer needed.
+ */
+ int acquireFenceFd;
+
+ /* During set() the HWC must set this field to a file descriptor for
+ * a sync fence object that will signal after the HWC has finished
+ * reading from the buffer. The field is ignored by prepare(). Each
+ * layer should have a unique file descriptor, even if more than one
+ * refer to the same underlying fence object; this allows each to be
+ * closed independently.
+ *
+ * If buffer reads can complete at significantly different times,
+ * then using independent fences is preferred. For example, if the
+ * HWC handles some layers with a blit engine and others with
+ * overlays, then the blit layers can be reused immediately after
+ * the blit completes, but the overlay layers can't be reused until
+ * a subsequent frame has been displayed.
+ *
+ * Since HWC doesn't read from HWC_FRAMEBUFFER layers, it shouldn't
+ * produce a release fence for them. The releaseFenceFd will be -1
+ * for these layers when set() is called.
+ *
+ * Since HWC_SIDEBAND buffers don't pass through the HWC client,
+ * the HWC shouldn't produce a release fence for them. The
+ * releaseFenceFd will be -1 for these layers when set() is called.
+ *
+ * The HWC client taks ownership of the releaseFenceFd and is
+ * responsible for closing it when no longer needed.
+ */
+ int releaseFenceFd;
+
+ /*
+ * Availability: HWC_DEVICE_API_VERSION_1_2
+ *
+ * Alpha value applied to the whole layer. The effective
+ * value of each pixel is computed as:
+ *
+ * if (blending == HWC_BLENDING_PREMULT)
+ * pixel.rgb = pixel.rgb * planeAlpha / 255
+ * pixel.a = pixel.a * planeAlpha / 255
+ *
+ * Then blending proceeds as usual according to the "blending"
+ * field above.
+ *
+ * NOTE: planeAlpha applies to YUV layers as well:
+ *
+ * pixel.rgb = yuv_to_rgb(pixel.yuv)
+ * if (blending == HWC_BLENDING_PREMULT)
+ * pixel.rgb = pixel.rgb * planeAlpha / 255
+ * pixel.a = planeAlpha
+ *
+ *
+ * IMPLEMENTATION NOTE:
+ *
+ * If the source image doesn't have an alpha channel, then
+ * the h/w can use the HWC_BLENDING_COVERAGE equations instead of
+ * HWC_BLENDING_PREMULT and simply set the alpha channel to
+ * planeAlpha.
+ *
+ * e.g.:
+ *
+ * if (blending == HWC_BLENDING_PREMULT)
+ * blending = HWC_BLENDING_COVERAGE;
+ * pixel.a = planeAlpha;
+ *
+ */
+ uint8_t planeAlpha;
+
+ /* Pad to 32 bits */
+ uint8_t _pad[3];
+
+ /*
+ * Availability: HWC_DEVICE_API_VERSION_1_5
+ *
+ * This defines the region of the source buffer that has been
+ * modified since the last frame.
+ *
+ * If surfaceDamage.numRects > 0, then it may be assumed that any
+ * portion of the source buffer not covered by one of the rects has
+ * not been modified this frame. If surfaceDamage.numRects == 0,
+ * then the whole source buffer must be treated as if it had been
+ * modified.
+ *
+ * If the layer's contents are not modified relative to the prior
+ * prepare/set cycle, surfaceDamage will contain exactly one empty
+ * rect ([0, 0, 0, 0]).
+ *
+ * The damage rects are relative to the pre-transformed buffer, and
+ * their origin is the top-left corner.
+ */
+ hwc_region_t surfaceDamage;
+ };
+ };
+
+#ifdef __LP64__
+ /*
+ * For 64-bit mode, this struct is 120 bytes (and 8-byte aligned), and needs
+ * to be padded as such to maintain binary compatibility.
+ */
+ uint8_t reserved[120 - 112];
+#else
+ /*
+ * For 32-bit mode, this struct is 96 bytes, and needs to be padded as such
+ * to maintain binary compatibility.
+ */
+ uint8_t reserved[96 - 84];
+#endif
+
+} hwc_layer_1_t;
+
+/* This represents a display, typically an EGLDisplay object */
+typedef void* hwc_display_t;
+
+/* This represents a surface, typically an EGLSurface object */
+typedef void* hwc_surface_t;
+
+/*
+ * hwc_display_contents_1_t::flags values
+ */
+enum {
+ /*
+ * HWC_GEOMETRY_CHANGED is set by SurfaceFlinger to indicate that the list
+ * passed to (*prepare)() has changed by more than just the buffer handles
+ * and acquire fences.
+ */
+ HWC_GEOMETRY_CHANGED = 0x00000001,
+};
+
+/*
+ * Description of the contents to output on a display.
+ *
+ * This is the top-level structure passed to the prepare and set calls to
+ * negotiate and commit the composition of a display image.
+ */
+typedef struct hwc_display_contents_1 {
+ /* File descriptor referring to a Sync HAL fence object which will signal
+ * when this composition is retired. For a physical display, a composition
+ * is retired when it has been replaced on-screen by a subsequent set. For
+ * a virtual display, the composition is retired when the writes to
+ * outputBuffer are complete and can be read. The fence object is created
+ * and returned by the set call; this field will be -1 on entry to prepare
+ * and set. SurfaceFlinger will close the returned file descriptor.
+ */
+ int retireFenceFd;
+
+ union {
+ /* Fields only relevant for HWC_DEVICE_VERSION_1_0. */
+ struct {
+ /* (dpy, sur) is the target of SurfaceFlinger's OpenGL ES
+ * composition for HWC_DEVICE_VERSION_1_0. They aren't relevant to
+ * prepare. The set call should commit this surface atomically to
+ * the display along with any overlay layers.
+ */
+ hwc_display_t dpy;
+ hwc_surface_t sur;
+ };
+
+ /* These fields are used for virtual displays when the h/w composer
+ * version is at least HWC_DEVICE_VERSION_1_3. */
+ struct {
+ /* outbuf is the buffer that receives the composed image for
+ * virtual displays. Writes to the outbuf must wait until
+ * outbufAcquireFenceFd signals. A fence that will signal when
+ * writes to outbuf are complete should be returned in
+ * retireFenceFd.
+ *
+ * This field is set before prepare(), so properties of the buffer
+ * can be used to decide which layers can be handled by h/w
+ * composer.
+ *
+ * If prepare() sets all layers to FRAMEBUFFER, then GLES
+ * composition will happen directly to the output buffer. In this
+ * case, both outbuf and the FRAMEBUFFER_TARGET layer's buffer will
+ * be the same, and set() has no work to do besides managing fences.
+ *
+ * If the TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS board config
+ * variable is defined (not the default), then this behavior is
+ * changed: if all layers are marked for FRAMEBUFFER, GLES
+ * composition will take place to a scratch framebuffer, and
+ * h/w composer must copy it to the output buffer. This allows the
+ * h/w composer to do format conversion if there are cases where
+ * that is more desirable than doing it in the GLES driver or at the
+ * virtual display consumer.
+ *
+ * If some or all layers are marked OVERLAY, then the framebuffer
+ * and output buffer will be different. As with physical displays,
+ * the framebuffer handle will not change between frames if all
+ * layers are marked for OVERLAY.
+ */
+ buffer_handle_t outbuf;
+
+ /* File descriptor for a fence that will signal when outbuf is
+ * ready to be written. The h/w composer is responsible for closing
+ * this when no longer needed.
+ *
+ * Will be -1 whenever outbuf is NULL, or when the outbuf can be
+ * written immediately.
+ */
+ int outbufAcquireFenceFd;
+ };
+ };
+
+ /* List of layers that will be composed on the display. The buffer handles
+ * in the list will be unique. If numHwLayers is 0, all composition will be
+ * performed by SurfaceFlinger.
+ */
+ uint32_t flags;
+ size_t numHwLayers;
+ hwc_layer_1_t hwLayers[0];
+
+} hwc_display_contents_1_t;
+
+/* see hwc_composer_device::registerProcs()
+ * All of the callbacks are required and non-NULL unless otherwise noted.
+ */
+typedef struct hwc_procs {
+ /*
+ * (*invalidate)() triggers a screen refresh, in particular prepare and set
+ * will be called shortly after this call is made. Note that there is
+ * NO GUARANTEE that the screen refresh will happen after invalidate()
+ * returns (in particular, it could happen before).
+ * invalidate() is GUARANTEED TO NOT CALL BACK into the h/w composer HAL and
+ * it is safe to call invalidate() from any of hwc_composer_device
+ * hooks, unless noted otherwise.
+ */
+ void (*invalidate)(const struct hwc_procs* procs);
+
+ /*
+ * (*vsync)() is called by the h/w composer HAL when a vsync event is
+ * received and HWC_EVENT_VSYNC is enabled on a display
+ * (see: hwc_event_control).
+ *
+ * the "disp" parameter indicates which display the vsync event is for.
+ * the "timestamp" parameter is the system monotonic clock timestamp in
+ * nanosecond of when the vsync event happened.
+ *
+ * vsync() is GUARANTEED TO NOT CALL BACK into the h/w composer HAL.
+ *
+ * It is expected that vsync() is called from a thread of at least
+ * HAL_PRIORITY_URGENT_DISPLAY with as little latency as possible,
+ * typically less than 0.5 ms.
+ *
+ * It is a (silent) error to have HWC_EVENT_VSYNC enabled when calling
+ * hwc_composer_device.set(..., 0, 0, 0) (screen off). The implementation
+ * can either stop or continue to process VSYNC events, but must not
+ * crash or cause other problems.
+ */
+ void (*vsync)(const struct hwc_procs* procs, int disp, int64_t timestamp);
+
+ /*
+ * (*hotplug)() is called by the h/w composer HAL when a display is
+ * connected or disconnected. The PRIMARY display is always connected and
+ * the hotplug callback should not be called for it.
+ *
+ * The disp parameter indicates which display type this event is for.
+ * The connected parameter indicates whether the display has just been
+ * connected (1) or disconnected (0).
+ *
+ * The hotplug() callback may call back into the h/w composer on the same
+ * thread to query refresh rate and dpi for the display. Additionally,
+ * other threads may be calling into the h/w composer while the callback
+ * is in progress.
+ *
+ * The h/w composer must serialize calls to the hotplug callback; only
+ * one thread may call it at a time.
+ *
+ * This callback will be NULL if the h/w composer is using
+ * HWC_DEVICE_API_VERSION_1_0.
+ */
+ void (*hotplug)(const struct hwc_procs* procs, int disp, int connected);
+
+} hwc_procs_t;
+
+
+/*****************************************************************************/
+
+typedef struct hwc_module {
+ /**
+ * Common methods of the hardware composer module. This *must* be the first member of
+ * hwc_module as users of this structure will cast a hw_module_t to
+ * hwc_module pointer in contexts where it's known the hw_module_t references a
+ * hwc_module.
+ */
+ struct hw_module_t common;
+} hwc_module_t;
+
+#define HWC_ERROR (-1)
+typedef struct hwc_composer_device_1 {
+ /**
+ * Common methods of the hardware composer device. This *must* be the first member of
+ * hwc_composer_device_1 as users of this structure will cast a hw_device_t to
+ * hwc_composer_device_1 pointer in contexts where it's known the hw_device_t references a
+ * hwc_composer_device_1.
+ */
+ struct hw_device_t common;
+
+ /*
+ * (*prepare)() is called for each frame before composition and is used by
+ * SurfaceFlinger to determine what composition steps the HWC can handle.
+ *
+ * (*prepare)() can be called more than once, the last call prevails.
+ *
+ * The HWC responds by setting the compositionType field in each layer to
+ * either HWC_FRAMEBUFFER, HWC_OVERLAY, or HWC_CURSOR_OVERLAY. For the
+ * HWC_FRAMEBUFFER type, composition for the layer is handled by
+ * SurfaceFlinger with OpenGL ES. For the latter two overlay types,
+ * the HWC will have to handle the layer's composition. compositionType
+ * and hints are preserved between (*prepare)() calles unless the
+ * HWC_GEOMETRY_CHANGED flag is set.
+ *
+ * (*prepare)() is called with HWC_GEOMETRY_CHANGED to indicate that the
+ * list's geometry has changed, that is, when more than just the buffer's
+ * handles have been updated. Typically this happens (but is not limited to)
+ * when a window is added, removed, resized or moved. In this case
+ * compositionType and hints are reset to their default value.
+ *
+ * For HWC 1.0, numDisplays will always be one, and displays[0] will be
+ * non-NULL.
+ *
+ * For HWC 1.1, numDisplays will always be HWC_NUM_PHYSICAL_DISPLAY_TYPES.
+ * Entries for unsupported or disabled/disconnected display types will be
+ * NULL.
+ *
+ * In HWC 1.3, numDisplays may be up to HWC_NUM_DISPLAY_TYPES. The extra
+ * entries correspond to enabled virtual displays, and will be non-NULL.
+ *
+ * returns: 0 on success. An negative error code on error. If an error is
+ * returned, SurfaceFlinger will assume that none of the layer will be
+ * handled by the HWC.
+ */
+ int (*prepare)(struct hwc_composer_device_1 *dev,
+ size_t numDisplays, hwc_display_contents_1_t** displays);
+
+ /*
+ * (*set)() is used in place of eglSwapBuffers(), and assumes the same
+ * functionality, except it also commits the work list atomically with
+ * the actual eglSwapBuffers().
+ *
+ * The layer lists are guaranteed to be the same as the ones returned from
+ * the last call to (*prepare)().
+ *
+ * When this call returns the caller assumes that the displays will be
+ * updated in the near future with the content of their work lists, without
+ * artifacts during the transition from the previous frame.
+ *
+ * A display with zero layers indicates that the entire composition has
+ * been handled by SurfaceFlinger with OpenGL ES. In this case, (*set)()
+ * behaves just like eglSwapBuffers().
+ *
+ * For HWC 1.0, numDisplays will always be one, and displays[0] will be
+ * non-NULL.
+ *
+ * For HWC 1.1, numDisplays will always be HWC_NUM_PHYSICAL_DISPLAY_TYPES.
+ * Entries for unsupported or disabled/disconnected display types will be
+ * NULL.
+ *
+ * In HWC 1.3, numDisplays may be up to HWC_NUM_DISPLAY_TYPES. The extra
+ * entries correspond to enabled virtual displays, and will be non-NULL.
+ *
+ * IMPORTANT NOTE: There is an implicit layer containing opaque black
+ * pixels behind all the layers in the list. It is the responsibility of
+ * the hwcomposer module to make sure black pixels are output (or blended
+ * from).
+ *
+ * IMPORTANT NOTE: In the event of an error this call *MUST* still cause
+ * any fences returned in the previous call to set to eventually become
+ * signaled. The caller may have already issued wait commands on these
+ * fences, and having set return without causing those fences to signal
+ * will likely result in a deadlock.
+ *
+ * returns: 0 on success. A negative error code on error:
+ * HWC_EGL_ERROR: eglGetError() will provide the proper error code (only
+ * allowed prior to HWComposer 1.1)
+ * Another code for non EGL errors.
+ */
+ int (*set)(struct hwc_composer_device_1 *dev,
+ size_t numDisplays, hwc_display_contents_1_t** displays);
+
+ /*
+ * eventControl(..., event, enabled)
+ * Enables or disables h/w composer events for a display.
+ *
+ * eventControl can be called from any thread and takes effect
+ * immediately.
+ *
+ * Supported events are:
+ * HWC_EVENT_VSYNC
+ *
+ * returns -EINVAL if the "event" parameter is not one of the value above
+ * or if the "enabled" parameter is not 0 or 1.
+ */
+ int (*eventControl)(struct hwc_composer_device_1* dev, int disp,
+ int event, int enabled);
+
+ union {
+ /*
+ * For HWC 1.3 and earlier, the blank() interface is used.
+ *
+ * blank(..., blank)
+ * Blanks or unblanks a display's screen.
+ *
+ * Turns the screen off when blank is nonzero, on when blank is zero.
+ * Multiple sequential calls with the same blank value must be
+ * supported.
+ * The screen state transition must be be complete when the function
+ * returns.
+ *
+ * returns 0 on success, negative on error.
+ */
+ int (*blank)(struct hwc_composer_device_1* dev, int disp, int blank);
+
+ /*
+ * For HWC 1.4 and above, setPowerMode() will be used in place of
+ * blank().
+ *
+ * setPowerMode(..., mode)
+ * Sets the display screen's power state.
+ *
+ * Refer to the documentation of the HWC_POWER_MODE_* constants
+ * for information about each power mode.
+ *
+ * The functionality is similar to the blank() command in previous
+ * versions of HWC, but with support for more power states.
+ *
+ * The display driver is expected to retain and restore the low power
+ * state of the display while entering and exiting from suspend.
+ *
+ * Multiple sequential calls with the same mode value must be supported.
+ *
+ * The screen state transition must be be complete when the function
+ * returns.
+ *
+ * returns 0 on success, negative on error.
+ */
+ int (*setPowerMode)(struct hwc_composer_device_1* dev, int disp,
+ int mode);
+ };
+
+ /*
+ * Used to retrieve information about the h/w composer
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*query)(struct hwc_composer_device_1* dev, int what, int* value);
+
+ /*
+ * (*registerProcs)() registers callbacks that the h/w composer HAL can
+ * later use. It will be called immediately after the composer device is
+ * opened with non-NULL procs. It is FORBIDDEN to call any of the callbacks
+ * from within registerProcs(). registerProcs() must save the hwc_procs_t
+ * pointer which is needed when calling a registered callback.
+ */
+ void (*registerProcs)(struct hwc_composer_device_1* dev,
+ hwc_procs_t const* procs);
+
+ /*
+ * This field is OPTIONAL and can be NULL.
+ *
+ * If non NULL it will be called by SurfaceFlinger on dumpsys
+ */
+ void (*dump)(struct hwc_composer_device_1* dev, char *buff, int buff_len);
+
+ /*
+ * (*getDisplayConfigs)() returns handles for the configurations available
+ * on the connected display. These handles must remain valid as long as the
+ * display is connected.
+ *
+ * Configuration handles are written to configs. The number of entries
+ * allocated by the caller is passed in *numConfigs; getDisplayConfigs must
+ * not try to write more than this number of config handles. On return, the
+ * total number of configurations available for the display is returned in
+ * *numConfigs. If *numConfigs is zero on entry, then configs may be NULL.
+ *
+ * Hardware composers implementing HWC_DEVICE_API_VERSION_1_3 or prior
+ * shall choose one configuration to activate and report it as the first
+ * entry in the returned list. Reporting the inactive configurations is not
+ * required.
+ *
+ * HWC_DEVICE_API_VERSION_1_4 and later provide configuration management
+ * through SurfaceFlinger, and hardware composers implementing these APIs
+ * must also provide getActiveConfig and setActiveConfig. Hardware composers
+ * implementing these API versions may choose not to activate any
+ * configuration, leaving configuration selection to higher levels of the
+ * framework.
+ *
+ * Returns 0 on success or a negative error code on error. If disp is a
+ * hotpluggable display type and no display is connected, an error shall be
+ * returned.
+ *
+ * This field is REQUIRED for HWC_DEVICE_API_VERSION_1_1 and later.
+ * It shall be NULL for previous versions.
+ */
+ int (*getDisplayConfigs)(struct hwc_composer_device_1* dev, int disp,
+ uint32_t* configs, size_t* numConfigs);
+
+ /*
+ * (*getDisplayAttributes)() returns attributes for a specific config of a
+ * connected display. The config parameter is one of the config handles
+ * returned by getDisplayConfigs.
+ *
+ * The list of attributes to return is provided in the attributes
+ * parameter, terminated by HWC_DISPLAY_NO_ATTRIBUTE. The value for each
+ * requested attribute is written in order to the values array. The
+ * HWC_DISPLAY_NO_ATTRIBUTE attribute does not have a value, so the values
+ * array will have one less value than the attributes array.
+ *
+ * This field is REQUIRED for HWC_DEVICE_API_VERSION_1_1 and later.
+ * It shall be NULL for previous versions.
+ *
+ * If disp is a hotpluggable display type and no display is connected,
+ * or if config is not a valid configuration for the display, a negative
+ * error code shall be returned.
+ */
+ int (*getDisplayAttributes)(struct hwc_composer_device_1* dev, int disp,
+ uint32_t config, const uint32_t* attributes, int32_t* values);
+
+ /*
+ * (*getActiveConfig)() returns the index of the configuration that is
+ * currently active on the connected display. The index is relative to
+ * the list of configuration handles returned by getDisplayConfigs. If there
+ * is no active configuration, HWC_ERROR shall be returned.
+ *
+ * Returns the configuration index on success or HWC_ERROR on error.
+ *
+ * This field is REQUIRED for HWC_DEVICE_API_VERSION_1_4 and later.
+ * It shall be NULL for previous versions.
+ */
+ int (*getActiveConfig)(struct hwc_composer_device_1* dev, int disp);
+
+ /*
+ * (*setActiveConfig)() instructs the hardware composer to switch to the
+ * display configuration at the given index in the list of configuration
+ * handles returned by getDisplayConfigs.
+ *
+ * If this function returns without error, any subsequent calls to
+ * getActiveConfig shall return the index set by this function until one
+ * of the following occurs:
+ * 1) Another successful call of this function
+ * 2) The display is disconnected
+ *
+ * Returns 0 on success or a negative error code on error. If disp is a
+ * hotpluggable display type and no display is connected, or if index is
+ * outside of the range of hardware configurations returned by
+ * getDisplayConfigs, an error shall be returned.
+ *
+ * This field is REQUIRED for HWC_DEVICE_API_VERSION_1_4 and later.
+ * It shall be NULL for previous versions.
+ */
+ int (*setActiveConfig)(struct hwc_composer_device_1* dev, int disp,
+ int index);
+ /*
+ * Asynchronously update the location of the cursor layer.
+ *
+ * Within the standard prepare()/set() composition loop, the client
+ * (surfaceflinger) can request that a given layer uses dedicated cursor
+ * composition hardware by specifiying the HWC_IS_CURSOR_LAYER flag. Only
+ * one layer per display can have this flag set. If the layer is suitable
+ * for the platform's cursor hardware, hwcomposer will return from prepare()
+ * a composition type of HWC_CURSOR_OVERLAY for that layer. This indicates
+ * not only that the client is not responsible for compositing that layer,
+ * but also that the client can continue to update the position of that layer
+ * after a call to set(). This can reduce the visible latency of mouse
+ * movement to visible, on-screen cursor updates. Calls to
+ * setCursorPositionAsync() may be made from a different thread doing the
+ * prepare()/set() composition loop, but care must be taken to not interleave
+ * calls of setCursorPositionAsync() between calls of set()/prepare().
+ *
+ * Notes:
+ * - Only one layer per display can be specified as a cursor layer with
+ * HWC_IS_CURSOR_LAYER.
+ * - hwcomposer will only return one layer per display as HWC_CURSOR_OVERLAY
+ * - This returns 0 on success or -errno on error.
+ * - This field is optional for HWC_DEVICE_API_VERSION_1_4 and later. It
+ * should be null for previous versions.
+ */
+ int (*setCursorPositionAsync)(struct hwc_composer_device_1 *dev, int disp, int x_pos, int y_pos);
+
+ /*
+ * Reserved for future use. Must be NULL.
+ */
+ void* reserved_proc[1];
+
+} hwc_composer_device_1_t;
+
+/** convenience API for opening and closing a device */
+
+static inline int hwc_open_1(const struct hw_module_t* module,
+ hwc_composer_device_1_t** device) {
+ return module->methods->open(module,
+ HWC_HARDWARE_COMPOSER, TO_HW_DEVICE_T_OPEN(device));
+}
+
+static inline int hwc_close_1(hwc_composer_device_1_t* device) {
+ return device->common.close(&device->common);
+}
+
+/*****************************************************************************/
+
+__END_DECLS
+
+#endif /* ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_H */
diff --git a/android/android-emugl/guest/hardware/hwcomposer2.h b/android/android-emugl/guest/hardware/hwcomposer2.h
new file mode 100644
index 0000000000..11c9bdd047
--- /dev/null
+++ b/android/android-emugl/guest/hardware/hwcomposer2.h
@@ -0,0 +1,1997 @@
+/*
+ * Copyright 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_HARDWARE_HWCOMPOSER2_H
+#define ANDROID_HARDWARE_HWCOMPOSER2_H
+
+#include <sys/cdefs.h>
+
+#include <hardware/hardware.h>
+
+#include "hwcomposer_defs.h"
+
+__BEGIN_DECLS
+
+/*
+ * Enums
+ *
+ * For most of these enums, there is an invalid value defined to be 0. This is
+ * an attempt to catch uninitialized fields, and these values should not be
+ * used.
+ */
+
+/* Display attributes queryable through getDisplayAttribute */
+typedef enum {
+ HWC2_ATTRIBUTE_INVALID = 0,
+
+ /* Dimensions in pixels */
+ HWC2_ATTRIBUTE_WIDTH = 1,
+ HWC2_ATTRIBUTE_HEIGHT = 2,
+
+ /* Vsync period in nanoseconds */
+ HWC2_ATTRIBUTE_VSYNC_PERIOD = 3,
+
+ /* Dots per thousand inches (DPI * 1000). Scaling by 1000 allows these
+ * numbers to be stored in an int32_t without losing too much precision. If
+ * the DPI for a configuration is unavailable or is considered unreliable,
+ * the device may return -1 instead */
+ HWC2_ATTRIBUTE_DPI_X = 4,
+ HWC2_ATTRIBUTE_DPI_Y = 5,
+} hwc2_attribute_t;
+
+/* Blend modes, settable per layer */
+typedef enum {
+ HWC2_BLEND_MODE_INVALID = 0,
+
+ /* colorOut = colorSrc */
+ HWC2_BLEND_MODE_NONE = 1,
+
+ /* colorOut = colorSrc + colorDst * (1 - alphaSrc) */
+ HWC2_BLEND_MODE_PREMULTIPLIED = 2,
+
+ /* colorOut = colorSrc * alphaSrc + colorDst * (1 - alphaSrc) */
+ HWC2_BLEND_MODE_COVERAGE = 3,
+} hwc2_blend_mode_t;
+
+/* See the 'Callbacks' section for more detailed descriptions of what these
+ * functions do */
+typedef enum {
+ HWC2_CALLBACK_INVALID = 0,
+ HWC2_CALLBACK_HOTPLUG = 1,
+ HWC2_CALLBACK_REFRESH = 2,
+ HWC2_CALLBACK_VSYNC = 3,
+} hwc2_callback_descriptor_t;
+
+/* Optional capabilities which may be supported by some devices. The particular
+ * set of supported capabilities for a given device may be retrieved using
+ * getCapabilities. */
+typedef enum {
+ HWC2_CAPABILITY_INVALID = 0,
+
+ /* Specifies that the device supports sideband stream layers, for which
+ * buffer content updates and other synchronization will not be provided
+ * through the usual validate/present cycle and must be handled by an
+ * external implementation-defined mechanism. Only changes to layer state
+ * (such as position, size, etc.) need to be performed through the
+ * validate/present cycle. */
+ HWC2_CAPABILITY_SIDEBAND_STREAM = 1,
+
+ /* Specifies that the device will apply a color transform even when either
+ * the client or the device has chosen that all layers should be composed by
+ * the client. This will prevent the client from applying the color
+ * transform during its composition step. */
+ HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM = 2,
+
+ /* Specifies that the present fence must not be used as an accurate
+ * representation of the actual present time of a frame.
+ * This capability must never be set by HWC2 devices.
+ * This capability may be set for HWC1 devices that use the
+ * HWC2On1Adapter where emulation of the present fence using the retire
+ * fence is not feasible.
+ * In the future, CTS tests will require present time to be reliable.
+ */
+ HWC2_CAPABILITY_PRESENT_FENCE_IS_NOT_RELIABLE = 3,
+
+ /* Specifies that a device is able to skip the validateDisplay call before
+ * receiving a call to presentDisplay. The client will always skip
+ * validateDisplay and try to call presentDisplay regardless of the changes
+ * in the properties of the layers. If the device returns anything else than
+ * HWC2_ERROR_NONE, it will call validateDisplay then presentDisplay again.
+ * For this capability to be worthwhile the device implementation of
+ * presentDisplay should fail as fast as possible in the case a
+ * validateDisplay step is needed.
+ */
+ HWC2_CAPABILITY_SKIP_VALIDATE= 4,
+} hwc2_capability_t;
+
+/* Possible composition types for a given layer */
+typedef enum {
+ HWC2_COMPOSITION_INVALID = 0,
+
+ /* The client will composite this layer into the client target buffer
+ * (provided to the device through setClientTarget).
+ *
+ * The device must not request any composition type changes for layers of
+ * this type. */
+ HWC2_COMPOSITION_CLIENT = 1,
+
+ /* The device will handle the composition of this layer through a hardware
+ * overlay or other similar means.
+ *
+ * Upon validateDisplay, the device may request a change from this type to
+ * HWC2_COMPOSITION_CLIENT. */
+ HWC2_COMPOSITION_DEVICE = 2,
+
+ /* The device will render this layer using the color set through
+ * setLayerColor. If this functionality is not supported on a layer that the
+ * client sets to HWC2_COMPOSITION_SOLID_COLOR, the device must request that
+ * the composition type of that layer is changed to HWC2_COMPOSITION_CLIENT
+ * upon the next call to validateDisplay.
+ *
+ * Upon validateDisplay, the device may request a change from this type to
+ * HWC2_COMPOSITION_CLIENT. */
+ HWC2_COMPOSITION_SOLID_COLOR = 3,
+
+ /* Similar to DEVICE, but the position of this layer may also be set
+ * asynchronously through setCursorPosition. If this functionality is not
+ * supported on a layer that the client sets to HWC2_COMPOSITION_CURSOR, the
+ * device must request that the composition type of that layer is changed to
+ * HWC2_COMPOSITION_CLIENT upon the next call to validateDisplay.
+ *
+ * Upon validateDisplay, the device may request a change from this type to
+ * either HWC2_COMPOSITION_DEVICE or HWC2_COMPOSITION_CLIENT. Changing to
+ * HWC2_COMPOSITION_DEVICE will prevent the use of setCursorPosition but
+ * still permit the device to composite the layer. */
+ HWC2_COMPOSITION_CURSOR = 4,
+
+ /* The device will handle the composition of this layer, as well as its
+ * buffer updates and content synchronization. Only supported on devices
+ * which provide HWC2_CAPABILITY_SIDEBAND_STREAM.
+ *
+ * Upon validateDisplay, the device may request a change from this type to
+ * either HWC2_COMPOSITION_DEVICE or HWC2_COMPOSITION_CLIENT, but it is
+ * unlikely that content will display correctly in these cases. */
+ HWC2_COMPOSITION_SIDEBAND = 5,
+} hwc2_composition_t;
+
+/* Possible connection options from the hotplug callback */
+typedef enum {
+ HWC2_CONNECTION_INVALID = 0,
+
+ /* The display has been connected */
+ HWC2_CONNECTION_CONNECTED = 1,
+
+ /* The display has been disconnected */
+ HWC2_CONNECTION_DISCONNECTED = 2,
+} hwc2_connection_t;
+
+/* Display requests returned by getDisplayRequests */
+typedef enum {
+ /* Instructs the client to provide a new client target buffer, even if no
+ * layers are marked for client composition. */
+ HWC2_DISPLAY_REQUEST_FLIP_CLIENT_TARGET = 1 << 0,
+
+ /* Instructs the client to write the result of client composition directly
+ * into the virtual display output buffer. If any of the layers are not
+ * marked as HWC2_COMPOSITION_CLIENT or the given display is not a virtual
+ * display, this request has no effect. */
+ HWC2_DISPLAY_REQUEST_WRITE_CLIENT_TARGET_TO_OUTPUT = 1 << 1,
+} hwc2_display_request_t;
+
+/* Display types returned by getDisplayType */
+typedef enum {
+ HWC2_DISPLAY_TYPE_INVALID = 0,
+
+ /* All physical displays, including both internal displays and hotpluggable
+ * external displays */
+ HWC2_DISPLAY_TYPE_PHYSICAL = 1,
+
+ /* Virtual displays created by createVirtualDisplay */
+ HWC2_DISPLAY_TYPE_VIRTUAL = 2,
+} hwc2_display_type_t;
+
+/* Return codes from all functions */
+typedef enum {
+ HWC2_ERROR_NONE = 0,
+ HWC2_ERROR_BAD_CONFIG,
+ HWC2_ERROR_BAD_DISPLAY,
+ HWC2_ERROR_BAD_LAYER,
+ HWC2_ERROR_BAD_PARAMETER,
+ HWC2_ERROR_HAS_CHANGES,
+ HWC2_ERROR_NO_RESOURCES,
+ HWC2_ERROR_NOT_VALIDATED,
+ HWC2_ERROR_UNSUPPORTED,
+} hwc2_error_t;
+
+/* Function descriptors for use with getFunction */
+typedef enum {
+ HWC2_FUNCTION_INVALID = 0,
+ HWC2_FUNCTION_ACCEPT_DISPLAY_CHANGES,
+ HWC2_FUNCTION_CREATE_LAYER,
+ HWC2_FUNCTION_CREATE_VIRTUAL_DISPLAY,
+ HWC2_FUNCTION_DESTROY_LAYER,
+ HWC2_FUNCTION_DESTROY_VIRTUAL_DISPLAY,
+ HWC2_FUNCTION_DUMP,
+ HWC2_FUNCTION_GET_ACTIVE_CONFIG,
+ HWC2_FUNCTION_GET_CHANGED_COMPOSITION_TYPES,
+ HWC2_FUNCTION_GET_CLIENT_TARGET_SUPPORT,
+ HWC2_FUNCTION_GET_COLOR_MODES,
+ HWC2_FUNCTION_GET_DISPLAY_ATTRIBUTE,
+ HWC2_FUNCTION_GET_DISPLAY_CONFIGS,
+ HWC2_FUNCTION_GET_DISPLAY_NAME,
+ HWC2_FUNCTION_GET_DISPLAY_REQUESTS,
+ HWC2_FUNCTION_GET_DISPLAY_TYPE,
+ HWC2_FUNCTION_GET_DOZE_SUPPORT,
+ HWC2_FUNCTION_GET_HDR_CAPABILITIES,
+ HWC2_FUNCTION_GET_MAX_VIRTUAL_DISPLAY_COUNT,
+ HWC2_FUNCTION_GET_RELEASE_FENCES,
+ HWC2_FUNCTION_PRESENT_DISPLAY,
+ HWC2_FUNCTION_REGISTER_CALLBACK,
+ HWC2_FUNCTION_SET_ACTIVE_CONFIG,
+ HWC2_FUNCTION_SET_CLIENT_TARGET,
+ HWC2_FUNCTION_SET_COLOR_MODE,
+ HWC2_FUNCTION_SET_COLOR_TRANSFORM,
+ HWC2_FUNCTION_SET_CURSOR_POSITION,
+ HWC2_FUNCTION_SET_LAYER_BLEND_MODE,
+ HWC2_FUNCTION_SET_LAYER_BUFFER,
+ HWC2_FUNCTION_SET_LAYER_COLOR,
+ HWC2_FUNCTION_SET_LAYER_COMPOSITION_TYPE,
+ HWC2_FUNCTION_SET_LAYER_DATASPACE,
+ HWC2_FUNCTION_SET_LAYER_DISPLAY_FRAME,
+ HWC2_FUNCTION_SET_LAYER_PLANE_ALPHA,
+ HWC2_FUNCTION_SET_LAYER_SIDEBAND_STREAM,
+ HWC2_FUNCTION_SET_LAYER_SOURCE_CROP,
+ HWC2_FUNCTION_SET_LAYER_SURFACE_DAMAGE,
+ HWC2_FUNCTION_SET_LAYER_TRANSFORM,
+ HWC2_FUNCTION_SET_LAYER_VISIBLE_REGION,
+ HWC2_FUNCTION_SET_LAYER_Z_ORDER,
+ HWC2_FUNCTION_SET_OUTPUT_BUFFER,
+ HWC2_FUNCTION_SET_POWER_MODE,
+ HWC2_FUNCTION_SET_VSYNC_ENABLED,
+ HWC2_FUNCTION_VALIDATE_DISPLAY,
+} hwc2_function_descriptor_t;
+
+/* Layer requests returned from getDisplayRequests */
+typedef enum {
+ /* The client should clear its target with transparent pixels where this
+ * layer would be. The client may ignore this request if the layer must be
+ * blended. */
+ HWC2_LAYER_REQUEST_CLEAR_CLIENT_TARGET = 1 << 0,
+} hwc2_layer_request_t;
+
+/* Power modes for use with setPowerMode */
+typedef enum {
+ /* The display is fully off (blanked) */
+ HWC2_POWER_MODE_OFF = 0,
+
+ /* These are optional low power modes. getDozeSupport may be called to
+ * determine whether a given display supports these modes. */
+
+ /* The display is turned on and configured in a low power state that is
+ * suitable for presenting ambient information to the user, possibly with
+ * lower fidelity than HWC2_POWER_MODE_ON, but with greater efficiency. */
+ HWC2_POWER_MODE_DOZE = 1,
+
+ /* The display is configured as in HWC2_POWER_MODE_DOZE but may stop
+ * applying display updates from the client. This is effectively a hint to
+ * the device that drawing to the display has been suspended and that the
+ * the device should remain on in a low power state and continue displaying
+ * its current contents indefinitely until the power mode changes.
+ *
+ * This mode may also be used as a signal to enable hardware-based doze
+ * functionality. In this case, the device is free to take over the display
+ * and manage it autonomously to implement a low power always-on display. */
+ HWC2_POWER_MODE_DOZE_SUSPEND = 3,
+
+ /* The display is fully on */
+ HWC2_POWER_MODE_ON = 2,
+} hwc2_power_mode_t;
+
+/* Vsync values passed to setVsyncEnabled */
+typedef enum {
+ HWC2_VSYNC_INVALID = 0,
+
+ /* Enable vsync */
+ HWC2_VSYNC_ENABLE = 1,
+
+ /* Disable vsync */
+ HWC2_VSYNC_DISABLE = 2,
+} hwc2_vsync_t;
+
+/*
+ * Stringification Functions
+ */
+
+#ifdef HWC2_INCLUDE_STRINGIFICATION
+
+static inline const char* getAttributeName(hwc2_attribute_t attribute) {
+ switch (attribute) {
+ case HWC2_ATTRIBUTE_INVALID: return "Invalid";
+ case HWC2_ATTRIBUTE_WIDTH: return "Width";
+ case HWC2_ATTRIBUTE_HEIGHT: return "Height";
+ case HWC2_ATTRIBUTE_VSYNC_PERIOD: return "VsyncPeriod";
+ case HWC2_ATTRIBUTE_DPI_X: return "DpiX";
+ case HWC2_ATTRIBUTE_DPI_Y: return "DpiY";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getBlendModeName(hwc2_blend_mode_t mode) {
+ switch (mode) {
+ case HWC2_BLEND_MODE_INVALID: return "Invalid";
+ case HWC2_BLEND_MODE_NONE: return "None";
+ case HWC2_BLEND_MODE_PREMULTIPLIED: return "Premultiplied";
+ case HWC2_BLEND_MODE_COVERAGE: return "Coverage";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getCallbackDescriptorName(
+ hwc2_callback_descriptor_t desc) {
+ switch (desc) {
+ case HWC2_CALLBACK_INVALID: return "Invalid";
+ case HWC2_CALLBACK_HOTPLUG: return "Hotplug";
+ case HWC2_CALLBACK_REFRESH: return "Refresh";
+ case HWC2_CALLBACK_VSYNC: return "Vsync";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getCapabilityName(hwc2_capability_t capability) {
+ switch (capability) {
+ case HWC2_CAPABILITY_INVALID: return "Invalid";
+ case HWC2_CAPABILITY_SIDEBAND_STREAM: return "SidebandStream";
+ case HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM:
+ return "SkipClientColorTransform";
+ case HWC2_CAPABILITY_PRESENT_FENCE_IS_NOT_RELIABLE:
+ return "PresentFenceIsNotReliable";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getCompositionName(hwc2_composition_t composition) {
+ switch (composition) {
+ case HWC2_COMPOSITION_INVALID: return "Invalid";
+ case HWC2_COMPOSITION_CLIENT: return "Client";
+ case HWC2_COMPOSITION_DEVICE: return "Device";
+ case HWC2_COMPOSITION_SOLID_COLOR: return "SolidColor";
+ case HWC2_COMPOSITION_CURSOR: return "Cursor";
+ case HWC2_COMPOSITION_SIDEBAND: return "Sideband";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getConnectionName(hwc2_connection_t connection) {
+ switch (connection) {
+ case HWC2_CONNECTION_INVALID: return "Invalid";
+ case HWC2_CONNECTION_CONNECTED: return "Connected";
+ case HWC2_CONNECTION_DISCONNECTED: return "Disconnected";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getDisplayRequestName(
+ hwc2_display_request_t request) {
+ switch (__BIONIC_CAST(static_cast, int, request)) {
+ case 0: return "None";
+ case HWC2_DISPLAY_REQUEST_FLIP_CLIENT_TARGET: return "FlipClientTarget";
+ case HWC2_DISPLAY_REQUEST_WRITE_CLIENT_TARGET_TO_OUTPUT:
+ return "WriteClientTargetToOutput";
+ case HWC2_DISPLAY_REQUEST_FLIP_CLIENT_TARGET |
+ HWC2_DISPLAY_REQUEST_WRITE_CLIENT_TARGET_TO_OUTPUT:
+ return "FlipClientTarget|WriteClientTargetToOutput";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getDisplayTypeName(hwc2_display_type_t type) {
+ switch (type) {
+ case HWC2_DISPLAY_TYPE_INVALID: return "Invalid";
+ case HWC2_DISPLAY_TYPE_PHYSICAL: return "Physical";
+ case HWC2_DISPLAY_TYPE_VIRTUAL: return "Virtual";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getErrorName(hwc2_error_t error) {
+ switch (error) {
+ case HWC2_ERROR_NONE: return "None";
+ case HWC2_ERROR_BAD_CONFIG: return "BadConfig";
+ case HWC2_ERROR_BAD_DISPLAY: return "BadDisplay";
+ case HWC2_ERROR_BAD_LAYER: return "BadLayer";
+ case HWC2_ERROR_BAD_PARAMETER: return "BadParameter";
+ case HWC2_ERROR_HAS_CHANGES: return "HasChanges";
+ case HWC2_ERROR_NO_RESOURCES: return "NoResources";
+ case HWC2_ERROR_NOT_VALIDATED: return "NotValidated";
+ case HWC2_ERROR_UNSUPPORTED: return "Unsupported";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getFunctionDescriptorName(
+ hwc2_function_descriptor_t desc) {
+ switch (desc) {
+ case HWC2_FUNCTION_INVALID: return "Invalid";
+ case HWC2_FUNCTION_ACCEPT_DISPLAY_CHANGES:
+ return "AcceptDisplayChanges";
+ case HWC2_FUNCTION_CREATE_LAYER: return "CreateLayer";
+ case HWC2_FUNCTION_CREATE_VIRTUAL_DISPLAY:
+ return "CreateVirtualDisplay";
+ case HWC2_FUNCTION_DESTROY_LAYER: return "DestroyLayer";
+ case HWC2_FUNCTION_DESTROY_VIRTUAL_DISPLAY:
+ return "DestroyVirtualDisplay";
+ case HWC2_FUNCTION_DUMP: return "Dump";
+ case HWC2_FUNCTION_GET_ACTIVE_CONFIG: return "GetActiveConfig";
+ case HWC2_FUNCTION_GET_CHANGED_COMPOSITION_TYPES:
+ return "GetChangedCompositionTypes";
+ case HWC2_FUNCTION_GET_CLIENT_TARGET_SUPPORT:
+ return "GetClientTargetSupport";
+ case HWC2_FUNCTION_GET_COLOR_MODES: return "GetColorModes";
+ case HWC2_FUNCTION_GET_DISPLAY_ATTRIBUTE: return "GetDisplayAttribute";
+ case HWC2_FUNCTION_GET_DISPLAY_CONFIGS: return "GetDisplayConfigs";
+ case HWC2_FUNCTION_GET_DISPLAY_NAME: return "GetDisplayName";
+ case HWC2_FUNCTION_GET_DISPLAY_REQUESTS: return "GetDisplayRequests";
+ case HWC2_FUNCTION_GET_DISPLAY_TYPE: return "GetDisplayType";
+ case HWC2_FUNCTION_GET_DOZE_SUPPORT: return "GetDozeSupport";
+ case HWC2_FUNCTION_GET_HDR_CAPABILITIES: return "GetHdrCapabilities";
+ case HWC2_FUNCTION_GET_MAX_VIRTUAL_DISPLAY_COUNT:
+ return "GetMaxVirtualDisplayCount";
+ case HWC2_FUNCTION_GET_RELEASE_FENCES: return "GetReleaseFences";
+ case HWC2_FUNCTION_PRESENT_DISPLAY: return "PresentDisplay";
+ case HWC2_FUNCTION_REGISTER_CALLBACK: return "RegisterCallback";
+ case HWC2_FUNCTION_SET_ACTIVE_CONFIG: return "SetActiveConfig";
+ case HWC2_FUNCTION_SET_CLIENT_TARGET: return "SetClientTarget";
+ case HWC2_FUNCTION_SET_COLOR_MODE: return "SetColorMode";
+ case HWC2_FUNCTION_SET_COLOR_TRANSFORM: return "SetColorTransform";
+ case HWC2_FUNCTION_SET_CURSOR_POSITION: return "SetCursorPosition";
+ case HWC2_FUNCTION_SET_LAYER_BLEND_MODE: return "SetLayerBlendMode";
+ case HWC2_FUNCTION_SET_LAYER_BUFFER: return "SetLayerBuffer";
+ case HWC2_FUNCTION_SET_LAYER_COLOR: return "SetLayerColor";
+ case HWC2_FUNCTION_SET_LAYER_COMPOSITION_TYPE:
+ return "SetLayerCompositionType";
+ case HWC2_FUNCTION_SET_LAYER_DATASPACE: return "SetLayerDataspace";
+ case HWC2_FUNCTION_SET_LAYER_DISPLAY_FRAME:
+ return "SetLayerDisplayFrame";
+ case HWC2_FUNCTION_SET_LAYER_PLANE_ALPHA: return "SetLayerPlaneAlpha";
+ case HWC2_FUNCTION_SET_LAYER_SIDEBAND_STREAM:
+ return "SetLayerSidebandStream";
+ case HWC2_FUNCTION_SET_LAYER_SOURCE_CROP: return "SetLayerSourceCrop";
+ case HWC2_FUNCTION_SET_LAYER_SURFACE_DAMAGE:
+ return "SetLayerSurfaceDamage";
+ case HWC2_FUNCTION_SET_LAYER_TRANSFORM: return "SetLayerTransform";
+ case HWC2_FUNCTION_SET_LAYER_VISIBLE_REGION:
+ return "SetLayerVisibleRegion";
+ case HWC2_FUNCTION_SET_LAYER_Z_ORDER: return "SetLayerZOrder";
+ case HWC2_FUNCTION_SET_OUTPUT_BUFFER: return "SetOutputBuffer";
+ case HWC2_FUNCTION_SET_POWER_MODE: return "SetPowerMode";
+ case HWC2_FUNCTION_SET_VSYNC_ENABLED: return "SetVsyncEnabled";
+ case HWC2_FUNCTION_VALIDATE_DISPLAY: return "ValidateDisplay";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getLayerRequestName(hwc2_layer_request_t request) {
+ switch (__BIONIC_CAST(static_cast, int, request)) {
+ case 0: return "None";
+ case HWC2_LAYER_REQUEST_CLEAR_CLIENT_TARGET: return "ClearClientTarget";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getPowerModeName(hwc2_power_mode_t mode) {
+ switch (mode) {
+ case HWC2_POWER_MODE_OFF: return "Off";
+ case HWC2_POWER_MODE_DOZE_SUSPEND: return "DozeSuspend";
+ case HWC2_POWER_MODE_DOZE: return "Doze";
+ case HWC2_POWER_MODE_ON: return "On";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getTransformName(hwc_transform_t transform) {
+ switch (__BIONIC_CAST(static_cast, int, transform)) {
+ case 0: return "None";
+ case HWC_TRANSFORM_FLIP_H: return "FlipH";
+ case HWC_TRANSFORM_FLIP_V: return "FlipV";
+ case HWC_TRANSFORM_ROT_90: return "Rotate90";
+ case HWC_TRANSFORM_ROT_180: return "Rotate180";
+ case HWC_TRANSFORM_ROT_270: return "Rotate270";
+ case HWC_TRANSFORM_FLIP_H_ROT_90: return "FlipHRotate90";
+ case HWC_TRANSFORM_FLIP_V_ROT_90: return "FlipVRotate90";
+ default: return "Unknown";
+ }
+}
+
+static inline const char* getVsyncName(hwc2_vsync_t vsync) {
+ switch (vsync) {
+ case HWC2_VSYNC_INVALID: return "Invalid";
+ case HWC2_VSYNC_ENABLE: return "Enable";
+ case HWC2_VSYNC_DISABLE: return "Disable";
+ default: return "Unknown";
+ }
+}
+
+#define TO_STRING(E, T, printer) \
+ inline std::string to_string(E value) { return printer(value); } \
+ inline std::string to_string(T value) { return to_string(static_cast<E>(value)); }
+#else // !HWC2_INCLUDE_STRINGIFICATION
+#define TO_STRING(name, printer)
+#endif // HWC2_INCLUDE_STRINGIFICATION
+
+/*
+ * C++11 features
+ */
+
+#ifdef HWC2_USE_CPP11
+__END_DECLS
+
+#ifdef HWC2_INCLUDE_STRINGIFICATION
+#include <string>
+#endif
+
+namespace HWC2 {
+
+enum class Attribute : int32_t {
+ Invalid = HWC2_ATTRIBUTE_INVALID,
+ Width = HWC2_ATTRIBUTE_WIDTH,
+ Height = HWC2_ATTRIBUTE_HEIGHT,
+ VsyncPeriod = HWC2_ATTRIBUTE_VSYNC_PERIOD,
+ DpiX = HWC2_ATTRIBUTE_DPI_X,
+ DpiY = HWC2_ATTRIBUTE_DPI_Y,
+};
+TO_STRING(hwc2_attribute_t, Attribute, getAttributeName)
+
+enum class BlendMode : int32_t {
+ Invalid = HWC2_BLEND_MODE_INVALID,
+ None = HWC2_BLEND_MODE_NONE,
+ Premultiplied = HWC2_BLEND_MODE_PREMULTIPLIED,
+ Coverage = HWC2_BLEND_MODE_COVERAGE,
+};
+TO_STRING(hwc2_blend_mode_t, BlendMode, getBlendModeName)
+
+enum class Callback : int32_t {
+ Invalid = HWC2_CALLBACK_INVALID,
+ Hotplug = HWC2_CALLBACK_HOTPLUG,
+ Refresh = HWC2_CALLBACK_REFRESH,
+ Vsync = HWC2_CALLBACK_VSYNC,
+};
+TO_STRING(hwc2_callback_descriptor_t, Callback, getCallbackDescriptorName)
+
+enum class Capability : int32_t {
+ Invalid = HWC2_CAPABILITY_INVALID,
+ SidebandStream = HWC2_CAPABILITY_SIDEBAND_STREAM,
+ SkipClientColorTransform = HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM,
+ PresentFenceIsNotReliable = HWC2_CAPABILITY_PRESENT_FENCE_IS_NOT_RELIABLE,
+ SkipValidate = HWC2_CAPABILITY_SKIP_VALIDATE,
+};
+TO_STRING(hwc2_capability_t, Capability, getCapabilityName)
+
+enum class Composition : int32_t {
+ Invalid = HWC2_COMPOSITION_INVALID,
+ Client = HWC2_COMPOSITION_CLIENT,
+ Device = HWC2_COMPOSITION_DEVICE,
+ SolidColor = HWC2_COMPOSITION_SOLID_COLOR,
+ Cursor = HWC2_COMPOSITION_CURSOR,
+ Sideband = HWC2_COMPOSITION_SIDEBAND,
+};
+TO_STRING(hwc2_composition_t, Composition, getCompositionName)
+
+enum class Connection : int32_t {
+ Invalid = HWC2_CONNECTION_INVALID,
+ Connected = HWC2_CONNECTION_CONNECTED,
+ Disconnected = HWC2_CONNECTION_DISCONNECTED,
+};
+TO_STRING(hwc2_connection_t, Connection, getConnectionName)
+
+enum class DisplayRequest : int32_t {
+ FlipClientTarget = HWC2_DISPLAY_REQUEST_FLIP_CLIENT_TARGET,
+ WriteClientTargetToOutput =
+ HWC2_DISPLAY_REQUEST_WRITE_CLIENT_TARGET_TO_OUTPUT,
+};
+TO_STRING(hwc2_display_request_t, DisplayRequest, getDisplayRequestName)
+
+enum class DisplayType : int32_t {
+ Invalid = HWC2_DISPLAY_TYPE_INVALID,
+ Physical = HWC2_DISPLAY_TYPE_PHYSICAL,
+ Virtual = HWC2_DISPLAY_TYPE_VIRTUAL,
+};
+TO_STRING(hwc2_display_type_t, DisplayType, getDisplayTypeName)
+
+enum class Error : int32_t {
+ None = HWC2_ERROR_NONE,
+ BadConfig = HWC2_ERROR_BAD_CONFIG,
+ BadDisplay = HWC2_ERROR_BAD_DISPLAY,
+ BadLayer = HWC2_ERROR_BAD_LAYER,
+ BadParameter = HWC2_ERROR_BAD_PARAMETER,
+ HasChanges = HWC2_ERROR_HAS_CHANGES,
+ NoResources = HWC2_ERROR_NO_RESOURCES,
+ NotValidated = HWC2_ERROR_NOT_VALIDATED,
+ Unsupported = HWC2_ERROR_UNSUPPORTED,
+};
+TO_STRING(hwc2_error_t, Error, getErrorName)
+
+enum class FunctionDescriptor : int32_t {
+ Invalid = HWC2_FUNCTION_INVALID,
+ AcceptDisplayChanges = HWC2_FUNCTION_ACCEPT_DISPLAY_CHANGES,
+ CreateLayer = HWC2_FUNCTION_CREATE_LAYER,
+ CreateVirtualDisplay = HWC2_FUNCTION_CREATE_VIRTUAL_DISPLAY,
+ DestroyLayer = HWC2_FUNCTION_DESTROY_LAYER,
+ DestroyVirtualDisplay = HWC2_FUNCTION_DESTROY_VIRTUAL_DISPLAY,
+ Dump = HWC2_FUNCTION_DUMP,
+ GetActiveConfig = HWC2_FUNCTION_GET_ACTIVE_CONFIG,
+ GetChangedCompositionTypes = HWC2_FUNCTION_GET_CHANGED_COMPOSITION_TYPES,
+ GetClientTargetSupport = HWC2_FUNCTION_GET_CLIENT_TARGET_SUPPORT,
+ GetColorModes = HWC2_FUNCTION_GET_COLOR_MODES,
+ GetDisplayAttribute = HWC2_FUNCTION_GET_DISPLAY_ATTRIBUTE,
+ GetDisplayConfigs = HWC2_FUNCTION_GET_DISPLAY_CONFIGS,
+ GetDisplayName = HWC2_FUNCTION_GET_DISPLAY_NAME,
+ GetDisplayRequests = HWC2_FUNCTION_GET_DISPLAY_REQUESTS,
+ GetDisplayType = HWC2_FUNCTION_GET_DISPLAY_TYPE,
+ GetDozeSupport = HWC2_FUNCTION_GET_DOZE_SUPPORT,
+ GetHdrCapabilities = HWC2_FUNCTION_GET_HDR_CAPABILITIES,
+ GetMaxVirtualDisplayCount = HWC2_FUNCTION_GET_MAX_VIRTUAL_DISPLAY_COUNT,
+ GetReleaseFences = HWC2_FUNCTION_GET_RELEASE_FENCES,
+ PresentDisplay = HWC2_FUNCTION_PRESENT_DISPLAY,
+ RegisterCallback = HWC2_FUNCTION_REGISTER_CALLBACK,
+ SetActiveConfig = HWC2_FUNCTION_SET_ACTIVE_CONFIG,
+ SetClientTarget = HWC2_FUNCTION_SET_CLIENT_TARGET,
+ SetColorMode = HWC2_FUNCTION_SET_COLOR_MODE,
+ SetColorTransform = HWC2_FUNCTION_SET_COLOR_TRANSFORM,
+ SetCursorPosition = HWC2_FUNCTION_SET_CURSOR_POSITION,
+ SetLayerBlendMode = HWC2_FUNCTION_SET_LAYER_BLEND_MODE,
+ SetLayerBuffer = HWC2_FUNCTION_SET_LAYER_BUFFER,
+ SetLayerColor = HWC2_FUNCTION_SET_LAYER_COLOR,
+ SetLayerCompositionType = HWC2_FUNCTION_SET_LAYER_COMPOSITION_TYPE,
+ SetLayerDataspace = HWC2_FUNCTION_SET_LAYER_DATASPACE,
+ SetLayerDisplayFrame = HWC2_FUNCTION_SET_LAYER_DISPLAY_FRAME,
+ SetLayerPlaneAlpha = HWC2_FUNCTION_SET_LAYER_PLANE_ALPHA,
+ SetLayerSidebandStream = HWC2_FUNCTION_SET_LAYER_SIDEBAND_STREAM,
+ SetLayerSourceCrop = HWC2_FUNCTION_SET_LAYER_SOURCE_CROP,
+ SetLayerSurfaceDamage = HWC2_FUNCTION_SET_LAYER_SURFACE_DAMAGE,
+ SetLayerTransform = HWC2_FUNCTION_SET_LAYER_TRANSFORM,
+ SetLayerVisibleRegion = HWC2_FUNCTION_SET_LAYER_VISIBLE_REGION,
+ SetLayerZOrder = HWC2_FUNCTION_SET_LAYER_Z_ORDER,
+ SetOutputBuffer = HWC2_FUNCTION_SET_OUTPUT_BUFFER,
+ SetPowerMode = HWC2_FUNCTION_SET_POWER_MODE,
+ SetVsyncEnabled = HWC2_FUNCTION_SET_VSYNC_ENABLED,
+ ValidateDisplay = HWC2_FUNCTION_VALIDATE_DISPLAY,
+};
+TO_STRING(hwc2_function_descriptor_t, FunctionDescriptor,
+ getFunctionDescriptorName)
+
+enum class LayerRequest : int32_t {
+ ClearClientTarget = HWC2_LAYER_REQUEST_CLEAR_CLIENT_TARGET,
+};
+TO_STRING(hwc2_layer_request_t, LayerRequest, getLayerRequestName)
+
+enum class PowerMode : int32_t {
+ Off = HWC2_POWER_MODE_OFF,
+ DozeSuspend = HWC2_POWER_MODE_DOZE_SUSPEND,
+ Doze = HWC2_POWER_MODE_DOZE,
+ On = HWC2_POWER_MODE_ON,
+};
+TO_STRING(hwc2_power_mode_t, PowerMode, getPowerModeName)
+
+enum class Transform : int32_t {
+ None = 0,
+ FlipH = HWC_TRANSFORM_FLIP_H,
+ FlipV = HWC_TRANSFORM_FLIP_V,
+ Rotate90 = HWC_TRANSFORM_ROT_90,
+ Rotate180 = HWC_TRANSFORM_ROT_180,
+ Rotate270 = HWC_TRANSFORM_ROT_270,
+ FlipHRotate90 = HWC_TRANSFORM_FLIP_H_ROT_90,
+ FlipVRotate90 = HWC_TRANSFORM_FLIP_V_ROT_90,
+};
+TO_STRING(hwc_transform_t, Transform, getTransformName)
+
+enum class Vsync : int32_t {
+ Invalid = HWC2_VSYNC_INVALID,
+ Enable = HWC2_VSYNC_ENABLE,
+ Disable = HWC2_VSYNC_DISABLE,
+};
+TO_STRING(hwc2_vsync_t, Vsync, getVsyncName)
+
+} // namespace HWC2
+
+__BEGIN_DECLS
+#endif // HWC2_USE_CPP11
+
+/*
+ * Typedefs
+ */
+
+typedef void (*hwc2_function_pointer_t)();
+
+typedef void* hwc2_callback_data_t;
+typedef uint32_t hwc2_config_t;
+typedef uint64_t hwc2_display_t;
+typedef uint64_t hwc2_layer_t;
+
+/*
+ * Device Struct
+ */
+
+typedef struct hwc2_device {
+ /* Must be the first member of this struct, since a pointer to this struct
+ * will be generated by casting from a hw_device_t* */
+ struct hw_device_t common;
+
+ /* getCapabilities(..., outCount, outCapabilities)
+ *
+ * Provides a list of capabilities (described in the definition of
+ * hwc2_capability_t above) supported by this device. This list must
+ * not change after the device has been loaded.
+ *
+ * Parameters:
+ * outCount - if outCapabilities was NULL, the number of capabilities
+ * which would have been returned; if outCapabilities was not NULL,
+ * the number of capabilities returned, which must not exceed the
+ * value stored in outCount prior to the call
+ * outCapabilities - a list of capabilities supported by this device; may
+ * be NULL, in which case this function must write into outCount the
+ * number of capabilities which would have been written into
+ * outCapabilities
+ */
+ void (*getCapabilities)(struct hwc2_device* device, uint32_t* outCount,
+ int32_t* /*hwc2_capability_t*/ outCapabilities);
+
+ /* getFunction(..., descriptor)
+ *
+ * Returns a function pointer which implements the requested description.
+ *
+ * Parameters:
+ * descriptor - the function to return
+ *
+ * Returns either a function pointer implementing the requested descriptor
+ * or NULL if the described function is not supported by this device.
+ */
+ hwc2_function_pointer_t (*getFunction)(struct hwc2_device* device,
+ int32_t /*hwc2_function_descriptor_t*/ descriptor);
+} hwc2_device_t;
+
+static inline int hwc2_open(const struct hw_module_t* module,
+ hwc2_device_t** device) {
+ return module->methods->open(module, HWC_HARDWARE_COMPOSER,
+ TO_HW_DEVICE_T_OPEN(device));
+}
+
+static inline int hwc2_close(hwc2_device_t* device) {
+ return device->common.close(&device->common);
+}
+
+/*
+ * Callbacks
+ *
+ * All of these callbacks take as their first parameter the callbackData which
+ * was provided at the time of callback registration, so this parameter is
+ * omitted from the described parameter lists.
+ */
+
+/* hotplug(..., display, connected)
+ * Descriptor: HWC2_CALLBACK_HOTPLUG
+ * Will be provided to all HWC2 devices
+ *
+ * Notifies the client that the given display has either been connected or
+ * disconnected. Every active display (even a built-in physical display) must
+ * trigger at least one hotplug notification, even if it only occurs immediately
+ * after callback registration.
+ *
+ * The client may call back into the device on the same thread to query display
+ * properties (such as width, height, and vsync period), and other threads may
+ * call into the device while the callback is in progress. The device must
+ * serialize calls to this callback such that only one thread is calling it at a
+ * time.
+ *
+ * Displays which have been connected are assumed to be in HWC2_POWER_MODE_OFF,
+ * and the vsync callback should not be called for a display until vsync has
+ * been enabled with setVsyncEnabled.
+ *
+ * Parameters:
+ * display - the display which has been hotplugged
+ * connected - whether the display has been connected or disconnected
+ */
+typedef void (*HWC2_PFN_HOTPLUG)(hwc2_callback_data_t callbackData,
+ hwc2_display_t display, int32_t /*hwc2_connection_t*/ connected);
+
+/* refresh(..., display)
+ * Descriptor: HWC2_CALLBACK_REFRESH
+ * Will be provided to all HWC2 devices
+ *
+ * Notifies the client to trigger a screen refresh. This forces all layer state
+ * for this display to be resent, and the display to be validated and presented,
+ * even if there have been no changes.
+ *
+ * This refresh will occur some time after the callback is initiated, but not
+ * necessarily before it returns. This thread, however, is guaranteed not to
+ * call back into the device, thus it is safe to trigger this callback from
+ * other functions which call into the device.
+ *
+ * Parameters:
+ * display - the display to refresh
+ */
+typedef void (*HWC2_PFN_REFRESH)(hwc2_callback_data_t callbackData,
+ hwc2_display_t display);
+
+/* vsync(..., display, timestamp)
+ * Descriptor: HWC2_CALLBACK_VSYNC
+ * Will be provided to all HWC2 devices
+ *
+ * Notifies the client that a vsync event has occurred. This callback must
+ * only be triggered when vsync is enabled for this display (through
+ * setVsyncEnabled).
+ *
+ * This callback should be triggered from a thread of at least
+ * HAL_PRIORITY_URGENT_DISPLAY with as little latency as possible, typically
+ * less than 0.5 ms. This thread is guaranteed not to call back into the device.
+ *
+ * Parameters:
+ * display - the display which has received a vsync event
+ * timestamp - the CLOCK_MONOTONIC time at which the vsync event occurred, in
+ * nanoseconds
+ */
+typedef void (*HWC2_PFN_VSYNC)(hwc2_callback_data_t callbackData,
+ hwc2_display_t display, int64_t timestamp);
+
+/*
+ * Device Functions
+ *
+ * All of these functions take as their first parameter a device pointer, so
+ * this parameter is omitted from the described parameter lists.
+ */
+
+/* createVirtualDisplay(..., width, height, format, outDisplay)
+ * Descriptor: HWC2_FUNCTION_CREATE_VIRTUAL_DISPLAY
+ * Must be provided by all HWC2 devices
+ *
+ * Creates a new virtual display with the given width and height. The format
+ * passed into this function is the default format requested by the consumer of
+ * the virtual display output buffers. If a different format will be returned by
+ * the device, it should be returned in this parameter so it can be set properly
+ * when handing the buffers to the consumer.
+ *
+ * The display will be assumed to be on from the time the first frame is
+ * presented until the display is destroyed.
+ *
+ * Parameters:
+ * width - width in pixels
+ * height - height in pixels
+ * format - prior to the call, the default output buffer format selected by
+ * the consumer; after the call, the format the device will produce
+ * outDisplay - the newly-created virtual display; pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_UNSUPPORTED - the width or height is too large for the device to
+ * be able to create a virtual display
+ * HWC2_ERROR_NO_RESOURCES - the device is unable to create a new virtual
+ * display at this time
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_CREATE_VIRTUAL_DISPLAY)(
+ hwc2_device_t* device, uint32_t width, uint32_t height,
+ int32_t* /*android_pixel_format_t*/ format, hwc2_display_t* outDisplay);
+
+/* destroyVirtualDisplay(..., display)
+ * Descriptor: HWC2_FUNCTION_DESTROY_VIRTUAL_DISPLAY
+ * Must be provided by all HWC2 devices
+ *
+ * Destroys a virtual display. After this call all resources consumed by this
+ * display may be freed by the device and any operations performed on this
+ * display should fail.
+ *
+ * Parameters:
+ * display - the virtual display to destroy
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - the display handle which was passed in does not
+ * refer to a virtual display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_DESTROY_VIRTUAL_DISPLAY)(
+ hwc2_device_t* device, hwc2_display_t display);
+
+/* dump(..., outSize, outBuffer)
+ * Descriptor: HWC2_FUNCTION_DUMP
+ * Must be provided by all HWC2 devices
+ *
+ * Retrieves implementation-defined debug information, which will be displayed
+ * during, for example, `dumpsys SurfaceFlinger`.
+ *
+ * If called with outBuffer == NULL, the device should store a copy of the
+ * desired output and return its length in bytes in outSize. If the device
+ * already has a stored copy, that copy should be purged and replaced with a
+ * fresh copy.
+ *
+ * If called with outBuffer != NULL, the device should copy its stored version
+ * of the output into outBuffer and store how many bytes of data it copied into
+ * outSize. Prior to this call, the client will have populated outSize with the
+ * maximum number of bytes outBuffer can hold. The device must not write more
+ * than this amount into outBuffer. If the device does not currently have a
+ * stored copy, then it should return 0 in outSize.
+ *
+ * Any data written into outBuffer need not be null-terminated.
+ *
+ * Parameters:
+ * outSize - if outBuffer was NULL, the number of bytes needed to copy the
+ * device's stored output; if outBuffer was not NULL, the number of bytes
+ * written into it, which must not exceed the value stored in outSize
+ * prior to the call; pointer will be non-NULL
+ * outBuffer - the buffer to write the dump output into; may be NULL as
+ * described above; data written into this buffer need not be
+ * null-terminated
+ */
+typedef void (*HWC2_PFN_DUMP)(hwc2_device_t* device, uint32_t* outSize,
+ char* outBuffer);
+
+/* getMaxVirtualDisplayCount(...)
+ * Descriptor: HWC2_FUNCTION_GET_MAX_VIRTUAL_DISPLAY_COUNT
+ * Must be provided by all HWC2 devices
+ *
+ * Returns the maximum number of virtual displays supported by this device
+ * (which may be 0). The client will not attempt to create more than this many
+ * virtual displays on this device. This number must not change for the lifetime
+ * of the device.
+ */
+typedef uint32_t (*HWC2_PFN_GET_MAX_VIRTUAL_DISPLAY_COUNT)(
+ hwc2_device_t* device);
+
+/* registerCallback(..., descriptor, callbackData, pointer)
+ * Descriptor: HWC2_FUNCTION_REGISTER_CALLBACK
+ * Must be provided by all HWC2 devices
+ *
+ * Provides a callback for the device to call. All callbacks take a callbackData
+ * item as the first parameter, so this value should be stored with the callback
+ * for later use. The callbackData may differ from one callback to another. If
+ * this function is called multiple times with the same descriptor, later
+ * callbacks replace earlier ones.
+ *
+ * Parameters:
+ * descriptor - which callback should be set
+ * callBackdata - opaque data which must be passed back through the callback
+ * pointer - a non-NULL function pointer corresponding to the descriptor
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_PARAMETER - descriptor was invalid
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_REGISTER_CALLBACK)(
+ hwc2_device_t* device,
+ int32_t /*hwc2_callback_descriptor_t*/ descriptor,
+ hwc2_callback_data_t callbackData, hwc2_function_pointer_t pointer);
+
+/*
+ * Display Functions
+ *
+ * All of these functions take as their first two parameters a device pointer
+ * and a display handle, so these parameters are omitted from the described
+ * parameter lists.
+ */
+
+/* acceptDisplayChanges(...)
+ * Descriptor: HWC2_FUNCTION_ACCEPT_DISPLAY_CHANGES
+ * Must be provided by all HWC2 devices
+ *
+ * Accepts the changes required by the device from the previous validateDisplay
+ * call (which may be queried using getChangedCompositionTypes) and revalidates
+ * the display. This function is equivalent to requesting the changed types from
+ * getChangedCompositionTypes, setting those types on the corresponding layers,
+ * and then calling validateDisplay again.
+ *
+ * After this call it must be valid to present this display. Calling this after
+ * validateDisplay returns 0 changes must succeed with HWC2_ERROR_NONE, but
+ * should have no other effect.
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_NOT_VALIDATED - validateDisplay has not been called
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_ACCEPT_DISPLAY_CHANGES)(
+ hwc2_device_t* device, hwc2_display_t display);
+
+/* createLayer(..., outLayer)
+ * Descriptor: HWC2_FUNCTION_CREATE_LAYER
+ * Must be provided by all HWC2 devices
+ *
+ * Creates a new layer on the given display.
+ *
+ * Parameters:
+ * outLayer - the handle of the new layer; pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_NO_RESOURCES - the device was unable to create this layer
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_CREATE_LAYER)(hwc2_device_t* device,
+ hwc2_display_t display, hwc2_layer_t* outLayer);
+
+/* destroyLayer(..., layer)
+ * Descriptor: HWC2_FUNCTION_DESTROY_LAYER
+ * Must be provided by all HWC2 devices
+ *
+ * Destroys the given layer.
+ *
+ * Parameters:
+ * layer - the handle of the layer to destroy
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_DESTROY_LAYER)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer);
+
+/* getActiveConfig(..., outConfig)
+ * Descriptor: HWC2_FUNCTION_GET_ACTIVE_CONFIG
+ * Must be provided by all HWC2 devices
+ *
+ * Retrieves which display configuration is currently active.
+ *
+ * If no display configuration is currently active, this function must return
+ * HWC2_ERROR_BAD_CONFIG and place no configuration handle in outConfig. It is
+ * the responsibility of the client to call setActiveConfig with a valid
+ * configuration before attempting to present anything on the display.
+ *
+ * Parameters:
+ * outConfig - the currently active display configuration; pointer will be
+ * non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_CONFIG - no configuration is currently active
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_ACTIVE_CONFIG)(
+ hwc2_device_t* device, hwc2_display_t display,
+ hwc2_config_t* outConfig);
+
+/* getChangedCompositionTypes(..., outNumElements, outLayers, outTypes)
+ * Descriptor: HWC2_FUNCTION_GET_CHANGED_COMPOSITION_TYPES
+ * Must be provided by all HWC2 devices
+ *
+ * Retrieves the layers for which the device requires a different composition
+ * type than had been set prior to the last call to validateDisplay. The client
+ * will either update its state with these types and call acceptDisplayChanges,
+ * or will set new types and attempt to validate the display again.
+ *
+ * outLayers and outTypes may be NULL to retrieve the number of elements which
+ * will be returned. The number of elements returned must be the same as the
+ * value returned in outNumTypes from the last call to validateDisplay.
+ *
+ * Parameters:
+ * outNumElements - if outLayers or outTypes were NULL, the number of layers
+ * and types which would have been returned; if both were non-NULL, the
+ * number of elements returned in outLayers and outTypes, which must not
+ * exceed the value stored in outNumElements prior to the call; pointer
+ * will be non-NULL
+ * outLayers - an array of layer handles
+ * outTypes - an array of composition types, each corresponding to an element
+ * of outLayers
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_NOT_VALIDATED - validateDisplay has not been called for this
+ * display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_CHANGED_COMPOSITION_TYPES)(
+ hwc2_device_t* device, hwc2_display_t display,
+ uint32_t* outNumElements, hwc2_layer_t* outLayers,
+ int32_t* /*hwc2_composition_t*/ outTypes);
+
+/* getClientTargetSupport(..., width, height, format, dataspace)
+ * Descriptor: HWC2_FUNCTION_GET_CLIENT_TARGET_SUPPORT
+ * Must be provided by all HWC2 devices
+ *
+ * Returns whether a client target with the given properties can be handled by
+ * the device.
+ *
+ * The valid formats can be found in android_pixel_format_t in
+ * <system/graphics.h>.
+ *
+ * For more about dataspaces, see setLayerDataspace.
+ *
+ * This function must return true for a client target with width and height
+ * equal to the active display configuration dimensions,
+ * HAL_PIXEL_FORMAT_RGBA_8888, and HAL_DATASPACE_UNKNOWN. It is not required to
+ * return true for any other configuration.
+ *
+ * Parameters:
+ * width - client target width in pixels
+ * height - client target height in pixels
+ * format - client target format
+ * dataspace - client target dataspace, as described in setLayerDataspace
+ *
+ * Returns HWC2_ERROR_NONE if the given configuration is supported or one of the
+ * following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_UNSUPPORTED - the given configuration is not supported
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_CLIENT_TARGET_SUPPORT)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t width,
+ uint32_t height, int32_t /*android_pixel_format_t*/ format,
+ int32_t /*android_dataspace_t*/ dataspace);
+
+/* getColorModes(..., outNumModes, outModes)
+ * Descriptor: HWC2_FUNCTION_GET_COLOR_MODES
+ * Must be provided by all HWC2 devices
+ *
+ * Returns the color modes supported on this display.
+ *
+ * The valid color modes can be found in android_color_mode_t in
+ * <system/graphics.h>. All HWC2 devices must support at least
+ * HAL_COLOR_MODE_NATIVE.
+ *
+ * outNumModes may be NULL to retrieve the number of modes which will be
+ * returned.
+ *
+ * Parameters:
+ * outNumModes - if outModes was NULL, the number of modes which would have
+ * been returned; if outModes was not NULL, the number of modes returned,
+ * which must not exceed the value stored in outNumModes prior to the
+ * call; pointer will be non-NULL
+ * outModes - an array of color modes
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_COLOR_MODES)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t* outNumModes,
+ int32_t* /*android_color_mode_t*/ outModes);
+
+/* getDisplayAttribute(..., config, attribute, outValue)
+ * Descriptor: HWC2_FUNCTION_GET_DISPLAY_ATTRIBUTE
+ * Must be provided by all HWC2 devices
+ *
+ * Returns a display attribute value for a particular display configuration.
+ *
+ * Any attribute which is not supported or for which the value is unknown by the
+ * device must return a value of -1.
+ *
+ * Parameters:
+ * config - the display configuration for which to return attribute values
+ * attribute - the attribute to query
+ * outValue - the value of the attribute; the pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_CONFIG - config does not name a valid configuration for this
+ * display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DISPLAY_ATTRIBUTE)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_config_t config,
+ int32_t /*hwc2_attribute_t*/ attribute, int32_t* outValue);
+
+/* getDisplayConfigs(..., outNumConfigs, outConfigs)
+ * Descriptor: HWC2_FUNCTION_GET_DISPLAY_CONFIGS
+ * Must be provided by all HWC2 devices
+ *
+ * Returns handles for all of the valid display configurations on this display.
+ *
+ * outConfigs may be NULL to retrieve the number of elements which will be
+ * returned.
+ *
+ * Parameters:
+ * outNumConfigs - if outConfigs was NULL, the number of configurations which
+ * would have been returned; if outConfigs was not NULL, the number of
+ * configurations returned, which must not exceed the value stored in
+ * outNumConfigs prior to the call; pointer will be non-NULL
+ * outConfigs - an array of configuration handles
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DISPLAY_CONFIGS)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t* outNumConfigs,
+ hwc2_config_t* outConfigs);
+
+/* getDisplayName(..., outSize, outName)
+ * Descriptor: HWC2_FUNCTION_GET_DISPLAY_NAME
+ * Must be provided by all HWC2 devices
+ *
+ * Returns a human-readable version of the display's name.
+ *
+ * outName may be NULL to retrieve the length of the name.
+ *
+ * Parameters:
+ * outSize - if outName was NULL, the number of bytes needed to return the
+ * name if outName was not NULL, the number of bytes written into it,
+ * which must not exceed the value stored in outSize prior to the call;
+ * pointer will be non-NULL
+ * outName - the display's name
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DISPLAY_NAME)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t* outSize,
+ char* outName);
+
+/* getDisplayRequests(..., outDisplayRequests, outNumElements, outLayers,
+ * outLayerRequests)
+ * Descriptor: HWC2_FUNCTION_GET_DISPLAY_REQUESTS
+ * Must be provided by all HWC2 devices
+ *
+ * Returns the display requests and the layer requests required for the last
+ * validated configuration.
+ *
+ * Display requests provide information about how the client should handle the
+ * client target. Layer requests provide information about how the client
+ * should handle an individual layer.
+ *
+ * If outLayers or outLayerRequests is NULL, the required number of layers and
+ * requests must be returned in outNumElements, but this number may also be
+ * obtained from validateDisplay as outNumRequests (outNumElements must be equal
+ * to the value returned in outNumRequests from the last call to
+ * validateDisplay).
+ *
+ * Parameters:
+ * outDisplayRequests - the display requests for the current validated state
+ * outNumElements - if outLayers or outLayerRequests were NULL, the number of
+ * elements which would have been returned, which must be equal to the
+ * value returned in outNumRequests from the last validateDisplay call on
+ * this display; if both were not NULL, the number of elements in
+ * outLayers and outLayerRequests, which must not exceed the value stored
+ * in outNumElements prior to the call; pointer will be non-NULL
+ * outLayers - an array of layers which all have at least one request
+ * outLayerRequests - the requests corresponding to each element of outLayers
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_NOT_VALIDATED - validateDisplay has not been called for this
+ * display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DISPLAY_REQUESTS)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t* /*hwc2_display_request_t*/ outDisplayRequests,
+ uint32_t* outNumElements, hwc2_layer_t* outLayers,
+ int32_t* /*hwc2_layer_request_t*/ outLayerRequests);
+
+/* getDisplayType(..., outType)
+ * Descriptor: HWC2_FUNCTION_GET_DISPLAY_TYPE
+ * Must be provided by all HWC2 devices
+ *
+ * Returns whether the given display is a physical or virtual display.
+ *
+ * Parameters:
+ * outType - the type of the display; pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DISPLAY_TYPE)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t* /*hwc2_display_type_t*/ outType);
+
+/* getDozeSupport(..., outSupport)
+ * Descriptor: HWC2_FUNCTION_GET_DOZE_SUPPORT
+ * Must be provided by all HWC2 devices
+ *
+ * Returns whether the given display supports HWC2_POWER_MODE_DOZE and
+ * HWC2_POWER_MODE_DOZE_SUSPEND. DOZE_SUSPEND may not provide any benefit over
+ * DOZE (see the definition of hwc2_power_mode_t for more information), but if
+ * both DOZE and DOZE_SUSPEND are no different from HWC2_POWER_MODE_ON, the
+ * device should not claim support.
+ *
+ * Parameters:
+ * outSupport - whether the display supports doze modes (1 for yes, 0 for no);
+ * pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_DOZE_SUPPORT)(
+ hwc2_device_t* device, hwc2_display_t display, int32_t* outSupport);
+
+/* getHdrCapabilities(..., outNumTypes, outTypes, outMaxLuminance,
+ * outMaxAverageLuminance, outMinLuminance)
+ * Descriptor: HWC2_FUNCTION_GET_HDR_CAPABILITIES
+ * Must be provided by all HWC2 devices
+ *
+ * Returns the high dynamic range (HDR) capabilities of the given display, which
+ * are invariant with regard to the active configuration.
+ *
+ * Displays which are not HDR-capable must return no types in outTypes and set
+ * outNumTypes to 0.
+ *
+ * If outTypes is NULL, the required number of HDR types must be returned in
+ * outNumTypes.
+ *
+ * Parameters:
+ * outNumTypes - if outTypes was NULL, the number of types which would have
+ * been returned; if it was not NULL, the number of types stored in
+ * outTypes, which must not exceed the value stored in outNumTypes prior
+ * to the call; pointer will be non-NULL
+ * outTypes - an array of HDR types, may have 0 elements if the display is not
+ * HDR-capable
+ * outMaxLuminance - the desired content maximum luminance for this display in
+ * cd/m^2; pointer will be non-NULL
+ * outMaxAverageLuminance - the desired content maximum frame-average
+ * luminance for this display in cd/m^2; pointer will be non-NULL
+ * outMinLuminance - the desired content minimum luminance for this display in
+ * cd/m^2; pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_HDR_CAPABILITIES)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t* outNumTypes,
+ int32_t* /*android_hdr_t*/ outTypes, float* outMaxLuminance,
+ float* outMaxAverageLuminance, float* outMinLuminance);
+
+/* getReleaseFences(..., outNumElements, outLayers, outFences)
+ * Descriptor: HWC2_FUNCTION_GET_RELEASE_FENCES
+ * Must be provided by all HWC2 devices
+ *
+ * Retrieves the release fences for device layers on this display which will
+ * receive new buffer contents this frame.
+ *
+ * A release fence is a file descriptor referring to a sync fence object which
+ * will be signaled after the device has finished reading from the buffer
+ * presented in the prior frame. This indicates that it is safe to start writing
+ * to the buffer again. If a given layer's fence is not returned from this
+ * function, it will be assumed that the buffer presented on the previous frame
+ * is ready to be written.
+ *
+ * The fences returned by this function should be unique for each layer (even if
+ * they point to the same underlying sync object), and ownership of the fences
+ * is transferred to the client, which is responsible for closing them.
+ *
+ * If outLayers or outFences is NULL, the required number of layers and fences
+ * must be returned in outNumElements.
+ *
+ * Parameters:
+ * outNumElements - if outLayers or outFences were NULL, the number of
+ * elements which would have been returned; if both were not NULL, the
+ * number of elements in outLayers and outFences, which must not exceed
+ * the value stored in outNumElements prior to the call; pointer will be
+ * non-NULL
+ * outLayers - an array of layer handles
+ * outFences - an array of sync fence file descriptors as described above,
+ * each corresponding to an element of outLayers
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_GET_RELEASE_FENCES)(
+ hwc2_device_t* device, hwc2_display_t display, uint32_t* outNumElements,
+ hwc2_layer_t* outLayers, int32_t* outFences);
+
+/* presentDisplay(..., outPresentFence)
+ * Descriptor: HWC2_FUNCTION_PRESENT_DISPLAY
+ * Must be provided by all HWC2 devices
+ *
+ * Presents the current display contents on the screen (or in the case of
+ * virtual displays, into the output buffer).
+ *
+ * Prior to calling this function, the display must be successfully validated
+ * with validateDisplay. Note that setLayerBuffer and setLayerSurfaceDamage
+ * specifically do not count as layer state, so if there are no other changes
+ * to the layer state (or to the buffer's properties as described in
+ * setLayerBuffer), then it is safe to call this function without first
+ * validating the display.
+ *
+ * If this call succeeds, outPresentFence will be populated with a file
+ * descriptor referring to a present sync fence object. For physical displays,
+ * this fence will be signaled at the vsync when the result of composition of
+ * this frame starts to appear (for video-mode panels) or starts to transfer to
+ * panel memory (for command-mode panels). For virtual displays, this fence will
+ * be signaled when writes to the output buffer have completed and it is safe to
+ * read from it.
+ *
+ * Parameters:
+ * outPresentFence - a sync fence file descriptor as described above; pointer
+ * will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_NO_RESOURCES - no valid output buffer has been set for a virtual
+ * display
+ * HWC2_ERROR_NOT_VALIDATED - validateDisplay has not successfully been called
+ * for this display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_PRESENT_DISPLAY)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t* outPresentFence);
+
+/* setActiveConfig(..., config)
+ * Descriptor: HWC2_FUNCTION_SET_ACTIVE_CONFIG
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the active configuration for this display. Upon returning, the given
+ * display configuration should be active and remain so until either this
+ * function is called again or the display is disconnected.
+ *
+ * Parameters:
+ * config - the new display configuration
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_CONFIG - the configuration handle passed in is not valid for
+ * this display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_ACTIVE_CONFIG)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_config_t config);
+
+/* setClientTarget(..., target, acquireFence, dataspace, damage)
+ * Descriptor: HWC2_FUNCTION_SET_CLIENT_TARGET
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the buffer handle which will receive the output of client composition.
+ * Layers marked as HWC2_COMPOSITION_CLIENT will be composited into this buffer
+ * prior to the call to presentDisplay, and layers not marked as
+ * HWC2_COMPOSITION_CLIENT should be composited with this buffer by the device.
+ *
+ * The buffer handle provided may be null if no layers are being composited by
+ * the client. This must not result in an error (unless an invalid display
+ * handle is also provided).
+ *
+ * Also provides a file descriptor referring to an acquire sync fence object,
+ * which will be signaled when it is safe to read from the client target buffer.
+ * If it is already safe to read from this buffer, -1 may be passed instead.
+ * The device must ensure that it is safe for the client to close this file
+ * descriptor at any point after this function is called.
+ *
+ * For more about dataspaces, see setLayerDataspace.
+ *
+ * The damage parameter describes a surface damage region as defined in the
+ * description of setLayerSurfaceDamage.
+ *
+ * Will be called before presentDisplay if any of the layers are marked as
+ * HWC2_COMPOSITION_CLIENT. If no layers are so marked, then it is not
+ * necessary to call this function. It is not necessary to call validateDisplay
+ * after changing the target through this function.
+ *
+ * Parameters:
+ * target - the new target buffer
+ * acquireFence - a sync fence file descriptor as described above
+ * dataspace - the dataspace of the buffer, as described in setLayerDataspace
+ * damage - the surface damage region
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - the new target handle was invalid
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_CLIENT_TARGET)(
+ hwc2_device_t* device, hwc2_display_t display, buffer_handle_t target,
+ int32_t acquireFence, int32_t /*android_dataspace_t*/ dataspace,
+ hwc_region_t damage);
+
+/* setColorMode(..., mode)
+ * Descriptor: HWC2_FUNCTION_SET_COLOR_MODE
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the color mode of the given display.
+ *
+ * Upon returning from this function, the color mode change must have fully
+ * taken effect.
+ *
+ * The valid color modes can be found in android_color_mode_t in
+ * <system/graphics.h>. All HWC2 devices must support at least
+ * HAL_COLOR_MODE_NATIVE, and displays are assumed to be in this mode upon
+ * hotplug.
+ *
+ * Parameters:
+ * mode - the mode to set
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - mode is not a valid color mode
+ * HWC2_ERROR_UNSUPPORTED - mode is not supported on this display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_COLOR_MODE)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t /*android_color_mode_t*/ mode);
+
+/* setColorTransform(..., matrix, hint)
+ * Descriptor: HWC2_FUNCTION_SET_COLOR_TRANSFORM
+ * Must be provided by all HWC2 devices
+ *
+ * Sets a color transform which will be applied after composition.
+ *
+ * If hint is not HAL_COLOR_TRANSFORM_ARBITRARY, then the device may use the
+ * hint to apply the desired color transform instead of using the color matrix
+ * directly.
+ *
+ * If the device is not capable of either using the hint or the matrix to apply
+ * the desired color transform, it should force all layers to client composition
+ * during validateDisplay.
+ *
+ * If HWC2_CAPABILITY_SKIP_CLIENT_COLOR_TRANSFORM is present, then the client
+ * will never apply the color transform during client composition, even if all
+ * layers are being composed by the client.
+ *
+ * The matrix provided is an affine color transformation of the following form:
+ *
+ * |r.r r.g r.b 0|
+ * |g.r g.g g.b 0|
+ * |b.r b.g b.b 0|
+ * |Tr Tg Tb 1|
+ *
+ * This matrix will be provided in row-major form: {r.r, r.g, r.b, 0, g.r, ...}.
+ *
+ * Given a matrix of this form and an input color [R_in, G_in, B_in], the output
+ * color [R_out, G_out, B_out] will be:
+ *
+ * R_out = R_in * r.r + G_in * g.r + B_in * b.r + Tr
+ * G_out = R_in * r.g + G_in * g.g + B_in * b.g + Tg
+ * B_out = R_in * r.b + G_in * g.b + B_in * b.b + Tb
+ *
+ * Parameters:
+ * matrix - a 4x4 transform matrix (16 floats) as described above
+ * hint - a hint value which may be used instead of the given matrix unless it
+ * is HAL_COLOR_TRANSFORM_ARBITRARY
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - hint is not a valid color transform hint
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_COLOR_TRANSFORM)(
+ hwc2_device_t* device, hwc2_display_t display, const float* matrix,
+ int32_t /*android_color_transform_t*/ hint);
+
+/* setOutputBuffer(..., buffer, releaseFence)
+ * Descriptor: HWC2_FUNCTION_SET_OUTPUT_BUFFER
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the output buffer for a virtual display. That is, the buffer to which
+ * the composition result will be written.
+ *
+ * Also provides a file descriptor referring to a release sync fence object,
+ * which will be signaled when it is safe to write to the output buffer. If it
+ * is already safe to write to the output buffer, -1 may be passed instead. The
+ * device must ensure that it is safe for the client to close this file
+ * descriptor at any point after this function is called.
+ *
+ * Must be called at least once before presentDisplay, but does not have any
+ * interaction with layer state or display validation.
+ *
+ * Parameters:
+ * buffer - the new output buffer
+ * releaseFence - a sync fence file descriptor as described above
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - the new output buffer handle was invalid
+ * HWC2_ERROR_UNSUPPORTED - display does not refer to a virtual display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_OUTPUT_BUFFER)(
+ hwc2_device_t* device, hwc2_display_t display, buffer_handle_t buffer,
+ int32_t releaseFence);
+
+/* setPowerMode(..., mode)
+ * Descriptor: HWC2_FUNCTION_SET_POWER_MODE
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the power mode of the given display. The transition must be complete
+ * when this function returns. It is valid to call this function multiple times
+ * with the same power mode.
+ *
+ * All displays must support HWC2_POWER_MODE_ON and HWC2_POWER_MODE_OFF. Whether
+ * a display supports HWC2_POWER_MODE_DOZE or HWC2_POWER_MODE_DOZE_SUSPEND may
+ * be queried using getDozeSupport.
+ *
+ * Parameters:
+ * mode - the new power mode
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - mode was not a valid power mode
+ * HWC2_ERROR_UNSUPPORTED - mode was a valid power mode, but is not supported
+ * on this display
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_POWER_MODE)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t /*hwc2_power_mode_t*/ mode);
+
+/* setVsyncEnabled(..., enabled)
+ * Descriptor: HWC2_FUNCTION_SET_VSYNC_ENABLED
+ * Must be provided by all HWC2 devices
+ *
+ * Enables or disables the vsync signal for the given display. Virtual displays
+ * never generate vsync callbacks, and any attempt to enable vsync for a virtual
+ * display though this function must return HWC2_ERROR_NONE and have no other
+ * effect.
+ *
+ * Parameters:
+ * enabled - whether to enable or disable vsync
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - enabled was an invalid value
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_VSYNC_ENABLED)(
+ hwc2_device_t* device, hwc2_display_t display,
+ int32_t /*hwc2_vsync_t*/ enabled);
+
+/* validateDisplay(..., outNumTypes, outNumRequests)
+ * Descriptor: HWC2_FUNCTION_VALIDATE_DISPLAY
+ * Must be provided by all HWC2 devices
+ *
+ * Instructs the device to inspect all of the layer state and determine if
+ * there are any composition type changes necessary before presenting the
+ * display. Permitted changes are described in the definition of
+ * hwc2_composition_t above.
+ *
+ * Also returns the number of layer requests required
+ * by the given layer configuration.
+ *
+ * Parameters:
+ * outNumTypes - the number of composition type changes required by the
+ * device; if greater than 0, the client must either set and validate new
+ * types, or call acceptDisplayChanges to accept the changes returned by
+ * getChangedCompositionTypes; must be the same as the number of changes
+ * returned by getChangedCompositionTypes (see the declaration of that
+ * function for more information); pointer will be non-NULL
+ * outNumRequests - the number of layer requests required by this layer
+ * configuration; must be equal to the number of layer requests returned
+ * by getDisplayRequests (see the declaration of that function for
+ * more information); pointer will be non-NULL
+ *
+ * Returns HWC2_ERROR_NONE if no changes are necessary and it is safe to present
+ * the display using the current layer state. Otherwise returns one of the
+ * following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_HAS_CHANGES - outNumTypes was greater than 0 (see parameter list
+ * for more information)
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_VALIDATE_DISPLAY)(
+ hwc2_device_t* device, hwc2_display_t display,
+ uint32_t* outNumTypes, uint32_t* outNumRequests);
+
+/*
+ * Layer Functions
+ *
+ * These are functions which operate on layers, but which do not modify state
+ * that must be validated before use. See also 'Layer State Functions' below.
+ *
+ * All of these functions take as their first three parameters a device pointer,
+ * a display handle for the display which contains the layer, and a layer
+ * handle, so these parameters are omitted from the described parameter lists.
+ */
+
+/* setCursorPosition(..., x, y)
+ * Descriptor: HWC2_FUNCTION_SET_CURSOR_POSITION
+ * Must be provided by all HWC2 devices
+ *
+ * Asynchonously sets the position of a cursor layer.
+ *
+ * Prior to validateDisplay, a layer may be marked as HWC2_COMPOSITION_CURSOR.
+ * If validation succeeds (i.e., the device does not request a composition
+ * change for that layer), then once a buffer has been set for the layer and it
+ * has been presented, its position may be set by this function at any time
+ * between presentDisplay and any subsequent validateDisplay calls for this
+ * display.
+ *
+ * Once validateDisplay is called, this function will not be called again until
+ * the validate/present sequence is completed.
+ *
+ * May be called from any thread so long as it is not interleaved with the
+ * validate/present sequence as described above.
+ *
+ * Parameters:
+ * x - the new x coordinate (in pixels from the left of the screen)
+ * y - the new y coordinate (in pixels from the top of the screen)
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_DISPLAY - an invalid display handle was passed in
+ * HWC2_ERROR_BAD_LAYER - the layer is invalid or is not currently marked as
+ * HWC2_COMPOSITION_CURSOR
+ * HWC2_ERROR_NOT_VALIDATED - the device is currently in the middle of the
+ * validate/present sequence
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_CURSOR_POSITION)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ int32_t x, int32_t y);
+
+/* setLayerBuffer(..., buffer, acquireFence)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_BUFFER
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the buffer handle to be displayed for this layer. If the buffer
+ * properties set at allocation time (width, height, format, and usage) have not
+ * changed since the previous frame, it is not necessary to call validateDisplay
+ * before calling presentDisplay unless new state needs to be validated in the
+ * interim.
+ *
+ * Also provides a file descriptor referring to an acquire sync fence object,
+ * which will be signaled when it is safe to read from the given buffer. If it
+ * is already safe to read from the buffer, -1 may be passed instead. The
+ * device must ensure that it is safe for the client to close this file
+ * descriptor at any point after this function is called.
+ *
+ * This function must return HWC2_ERROR_NONE and have no other effect if called
+ * for a layer with a composition type of HWC2_COMPOSITION_SOLID_COLOR (because
+ * it has no buffer) or HWC2_COMPOSITION_SIDEBAND or HWC2_COMPOSITION_CLIENT
+ * (because synchronization and buffer updates for these layers are handled
+ * elsewhere).
+ *
+ * Parameters:
+ * buffer - the buffer handle to set
+ * acquireFence - a sync fence file descriptor as described above
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - the buffer handle passed in was invalid
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_BUFFER)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ buffer_handle_t buffer, int32_t acquireFence);
+
+/* setLayerSurfaceDamage(..., damage)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_SURFACE_DAMAGE
+ * Must be provided by all HWC2 devices
+ *
+ * Provides the region of the source buffer which has been modified since the
+ * last frame. This region does not need to be validated before calling
+ * presentDisplay.
+ *
+ * Once set through this function, the damage region remains the same until a
+ * subsequent call to this function.
+ *
+ * If damage.numRects > 0, then it may be assumed that any portion of the source
+ * buffer not covered by one of the rects has not been modified this frame. If
+ * damage.numRects == 0, then the whole source buffer must be treated as if it
+ * has been modified.
+ *
+ * If the layer's contents are not modified relative to the prior frame, damage
+ * will contain exactly one empty rect([0, 0, 0, 0]).
+ *
+ * The damage rects are relative to the pre-transformed buffer, and their origin
+ * is the top-left corner. They will not exceed the dimensions of the latched
+ * buffer.
+ *
+ * Parameters:
+ * damage - the new surface damage region
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_SURFACE_DAMAGE)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ hwc_region_t damage);
+
+/*
+ * Layer State Functions
+ *
+ * These functions modify the state of a given layer. They do not take effect
+ * until the display configuration is successfully validated with
+ * validateDisplay and the display contents are presented with presentDisplay.
+ *
+ * All of these functions take as their first three parameters a device pointer,
+ * a display handle for the display which contains the layer, and a layer
+ * handle, so these parameters are omitted from the described parameter lists.
+ */
+
+/* setLayerBlendMode(..., mode)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_BLEND_MODE
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the blend mode of the given layer.
+ *
+ * Parameters:
+ * mode - the new blend mode
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - an invalid blend mode was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_BLEND_MODE)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ int32_t /*hwc2_blend_mode_t*/ mode);
+
+/* setLayerColor(..., color)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_COLOR
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the color of the given layer. If the composition type of the layer is
+ * not HWC2_COMPOSITION_SOLID_COLOR, this call must return HWC2_ERROR_NONE and
+ * have no other effect.
+ *
+ * Parameters:
+ * color - the new color
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_COLOR)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ hwc_color_t color);
+
+/* setLayerCompositionType(..., type)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_COMPOSITION_TYPE
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the desired composition type of the given layer. During validateDisplay,
+ * the device may request changes to the composition types of any of the layers
+ * as described in the definition of hwc2_composition_t above.
+ *
+ * Parameters:
+ * type - the new composition type
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - an invalid composition type was passed in
+ * HWC2_ERROR_UNSUPPORTED - a valid composition type was passed in, but it is
+ * not supported by this device
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_COMPOSITION_TYPE)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ int32_t /*hwc2_composition_t*/ type);
+
+/* setLayerDataspace(..., dataspace)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_DATASPACE
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the dataspace that the current buffer on this layer is in.
+ *
+ * The dataspace provides more information about how to interpret the buffer
+ * contents, such as the encoding standard and color transform.
+ *
+ * See the values of android_dataspace_t in <system/graphics.h> for more
+ * information.
+ *
+ * Parameters:
+ * dataspace - the new dataspace
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_DATASPACE)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ int32_t /*android_dataspace_t*/ dataspace);
+
+/* setLayerDisplayFrame(..., frame)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_DISPLAY_FRAME
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the display frame (the portion of the display covered by a layer) of the
+ * given layer. This frame will not exceed the display dimensions.
+ *
+ * Parameters:
+ * frame - the new display frame
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_DISPLAY_FRAME)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ hwc_rect_t frame);
+
+/* setLayerPlaneAlpha(..., alpha)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_PLANE_ALPHA
+ * Must be provided by all HWC2 devices
+ *
+ * Sets an alpha value (a floating point value in the range [0.0, 1.0]) which
+ * will be applied to the whole layer. It can be conceptualized as a
+ * preprocessing step which applies the following function:
+ * if (blendMode == HWC2_BLEND_MODE_PREMULTIPLIED)
+ * out.rgb = in.rgb * planeAlpha
+ * out.a = in.a * planeAlpha
+ *
+ * If the device does not support this operation on a layer which is marked
+ * HWC2_COMPOSITION_DEVICE, it must request a composition type change to
+ * HWC2_COMPOSITION_CLIENT upon the next validateDisplay call.
+ *
+ * Parameters:
+ * alpha - the plane alpha value to apply
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_PLANE_ALPHA)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ float alpha);
+
+/* setLayerSidebandStream(..., stream)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_SIDEBAND_STREAM
+ * Provided by HWC2 devices which support HWC2_CAPABILITY_SIDEBAND_STREAM
+ *
+ * Sets the sideband stream for this layer. If the composition type of the given
+ * layer is not HWC2_COMPOSITION_SIDEBAND, this call must return HWC2_ERROR_NONE
+ * and have no other effect.
+ *
+ * Parameters:
+ * stream - the new sideband stream
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - an invalid sideband stream was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_SIDEBAND_STREAM)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ const native_handle_t* stream);
+
+/* setLayerSourceCrop(..., crop)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_SOURCE_CROP
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the source crop (the portion of the source buffer which will fill the
+ * display frame) of the given layer. This crop rectangle will not exceed the
+ * dimensions of the latched buffer.
+ *
+ * If the device is not capable of supporting a true float source crop (i.e., it
+ * will truncate or round the floats to integers), it should set this layer to
+ * HWC2_COMPOSITION_CLIENT when crop is non-integral for the most accurate
+ * rendering.
+ *
+ * If the device cannot support float source crops, but still wants to handle
+ * the layer, it should use the following code (or similar) to convert to
+ * an integer crop:
+ * intCrop.left = (int) ceilf(crop.left);
+ * intCrop.top = (int) ceilf(crop.top);
+ * intCrop.right = (int) floorf(crop.right);
+ * intCrop.bottom = (int) floorf(crop.bottom);
+ *
+ * Parameters:
+ * crop - the new source crop
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_SOURCE_CROP)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ hwc_frect_t crop);
+
+/* setLayerTransform(..., transform)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_TRANSFORM
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the transform (rotation/flip) of the given layer.
+ *
+ * Parameters:
+ * transform - the new transform
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ * HWC2_ERROR_BAD_PARAMETER - an invalid transform was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_TRANSFORM)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ int32_t /*hwc_transform_t*/ transform);
+
+/* setLayerVisibleRegion(..., visible)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_VISIBLE_REGION
+ * Must be provided by all HWC2 devices
+ *
+ * Specifies the portion of the layer that is visible, including portions under
+ * translucent areas of other layers. The region is in screen space, and will
+ * not exceed the dimensions of the screen.
+ *
+ * Parameters:
+ * visible - the new visible region, in screen space
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_VISIBLE_REGION)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ hwc_region_t visible);
+
+/* setLayerZOrder(..., z)
+ * Descriptor: HWC2_FUNCTION_SET_LAYER_Z_ORDER
+ * Must be provided by all HWC2 devices
+ *
+ * Sets the desired Z order (height) of the given layer. A layer with a greater
+ * Z value occludes a layer with a lesser Z value.
+ *
+ * Parameters:
+ * z - the new Z order
+ *
+ * Returns HWC2_ERROR_NONE or one of the following errors:
+ * HWC2_ERROR_BAD_LAYER - an invalid layer handle was passed in
+ */
+typedef int32_t /*hwc2_error_t*/ (*HWC2_PFN_SET_LAYER_Z_ORDER)(
+ hwc2_device_t* device, hwc2_display_t display, hwc2_layer_t layer,
+ uint32_t z);
+
+__END_DECLS
+
+#endif
diff --git a/android/android-emugl/guest/hardware/hwcomposer_defs.h b/android/android-emugl/guest/hardware/hwcomposer_defs.h
new file mode 100644
index 0000000000..1e81e6e607
--- /dev/null
+++ b/android/android-emugl/guest/hardware/hwcomposer_defs.h
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_DEFS_H
+#define ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_DEFS_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+
+#include <hardware/gralloc.h>
+#include <hardware/hardware.h>
+#include <cutils/native_handle.h>
+
+__BEGIN_DECLS
+
+/* Shared by HWC1 and HWC2 */
+
+#define HWC_HEADER_VERSION 1
+
+#define HWC_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
+
+#define HWC_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION_2(1, 0, HWC_HEADER_VERSION)
+#define HWC_DEVICE_API_VERSION_1_1 HARDWARE_DEVICE_API_VERSION_2(1, 1, HWC_HEADER_VERSION)
+#define HWC_DEVICE_API_VERSION_1_2 HARDWARE_DEVICE_API_VERSION_2(1, 2, HWC_HEADER_VERSION)
+#define HWC_DEVICE_API_VERSION_1_3 HARDWARE_DEVICE_API_VERSION_2(1, 3, HWC_HEADER_VERSION)
+#define HWC_DEVICE_API_VERSION_1_4 HARDWARE_DEVICE_API_VERSION_2(1, 4, HWC_HEADER_VERSION)
+#define HWC_DEVICE_API_VERSION_1_5 HARDWARE_DEVICE_API_VERSION_2(1, 5, HWC_HEADER_VERSION)
+
+#define HWC_DEVICE_API_VERSION_2_0 HARDWARE_DEVICE_API_VERSION_2(2, 0, HWC_HEADER_VERSION)
+
+/**
+ * The id of this module
+ */
+#define HWC_HARDWARE_MODULE_ID "hwcomposer"
+
+/**
+ * Name of the sensors device to open
+ */
+#define HWC_HARDWARE_COMPOSER "composer"
+
+typedef struct hwc_color {
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+ uint8_t a;
+} hwc_color_t;
+
+typedef struct hwc_frect {
+ float left;
+ float top;
+ float right;
+ float bottom;
+} hwc_frect_t;
+
+typedef struct hwc_rect {
+ int left;
+ int top;
+ int right;
+ int bottom;
+} hwc_rect_t;
+
+typedef struct hwc_region {
+ size_t numRects;
+ hwc_rect_t const* rects;
+} hwc_region_t;
+
+/*
+ * hwc_layer_t::transform values
+ */
+typedef enum {
+ /* flip source image horizontally */
+ HWC_TRANSFORM_FLIP_H = HAL_TRANSFORM_FLIP_H,
+ /* flip source image vertically */
+ HWC_TRANSFORM_FLIP_V = HAL_TRANSFORM_FLIP_V,
+ /* rotate source image 90 degrees clock-wise */
+ HWC_TRANSFORM_ROT_90 = HAL_TRANSFORM_ROT_90,
+ /* rotate source image 180 degrees */
+ HWC_TRANSFORM_ROT_180 = HAL_TRANSFORM_ROT_180,
+ /* rotate source image 270 degrees clock-wise */
+ HWC_TRANSFORM_ROT_270 = HAL_TRANSFORM_ROT_270,
+ /* flip source image horizontally, the rotate 90 degrees clock-wise */
+ HWC_TRANSFORM_FLIP_H_ROT_90 = HAL_TRANSFORM_FLIP_H | HAL_TRANSFORM_ROT_90,
+ /* flip source image vertically, the rotate 90 degrees clock-wise */
+ HWC_TRANSFORM_FLIP_V_ROT_90 = HAL_TRANSFORM_FLIP_V | HAL_TRANSFORM_ROT_90,
+} hwc_transform_t;
+
+/*******************************************************************************
+ * Beyond this point are things only used by HWC1, which should be ignored when
+ * implementing a HWC2 device
+ ******************************************************************************/
+
+enum {
+ /* hwc_composer_device_t::set failed in EGL */
+ HWC_EGL_ERROR = -1
+};
+
+/*
+ * hwc_layer_t::hints values
+ * Hints are set by the HAL and read by SurfaceFlinger
+ */
+enum {
+ /*
+ * HWC can set the HWC_HINT_TRIPLE_BUFFER hint to indicate to SurfaceFlinger
+ * that it should triple buffer this layer. Typically HWC does this when
+ * the layer will be unavailable for use for an extended period of time,
+ * e.g. if the display will be fetching data directly from the layer and
+ * the layer can not be modified until after the next set().
+ */
+ HWC_HINT_TRIPLE_BUFFER = 0x00000001,
+
+ /*
+ * HWC sets HWC_HINT_CLEAR_FB to tell SurfaceFlinger that it should clear the
+ * framebuffer with transparent pixels where this layer would be.
+ * SurfaceFlinger will only honor this flag when the layer has no blending
+ *
+ */
+ HWC_HINT_CLEAR_FB = 0x00000002
+};
+
+/*
+ * hwc_layer_t::flags values
+ * Flags are set by SurfaceFlinger and read by the HAL
+ */
+enum {
+ /*
+ * HWC_SKIP_LAYER is set by SurfaceFlinger to indicate that the HAL
+ * shall not consider this layer for composition as it will be handled
+ * by SurfaceFlinger (just as if compositionType was set to HWC_FRAMEBUFFER).
+ */
+ HWC_SKIP_LAYER = 0x00000001,
+
+ /*
+ * HWC_IS_CURSOR_LAYER is set by surfaceflinger to indicate that this
+ * layer is being used as a cursor on this particular display, and that
+ * surfaceflinger can potentially perform asynchronous position updates for
+ * this layer. If a call to prepare() returns HWC_CURSOR_OVERLAY for the
+ * composition type of this layer, then the hwcomposer will allow async
+ * position updates to this layer via setCursorPositionAsync().
+ */
+ HWC_IS_CURSOR_LAYER = 0x00000002
+};
+
+/*
+ * hwc_layer_t::compositionType values
+ */
+enum {
+ /* this layer is to be drawn into the framebuffer by SurfaceFlinger */
+ HWC_FRAMEBUFFER = 0,
+
+ /* this layer will be handled in the HWC */
+ HWC_OVERLAY = 1,
+
+ /* this is the background layer. it's used to set the background color.
+ * there is only a single background layer */
+ HWC_BACKGROUND = 2,
+
+ /* this layer holds the result of compositing the HWC_FRAMEBUFFER layers.
+ * Added in HWC_DEVICE_API_VERSION_1_1. */
+ HWC_FRAMEBUFFER_TARGET = 3,
+
+ /* this layer's contents are taken from a sideband buffer stream.
+ * Added in HWC_DEVICE_API_VERSION_1_4. */
+ HWC_SIDEBAND = 4,
+
+ /* this layer's composition will be handled by hwcomposer by dedicated
+ cursor overlay hardware. hwcomposer will also all async position updates
+ of this layer outside of the normal prepare()/set() loop. Added in
+ HWC_DEVICE_API_VERSION_1_4. */
+ HWC_CURSOR_OVERLAY = 5
+ };
+/*
+ * hwc_layer_t::blending values
+ */
+enum {
+ /* no blending */
+ HWC_BLENDING_NONE = 0x0100,
+
+ /* ONE / ONE_MINUS_SRC_ALPHA */
+ HWC_BLENDING_PREMULT = 0x0105,
+
+ /* SRC_ALPHA / ONE_MINUS_SRC_ALPHA */
+ HWC_BLENDING_COVERAGE = 0x0405
+};
+
+/* attributes queriable with query() */
+enum {
+ /*
+ * Must return 1 if the background layer is supported, 0 otherwise.
+ */
+ HWC_BACKGROUND_LAYER_SUPPORTED = 0,
+
+ /*
+ * Returns the vsync period in nanoseconds.
+ *
+ * This query is not used for HWC_DEVICE_API_VERSION_1_1 and later.
+ * Instead, the per-display attribute HWC_DISPLAY_VSYNC_PERIOD is used.
+ */
+ HWC_VSYNC_PERIOD = 1,
+
+ /*
+ * Availability: HWC_DEVICE_API_VERSION_1_1
+ * Returns a mask of supported display types.
+ */
+ HWC_DISPLAY_TYPES_SUPPORTED = 2,
+};
+
+/* display attributes returned by getDisplayAttributes() */
+enum {
+ /* Indicates the end of an attribute list */
+ HWC_DISPLAY_NO_ATTRIBUTE = 0,
+
+ /* The vsync period in nanoseconds */
+ HWC_DISPLAY_VSYNC_PERIOD = 1,
+
+ /* The number of pixels in the horizontal and vertical directions. */
+ HWC_DISPLAY_WIDTH = 2,
+ HWC_DISPLAY_HEIGHT = 3,
+
+ /* The number of pixels per thousand inches of this configuration.
+ *
+ * Scaling DPI by 1000 allows it to be stored in an int without losing
+ * too much precision.
+ *
+ * If the DPI for a configuration is unavailable or the HWC implementation
+ * considers it unreliable, it should set these attributes to zero.
+ */
+ HWC_DISPLAY_DPI_X = 4,
+ HWC_DISPLAY_DPI_Y = 5,
+
+ /* Indicates which of the vendor-defined color transforms is provided by
+ * this configuration. */
+ HWC_DISPLAY_COLOR_TRANSFORM = 6,
+};
+
+/* Allowed events for hwc_methods::eventControl() */
+enum {
+ HWC_EVENT_VSYNC = 0
+};
+
+/* Display types and associated mask bits. */
+enum {
+ HWC_DISPLAY_PRIMARY = 0,
+ HWC_DISPLAY_EXTERNAL = 1, // HDMI, DP, etc.
+ HWC_DISPLAY_VIRTUAL = 2,
+
+ HWC_NUM_PHYSICAL_DISPLAY_TYPES = 2,
+ HWC_NUM_DISPLAY_TYPES = 3,
+};
+
+enum {
+ HWC_DISPLAY_PRIMARY_BIT = 1 << HWC_DISPLAY_PRIMARY,
+ HWC_DISPLAY_EXTERNAL_BIT = 1 << HWC_DISPLAY_EXTERNAL,
+ HWC_DISPLAY_VIRTUAL_BIT = 1 << HWC_DISPLAY_VIRTUAL,
+};
+
+/* Display power modes */
+enum {
+ /* The display is turned off (blanked). */
+ HWC_POWER_MODE_OFF = 0,
+ /* The display is turned on and configured in a low power state
+ * that is suitable for presenting ambient information to the user,
+ * possibly with lower fidelity than normal but greater efficiency. */
+ HWC_POWER_MODE_DOZE = 1,
+ /* The display is turned on normally. */
+ HWC_POWER_MODE_NORMAL = 2,
+ /* The display is configured as in HWC_POWER_MODE_DOZE but may
+ * stop applying frame buffer updates from the graphics subsystem.
+ * This power mode is effectively a hint from the doze dream to
+ * tell the hardware that it is done drawing to the display for the
+ * time being and that the display should remain on in a low power
+ * state and continue showing its current contents indefinitely
+ * until the mode changes.
+ *
+ * This mode may also be used as a signal to enable hardware-based doze
+ * functionality. In this case, the doze dream is effectively
+ * indicating that the hardware is free to take over the display
+ * and manage it autonomously to implement low power always-on display
+ * functionality. */
+ HWC_POWER_MODE_DOZE_SUSPEND = 3,
+};
+
+/*****************************************************************************/
+
+__END_DECLS
+
+#endif /* ANDROID_INCLUDE_HARDWARE_HWCOMPOSER_DEFS_H */
diff --git a/android/android-emugl/guest/hardware/vr.h b/android/android-emugl/guest/hardware/vr.h
new file mode 100644
index 0000000000..69f8654706
--- /dev/null
+++ b/android/android-emugl/guest/hardware/vr.h
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_INCLUDE_HARDWARE_VR_H
+#define ANDROID_INCLUDE_HARDWARE_VR_H
+
+#include <stdbool.h>
+#include <sys/cdefs.h>
+#include <hardware/hardware.h>
+
+__BEGIN_DECLS
+
+#define VR_HARDWARE_MODULE_ID "vr"
+
+#define VR_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
+
+/**
+ * Implement this HAL to receive callbacks when a virtual reality (VR)
+ * application is being used. VR applications characteristically have a number
+ * of special display and performance requirements, including:
+ * - Low sensor latency - Total end-to-end latency from the IMU, accelerometer,
+ * and gyro to an application-visible callback must be extremely low (<5ms
+ * typically). This is required for HIFI sensor support.
+ * - Low display latency - Total end-to-end latency from the GPU draw calls to
+ * the actual display update must be as low as possible. This is achieved by
+ * using SurfaceFlinger in a single-buffered mode, and assuring that draw calls
+ * are synchronized with the display scanout correctly. This behavior is
+ * exposed via an EGL extension to applications. See below for the EGL
+ * extensions needed for this.
+ * - Low-persistence display - Display persistence settings must be set as low as
+ * possible while still maintaining a reasonable brightness. For a typical
+ * display running at 60Hz, pixels should be illuminated for <=3.5ms to be
+ * considered low-persistence. This avoids ghosting during movements in a VR
+ * setting, and should be enabled from the lights.h HAL when
+ * BRIGHTNESS_MODE_LOW_PERSISTENCE is set.
+ * - Consistent performance of the GPU and CPU - When given a mixed GPU/CPU
+ * workload for a VR application with bursts of work at regular intervals
+ * several times a frame, the CPU scheduling should ensure that the application
+ * render thread work is run consistently within 1ms of when scheduled, and
+ * completed before the end of the draw window. To this end, a single CPU core
+ * must be reserved for solely for the currently running VR application's render
+ * thread while in VR mode, and made available in the "top-app" cpuset.
+ * Likewise, an appropriate CPU, GPU, and bus clockrate must be maintained to
+ * ensure that the rendering workload finishes within the time allotted to
+ * render each frame when the POWER_HINT_SUSTAINED_PERFORMANCE flag has been
+ * set in the power.h HAL while in VR mode when the device is not being
+ * thermally throttled.
+ * - Required EGL extensions must be present - Any GPU settings required to allow
+ * the above capabilities are required, including the EGL extensions:
+ * EGL_ANDROID_create_native_client_buffer, EGL_ANDROID_front_buffer_auto_refresh,
+ * EGL_EXT_protected_content, EGL_KHR_mutable_render_buffer,
+ * EGL_KHR_reusable_sync, and EGL_KHR_wait_sync.
+ * - Accurate thermal reporting - Accurate thermal temperatures and limits must be
+ * reported in the thermal.h HAL. Specifically, the current skin temperature
+ * must accurately be reported for DEVICE_TEMPERATURE_SKIN and the
+ * vr_throttling_threshold reported for this device must accurately report the
+ * temperature limit above which the device's thermal governor throttles the
+ * CPU, GPU, and/or bus clockrates below the minimum necessary for consistent
+ * performance (see previous bullet point).
+ *
+ * In general, vendors implementing this HAL are expected to use set_vr_mode as a
+ * hint to enable VR-specific performance tuning needed for any of the above
+ * requirements, and to turn on any device features optimal for VR display
+ * modes. The set_vr_mode call may simply do nothing if no optimizations are
+ * available or necessary to meet the above requirements.
+ *
+ * No methods in this HAL will be called concurrently from the Android framework.
+ */
+typedef struct vr_module {
+ /**
+ * Common methods of the module. This *must* be the first member of
+ * vr_module as users of this structure may cast a hw_module_t to a
+ * vr_module pointer in contexts where it's known that the hw_module_t
+ * references a vr_module.
+ */
+ struct hw_module_t common;
+
+ /**
+ * Convenience method for the HAL implementation to set up any state needed
+ * at runtime startup. This is called once from the VrManagerService during
+ * its boot phase. No methods from this HAL will be called before init.
+ */
+ void (*init)(struct vr_module *module);
+
+ /**
+ * Set the VR mode state. Possible states of the enabled parameter are:
+ * false - VR mode is disabled, turn off all VR-specific settings.
+ * true - VR mode is enabled, turn on all VR-specific settings.
+ *
+ * This is called whenever the the Android system enters or leaves VR mode.
+ * This will typically occur when the user switches to or from a VR application
+ * that is doing stereoscopic rendering.
+ */
+ void (*set_vr_mode)(struct vr_module *module, bool enabled);
+
+ /* Reserved for future use. Must be NULL. */
+ void* reserved[8 - 2];
+} vr_module_t;
+
+__END_DECLS
+
+#endif /* ANDROID_INCLUDE_HARDWARE_VR_H */
diff --git a/android/android-emugl/guest/log/event_tag_map.h b/android/android-emugl/guest/log/event_tag_map.h
new file mode 100644
index 0000000000..8dd91572c1
--- /dev/null
+++ b/android/android-emugl/guest/log/event_tag_map.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_CUTILS_EVENTTAGMAP_H
+#define _LIBS_CUTILS_EVENTTAGMAP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EVENT_TAG_MAP_FILE "/system/etc/event-log-tags"
+
+struct EventTagMap;
+typedef struct EventTagMap EventTagMap;
+
+/*
+ * Open the specified file as an event log tag map.
+ *
+ * Returns NULL on failure.
+ */
+EventTagMap* android_openEventTagMap(const char* fileName);
+
+/*
+ * Close the map.
+ */
+void android_closeEventTagMap(EventTagMap* map);
+
+/*
+ * Look up a tag by index. Returns the tag string, or NULL if not found.
+ */
+const char* android_lookupEventTag(const EventTagMap* map, unsigned int tag)
+ __attribute__((
+ deprecated("use android_lookupEventTag_len() instead to minimize "
+ "MAP_PRIVATE copy-on-write memory impact")));
+
+/*
+ * Look up a tag by index. Returns the tag string & string length, or NULL if
+ * not found. Returned string is not guaranteed to be nul terminated.
+ */
+const char* android_lookupEventTag_len(const EventTagMap* map, size_t* len,
+ unsigned int tag);
+
+/*
+ * Look up a format by index. Returns the format string & string length,
+ * or NULL if not found. Returned string is not guaranteed to be nul terminated.
+ */
+const char* android_lookupEventFormat_len(const EventTagMap* map, size_t* len,
+ unsigned int tag);
+
+/*
+ * Look up tagname, generate one if necessary, and return a tag
+ */
+int android_lookupEventTagNum(EventTagMap* map, const char* tagname,
+ const char* format, int prio);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*_LIBS_CUTILS_EVENTTAGMAP_H*/
diff --git a/android/android-emugl/guest/log/log.h b/android/android-emugl/guest/log/log.h
new file mode 100644
index 0000000000..3813e6e324
--- /dev/null
+++ b/android/android-emugl/guest/log/log.h
@@ -0,0 +1,248 @@
+/*
+ * Copyright (C) 2005-2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_H
+#define _LIBS_LOG_LOG_H
+
+/* Too many in the ecosystem assume these are included */
+#if !defined(_WIN32)
+#include <pthread.h>
+#endif
+#include <stdint.h> /* uint16_t, int32_t */
+#include <stdio.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <android/log.h>
+#include <log/log_id.h>
+#include <log/log_main.h>
+#include <log/log_radio.h>
+#include <log/log_read.h>
+#include <log/log_safetynet.h>
+#include <log/log_system.h>
+#include <log/log_time.h>
+#include <log/uio.h> /* helper to define iovec for portability */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * LOG_TAG is the local tag used for the following simplified
+ * logging macros. You can change this preprocessor definition
+ * before using the other macros to change the tag.
+ */
+
+#ifndef LOG_TAG
+#define LOG_TAG NULL
+#endif
+
+/*
+ * Normally we strip the effects of ALOGV (VERBOSE messages),
+ * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
+ * release builds be defining NDEBUG. You can modify this (for
+ * example with "#define LOG_NDEBUG 0" at the top of your source
+ * file) to change that behavior.
+ */
+
+#ifndef LOG_NDEBUG
+#ifdef NDEBUG
+#define LOG_NDEBUG 1
+#else
+#define LOG_NDEBUG 0
+#endif
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * This file uses ", ## __VA_ARGS__" zero-argument token pasting to
+ * work around issues with debug-only syntax errors in assertions
+ * that are missing format strings. See commit
+ * 19299904343daf191267564fe32e6cd5c165cd42
+ */
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Event logging.
+ */
+
+/*
+ * The following should not be used directly.
+ */
+
+int __android_log_bwrite(int32_t tag, const void* payload, size_t len);
+int __android_log_btwrite(int32_t tag, char type, const void* payload,
+ size_t len);
+int __android_log_bswrite(int32_t tag, const char* payload);
+
+int __android_log_stats_bwrite(int32_t tag, const void* payload, size_t len);
+
+#define android_bWriteLog(tag, payload, len) \
+ __android_log_bwrite(tag, payload, len)
+#define android_btWriteLog(tag, type, payload, len) \
+ __android_log_btwrite(tag, type, payload, len)
+
+/*
+ * Event log entry types.
+ */
+#ifndef __AndroidEventLogType_defined
+#define __AndroidEventLogType_defined
+typedef enum {
+ /* Special markers for android_log_list_element type */
+ EVENT_TYPE_LIST_STOP = '\n', /* declare end of list */
+ EVENT_TYPE_UNKNOWN = '?', /* protocol error */
+
+ /* must match with declaration in java/android/android/util/EventLog.java */
+ EVENT_TYPE_INT = 0, /* int32_t */
+ EVENT_TYPE_LONG = 1, /* int64_t */
+ EVENT_TYPE_STRING = 2,
+ EVENT_TYPE_LIST = 3,
+ EVENT_TYPE_FLOAT = 4,
+} AndroidEventLogType;
+#endif
+#define sizeof_AndroidEventLogType sizeof(typeof_AndroidEventLogType)
+#define typeof_AndroidEventLogType unsigned char
+
+#ifndef LOG_EVENT_INT
+#define LOG_EVENT_INT(_tag, _value) \
+ { \
+ int intBuf = _value; \
+ (void)android_btWriteLog(_tag, EVENT_TYPE_INT, &intBuf, sizeof(intBuf)); \
+ }
+#endif
+#ifndef LOG_EVENT_LONG
+#define LOG_EVENT_LONG(_tag, _value) \
+ { \
+ long long longBuf = _value; \
+ (void)android_btWriteLog(_tag, EVENT_TYPE_LONG, &longBuf, sizeof(longBuf)); \
+ }
+#endif
+#ifndef LOG_EVENT_FLOAT
+#define LOG_EVENT_FLOAT(_tag, _value) \
+ { \
+ float floatBuf = _value; \
+ (void)android_btWriteLog(_tag, EVENT_TYPE_FLOAT, &floatBuf, \
+ sizeof(floatBuf)); \
+ }
+#endif
+#ifndef LOG_EVENT_STRING
+#define LOG_EVENT_STRING(_tag, _value) \
+ (void)__android_log_bswrite(_tag, _value);
+#endif
+
+#ifdef __linux__
+
+#ifndef __ANDROID_USE_LIBLOG_CLOCK_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_CLOCK_INTERFACE 1
+#elif __ANDROID_API__ > 22 /* > Lollipop */
+#define __ANDROID_USE_LIBLOG_CLOCK_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_CLOCK_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_CLOCK_INTERFACE
+clockid_t android_log_clockid(void);
+#endif
+
+#endif /* __linux__ */
+
+/* --------------------------------------------------------------------- */
+
+#ifndef __ANDROID_USE_LIBLOG_CLOSE_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_CLOSE_INTERFACE 1
+#elif __ANDROID_API__ > 18 /* > JellyBean */
+#define __ANDROID_USE_LIBLOG_CLOSE_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_CLOSE_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_CLOSE_INTERFACE
+/*
+ * Release any logger resources (a new log write will immediately re-acquire)
+ *
+ * May be used to clean up File descriptors after a Fork, the resources are
+ * all O_CLOEXEC so wil self clean on exec().
+ */
+void __android_log_close(void);
+#endif
+
+#ifndef __ANDROID_USE_LIBLOG_RATELIMIT_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_RATELIMIT_INTERFACE 1
+#elif __ANDROID_API__ > 25 /* > OC */
+#define __ANDROID_USE_LIBLOG_RATELIMIT_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_RATELIMIT_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_RATELIMIT_INTERFACE
+
+/*
+ * if last is NULL, caller _must_ provide a consistent value for seconds.
+ *
+ * Return -1 if we can not acquire a lock, which below will permit the logging,
+ * error on allowing a log message through.
+ */
+int __android_log_ratelimit(time_t seconds, time_t* last);
+
+/*
+ * Usage:
+ *
+ * // Global default and state
+ * IF_ALOG_RATELIMIT() {
+ * ALOG*(...);
+ * }
+ *
+ * // local state, 10 seconds ratelimit
+ * static time_t local_state;
+ * IF_ALOG_RATELIMIT_LOCAL(10, &local_state) {
+ * ALOG*(...);
+ * }
+ */
+
+#define IF_ALOG_RATELIMIT() if (__android_log_ratelimit(0, NULL) > 0)
+#define IF_ALOG_RATELIMIT_LOCAL(seconds, state) \
+ if (__android_log_ratelimit(seconds, state) > 0)
+
+#else
+
+/* No ratelimiting as API unsupported */
+#define IF_ALOG_RATELIMIT() if (1)
+#define IF_ALOG_RATELIMIT_LOCAL(...) if (1)
+
+#endif
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_LOG_H */
diff --git a/android/android-emugl/guest/log/log_event_list.h b/android/android-emugl/guest/log/log_event_list.h
new file mode 100644
index 0000000000..bb1ce34852
--- /dev/null
+++ b/android/android-emugl/guest/log/log_event_list.h
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2005-2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_EVENT_LIST_H
+#define _LIBS_LOG_EVENT_LIST_H
+
+#include <errno.h>
+#include <stdint.h>
+
+#if (defined(__cplusplus) && defined(_USING_LIBCXX))
+extern "C++" {
+#include <string>
+}
+#endif
+
+#include <log/log.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __ANDROID_USE_LIBLOG_EVENT_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_EVENT_INTERFACE 1
+#elif __ANDROID_API__ > 23 /* > Marshmallow */
+#define __ANDROID_USE_LIBLOG_EVENT_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_EVENT_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_EVENT_INTERFACE
+
+/* For manipulating lists of events. */
+
+#define ANDROID_MAX_LIST_NEST_DEPTH 8
+
+/*
+ * The opaque context used to manipulate lists of events.
+ */
+#ifndef __android_log_context_defined
+#define __android_log_context_defined
+typedef struct android_log_context_internal* android_log_context;
+#endif
+
+/*
+ * Elements returned when reading a list of events.
+ */
+#ifndef __android_log_list_element_defined
+#define __android_log_list_element_defined
+typedef struct {
+ AndroidEventLogType type;
+ uint16_t complete;
+ uint16_t len;
+ union {
+ int32_t int32;
+ int64_t int64;
+ char* string;
+ float float32;
+ } data;
+} android_log_list_element;
+#endif
+
+/*
+ * Creates a context associated with an event tag to write elements to
+ * the list of events.
+ */
+android_log_context create_android_logger(uint32_t tag);
+
+/* All lists must be braced by a begin and end call */
+/*
+ * NB: If the first level braces are missing when specifying multiple
+ * elements, we will manufacturer a list to embrace it for your API
+ * convenience. For a single element, it will remain solitary.
+ */
+int android_log_write_list_begin(android_log_context ctx);
+int android_log_write_list_end(android_log_context ctx);
+
+int android_log_write_int32(android_log_context ctx, int32_t value);
+int android_log_write_int64(android_log_context ctx, int64_t value);
+int android_log_write_string8(android_log_context ctx, const char* value);
+int android_log_write_string8_len(android_log_context ctx, const char* value,
+ size_t maxlen);
+int android_log_write_float32(android_log_context ctx, float value);
+
+/* Submit the composed list context to the specified logger id */
+/* NB: LOG_ID_EVENTS and LOG_ID_SECURITY only valid binary buffers */
+int android_log_write_list(android_log_context ctx, log_id_t id);
+
+/*
+ * Creates a context from a raw buffer representing a list of events to be read.
+ */
+android_log_context create_android_log_parser(const char* msg, size_t len);
+
+android_log_list_element android_log_read_next(android_log_context ctx);
+android_log_list_element android_log_peek_next(android_log_context ctx);
+
+/* Finished with reader or writer context */
+int android_log_destroy(android_log_context* ctx);
+
+#ifdef __cplusplus
+#ifndef __class_android_log_event_list_defined
+#define __class_android_log_event_list_defined
+/* android_log_list C++ helpers */
+extern "C++" {
+class android_log_event_list {
+ friend class __android_log_event_list;
+
+ private:
+ android_log_context ctx;
+ int ret;
+
+ android_log_event_list(const android_log_event_list&) = delete;
+ void operator=(const android_log_event_list&) = delete;
+
+ public:
+ explicit android_log_event_list(int tag) : ret(0) {
+ ctx = create_android_logger(static_cast<uint32_t>(tag));
+ }
+ explicit android_log_event_list(log_msg& log_msg) : ret(0) {
+ ctx = create_android_log_parser(log_msg.msg() + sizeof(uint32_t),
+ log_msg.entry.len - sizeof(uint32_t));
+ }
+ ~android_log_event_list() {
+ android_log_destroy(&ctx);
+ }
+
+ int close() {
+ int retval = android_log_destroy(&ctx);
+ if (retval < 0) ret = retval;
+ return retval;
+ }
+
+ /* To allow above C calls to use this class as parameter */
+ operator android_log_context() const {
+ return ctx;
+ }
+
+ /* return errors or transmit status */
+ int status() const {
+ return ret;
+ }
+
+ int begin() {
+ int retval = android_log_write_list_begin(ctx);
+ if (retval < 0) ret = retval;
+ return ret;
+ }
+ int end() {
+ int retval = android_log_write_list_end(ctx);
+ if (retval < 0) ret = retval;
+ return ret;
+ }
+
+ android_log_event_list& operator<<(int32_t value) {
+ int retval = android_log_write_int32(ctx, value);
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ android_log_event_list& operator<<(uint32_t value) {
+ int retval = android_log_write_int32(ctx, static_cast<int32_t>(value));
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ android_log_event_list& operator<<(bool value) {
+ int retval = android_log_write_int32(ctx, value ? 1 : 0);
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ android_log_event_list& operator<<(int64_t value) {
+ int retval = android_log_write_int64(ctx, value);
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ android_log_event_list& operator<<(uint64_t value) {
+ int retval = android_log_write_int64(ctx, static_cast<int64_t>(value));
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ android_log_event_list& operator<<(const char* value) {
+ int retval = android_log_write_string8(ctx, value);
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+#if defined(_USING_LIBCXX)
+ android_log_event_list& operator<<(const std::string& value) {
+ int retval =
+ android_log_write_string8_len(ctx, value.data(), value.length());
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+#endif
+
+ android_log_event_list& operator<<(float value) {
+ int retval = android_log_write_float32(ctx, value);
+ if (retval < 0) ret = retval;
+ return *this;
+ }
+
+ int write(log_id_t id = LOG_ID_EVENTS) {
+ /* facilitate -EBUSY retry */
+ if ((ret == -EBUSY) || (ret > 0)) ret = 0;
+ int retval = android_log_write_list(ctx, id);
+ /* existing errors trump transmission errors */
+ if (!ret) ret = retval;
+ return ret;
+ }
+
+ int operator<<(log_id_t id) {
+ write(id);
+ android_log_destroy(&ctx);
+ return ret;
+ }
+
+ /*
+ * Append<Type> methods removes any integer promotion
+ * confusion, and adds access to string with length.
+ * Append methods are also added for all types for
+ * convenience.
+ */
+
+ bool AppendInt(int32_t value) {
+ int retval = android_log_write_int32(ctx, value);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+ bool AppendLong(int64_t value) {
+ int retval = android_log_write_int64(ctx, value);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+ bool AppendString(const char* value) {
+ int retval = android_log_write_string8(ctx, value);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+ bool AppendString(const char* value, size_t len) {
+ int retval = android_log_write_string8_len(ctx, value, len);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+#if defined(_USING_LIBCXX)
+ bool AppendString(const std::string& value) {
+ int retval =
+ android_log_write_string8_len(ctx, value.data(), value.length());
+ if (retval < 0) ret = retval;
+ return ret;
+ }
+
+ bool Append(const std::string& value) {
+ int retval =
+ android_log_write_string8_len(ctx, value.data(), value.length());
+ if (retval < 0) ret = retval;
+ return ret;
+ }
+#endif
+
+ bool AppendFloat(float value) {
+ int retval = android_log_write_float32(ctx, value);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+ template <typename Tvalue>
+ bool Append(Tvalue value) {
+ *this << value;
+ return ret >= 0;
+ }
+
+ bool Append(const char* value, size_t len) {
+ int retval = android_log_write_string8_len(ctx, value, len);
+ if (retval < 0) ret = retval;
+ return ret >= 0;
+ }
+
+ android_log_list_element read() {
+ return android_log_read_next(ctx);
+ }
+ android_log_list_element peek() {
+ return android_log_peek_next(ctx);
+ }
+};
+}
+#endif
+#endif
+
+#endif /* __ANDROID_USE_LIBLOG_EVENT_INTERFACE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_EVENT_LIST_H */
diff --git a/android/android-emugl/guest/log/log_id.h b/android/android-emugl/guest/log/log_id.h
new file mode 100644
index 0000000000..c44f5a2ebc
--- /dev/null
+++ b/android/android-emugl/guest/log/log_id.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_ID_H
+#define _LIBS_LOG_LOG_ID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef log_id_t_defined
+#define log_id_t_defined
+typedef enum log_id {
+ LOG_ID_MIN = 0,
+
+ LOG_ID_MAIN = 0,
+ LOG_ID_RADIO = 1,
+ LOG_ID_EVENTS = 2,
+ LOG_ID_SYSTEM = 3,
+ LOG_ID_CRASH = 4,
+ LOG_ID_STATS = 5,
+ LOG_ID_SECURITY = 6,
+ LOG_ID_KERNEL = 7, /* place last, third-parties can not use it */
+
+ LOG_ID_MAX
+} log_id_t;
+#endif
+#define sizeof_log_id_t sizeof(typeof_log_id_t)
+#define typeof_log_id_t unsigned char
+
+/*
+ * Send a simple string to the log.
+ */
+int __android_log_buf_write(int bufID, int prio, const char* tag,
+ const char* text);
+int __android_log_buf_print(int bufID, int prio, const char* tag,
+ const char* fmt, ...)
+#if defined(__GNUC__)
+ __attribute__((__format__(printf, 4, 5)))
+#endif
+ ;
+
+/*
+ * log_id_t helpers
+ */
+log_id_t android_name_to_log_id(const char* logName);
+const char* android_log_id_to_name(log_id_t log_id);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_LOG_ID_H */
diff --git a/android/android-emugl/guest/log/log_main.h b/android/android-emugl/guest/log/log_main.h
new file mode 100644
index 0000000000..21fc7cca02
--- /dev/null
+++ b/android/android-emugl/guest/log/log_main.h
@@ -0,0 +1,391 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_MAIN_H
+#define _LIBS_LOG_LOG_MAIN_H
+
+#include <stdbool.h>
+
+#include <android/log.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+/*
+ * Normally we strip the effects of ALOGV (VERBOSE messages),
+ * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
+ * release builds be defining NDEBUG. You can modify this (for
+ * example with "#define LOG_NDEBUG 0" at the top of your source
+ * file) to change that behavior.
+ */
+
+#ifndef LOG_NDEBUG
+#ifdef NDEBUG
+#define LOG_NDEBUG 1
+#else
+#define LOG_NDEBUG 0
+#endif
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * This file uses ", ## __VA_ARGS__" zero-argument token pasting to
+ * work around issues with debug-only syntax errors in assertions
+ * that are missing format strings. See commit
+ * 19299904343daf191267564fe32e6cd5c165cd42
+ */
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#endif
+
+#ifndef __predict_false
+#define __predict_false(exp) __builtin_expect((exp) != 0, 0)
+#endif
+
+#define android_writeLog(prio, tag, text) __android_log_write(prio, tag, text)
+
+#define android_printLog(prio, tag, ...) \
+ __android_log_print(prio, tag, __VA_ARGS__)
+
+#define android_vprintLog(prio, cond, tag, ...) \
+ __android_log_vprint(prio, tag, __VA_ARGS__)
+
+/*
+ * Log macro that allows you to specify a number for the priority.
+ */
+#ifndef LOG_PRI
+#define LOG_PRI(priority, tag, ...) android_printLog(priority, tag, __VA_ARGS__)
+#endif
+
+/*
+ * Log macro that allows you to pass in a varargs ("args" is a va_list).
+ */
+#ifndef LOG_PRI_VA
+#define LOG_PRI_VA(priority, tag, fmt, args) \
+ android_vprintLog(priority, NULL, tag, fmt, args)
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/* XXX Macros to work around syntax errors in places where format string
+ * arg is not passed to ALOG_ASSERT, LOG_ALWAYS_FATAL or LOG_ALWAYS_FATAL_IF
+ * (happens only in debug builds).
+ */
+
+/* Returns 2nd arg. Used to substitute default value if caller's vararg list
+ * is empty.
+ */
+#define __android_second(dummy, second, ...) second
+
+/* If passed multiple args, returns ',' followed by all but 1st arg, otherwise
+ * returns nothing.
+ */
+#define __android_rest(first, ...) , ##__VA_ARGS__
+
+#define android_printAssert(cond, tag, ...) \
+ __android_log_assert(cond, tag, \
+ __android_second(0, ##__VA_ARGS__, NULL) \
+ __android_rest(__VA_ARGS__))
+
+/*
+ * Log a fatal error. If the given condition fails, this stops program
+ * execution like a normal assertion, but also generating the given message.
+ * It is NOT stripped from release builds. Note that the condition test
+ * is -inverted- from the normal assert() semantics.
+ */
+#ifndef LOG_ALWAYS_FATAL_IF
+#define LOG_ALWAYS_FATAL_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)android_printAssert(#cond, LOG_TAG, ##__VA_ARGS__)) \
+ : (void)0)
+#endif
+
+#ifndef LOG_ALWAYS_FATAL
+#define LOG_ALWAYS_FATAL(...) \
+ (((void)android_printAssert(NULL, LOG_TAG, ##__VA_ARGS__)))
+#endif
+
+/*
+ * Versions of LOG_ALWAYS_FATAL_IF and LOG_ALWAYS_FATAL that
+ * are stripped out of release builds.
+ */
+
+#if LOG_NDEBUG
+
+#ifndef LOG_FATAL_IF
+#define LOG_FATAL_IF(cond, ...) ((void)0)
+#endif
+#ifndef LOG_FATAL
+#define LOG_FATAL(...) ((void)0)
+#endif
+
+#else
+
+#ifndef LOG_FATAL_IF
+#define LOG_FATAL_IF(cond, ...) LOG_ALWAYS_FATAL_IF(cond, ##__VA_ARGS__)
+#endif
+#ifndef LOG_FATAL
+#define LOG_FATAL(...) LOG_ALWAYS_FATAL(__VA_ARGS__)
+#endif
+
+#endif
+
+/*
+ * Assertion that generates a log message when the assertion fails.
+ * Stripped out of release builds. Uses the current LOG_TAG.
+ */
+#ifndef ALOG_ASSERT
+#define ALOG_ASSERT(cond, ...) LOG_FATAL_IF(!(cond), ##__VA_ARGS__)
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * C/C++ logging functions. See the logging documentation for API details.
+ *
+ * We'd like these to be available from C code (in case we import some from
+ * somewhere), so this has a C interface.
+ *
+ * The output will be correct when the log file is shared between multiple
+ * threads and/or multiple processes so long as the operating system
+ * supports O_APPEND. These calls have mutex-protected data structures
+ * and so are NOT reentrant. Do not use LOG in a signal handler.
+ */
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Simplified macro to send a verbose log message using the current LOG_TAG.
+ */
+#ifndef ALOGV
+#define __ALOGV(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
+#if LOG_NDEBUG
+#define ALOGV(...) \
+ do { \
+ if (false) { \
+ __ALOGV(__VA_ARGS__); \
+ } \
+ } while (false)
+#else
+#define ALOGV(...) __ALOGV(__VA_ARGS__)
+#endif
+#endif
+
+#ifndef ALOGV_IF
+#if LOG_NDEBUG
+#define ALOGV_IF(cond, ...) ((void)0)
+#else
+#define ALOGV_IF(cond, ...) \
+ ((__predict_false(cond)) ? ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+#endif
+
+/*
+ * Simplified macro to send a debug log message using the current LOG_TAG.
+ */
+#ifndef ALOGD
+#define ALOGD(...) ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
+#endif
+
+#ifndef ALOGD_IF
+#define ALOGD_IF(cond, ...) \
+ ((__predict_false(cond)) ? ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an info log message using the current LOG_TAG.
+ */
+#ifndef ALOGI
+#define ALOGI(...) ((void)ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
+#endif
+
+#ifndef ALOGI_IF
+#define ALOGI_IF(cond, ...) \
+ ((__predict_false(cond)) ? ((void)ALOG(LOG_INFO, LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send a warning log message using the current LOG_TAG.
+ */
+#ifndef ALOGW
+#define ALOGW(...) ((void)ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
+#endif
+
+#ifndef ALOGW_IF
+#define ALOGW_IF(cond, ...) \
+ ((__predict_false(cond)) ? ((void)ALOG(LOG_WARN, LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an error log message using the current LOG_TAG.
+ */
+#ifndef ALOGE
+#define ALOGE(...) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
+#endif
+
+#ifndef ALOGE_IF
+#define ALOGE_IF(cond, ...) \
+ ((__predict_false(cond)) ? ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Conditional based on whether the current LOG_TAG is enabled at
+ * verbose priority.
+ */
+#ifndef IF_ALOGV
+#if LOG_NDEBUG
+#define IF_ALOGV() if (false)
+#else
+#define IF_ALOGV() IF_ALOG(LOG_VERBOSE, LOG_TAG)
+#endif
+#endif
+
+/*
+ * Conditional based on whether the current LOG_TAG is enabled at
+ * debug priority.
+ */
+#ifndef IF_ALOGD
+#define IF_ALOGD() IF_ALOG(LOG_DEBUG, LOG_TAG)
+#endif
+
+/*
+ * Conditional based on whether the current LOG_TAG is enabled at
+ * info priority.
+ */
+#ifndef IF_ALOGI
+#define IF_ALOGI() IF_ALOG(LOG_INFO, LOG_TAG)
+#endif
+
+/*
+ * Conditional based on whether the current LOG_TAG is enabled at
+ * warn priority.
+ */
+#ifndef IF_ALOGW
+#define IF_ALOGW() IF_ALOG(LOG_WARN, LOG_TAG)
+#endif
+
+/*
+ * Conditional based on whether the current LOG_TAG is enabled at
+ * error priority.
+ */
+#ifndef IF_ALOGE
+#define IF_ALOGE() IF_ALOG(LOG_ERROR, LOG_TAG)
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * Basic log message macro.
+ *
+ * Example:
+ * ALOG(LOG_WARN, NULL, "Failed with error %d", errno);
+ *
+ * The second argument may be NULL or "" to indicate the "global" tag.
+ */
+#ifndef ALOG
+#define ALOG(priority, tag, ...) LOG_PRI(ANDROID_##priority, tag, __VA_ARGS__)
+#endif
+
+/*
+ * Conditional given a desired logging priority and tag.
+ */
+#ifndef IF_ALOG
+#define IF_ALOG(priority, tag) if (android_testLog(ANDROID_##priority, tag))
+#endif
+
+/* --------------------------------------------------------------------- */
+
+/*
+ * IF_ALOG uses android_testLog, but IF_ALOG can be overridden.
+ * android_testLog will remain constant in its purpose as a wrapper
+ * for Android logging filter policy, and can be subject to
+ * change. It can be reused by the developers that override
+ * IF_ALOG as a convenient means to reimplement their policy
+ * over Android.
+ */
+
+#ifndef __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE 2
+#elif __ANDROID_API__ > 24 /* > Nougat */
+#define __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE 2
+#elif __ANDROID_API__ > 22 /* > Lollipop */
+#define __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE
+
+/*
+ * Use the per-tag properties "log.tag.<tagname>" to generate a runtime
+ * result of non-zero to expose a log. prio is ANDROID_LOG_VERBOSE to
+ * ANDROID_LOG_FATAL. default_prio if no property. Undefined behavior if
+ * any other value.
+ */
+int __android_log_is_loggable(int prio, const char* tag, int default_prio);
+
+#if __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE > 1
+#include <sys/types.h>
+
+int __android_log_is_loggable_len(int prio, const char* tag, size_t len,
+ int default_prio);
+
+#if LOG_NDEBUG /* Production */
+#define android_testLog(prio, tag) \
+ (__android_log_is_loggable_len(prio, tag, ((tag) && *(tag)) ? strlen(tag) : 0, \
+ ANDROID_LOG_DEBUG) != 0)
+#else
+#define android_testLog(prio, tag) \
+ (__android_log_is_loggable_len(prio, tag, ((tag) && *(tag)) ? strlen(tag) : 0, \
+ ANDROID_LOG_VERBOSE) != 0)
+#endif
+
+#else
+
+#if LOG_NDEBUG /* Production */
+#define android_testLog(prio, tag) \
+ (__android_log_is_loggable(prio, tag, ANDROID_LOG_DEBUG) != 0)
+#else
+#define android_testLog(prio, tag) \
+ (__android_log_is_loggable(prio, tag, ANDROID_LOG_VERBOSE) != 0)
+#endif
+
+#endif
+
+#else /* __ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE */
+
+#define android_testLog(prio, tag) (1)
+
+#endif /* !__ANDROID_USE_LIBLOG_LOGGABLE_INTERFACE */
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+__END_DECLS
+
+#endif /* _LIBS_LOG_LOG_MAIN_H */
diff --git a/android/android-emugl/guest/log/log_properties.h b/android/android-emugl/guest/log/log_properties.h
new file mode 100644
index 0000000000..7d398a6b40
--- /dev/null
+++ b/android/android-emugl/guest/log/log_properties.h
@@ -0,0 +1,35 @@
+/*
+**
+** Copyright 2017, The Android Open Source Project
+**
+** This file is dual licensed. It may be redistributed and/or modified
+** under the terms of the Apache 2.0 License OR version 2 of the GNU
+** General Public License.
+*/
+
+#ifndef _LIBS_LOG_PROPERTIES_H
+#define _LIBS_LOG_PROPERTIES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __ANDROID_USE_LIBLOG_IS_DEBUGGABLE_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_IS_DEBUGGABLE_INTERFACE 1
+#elif __ANDROID_API__ > 24 /* > Nougat */
+#define __ANDROID_USE_LIBLOG_IS_DEBUGGABLE_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_IS_DEBUGGABLE_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_IS_DEBUGGABLE_INTERFACE
+int __android_log_is_debuggable();
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_PROPERTIES_H */
diff --git a/android/android-emugl/guest/log/log_radio.h b/android/android-emugl/guest/log/log_radio.h
new file mode 100644
index 0000000000..bd629fe35b
--- /dev/null
+++ b/android/android-emugl/guest/log/log_radio.h
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_RADIO_H
+#define _LIBS_LOG_LOG_RADIO_H
+
+#include <android/log.h>
+#include <log/log_id.h>
+
+/*
+ * Normally we strip the effects of ALOGV (VERBOSE messages),
+ * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
+ * release builds be defining NDEBUG. You can modify this (for
+ * example with "#define LOG_NDEBUG 0" at the top of your source
+ * file) to change that behavior.
+ */
+
+#ifndef LOG_NDEBUG
+#ifdef NDEBUG
+#define LOG_NDEBUG 1
+#else
+#define LOG_NDEBUG 0
+#endif
+#endif
+
+/* --------------------------------------------------------------------- */
+
+#ifndef __predict_false
+#define __predict_false(exp) __builtin_expect((exp) != 0, 0)
+#endif
+
+/*
+ * Simplified macro to send a verbose radio log message using current LOG_TAG.
+ */
+#ifndef RLOGV
+#define __RLOGV(...) \
+ ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_VERBOSE, LOG_TAG, \
+ __VA_ARGS__))
+#if LOG_NDEBUG
+#define RLOGV(...) \
+ do { \
+ if (0) { \
+ __RLOGV(__VA_ARGS__); \
+ } \
+ } while (0)
+#else
+#define RLOGV(...) __RLOGV(__VA_ARGS__)
+#endif
+#endif
+
+#ifndef RLOGV_IF
+#if LOG_NDEBUG
+#define RLOGV_IF(cond, ...) ((void)0)
+#else
+#define RLOGV_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_VERBOSE, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+#endif
+
+/*
+ * Simplified macro to send a debug radio log message using current LOG_TAG.
+ */
+#ifndef RLOGD
+#define RLOGD(...) \
+ ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_DEBUG, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef RLOGD_IF
+#define RLOGD_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_DEBUG, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an info radio log message using current LOG_TAG.
+ */
+#ifndef RLOGI
+#define RLOGI(...) \
+ ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_INFO, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef RLOGI_IF
+#define RLOGI_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_INFO, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send a warning radio log message using current LOG_TAG.
+ */
+#ifndef RLOGW
+#define RLOGW(...) \
+ ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_WARN, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef RLOGW_IF
+#define RLOGW_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_WARN, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an error radio log message using current LOG_TAG.
+ */
+#ifndef RLOGE
+#define RLOGE(...) \
+ ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_ERROR, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef RLOGE_IF
+#define RLOGE_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_RADIO, ANDROID_LOG_ERROR, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+#endif /* _LIBS_LOG_LOG_RADIO_H */
diff --git a/android/android-emugl/guest/log/log_read.h b/android/android-emugl/guest/log/log_read.h
new file mode 100644
index 0000000000..d118563bea
--- /dev/null
+++ b/android/android-emugl/guest/log/log_read.h
@@ -0,0 +1,277 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_READ_H
+#define _LIBS_LOG_LOG_READ_H
+
+/* deal with possible sys/cdefs.h conflict with fcntl.h */
+#ifdef __unused
+#define __unused_defined __unused
+#undef __unused
+#endif
+
+#include <fcntl.h> /* Pick up O_* macros */
+
+/* restore definitions from above */
+#ifdef __unused_defined
+#define __unused __attribute__((__unused__))
+#endif
+
+#include <stdint.h>
+
+#include <log/log_id.h>
+#include <log/log_time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Native log reading interface section. See logcat for sample code.
+ *
+ * The preferred API is an exec of logcat. Likely uses of this interface
+ * are if native code suffers from exec or filtration being too costly,
+ * access to raw information, or parsing is an issue.
+ */
+
+/*
+ * The userspace structure for version 1 of the logger_entry ABI.
+ */
+#ifndef __struct_logger_entry_defined
+#define __struct_logger_entry_defined
+struct logger_entry {
+ uint16_t len; /* length of the payload */
+ uint16_t __pad; /* no matter what, we get 2 bytes of padding */
+ int32_t pid; /* generating process's pid */
+ int32_t tid; /* generating process's tid */
+ int32_t sec; /* seconds since Epoch */
+ int32_t nsec; /* nanoseconds */
+#ifndef __cplusplus
+ char msg[0]; /* the entry's payload */
+#endif
+};
+#endif
+
+/*
+ * The userspace structure for version 2 of the logger_entry ABI.
+ */
+#ifndef __struct_logger_entry_v2_defined
+#define __struct_logger_entry_v2_defined
+struct logger_entry_v2 {
+ uint16_t len; /* length of the payload */
+ uint16_t hdr_size; /* sizeof(struct logger_entry_v2) */
+ int32_t pid; /* generating process's pid */
+ int32_t tid; /* generating process's tid */
+ int32_t sec; /* seconds since Epoch */
+ int32_t nsec; /* nanoseconds */
+ uint32_t euid; /* effective UID of logger */
+#ifndef __cplusplus
+ char msg[0]; /* the entry's payload */
+#endif
+} __attribute__((__packed__));
+#endif
+
+/*
+ * The userspace structure for version 3 of the logger_entry ABI.
+ */
+#ifndef __struct_logger_entry_v3_defined
+#define __struct_logger_entry_v3_defined
+struct logger_entry_v3 {
+ uint16_t len; /* length of the payload */
+ uint16_t hdr_size; /* sizeof(struct logger_entry_v3) */
+ int32_t pid; /* generating process's pid */
+ int32_t tid; /* generating process's tid */
+ int32_t sec; /* seconds since Epoch */
+ int32_t nsec; /* nanoseconds */
+ uint32_t lid; /* log id of the payload */
+#ifndef __cplusplus
+ char msg[0]; /* the entry's payload */
+#endif
+} __attribute__((__packed__));
+#endif
+
+/*
+ * The userspace structure for version 4 of the logger_entry ABI.
+ */
+#ifndef __struct_logger_entry_v4_defined
+#define __struct_logger_entry_v4_defined
+struct logger_entry_v4 {
+ uint16_t len; /* length of the payload */
+ uint16_t hdr_size; /* sizeof(struct logger_entry_v4) */
+ int32_t pid; /* generating process's pid */
+ uint32_t tid; /* generating process's tid */
+ uint32_t sec; /* seconds since Epoch */
+ uint32_t nsec; /* nanoseconds */
+ uint32_t lid; /* log id of the payload, bottom 4 bits currently */
+ uint32_t uid; /* generating process's uid */
+#ifndef __cplusplus
+ char msg[0]; /* the entry's payload */
+#endif
+};
+#endif
+
+/*
+ * The maximum size of the log entry payload that can be
+ * written to the logger. An attempt to write more than
+ * this amount will result in a truncated log entry.
+ */
+#define LOGGER_ENTRY_MAX_PAYLOAD 4068
+
+/*
+ * The maximum size of a log entry which can be read.
+ * An attempt to read less than this amount may result
+ * in read() returning EINVAL.
+ */
+#define LOGGER_ENTRY_MAX_LEN (5 * 1024)
+
+#ifndef __struct_log_msg_defined
+#define __struct_log_msg_defined
+struct log_msg {
+ union {
+ unsigned char buf[LOGGER_ENTRY_MAX_LEN + 1];
+ struct logger_entry_v4 entry;
+ struct logger_entry_v4 entry_v4;
+ struct logger_entry_v3 entry_v3;
+ struct logger_entry_v2 entry_v2;
+ struct logger_entry entry_v1;
+ } __attribute__((aligned(4)));
+#ifdef __cplusplus
+ /* Matching log_time operators */
+ bool operator==(const log_msg& T) const {
+ return (entry.sec == T.entry.sec) && (entry.nsec == T.entry.nsec);
+ }
+ bool operator!=(const log_msg& T) const {
+ return !(*this == T);
+ }
+ bool operator<(const log_msg& T) const {
+ return (entry.sec < T.entry.sec) ||
+ ((entry.sec == T.entry.sec) && (entry.nsec < T.entry.nsec));
+ }
+ bool operator>=(const log_msg& T) const {
+ return !(*this < T);
+ }
+ bool operator>(const log_msg& T) const {
+ return (entry.sec > T.entry.sec) ||
+ ((entry.sec == T.entry.sec) && (entry.nsec > T.entry.nsec));
+ }
+ bool operator<=(const log_msg& T) const {
+ return !(*this > T);
+ }
+ uint64_t nsec() const {
+ return static_cast<uint64_t>(entry.sec) * NS_PER_SEC + entry.nsec;
+ }
+
+ /* packet methods */
+ log_id_t id() {
+ return static_cast<log_id_t>(entry.lid);
+ }
+ char* msg() {
+ unsigned short hdr_size = entry.hdr_size;
+ if (!hdr_size) {
+ hdr_size = sizeof(entry_v1);
+ }
+ if ((hdr_size < sizeof(entry_v1)) || (hdr_size > sizeof(entry))) {
+ return NULL;
+ }
+ return reinterpret_cast<char*>(buf) + hdr_size;
+ }
+ unsigned int len() {
+ return (entry.hdr_size ? entry.hdr_size
+ : static_cast<uint16_t>(sizeof(entry_v1))) +
+ entry.len;
+ }
+#endif
+};
+#endif
+
+#ifndef __ANDROID_USE_LIBLOG_READER_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_READER_INTERFACE 3
+#elif __ANDROID_API__ > 23 /* > Marshmallow */
+#define __ANDROID_USE_LIBLOG_READER_INTERFACE 3
+#elif __ANDROID_API__ > 22 /* > Lollipop */
+#define __ANDROID_USE_LIBLOG_READER_INTERFACE 2
+#elif __ANDROID_API__ > 19 /* > KitKat */
+#define __ANDROID_USE_LIBLOG_READER_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_READER_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_READER_INTERFACE
+
+struct logger;
+
+log_id_t android_logger_get_id(struct logger* logger);
+
+int android_logger_clear(struct logger* logger);
+long android_logger_get_log_size(struct logger* logger);
+int android_logger_set_log_size(struct logger* logger, unsigned long size);
+long android_logger_get_log_readable_size(struct logger* logger);
+int android_logger_get_log_version(struct logger* logger);
+
+struct logger_list;
+
+#if __ANDROID_USE_LIBLOG_READER_INTERFACE > 1
+ssize_t android_logger_get_statistics(struct logger_list* logger_list,
+ char* buf, size_t len);
+ssize_t android_logger_get_prune_list(struct logger_list* logger_list,
+ char* buf, size_t len);
+int android_logger_set_prune_list(struct logger_list* logger_list, char* buf,
+ size_t len);
+#endif
+
+#define ANDROID_LOG_RDONLY O_RDONLY
+#define ANDROID_LOG_WRONLY O_WRONLY
+#define ANDROID_LOG_RDWR O_RDWR
+#define ANDROID_LOG_ACCMODE O_ACCMODE
+#ifndef O_NONBLOCK
+#define ANDROID_LOG_NONBLOCK 0x00000800
+#else
+#define ANDROID_LOG_NONBLOCK O_NONBLOCK
+#endif
+#if __ANDROID_USE_LIBLOG_READER_INTERFACE > 2
+#define ANDROID_LOG_WRAP 0x40000000 /* Block until buffer about to wrap */
+#define ANDROID_LOG_WRAP_DEFAULT_TIMEOUT 7200 /* 2 hour default */
+#endif
+#if __ANDROID_USE_LIBLOG_READER_INTERFACE > 1
+#define ANDROID_LOG_PSTORE 0x80000000
+#endif
+
+struct logger_list* android_logger_list_alloc(int mode, unsigned int tail,
+ pid_t pid);
+struct logger_list* android_logger_list_alloc_time(int mode, log_time start,
+ pid_t pid);
+void android_logger_list_free(struct logger_list* logger_list);
+/* In the purest sense, the following two are orthogonal interfaces */
+int android_logger_list_read(struct logger_list* logger_list,
+ struct log_msg* log_msg);
+
+/* Multiple log_id_t opens */
+struct logger* android_logger_open(struct logger_list* logger_list, log_id_t id);
+#define android_logger_close android_logger_free
+/* Single log_id_t open */
+struct logger_list* android_logger_list_open(log_id_t id, int mode,
+ unsigned int tail, pid_t pid);
+#define android_logger_list_close android_logger_list_free
+
+#endif /* __ANDROID_USE_LIBLOG_READER_INTERFACE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_LOG_H */
diff --git a/android/android-emugl/guest/log/log_safetynet.h b/android/android-emugl/guest/log/log_safetynet.h
new file mode 100644
index 0000000000..07e8c8ab19
--- /dev/null
+++ b/android/android-emugl/guest/log/log_safetynet.h
@@ -0,0 +1,46 @@
+/*
+**
+** Copyright 2017, The Android Open Source Project
+**
+** This file is dual licensed. It may be redistributed and/or modified
+** under the terms of the Apache 2.0 License OR version 2 of the GNU
+** General Public License.
+*/
+
+#ifndef _LIBS_LOG_SAFETYNET_H
+#define _LIBS_LOG_SAFETYNET_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE
+#ifndef __ANDROID_API__
+#define __ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE 1
+#elif __ANDROID_API__ > 22 /* > Lollipop */
+#define __ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE 1
+#else
+#define __ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE 0
+#endif
+#endif
+
+#if __ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE
+
+#define android_errorWriteLog(tag, subTag) \
+ __android_log_error_write(tag, subTag, -1, NULL, 0)
+
+#define android_errorWriteWithInfoLog(tag, subTag, uid, data, dataLen) \
+ __android_log_error_write(tag, subTag, uid, data, dataLen)
+
+int __android_log_error_write(int tag, const char* subTag, int32_t uid,
+ const char* data, uint32_t dataLen);
+
+#endif /* __ANDROID_USE_LIBLOG_SAFETYNET_INTERFACE */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_SAFETYNET_H */
diff --git a/android/android-emugl/guest/log/log_system.h b/android/android-emugl/guest/log/log_system.h
new file mode 100644
index 0000000000..3b5ae22774
--- /dev/null
+++ b/android/android-emugl/guest/log/log_system.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_SYSTEM_H
+#define _LIBS_LOG_LOG_SYSTEM_H
+
+#include <android/log.h>
+#include <log/log_id.h>
+
+/*
+ * Normally we strip the effects of ALOGV (VERBOSE messages),
+ * LOG_FATAL and LOG_FATAL_IF (FATAL assert messages) from the
+ * release builds be defining NDEBUG. You can modify this (for
+ * example with "#define LOG_NDEBUG 0" at the top of your source
+ * file) to change that behavior.
+ */
+
+#ifndef LOG_NDEBUG
+#ifdef NDEBUG
+#define LOG_NDEBUG 1
+#else
+#define LOG_NDEBUG 0
+#endif
+#endif
+
+#ifndef __predict_false
+#define __predict_false(exp) __builtin_expect((exp) != 0, 0)
+#endif
+
+/*
+ * Simplified macro to send a verbose system log message using current LOG_TAG.
+ */
+#ifndef SLOGV
+#define __SLOGV(...) \
+ ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_VERBOSE, LOG_TAG, \
+ __VA_ARGS__))
+#if LOG_NDEBUG
+#define SLOGV(...) \
+ do { \
+ if (0) { \
+ __SLOGV(__VA_ARGS__); \
+ } \
+ } while (0)
+#else
+#define SLOGV(...) __SLOGV(__VA_ARGS__)
+#endif
+#endif
+
+#ifndef SLOGV_IF
+#if LOG_NDEBUG
+#define SLOGV_IF(cond, ...) ((void)0)
+#else
+#define SLOGV_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_VERBOSE, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+#endif
+
+/*
+ * Simplified macro to send a debug system log message using current LOG_TAG.
+ */
+#ifndef SLOGD
+#define SLOGD(...) \
+ ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_DEBUG, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef SLOGD_IF
+#define SLOGD_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_DEBUG, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an info system log message using current LOG_TAG.
+ */
+#ifndef SLOGI
+#define SLOGI(...) \
+ ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_INFO, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef SLOGI_IF
+#define SLOGI_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_INFO, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send a warning system log message using current LOG_TAG.
+ */
+#ifndef SLOGW
+#define SLOGW(...) \
+ ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_WARN, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef SLOGW_IF
+#define SLOGW_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_WARN, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+/*
+ * Simplified macro to send an error system log message using current LOG_TAG.
+ */
+#ifndef SLOGE
+#define SLOGE(...) \
+ ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_ERROR, LOG_TAG, \
+ __VA_ARGS__))
+#endif
+
+#ifndef SLOGE_IF
+#define SLOGE_IF(cond, ...) \
+ ((__predict_false(cond)) \
+ ? ((void)__android_log_buf_print(LOG_ID_SYSTEM, ANDROID_LOG_ERROR, \
+ LOG_TAG, __VA_ARGS__)) \
+ : (void)0)
+#endif
+
+#endif /* _LIBS_LOG_LOG_SYSTEM_H */
diff --git a/android/android-emugl/guest/log/log_time.h b/android/android-emugl/guest/log/log_time.h
new file mode 100644
index 0000000000..309f5d12fe
--- /dev/null
+++ b/android/android-emugl/guest/log/log_time.h
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2005-2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_LOG_LOG_TIME_H
+#define _LIBS_LOG_LOG_TIME_H
+
+#include <stdint.h>
+#include <time.h>
+
+/* struct log_time is a wire-format variant of struct timespec */
+#define NS_PER_SEC 1000000000ULL
+#define US_PER_SEC 1000000ULL
+#define MS_PER_SEC 1000ULL
+
+#ifndef __struct_log_time_defined
+#define __struct_log_time_defined
+
+#define LOG_TIME_SEC(t) ((t)->tv_sec)
+/* next power of two after NS_PER_SEC */
+#define LOG_TIME_NSEC(t) ((t)->tv_nsec & (UINT32_MAX >> 2))
+
+#ifdef __cplusplus
+
+/*
+ * NB: we did NOT define a copy constructor. This will result in structure
+ * no longer being compatible with pass-by-value which is desired
+ * efficient behavior. Also, pass-by-reference breaks C/C++ ABI.
+ */
+struct log_time {
+ public:
+ uint32_t tv_sec; /* good to Feb 5 2106 */
+ uint32_t tv_nsec;
+
+ static const uint32_t tv_sec_max = 0xFFFFFFFFUL;
+ static const uint32_t tv_nsec_max = 999999999UL;
+
+ log_time(const timespec& T)
+ : tv_sec(static_cast<uint32_t>(T.tv_sec)),
+ tv_nsec(static_cast<uint32_t>(T.tv_nsec)) {
+ }
+ explicit log_time(uint32_t sec, uint32_t nsec = 0)
+ : tv_sec(sec), tv_nsec(nsec) {
+ }
+#ifdef _SYSTEM_CORE_INCLUDE_PRIVATE_ANDROID_LOGGER_H_
+#define __struct_log_time_private_defined
+ static const timespec EPOCH;
+#endif
+ log_time() {
+ }
+#ifdef __linux__
+ explicit log_time(clockid_t id) {
+ timespec T;
+ clock_gettime(id, &T);
+ tv_sec = static_cast<uint32_t>(T.tv_sec);
+ tv_nsec = static_cast<uint32_t>(T.tv_nsec);
+ }
+#endif
+ explicit log_time(const char* T) {
+ const uint8_t* c = reinterpret_cast<const uint8_t*>(T);
+ tv_sec = c[0] | (static_cast<uint32_t>(c[1]) << 8) |
+ (static_cast<uint32_t>(c[2]) << 16) |
+ (static_cast<uint32_t>(c[3]) << 24);
+ tv_nsec = c[4] | (static_cast<uint32_t>(c[5]) << 8) |
+ (static_cast<uint32_t>(c[6]) << 16) |
+ (static_cast<uint32_t>(c[7]) << 24);
+ }
+
+ /* timespec */
+ bool operator==(const timespec& T) const {
+ return (tv_sec == static_cast<uint32_t>(T.tv_sec)) &&
+ (tv_nsec == static_cast<uint32_t>(T.tv_nsec));
+ }
+ bool operator!=(const timespec& T) const {
+ return !(*this == T);
+ }
+ bool operator<(const timespec& T) const {
+ return (tv_sec < static_cast<uint32_t>(T.tv_sec)) ||
+ ((tv_sec == static_cast<uint32_t>(T.tv_sec)) &&
+ (tv_nsec < static_cast<uint32_t>(T.tv_nsec)));
+ }
+ bool operator>=(const timespec& T) const {
+ return !(*this < T);
+ }
+ bool operator>(const timespec& T) const {
+ return (tv_sec > static_cast<uint32_t>(T.tv_sec)) ||
+ ((tv_sec == static_cast<uint32_t>(T.tv_sec)) &&
+ (tv_nsec > static_cast<uint32_t>(T.tv_nsec)));
+ }
+ bool operator<=(const timespec& T) const {
+ return !(*this > T);
+ }
+
+#ifdef _SYSTEM_CORE_INCLUDE_PRIVATE_ANDROID_LOGGER_H_
+ log_time operator-=(const timespec& T);
+ log_time operator-(const timespec& T) const {
+ log_time local(*this);
+ return local -= T;
+ }
+ log_time operator+=(const timespec& T);
+ log_time operator+(const timespec& T) const {
+ log_time local(*this);
+ return local += T;
+ }
+#endif
+
+ /* log_time */
+ bool operator==(const log_time& T) const {
+ return (tv_sec == T.tv_sec) && (tv_nsec == T.tv_nsec);
+ }
+ bool operator!=(const log_time& T) const {
+ return !(*this == T);
+ }
+ bool operator<(const log_time& T) const {
+ return (tv_sec < T.tv_sec) ||
+ ((tv_sec == T.tv_sec) && (tv_nsec < T.tv_nsec));
+ }
+ bool operator>=(const log_time& T) const {
+ return !(*this < T);
+ }
+ bool operator>(const log_time& T) const {
+ return (tv_sec > T.tv_sec) ||
+ ((tv_sec == T.tv_sec) && (tv_nsec > T.tv_nsec));
+ }
+ bool operator<=(const log_time& T) const {
+ return !(*this > T);
+ }
+
+#ifdef _SYSTEM_CORE_INCLUDE_PRIVATE_ANDROID_LOGGER_H_
+ log_time operator-=(const log_time& T);
+ log_time operator-(const log_time& T) const {
+ log_time local(*this);
+ return local -= T;
+ }
+ log_time operator+=(const log_time& T);
+ log_time operator+(const log_time& T) const {
+ log_time local(*this);
+ return local += T;
+ }
+#endif
+
+ uint64_t nsec() const {
+ return static_cast<uint64_t>(tv_sec) * NS_PER_SEC + tv_nsec;
+ }
+ uint64_t usec() const {
+ return static_cast<uint64_t>(tv_sec) * US_PER_SEC +
+ tv_nsec / (NS_PER_SEC / US_PER_SEC);
+ }
+ uint64_t msec() const {
+ return static_cast<uint64_t>(tv_sec) * MS_PER_SEC +
+ tv_nsec / (NS_PER_SEC / MS_PER_SEC);
+ }
+
+#ifdef _SYSTEM_CORE_INCLUDE_PRIVATE_ANDROID_LOGGER_H_
+ static const char default_format[];
+
+ /* Add %#q for the fraction of a second to the standard library functions */
+ char* strptime(const char* s, const char* format = default_format);
+#endif
+} __attribute__((__packed__));
+
+#else /* __cplusplus */
+
+typedef struct log_time {
+ uint32_t tv_sec;
+ uint32_t tv_nsec;
+} __attribute__((__packed__)) log_time;
+
+#endif /* __cplusplus */
+
+#endif /* __struct_log_time_defined */
+
+#endif /* _LIBS_LOG_LOG_TIME_H */
diff --git a/android/android-emugl/guest/log/log_transport.h b/android/android-emugl/guest/log/log_transport.h
new file mode 100644
index 0000000000..80b30db452
--- /dev/null
+++ b/android/android-emugl/guest/log/log_transport.h
@@ -0,0 +1,37 @@
+/*
+**
+** Copyright 2017, The Android Open Source Project
+**
+** This file is dual licensed. It may be redistributed and/or modified
+** under the terms of the Apache 2.0 License OR version 2 of the GNU
+** General Public License.
+*/
+
+#ifndef _LIBS_LOG_TRANSPORT_H
+#define _LIBS_LOG_TRANSPORT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Logging transports, bit mask to select features. Function returns selection.
+ */
+/* clang-format off */
+#define LOGGER_DEFAULT 0x00
+#define LOGGER_LOGD 0x01
+#define LOGGER_KERNEL 0x02 /* Reserved/Deprecated */
+#define LOGGER_NULL 0x04 /* Does not release resources of other selections */
+#define LOGGER_LOCAL 0x08 /* logs sent to local memory */
+#define LOGGER_STDERR 0x10 /* logs sent to stderr */
+/* clang-format on */
+
+/* Both return the selected transport flag mask, or negative errno */
+int android_set_log_transport(int transport_flag);
+int android_get_log_transport();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBS_LOG_TRANSPORT_H */
diff --git a/android/android-emugl/guest/log/logd.h b/android/android-emugl/guest/log/logd.h
new file mode 100644
index 0000000000..77400cad3d
--- /dev/null
+++ b/android/android-emugl/guest/log/logd.h
@@ -0,0 +1,5 @@
+#ifndef _LIBS_LOG_LOGD_H
+#define _LIBS_LOG_LOGD_H
+#include <log/log.h>
+#warning "Deprecated: do not include log/logd.h, use log/log.h instead"
+#endif /*_LIBS_LOG_LOGD_H*/
diff --git a/android/android-emugl/guest/log/logger.h b/android/android-emugl/guest/log/logger.h
new file mode 100644
index 0000000000..1bf2d17460
--- /dev/null
+++ b/android/android-emugl/guest/log/logger.h
@@ -0,0 +1,5 @@
+#ifndef _LIBS_LOG_LOGGER_H
+#define _LIBS_LOG_LOGGER_H
+#include <log/log.h>
+#warning "Deprecated: do not include log/logger.h, use log/log.h instead"
+#endif /*_LIBS_LOG_LOGGER_H*/
diff --git a/android/android-emugl/guest/log/logprint.h b/android/android-emugl/guest/log/logprint.h
new file mode 100644
index 0000000000..ca58bc7e01
--- /dev/null
+++ b/android/android-emugl/guest/log/logprint.h
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LOGPRINT_H
+#define _LOGPRINT_H
+
+#include <pthread.h>
+
+#include <android/log.h>
+#include <log/event_tag_map.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+ /* Verbs */
+ FORMAT_OFF = 0,
+ FORMAT_BRIEF,
+ FORMAT_PROCESS,
+ FORMAT_TAG,
+ FORMAT_THREAD,
+ FORMAT_RAW,
+ FORMAT_TIME,
+ FORMAT_THREADTIME,
+ FORMAT_LONG,
+ /* Adverbs. The following are modifiers to above format verbs */
+ FORMAT_MODIFIER_COLOR, /* converts priority to color */
+ FORMAT_MODIFIER_TIME_USEC, /* switches from msec to usec time precision */
+ FORMAT_MODIFIER_PRINTABLE, /* converts non-printable to printable escapes */
+ FORMAT_MODIFIER_YEAR, /* Adds year to date */
+ FORMAT_MODIFIER_ZONE, /* Adds zone to date, + UTC */
+ FORMAT_MODIFIER_EPOCH, /* Print time as seconds since Jan 1 1970 */
+ FORMAT_MODIFIER_MONOTONIC, /* Print cpu time as seconds since start */
+ FORMAT_MODIFIER_UID, /* Adds uid */
+ FORMAT_MODIFIER_DESCRIPT, /* Adds descriptive */
+ /* private, undocumented */
+ FORMAT_MODIFIER_TIME_NSEC, /* switches from msec to nsec time precision */
+} AndroidLogPrintFormat;
+
+typedef struct AndroidLogFormat_t AndroidLogFormat;
+
+typedef struct AndroidLogEntry_t {
+ time_t tv_sec;
+ long tv_nsec;
+ android_LogPriority priority;
+ int32_t uid;
+ int32_t pid;
+ int32_t tid;
+ const char* tag;
+ size_t tagLen;
+ size_t messageLen;
+ const char* message;
+} AndroidLogEntry;
+
+AndroidLogFormat* android_log_format_new();
+
+void android_log_format_free(AndroidLogFormat* p_format);
+
+/* currently returns 0 if format is a modifier, 1 if not */
+int android_log_setPrintFormat(AndroidLogFormat* p_format,
+ AndroidLogPrintFormat format);
+
+/**
+ * Returns FORMAT_OFF on invalid string
+ */
+AndroidLogPrintFormat android_log_formatFromString(const char* s);
+
+/**
+ * filterExpression: a single filter expression
+ * eg "AT:d"
+ *
+ * returns 0 on success and -1 on invalid expression
+ *
+ * Assumes single threaded execution
+ *
+ */
+
+int android_log_addFilterRule(AndroidLogFormat* p_format,
+ const char* filterExpression);
+
+/**
+ * filterString: a whitespace-separated set of filter expressions
+ * eg "AT:d *:i"
+ *
+ * returns 0 on success and -1 on invalid expression
+ *
+ * Assumes single threaded execution
+ *
+ */
+
+int android_log_addFilterString(AndroidLogFormat* p_format,
+ const char* filterString);
+
+/**
+ * returns 1 if this log line should be printed based on its priority
+ * and tag, and 0 if it should not
+ */
+int android_log_shouldPrintLine(AndroidLogFormat* p_format, const char* tag,
+ android_LogPriority pri);
+
+/**
+ * Splits a wire-format buffer into an AndroidLogEntry
+ * entry allocated by caller. Pointers will point directly into buf
+ *
+ * Returns 0 on success and -1 on invalid wire format (entry will be
+ * in unspecified state)
+ */
+int android_log_processLogBuffer(struct logger_entry* buf,
+ AndroidLogEntry* entry);
+
+/**
+ * Like android_log_processLogBuffer, but for binary logs.
+ *
+ * If "map" is non-NULL, it will be used to convert the log tag number
+ * into a string.
+ */
+int android_log_processBinaryLogBuffer(struct logger_entry* buf,
+ AndroidLogEntry* entry,
+ const EventTagMap* map, char* messageBuf,
+ int messageBufLen);
+
+/**
+ * Formats a log message into a buffer
+ *
+ * Uses defaultBuffer if it can, otherwise malloc()'s a new buffer
+ * If return value != defaultBuffer, caller must call free()
+ * Returns NULL on malloc error
+ */
+
+char* android_log_formatLogLine(AndroidLogFormat* p_format, char* defaultBuffer,
+ size_t defaultBufferSize,
+ const AndroidLogEntry* p_line,
+ size_t* p_outLength);
+
+/**
+ * Either print or do not print log line, based on filter
+ *
+ * Assumes single threaded execution
+ *
+ */
+int android_log_printLogLine(AndroidLogFormat* p_format, int fd,
+ const AndroidLogEntry* entry);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /*_LOGPRINT_H*/
diff --git a/android/android-emugl/guest/log/uio.h b/android/android-emugl/guest/log/uio.h
new file mode 100644
index 0000000000..a492baefe6
--- /dev/null
+++ b/android/android-emugl/guest/log/uio.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2007-2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_CUTILS_UIO_H
+#define _LIBS_CUTILS_UIO_H
+
+#if !defined(_WIN32)
+
+#include <sys/uio.h>
+
+#else
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//
+// Implementation of sys/uio.h for Win32.
+//
+
+#include <stddef.h>
+
+struct iovec {
+ void* iov_base;
+ size_t iov_len;
+};
+
+extern int readv(int fd, struct iovec* vecs, int count);
+extern int writev(int fd, const struct iovec* vecs, int count);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif /* _LIBS_UTILS_UIO_H */
diff --git a/android/android-emugl/guest/nativebase/nativebase.h b/android/android-emugl/guest/nativebase/nativebase.h
new file mode 100644
index 0000000000..87a7f8cb38
--- /dev/null
+++ b/android/android-emugl/guest/nativebase/nativebase.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+#include <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+#include <sys/cdefs.h>
+#include <system/graphics-base.h>
+#include <cutils/native_handle.h>
+__BEGIN_DECLS
+#ifdef __cplusplus
+#define ANDROID_NATIVE_UNSIGNED_CAST(x) static_cast<unsigned int>(x)
+#else
+#define ANDROID_NATIVE_UNSIGNED_CAST(x) ((unsigned int)(x))
+#endif
+#define ANDROID_NATIVE_MAKE_CONSTANT(a,b,c,d) \
+ ((ANDROID_NATIVE_UNSIGNED_CAST(a) << 24) | \
+ (ANDROID_NATIVE_UNSIGNED_CAST(b) << 16) | \
+ (ANDROID_NATIVE_UNSIGNED_CAST(c) << 8) | \
+ (ANDROID_NATIVE_UNSIGNED_CAST(d)))
+#define ANDROID_NATIVE_BUFFER_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_','b','f','r')
+typedef struct android_native_base_t
+{
+ /* a magic value defined by the actual EGL native type */
+ int magic;
+ /* the sizeof() of the actual EGL native type */
+ int version;
+ void* reserved[4];
+ /* reference-counting interface */
+ void (*incRef)(struct android_native_base_t* base);
+ void (*decRef)(struct android_native_base_t* base);
+} android_native_base_t;
+typedef struct android_native_rect_t
+{
+ int32_t left;
+ int32_t top;
+ int32_t right;
+ int32_t bottom;
+} android_native_rect_t;
+typedef struct ANativeWindowBuffer
+{
+#ifdef __cplusplus
+ ANativeWindowBuffer() {
+ common.magic = ANDROID_NATIVE_BUFFER_MAGIC;
+ common.version = sizeof(ANativeWindowBuffer);
+ memset(common.reserved, 0, sizeof(common.reserved));
+ }
+ // Implement the methods that sp<ANativeWindowBuffer> expects so that it
+ // can be used to automatically refcount ANativeWindowBuffer's.
+ void incStrong(const void* /*id*/) const {
+ common.incRef(const_cast<android_native_base_t*>(&common));
+ }
+ void decStrong(const void* /*id*/) const {
+ common.decRef(const_cast<android_native_base_t*>(&common));
+ }
+#endif
+ struct android_native_base_t common;
+ int width;
+ int height;
+ int stride;
+ int format;
+ int usage_deprecated;
+ uintptr_t layerCount;
+ void* reserved[1];
+ const native_handle_t* handle;
+ uint64_t usage;
+ // we needed extra space for storing the 64-bits usage flags
+ // the number of slots to use from reserved_proc depends on the
+ // architecture.
+ void* reserved_proc[8 - (sizeof(uint64_t) / sizeof(void*))];
+} ANativeWindowBuffer_t;
+typedef struct ANativeWindowBuffer ANativeWindowBuffer;
+// Old typedef for backwards compatibility.
+typedef ANativeWindowBuffer_t android_native_buffer_t;
+__END_DECLS
diff --git a/android/android-emugl/guest/sys/system_properties.h b/android/android-emugl/guest/sys/system_properties.h
new file mode 100644
index 0000000000..5c7d254dd2
--- /dev/null
+++ b/android/android-emugl/guest/sys/system_properties.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _INCLUDE_SYS_SYSTEM_PROPERTIES_H
+#define _INCLUDE_SYS_SYSTEM_PROPERTIES_H
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+typedef struct prop_info prop_info;
+#define PROP_NAME_MAX 32
+#define PROP_VALUE_MAX 92
+/* Look up a system property by name, copying its value and a
+** \0 terminator to the provided pointer. The total bytes
+** copied will be no greater than PROP_VALUE_MAX. Returns
+** the string length of the value. A property that is not
+** defined is identical to a property with a length 0 value.
+*/
+int __system_property_get(const char *name, char *value);
+/* Return a pointer to the system property named name, if it
+** exists, or NULL if there is no such property. Use
+** __system_property_read() to obtain the string value from
+** the returned prop_info pointer.
+**
+** It is safe to cache the prop_info pointer to avoid future
+** lookups. These returned pointers will remain valid for
+** the lifetime of the system.
+*/
+const prop_info *__system_property_find(const char *name);
+/* Read the value of a system property. Returns the length
+** of the value. Copies the value and \0 terminator into
+** the provided value pointer. Total length (including
+** terminator) will be no greater that PROP_VALUE_MAX.
+**
+** If name is nonzero, up to PROP_NAME_MAX bytes will be
+** copied into the provided name pointer. The name will
+** be \0 terminated.
+*/
+int __system_property_read(const prop_info *pi, char *name, char *value);
+/* Return a prop_info for the nth system property, or NULL if
+** there is no nth property. Use __system_property_read() to
+** read the value of this property.
+**
+** This method is for inspecting and debugging the property
+** system. Please use __system_property_find() instead.
+**
+** Order of results may change from call to call. This is
+** not a bug.
+*/
+const prop_info *__system_property_find_nth(unsigned n);
+__END_DECLS
+#endif
diff --git a/android/android-emugl/guest/system/camera.h b/android/android-emugl/guest/system/camera.h
new file mode 100644
index 0000000000..5d0873ac42
--- /dev/null
+++ b/android/android-emugl/guest/system/camera.h
@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SYSTEM_CORE_INCLUDE_ANDROID_CAMERA_H
+#define SYSTEM_CORE_INCLUDE_ANDROID_CAMERA_H
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <cutils/native_handle.h>
+#include <hardware/hardware.h>
+#include <hardware/gralloc.h>
+
+__BEGIN_DECLS
+
+/**
+ * A set of bit masks for specifying how the received preview frames are
+ * handled before the previewCallback() call.
+ *
+ * The least significant 3 bits of an "int" value are used for this purpose:
+ *
+ * ..... 0 0 0
+ * ^ ^ ^
+ * | | |---------> determine whether the callback is enabled or not
+ * | |-----------> determine whether the callback is one-shot or not
+ * |-------------> determine whether the frame is copied out or not
+ *
+ * WARNING: When a frame is sent directly without copying, it is the frame
+ * receiver's responsiblity to make sure that the frame data won't get
+ * corrupted by subsequent preview frames filled by the camera. This flag is
+ * recommended only when copying out data brings significant performance price
+ * and the handling/processing of the received frame data is always faster than
+ * the preview frame rate so that data corruption won't occur.
+ *
+ * For instance,
+ * 1. 0x00 disables the callback. In this case, copy out and one shot bits
+ * are ignored.
+ * 2. 0x01 enables a callback without copying out the received frames. A
+ * typical use case is the Camcorder application to avoid making costly
+ * frame copies.
+ * 3. 0x05 is enabling a callback with frame copied out repeatedly. A typical
+ * use case is the Camera application.
+ * 4. 0x07 is enabling a callback with frame copied out only once. A typical
+ * use case is the Barcode scanner application.
+ */
+
+enum {
+ CAMERA_FRAME_CALLBACK_FLAG_ENABLE_MASK = 0x01,
+ CAMERA_FRAME_CALLBACK_FLAG_ONE_SHOT_MASK = 0x02,
+ CAMERA_FRAME_CALLBACK_FLAG_COPY_OUT_MASK = 0x04,
+ /** Typical use cases */
+ CAMERA_FRAME_CALLBACK_FLAG_NOOP = 0x00,
+ CAMERA_FRAME_CALLBACK_FLAG_CAMCORDER = 0x01,
+ CAMERA_FRAME_CALLBACK_FLAG_CAMERA = 0x05,
+ CAMERA_FRAME_CALLBACK_FLAG_BARCODE_SCANNER = 0x07
+};
+
+/** msgType in notifyCallback and dataCallback functions */
+enum {
+ CAMERA_MSG_ERROR = 0x0001, // notifyCallback
+ CAMERA_MSG_SHUTTER = 0x0002, // notifyCallback
+ CAMERA_MSG_FOCUS = 0x0004, // notifyCallback
+ CAMERA_MSG_ZOOM = 0x0008, // notifyCallback
+ CAMERA_MSG_PREVIEW_FRAME = 0x0010, // dataCallback
+ CAMERA_MSG_VIDEO_FRAME = 0x0020, // data_timestamp_callback
+ CAMERA_MSG_POSTVIEW_FRAME = 0x0040, // dataCallback
+ CAMERA_MSG_RAW_IMAGE = 0x0080, // dataCallback
+ CAMERA_MSG_COMPRESSED_IMAGE = 0x0100, // dataCallback
+ CAMERA_MSG_RAW_IMAGE_NOTIFY = 0x0200, // dataCallback
+ // Preview frame metadata. This can be combined with
+ // CAMERA_MSG_PREVIEW_FRAME in dataCallback. For example, the apps can
+ // request FRAME and METADATA. Or the apps can request only FRAME or only
+ // METADATA.
+ CAMERA_MSG_PREVIEW_METADATA = 0x0400, // dataCallback
+ // Notify on autofocus start and stop. This is useful in continuous
+ // autofocus - FOCUS_MODE_CONTINUOUS_VIDEO and FOCUS_MODE_CONTINUOUS_PICTURE.
+ CAMERA_MSG_FOCUS_MOVE = 0x0800, // notifyCallback
+ CAMERA_MSG_ALL_MSGS = 0xFFFF
+};
+
+/** cmdType in sendCommand functions */
+enum {
+ CAMERA_CMD_START_SMOOTH_ZOOM = 1,
+ CAMERA_CMD_STOP_SMOOTH_ZOOM = 2,
+
+ /**
+ * Set the clockwise rotation of preview display (setPreviewDisplay) in
+ * degrees. This affects the preview frames and the picture displayed after
+ * snapshot. This method is useful for portrait mode applications. Note
+ * that preview display of front-facing cameras is flipped horizontally
+ * before the rotation, that is, the image is reflected along the central
+ * vertical axis of the camera sensor. So the users can see themselves as
+ * looking into a mirror.
+ *
+ * This does not affect the order of byte array of
+ * CAMERA_MSG_PREVIEW_FRAME, CAMERA_MSG_VIDEO_FRAME,
+ * CAMERA_MSG_POSTVIEW_FRAME, CAMERA_MSG_RAW_IMAGE, or
+ * CAMERA_MSG_COMPRESSED_IMAGE. This is allowed to be set during preview
+ * since API level 14.
+ */
+ CAMERA_CMD_SET_DISPLAY_ORIENTATION = 3,
+
+ /**
+ * cmdType to disable/enable shutter sound. In sendCommand passing arg1 =
+ * 0 will disable, while passing arg1 = 1 will enable the shutter sound.
+ */
+ CAMERA_CMD_ENABLE_SHUTTER_SOUND = 4,
+
+ /* cmdType to play recording sound */
+ CAMERA_CMD_PLAY_RECORDING_SOUND = 5,
+
+ /**
+ * Start the face detection. This should be called after preview is started.
+ * The camera will notify the listener of CAMERA_MSG_FACE and the detected
+ * faces in the preview frame. The detected faces may be the same as the
+ * previous ones. Apps should call CAMERA_CMD_STOP_FACE_DETECTION to stop
+ * the face detection. This method is supported if CameraParameters
+ * KEY_MAX_NUM_HW_DETECTED_FACES or KEY_MAX_NUM_SW_DETECTED_FACES is
+ * bigger than 0. Hardware and software face detection should not be running
+ * at the same time. If the face detection has started, apps should not send
+ * this again.
+ *
+ * In hardware face detection mode, CameraParameters KEY_WHITE_BALANCE,
+ * KEY_FOCUS_AREAS and KEY_METERING_AREAS have no effect.
+ *
+ * arg1 is the face detection type. It can be CAMERA_FACE_DETECTION_HW or
+ * CAMERA_FACE_DETECTION_SW. If the type of face detection requested is not
+ * supported, the HAL must return BAD_VALUE.
+ */
+ CAMERA_CMD_START_FACE_DETECTION = 6,
+
+ /**
+ * Stop the face detection.
+ */
+ CAMERA_CMD_STOP_FACE_DETECTION = 7,
+
+ /**
+ * Enable/disable focus move callback (CAMERA_MSG_FOCUS_MOVE). Passing
+ * arg1 = 0 will disable, while passing arg1 = 1 will enable the callback.
+ */
+ CAMERA_CMD_ENABLE_FOCUS_MOVE_MSG = 8,
+
+ /**
+ * Ping camera service to see if camera hardware is released.
+ *
+ * When any camera method returns error, the client can use ping command
+ * to see if the camera has been taken away by other clients. If the result
+ * is NO_ERROR, it means the camera hardware is not released. If the result
+ * is not NO_ERROR, the camera has been released and the existing client
+ * can silently finish itself or show a dialog.
+ */
+ CAMERA_CMD_PING = 9,
+
+ /**
+ * Configure the number of video buffers used for recording. The intended
+ * video buffer count for recording is passed as arg1, which must be
+ * greater than 0. This command must be sent before recording is started.
+ * This command returns INVALID_OPERATION error if it is sent after video
+ * recording is started, or the command is not supported at all. This
+ * command also returns a BAD_VALUE error if the intended video buffer
+ * count is non-positive or too big to be realized.
+ */
+ CAMERA_CMD_SET_VIDEO_BUFFER_COUNT = 10,
+
+ /**
+ * Configure an explicit format to use for video recording metadata mode.
+ * This can be used to switch the format from the
+ * default IMPLEMENTATION_DEFINED gralloc format to some other
+ * device-supported format, and the default dataspace from the BT_709 color
+ * space to some other device-supported dataspace. arg1 is the HAL pixel
+ * format, and arg2 is the HAL dataSpace. This command returns
+ * INVALID_OPERATION error if it is sent after video recording is started,
+ * or the command is not supported at all.
+ *
+ * If the gralloc format is set to a format other than
+ * IMPLEMENTATION_DEFINED, then HALv3 devices will use gralloc usage flags
+ * of SW_READ_OFTEN.
+ */
+ CAMERA_CMD_SET_VIDEO_FORMAT = 11
+};
+
+/** camera fatal errors */
+enum {
+ CAMERA_ERROR_UNKNOWN = 1,
+ /**
+ * Camera was released because another client has connected to the camera.
+ * The original client should call Camera::disconnect immediately after
+ * getting this notification. Otherwise, the camera will be released by
+ * camera service in a short time. The client should not call any method
+ * (except disconnect and sending CAMERA_CMD_PING) after getting this.
+ */
+ CAMERA_ERROR_RELEASED = 2,
+ CAMERA_ERROR_SERVER_DIED = 100
+};
+
+enum {
+ /** The facing of the camera is opposite to that of the screen. */
+ CAMERA_FACING_BACK = 0,
+ /** The facing of the camera is the same as that of the screen. */
+ CAMERA_FACING_FRONT = 1,
+ /**
+ * The facing of the camera is not fixed relative to the screen.
+ * The cameras with this facing are external cameras, e.g. USB cameras.
+ */
+ CAMERA_FACING_EXTERNAL = 2
+};
+
+enum {
+ /** Hardware face detection. It does not use much CPU. */
+ CAMERA_FACE_DETECTION_HW = 0,
+ /**
+ * Software face detection. It uses some CPU. Applications must use
+ * Camera.setPreviewTexture for preview in this mode.
+ */
+ CAMERA_FACE_DETECTION_SW = 1
+};
+
+/**
+ * The information of a face from camera face detection.
+ */
+typedef struct camera_face {
+ /**
+ * Bounds of the face [left, top, right, bottom]. (-1000, -1000) represents
+ * the top-left of the camera field of view, and (1000, 1000) represents the
+ * bottom-right of the field of view. The width and height cannot be 0 or
+ * negative. This is supported by both hardware and software face detection.
+ *
+ * The direction is relative to the sensor orientation, that is, what the
+ * sensor sees. The direction is not affected by the rotation or mirroring
+ * of CAMERA_CMD_SET_DISPLAY_ORIENTATION.
+ */
+ int32_t rect[4];
+
+ /**
+ * The confidence level of the face. The range is 1 to 100. 100 is the
+ * highest confidence. This is supported by both hardware and software
+ * face detection.
+ */
+ int32_t score;
+
+ /**
+ * An unique id per face while the face is visible to the tracker. If
+ * the face leaves the field-of-view and comes back, it will get a new
+ * id. If the value is 0, id is not supported.
+ */
+ int32_t id;
+
+ /**
+ * The coordinates of the center of the left eye. The range is -1000 to
+ * 1000. -2000, -2000 if this is not supported.
+ */
+ int32_t left_eye[2];
+
+ /**
+ * The coordinates of the center of the right eye. The range is -1000 to
+ * 1000. -2000, -2000 if this is not supported.
+ */
+ int32_t right_eye[2];
+
+ /**
+ * The coordinates of the center of the mouth. The range is -1000 to 1000.
+ * -2000, -2000 if this is not supported.
+ */
+ int32_t mouth[2];
+
+} camera_face_t;
+
+/**
+ * The metadata of the frame data.
+ */
+typedef struct camera_frame_metadata {
+ /**
+ * The number of detected faces in the frame.
+ */
+ int32_t number_of_faces;
+
+ /**
+ * An array of the detected faces. The length is number_of_faces.
+ */
+ camera_face_t *faces;
+} camera_frame_metadata_t;
+
+__END_DECLS
+
+#endif /* SYSTEM_CORE_INCLUDE_ANDROID_CAMERA_H */
diff --git a/android/android-emugl/guest/system/graphics-base.h b/android/android-emugl/guest/system/graphics-base.h
new file mode 100644
index 0000000000..2a44fafdf3
--- /dev/null
+++ b/android/android-emugl/guest/system/graphics-base.h
@@ -0,0 +1,141 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+// Source: android.hardware.graphics.common@1.0
+// Root: android.hardware:hardware/interfaces
+
+#ifndef HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMMON_V1_0_EXPORTED_CONSTANTS_H_
+#define HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMMON_V1_0_EXPORTED_CONSTANTS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+ HAL_PIXEL_FORMAT_RGBA_8888 = 1,
+ HAL_PIXEL_FORMAT_RGBX_8888 = 2,
+ HAL_PIXEL_FORMAT_RGB_888 = 3,
+ HAL_PIXEL_FORMAT_RGB_565 = 4,
+ HAL_PIXEL_FORMAT_BGRA_8888 = 5,
+ HAL_PIXEL_FORMAT_RGBA_1010102 = 43, // 0x2B
+ HAL_PIXEL_FORMAT_RGBA_FP16 = 22, // 0x16
+ HAL_PIXEL_FORMAT_YV12 = 842094169, // 0x32315659
+ HAL_PIXEL_FORMAT_Y8 = 538982489, // 0x20203859
+ HAL_PIXEL_FORMAT_Y16 = 540422489, // 0x20363159
+ HAL_PIXEL_FORMAT_RAW16 = 32, // 0x20
+ HAL_PIXEL_FORMAT_RAW10 = 37, // 0x25
+ HAL_PIXEL_FORMAT_RAW12 = 38, // 0x26
+ HAL_PIXEL_FORMAT_RAW_OPAQUE = 36, // 0x24
+ HAL_PIXEL_FORMAT_BLOB = 33, // 0x21
+ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED = 34, // 0x22
+ HAL_PIXEL_FORMAT_YCBCR_420_888 = 35, // 0x23
+ HAL_PIXEL_FORMAT_YCBCR_422_888 = 39, // 0x27
+ HAL_PIXEL_FORMAT_YCBCR_444_888 = 40, // 0x28
+ HAL_PIXEL_FORMAT_FLEX_RGB_888 = 41, // 0x29
+ HAL_PIXEL_FORMAT_FLEX_RGBA_8888 = 42, // 0x2A
+ HAL_PIXEL_FORMAT_YCBCR_422_SP = 16, // 0x10
+ HAL_PIXEL_FORMAT_YCRCB_420_SP = 17, // 0x11
+ HAL_PIXEL_FORMAT_YCBCR_422_I = 20, // 0x14
+ HAL_PIXEL_FORMAT_JPEG = 256, // 0x100
+} android_pixel_format_t;
+
+typedef enum {
+ HAL_TRANSFORM_FLIP_H = 1, // 0x01
+ HAL_TRANSFORM_FLIP_V = 2, // 0x02
+ HAL_TRANSFORM_ROT_90 = 4, // 0x04
+ HAL_TRANSFORM_ROT_180 = 3, // 0x03
+ HAL_TRANSFORM_ROT_270 = 7, // 0x07
+} android_transform_t;
+
+typedef enum {
+ HAL_DATASPACE_UNKNOWN = 0, // 0x0
+ HAL_DATASPACE_ARBITRARY = 1, // 0x1
+ HAL_DATASPACE_STANDARD_SHIFT = 16,
+ HAL_DATASPACE_STANDARD_MASK = 4128768, // (63 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_UNSPECIFIED = 0, // (0 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT709 = 65536, // (1 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT601_625 = 131072, // (2 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED = 196608, // (3 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT601_525 = 262144, // (4 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED = 327680, // (5 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT2020 = 393216, // (6 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE = 458752, // (7 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_BT470M = 524288, // (8 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_FILM = 589824, // (9 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_DCI_P3 = 655360, // (10 << STANDARD_SHIFT)
+ HAL_DATASPACE_STANDARD_ADOBE_RGB = 720896, // (11 << STANDARD_SHIFT)
+ HAL_DATASPACE_TRANSFER_SHIFT = 22,
+ HAL_DATASPACE_TRANSFER_MASK = 130023424, // (31 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_UNSPECIFIED = 0, // (0 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_LINEAR = 4194304, // (1 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_SRGB = 8388608, // (2 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_SMPTE_170M = 12582912, // (3 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_GAMMA2_2 = 16777216, // (4 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_GAMMA2_6 = 20971520, // (5 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_GAMMA2_8 = 25165824, // (6 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_ST2084 = 29360128, // (7 << TRANSFER_SHIFT)
+ HAL_DATASPACE_TRANSFER_HLG = 33554432, // (8 << TRANSFER_SHIFT)
+ HAL_DATASPACE_RANGE_SHIFT = 27,
+ HAL_DATASPACE_RANGE_MASK = 939524096, // (7 << RANGE_SHIFT)
+ HAL_DATASPACE_RANGE_UNSPECIFIED = 0, // (0 << RANGE_SHIFT)
+ HAL_DATASPACE_RANGE_FULL = 134217728, // (1 << RANGE_SHIFT)
+ HAL_DATASPACE_RANGE_LIMITED = 268435456, // (2 << RANGE_SHIFT)
+ HAL_DATASPACE_RANGE_EXTENDED = 402653184, // (3 << RANGE_SHIFT)
+ HAL_DATASPACE_SRGB_LINEAR = 512, // 0x200
+ HAL_DATASPACE_V0_SRGB_LINEAR = 138477568, // ((STANDARD_BT709 | TRANSFER_LINEAR) | RANGE_FULL)
+ HAL_DATASPACE_V0_SCRGB_LINEAR = 406913024, // ((STANDARD_BT709 | TRANSFER_LINEAR) | RANGE_EXTENDED)
+ HAL_DATASPACE_SRGB = 513, // 0x201
+ HAL_DATASPACE_V0_SRGB = 142671872, // ((STANDARD_BT709 | TRANSFER_SRGB) | RANGE_FULL)
+ HAL_DATASPACE_V0_SCRGB = 411107328, // ((STANDARD_BT709 | TRANSFER_SRGB) | RANGE_EXTENDED)
+ HAL_DATASPACE_JFIF = 257, // 0x101
+ HAL_DATASPACE_V0_JFIF = 146931712, // ((STANDARD_BT601_625 | TRANSFER_SMPTE_170M) | RANGE_FULL)
+ HAL_DATASPACE_BT601_625 = 258, // 0x102
+ HAL_DATASPACE_V0_BT601_625 = 281149440, // ((STANDARD_BT601_625 | TRANSFER_SMPTE_170M) | RANGE_LIMITED)
+ HAL_DATASPACE_BT601_525 = 259, // 0x103
+ HAL_DATASPACE_V0_BT601_525 = 281280512, // ((STANDARD_BT601_525 | TRANSFER_SMPTE_170M) | RANGE_LIMITED)
+ HAL_DATASPACE_BT709 = 260, // 0x104
+ HAL_DATASPACE_V0_BT709 = 281083904, // ((STANDARD_BT709 | TRANSFER_SMPTE_170M) | RANGE_LIMITED)
+ HAL_DATASPACE_DCI_P3_LINEAR = 139067392, // ((STANDARD_DCI_P3 | TRANSFER_LINEAR) | RANGE_FULL)
+ HAL_DATASPACE_DCI_P3 = 155844608, // ((STANDARD_DCI_P3 | TRANSFER_GAMMA2_6) | RANGE_FULL)
+ HAL_DATASPACE_DISPLAY_P3_LINEAR = 139067392, // ((STANDARD_DCI_P3 | TRANSFER_LINEAR) | RANGE_FULL)
+ HAL_DATASPACE_DISPLAY_P3 = 143261696, // ((STANDARD_DCI_P3 | TRANSFER_SRGB) | RANGE_FULL)
+ HAL_DATASPACE_ADOBE_RGB = 151715840, // ((STANDARD_ADOBE_RGB | TRANSFER_GAMMA2_2) | RANGE_FULL)
+ HAL_DATASPACE_BT2020_LINEAR = 138805248, // ((STANDARD_BT2020 | TRANSFER_LINEAR) | RANGE_FULL)
+ HAL_DATASPACE_BT2020 = 147193856, // ((STANDARD_BT2020 | TRANSFER_SMPTE_170M) | RANGE_FULL)
+ HAL_DATASPACE_BT2020_PQ = 163971072, // ((STANDARD_BT2020 | TRANSFER_ST2084) | RANGE_FULL)
+ HAL_DATASPACE_DEPTH = 4096, // 0x1000
+ HAL_DATASPACE_SENSOR = 4097, // 0x1001
+} android_dataspace_t;
+
+typedef enum {
+ HAL_COLOR_MODE_NATIVE = 0,
+ HAL_COLOR_MODE_STANDARD_BT601_625 = 1,
+ HAL_COLOR_MODE_STANDARD_BT601_625_UNADJUSTED = 2,
+ HAL_COLOR_MODE_STANDARD_BT601_525 = 3,
+ HAL_COLOR_MODE_STANDARD_BT601_525_UNADJUSTED = 4,
+ HAL_COLOR_MODE_STANDARD_BT709 = 5,
+ HAL_COLOR_MODE_DCI_P3 = 6,
+ HAL_COLOR_MODE_SRGB = 7,
+ HAL_COLOR_MODE_ADOBE_RGB = 8,
+ HAL_COLOR_MODE_DISPLAY_P3 = 9,
+} android_color_mode_t;
+
+typedef enum {
+ HAL_COLOR_TRANSFORM_IDENTITY = 0,
+ HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX = 1,
+ HAL_COLOR_TRANSFORM_VALUE_INVERSE = 2,
+ HAL_COLOR_TRANSFORM_GRAYSCALE = 3,
+ HAL_COLOR_TRANSFORM_CORRECT_PROTANOPIA = 4,
+ HAL_COLOR_TRANSFORM_CORRECT_DEUTERANOPIA = 5,
+ HAL_COLOR_TRANSFORM_CORRECT_TRITANOPIA = 6,
+} android_color_transform_t;
+
+typedef enum {
+ HAL_HDR_DOLBY_VISION = 1,
+ HAL_HDR_HDR10 = 2,
+ HAL_HDR_HLG = 3,
+} android_hdr_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HIDL_GENERATED_ANDROID_HARDWARE_GRAPHICS_COMMON_V1_0_EXPORTED_CONSTANTS_H_
diff --git a/android/android-emugl/guest/system/graphics.h b/android/android-emugl/guest/system/graphics.h
new file mode 100644
index 0000000000..1a99187979
--- /dev/null
+++ b/android/android-emugl/guest/system/graphics.h
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef SYSTEM_CORE_INCLUDE_ANDROID_GRAPHICS_H
+#define SYSTEM_CORE_INCLUDE_ANDROID_GRAPHICS_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+/*
+ * Some of the enums are now defined in HIDL in hardware/interfaces and are
+ * generated.
+ */
+#include "graphics-base.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* for compatibility */
+#define HAL_PIXEL_FORMAT_YCbCr_420_888 HAL_PIXEL_FORMAT_YCBCR_420_888
+#define HAL_PIXEL_FORMAT_YCbCr_422_888 HAL_PIXEL_FORMAT_YCBCR_422_888
+#define HAL_PIXEL_FORMAT_YCbCr_444_888 HAL_PIXEL_FORMAT_YCBCR_444_888
+#define HAL_PIXEL_FORMAT_YCbCr_422_SP HAL_PIXEL_FORMAT_YCBCR_422_SP
+#define HAL_PIXEL_FORMAT_YCrCb_420_SP HAL_PIXEL_FORMAT_YCRCB_420_SP
+#define HAL_PIXEL_FORMAT_YCbCr_422_I HAL_PIXEL_FORMAT_YCBCR_422_I
+typedef android_pixel_format_t android_pixel_format;
+typedef android_transform_t android_transform;
+typedef android_dataspace_t android_dataspace;
+typedef android_color_mode_t android_color_mode;
+typedef android_color_transform_t android_color_transform;
+typedef android_hdr_t android_hdr;
+
+/*
+ * If the HAL needs to create service threads to handle graphics related
+ * tasks, these threads need to run at HAL_PRIORITY_URGENT_DISPLAY priority
+ * if they can block the main rendering thread in any way.
+ *
+ * the priority of the current thread can be set with:
+ *
+ * #include <sys/resource.h>
+ * setpriority(PRIO_PROCESS, 0, HAL_PRIORITY_URGENT_DISPLAY);
+ *
+ */
+
+#define HAL_PRIORITY_URGENT_DISPLAY (-8)
+
+/*
+ * Structure for describing YCbCr formats for consumption by applications.
+ * This is used with HAL_PIXEL_FORMAT_YCbCr_*_888.
+ *
+ * Buffer chroma subsampling is defined in the format.
+ * e.g. HAL_PIXEL_FORMAT_YCbCr_420_888 has subsampling 4:2:0.
+ *
+ * Buffers must have a 8 bit depth.
+ *
+ * y, cb, and cr point to the first byte of their respective planes.
+ *
+ * Stride describes the distance in bytes from the first value of one row of
+ * the image to the first value of the next row. It includes the width of the
+ * image plus padding.
+ * ystride is the stride of the luma plane.
+ * cstride is the stride of the chroma planes.
+ *
+ * chroma_step is the distance in bytes from one chroma pixel value to the
+ * next. This is 2 bytes for semiplanar (because chroma values are interleaved
+ * and each chroma value is one byte) and 1 for planar.
+ */
+
+struct android_ycbcr {
+ void *y;
+ void *cb;
+ void *cr;
+ size_t ystride;
+ size_t cstride;
+ size_t chroma_step;
+
+ /** reserved for future use, set to 0 by gralloc's (*lock_ycbcr)() */
+ uint32_t reserved[8];
+};
+
+/*
+ * Structures for describing flexible YUVA/RGBA formats for consumption by
+ * applications. Such flexible formats contain a plane for each component (e.g.
+ * red, green, blue), where each plane is laid out in a grid-like pattern
+ * occupying unique byte addresses and with consistent byte offsets between
+ * neighboring pixels.
+ *
+ * The android_flex_layout structure is used with any pixel format that can be
+ * represented by it, such as:
+ * - HAL_PIXEL_FORMAT_YCbCr_*_888
+ * - HAL_PIXEL_FORMAT_FLEX_RGB*_888
+ * - HAL_PIXEL_FORMAT_RGB[AX]_888[8],BGRA_8888,RGB_888
+ * - HAL_PIXEL_FORMAT_YV12,Y8,Y16,YCbCr_422_SP/I,YCrCb_420_SP
+ * - even implementation defined formats that can be represented by
+ * the structures
+ *
+ * Vertical increment (aka. row increment or stride) describes the distance in
+ * bytes from the first pixel of one row to the first pixel of the next row
+ * (below) for the component plane. This can be negative.
+ *
+ * Horizontal increment (aka. column or pixel increment) describes the distance
+ * in bytes from one pixel to the next pixel (to the right) on the same row for
+ * the component plane. This can be negative.
+ *
+ * Each plane can be subsampled either vertically or horizontally by
+ * a power-of-two factor.
+ *
+ * The bit-depth of each component can be arbitrary, as long as the pixels are
+ * laid out on whole bytes, in native byte-order, using the most significant
+ * bits of each unit.
+ */
+
+typedef enum android_flex_component {
+ /* luma */
+ FLEX_COMPONENT_Y = 1 << 0,
+ /* chroma blue */
+ FLEX_COMPONENT_Cb = 1 << 1,
+ /* chroma red */
+ FLEX_COMPONENT_Cr = 1 << 2,
+
+ /* red */
+ FLEX_COMPONENT_R = 1 << 10,
+ /* green */
+ FLEX_COMPONENT_G = 1 << 11,
+ /* blue */
+ FLEX_COMPONENT_B = 1 << 12,
+
+ /* alpha */
+ FLEX_COMPONENT_A = 1 << 30,
+} android_flex_component_t;
+
+typedef struct android_flex_plane {
+ /* pointer to the first byte of the top-left pixel of the plane. */
+ uint8_t *top_left;
+
+ android_flex_component_t component;
+
+ /* bits allocated for the component in each pixel. Must be a positive
+ multiple of 8. */
+ int32_t bits_per_component;
+ /* number of the most significant bits used in the format for this
+ component. Must be between 1 and bits_per_component, inclusive. */
+ int32_t bits_used;
+
+ /* horizontal increment */
+ int32_t h_increment;
+ /* vertical increment */
+ int32_t v_increment;
+ /* horizontal subsampling. Must be a positive power of 2. */
+ int32_t h_subsampling;
+ /* vertical subsampling. Must be a positive power of 2. */
+ int32_t v_subsampling;
+} android_flex_plane_t;
+
+typedef enum android_flex_format {
+ /* not a flexible format */
+ FLEX_FORMAT_INVALID = 0x0,
+ FLEX_FORMAT_Y = FLEX_COMPONENT_Y,
+ FLEX_FORMAT_YCbCr = FLEX_COMPONENT_Y | FLEX_COMPONENT_Cb | FLEX_COMPONENT_Cr,
+ FLEX_FORMAT_YCbCrA = FLEX_FORMAT_YCbCr | FLEX_COMPONENT_A,
+ FLEX_FORMAT_RGB = FLEX_COMPONENT_R | FLEX_COMPONENT_G | FLEX_COMPONENT_B,
+ FLEX_FORMAT_RGBA = FLEX_FORMAT_RGB | FLEX_COMPONENT_A,
+} android_flex_format_t;
+
+typedef struct android_flex_layout {
+ /* the kind of flexible format */
+ android_flex_format_t format;
+
+ /* number of planes; 0 for FLEX_FORMAT_INVALID */
+ uint32_t num_planes;
+ /* a plane for each component; ordered in increasing component value order.
+ E.g. FLEX_FORMAT_RGBA maps 0 -> R, 1 -> G, etc.
+ Can be NULL for FLEX_FORMAT_INVALID */
+ android_flex_plane_t *planes;
+} android_flex_layout_t;
+
+/**
+ * Structure used to define depth point clouds for format HAL_PIXEL_FORMAT_BLOB
+ * with dataSpace value of HAL_DATASPACE_DEPTH.
+ * When locking a native buffer of the above format and dataSpace value,
+ * the vaddr pointer can be cast to this structure.
+ *
+ * A variable-length list of (x,y,z, confidence) 3D points, as floats. (x, y,
+ * z) represents a measured point's position, with the coordinate system defined
+ * by the data source. Confidence represents the estimated likelihood that this
+ * measurement is correct. It is between 0.f and 1.f, inclusive, with 1.f ==
+ * 100% confidence.
+ *
+ * num_points is the number of points in the list
+ *
+ * xyz_points is the flexible array of floating-point values.
+ * It contains (num_points) * 4 floats.
+ *
+ * For example:
+ * android_depth_points d = get_depth_buffer();
+ * struct {
+ * float x; float y; float z; float confidence;
+ * } firstPoint, lastPoint;
+ *
+ * firstPoint.x = d.xyzc_points[0];
+ * firstPoint.y = d.xyzc_points[1];
+ * firstPoint.z = d.xyzc_points[2];
+ * firstPoint.confidence = d.xyzc_points[3];
+ * lastPoint.x = d.xyzc_points[(d.num_points - 1) * 4 + 0];
+ * lastPoint.y = d.xyzc_points[(d.num_points - 1) * 4 + 1];
+ * lastPoint.z = d.xyzc_points[(d.num_points - 1) * 4 + 2];
+ * lastPoint.confidence = d.xyzc_points[(d.num_points - 1) * 4 + 3];
+ */
+
+struct android_depth_points {
+ uint32_t num_points;
+
+ /** reserved for future use, set to 0 by gralloc's (*lock)() */
+ uint32_t reserved[8];
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc99-extensions"
+#endif
+ float xyzc_points[];
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+};
+
+/**
+ * These structures are used to define the reference display's
+ * capabilities for HDR content. Display engine can use this
+ * to better tone map content to user's display.
+ * Color is defined in CIE XYZ coordinates
+ */
+struct android_xy_color {
+ float x;
+ float y;
+};
+
+struct android_smpte2086_metadata {
+ struct android_xy_color displayPrimaryRed;
+ struct android_xy_color displayPrimaryGreen;
+ struct android_xy_color displayPrimaryBlue;
+ struct android_xy_color whitePoint;
+ float maxLuminance;
+ float minLuminance;
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SYSTEM_CORE_INCLUDE_ANDROID_GRAPHICS_H */
diff --git a/android/android-emugl/guest/system/radio.h b/android/android-emugl/guest/system/radio.h
new file mode 100644
index 0000000000..acf3ea787a
--- /dev/null
+++ b/android/android-emugl/guest/system/radio.h
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_RADIO_H
+#define ANDROID_RADIO_H
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+
+#define RADIO_NUM_BANDS_MAX 16
+#define RADIO_NUM_SPACINGS_MAX 16
+#define RADIO_STRING_LEN_MAX 128
+
+/*
+ * Radio hardware module class. A given radio hardware module HAL is of one class
+ * only. The platform can not have more than one hardware module of each class.
+ * Current version of the framework only supports RADIO_CLASS_AM_FM.
+ */
+typedef enum {
+ RADIO_CLASS_AM_FM = 0, /* FM (including HD radio) and AM */
+ RADIO_CLASS_SAT = 1, /* Satellite Radio */
+ RADIO_CLASS_DT = 2, /* Digital Radio (DAB) */
+} radio_class_t;
+
+/* value for field "type" of radio band described in struct radio_hal_band_config */
+typedef enum {
+ RADIO_BAND_AM = 0, /* Amplitude Modulation band: LW, MW, SW */
+ RADIO_BAND_FM = 1, /* Frequency Modulation band: FM */
+ RADIO_BAND_FM_HD = 2, /* FM HD Radio / DRM (IBOC) */
+ RADIO_BAND_AM_HD = 3, /* AM HD Radio / DRM (IBOC) */
+} radio_band_t;
+
+/* RDS variant implemented. A struct radio_hal_fm_band_config can list none or several. */
+enum {
+ RADIO_RDS_NONE = 0x0,
+ RADIO_RDS_WORLD = 0x01,
+ RADIO_RDS_US = 0x02,
+};
+typedef unsigned int radio_rds_t;
+
+/* FM deemphasis variant implemented. A struct radio_hal_fm_band_config can list one or more. */
+enum {
+ RADIO_DEEMPHASIS_50 = 0x1,
+ RADIO_DEEMPHASIS_75 = 0x2,
+};
+typedef unsigned int radio_deemphasis_t;
+
+/* Region a particular radio band configuration corresponds to. Not used at the HAL.
+ * Derived by the framework when converting the band descriptors retrieved from the HAL to
+ * individual band descriptors for each supported region. */
+typedef enum {
+ RADIO_REGION_NONE = -1,
+ RADIO_REGION_ITU_1 = 0,
+ RADIO_REGION_ITU_2 = 1,
+ RADIO_REGION_OIRT = 2,
+ RADIO_REGION_JAPAN = 3,
+ RADIO_REGION_KOREA = 4,
+} radio_region_t;
+
+/* scanning direction for scan() and step() tuner APIs */
+typedef enum {
+ RADIO_DIRECTION_UP,
+ RADIO_DIRECTION_DOWN
+} radio_direction_t;
+
+/* unique handle allocated to a radio module */
+typedef uint32_t radio_handle_t;
+
+/* Opaque meta data structure used by radio meta data API (see system/radio_metadata.h) */
+typedef struct radio_metadata radio_metadata_t;
+
+
+/* Additional attributes for an FM band configuration */
+typedef struct radio_hal_fm_band_config {
+ radio_deemphasis_t deemphasis; /* deemphasis variant */
+ bool stereo; /* stereo supported */
+ radio_rds_t rds; /* RDS variants supported */
+ bool ta; /* Traffic Announcement supported */
+ bool af; /* Alternate Frequency supported */
+ bool ea; /* Emergency announcements supported */
+} radio_hal_fm_band_config_t;
+
+/* Additional attributes for an AM band configuration */
+typedef struct radio_hal_am_band_config {
+ bool stereo; /* stereo supported */
+} radio_hal_am_band_config_t;
+
+/* Radio band configuration. Describes a given band supported by the radio module.
+ * The HAL can expose only one band per type with the the maximum range supported and all options.
+ * THe framework will derive the actual regions were this module can operate and expose separate
+ * band configurations for applications to chose from. */
+typedef struct radio_hal_band_config {
+ radio_band_t type;
+ bool antenna_connected;
+ uint32_t lower_limit;
+ uint32_t upper_limit;
+ uint32_t num_spacings;
+ uint32_t spacings[RADIO_NUM_SPACINGS_MAX];
+ union {
+ radio_hal_fm_band_config_t fm;
+ radio_hal_am_band_config_t am;
+ };
+} radio_hal_band_config_t;
+
+/* Used internally by the framework to represent a band for s specific region */
+typedef struct radio_band_config {
+ radio_region_t region;
+ radio_hal_band_config_t band;
+} radio_band_config_t;
+
+
+/* Exposes properties of a given hardware radio module.
+ * NOTE: current framework implementation supports only one audio source (num_audio_sources = 1).
+ * The source corresponds to AUDIO_DEVICE_IN_FM_TUNER.
+ * If more than one tuner is supported (num_tuners > 1), only one can be connected to the audio
+ * source. */
+typedef struct radio_hal_properties {
+ radio_class_t class_id; /* Class of this module. E.g RADIO_CLASS_AM_FM */
+ char implementor[RADIO_STRING_LEN_MAX]; /* implementor name */
+ char product[RADIO_STRING_LEN_MAX]; /* product name */
+ char version[RADIO_STRING_LEN_MAX]; /* product version */
+ char serial[RADIO_STRING_LEN_MAX]; /* serial number (for subscription services) */
+ uint32_t num_tuners; /* number of tuners controllable independently */
+ uint32_t num_audio_sources; /* number of audio sources driven simultaneously */
+ bool supports_capture; /* the hardware supports capture of audio source audio HAL */
+ uint32_t num_bands; /* number of band descriptors */
+ radio_hal_band_config_t bands[RADIO_NUM_BANDS_MAX]; /* band descriptors */
+} radio_hal_properties_t;
+
+/* Used internally by the framework. Same information as in struct radio_hal_properties plus a
+ * unique handle and one band configuration per region. */
+typedef struct radio_properties {
+ radio_handle_t handle;
+ radio_class_t class_id;
+ char implementor[RADIO_STRING_LEN_MAX];
+ char product[RADIO_STRING_LEN_MAX];
+ char version[RADIO_STRING_LEN_MAX];
+ char serial[RADIO_STRING_LEN_MAX];
+ uint32_t num_tuners;
+ uint32_t num_audio_sources;
+ bool supports_capture;
+ uint32_t num_bands;
+ radio_band_config_t bands[RADIO_NUM_BANDS_MAX];
+} radio_properties_t;
+
+/* Radio program information. Returned by the HAL with event RADIO_EVENT_TUNED.
+ * Contains information on currently tuned channel.
+ */
+typedef struct radio_program_info {
+ uint32_t channel; /* current channel. (e.g kHz for band type RADIO_BAND_FM) */
+ uint32_t sub_channel; /* current sub channel. (used for RADIO_BAND_FM_HD) */
+ bool tuned; /* tuned to a program or not */
+ bool stereo; /* program is stereo or not */
+ bool digital; /* digital program or not (e.g HD Radio program) */
+ uint32_t signal_strength; /* signal strength from 0 to 100 */
+ /* meta data (e.g PTY, song title ...), must not be NULL */
+ __attribute__((aligned(8))) radio_metadata_t *metadata;
+} radio_program_info_t;
+
+
+/* Events sent to the framework via the HAL callback. An event can notify the completion of an
+ * asynchronous command (configuration, tune, scan ...) or a spontaneous change (antenna connection,
+ * failure, AF switching, meta data reception... */
+enum {
+ RADIO_EVENT_HW_FAILURE = 0, /* hardware module failure. Requires reopening the tuner */
+ RADIO_EVENT_CONFIG = 1, /* configuration change completed */
+ RADIO_EVENT_ANTENNA = 2, /* Antenna connected, disconnected */
+ RADIO_EVENT_TUNED = 3, /* tune, step, scan completed */
+ RADIO_EVENT_METADATA = 4, /* New meta data received */
+ RADIO_EVENT_TA = 5, /* Traffic announcement start or stop */
+ RADIO_EVENT_AF_SWITCH = 6, /* Switch to Alternate Frequency */
+ RADIO_EVENT_EA = 7, /* Emergency announcement start or stop */
+ // begin framework only events
+ RADIO_EVENT_CONTROL = 100, /* loss/gain of tuner control */
+ RADIO_EVENT_SERVER_DIED = 101, /* radio service died */
+};
+typedef unsigned int radio_event_type_t;
+
+/* Event passed to the framework by the HAL callback */
+typedef struct radio_hal_event {
+ radio_event_type_t type; /* event type */
+ int32_t status; /* used by RADIO_EVENT_CONFIG, RADIO_EVENT_TUNED */
+ union {
+ /* RADIO_EVENT_ANTENNA, RADIO_EVENT_TA, RADIO_EVENT_EA */
+ bool on;
+ radio_hal_band_config_t config; /* RADIO_EVENT_CONFIG */
+ radio_program_info_t info; /* RADIO_EVENT_TUNED, RADIO_EVENT_AF_SWITCH */
+ radio_metadata_t *metadata; /* RADIO_EVENT_METADATA */
+ };
+} radio_hal_event_t;
+
+/* Used internally by the framework. Same information as in struct radio_hal_event */
+typedef struct radio_event {
+ radio_event_type_t type;
+ int32_t status;
+ union {
+ bool on;
+ radio_band_config_t config;
+ radio_program_info_t info;
+ /* meta data (e.g PTY, song title ...), must not be NULL */
+ __attribute__((aligned(8))) radio_metadata_t *metadata;
+ };
+} radio_event_t;
+
+
+static inline
+radio_rds_t radio_rds_for_region(bool rds, radio_region_t region) {
+ if (!rds)
+ return RADIO_RDS_NONE;
+ switch(region) {
+ case RADIO_REGION_ITU_1:
+ case RADIO_REGION_OIRT:
+ case RADIO_REGION_JAPAN:
+ case RADIO_REGION_KOREA:
+ return RADIO_RDS_WORLD;
+ case RADIO_REGION_ITU_2:
+ return RADIO_RDS_US;
+ default:
+ return RADIO_REGION_NONE;
+ }
+}
+
+static inline
+radio_deemphasis_t radio_demephasis_for_region(radio_region_t region) {
+ switch(region) {
+ case RADIO_REGION_KOREA:
+ case RADIO_REGION_ITU_2:
+ return RADIO_DEEMPHASIS_75;
+ case RADIO_REGION_ITU_1:
+ case RADIO_REGION_OIRT:
+ case RADIO_REGION_JAPAN:
+ default:
+ return RADIO_DEEMPHASIS_50;
+ }
+}
+
+#endif // ANDROID_RADIO_H
diff --git a/android/android-emugl/guest/system/thread_defs.h b/android/android-emugl/guest/system/thread_defs.h
new file mode 100644
index 0000000000..80d11608b3
--- /dev/null
+++ b/android/android-emugl/guest/system/thread_defs.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_THREAD_DEFS_H
+#define ANDROID_THREAD_DEFS_H
+
+#include "graphics.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+enum {
+ /*
+ * ***********************************************
+ * ** Keep in sync with android.os.Process.java **
+ * ***********************************************
+ *
+ * This maps directly to the "nice" priorities we use in Android.
+ * A thread priority should be chosen inverse-proportionally to
+ * the amount of work the thread is expected to do. The more work
+ * a thread will do, the less favorable priority it should get so that
+ * it doesn't starve the system. Threads not behaving properly might
+ * be "punished" by the kernel.
+ * Use the levels below when appropriate. Intermediate values are
+ * acceptable, preferably use the {MORE|LESS}_FAVORABLE constants below.
+ */
+ ANDROID_PRIORITY_LOWEST = 19,
+
+ /* use for background tasks */
+ ANDROID_PRIORITY_BACKGROUND = 10,
+
+ /* most threads run at normal priority */
+ ANDROID_PRIORITY_NORMAL = 0,
+
+ /* threads currently running a UI that the user is interacting with */
+ ANDROID_PRIORITY_FOREGROUND = -2,
+
+ /* the main UI thread has a slightly more favorable priority */
+ ANDROID_PRIORITY_DISPLAY = -4,
+
+ /* ui service treads might want to run at a urgent display (uncommon) */
+ ANDROID_PRIORITY_URGENT_DISPLAY = HAL_PRIORITY_URGENT_DISPLAY,
+
+ /* all normal video threads */
+ ANDROID_PRIORITY_VIDEO = -10,
+
+ /* all normal audio threads */
+ ANDROID_PRIORITY_AUDIO = -16,
+
+ /* service audio threads (uncommon) */
+ ANDROID_PRIORITY_URGENT_AUDIO = -19,
+
+ /* should never be used in practice. regular process might not
+ * be allowed to use this level */
+ ANDROID_PRIORITY_HIGHEST = -20,
+
+ ANDROID_PRIORITY_DEFAULT = ANDROID_PRIORITY_NORMAL,
+ ANDROID_PRIORITY_MORE_FAVORABLE = -1,
+ ANDROID_PRIORITY_LESS_FAVORABLE = +1,
+};
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* ANDROID_THREAD_DEFS_H */
diff --git a/android/android-emugl/guest/system/window.h b/android/android-emugl/guest/system/window.h
new file mode 100644
index 0000000000..3671a6ac0d
--- /dev/null
+++ b/android/android-emugl/guest/system/window.h
@@ -0,0 +1,828 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*************************************************************************************************
+ *
+ * IMPORTANT:
+ *
+ * There is an old copy of this file in system/core/include/system/window.h, which exists only
+ * for backward source compatibility.
+ * But there are binaries out there as well, so this version of window.h must stay binary
+ * backward compatible with the one found in system/core.
+ *
+ *
+ * Source compatibility is also required for now, because this is how we're handling the
+ * transition from system/core/include (global include path) to nativewindow/include.
+ *
+ *************************************************************************************************/
+#pragma once
+#include <cutils/native_handle.h>
+#include <errno.h>
+#include <limits.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/cdefs.h>
+#include <system/graphics.h>
+#include <unistd.h>
+#include <stdbool.h>
+// system/window.h is a superset of the vndk
+#include <vndk/window.h>
+#ifndef __UNUSED
+#define __UNUSED __attribute__((__unused__))
+#endif
+#ifndef __deprecated
+#define __deprecated __attribute__((__deprecated__))
+#endif
+__BEGIN_DECLS
+/*****************************************************************************/
+#define ANDROID_NATIVE_WINDOW_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_','w','n','d')
+// ---------------------------------------------------------------------------
+/* attributes queriable with query() */
+enum {
+ NATIVE_WINDOW_WIDTH = 0,
+ NATIVE_WINDOW_HEIGHT = 1,
+ NATIVE_WINDOW_FORMAT = 2,
+ /* see ANativeWindowQuery in vndk/window.h */
+ NATIVE_WINDOW_MIN_UNDEQUEUED_BUFFERS = ANATIVEWINDOW_QUERY_MIN_UNDEQUEUED_BUFFERS,
+ /* Check whether queueBuffer operations on the ANativeWindow send the buffer
+ * to the window compositor. The query sets the returned 'value' argument
+ * to 1 if the ANativeWindow DOES send queued buffers directly to the window
+ * compositor and 0 if the buffers do not go directly to the window
+ * compositor.
+ *
+ * This can be used to determine whether protected buffer content should be
+ * sent to the ANativeWindow. Note, however, that a result of 1 does NOT
+ * indicate that queued buffers will be protected from applications or users
+ * capturing their contents. If that behavior is desired then some other
+ * mechanism (e.g. the GRALLOC_USAGE_PROTECTED flag) should be used in
+ * conjunction with this query.
+ */
+ NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER = 4,
+ /* Get the concrete type of a ANativeWindow. See below for the list of
+ * possible return values.
+ *
+ * This query should not be used outside the Android framework and will
+ * likely be removed in the near future.
+ */
+ NATIVE_WINDOW_CONCRETE_TYPE = 5,
+ /*
+ * Default width and height of ANativeWindow buffers, these are the
+ * dimensions of the window buffers irrespective of the
+ * NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS call and match the native window
+ * size unless overridden by NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS.
+ */
+ NATIVE_WINDOW_DEFAULT_WIDTH = ANATIVEWINDOW_QUERY_DEFAULT_WIDTH,
+ NATIVE_WINDOW_DEFAULT_HEIGHT = ANATIVEWINDOW_QUERY_DEFAULT_HEIGHT,
+ /* see ANativeWindowQuery in vndk/window.h */
+ NATIVE_WINDOW_TRANSFORM_HINT = ANATIVEWINDOW_QUERY_TRANSFORM_HINT,
+ /*
+ * Boolean that indicates whether the consumer is running more than
+ * one buffer behind the producer.
+ */
+ NATIVE_WINDOW_CONSUMER_RUNNING_BEHIND = 9,
+ /*
+ * The consumer gralloc usage bits currently set by the consumer.
+ * The values are defined in hardware/libhardware/include/gralloc.h.
+ */
+ NATIVE_WINDOW_CONSUMER_USAGE_BITS = 10, /* deprecated */
+ /**
+ * Transformation that will by applied to buffers by the hwcomposer.
+ * This must not be set or checked by producer endpoints, and will
+ * disable the transform hint set in SurfaceFlinger (see
+ * NATIVE_WINDOW_TRANSFORM_HINT).
+ *
+ * INTENDED USE:
+ * Temporary - Please do not use this. This is intended only to be used
+ * by the camera's LEGACY mode.
+ *
+ * In situations where a SurfaceFlinger client wishes to set a transform
+ * that is not visible to the producer, and will always be applied in the
+ * hardware composer, the client can set this flag with
+ * native_window_set_buffers_sticky_transform. This can be used to rotate
+ * and flip buffers consumed by hardware composer without actually changing
+ * the aspect ratio of the buffers produced.
+ */
+ NATIVE_WINDOW_STICKY_TRANSFORM = 11,
+ /**
+ * The default data space for the buffers as set by the consumer.
+ * The values are defined in graphics.h.
+ */
+ NATIVE_WINDOW_DEFAULT_DATASPACE = 12,
+ /* see ANativeWindowQuery in vndk/window.h */
+ NATIVE_WINDOW_BUFFER_AGE = ANATIVEWINDOW_QUERY_BUFFER_AGE,
+ /*
+ * Returns the duration of the last dequeueBuffer call in microseconds
+ */
+ NATIVE_WINDOW_LAST_DEQUEUE_DURATION = 14,
+ /*
+ * Returns the duration of the last queueBuffer call in microseconds
+ */
+ NATIVE_WINDOW_LAST_QUEUE_DURATION = 15,
+ /*
+ * Returns the number of image layers that the ANativeWindow buffer
+ * contains. By default this is 1, unless a buffer is explicitly allocated
+ * to contain multiple layers.
+ */
+ NATIVE_WINDOW_LAYER_COUNT = 16,
+ /*
+ * Returns 1 if the native window is valid, 0 otherwise. native window is valid
+ * if it is safe (i.e. no crash will occur) to call any method on it.
+ */
+ NATIVE_WINDOW_IS_VALID = 17,
+ /*
+ * Returns 1 if NATIVE_WINDOW_GET_FRAME_TIMESTAMPS will return display
+ * present info, 0 if it won't.
+ */
+ NATIVE_WINDOW_FRAME_TIMESTAMPS_SUPPORTS_PRESENT = 18,
+ /*
+ * The consumer end is capable of handling protected buffers, i.e. buffer
+ * with GRALLOC_USAGE_PROTECTED usage bits on.
+ */
+ NATIVE_WINDOW_CONSUMER_IS_PROTECTED = 19,
+};
+/* Valid operations for the (*perform)() hook.
+ *
+ * Values marked as 'deprecated' are supported, but have been superceded by
+ * other functionality.
+ *
+ * Values marked as 'private' should be considered private to the framework.
+ * HAL implementation code with access to an ANativeWindow should not use these,
+ * as it may not interact properly with the framework's use of the
+ * ANativeWindow.
+ */
+enum {
+// clang-format off
+ NATIVE_WINDOW_SET_USAGE = 0, /* deprecated */
+ NATIVE_WINDOW_CONNECT = 1, /* deprecated */
+ NATIVE_WINDOW_DISCONNECT = 2, /* deprecated */
+ NATIVE_WINDOW_SET_CROP = 3, /* private */
+ NATIVE_WINDOW_SET_BUFFER_COUNT = 4,
+ NATIVE_WINDOW_SET_BUFFERS_GEOMETRY = 5, /* deprecated */
+ NATIVE_WINDOW_SET_BUFFERS_TRANSFORM = 6,
+ NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP = 7,
+ NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS = 8,
+ NATIVE_WINDOW_SET_BUFFERS_FORMAT = 9,
+ NATIVE_WINDOW_SET_SCALING_MODE = 10, /* private */
+ NATIVE_WINDOW_LOCK = 11, /* private */
+ NATIVE_WINDOW_UNLOCK_AND_POST = 12, /* private */
+ NATIVE_WINDOW_API_CONNECT = 13, /* private */
+ NATIVE_WINDOW_API_DISCONNECT = 14, /* private */
+ NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS = 15, /* private */
+ NATIVE_WINDOW_SET_POST_TRANSFORM_CROP = 16, /* deprecated, unimplemented */
+ NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM = 17, /* private */
+ NATIVE_WINDOW_SET_SIDEBAND_STREAM = 18,
+ NATIVE_WINDOW_SET_BUFFERS_DATASPACE = 19,
+ NATIVE_WINDOW_SET_SURFACE_DAMAGE = 20, /* private */
+ NATIVE_WINDOW_SET_SHARED_BUFFER_MODE = 21,
+ NATIVE_WINDOW_SET_AUTO_REFRESH = 22,
+ NATIVE_WINDOW_GET_REFRESH_CYCLE_DURATION = 23,
+ NATIVE_WINDOW_GET_NEXT_FRAME_ID = 24,
+ NATIVE_WINDOW_ENABLE_FRAME_TIMESTAMPS = 25,
+ NATIVE_WINDOW_GET_COMPOSITOR_TIMING = 26,
+ NATIVE_WINDOW_GET_FRAME_TIMESTAMPS = 27,
+ NATIVE_WINDOW_GET_WIDE_COLOR_SUPPORT = 28,
+ NATIVE_WINDOW_GET_HDR_SUPPORT = 29,
+ NATIVE_WINDOW_SET_USAGE64 = 30,
+ NATIVE_WINDOW_GET_CONSUMER_USAGE64 = 31,
+// clang-format on
+};
+/* parameter for NATIVE_WINDOW_[API_][DIS]CONNECT */
+enum {
+ /* Buffers will be queued by EGL via eglSwapBuffers after being filled using
+ * OpenGL ES.
+ */
+ NATIVE_WINDOW_API_EGL = 1,
+ /* Buffers will be queued after being filled using the CPU
+ */
+ NATIVE_WINDOW_API_CPU = 2,
+ /* Buffers will be queued by Stagefright after being filled by a video
+ * decoder. The video decoder can either be a software or hardware decoder.
+ */
+ NATIVE_WINDOW_API_MEDIA = 3,
+ /* Buffers will be queued by the the camera HAL.
+ */
+ NATIVE_WINDOW_API_CAMERA = 4,
+};
+/* parameter for NATIVE_WINDOW_SET_BUFFERS_TRANSFORM */
+enum {
+ /* flip source image horizontally */
+ NATIVE_WINDOW_TRANSFORM_FLIP_H = HAL_TRANSFORM_FLIP_H ,
+ /* flip source image vertically */
+ NATIVE_WINDOW_TRANSFORM_FLIP_V = HAL_TRANSFORM_FLIP_V,
+ /* rotate source image 90 degrees clock-wise, and is applied after TRANSFORM_FLIP_{H|V} */
+ NATIVE_WINDOW_TRANSFORM_ROT_90 = HAL_TRANSFORM_ROT_90,
+ /* rotate source image 180 degrees */
+ NATIVE_WINDOW_TRANSFORM_ROT_180 = HAL_TRANSFORM_ROT_180,
+ /* rotate source image 270 degrees clock-wise */
+ NATIVE_WINDOW_TRANSFORM_ROT_270 = HAL_TRANSFORM_ROT_270,
+ /* transforms source by the inverse transform of the screen it is displayed onto. This
+ * transform is applied last */
+ NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY = 0x08
+};
+/* parameter for NATIVE_WINDOW_SET_SCALING_MODE
+ * keep in sync with Surface.java in frameworks/base */
+enum {
+ /* the window content is not updated (frozen) until a buffer of
+ * the window size is received (enqueued)
+ */
+ NATIVE_WINDOW_SCALING_MODE_FREEZE = 0,
+ /* the buffer is scaled in both dimensions to match the window size */
+ NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW = 1,
+ /* the buffer is scaled uniformly such that the smaller dimension
+ * of the buffer matches the window size (cropping in the process)
+ */
+ NATIVE_WINDOW_SCALING_MODE_SCALE_CROP = 2,
+ /* the window is clipped to the size of the buffer's crop rectangle; pixels
+ * outside the crop rectangle are treated as if they are completely
+ * transparent.
+ */
+ NATIVE_WINDOW_SCALING_MODE_NO_SCALE_CROP = 3,
+};
+/* values returned by the NATIVE_WINDOW_CONCRETE_TYPE query */
+enum {
+ NATIVE_WINDOW_FRAMEBUFFER = 0, /* FramebufferNativeWindow */
+ NATIVE_WINDOW_SURFACE = 1, /* Surface */
+};
+/* parameter for NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP
+ *
+ * Special timestamp value to indicate that timestamps should be auto-generated
+ * by the native window when queueBuffer is called. This is equal to INT64_MIN,
+ * defined directly to avoid problems with C99/C++ inclusion of stdint.h.
+ */
+static const int64_t NATIVE_WINDOW_TIMESTAMP_AUTO = (-9223372036854775807LL-1);
+/* parameter for NATIVE_WINDOW_GET_FRAME_TIMESTAMPS
+ *
+ * Special timestamp value to indicate the timestamps aren't yet known or
+ * that they are invalid.
+ */
+static const int64_t NATIVE_WINDOW_TIMESTAMP_PENDING = -2;
+static const int64_t NATIVE_WINDOW_TIMESTAMP_INVALID = -1;
+struct ANativeWindow
+{
+#ifdef __cplusplus
+ ANativeWindow()
+ : flags(0), minSwapInterval(0), maxSwapInterval(0), xdpi(0), ydpi(0)
+ {
+ common.magic = ANDROID_NATIVE_WINDOW_MAGIC;
+ common.version = sizeof(ANativeWindow);
+ memset(common.reserved, 0, sizeof(common.reserved));
+ }
+ /* Implement the methods that sp<ANativeWindow> expects so that it
+ can be used to automatically refcount ANativeWindow's. */
+ void incStrong(const void* /*id*/) const {
+ common.incRef(const_cast<android_native_base_t*>(&common));
+ }
+ void decStrong(const void* /*id*/) const {
+ common.decRef(const_cast<android_native_base_t*>(&common));
+ }
+#endif
+ struct android_native_base_t common;
+ /* flags describing some attributes of this surface or its updater */
+ const uint32_t flags;
+ /* min swap interval supported by this updated */
+ const int minSwapInterval;
+ /* max swap interval supported by this updated */
+ const int maxSwapInterval;
+ /* horizontal and vertical resolution in DPI */
+ const float xdpi;
+ const float ydpi;
+ /* Some storage reserved for the OEM's driver. */
+ intptr_t oem[4];
+ /*
+ * Set the swap interval for this surface.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*setSwapInterval)(struct ANativeWindow* window,
+ int interval);
+ /*
+ * Hook called by EGL to acquire a buffer. After this call, the buffer
+ * is not locked, so its content cannot be modified. This call may block if
+ * no buffers are available.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * Returns 0 on success or -errno on error.
+ *
+ * XXX: This function is deprecated. It will continue to work for some
+ * time for binary compatibility, but the new dequeueBuffer function that
+ * outputs a fence file descriptor should be used in its place.
+ */
+ int (*dequeueBuffer_DEPRECATED)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer** buffer);
+ /*
+ * hook called by EGL to lock a buffer. This MUST be called before modifying
+ * the content of a buffer. The buffer must have been acquired with
+ * dequeueBuffer first.
+ *
+ * Returns 0 on success or -errno on error.
+ *
+ * XXX: This function is deprecated. It will continue to work for some
+ * time for binary compatibility, but it is essentially a no-op, and calls
+ * to it should be removed.
+ */
+ int (*lockBuffer_DEPRECATED)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer* buffer);
+ /*
+ * Hook called by EGL when modifications to the render buffer are done.
+ * This unlocks and post the buffer.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * Buffers MUST be queued in the same order than they were dequeued.
+ *
+ * Returns 0 on success or -errno on error.
+ *
+ * XXX: This function is deprecated. It will continue to work for some
+ * time for binary compatibility, but the new queueBuffer function that
+ * takes a fence file descriptor should be used in its place (pass a value
+ * of -1 for the fence file descriptor if there is no valid one to pass).
+ */
+ int (*queueBuffer_DEPRECATED)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer* buffer);
+ /*
+ * hook used to retrieve information about the native window.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*query)(const struct ANativeWindow* window,
+ int what, int* value);
+ /*
+ * hook used to perform various operations on the surface.
+ * (*perform)() is a generic mechanism to add functionality to
+ * ANativeWindow while keeping backward binary compatibility.
+ *
+ * DO NOT CALL THIS HOOK DIRECTLY. Instead, use the helper functions
+ * defined below.
+ *
+ * (*perform)() returns -ENOENT if the 'what' parameter is not supported
+ * by the surface's implementation.
+ *
+ * See above for a list of valid operations, such as
+ * NATIVE_WINDOW_SET_USAGE or NATIVE_WINDOW_CONNECT
+ */
+ int (*perform)(struct ANativeWindow* window,
+ int operation, ... );
+ /*
+ * Hook used to cancel a buffer that has been dequeued.
+ * No synchronization is performed between dequeue() and cancel(), so
+ * either external synchronization is needed, or these functions must be
+ * called from the same thread.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * XXX: This function is deprecated. It will continue to work for some
+ * time for binary compatibility, but the new cancelBuffer function that
+ * takes a fence file descriptor should be used in its place (pass a value
+ * of -1 for the fence file descriptor if there is no valid one to pass).
+ */
+ int (*cancelBuffer_DEPRECATED)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer* buffer);
+ /*
+ * Hook called by EGL to acquire a buffer. This call may block if no
+ * buffers are available.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The libsync fence file descriptor returned in the int pointed to by the
+ * fenceFd argument will refer to the fence that must signal before the
+ * dequeued buffer may be written to. A value of -1 indicates that the
+ * caller may access the buffer immediately without waiting on a fence. If
+ * a valid file descriptor is returned (i.e. any value except -1) then the
+ * caller is responsible for closing the file descriptor.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*dequeueBuffer)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer** buffer, int* fenceFd);
+ /*
+ * Hook called by EGL when modifications to the render buffer are done.
+ * This unlocks and post the buffer.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The fenceFd argument specifies a libsync fence file descriptor for a
+ * fence that must signal before the buffer can be accessed. If the buffer
+ * can be accessed immediately then a value of -1 should be used. The
+ * caller must not use the file descriptor after it is passed to
+ * queueBuffer, and the ANativeWindow implementation is responsible for
+ * closing it.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*queueBuffer)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer* buffer, int fenceFd);
+ /*
+ * Hook used to cancel a buffer that has been dequeued.
+ * No synchronization is performed between dequeue() and cancel(), so
+ * either external synchronization is needed, or these functions must be
+ * called from the same thread.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The fenceFd argument specifies a libsync fence file decsriptor for a
+ * fence that must signal before the buffer can be accessed. If the buffer
+ * can be accessed immediately then a value of -1 should be used.
+ *
+ * Note that if the client has not waited on the fence that was returned
+ * from dequeueBuffer, that same fence should be passed to cancelBuffer to
+ * ensure that future uses of the buffer are preceded by a wait on that
+ * fence. The caller must not use the file descriptor after it is passed
+ * to cancelBuffer, and the ANativeWindow implementation is responsible for
+ * closing it.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+ int (*cancelBuffer)(struct ANativeWindow* window,
+ struct ANativeWindowBuffer* buffer, int fenceFd);
+};
+ /* Backwards compatibility: use ANativeWindow (struct ANativeWindow in C).
+ * android_native_window_t is deprecated.
+ */
+typedef struct ANativeWindow android_native_window_t __deprecated;
+/*
+ * native_window_set_usage64(..., usage)
+ * Sets the intended usage flags for the next buffers
+ * acquired with (*lockBuffer)() and on.
+ *
+ * Valid usage flags are defined in android/hardware_buffer.h
+ * All AHARDWAREBUFFER_USAGE_* flags can be specified as needed.
+ *
+ * Calling this function will usually cause following buffers to be
+ * reallocated.
+ */
+static inline int native_window_set_usage(struct ANativeWindow* window, uint64_t usage) {
+ return window->perform(window, NATIVE_WINDOW_SET_USAGE64, usage);
+}
+/* deprecated. Always returns 0. Don't call. */
+static inline int native_window_connect(
+ struct ANativeWindow* window __UNUSED, int api __UNUSED) __deprecated;
+static inline int native_window_connect(
+ struct ANativeWindow* window __UNUSED, int api __UNUSED) {
+ return 0;
+}
+/* deprecated. Always returns 0. Don't call. */
+static inline int native_window_disconnect(
+ struct ANativeWindow* window __UNUSED, int api __UNUSED) __deprecated;
+static inline int native_window_disconnect(
+ struct ANativeWindow* window __UNUSED, int api __UNUSED) {
+ return 0;
+}
+/*
+ * native_window_set_crop(..., crop)
+ * Sets which region of the next queued buffers needs to be considered.
+ * Depending on the scaling mode, a buffer's crop region is scaled and/or
+ * cropped to match the surface's size. This function sets the crop in
+ * pre-transformed buffer pixel coordinates.
+ *
+ * The specified crop region applies to all buffers queued after it is called.
+ *
+ * If 'crop' is NULL, subsequently queued buffers won't be cropped.
+ *
+ * An error is returned if for instance the crop region is invalid, out of the
+ * buffer's bound or if the window is invalid.
+ */
+static inline int native_window_set_crop(
+ struct ANativeWindow* window,
+ android_native_rect_t const * crop)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_CROP, crop);
+}
+/*
+ * native_window_set_buffer_count(..., count)
+ * Sets the number of buffers associated with this native window.
+ */
+static inline int native_window_set_buffer_count(
+ struct ANativeWindow* window,
+ size_t bufferCount)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFER_COUNT, bufferCount);
+}
+/*
+ * native_window_set_buffers_geometry(..., int w, int h, int format)
+ * All buffers dequeued after this call will have the dimensions and format
+ * specified. A successful call to this function has the same effect as calling
+ * native_window_set_buffers_size and native_window_set_buffers_format.
+ *
+ * XXX: This function is deprecated. The native_window_set_buffers_dimensions
+ * and native_window_set_buffers_format functions should be used instead.
+ */
+static inline int native_window_set_buffers_geometry(
+ struct ANativeWindow* window,
+ int w, int h, int format) __deprecated;
+static inline int native_window_set_buffers_geometry(
+ struct ANativeWindow* window,
+ int w, int h, int format)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_GEOMETRY,
+ w, h, format);
+}
+/*
+ * native_window_set_buffers_dimensions(..., int w, int h)
+ * All buffers dequeued after this call will have the dimensions specified.
+ * In particular, all buffers will have a fixed-size, independent from the
+ * native-window size. They will be scaled according to the scaling mode
+ * (see native_window_set_scaling_mode) upon window composition.
+ *
+ * If w and h are 0, the normal behavior is restored. That is, dequeued buffers
+ * following this call will be sized to match the window's size.
+ *
+ * Calling this function will reset the window crop to a NULL value, which
+ * disables cropping of the buffers.
+ */
+static inline int native_window_set_buffers_dimensions(
+ struct ANativeWindow* window,
+ int w, int h)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_DIMENSIONS,
+ w, h);
+}
+/*
+ * native_window_set_buffers_user_dimensions(..., int w, int h)
+ *
+ * Sets the user buffer size for the window, which overrides the
+ * window's size. All buffers dequeued after this call will have the
+ * dimensions specified unless overridden by
+ * native_window_set_buffers_dimensions. All buffers will have a
+ * fixed-size, independent from the native-window size. They will be
+ * scaled according to the scaling mode (see
+ * native_window_set_scaling_mode) upon window composition.
+ *
+ * If w and h are 0, the normal behavior is restored. That is, the
+ * default buffer size will match the windows's size.
+ *
+ * Calling this function will reset the window crop to a NULL value, which
+ * disables cropping of the buffers.
+ */
+static inline int native_window_set_buffers_user_dimensions(
+ struct ANativeWindow* window,
+ int w, int h)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_USER_DIMENSIONS,
+ w, h);
+}
+/*
+ * native_window_set_buffers_format(..., int format)
+ * All buffers dequeued after this call will have the format specified.
+ *
+ * If the specified format is 0, the default buffer format will be used.
+ */
+static inline int native_window_set_buffers_format(
+ struct ANativeWindow* window,
+ int format)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_FORMAT, format);
+}
+/*
+ * native_window_set_buffers_data_space(..., int dataSpace)
+ * All buffers queued after this call will be associated with the dataSpace
+ * parameter specified.
+ *
+ * dataSpace specifies additional information about the buffer that's dependent
+ * on the buffer format and the endpoints. For example, it can be used to convey
+ * the color space of the image data in the buffer, or it can be used to
+ * indicate that the buffers contain depth measurement data instead of color
+ * images. The default dataSpace is 0, HAL_DATASPACE_UNKNOWN, unless it has been
+ * overridden by the consumer.
+ */
+static inline int native_window_set_buffers_data_space(
+ struct ANativeWindow* window,
+ android_dataspace_t dataSpace)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_DATASPACE,
+ dataSpace);
+}
+/*
+ * native_window_set_buffers_transform(..., int transform)
+ * All buffers queued after this call will be displayed transformed according
+ * to the transform parameter specified.
+ */
+static inline int native_window_set_buffers_transform(
+ struct ANativeWindow* window,
+ int transform)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_TRANSFORM,
+ transform);
+}
+/*
+ * native_window_set_buffers_sticky_transform(..., int transform)
+ * All buffers queued after this call will be displayed transformed according
+ * to the transform parameter specified applied on top of the regular buffer
+ * transform. Setting this transform will disable the transform hint.
+ *
+ * Temporary - This is only intended to be used by the LEGACY camera mode, do
+ * not use this for anything else.
+ */
+static inline int native_window_set_buffers_sticky_transform(
+ struct ANativeWindow* window,
+ int transform)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_STICKY_TRANSFORM,
+ transform);
+}
+/*
+ * native_window_set_buffers_timestamp(..., int64_t timestamp)
+ * All buffers queued after this call will be associated with the timestamp
+ * parameter specified. If the timestamp is set to NATIVE_WINDOW_TIMESTAMP_AUTO
+ * (the default), timestamps will be generated automatically when queueBuffer is
+ * called. The timestamp is measured in nanoseconds, and is normally monotonically
+ * increasing. The timestamp should be unaffected by time-of-day adjustments,
+ * and for a camera should be strictly monotonic but for a media player may be
+ * reset when the position is set.
+ */
+static inline int native_window_set_buffers_timestamp(
+ struct ANativeWindow* window,
+ int64_t timestamp)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_BUFFERS_TIMESTAMP,
+ timestamp);
+}
+/*
+ * native_window_set_scaling_mode(..., int mode)
+ * All buffers queued after this call will be associated with the scaling mode
+ * specified.
+ */
+static inline int native_window_set_scaling_mode(
+ struct ANativeWindow* window,
+ int mode)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_SCALING_MODE,
+ mode);
+}
+/*
+ * native_window_api_connect(..., int api)
+ * connects an API to this window. only one API can be connected at a time.
+ * Returns -EINVAL if for some reason the window cannot be connected, which
+ * can happen if it's connected to some other API.
+ */
+static inline int native_window_api_connect(
+ struct ANativeWindow* window, int api)
+{
+ return window->perform(window, NATIVE_WINDOW_API_CONNECT, api);
+}
+/*
+ * native_window_api_disconnect(..., int api)
+ * disconnect the API from this window.
+ * An error is returned if for instance the window wasn't connected in the
+ * first place.
+ */
+static inline int native_window_api_disconnect(
+ struct ANativeWindow* window, int api)
+{
+ return window->perform(window, NATIVE_WINDOW_API_DISCONNECT, api);
+}
+/*
+ * native_window_dequeue_buffer_and_wait(...)
+ * Dequeue a buffer and wait on the fence associated with that buffer. The
+ * buffer may safely be accessed immediately upon this function returning. An
+ * error is returned if either of the dequeue or the wait operations fail.
+ */
+static inline int native_window_dequeue_buffer_and_wait(ANativeWindow *anw,
+ struct ANativeWindowBuffer** anb) {
+ return anw->dequeueBuffer_DEPRECATED(anw, anb);
+}
+/*
+ * native_window_set_sideband_stream(..., native_handle_t*)
+ * Attach a sideband buffer stream to a native window.
+ */
+static inline int native_window_set_sideband_stream(
+ struct ANativeWindow* window,
+ native_handle_t* sidebandHandle)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_SIDEBAND_STREAM,
+ sidebandHandle);
+}
+/*
+ * native_window_set_surface_damage(..., android_native_rect_t* rects, int numRects)
+ * Set the surface damage (i.e., the region of the surface that has changed
+ * since the previous frame). The damage set by this call will be reset (to the
+ * default of full-surface damage) after calling queue, so this must be called
+ * prior to every frame with damage that does not cover the whole surface if the
+ * caller desires downstream consumers to use this optimization.
+ *
+ * The damage region is specified as an array of rectangles, with the important
+ * caveat that the origin of the surface is considered to be the bottom-left
+ * corner, as in OpenGL ES.
+ *
+ * If numRects is set to 0, rects may be NULL, and the surface damage will be
+ * set to the full surface (the same as if this function had not been called for
+ * this frame).
+ */
+static inline int native_window_set_surface_damage(
+ struct ANativeWindow* window,
+ const android_native_rect_t* rects, size_t numRects)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_SURFACE_DAMAGE,
+ rects, numRects);
+}
+/*
+ * native_window_set_shared_buffer_mode(..., bool sharedBufferMode)
+ * Enable/disable shared buffer mode
+ */
+static inline int native_window_set_shared_buffer_mode(
+ struct ANativeWindow* window,
+ bool sharedBufferMode)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_SHARED_BUFFER_MODE,
+ sharedBufferMode);
+}
+/*
+ * native_window_set_auto_refresh(..., autoRefresh)
+ * Enable/disable auto refresh when in shared buffer mode
+ */
+static inline int native_window_set_auto_refresh(
+ struct ANativeWindow* window,
+ bool autoRefresh)
+{
+ return window->perform(window, NATIVE_WINDOW_SET_AUTO_REFRESH, autoRefresh);
+}
+static inline int native_window_get_refresh_cycle_duration(
+ struct ANativeWindow* window,
+ int64_t* outRefreshDuration)
+{
+ return window->perform(window, NATIVE_WINDOW_GET_REFRESH_CYCLE_DURATION,
+ outRefreshDuration);
+}
+static inline int native_window_get_next_frame_id(
+ struct ANativeWindow* window, uint64_t* frameId)
+{
+ return window->perform(window, NATIVE_WINDOW_GET_NEXT_FRAME_ID, frameId);
+}
+static inline int native_window_enable_frame_timestamps(
+ struct ANativeWindow* window, bool enable)
+{
+ return window->perform(window, NATIVE_WINDOW_ENABLE_FRAME_TIMESTAMPS,
+ enable);
+}
+static inline int native_window_get_compositor_timing(
+ struct ANativeWindow* window,
+ int64_t* compositeDeadline, int64_t* compositeInterval,
+ int64_t* compositeToPresentLatency)
+{
+ return window->perform(window, NATIVE_WINDOW_GET_COMPOSITOR_TIMING,
+ compositeDeadline, compositeInterval, compositeToPresentLatency);
+}
+static inline int native_window_get_frame_timestamps(
+ struct ANativeWindow* window, uint64_t frameId,
+ int64_t* outRequestedPresentTime, int64_t* outAcquireTime,
+ int64_t* outLatchTime, int64_t* outFirstRefreshStartTime,
+ int64_t* outLastRefreshStartTime, int64_t* outGpuCompositionDoneTime,
+ int64_t* outDisplayPresentTime, int64_t* outDequeueReadyTime,
+ int64_t* outReleaseTime)
+{
+ return window->perform(window, NATIVE_WINDOW_GET_FRAME_TIMESTAMPS,
+ frameId, outRequestedPresentTime, outAcquireTime, outLatchTime,
+ outFirstRefreshStartTime, outLastRefreshStartTime,
+ outGpuCompositionDoneTime, outDisplayPresentTime,
+ outDequeueReadyTime, outReleaseTime);
+}
+static inline int native_window_get_wide_color_support(
+ struct ANativeWindow* window, bool* outSupport) {
+ return window->perform(window, NATIVE_WINDOW_GET_WIDE_COLOR_SUPPORT,
+ outSupport);
+}
+static inline int native_window_get_hdr_support(struct ANativeWindow* window,
+ bool* outSupport) {
+ return window->perform(window, NATIVE_WINDOW_GET_HDR_SUPPORT, outSupport);
+}
+static inline int native_window_get_consumer_usage(struct ANativeWindow* window,
+ uint64_t* outUsage) {
+ return window->perform(window, NATIVE_WINDOW_GET_CONSUMER_USAGE64, outUsage);
+}
+__END_DECLS
diff --git a/android/android-emugl/guest/ui/PixelFormat.h b/android/android-emugl/guest/ui/PixelFormat.h
new file mode 100644
index 0000000000..9b5672d948
--- /dev/null
+++ b/android/android-emugl/guest/ui/PixelFormat.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+//
+// Pixel formats used across the system.
+// These formats might not all be supported by all renderers, for instance
+// skia or SurfaceFlinger are not required to support all of these formats
+// (either as source or destination)
+#ifndef UI_PIXELFORMAT_H
+#define UI_PIXELFORMAT_H
+#include <hardware/hardware.h>
+namespace android {
+enum {
+ //
+ // these constants need to match those
+ // in graphics/PixelFormat.java & pixelflinger/format.h
+ //
+ PIXEL_FORMAT_UNKNOWN = 0,
+ PIXEL_FORMAT_NONE = 0,
+ // logical pixel formats used by the SurfaceFlinger -----------------------
+ PIXEL_FORMAT_CUSTOM = -4,
+ // Custom pixel-format described by a PixelFormatInfo structure
+ PIXEL_FORMAT_TRANSLUCENT = -3,
+ // System chooses a format that supports translucency (many alpha bits)
+ PIXEL_FORMAT_TRANSPARENT = -2,
+ // System chooses a format that supports transparency
+ // (at least 1 alpha bit)
+ PIXEL_FORMAT_OPAQUE = -1,
+ // System chooses an opaque format (no alpha bits required)
+ // real pixel formats supported for rendering -----------------------------
+ PIXEL_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888, // 4x8-bit RGBA
+ PIXEL_FORMAT_RGBX_8888 = HAL_PIXEL_FORMAT_RGBX_8888, // 4x8-bit RGB0
+ PIXEL_FORMAT_RGB_888 = HAL_PIXEL_FORMAT_RGB_888, // 3x8-bit RGB
+ PIXEL_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565, // 16-bit RGB
+ PIXEL_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888, // 4x8-bit BGRA
+ PIXEL_FORMAT_RGBA_5551 = 6, // 16-bit ARGB
+ PIXEL_FORMAT_RGBA_4444 = 7, // 16-bit ARGB
+ PIXEL_FORMAT_RGBA_FP16 = HAL_PIXEL_FORMAT_RGBA_FP16, // 64-bit RGBA
+ PIXEL_FORMAT_RGBA_1010102 = HAL_PIXEL_FORMAT_RGBA_1010102, // 32-bit RGBA
+};
+typedef int32_t PixelFormat;
+uint32_t bytesPerPixel(PixelFormat format);
+uint32_t bitsPerPixel(PixelFormat format);
+}; // namespace android
+#endif // UI_PIXELFORMAT_H
diff --git a/android/android-emugl/guest/utils/AndroidThreads.h b/android/android-emugl/guest/utils/AndroidThreads.h
new file mode 100644
index 0000000000..dab888d5ab
--- /dev/null
+++ b/android/android-emugl/guest/utils/AndroidThreads.h
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_ANDROID_THREADS_H
+#define _LIBS_UTILS_ANDROID_THREADS_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#if !defined(_WIN32)
+# include <pthread.h>
+#endif
+
+#include <utils/ThreadDefs.h>
+
+// ---------------------------------------------------------------------------
+// C API
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Create and run a new thread.
+extern int androidCreateThread(android_thread_func_t, void *);
+
+// Create thread with lots of parameters
+extern int androidCreateThreadEtc(android_thread_func_t entryFunction,
+ void *userData,
+ const char* threadName,
+ int32_t threadPriority,
+ size_t threadStackSize,
+ android_thread_id_t *threadId);
+
+// Get some sort of unique identifier for the current thread.
+extern android_thread_id_t androidGetThreadId();
+
+// Low-level thread creation -- never creates threads that can
+// interact with the Java VM.
+extern int androidCreateRawThreadEtc(android_thread_func_t entryFunction,
+ void *userData,
+ const char* threadName,
+ int32_t threadPriority,
+ size_t threadStackSize,
+ android_thread_id_t *threadId);
+
+// set the same of the running thread
+extern void androidSetThreadName(const char* name);
+
+// Used by the Java Runtime to control how threads are created, so that
+// they can be proper and lovely Java threads.
+typedef int (*android_create_thread_fn)(android_thread_func_t entryFunction,
+ void *userData,
+ const char* threadName,
+ int32_t threadPriority,
+ size_t threadStackSize,
+ android_thread_id_t *threadId);
+
+extern void androidSetCreateThreadFunc(android_create_thread_fn func);
+
+// ------------------------------------------------------------------
+// Extra functions working with raw pids.
+
+#if defined(__ANDROID__)
+// Change the priority AND scheduling group of a particular thread. The priority
+// should be one of the ANDROID_PRIORITY constants. Returns INVALID_OPERATION
+// if the priority set failed, else another value if just the group set failed;
+// in either case errno is set. Thread ID zero means current thread.
+extern int androidSetThreadPriority(pid_t tid, int prio);
+
+// Get the current priority of a particular thread. Returns one of the
+// ANDROID_PRIORITY constants or a negative result in case of error.
+extern int androidGetThreadPriority(pid_t tid);
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// ----------------------------------------------------------------------------
+// C++ API
+#ifdef __cplusplus
+namespace android {
+// ----------------------------------------------------------------------------
+
+// Create and run a new thread.
+inline bool createThread(thread_func_t f, void *a) {
+ return androidCreateThread(f, a) ? true : false;
+}
+
+// Create thread with lots of parameters
+inline bool createThreadEtc(thread_func_t entryFunction,
+ void *userData,
+ const char* threadName = "android:unnamed_thread",
+ int32_t threadPriority = PRIORITY_DEFAULT,
+ size_t threadStackSize = 0,
+ thread_id_t *threadId = 0)
+{
+ return androidCreateThreadEtc(entryFunction, userData, threadName,
+ threadPriority, threadStackSize, threadId) ? true : false;
+}
+
+// Get some sort of unique identifier for the current thread.
+inline thread_id_t getThreadId() {
+ return androidGetThreadId();
+}
+
+// ----------------------------------------------------------------------------
+} // namespace android
+#endif // __cplusplus
+// ----------------------------------------------------------------------------
+
+#endif // _LIBS_UTILS_ANDROID_THREADS_H
diff --git a/android/android-emugl/guest/utils/CallStack.h b/android/android-emugl/guest/utils/CallStack.h
new file mode 100644
index 0000000000..96221425e4
--- /dev/null
+++ b/android/android-emugl/guest/utils/CallStack.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_CALLSTACK_H
+#define ANDROID_CALLSTACK_H
+
+#include <android/log.h>
+#include <backtrace/backtrace_constants.h>
+#include <utils/String8.h>
+#include <utils/Vector.h>
+
+#include <stdint.h>
+#include <sys/types.h>
+
+namespace android {
+
+class Printer;
+
+// Collect/print the call stack (function, file, line) traces for a single thread.
+class CallStack {
+public:
+ // Create an empty call stack. No-op.
+ CallStack();
+ // Create a callstack with the current thread's stack trace.
+ // Immediately dump it to logcat using the given logtag.
+ CallStack(const char* logtag, int32_t ignoreDepth=1);
+ ~CallStack();
+
+ // Reset the stack frames (same as creating an empty call stack).
+ void clear() { mFrameLines.clear(); }
+
+ // Immediately collect the stack traces for the specified thread.
+ // The default is to dump the stack of the current call.
+ void update(int32_t ignoreDepth=1, pid_t tid=BACKTRACE_CURRENT_THREAD);
+
+ // Dump a stack trace to the log using the supplied logtag.
+ void log(const char* logtag,
+ android_LogPriority priority = ANDROID_LOG_DEBUG,
+ const char* prefix = 0) const;
+
+ // Dump a stack trace to the specified file descriptor.
+ void dump(int fd, int indent = 0, const char* prefix = 0) const;
+
+ // Return a string (possibly very long) containing the complete stack trace.
+ String8 toString(const char* prefix = 0) const;
+
+ // Dump a serialized representation of the stack trace to the specified printer.
+ void print(Printer& printer) const;
+
+ // Get the count of stack frames that are in this call stack.
+ size_t size() const { return mFrameLines.size(); }
+
+private:
+ Vector<String8> mFrameLines;
+};
+
+} // namespace android
+
+#endif // ANDROID_CALLSTACK_H
diff --git a/android/android-emugl/guest/utils/Compat.h b/android/android-emugl/guest/utils/Compat.h
new file mode 100644
index 0000000000..dee577e369
--- /dev/null
+++ b/android/android-emugl/guest/utils/Compat.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __LIB_UTILS_COMPAT_H
+#define __LIB_UTILS_COMPAT_H
+
+#include <unistd.h>
+
+#if defined(__APPLE__)
+
+/* Mac OS has always had a 64-bit off_t, so it doesn't have off64_t. */
+
+typedef off_t off64_t;
+
+static inline off64_t lseek64(int fd, off64_t offset, int whence) {
+ return lseek(fd, offset, whence);
+}
+
+static inline ssize_t pread64(int fd, void* buf, size_t nbytes, off64_t offset) {
+ return pread(fd, buf, nbytes, offset);
+}
+
+static inline ssize_t pwrite64(int fd, const void* buf, size_t nbytes, off64_t offset) {
+ return pwrite(fd, buf, nbytes, offset);
+}
+
+static inline int ftruncate64(int fd, off64_t length) {
+ return ftruncate(fd, length);
+}
+
+#endif /* __APPLE__ */
+
+#if defined(_WIN32)
+#define O_CLOEXEC O_NOINHERIT
+#define O_NOFOLLOW 0
+#define DEFFILEMODE 0666
+#endif /* _WIN32 */
+
+#define ZD "%zd"
+#define ZD_TYPE ssize_t
+
+/*
+ * Needed for cases where something should be constexpr if possible, but not
+ * being constexpr is fine if in pre-C++11 code (such as a const static float
+ * member variable).
+ */
+#if __cplusplus >= 201103L
+#define CONSTEXPR constexpr
+#else
+#define CONSTEXPR
+#endif
+
+/*
+ * TEMP_FAILURE_RETRY is defined by some, but not all, versions of
+ * <unistd.h>. (Alas, it is not as standard as we'd hoped!) So, if it's
+ * not already defined, then define it here.
+ */
+#ifndef TEMP_FAILURE_RETRY
+/* Used to retry syscalls that can return EINTR. */
+#define TEMP_FAILURE_RETRY(exp) ({ \
+ typeof (exp) _rc; \
+ do { \
+ _rc = (exp); \
+ } while (_rc == -1 && errno == EINTR); \
+ _rc; })
+#endif
+
+#if defined(_WIN32)
+#define OS_PATH_SEPARATOR '\\'
+#else
+#define OS_PATH_SEPARATOR '/'
+#endif
+
+#endif /* __LIB_UTILS_COMPAT_H */
diff --git a/android/android-emugl/guest/utils/Condition.h b/android/android-emugl/guest/utils/Condition.h
new file mode 100644
index 0000000000..c8da67c276
--- /dev/null
+++ b/android/android-emugl/guest/utils/Condition.h
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_CONDITION_H
+#define _LIBS_UTILS_CONDITION_H
+
+#include <limits.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <time.h>
+
+#if !defined(_WIN32)
+# include <pthread.h>
+#endif
+
+#include <utils/Errors.h>
+#include <utils/Mutex.h>
+#include <utils/Timers.h>
+
+// ---------------------------------------------------------------------------
+namespace android {
+// ---------------------------------------------------------------------------
+
+// DO NOT USE: please use std::condition_variable instead.
+
+/*
+ * Condition variable class. The implementation is system-dependent.
+ *
+ * Condition variables are paired up with mutexes. Lock the mutex,
+ * call wait(), then either re-wait() if things aren't quite what you want,
+ * or unlock the mutex and continue. All threads calling wait() must
+ * use the same mutex for a given Condition.
+ *
+ * On Android and Apple platforms, these are implemented as a simple wrapper
+ * around pthread condition variables. Care must be taken to abide by
+ * the pthreads semantics, in particular, a boolean predicate must
+ * be re-evaluated after a wake-up, as spurious wake-ups may happen.
+ */
+class Condition {
+public:
+ enum {
+ PRIVATE = 0,
+ SHARED = 1
+ };
+
+ enum WakeUpType {
+ WAKE_UP_ONE = 0,
+ WAKE_UP_ALL = 1
+ };
+
+ Condition();
+ explicit Condition(int type);
+ ~Condition();
+ // Wait on the condition variable. Lock the mutex before calling.
+ // Note that spurious wake-ups may happen.
+ status_t wait(Mutex& mutex);
+ // same with relative timeout
+ status_t waitRelative(Mutex& mutex, nsecs_t reltime);
+ // Signal the condition variable, allowing one thread to continue.
+ void signal();
+ // Signal the condition variable, allowing one or all threads to continue.
+ void signal(WakeUpType type) {
+ if (type == WAKE_UP_ONE) {
+ signal();
+ } else {
+ broadcast();
+ }
+ }
+ // Signal the condition variable, allowing all threads to continue.
+ void broadcast();
+
+private:
+#if !defined(_WIN32)
+ pthread_cond_t mCond;
+#else
+ void* mState;
+#endif
+};
+
+// ---------------------------------------------------------------------------
+
+#if !defined(_WIN32)
+
+inline Condition::Condition() : Condition(PRIVATE) {
+}
+inline Condition::Condition(int type) {
+ pthread_condattr_t attr;
+ pthread_condattr_init(&attr);
+#if defined(__linux__)
+ pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
+#endif
+
+ if (type == SHARED) {
+ pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
+ }
+
+ pthread_cond_init(&mCond, &attr);
+ pthread_condattr_destroy(&attr);
+
+}
+inline Condition::~Condition() {
+ pthread_cond_destroy(&mCond);
+}
+inline status_t Condition::wait(Mutex& mutex) {
+ return -pthread_cond_wait(&mCond, &mutex.mMutex);
+}
+inline status_t Condition::waitRelative(Mutex& mutex, nsecs_t reltime) {
+ struct timespec ts;
+#if defined(__linux__)
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+#else // __APPLE__
+ // Apple doesn't support POSIX clocks.
+ struct timeval t;
+ gettimeofday(&t, NULL);
+ ts.tv_sec = t.tv_sec;
+ ts.tv_nsec = t.tv_usec*1000;
+#endif
+
+ // On 32-bit devices, tv_sec is 32-bit, but `reltime` is 64-bit.
+ int64_t reltime_sec = reltime/1000000000;
+
+ ts.tv_nsec += static_cast<long>(reltime%1000000000);
+ if (reltime_sec < INT64_MAX && ts.tv_nsec >= 1000000000) {
+ ts.tv_nsec -= 1000000000;
+ ++reltime_sec;
+ }
+
+ int64_t time_sec = ts.tv_sec;
+ if (time_sec > INT64_MAX - reltime_sec) {
+ time_sec = INT64_MAX;
+ } else {
+ time_sec += reltime_sec;
+ }
+
+ ts.tv_sec = (time_sec > LONG_MAX) ? LONG_MAX : static_cast<long>(time_sec);
+
+ return -pthread_cond_timedwait(&mCond, &mutex.mMutex, &ts);
+}
+inline void Condition::signal() {
+ pthread_cond_signal(&mCond);
+}
+inline void Condition::broadcast() {
+ pthread_cond_broadcast(&mCond);
+}
+
+#endif // !defined(_WIN32)
+
+// ---------------------------------------------------------------------------
+} // namespace android
+// ---------------------------------------------------------------------------
+
+#endif // _LIBS_UTILS_CONDITON_H
diff --git a/android/android-emugl/guest/utils/Debug.h b/android/android-emugl/guest/utils/Debug.h
new file mode 100644
index 0000000000..96bd70eb01
--- /dev/null
+++ b/android/android-emugl/guest/utils/Debug.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_UTILS_DEBUG_H
+#define ANDROID_UTILS_DEBUG_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+namespace android {
+// ---------------------------------------------------------------------------
+
+#ifdef __cplusplus
+template<bool> struct CompileTimeAssert;
+template<> struct CompileTimeAssert<true> {};
+#define COMPILE_TIME_ASSERT(_exp) \
+ template class CompileTimeAssert< (_exp) >;
+#endif
+
+// DO NOT USE: Please use static_assert instead
+#define COMPILE_TIME_ASSERT_FUNCTION_SCOPE(_exp) \
+ CompileTimeAssert<( _exp )>();
+
+// ---------------------------------------------------------------------------
+} // namespace android
+
+#endif // ANDROID_UTILS_DEBUG_H
diff --git a/android/android-emugl/guest/utils/Endian.h b/android/android-emugl/guest/utils/Endian.h
new file mode 100644
index 0000000000..591cae0d34
--- /dev/null
+++ b/android/android-emugl/guest/utils/Endian.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Android endian-ness defines.
+//
+#ifndef _LIBS_UTILS_ENDIAN_H
+#define _LIBS_UTILS_ENDIAN_H
+
+#if defined(__APPLE__) || defined(_WIN32)
+
+#define __BIG_ENDIAN 0x1000
+#define __LITTLE_ENDIAN 0x0001
+#define __BYTE_ORDER __LITTLE_ENDIAN
+
+#else
+
+#include <endian.h>
+
+#endif
+
+#endif /*_LIBS_UTILS_ENDIAN_H*/
diff --git a/android/android-emugl/guest/utils/Errors.h b/android/android-emugl/guest/utils/Errors.h
new file mode 100644
index 0000000000..7093a206a5
--- /dev/null
+++ b/android/android-emugl/guest/utils/Errors.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_ERRORS_H
+#define ANDROID_ERRORS_H
+
+#include <sys/types.h>
+#include <errno.h>
+
+namespace android {
+
+// use this type to return error codes
+#ifdef _WIN32
+typedef int status_t;
+#else
+typedef int32_t status_t;
+#endif
+
+/* the MS C runtime lacks a few error codes */
+
+/*
+ * Error codes.
+ * All error codes are negative values.
+ */
+
+// Win32 #defines NO_ERROR as well. It has the same value, so there's no
+// real conflict, though it's a bit awkward.
+#ifdef _WIN32
+# undef NO_ERROR
+#endif
+
+enum {
+ OK = 0, // Everything's swell.
+ NO_ERROR = 0, // No errors.
+
+ UNKNOWN_ERROR = (-2147483647-1), // INT32_MIN value
+
+ NO_MEMORY = -ENOMEM,
+ INVALID_OPERATION = -ENOSYS,
+ BAD_VALUE = -EINVAL,
+ BAD_TYPE = (UNKNOWN_ERROR + 1),
+ NAME_NOT_FOUND = -ENOENT,
+ PERMISSION_DENIED = -EPERM,
+ NO_INIT = -ENODEV,
+ ALREADY_EXISTS = -EEXIST,
+ DEAD_OBJECT = -EPIPE,
+ FAILED_TRANSACTION = (UNKNOWN_ERROR + 2),
+#if !defined(_WIN32)
+ BAD_INDEX = -EOVERFLOW,
+ NOT_ENOUGH_DATA = -ENODATA,
+ WOULD_BLOCK = -EWOULDBLOCK,
+ TIMED_OUT = -ETIMEDOUT,
+ UNKNOWN_TRANSACTION = -EBADMSG,
+#else
+ BAD_INDEX = -E2BIG,
+ NOT_ENOUGH_DATA = (UNKNOWN_ERROR + 3),
+ WOULD_BLOCK = (UNKNOWN_ERROR + 4),
+ TIMED_OUT = (UNKNOWN_ERROR + 5),
+ UNKNOWN_TRANSACTION = (UNKNOWN_ERROR + 6),
+#endif
+ FDS_NOT_ALLOWED = (UNKNOWN_ERROR + 7),
+ UNEXPECTED_NULL = (UNKNOWN_ERROR + 8),
+};
+
+// Restore define; enumeration is in "android" namespace, so the value defined
+// there won't work for Win32 code in a different namespace.
+#ifdef _WIN32
+# define NO_ERROR 0L
+#endif
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_ERRORS_H
diff --git a/android/android-emugl/guest/utils/FastStrcmp.h b/android/android-emugl/guest/utils/FastStrcmp.h
new file mode 100644
index 0000000000..5cadc943a6
--- /dev/null
+++ b/android/android-emugl/guest/utils/FastStrcmp.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014-2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ANDROID_UTILS_FASTSTRCMP_H__
+#define _ANDROID_UTILS_FASTSTRCMP_H__
+
+#include <ctype.h>
+#include <string.h>
+
+#ifndef __predict_true
+#define __predict_true(exp) __builtin_expect((exp) != 0, 1)
+#endif
+
+#ifdef __cplusplus
+
+// Optimized for instruction cache locality
+//
+// Template class fastcmp used to create more time-efficient str*cmp
+// functions by pre-checking the first character before resorting
+// to calling the underlying string function. Profiled with a
+// measurable speedup when used in hot code. Usage is of the form:
+//
+// fastcmp<strncmp>(str1, str2, len)
+//
+// NB: use fasticmp for the case insensitive str*cmp functions.
+// NB: Returns boolean, do not use if expecting to check negative value.
+// Thus not semantically identical to the expected function behavior.
+
+template <int (*cmp)(const char* l, const char* r, const size_t s)>
+static inline int fastcmp(const char* l, const char* r, const size_t s) {
+ const ssize_t n = s; // To help reject negative sizes, treat like zero
+ return __predict_true(n > 0) &&
+ ((*l != *r) || (__predict_true(n > 1) && cmp(l + 1, r + 1, n - 1)));
+}
+
+template <int (*cmp)(const char* l, const char* r, const size_t s)>
+static inline int fasticmp(const char* l, const char* r, const size_t s) {
+ const ssize_t n = s; // To help reject negative sizes, treat like zero
+ return __predict_true(n > 0) &&
+ ((tolower(*l) != tolower(*r)) || (__predict_true(n > 1) && cmp(l + 1, r + 1, n - 1)));
+}
+
+template <int (*cmp)(const void* l, const void* r, const size_t s)>
+static inline int fastcmp(const void* lv, const void* rv, const size_t s) {
+ const char* l = static_cast<const char*>(lv);
+ const char* r = static_cast<const char*>(rv);
+ const ssize_t n = s; // To help reject negative sizes, treat like zero
+ return __predict_true(n > 0) &&
+ ((*l != *r) || (__predict_true(n > 1) && cmp(l + 1, r + 1, n - 1)));
+}
+
+template <int (*cmp)(const char* l, const char* r)>
+static inline int fastcmp(const char* l, const char* r) {
+ return (*l != *r) || (__predict_true(*l) && cmp(l + 1, r + 1));
+}
+
+template <int (*cmp)(const char* l, const char* r)>
+static inline int fasticmp(const char* l, const char* r) {
+ return (tolower(*l) != tolower(*r)) || (__predict_true(*l) && cmp(l + 1, r + 1));
+}
+
+#endif
+
+#endif // _ANDROID_UTILS_FASTSTRCMP_H__
diff --git a/android/android-emugl/guest/utils/FileMap.h b/android/android-emugl/guest/utils/FileMap.h
new file mode 100644
index 0000000000..8d402a3c2c
--- /dev/null
+++ b/android/android-emugl/guest/utils/FileMap.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2006 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Encapsulate a shared file mapping.
+//
+#ifndef __LIBS_FILE_MAP_H
+#define __LIBS_FILE_MAP_H
+
+#include <sys/types.h>
+
+#include <utils/Compat.h>
+
+#if defined(__MINGW32__)
+// Ensure that we always pull in winsock2.h before windows.h
+#if defined(_WIN32)
+#include <winsock2.h>
+#endif
+#include <windows.h>
+#endif
+
+namespace android {
+
+/*
+ * This represents a memory-mapped file. It might be the entire file or
+ * only part of it. This requires a little bookkeeping because the mapping
+ * needs to be aligned on page boundaries, and in some cases we'd like to
+ * have multiple references to the mapped area without creating additional
+ * maps.
+ *
+ * This always uses MAP_SHARED.
+ *
+ * TODO: we should be able to create a new FileMap that is a subset of
+ * an existing FileMap and shares the underlying mapped pages. Requires
+ * completing the refcounting stuff and possibly introducing the notion
+ * of a FileMap hierarchy.
+ */
+class FileMap {
+public:
+ FileMap(void);
+
+ FileMap(FileMap&& f);
+ FileMap& operator=(FileMap&& f);
+
+ /*
+ * Create a new mapping on an open file.
+ *
+ * Closing the file descriptor does not unmap the pages, so we don't
+ * claim ownership of the fd.
+ *
+ * Returns "false" on failure.
+ */
+ bool create(const char* origFileName, int fd,
+ off64_t offset, size_t length, bool readOnly);
+
+ ~FileMap(void);
+
+ /*
+ * Return the name of the file this map came from, if known.
+ */
+ const char* getFileName(void) const { return mFileName; }
+
+ /*
+ * Get a pointer to the piece of the file we requested.
+ */
+ void* getDataPtr(void) const { return mDataPtr; }
+
+ /*
+ * Get the length we requested.
+ */
+ size_t getDataLength(void) const { return mDataLength; }
+
+ /*
+ * Get the data offset used to create this map.
+ */
+ off64_t getDataOffset(void) const { return mDataOffset; }
+
+ /*
+ * This maps directly to madvise() values, but allows us to avoid
+ * including <sys/mman.h> everywhere.
+ */
+ enum MapAdvice {
+ NORMAL, RANDOM, SEQUENTIAL, WILLNEED, DONTNEED
+ };
+
+ /*
+ * Apply an madvise() call to the entire file.
+ *
+ * Returns 0 on success, -1 on failure.
+ */
+ int advise(MapAdvice advice);
+
+protected:
+
+private:
+ // these are not implemented
+ FileMap(const FileMap& src);
+ const FileMap& operator=(const FileMap& src);
+
+ char* mFileName; // original file name, if known
+ void* mBasePtr; // base of mmap area; page aligned
+ size_t mBaseLength; // length, measured from "mBasePtr"
+ off64_t mDataOffset; // offset used when map was created
+ void* mDataPtr; // start of requested data, offset from base
+ size_t mDataLength; // length, measured from "mDataPtr"
+#if defined(__MINGW32__)
+ HANDLE mFileHandle; // Win32 file handle
+ HANDLE mFileMapping; // Win32 file mapping handle
+#endif
+
+ static long mPageSize;
+};
+
+} // namespace android
+
+#endif // __LIBS_FILE_MAP_H
diff --git a/android/android-emugl/guest/utils/Flattenable.h b/android/android-emugl/guest/utils/Flattenable.h
new file mode 100644
index 0000000000..0a19019ac3
--- /dev/null
+++ b/android/android-emugl/guest/utils/Flattenable.h
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_UTILS_FLATTENABLE_H
+#define ANDROID_UTILS_FLATTENABLE_H
+
+
+#include <stdint.h>
+#include <string.h>
+#include <sys/types.h>
+#include <utils/Errors.h>
+#include <utils/Debug.h>
+
+#include <type_traits>
+
+namespace android {
+
+
+class FlattenableUtils {
+public:
+ template<size_t N>
+ static size_t align(size_t size) {
+ static_assert(!(N & (N - 1)), "Can only align to a power of 2.");
+ return (size + (N-1)) & ~(N-1);
+ }
+
+ template<size_t N>
+ static size_t align(void const*& buffer) {
+ static_assert(!(N & (N - 1)), "Can only align to a power of 2.");
+ uintptr_t b = uintptr_t(buffer);
+ buffer = reinterpret_cast<void*>((uintptr_t(buffer) + (N-1)) & ~(N-1));
+ return size_t(uintptr_t(buffer) - b);
+ }
+
+ template<size_t N>
+ static size_t align(void*& buffer) {
+ return align<N>( const_cast<void const*&>(buffer) );
+ }
+
+ static void advance(void*& buffer, size_t& size, size_t offset) {
+ buffer = reinterpret_cast<void*>( uintptr_t(buffer) + offset );
+ size -= offset;
+ }
+
+ static void advance(void const*& buffer, size_t& size, size_t offset) {
+ buffer = reinterpret_cast<void const*>( uintptr_t(buffer) + offset );
+ size -= offset;
+ }
+
+ // write a POD structure
+ template<typename T>
+ static void write(void*& buffer, size_t& size, const T& value) {
+ static_assert(std::is_trivially_copyable<T>::value,
+ "Cannot flatten a non-trivially-copyable type");
+ memcpy(buffer, &value, sizeof(T));
+ advance(buffer, size, sizeof(T));
+ }
+
+ // read a POD structure
+ template<typename T>
+ static void read(void const*& buffer, size_t& size, T& value) {
+ static_assert(std::is_trivially_copyable<T>::value,
+ "Cannot unflatten a non-trivially-copyable type");
+ memcpy(&value, buffer, sizeof(T));
+ advance(buffer, size, sizeof(T));
+ }
+};
+
+
+/*
+ * The Flattenable protocol allows an object to serialize itself out
+ * to a byte-buffer and an array of file descriptors.
+ * Flattenable objects must implement this protocol.
+ */
+
+template <typename T>
+class Flattenable {
+public:
+ // size in bytes of the flattened object
+ inline size_t getFlattenedSize() const;
+
+ // number of file descriptors to flatten
+ inline size_t getFdCount() const;
+
+ // flattens the object into buffer.
+ // size should be at least of getFlattenedSize()
+ // file descriptors are written in the fds[] array but ownership is
+ // not transfered (ie: they must be dupped by the caller of
+ // flatten() if needed).
+ inline status_t flatten(void*& buffer, size_t& size, int*& fds, size_t& count) const;
+
+ // unflattens the object from buffer.
+ // size should be equal to the value of getFlattenedSize() when the
+ // object was flattened.
+ // unflattened file descriptors are found in the fds[] array and
+ // don't need to be dupped(). ie: the caller of unflatten doesn't
+ // keep ownership. If a fd is not retained by unflatten() it must be
+ // explicitly closed.
+ inline status_t unflatten(void const*& buffer, size_t& size, int const*& fds, size_t& count);
+};
+
+template<typename T>
+inline size_t Flattenable<T>::getFlattenedSize() const {
+ return static_cast<T const*>(this)->T::getFlattenedSize();
+}
+template<typename T>
+inline size_t Flattenable<T>::getFdCount() const {
+ return static_cast<T const*>(this)->T::getFdCount();
+}
+template<typename T>
+inline status_t Flattenable<T>::flatten(
+ void*& buffer, size_t& size, int*& fds, size_t& count) const {
+ return static_cast<T const*>(this)->T::flatten(buffer, size, fds, count);
+}
+template<typename T>
+inline status_t Flattenable<T>::unflatten(
+ void const*& buffer, size_t& size, int const*& fds, size_t& count) {
+ return static_cast<T*>(this)->T::unflatten(buffer, size, fds, count);
+}
+
+/*
+ * LightFlattenable is a protocol allowing object to serialize themselves out
+ * to a byte-buffer. Because it doesn't handle file-descriptors,
+ * LightFlattenable is usually more size efficient than Flattenable.
+ * LightFlattenable objects must implement this protocol.
+ */
+template <typename T>
+class LightFlattenable {
+public:
+ // returns whether this object always flatten into the same size.
+ // for efficiency, this should always be inline.
+ inline bool isFixedSize() const;
+
+ // returns size in bytes of the flattened object. must be a constant.
+ inline size_t getFlattenedSize() const;
+
+ // flattens the object into buffer.
+ inline status_t flatten(void* buffer, size_t size) const;
+
+ // unflattens the object from buffer of given size.
+ inline status_t unflatten(void const* buffer, size_t size);
+};
+
+template <typename T>
+inline bool LightFlattenable<T>::isFixedSize() const {
+ return static_cast<T const*>(this)->T::isFixedSize();
+}
+template <typename T>
+inline size_t LightFlattenable<T>::getFlattenedSize() const {
+ return static_cast<T const*>(this)->T::getFlattenedSize();
+}
+template <typename T>
+inline status_t LightFlattenable<T>::flatten(void* buffer, size_t size) const {
+ return static_cast<T const*>(this)->T::flatten(buffer, size);
+}
+template <typename T>
+inline status_t LightFlattenable<T>::unflatten(void const* buffer, size_t size) {
+ return static_cast<T*>(this)->T::unflatten(buffer, size);
+}
+
+/*
+ * LightFlattenablePod is an implementation of the LightFlattenable protocol
+ * for POD (plain-old-data) objects.
+ * Simply derive from LightFlattenablePod<Foo> to make Foo flattenable; no
+ * need to implement any methods; obviously Foo must be a POD structure.
+ */
+template <typename T>
+class LightFlattenablePod : public LightFlattenable<T> {
+public:
+ inline bool isFixedSize() const {
+ return true;
+ }
+
+ inline size_t getFlattenedSize() const {
+ return sizeof(T);
+ }
+ inline status_t flatten(void* buffer, size_t size) const {
+ if (size < sizeof(T)) return NO_MEMORY;
+ memcpy(buffer, static_cast<T const*>(this), sizeof(T));
+ return NO_ERROR;
+ }
+ inline status_t unflatten(void const* buffer, size_t) {
+ memcpy(static_cast<T*>(this), buffer, sizeof(T));
+ return NO_ERROR;
+ }
+};
+
+} // namespace android
+
+#endif /* ANDROID_UTILS_FLATTENABLE_H */
diff --git a/android/android-emugl/guest/utils/Functor.h b/android/android-emugl/guest/utils/Functor.h
new file mode 100644
index 0000000000..c0c8d57132
--- /dev/null
+++ b/android/android-emugl/guest/utils/Functor.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_FUNCTOR_H
+#define ANDROID_FUNCTOR_H
+
+#include <utils/Errors.h>
+
+namespace android {
+
+// DO NOT USE: please use
+// - C++ lambda
+// - class with well-defined and specific functionality and semantics
+
+class Functor {
+public:
+ Functor() {}
+ virtual ~Functor() {}
+ virtual status_t operator ()(int /*what*/, void* /*data*/) { return NO_ERROR; }
+};
+
+} // namespace android
+
+#endif // ANDROID_FUNCTOR_H
diff --git a/android/android-emugl/guest/utils/LightRefBase.h b/android/android-emugl/guest/utils/LightRefBase.h
new file mode 100644
index 0000000000..e488e602db
--- /dev/null
+++ b/android/android-emugl/guest/utils/LightRefBase.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+/*
+ * See documentation in RefBase.h
+ */
+
+#include <atomic>
+
+#include <sys/types.h>
+
+namespace android {
+
+class ReferenceRenamer;
+
+template <class T>
+class LightRefBase
+{
+public:
+ inline LightRefBase() : mCount(0) { }
+ inline void incStrong(__attribute__((unused)) const void* id) const {
+ mCount.fetch_add(1, std::memory_order_relaxed);
+ }
+ inline void decStrong(__attribute__((unused)) const void* id) const {
+ if (mCount.fetch_sub(1, std::memory_order_release) == 1) {
+ std::atomic_thread_fence(std::memory_order_acquire);
+ delete static_cast<const T*>(this);
+ }
+ }
+ //! DEBUGGING ONLY: Get current strong ref count.
+ inline int32_t getStrongCount() const {
+ return mCount.load(std::memory_order_relaxed);
+ }
+
+ typedef LightRefBase<T> basetype;
+
+protected:
+ inline ~LightRefBase() { }
+
+private:
+ friend class ReferenceMover;
+ inline static void renameRefs(size_t /*n*/, const ReferenceRenamer& /*renamer*/) { }
+ inline static void renameRefId(T* /*ref*/, const void* /*old_id*/ , const void* /*new_id*/) { }
+
+private:
+ mutable std::atomic<int32_t> mCount;
+};
+
+
+// This is a wrapper around LightRefBase that simply enforces a virtual
+// destructor to eliminate the template requirement of LightRefBase
+class VirtualLightRefBase : public LightRefBase<VirtualLightRefBase> {
+public:
+ virtual ~VirtualLightRefBase() = default;
+};
+
+} // namespace android
diff --git a/android/android-emugl/guest/utils/List.h b/android/android-emugl/guest/utils/List.h
new file mode 100644
index 0000000000..25b56fd21d
--- /dev/null
+++ b/android/android-emugl/guest/utils/List.h
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Templated list class. Normally we'd use STL, but we don't have that.
+// This class mimics STL's interfaces.
+//
+// Objects are copied into the list with the '=' operator or with copy-
+// construction, so if the compiler's auto-generated versions won't work for
+// you, define your own.
+//
+// The only class you want to use from here is "List".
+//
+#ifndef _LIBS_UTILS_LIST_H
+#define _LIBS_UTILS_LIST_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+namespace android {
+
+/*
+ * Doubly-linked list. Instantiate with "List<MyClass> myList".
+ *
+ * Objects added to the list are copied using the assignment operator,
+ * so this must be defined.
+ *
+ * DO NOT USE: please use std::list<T>
+ */
+template<typename T>
+class List
+{
+protected:
+ /*
+ * One element in the list.
+ */
+ class _Node {
+ public:
+ explicit _Node(const T& val) : mVal(val) {}
+ ~_Node() {}
+ inline T& getRef() { return mVal; }
+ inline const T& getRef() const { return mVal; }
+ inline _Node* getPrev() const { return mpPrev; }
+ inline _Node* getNext() const { return mpNext; }
+ inline void setVal(const T& val) { mVal = val; }
+ inline void setPrev(_Node* ptr) { mpPrev = ptr; }
+ inline void setNext(_Node* ptr) { mpNext = ptr; }
+ private:
+ friend class List;
+ friend class _ListIterator;
+ T mVal;
+ _Node* mpPrev;
+ _Node* mpNext;
+ };
+
+ /*
+ * Iterator for walking through the list.
+ */
+
+ template <typename TYPE>
+ struct CONST_ITERATOR {
+ typedef _Node const * NodePtr;
+ typedef const TYPE Type;
+ };
+
+ template <typename TYPE>
+ struct NON_CONST_ITERATOR {
+ typedef _Node* NodePtr;
+ typedef TYPE Type;
+ };
+
+ template<
+ typename U,
+ template <class> class Constness
+ >
+ class _ListIterator {
+ typedef _ListIterator<U, Constness> _Iter;
+ typedef typename Constness<U>::NodePtr _NodePtr;
+ typedef typename Constness<U>::Type _Type;
+
+ explicit _ListIterator(_NodePtr ptr) : mpNode(ptr) {}
+
+ public:
+ _ListIterator() {}
+ _ListIterator(const _Iter& rhs) : mpNode(rhs.mpNode) {}
+ ~_ListIterator() {}
+
+ // this will handle conversions from iterator to const_iterator
+ // (and also all convertible iterators)
+ // Here, in this implementation, the iterators can be converted
+ // if the nodes can be converted
+ template<typename V> explicit
+ _ListIterator(const V& rhs) : mpNode(rhs.mpNode) {}
+
+
+ /*
+ * Dereference operator. Used to get at the juicy insides.
+ */
+ _Type& operator*() const { return mpNode->getRef(); }
+ _Type* operator->() const { return &(mpNode->getRef()); }
+
+ /*
+ * Iterator comparison.
+ */
+ inline bool operator==(const _Iter& right) const {
+ return mpNode == right.mpNode; }
+
+ inline bool operator!=(const _Iter& right) const {
+ return mpNode != right.mpNode; }
+
+ /*
+ * handle comparisons between iterator and const_iterator
+ */
+ template<typename OTHER>
+ inline bool operator==(const OTHER& right) const {
+ return mpNode == right.mpNode; }
+
+ template<typename OTHER>
+ inline bool operator!=(const OTHER& right) const {
+ return mpNode != right.mpNode; }
+
+ /*
+ * Incr/decr, used to move through the list.
+ */
+ inline _Iter& operator++() { // pre-increment
+ mpNode = mpNode->getNext();
+ return *this;
+ }
+ const _Iter operator++(int) { // post-increment
+ _Iter tmp(*this);
+ mpNode = mpNode->getNext();
+ return tmp;
+ }
+ inline _Iter& operator--() { // pre-increment
+ mpNode = mpNode->getPrev();
+ return *this;
+ }
+ const _Iter operator--(int) { // post-increment
+ _Iter tmp(*this);
+ mpNode = mpNode->getPrev();
+ return tmp;
+ }
+
+ inline _NodePtr getNode() const { return mpNode; }
+
+ _NodePtr mpNode; /* should be private, but older gcc fails */
+ private:
+ friend class List;
+ };
+
+public:
+ List() {
+ prep();
+ }
+ List(const List<T>& src) { // copy-constructor
+ prep();
+ insert(begin(), src.begin(), src.end());
+ }
+ virtual ~List() {
+ clear();
+ delete[] (unsigned char*) mpMiddle;
+ }
+
+ typedef _ListIterator<T, NON_CONST_ITERATOR> iterator;
+ typedef _ListIterator<T, CONST_ITERATOR> const_iterator;
+
+ List<T>& operator=(const List<T>& right);
+
+ /* returns true if the list is empty */
+ inline bool empty() const { return mpMiddle->getNext() == mpMiddle; }
+
+ /* return #of elements in list */
+ size_t size() const {
+ return size_t(distance(begin(), end()));
+ }
+
+ /*
+ * Return the first element or one past the last element. The
+ * _Node* we're returning is converted to an "iterator" by a
+ * constructor in _ListIterator.
+ */
+ inline iterator begin() {
+ return iterator(mpMiddle->getNext());
+ }
+ inline const_iterator begin() const {
+ return const_iterator(const_cast<_Node const*>(mpMiddle->getNext()));
+ }
+ inline iterator end() {
+ return iterator(mpMiddle);
+ }
+ inline const_iterator end() const {
+ return const_iterator(const_cast<_Node const*>(mpMiddle));
+ }
+
+ /* add the object to the head or tail of the list */
+ void push_front(const T& val) { insert(begin(), val); }
+ void push_back(const T& val) { insert(end(), val); }
+
+ /* insert before the current node; returns iterator at new node */
+ iterator insert(iterator posn, const T& val)
+ {
+ _Node* newNode = new _Node(val); // alloc & copy-construct
+ newNode->setNext(posn.getNode());
+ newNode->setPrev(posn.getNode()->getPrev());
+ posn.getNode()->getPrev()->setNext(newNode);
+ posn.getNode()->setPrev(newNode);
+ return iterator(newNode);
+ }
+
+ /* insert a range of elements before the current node */
+ void insert(iterator posn, const_iterator first, const_iterator last) {
+ for ( ; first != last; ++first)
+ insert(posn, *first);
+ }
+
+ /* remove one entry; returns iterator at next node */
+ iterator erase(iterator posn) {
+ _Node* pNext = posn.getNode()->getNext();
+ _Node* pPrev = posn.getNode()->getPrev();
+ pPrev->setNext(pNext);
+ pNext->setPrev(pPrev);
+ delete posn.getNode();
+ return iterator(pNext);
+ }
+
+ /* remove a range of elements */
+ iterator erase(iterator first, iterator last) {
+ while (first != last)
+ erase(first++); // don't erase than incr later!
+ return iterator(last);
+ }
+
+ /* remove all contents of the list */
+ void clear() {
+ _Node* pCurrent = mpMiddle->getNext();
+ _Node* pNext;
+
+ while (pCurrent != mpMiddle) {
+ pNext = pCurrent->getNext();
+ delete pCurrent;
+ pCurrent = pNext;
+ }
+ mpMiddle->setPrev(mpMiddle);
+ mpMiddle->setNext(mpMiddle);
+ }
+
+ /*
+ * Measure the distance between two iterators. On exist, "first"
+ * will be equal to "last". The iterators must refer to the same
+ * list.
+ *
+ * FIXME: This is actually a generic iterator function. It should be a
+ * template function at the top-level with specializations for things like
+ * vector<>, which can just do pointer math). Here we limit it to
+ * _ListIterator of the same type but different constness.
+ */
+ template<
+ typename U,
+ template <class> class CL,
+ template <class> class CR
+ >
+ ptrdiff_t distance(
+ _ListIterator<U, CL> first, _ListIterator<U, CR> last) const
+ {
+ ptrdiff_t count = 0;
+ while (first != last) {
+ ++first;
+ ++count;
+ }
+ return count;
+ }
+
+private:
+ /*
+ * I want a _Node but don't need it to hold valid data. More
+ * to the point, I don't want T's constructor to fire, since it
+ * might have side-effects or require arguments. So, we do this
+ * slightly uncouth storage alloc.
+ */
+ void prep() {
+ mpMiddle = (_Node*) new unsigned char[sizeof(_Node)];
+ mpMiddle->setPrev(mpMiddle);
+ mpMiddle->setNext(mpMiddle);
+ }
+
+ /*
+ * This node plays the role of "pointer to head" and "pointer to tail".
+ * It sits in the middle of a circular list of nodes. The iterator
+ * runs around the circle until it encounters this one.
+ */
+ _Node* mpMiddle;
+};
+
+/*
+ * Assignment operator.
+ *
+ * The simplest way to do this would be to clear out the target list and
+ * fill it with the source. However, we can speed things along by
+ * re-using existing elements.
+ */
+template<class T>
+List<T>& List<T>::operator=(const List<T>& right)
+{
+ if (this == &right)
+ return *this; // self-assignment
+ iterator firstDst = begin();
+ iterator lastDst = end();
+ const_iterator firstSrc = right.begin();
+ const_iterator lastSrc = right.end();
+ while (firstSrc != lastSrc && firstDst != lastDst)
+ *firstDst++ = *firstSrc++;
+ if (firstSrc == lastSrc) // ran out of elements in source?
+ erase(firstDst, lastDst); // yes, erase any extras
+ else
+ insert(lastDst, firstSrc, lastSrc); // copy remaining over
+ return *this;
+}
+
+} // namespace android
+
+#endif // _LIBS_UTILS_LIST_H
diff --git a/android/android-emugl/guest/utils/Log.h b/android/android-emugl/guest/utils/Log.h
new file mode 100644
index 0000000000..42e03e7c44
--- /dev/null
+++ b/android/android-emugl/guest/utils/Log.h
@@ -0,0 +1,7 @@
+// DO NOT INCLUDE ANYTHING NEW IN THIS FILE.
+
+// <log/log.h> has replaced this file and all changes should go there instead.
+// This path remains strictly to include that header as there are thousands of
+// references to <utils/Log.h> in the tree.
+
+#include <log/log.h>
diff --git a/android/android-emugl/guest/utils/Mutex.h b/android/android-emugl/guest/utils/Mutex.h
new file mode 100644
index 0000000000..1228df4cd5
--- /dev/null
+++ b/android/android-emugl/guest/utils/Mutex.h
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_MUTEX_H
+#define _LIBS_UTILS_MUTEX_H
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <time.h>
+
+#if !defined(_WIN32)
+# include <pthread.h>
+#endif
+
+#include <utils/Errors.h>
+#include <utils/Timers.h>
+
+// Enable thread safety attributes only with clang.
+// The attributes can be safely erased when compiling with other compilers.
+#if defined(__clang__) && (!defined(SWIG))
+#define THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x))
+#else
+#define THREAD_ANNOTATION_ATTRIBUTE__(x) // no-op
+#endif
+
+#define CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(capability(x))
+
+#define SCOPED_CAPABILITY THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)
+
+#define GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))
+
+#define PT_GUARDED_BY(x) THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))
+
+#define ACQUIRED_BEFORE(...) THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(__VA_ARGS__))
+
+#define ACQUIRED_AFTER(...) THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(__VA_ARGS__))
+
+#define REQUIRES(...) THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(__VA_ARGS__))
+
+#define REQUIRES_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(__VA_ARGS__))
+
+#define ACQUIRE(...) THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(__VA_ARGS__))
+
+#define ACQUIRE_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(__VA_ARGS__))
+
+#define RELEASE(...) THREAD_ANNOTATION_ATTRIBUTE__(release_capability(__VA_ARGS__))
+
+#define RELEASE_SHARED(...) THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(__VA_ARGS__))
+
+#define TRY_ACQUIRE(...) THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(__VA_ARGS__))
+
+#define TRY_ACQUIRE_SHARED(...) \
+ THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(__VA_ARGS__))
+
+#define EXCLUDES(...) THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(__VA_ARGS__))
+
+#define ASSERT_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))
+
+#define ASSERT_SHARED_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))
+
+#define RETURN_CAPABILITY(x) THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))
+
+#define NO_THREAD_SAFETY_ANALYSIS THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)
+
+// ---------------------------------------------------------------------------
+namespace android {
+// ---------------------------------------------------------------------------
+
+class Condition;
+
+/*
+ * NOTE: This class is for code that builds on Win32. Its usage is
+ * deprecated for code which doesn't build for Win32. New code which
+ * doesn't build for Win32 should use std::mutex and std::lock_guard instead.
+ *
+ * Simple mutex class. The implementation is system-dependent.
+ *
+ * The mutex must be unlocked by the thread that locked it. They are not
+ * recursive, i.e. the same thread can't lock it multiple times.
+ */
+class CAPABILITY("mutex") Mutex {
+ public:
+ enum {
+ PRIVATE = 0,
+ SHARED = 1
+ };
+
+ Mutex();
+ explicit Mutex(const char* name);
+ explicit Mutex(int type, const char* name = NULL);
+ ~Mutex();
+
+ // lock or unlock the mutex
+ status_t lock() ACQUIRE();
+ void unlock() RELEASE();
+
+ // lock if possible; returns 0 on success, error otherwise
+ status_t tryLock() TRY_ACQUIRE(true);
+
+#if defined(__ANDROID__)
+ // Lock the mutex, but don't wait longer than timeoutNs (relative time).
+ // Returns 0 on success, TIMED_OUT for failure due to timeout expiration.
+ //
+ // OSX doesn't have pthread_mutex_timedlock() or equivalent. To keep
+ // capabilities consistent across host OSes, this method is only available
+ // when building Android binaries.
+ //
+ // FIXME?: pthread_mutex_timedlock is based on CLOCK_REALTIME,
+ // which is subject to NTP adjustments, and includes time during suspend,
+ // so a timeout may occur even though no processes could run.
+ // Not holding a partial wakelock may lead to a system suspend.
+ status_t timedLock(nsecs_t timeoutNs) TRY_ACQUIRE(true);
+#endif
+
+ // Manages the mutex automatically. It'll be locked when Autolock is
+ // constructed and released when Autolock goes out of scope.
+ class SCOPED_CAPABILITY Autolock {
+ public:
+ inline explicit Autolock(Mutex& mutex) ACQUIRE(mutex) : mLock(mutex) { mLock.lock(); }
+ inline explicit Autolock(Mutex* mutex) ACQUIRE(mutex) : mLock(*mutex) { mLock.lock(); }
+ inline ~Autolock() RELEASE() { mLock.unlock(); }
+
+ private:
+ Mutex& mLock;
+ // Cannot be copied or moved - declarations only
+ Autolock(const Autolock&);
+ Autolock& operator=(const Autolock&);
+ };
+
+ private:
+ friend class Condition;
+
+ // A mutex cannot be copied
+ Mutex(const Mutex&);
+ Mutex& operator=(const Mutex&);
+
+#if !defined(_WIN32)
+ pthread_mutex_t mMutex;
+#else
+ void _init();
+ void* mState;
+#endif
+};
+
+// ---------------------------------------------------------------------------
+
+#if !defined(_WIN32)
+
+inline Mutex::Mutex() {
+ pthread_mutex_init(&mMutex, NULL);
+}
+inline Mutex::Mutex(__attribute__((unused)) const char* name) {
+ pthread_mutex_init(&mMutex, NULL);
+}
+inline Mutex::Mutex(int type, __attribute__((unused)) const char* name) {
+ if (type == SHARED) {
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
+ pthread_mutex_init(&mMutex, &attr);
+ pthread_mutexattr_destroy(&attr);
+ } else {
+ pthread_mutex_init(&mMutex, NULL);
+ }
+}
+inline Mutex::~Mutex() {
+ pthread_mutex_destroy(&mMutex);
+}
+inline status_t Mutex::lock() {
+ return -pthread_mutex_lock(&mMutex);
+}
+inline void Mutex::unlock() {
+ pthread_mutex_unlock(&mMutex);
+}
+inline status_t Mutex::tryLock() {
+ return -pthread_mutex_trylock(&mMutex);
+}
+#if defined(__ANDROID__)
+inline status_t Mutex::timedLock(nsecs_t timeoutNs) {
+ timeoutNs += systemTime(SYSTEM_TIME_REALTIME);
+ const struct timespec ts = {
+ /* .tv_sec = */ static_cast<time_t>(timeoutNs / 1000000000),
+ /* .tv_nsec = */ static_cast<long>(timeoutNs % 1000000000),
+ };
+ return -pthread_mutex_timedlock(&mMutex, &ts);
+}
+#endif
+
+#endif // !defined(_WIN32)
+
+// ---------------------------------------------------------------------------
+
+/*
+ * Automatic mutex. Declare one of these at the top of a function.
+ * When the function returns, it will go out of scope, and release the
+ * mutex.
+ */
+
+typedef Mutex::Autolock AutoMutex;
+
+// ---------------------------------------------------------------------------
+} // namespace android
+// ---------------------------------------------------------------------------
+
+#endif // _LIBS_UTILS_MUTEX_H
diff --git a/android/android-emugl/guest/utils/NativeHandle.h b/android/android-emugl/guest/utils/NativeHandle.h
new file mode 100644
index 0000000000..73fe804ccd
--- /dev/null
+++ b/android/android-emugl/guest/utils/NativeHandle.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_NATIVE_HANDLE_H
+#define ANDROID_NATIVE_HANDLE_H
+
+#include <utils/RefBase.h>
+#include <utils/StrongPointer.h>
+
+typedef struct native_handle native_handle_t;
+
+namespace android {
+
+class NativeHandle : public LightRefBase<NativeHandle> {
+public:
+ // Create a refcounted wrapper around a native_handle_t, and declare
+ // whether the wrapper owns the handle (so that it should clean up the
+ // handle upon destruction) or not.
+ // If handle is NULL, no NativeHandle will be created.
+ static sp<NativeHandle> create(native_handle_t* handle, bool ownsHandle);
+
+ const native_handle_t* handle() const {
+ return mHandle;
+ }
+
+private:
+ // for access to the destructor
+ friend class LightRefBase<NativeHandle>;
+
+ NativeHandle(native_handle_t* handle, bool ownsHandle);
+ ~NativeHandle();
+
+ native_handle_t* mHandle;
+ bool mOwnsHandle;
+
+ // non-copyable
+ NativeHandle(const NativeHandle&);
+ NativeHandle& operator=(const NativeHandle&);
+};
+
+} // namespace android
+
+#endif // ANDROID_NATIVE_HANDLE_H
diff --git a/android/android-emugl/guest/utils/RWLock.h b/android/android-emugl/guest/utils/RWLock.h
new file mode 100644
index 0000000000..7d43e69f1a
--- /dev/null
+++ b/android/android-emugl/guest/utils/RWLock.h
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_RWLOCK_H
+#define _LIBS_UTILS_RWLOCK_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+#if !defined(_WIN32)
+# include <pthread.h>
+#endif
+
+#include <utils/Errors.h>
+#include <utils/ThreadDefs.h>
+
+// ---------------------------------------------------------------------------
+namespace android {
+// ---------------------------------------------------------------------------
+
+#if !defined(_WIN32)
+
+/*
+ * Simple mutex class. The implementation is system-dependent.
+ *
+ * The mutex must be unlocked by the thread that locked it. They are not
+ * recursive, i.e. the same thread can't lock it multiple times.
+ */
+class RWLock {
+public:
+ enum {
+ PRIVATE = 0,
+ SHARED = 1
+ };
+
+ RWLock();
+ explicit RWLock(const char* name);
+ explicit RWLock(int type, const char* name = NULL);
+ ~RWLock();
+
+ status_t readLock();
+ status_t tryReadLock();
+ status_t writeLock();
+ status_t tryWriteLock();
+ void unlock();
+
+ class AutoRLock {
+ public:
+ inline explicit AutoRLock(RWLock& rwlock) : mLock(rwlock) { mLock.readLock(); }
+ inline ~AutoRLock() { mLock.unlock(); }
+ private:
+ RWLock& mLock;
+ };
+
+ class AutoWLock {
+ public:
+ inline explicit AutoWLock(RWLock& rwlock) : mLock(rwlock) { mLock.writeLock(); }
+ inline ~AutoWLock() { mLock.unlock(); }
+ private:
+ RWLock& mLock;
+ };
+
+private:
+ // A RWLock cannot be copied
+ RWLock(const RWLock&);
+ RWLock& operator = (const RWLock&);
+
+ pthread_rwlock_t mRWLock;
+};
+
+inline RWLock::RWLock() {
+ pthread_rwlock_init(&mRWLock, NULL);
+}
+inline RWLock::RWLock(__attribute__((unused)) const char* name) {
+ pthread_rwlock_init(&mRWLock, NULL);
+}
+inline RWLock::RWLock(int type, __attribute__((unused)) const char* name) {
+ if (type == SHARED) {
+ pthread_rwlockattr_t attr;
+ pthread_rwlockattr_init(&attr);
+ pthread_rwlockattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
+ pthread_rwlock_init(&mRWLock, &attr);
+ pthread_rwlockattr_destroy(&attr);
+ } else {
+ pthread_rwlock_init(&mRWLock, NULL);
+ }
+}
+inline RWLock::~RWLock() {
+ pthread_rwlock_destroy(&mRWLock);
+}
+inline status_t RWLock::readLock() {
+ return -pthread_rwlock_rdlock(&mRWLock);
+}
+inline status_t RWLock::tryReadLock() {
+ return -pthread_rwlock_tryrdlock(&mRWLock);
+}
+inline status_t RWLock::writeLock() {
+ return -pthread_rwlock_wrlock(&mRWLock);
+}
+inline status_t RWLock::tryWriteLock() {
+ return -pthread_rwlock_trywrlock(&mRWLock);
+}
+inline void RWLock::unlock() {
+ pthread_rwlock_unlock(&mRWLock);
+}
+
+#endif // !defined(_WIN32)
+
+// ---------------------------------------------------------------------------
+} // namespace android
+// ---------------------------------------------------------------------------
+
+#endif // _LIBS_UTILS_RWLOCK_H
diff --git a/android/android-emugl/guest/utils/RefBase.h b/android/android-emugl/guest/utils/RefBase.h
new file mode 100644
index 0000000000..e817ee4d62
--- /dev/null
+++ b/android/android-emugl/guest/utils/RefBase.h
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+// SOME COMMENTS ABOUT USAGE:
+
+// This provides primarily wp<> weak pointer types and RefBase, which work
+// together with sp<> from <StrongPointer.h>.
+
+// sp<> (and wp<>) are a type of smart pointer that use a well defined protocol
+// to operate. As long as the object they are templated with implements that
+// protocol, these smart pointers work. In several places the platform
+// instantiates sp<> with non-RefBase objects; the two are not tied to each
+// other.
+
+// RefBase is such an implementation and it supports strong pointers, weak
+// pointers and some magic features for the binder.
+
+// So, when using RefBase objects, you have the ability to use strong and weak
+// pointers through sp<> and wp<>.
+
+// Normally, when the last strong pointer goes away, the object is destroyed,
+// i.e. it's destructor is called. HOWEVER, parts of its associated memory is not
+// freed until the last weak pointer is released.
+
+// Weak pointers are essentially "safe" pointers. They are always safe to
+// access through promote(). They may return nullptr if the object was
+// destroyed because it ran out of strong pointers. This makes them good candidates
+// for keys in a cache for instance.
+
+// Weak pointers remain valid for comparison purposes even after the underlying
+// object has been destroyed. Even if object A is destroyed and its memory reused
+// for B, A remaining weak pointer to A will not compare equal to one to B.
+// This again makes them attractive for use as keys.
+
+// How is this supposed / intended to be used?
+
+// Our recommendation is to use strong references (sp<>) when there is an
+// ownership relation. e.g. when an object "owns" another one, use a strong
+// ref. And of course use strong refs as arguments of functions (it's extremely
+// rare that a function will take a wp<>).
+
+// Typically a newly allocated object will immediately be used to initialize
+// a strong pointer, which may then be used to construct or assign to other
+// strong and weak pointers.
+
+// Use weak references when there are no ownership relation. e.g. the keys in a
+// cache (you cannot use plain pointers because there is no safe way to acquire
+// a strong reference from a vanilla pointer).
+
+// This implies that two objects should never (or very rarely) have sp<> on
+// each other, because they can't both own each other.
+
+
+// Caveats with reference counting
+
+// Obviously, circular strong references are a big problem; this creates leaks
+// and it's hard to debug -- except it's in fact really easy because RefBase has
+// tons of debugging code for that. It can basically tell you exactly where the
+// leak is.
+
+// Another problem has to do with destructors with side effects. You must
+// assume that the destructor of reference counted objects can be called AT ANY
+// TIME. For instance code as simple as this:
+
+// void setStuff(const sp<Stuff>& stuff) {
+// std::lock_guard<std::mutex> lock(mMutex);
+// mStuff = stuff;
+// }
+
+// is very dangerous. This code WILL deadlock one day or another.
+
+// What isn't obvious is that ~Stuff() can be called as a result of the
+// assignment. And it gets called with the lock held. First of all, the lock is
+// protecting mStuff, not ~Stuff(). Secondly, if ~Stuff() uses its own internal
+// mutex, now you have mutex ordering issues. Even worse, if ~Stuff() is
+// virtual, now you're calling into "user" code (potentially), by that, I mean,
+// code you didn't even write.
+
+// A correct way to write this code is something like:
+
+// void setStuff(const sp<Stuff>& stuff) {
+// std::unique_lock<std::mutex> lock(mMutex);
+// sp<Stuff> hold = mStuff;
+// mStuff = stuff;
+// lock.unlock();
+// }
+
+// More importantly, reference counted objects should do as little work as
+// possible in their destructor, or at least be mindful that their destructor
+// could be called from very weird and unintended places.
+
+// Other more specific restrictions for wp<> and sp<>:
+
+// Do not construct a strong pointer to "this" in an object's constructor.
+// The onFirstRef() callback would be made on an incompletely constructed
+// object.
+// Construction of a weak pointer to "this" in an object's constructor is also
+// discouraged. But the implementation was recently changed so that, in the
+// absence of extendObjectLifetime() calls, weak pointers no longer impact
+// object lifetime, and hence this no longer risks premature deallocation,
+// and hence usually works correctly.
+
+// Such strong or weak pointers can be safely created in the RefBase onFirstRef()
+// callback.
+
+// Use of wp::unsafe_get() for any purpose other than debugging is almost
+// always wrong. Unless you somehow know that there is a longer-lived sp<> to
+// the same object, it may well return a pointer to a deallocated object that
+// has since been reallocated for a different purpose. (And if you know there
+// is a longer-lived sp<>, why not use an sp<> directly?) A wp<> should only be
+// dereferenced by using promote().
+
+// Any object inheriting from RefBase should always be destroyed as the result
+// of a reference count decrement, not via any other means. Such objects
+// should never be stack allocated, or appear directly as data members in other
+// objects. Objects inheriting from RefBase should have their strong reference
+// count incremented as soon as possible after construction. Usually this
+// will be done via construction of an sp<> to the object, but may instead
+// involve other means of calling RefBase::incStrong().
+// Explicitly deleting or otherwise destroying a RefBase object with outstanding
+// wp<> or sp<> pointers to it will result in an abort or heap corruption.
+
+// It is particularly important not to mix sp<> and direct storage management
+// since the sp from raw pointer constructor is implicit. Thus if a RefBase-
+// -derived object of type T is managed without ever incrementing its strong
+// count, and accidentally passed to f(sp<T>), a strong pointer to the object
+// will be temporarily constructed and destroyed, prematurely deallocating the
+// object, and resulting in heap corruption. None of this would be easily
+// visible in the source.
+
+// Extra Features:
+
+// RefBase::extendObjectLifetime() can be used to prevent destruction of the
+// object while there are still weak references. This is really special purpose
+// functionality to support Binder.
+
+// Wp::promote(), implemented via the attemptIncStrong() member function, is
+// used to try to convert a weak pointer back to a strong pointer. It's the
+// normal way to try to access the fields of an object referenced only through
+// a wp<>. Binder code also sometimes uses attemptIncStrong() directly.
+
+// RefBase provides a number of additional callbacks for certain reference count
+// events, as well as some debugging facilities.
+
+// Debugging support can be enabled by turning on DEBUG_REFS in RefBase.cpp.
+// Otherwise little checking is provided.
+
+// Thread safety:
+
+// Like std::shared_ptr, sp<> and wp<> allow concurrent accesses to DIFFERENT
+// sp<> and wp<> instances that happen to refer to the same underlying object.
+// They do NOT support concurrent access (where at least one access is a write)
+// to THE SAME sp<> or wp<>. In effect, their thread-safety properties are
+// exactly like those of T*, NOT atomic<T*>.
+
+#ifndef ANDROID_REF_BASE_H
+#define ANDROID_REF_BASE_H
+
+#include <atomic>
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <stdlib.h>
+#include <string.h>
+
+// LightRefBase used to be declared in this header, so we have to include it
+#include <utils/LightRefBase.h>
+
+#include <utils/StrongPointer.h>
+#include <utils/TypeHelpers.h>
+
+// ---------------------------------------------------------------------------
+namespace android {
+
+class TextOutput;
+TextOutput& printWeakPointer(TextOutput& to, const void* val);
+
+// ---------------------------------------------------------------------------
+
+#define COMPARE_WEAK(_op_) \
+inline bool operator _op_ (const sp<T>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+} \
+inline bool operator _op_ (const T* o) const { \
+ return m_ptr _op_ o; \
+} \
+template<typename U> \
+inline bool operator _op_ (const sp<U>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+} \
+template<typename U> \
+inline bool operator _op_ (const U* o) const { \
+ return m_ptr _op_ o; \
+}
+
+// ---------------------------------------------------------------------------
+
+// RefererenceRenamer is pure abstract, there is no virtual method
+// implementation to put in a translation unit in order to silence the
+// weak vtables warning.
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wweak-vtables"
+#endif
+
+class ReferenceRenamer {
+protected:
+ // destructor is purposely not virtual so we avoid code overhead from
+ // subclasses; we have to make it protected to guarantee that it
+ // cannot be called from this base class (and to make strict compilers
+ // happy).
+ ~ReferenceRenamer() { }
+public:
+ virtual void operator()(size_t i) const = 0;
+};
+
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+
+// ---------------------------------------------------------------------------
+
+class RefBase
+{
+public:
+ void incStrong(const void* id) const;
+ void decStrong(const void* id) const;
+
+ void forceIncStrong(const void* id) const;
+
+ //! DEBUGGING ONLY: Get current strong ref count.
+ int32_t getStrongCount() const;
+
+ class weakref_type
+ {
+ public:
+ RefBase* refBase() const;
+
+ void incWeak(const void* id);
+ void decWeak(const void* id);
+
+ // acquires a strong reference if there is already one.
+ bool attemptIncStrong(const void* id);
+
+ // acquires a weak reference if there is already one.
+ // This is not always safe. see ProcessState.cpp and BpBinder.cpp
+ // for proper use.
+ bool attemptIncWeak(const void* id);
+
+ //! DEBUGGING ONLY: Get current weak ref count.
+ int32_t getWeakCount() const;
+
+ //! DEBUGGING ONLY: Print references held on object.
+ void printRefs() const;
+
+ //! DEBUGGING ONLY: Enable tracking for this object.
+ // enable -- enable/disable tracking
+ // retain -- when tracking is enable, if true, then we save a stack trace
+ // for each reference and dereference; when retain == false, we
+ // match up references and dereferences and keep only the
+ // outstanding ones.
+
+ void trackMe(bool enable, bool retain);
+ };
+
+ weakref_type* createWeak(const void* id) const;
+
+ weakref_type* getWeakRefs() const;
+
+ //! DEBUGGING ONLY: Print references held on object.
+ inline void printRefs() const { getWeakRefs()->printRefs(); }
+
+ //! DEBUGGING ONLY: Enable tracking of object.
+ inline void trackMe(bool enable, bool retain)
+ {
+ getWeakRefs()->trackMe(enable, retain);
+ }
+
+ typedef RefBase basetype;
+
+protected:
+ RefBase();
+ virtual ~RefBase();
+
+ //! Flags for extendObjectLifetime()
+ enum {
+ OBJECT_LIFETIME_STRONG = 0x0000,
+ OBJECT_LIFETIME_WEAK = 0x0001,
+ OBJECT_LIFETIME_MASK = 0x0001
+ };
+
+ void extendObjectLifetime(int32_t mode);
+
+ //! Flags for onIncStrongAttempted()
+ enum {
+ FIRST_INC_STRONG = 0x0001
+ };
+
+ // Invoked after creation of initial strong pointer/reference.
+ virtual void onFirstRef();
+ // Invoked when either the last strong reference goes away, or we need to undo
+ // the effect of an unnecessary onIncStrongAttempted.
+ virtual void onLastStrongRef(const void* id);
+ // Only called in OBJECT_LIFETIME_WEAK case. Returns true if OK to promote to
+ // strong reference. May have side effects if it returns true.
+ // The first flags argument is always FIRST_INC_STRONG.
+ // TODO: Remove initial flag argument.
+ virtual bool onIncStrongAttempted(uint32_t flags, const void* id);
+ // Invoked in the OBJECT_LIFETIME_WEAK case when the last reference of either
+ // kind goes away. Unused.
+ // TODO: Remove.
+ virtual void onLastWeakRef(const void* id);
+
+private:
+ friend class weakref_type;
+ class weakref_impl;
+
+ RefBase(const RefBase& o);
+ RefBase& operator=(const RefBase& o);
+
+private:
+ friend class ReferenceMover;
+
+ static void renameRefs(size_t n, const ReferenceRenamer& renamer);
+
+ static void renameRefId(weakref_type* ref,
+ const void* old_id, const void* new_id);
+
+ static void renameRefId(RefBase* ref,
+ const void* old_id, const void* new_id);
+
+ weakref_impl* const mRefs;
+};
+
+// ---------------------------------------------------------------------------
+
+template <typename T>
+class wp
+{
+public:
+ typedef typename RefBase::weakref_type weakref_type;
+
+ inline wp() : m_ptr(0) { }
+
+ wp(T* other); // NOLINT(implicit)
+ wp(const wp<T>& other);
+ explicit wp(const sp<T>& other);
+ template<typename U> wp(U* other); // NOLINT(implicit)
+ template<typename U> wp(const sp<U>& other); // NOLINT(implicit)
+ template<typename U> wp(const wp<U>& other); // NOLINT(implicit)
+
+ ~wp();
+
+ // Assignment
+
+ wp& operator = (T* other);
+ wp& operator = (const wp<T>& other);
+ wp& operator = (const sp<T>& other);
+
+ template<typename U> wp& operator = (U* other);
+ template<typename U> wp& operator = (const wp<U>& other);
+ template<typename U> wp& operator = (const sp<U>& other);
+
+ void set_object_and_refs(T* other, weakref_type* refs);
+
+ // promotion to sp
+
+ sp<T> promote() const;
+
+ // Reset
+
+ void clear();
+
+ // Accessors
+
+ inline weakref_type* get_refs() const { return m_refs; }
+
+ inline T* unsafe_get() const { return m_ptr; }
+
+ // Operators
+
+ COMPARE_WEAK(==)
+ COMPARE_WEAK(!=)
+ COMPARE_WEAK(>)
+ COMPARE_WEAK(<)
+ COMPARE_WEAK(<=)
+ COMPARE_WEAK(>=)
+
+ inline bool operator == (const wp<T>& o) const {
+ return (m_ptr == o.m_ptr) && (m_refs == o.m_refs);
+ }
+ template<typename U>
+ inline bool operator == (const wp<U>& o) const {
+ return m_ptr == o.m_ptr;
+ }
+
+ inline bool operator > (const wp<T>& o) const {
+ return (m_ptr == o.m_ptr) ? (m_refs > o.m_refs) : (m_ptr > o.m_ptr);
+ }
+ template<typename U>
+ inline bool operator > (const wp<U>& o) const {
+ return (m_ptr == o.m_ptr) ? (m_refs > o.m_refs) : (m_ptr > o.m_ptr);
+ }
+
+ inline bool operator < (const wp<T>& o) const {
+ return (m_ptr == o.m_ptr) ? (m_refs < o.m_refs) : (m_ptr < o.m_ptr);
+ }
+ template<typename U>
+ inline bool operator < (const wp<U>& o) const {
+ return (m_ptr == o.m_ptr) ? (m_refs < o.m_refs) : (m_ptr < o.m_ptr);
+ }
+ inline bool operator != (const wp<T>& o) const { return m_refs != o.m_refs; }
+ template<typename U> inline bool operator != (const wp<U>& o) const { return !operator == (o); }
+ inline bool operator <= (const wp<T>& o) const { return !operator > (o); }
+ template<typename U> inline bool operator <= (const wp<U>& o) const { return !operator > (o); }
+ inline bool operator >= (const wp<T>& o) const { return !operator < (o); }
+ template<typename U> inline bool operator >= (const wp<U>& o) const { return !operator < (o); }
+
+private:
+ template<typename Y> friend class sp;
+ template<typename Y> friend class wp;
+
+ T* m_ptr;
+ weakref_type* m_refs;
+};
+
+template <typename T>
+TextOutput& operator<<(TextOutput& to, const wp<T>& val);
+
+#undef COMPARE_WEAK
+
+// ---------------------------------------------------------------------------
+// No user serviceable parts below here.
+
+template<typename T>
+wp<T>::wp(T* other)
+ : m_ptr(other)
+{
+ if (other) m_refs = other->createWeak(this);
+}
+
+template<typename T>
+wp<T>::wp(const wp<T>& other)
+ : m_ptr(other.m_ptr), m_refs(other.m_refs)
+{
+ if (m_ptr) m_refs->incWeak(this);
+}
+
+template<typename T>
+wp<T>::wp(const sp<T>& other)
+ : m_ptr(other.m_ptr)
+{
+ if (m_ptr) {
+ m_refs = m_ptr->createWeak(this);
+ }
+}
+
+template<typename T> template<typename U>
+wp<T>::wp(U* other)
+ : m_ptr(other)
+{
+ if (other) m_refs = other->createWeak(this);
+}
+
+template<typename T> template<typename U>
+wp<T>::wp(const wp<U>& other)
+ : m_ptr(other.m_ptr)
+{
+ if (m_ptr) {
+ m_refs = other.m_refs;
+ m_refs->incWeak(this);
+ }
+}
+
+template<typename T> template<typename U>
+wp<T>::wp(const sp<U>& other)
+ : m_ptr(other.m_ptr)
+{
+ if (m_ptr) {
+ m_refs = m_ptr->createWeak(this);
+ }
+}
+
+template<typename T>
+wp<T>::~wp()
+{
+ if (m_ptr) m_refs->decWeak(this);
+}
+
+template<typename T>
+wp<T>& wp<T>::operator = (T* other)
+{
+ weakref_type* newRefs =
+ other ? other->createWeak(this) : 0;
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = other;
+ m_refs = newRefs;
+ return *this;
+}
+
+template<typename T>
+wp<T>& wp<T>::operator = (const wp<T>& other)
+{
+ weakref_type* otherRefs(other.m_refs);
+ T* otherPtr(other.m_ptr);
+ if (otherPtr) otherRefs->incWeak(this);
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = otherPtr;
+ m_refs = otherRefs;
+ return *this;
+}
+
+template<typename T>
+wp<T>& wp<T>::operator = (const sp<T>& other)
+{
+ weakref_type* newRefs =
+ other != NULL ? other->createWeak(this) : 0;
+ T* otherPtr(other.m_ptr);
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = otherPtr;
+ m_refs = newRefs;
+ return *this;
+}
+
+template<typename T> template<typename U>
+wp<T>& wp<T>::operator = (U* other)
+{
+ weakref_type* newRefs =
+ other ? other->createWeak(this) : 0;
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = other;
+ m_refs = newRefs;
+ return *this;
+}
+
+template<typename T> template<typename U>
+wp<T>& wp<T>::operator = (const wp<U>& other)
+{
+ weakref_type* otherRefs(other.m_refs);
+ U* otherPtr(other.m_ptr);
+ if (otherPtr) otherRefs->incWeak(this);
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = otherPtr;
+ m_refs = otherRefs;
+ return *this;
+}
+
+template<typename T> template<typename U>
+wp<T>& wp<T>::operator = (const sp<U>& other)
+{
+ weakref_type* newRefs =
+ other != NULL ? other->createWeak(this) : 0;
+ U* otherPtr(other.m_ptr);
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = otherPtr;
+ m_refs = newRefs;
+ return *this;
+}
+
+template<typename T>
+void wp<T>::set_object_and_refs(T* other, weakref_type* refs)
+{
+ if (other) refs->incWeak(this);
+ if (m_ptr) m_refs->decWeak(this);
+ m_ptr = other;
+ m_refs = refs;
+}
+
+template<typename T>
+sp<T> wp<T>::promote() const
+{
+ sp<T> result;
+ if (m_ptr && m_refs->attemptIncStrong(&result)) {
+ result.set_pointer(m_ptr);
+ }
+ return result;
+}
+
+template<typename T>
+void wp<T>::clear()
+{
+ if (m_ptr) {
+ m_refs->decWeak(this);
+ m_ptr = 0;
+ }
+}
+
+template <typename T>
+inline TextOutput& operator<<(TextOutput& to, const wp<T>& val)
+{
+ return printWeakPointer(to, val.unsafe_get());
+}
+
+// ---------------------------------------------------------------------------
+
+// this class just serves as a namespace so TYPE::moveReferences can stay
+// private.
+class ReferenceMover {
+public:
+ // it would be nice if we could make sure no extra code is generated
+ // for sp<TYPE> or wp<TYPE> when TYPE is a descendant of RefBase:
+ // Using a sp<RefBase> override doesn't work; it's a bit like we wanted
+ // a template<typename TYPE inherits RefBase> template...
+
+ template<typename TYPE> static inline
+ void move_references(sp<TYPE>* dest, sp<TYPE> const* src, size_t n) {
+
+ class Renamer : public ReferenceRenamer {
+ sp<TYPE>* d_;
+ sp<TYPE> const* s_;
+ virtual void operator()(size_t i) const {
+ // The id are known to be the sp<>'s this pointer
+ TYPE::renameRefId(d_[i].get(), &s_[i], &d_[i]);
+ }
+ public:
+ Renamer(sp<TYPE>* d, sp<TYPE> const* s) : d_(d), s_(s) { }
+ virtual ~Renamer() { }
+ };
+
+ memmove(dest, src, n*sizeof(sp<TYPE>));
+ TYPE::renameRefs(n, Renamer(dest, src));
+ }
+
+
+ template<typename TYPE> static inline
+ void move_references(wp<TYPE>* dest, wp<TYPE> const* src, size_t n) {
+
+ class Renamer : public ReferenceRenamer {
+ wp<TYPE>* d_;
+ wp<TYPE> const* s_;
+ virtual void operator()(size_t i) const {
+ // The id are known to be the wp<>'s this pointer
+ TYPE::renameRefId(d_[i].get_refs(), &s_[i], &d_[i]);
+ }
+ public:
+ Renamer(wp<TYPE>* rd, wp<TYPE> const* rs) : d_(rd), s_(rs) { }
+ virtual ~Renamer() { }
+ };
+
+ memmove(dest, src, n*sizeof(wp<TYPE>));
+ TYPE::renameRefs(n, Renamer(dest, src));
+ }
+};
+
+// specialization for moving sp<> and wp<> types.
+// these are used by the [Sorted|Keyed]Vector<> implementations
+// sp<> and wp<> need to be handled specially, because they do not
+// have trivial copy operation in the general case (see RefBase.cpp
+// when DEBUG ops are enabled), but can be implemented very
+// efficiently in most cases.
+
+template<typename TYPE> inline
+void move_forward_type(sp<TYPE>* d, sp<TYPE> const* s, size_t n) {
+ ReferenceMover::move_references(d, s, n);
+}
+
+template<typename TYPE> inline
+void move_backward_type(sp<TYPE>* d, sp<TYPE> const* s, size_t n) {
+ ReferenceMover::move_references(d, s, n);
+}
+
+template<typename TYPE> inline
+void move_forward_type(wp<TYPE>* d, wp<TYPE> const* s, size_t n) {
+ ReferenceMover::move_references(d, s, n);
+}
+
+template<typename TYPE> inline
+void move_backward_type(wp<TYPE>* d, wp<TYPE> const* s, size_t n) {
+ ReferenceMover::move_references(d, s, n);
+}
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_REF_BASE_H
diff --git a/android/android-emugl/guest/utils/String16.h b/android/android-emugl/guest/utils/String16.h
new file mode 100644
index 0000000000..afbc2edc50
--- /dev/null
+++ b/android/android-emugl/guest/utils/String16.h
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_STRING16_H
+#define ANDROID_STRING16_H
+
+#include <string> // for std::string
+
+#include <utils/Errors.h>
+#include <utils/String8.h>
+#include <utils/TypeHelpers.h>
+
+// ---------------------------------------------------------------------------
+
+extern "C" {
+
+}
+
+// ---------------------------------------------------------------------------
+
+namespace android {
+
+// ---------------------------------------------------------------------------
+
+class String8;
+
+// DO NOT USE: please use std::u16string
+
+//! This is a string holding UTF-16 characters.
+class String16
+{
+public:
+ /* use String16(StaticLinkage) if you're statically linking against
+ * libutils and declaring an empty static String16, e.g.:
+ *
+ * static String16 sAStaticEmptyString(String16::kEmptyString);
+ * static String16 sAnotherStaticEmptyString(sAStaticEmptyString);
+ */
+ enum StaticLinkage { kEmptyString };
+
+ String16();
+ explicit String16(StaticLinkage);
+ String16(const String16& o);
+ String16(const String16& o,
+ size_t len,
+ size_t begin=0);
+ explicit String16(const char16_t* o);
+ explicit String16(const char16_t* o, size_t len);
+ explicit String16(const String8& o);
+ explicit String16(const char* o);
+ explicit String16(const char* o, size_t len);
+
+ ~String16();
+
+ inline const char16_t* string() const;
+
+private:
+ static inline std::string std_string(const String16& str);
+public:
+ size_t size() const;
+ void setTo(const String16& other);
+ status_t setTo(const char16_t* other);
+ status_t setTo(const char16_t* other, size_t len);
+ status_t setTo(const String16& other,
+ size_t len,
+ size_t begin=0);
+
+ status_t append(const String16& other);
+ status_t append(const char16_t* other, size_t len);
+
+ inline String16& operator=(const String16& other);
+
+ inline String16& operator+=(const String16& other);
+ inline String16 operator+(const String16& other) const;
+
+ status_t insert(size_t pos, const char16_t* chrs);
+ status_t insert(size_t pos,
+ const char16_t* chrs, size_t len);
+
+ ssize_t findFirst(char16_t c) const;
+ ssize_t findLast(char16_t c) const;
+
+ bool startsWith(const String16& prefix) const;
+ bool startsWith(const char16_t* prefix) const;
+
+ bool contains(const char16_t* chrs) const;
+
+ status_t makeLower();
+
+ status_t replaceAll(char16_t replaceThis,
+ char16_t withThis);
+
+ status_t remove(size_t len, size_t begin=0);
+
+ inline int compare(const String16& other) const;
+
+ inline bool operator<(const String16& other) const;
+ inline bool operator<=(const String16& other) const;
+ inline bool operator==(const String16& other) const;
+ inline bool operator!=(const String16& other) const;
+ inline bool operator>=(const String16& other) const;
+ inline bool operator>(const String16& other) const;
+
+ inline bool operator<(const char16_t* other) const;
+ inline bool operator<=(const char16_t* other) const;
+ inline bool operator==(const char16_t* other) const;
+ inline bool operator!=(const char16_t* other) const;
+ inline bool operator>=(const char16_t* other) const;
+ inline bool operator>(const char16_t* other) const;
+
+ inline operator const char16_t*() const;
+
+private:
+ const char16_t* mString;
+};
+
+// String16 can be trivially moved using memcpy() because moving does not
+// require any change to the underlying SharedBuffer contents or reference count.
+ANDROID_TRIVIAL_MOVE_TRAIT(String16)
+
+// ---------------------------------------------------------------------------
+// No user servicable parts below.
+
+inline int compare_type(const String16& lhs, const String16& rhs)
+{
+ return lhs.compare(rhs);
+}
+
+inline int strictly_order_type(const String16& lhs, const String16& rhs)
+{
+ return compare_type(lhs, rhs) < 0;
+}
+
+inline const char16_t* String16::string() const
+{
+ return mString;
+}
+
+inline std::string String16::std_string(const String16& str)
+{
+ return std::string(String8(str).string());
+}
+
+inline String16& String16::operator=(const String16& other)
+{
+ setTo(other);
+ return *this;
+}
+
+inline String16& String16::operator+=(const String16& other)
+{
+ append(other);
+ return *this;
+}
+
+inline String16 String16::operator+(const String16& other) const
+{
+ String16 tmp(*this);
+ tmp += other;
+ return tmp;
+}
+
+inline int String16::compare(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size());
+}
+
+inline bool String16::operator<(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) < 0;
+}
+
+inline bool String16::operator<=(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) <= 0;
+}
+
+inline bool String16::operator==(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) == 0;
+}
+
+inline bool String16::operator!=(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) != 0;
+}
+
+inline bool String16::operator>=(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) >= 0;
+}
+
+inline bool String16::operator>(const String16& other) const
+{
+ return strzcmp16(mString, size(), other.mString, other.size()) > 0;
+}
+
+inline bool String16::operator<(const char16_t* other) const
+{
+ return strcmp16(mString, other) < 0;
+}
+
+inline bool String16::operator<=(const char16_t* other) const
+{
+ return strcmp16(mString, other) <= 0;
+}
+
+inline bool String16::operator==(const char16_t* other) const
+{
+ return strcmp16(mString, other) == 0;
+}
+
+inline bool String16::operator!=(const char16_t* other) const
+{
+ return strcmp16(mString, other) != 0;
+}
+
+inline bool String16::operator>=(const char16_t* other) const
+{
+ return strcmp16(mString, other) >= 0;
+}
+
+inline bool String16::operator>(const char16_t* other) const
+{
+ return strcmp16(mString, other) > 0;
+}
+
+inline String16::operator const char16_t*() const
+{
+ return mString;
+}
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_STRING16_H
diff --git a/android/android-emugl/guest/utils/String8.h b/android/android-emugl/guest/utils/String8.h
new file mode 100644
index 0000000000..94ac32fbb2
--- /dev/null
+++ b/android/android-emugl/guest/utils/String8.h
@@ -0,0 +1,414 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_STRING8_H
+#define ANDROID_STRING8_H
+
+#include <string> // for std::string
+
+#include <utils/Errors.h>
+#include <utils/Unicode.h>
+#include <utils/TypeHelpers.h>
+
+#include <string.h> // for strcmp
+#include <stdarg.h>
+
+// ---------------------------------------------------------------------------
+
+namespace android {
+
+class String16;
+
+// DO NOT USE: please use std::string
+
+//! This is a string holding UTF-8 characters. Does not allow the value more
+// than 0x10FFFF, which is not valid unicode codepoint.
+class String8
+{
+public:
+ /* use String8(StaticLinkage) if you're statically linking against
+ * libutils and declaring an empty static String8, e.g.:
+ *
+ * static String8 sAStaticEmptyString(String8::kEmptyString);
+ * static String8 sAnotherStaticEmptyString(sAStaticEmptyString);
+ */
+ enum StaticLinkage { kEmptyString };
+
+ String8();
+ explicit String8(StaticLinkage);
+ String8(const String8& o);
+ explicit String8(const char* o);
+ explicit String8(const char* o, size_t numChars);
+
+ explicit String8(const String16& o);
+ explicit String8(const char16_t* o);
+ explicit String8(const char16_t* o, size_t numChars);
+ explicit String8(const char32_t* o);
+ explicit String8(const char32_t* o, size_t numChars);
+ ~String8();
+
+ static inline const String8 empty();
+
+ static String8 format(const char* fmt, ...) __attribute__((format (printf, 1, 2)));
+ static String8 formatV(const char* fmt, va_list args);
+
+ inline const char* c_str() const;
+ inline const char* string() const;
+
+private:
+ static inline std::string std_string(const String8& str);
+public:
+
+ inline size_t size() const;
+ inline size_t bytes() const;
+ inline bool isEmpty() const;
+
+ size_t length() const;
+
+ void clear();
+
+ void setTo(const String8& other);
+ status_t setTo(const char* other);
+ status_t setTo(const char* other, size_t numChars);
+ status_t setTo(const char16_t* other, size_t numChars);
+ status_t setTo(const char32_t* other,
+ size_t length);
+
+ status_t append(const String8& other);
+ status_t append(const char* other);
+ status_t append(const char* other, size_t numChars);
+
+ status_t appendFormat(const char* fmt, ...)
+ __attribute__((format (printf, 2, 3)));
+ status_t appendFormatV(const char* fmt, va_list args);
+
+ // Note that this function takes O(N) time to calculate the value.
+ // No cache value is stored.
+ size_t getUtf32Length() const;
+ int32_t getUtf32At(size_t index,
+ size_t *next_index) const;
+ void getUtf32(char32_t* dst) const;
+
+ inline String8& operator=(const String8& other);
+ inline String8& operator=(const char* other);
+
+ inline String8& operator+=(const String8& other);
+ inline String8 operator+(const String8& other) const;
+
+ inline String8& operator+=(const char* other);
+ inline String8 operator+(const char* other) const;
+
+ inline int compare(const String8& other) const;
+
+ inline bool operator<(const String8& other) const;
+ inline bool operator<=(const String8& other) const;
+ inline bool operator==(const String8& other) const;
+ inline bool operator!=(const String8& other) const;
+ inline bool operator>=(const String8& other) const;
+ inline bool operator>(const String8& other) const;
+
+ inline bool operator<(const char* other) const;
+ inline bool operator<=(const char* other) const;
+ inline bool operator==(const char* other) const;
+ inline bool operator!=(const char* other) const;
+ inline bool operator>=(const char* other) const;
+ inline bool operator>(const char* other) const;
+
+ inline operator const char*() const;
+
+ char* lockBuffer(size_t size);
+ void unlockBuffer();
+ status_t unlockBuffer(size_t size);
+
+ // return the index of the first byte of other in this at or after
+ // start, or -1 if not found
+ ssize_t find(const char* other, size_t start = 0) const;
+
+ // return true if this string contains the specified substring
+ inline bool contains(const char* other) const;
+
+ // removes all occurrence of the specified substring
+ // returns true if any were found and removed
+ bool removeAll(const char* other);
+
+ void toLower();
+ void toLower(size_t start, size_t numChars);
+ void toUpper();
+ void toUpper(size_t start, size_t numChars);
+
+
+ /*
+ * These methods operate on the string as if it were a path name.
+ */
+
+ /*
+ * Set the filename field to a specific value.
+ *
+ * Normalizes the filename, removing a trailing '/' if present.
+ */
+ void setPathName(const char* name);
+ void setPathName(const char* name, size_t numChars);
+
+ /*
+ * Get just the filename component.
+ *
+ * "/tmp/foo/bar.c" --> "bar.c"
+ */
+ String8 getPathLeaf(void) const;
+
+ /*
+ * Remove the last (file name) component, leaving just the directory
+ * name.
+ *
+ * "/tmp/foo/bar.c" --> "/tmp/foo"
+ * "/tmp" --> "" // ????? shouldn't this be "/" ???? XXX
+ * "bar.c" --> ""
+ */
+ String8 getPathDir(void) const;
+
+ /*
+ * Retrieve the front (root dir) component. Optionally also return the
+ * remaining components.
+ *
+ * "/tmp/foo/bar.c" --> "tmp" (remain = "foo/bar.c")
+ * "/tmp" --> "tmp" (remain = "")
+ * "bar.c" --> "bar.c" (remain = "")
+ */
+ String8 walkPath(String8* outRemains = NULL) const;
+
+ /*
+ * Return the filename extension. This is the last '.' and any number
+ * of characters that follow it. The '.' is included in case we
+ * decide to expand our definition of what constitutes an extension.
+ *
+ * "/tmp/foo/bar.c" --> ".c"
+ * "/tmp" --> ""
+ * "/tmp/foo.bar/baz" --> ""
+ * "foo.jpeg" --> ".jpeg"
+ * "foo." --> ""
+ */
+ String8 getPathExtension(void) const;
+
+ /*
+ * Return the path without the extension. Rules for what constitutes
+ * an extension are described in the comment for getPathExtension().
+ *
+ * "/tmp/foo/bar.c" --> "/tmp/foo/bar"
+ */
+ String8 getBasePath(void) const;
+
+ /*
+ * Add a component to the pathname. We guarantee that there is
+ * exactly one path separator between the old path and the new.
+ * If there is no existing name, we just copy the new name in.
+ *
+ * If leaf is a fully qualified path (i.e. starts with '/', it
+ * replaces whatever was there before.
+ */
+ String8& appendPath(const char* leaf);
+ String8& appendPath(const String8& leaf) { return appendPath(leaf.string()); }
+
+ /*
+ * Like appendPath(), but does not affect this string. Returns a new one instead.
+ */
+ String8 appendPathCopy(const char* leaf) const
+ { String8 p(*this); p.appendPath(leaf); return p; }
+ String8 appendPathCopy(const String8& leaf) const { return appendPathCopy(leaf.string()); }
+
+ /*
+ * Converts all separators in this string to /, the default path separator.
+ *
+ * If the default OS separator is backslash, this converts all
+ * backslashes to slashes, in-place. Otherwise it does nothing.
+ * Returns self.
+ */
+ String8& convertToResPath();
+
+private:
+ status_t real_append(const char* other, size_t numChars);
+ char* find_extension(void) const;
+
+ const char* mString;
+};
+
+// String8 can be trivially moved using memcpy() because moving does not
+// require any change to the underlying SharedBuffer contents or reference count.
+ANDROID_TRIVIAL_MOVE_TRAIT(String8)
+
+// ---------------------------------------------------------------------------
+// No user servicable parts below.
+
+inline int compare_type(const String8& lhs, const String8& rhs)
+{
+ return lhs.compare(rhs);
+}
+
+inline int strictly_order_type(const String8& lhs, const String8& rhs)
+{
+ return compare_type(lhs, rhs) < 0;
+}
+
+inline const String8 String8::empty() {
+ return String8();
+}
+
+inline const char* String8::c_str() const
+{
+ return mString;
+}
+inline const char* String8::string() const
+{
+ return mString;
+}
+
+inline std::string String8::std_string(const String8& str)
+{
+ return std::string(str.string());
+}
+
+inline size_t String8::size() const
+{
+ return length();
+}
+
+inline bool String8::isEmpty() const
+{
+ return length() == 0;
+}
+
+inline size_t String8::bytes() const
+{
+ return length();
+}
+
+inline bool String8::contains(const char* other) const
+{
+ return find(other) >= 0;
+}
+
+inline String8& String8::operator=(const String8& other)
+{
+ setTo(other);
+ return *this;
+}
+
+inline String8& String8::operator=(const char* other)
+{
+ setTo(other);
+ return *this;
+}
+
+inline String8& String8::operator+=(const String8& other)
+{
+ append(other);
+ return *this;
+}
+
+inline String8 String8::operator+(const String8& other) const
+{
+ String8 tmp(*this);
+ tmp += other;
+ return tmp;
+}
+
+inline String8& String8::operator+=(const char* other)
+{
+ append(other);
+ return *this;
+}
+
+inline String8 String8::operator+(const char* other) const
+{
+ String8 tmp(*this);
+ tmp += other;
+ return tmp;
+}
+
+inline int String8::compare(const String8& other) const
+{
+ return strcmp(mString, other.mString);
+}
+
+inline bool String8::operator<(const String8& other) const
+{
+ return strcmp(mString, other.mString) < 0;
+}
+
+inline bool String8::operator<=(const String8& other) const
+{
+ return strcmp(mString, other.mString) <= 0;
+}
+
+inline bool String8::operator==(const String8& other) const
+{
+ return strcmp(mString, other.mString) == 0;
+}
+
+inline bool String8::operator!=(const String8& other) const
+{
+ return strcmp(mString, other.mString) != 0;
+}
+
+inline bool String8::operator>=(const String8& other) const
+{
+ return strcmp(mString, other.mString) >= 0;
+}
+
+inline bool String8::operator>(const String8& other) const
+{
+ return strcmp(mString, other.mString) > 0;
+}
+
+inline bool String8::operator<(const char* other) const
+{
+ return strcmp(mString, other) < 0;
+}
+
+inline bool String8::operator<=(const char* other) const
+{
+ return strcmp(mString, other) <= 0;
+}
+
+inline bool String8::operator==(const char* other) const
+{
+ return strcmp(mString, other) == 0;
+}
+
+inline bool String8::operator!=(const char* other) const
+{
+ return strcmp(mString, other) != 0;
+}
+
+inline bool String8::operator>=(const char* other) const
+{
+ return strcmp(mString, other) >= 0;
+}
+
+inline bool String8::operator>(const char* other) const
+{
+ return strcmp(mString, other) > 0;
+}
+
+inline String8::operator const char*() const
+{
+ return mString;
+}
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_STRING8_H
diff --git a/android/android-emugl/guest/utils/StrongPointer.h b/android/android-emugl/guest/utils/StrongPointer.h
new file mode 100644
index 0000000000..9cd278f1fb
--- /dev/null
+++ b/android/android-emugl/guest/utils/StrongPointer.h
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_STRONG_POINTER_H
+#define ANDROID_STRONG_POINTER_H
+
+// ---------------------------------------------------------------------------
+namespace android {
+
+template<typename T> class wp;
+
+// ---------------------------------------------------------------------------
+
+#define COMPARE(_op_) \
+inline bool operator _op_ (const sp<T>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+} \
+inline bool operator _op_ (const T* o) const { \
+ return m_ptr _op_ o; \
+} \
+template<typename U> \
+inline bool operator _op_ (const sp<U>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+} \
+template<typename U> \
+inline bool operator _op_ (const U* o) const { \
+ return m_ptr _op_ o; \
+} \
+inline bool operator _op_ (const wp<T>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+} \
+template<typename U> \
+inline bool operator _op_ (const wp<U>& o) const { \
+ return m_ptr _op_ o.m_ptr; \
+}
+
+// ---------------------------------------------------------------------------
+
+template<typename T>
+class sp {
+public:
+ inline sp() : m_ptr(0) { }
+
+ sp(T* other); // NOLINT(implicit)
+ sp(const sp<T>& other);
+ sp(sp<T>&& other);
+ template<typename U> sp(U* other); // NOLINT(implicit)
+ template<typename U> sp(const sp<U>& other); // NOLINT(implicit)
+ template<typename U> sp(sp<U>&& other); // NOLINT(implicit)
+
+ ~sp();
+
+ // Assignment
+
+ sp& operator = (T* other);
+ sp& operator = (const sp<T>& other);
+ sp& operator = (sp<T>&& other);
+
+ template<typename U> sp& operator = (const sp<U>& other);
+ template<typename U> sp& operator = (sp<U>&& other);
+ template<typename U> sp& operator = (U* other);
+
+ //! Special optimization for use by ProcessState (and nobody else).
+ void force_set(T* other);
+
+ // Reset
+
+ void clear();
+
+ // Accessors
+
+ inline T& operator* () const { return *m_ptr; }
+ inline T* operator-> () const { return m_ptr; }
+ inline T* get() const { return m_ptr; }
+ inline explicit operator bool () const { return m_ptr != nullptr; }
+
+ // Operators
+
+ COMPARE(==)
+ COMPARE(!=)
+ COMPARE(>)
+ COMPARE(<)
+ COMPARE(<=)
+ COMPARE(>=)
+
+private:
+ template<typename Y> friend class sp;
+ template<typename Y> friend class wp;
+ void set_pointer(T* ptr);
+ T* m_ptr;
+};
+
+// For code size reasons, we do not want this inlined or templated.
+void sp_report_race();
+
+#undef COMPARE
+
+// ---------------------------------------------------------------------------
+// No user serviceable parts below here.
+
+template<typename T>
+sp<T>::sp(T* other)
+ : m_ptr(other) {
+ if (other)
+ other->incStrong(this);
+}
+
+template<typename T>
+sp<T>::sp(const sp<T>& other)
+ : m_ptr(other.m_ptr) {
+ if (m_ptr)
+ m_ptr->incStrong(this);
+}
+
+template<typename T>
+sp<T>::sp(sp<T>&& other)
+ : m_ptr(other.m_ptr) {
+ other.m_ptr = nullptr;
+}
+
+template<typename T> template<typename U>
+sp<T>::sp(U* other)
+ : m_ptr(other) {
+ if (other)
+ (static_cast<T*>(other))->incStrong(this);
+}
+
+template<typename T> template<typename U>
+sp<T>::sp(const sp<U>& other)
+ : m_ptr(other.m_ptr) {
+ if (m_ptr)
+ m_ptr->incStrong(this);
+}
+
+template<typename T> template<typename U>
+sp<T>::sp(sp<U>&& other)
+ : m_ptr(other.m_ptr) {
+ other.m_ptr = nullptr;
+}
+
+template<typename T>
+sp<T>::~sp() {
+ if (m_ptr)
+ m_ptr->decStrong(this);
+}
+
+template<typename T>
+sp<T>& sp<T>::operator =(const sp<T>& other) {
+ // Force m_ptr to be read twice, to heuristically check for data races.
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ T* otherPtr(other.m_ptr);
+ if (otherPtr) otherPtr->incStrong(this);
+ if (oldPtr) oldPtr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = otherPtr;
+ return *this;
+}
+
+template<typename T>
+sp<T>& sp<T>::operator =(sp<T>&& other) {
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ if (oldPtr) oldPtr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = other.m_ptr;
+ other.m_ptr = nullptr;
+ return *this;
+}
+
+template<typename T>
+sp<T>& sp<T>::operator =(T* other) {
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ if (other) other->incStrong(this);
+ if (oldPtr) oldPtr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = other;
+ return *this;
+}
+
+template<typename T> template<typename U>
+sp<T>& sp<T>::operator =(const sp<U>& other) {
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ T* otherPtr(other.m_ptr);
+ if (otherPtr) otherPtr->incStrong(this);
+ if (oldPtr) oldPtr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = otherPtr;
+ return *this;
+}
+
+template<typename T> template<typename U>
+sp<T>& sp<T>::operator =(sp<U>&& other) {
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ if (m_ptr) m_ptr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = other.m_ptr;
+ other.m_ptr = nullptr;
+ return *this;
+}
+
+template<typename T> template<typename U>
+sp<T>& sp<T>::operator =(U* other) {
+ T* oldPtr(*const_cast<T* volatile*>(&m_ptr));
+ if (other) (static_cast<T*>(other))->incStrong(this);
+ if (oldPtr) oldPtr->decStrong(this);
+ if (oldPtr != *const_cast<T* volatile*>(&m_ptr)) sp_report_race();
+ m_ptr = other;
+ return *this;
+}
+
+template<typename T>
+void sp<T>::force_set(T* other) {
+ other->forceIncStrong(this);
+ m_ptr = other;
+}
+
+template<typename T>
+void sp<T>::clear() {
+ if (m_ptr) {
+ m_ptr->decStrong(this);
+ m_ptr = 0;
+ }
+}
+
+template<typename T>
+void sp<T>::set_pointer(T* ptr) {
+ m_ptr = ptr;
+}
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_STRONG_POINTER_H
diff --git a/android/android-emugl/guest/utils/Thread.h b/android/android-emugl/guest/utils/Thread.h
new file mode 100644
index 0000000000..352513898d
--- /dev/null
+++ b/android/android-emugl/guest/utils/Thread.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_THREAD_H
+#define _LIBS_UTILS_THREAD_H
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <time.h>
+
+#if !defined(_WIN32)
+# include <pthread.h>
+#endif
+
+#include <utils/Condition.h>
+#include <utils/Errors.h>
+#include <utils/Mutex.h>
+#include <utils/RefBase.h>
+#include <utils/Timers.h>
+#include <utils/ThreadDefs.h>
+
+// ---------------------------------------------------------------------------
+namespace android {
+// ---------------------------------------------------------------------------
+
+// DO NOT USE: please use std::thread
+
+class Thread : virtual public RefBase
+{
+public:
+ // Create a Thread object, but doesn't create or start the associated
+ // thread. See the run() method.
+ explicit Thread(bool canCallJava = true);
+ virtual ~Thread();
+
+ // Start the thread in threadLoop() which needs to be implemented.
+ virtual status_t run( const char* name,
+ int32_t priority = PRIORITY_DEFAULT,
+ size_t stack = 0);
+
+ // Ask this object's thread to exit. This function is asynchronous, when the
+ // function returns the thread might still be running. Of course, this
+ // function can be called from a different thread.
+ virtual void requestExit();
+
+ // Good place to do one-time initializations
+ virtual status_t readyToRun();
+
+ // Call requestExit() and wait until this object's thread exits.
+ // BE VERY CAREFUL of deadlocks. In particular, it would be silly to call
+ // this function from this object's thread. Will return WOULD_BLOCK in
+ // that case.
+ status_t requestExitAndWait();
+
+ // Wait until this object's thread exits. Returns immediately if not yet running.
+ // Do not call from this object's thread; will return WOULD_BLOCK in that case.
+ status_t join();
+
+ // Indicates whether this thread is running or not.
+ bool isRunning() const;
+
+#if defined(__ANDROID__)
+ // Return the thread's kernel ID, same as the thread itself calling gettid(),
+ // or -1 if the thread is not running.
+ pid_t getTid() const;
+#endif
+
+protected:
+ // exitPending() returns true if requestExit() has been called.
+ bool exitPending() const;
+
+private:
+ // Derived class must implement threadLoop(). The thread starts its life
+ // here. There are two ways of using the Thread object:
+ // 1) loop: if threadLoop() returns true, it will be called again if
+ // requestExit() wasn't called.
+ // 2) once: if threadLoop() returns false, the thread will exit upon return.
+ virtual bool threadLoop() = 0;
+
+private:
+ Thread& operator=(const Thread&);
+ static int _threadLoop(void* user);
+ const bool mCanCallJava;
+ // always hold mLock when reading or writing
+ thread_id_t mThread;
+ mutable Mutex mLock;
+ Condition mThreadExitedCondition;
+ status_t mStatus;
+ // note that all accesses of mExitPending and mRunning need to hold mLock
+ volatile bool mExitPending;
+ volatile bool mRunning;
+ sp<Thread> mHoldSelf;
+#if defined(__ANDROID__)
+ // legacy for debugging, not used by getTid() as it is set by the child thread
+ // and so is not initialized until the child reaches that point
+ pid_t mTid;
+#endif
+};
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+#endif // _LIBS_UTILS_THREAD_H
+// ---------------------------------------------------------------------------
diff --git a/android/android-emugl/guest/utils/ThreadDefs.h b/android/android-emugl/guest/utils/ThreadDefs.h
new file mode 100644
index 0000000000..8eb3d1cbe8
--- /dev/null
+++ b/android/android-emugl/guest/utils/ThreadDefs.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_THREAD_DEFS_H
+#define _LIBS_UTILS_THREAD_DEFS_H
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <system/graphics.h>
+#include <system/thread_defs.h>
+
+// ---------------------------------------------------------------------------
+// C API
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _WIN32
+typedef uint32_t android_thread_id_t;
+#else
+typedef void* android_thread_id_t;
+#endif
+
+typedef int (*android_thread_func_t)(void*);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+// ---------------------------------------------------------------------------
+// C++ API
+#ifdef __cplusplus
+namespace android {
+// ---------------------------------------------------------------------------
+
+typedef android_thread_id_t thread_id_t;
+typedef android_thread_func_t thread_func_t;
+
+enum {
+ PRIORITY_LOWEST = ANDROID_PRIORITY_LOWEST,
+ PRIORITY_BACKGROUND = ANDROID_PRIORITY_BACKGROUND,
+ PRIORITY_NORMAL = ANDROID_PRIORITY_NORMAL,
+ PRIORITY_FOREGROUND = ANDROID_PRIORITY_FOREGROUND,
+ PRIORITY_DISPLAY = ANDROID_PRIORITY_DISPLAY,
+ PRIORITY_URGENT_DISPLAY = ANDROID_PRIORITY_URGENT_DISPLAY,
+ PRIORITY_AUDIO = ANDROID_PRIORITY_AUDIO,
+ PRIORITY_URGENT_AUDIO = ANDROID_PRIORITY_URGENT_AUDIO,
+ PRIORITY_HIGHEST = ANDROID_PRIORITY_HIGHEST,
+ PRIORITY_DEFAULT = ANDROID_PRIORITY_DEFAULT,
+ PRIORITY_MORE_FAVORABLE = ANDROID_PRIORITY_MORE_FAVORABLE,
+ PRIORITY_LESS_FAVORABLE = ANDROID_PRIORITY_LESS_FAVORABLE,
+};
+
+// ---------------------------------------------------------------------------
+} // namespace android
+#endif // __cplusplus
+// ---------------------------------------------------------------------------
+
+#endif // _LIBS_UTILS_THREAD_DEFS_H
diff --git a/android/android-emugl/guest/utils/Timers.h b/android/android-emugl/guest/utils/Timers.h
new file mode 100644
index 0000000000..54ec47489f
--- /dev/null
+++ b/android/android-emugl/guest/utils/Timers.h
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Timer functions.
+//
+#ifndef _LIBS_UTILS_TIMERS_H
+#define _LIBS_UTILS_TIMERS_H
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <utils/Compat.h>
+
+// ------------------------------------------------------------------
+// C API
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef int64_t nsecs_t; // nano-seconds
+
+static CONSTEXPR inline nsecs_t seconds_to_nanoseconds(nsecs_t secs)
+{
+ return secs*1000000000;
+}
+
+static CONSTEXPR inline nsecs_t milliseconds_to_nanoseconds(nsecs_t secs)
+{
+ return secs*1000000;
+}
+
+static CONSTEXPR inline nsecs_t microseconds_to_nanoseconds(nsecs_t secs)
+{
+ return secs*1000;
+}
+
+static CONSTEXPR inline nsecs_t nanoseconds_to_seconds(nsecs_t secs)
+{
+ return secs/1000000000;
+}
+
+static CONSTEXPR inline nsecs_t nanoseconds_to_milliseconds(nsecs_t secs)
+{
+ return secs/1000000;
+}
+
+static CONSTEXPR inline nsecs_t nanoseconds_to_microseconds(nsecs_t secs)
+{
+ return secs/1000;
+}
+
+static CONSTEXPR inline nsecs_t s2ns(nsecs_t v) {return seconds_to_nanoseconds(v);}
+static CONSTEXPR inline nsecs_t ms2ns(nsecs_t v) {return milliseconds_to_nanoseconds(v);}
+static CONSTEXPR inline nsecs_t us2ns(nsecs_t v) {return microseconds_to_nanoseconds(v);}
+static CONSTEXPR inline nsecs_t ns2s(nsecs_t v) {return nanoseconds_to_seconds(v);}
+static CONSTEXPR inline nsecs_t ns2ms(nsecs_t v) {return nanoseconds_to_milliseconds(v);}
+static CONSTEXPR inline nsecs_t ns2us(nsecs_t v) {return nanoseconds_to_microseconds(v);}
+
+static CONSTEXPR inline nsecs_t seconds(nsecs_t v) { return s2ns(v); }
+static CONSTEXPR inline nsecs_t milliseconds(nsecs_t v) { return ms2ns(v); }
+static CONSTEXPR inline nsecs_t microseconds(nsecs_t v) { return us2ns(v); }
+
+enum {
+ SYSTEM_TIME_REALTIME = 0, // system-wide realtime clock
+ SYSTEM_TIME_MONOTONIC = 1, // monotonic time since unspecified starting point
+ SYSTEM_TIME_PROCESS = 2, // high-resolution per-process clock
+ SYSTEM_TIME_THREAD = 3, // high-resolution per-thread clock
+ SYSTEM_TIME_BOOTTIME = 4 // same as SYSTEM_TIME_MONOTONIC, but including CPU suspend time
+};
+
+// return the system-time according to the specified clock
+#ifdef __cplusplus
+nsecs_t systemTime(int clock = SYSTEM_TIME_MONOTONIC);
+#else
+nsecs_t systemTime(int clock);
+#endif // def __cplusplus
+
+/**
+ * Returns the number of milliseconds to wait between the reference time and the timeout time.
+ * If the timeout is in the past relative to the reference time, returns 0.
+ * If the timeout is more than INT_MAX milliseconds in the future relative to the reference time,
+ * such as when timeoutTime == LLONG_MAX, returns -1 to indicate an infinite timeout delay.
+ * Otherwise, returns the difference between the reference time and timeout time
+ * rounded up to the next millisecond.
+ */
+int toMillisecondTimeoutDelay(nsecs_t referenceTime, nsecs_t timeoutTime);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _LIBS_UTILS_TIMERS_H
diff --git a/android/android-emugl/guest/utils/TypeHelpers.h b/android/android-emugl/guest/utils/TypeHelpers.h
new file mode 100644
index 0000000000..1554f52ee1
--- /dev/null
+++ b/android/android-emugl/guest/utils/TypeHelpers.h
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_TYPE_HELPERS_H
+#define ANDROID_TYPE_HELPERS_H
+
+#include <new>
+#include <type_traits>
+
+#include <stdint.h>
+#include <string.h>
+#include <sys/types.h>
+
+// ---------------------------------------------------------------------------
+
+namespace android {
+
+/*
+ * Types traits
+ */
+
+template <typename T> struct trait_trivial_ctor { enum { value = false }; };
+template <typename T> struct trait_trivial_dtor { enum { value = false }; };
+template <typename T> struct trait_trivial_copy { enum { value = false }; };
+template <typename T> struct trait_trivial_move { enum { value = false }; };
+template <typename T> struct trait_pointer { enum { value = false }; };
+template <typename T> struct trait_pointer<T*> { enum { value = true }; };
+
+template <typename TYPE>
+struct traits {
+ enum {
+ // whether this type is a pointer
+ is_pointer = trait_pointer<TYPE>::value,
+ // whether this type's constructor is a no-op
+ has_trivial_ctor = is_pointer || trait_trivial_ctor<TYPE>::value,
+ // whether this type's destructor is a no-op
+ has_trivial_dtor = is_pointer || trait_trivial_dtor<TYPE>::value,
+ // whether this type type can be copy-constructed with memcpy
+ has_trivial_copy = is_pointer || trait_trivial_copy<TYPE>::value,
+ // whether this type can be moved with memmove
+ has_trivial_move = is_pointer || trait_trivial_move<TYPE>::value
+ };
+};
+
+template <typename T, typename U>
+struct aggregate_traits {
+ enum {
+ is_pointer = false,
+ has_trivial_ctor =
+ traits<T>::has_trivial_ctor && traits<U>::has_trivial_ctor,
+ has_trivial_dtor =
+ traits<T>::has_trivial_dtor && traits<U>::has_trivial_dtor,
+ has_trivial_copy =
+ traits<T>::has_trivial_copy && traits<U>::has_trivial_copy,
+ has_trivial_move =
+ traits<T>::has_trivial_move && traits<U>::has_trivial_move
+ };
+};
+
+#define ANDROID_TRIVIAL_CTOR_TRAIT( T ) \
+ template<> struct trait_trivial_ctor< T > { enum { value = true }; };
+
+#define ANDROID_TRIVIAL_DTOR_TRAIT( T ) \
+ template<> struct trait_trivial_dtor< T > { enum { value = true }; };
+
+#define ANDROID_TRIVIAL_COPY_TRAIT( T ) \
+ template<> struct trait_trivial_copy< T > { enum { value = true }; };
+
+#define ANDROID_TRIVIAL_MOVE_TRAIT( T ) \
+ template<> struct trait_trivial_move< T > { enum { value = true }; };
+
+#define ANDROID_BASIC_TYPES_TRAITS( T ) \
+ ANDROID_TRIVIAL_CTOR_TRAIT( T ) \
+ ANDROID_TRIVIAL_DTOR_TRAIT( T ) \
+ ANDROID_TRIVIAL_COPY_TRAIT( T ) \
+ ANDROID_TRIVIAL_MOVE_TRAIT( T )
+
+// ---------------------------------------------------------------------------
+
+/*
+ * basic types traits
+ */
+
+ANDROID_BASIC_TYPES_TRAITS( void )
+ANDROID_BASIC_TYPES_TRAITS( bool )
+ANDROID_BASIC_TYPES_TRAITS( char )
+ANDROID_BASIC_TYPES_TRAITS( unsigned char )
+ANDROID_BASIC_TYPES_TRAITS( short )
+ANDROID_BASIC_TYPES_TRAITS( unsigned short )
+ANDROID_BASIC_TYPES_TRAITS( int )
+ANDROID_BASIC_TYPES_TRAITS( unsigned int )
+ANDROID_BASIC_TYPES_TRAITS( long )
+ANDROID_BASIC_TYPES_TRAITS( unsigned long )
+ANDROID_BASIC_TYPES_TRAITS( long long )
+ANDROID_BASIC_TYPES_TRAITS( unsigned long long )
+ANDROID_BASIC_TYPES_TRAITS( float )
+ANDROID_BASIC_TYPES_TRAITS( double )
+
+// ---------------------------------------------------------------------------
+
+
+/*
+ * compare and order types
+ */
+
+template<typename TYPE> inline
+int strictly_order_type(const TYPE& lhs, const TYPE& rhs) {
+ return (lhs < rhs) ? 1 : 0;
+}
+
+template<typename TYPE> inline
+int compare_type(const TYPE& lhs, const TYPE& rhs) {
+ return strictly_order_type(rhs, lhs) - strictly_order_type(lhs, rhs);
+}
+
+/*
+ * create, destroy, copy and move types...
+ */
+
+template<typename TYPE> inline
+void construct_type(TYPE* p, size_t n) {
+ if (!traits<TYPE>::has_trivial_ctor) {
+ while (n > 0) {
+ n--;
+ new(p++) TYPE;
+ }
+ }
+}
+
+template<typename TYPE> inline
+void destroy_type(TYPE* p, size_t n) {
+ if (!traits<TYPE>::has_trivial_dtor) {
+ while (n > 0) {
+ n--;
+ p->~TYPE();
+ p++;
+ }
+ }
+}
+
+template<typename TYPE>
+typename std::enable_if<traits<TYPE>::has_trivial_copy>::type
+inline
+copy_type(TYPE* d, const TYPE* s, size_t n) {
+ memcpy(d,s,n*sizeof(TYPE));
+}
+
+template<typename TYPE>
+typename std::enable_if<!traits<TYPE>::has_trivial_copy>::type
+inline
+copy_type(TYPE* d, const TYPE* s, size_t n) {
+ while (n > 0) {
+ n--;
+ new(d) TYPE(*s);
+ d++, s++;
+ }
+}
+
+template<typename TYPE> inline
+void splat_type(TYPE* where, const TYPE* what, size_t n) {
+ if (!traits<TYPE>::has_trivial_copy) {
+ while (n > 0) {
+ n--;
+ new(where) TYPE(*what);
+ where++;
+ }
+ } else {
+ while (n > 0) {
+ n--;
+ *where++ = *what;
+ }
+ }
+}
+
+template<typename TYPE>
+struct use_trivial_move : public std::integral_constant<bool,
+ (traits<TYPE>::has_trivial_dtor && traits<TYPE>::has_trivial_copy)
+ || traits<TYPE>::has_trivial_move
+> {};
+
+template<typename TYPE>
+typename std::enable_if<use_trivial_move<TYPE>::value>::type
+inline
+move_forward_type(TYPE* d, const TYPE* s, size_t n = 1) {
+ memmove(d, s, n*sizeof(TYPE));
+}
+
+template<typename TYPE>
+typename std::enable_if<!use_trivial_move<TYPE>::value>::type
+inline
+move_forward_type(TYPE* d, const TYPE* s, size_t n = 1) {
+ d += n;
+ s += n;
+ while (n > 0) {
+ n--;
+ --d, --s;
+ if (!traits<TYPE>::has_trivial_copy) {
+ new(d) TYPE(*s);
+ } else {
+ *d = *s;
+ }
+ if (!traits<TYPE>::has_trivial_dtor) {
+ s->~TYPE();
+ }
+ }
+}
+
+template<typename TYPE>
+typename std::enable_if<use_trivial_move<TYPE>::value>::type
+inline
+move_backward_type(TYPE* d, const TYPE* s, size_t n = 1) {
+ memmove(d, s, n*sizeof(TYPE));
+}
+
+template<typename TYPE>
+typename std::enable_if<!use_trivial_move<TYPE>::value>::type
+inline
+move_backward_type(TYPE* d, const TYPE* s, size_t n = 1) {
+ while (n > 0) {
+ n--;
+ if (!traits<TYPE>::has_trivial_copy) {
+ new(d) TYPE(*s);
+ } else {
+ *d = *s;
+ }
+ if (!traits<TYPE>::has_trivial_dtor) {
+ s->~TYPE();
+ }
+ d++, s++;
+ }
+}
+
+// ---------------------------------------------------------------------------
+
+/*
+ * a key/value pair
+ */
+
+template <typename KEY, typename VALUE>
+struct key_value_pair_t {
+ typedef KEY key_t;
+ typedef VALUE value_t;
+
+ KEY key;
+ VALUE value;
+ key_value_pair_t() { }
+ key_value_pair_t(const key_value_pair_t& o) : key(o.key), value(o.value) { }
+ key_value_pair_t& operator=(const key_value_pair_t& o) {
+ key = o.key;
+ value = o.value;
+ return *this;
+ }
+ key_value_pair_t(const KEY& k, const VALUE& v) : key(k), value(v) { }
+ explicit key_value_pair_t(const KEY& k) : key(k) { }
+ inline bool operator < (const key_value_pair_t& o) const {
+ return strictly_order_type(key, o.key);
+ }
+ inline const KEY& getKey() const {
+ return key;
+ }
+ inline const VALUE& getValue() const {
+ return value;
+ }
+};
+
+template <typename K, typename V>
+struct trait_trivial_ctor< key_value_pair_t<K, V> >
+{ enum { value = aggregate_traits<K,V>::has_trivial_ctor }; };
+template <typename K, typename V>
+struct trait_trivial_dtor< key_value_pair_t<K, V> >
+{ enum { value = aggregate_traits<K,V>::has_trivial_dtor }; };
+template <typename K, typename V>
+struct trait_trivial_copy< key_value_pair_t<K, V> >
+{ enum { value = aggregate_traits<K,V>::has_trivial_copy }; };
+template <typename K, typename V>
+struct trait_trivial_move< key_value_pair_t<K, V> >
+{ enum { value = aggregate_traits<K,V>::has_trivial_move }; };
+
+// ---------------------------------------------------------------------------
+
+/*
+ * Hash codes.
+ */
+typedef uint32_t hash_t;
+
+template <typename TKey>
+hash_t hash_type(const TKey& key);
+
+/* Built-in hash code specializations */
+#define ANDROID_INT32_HASH(T) \
+ template <> inline hash_t hash_type(const T& value) { return hash_t(value); }
+#define ANDROID_INT64_HASH(T) \
+ template <> inline hash_t hash_type(const T& value) { \
+ return hash_t((value >> 32) ^ value); }
+#define ANDROID_REINTERPRET_HASH(T, R) \
+ template <> inline hash_t hash_type(const T& value) { \
+ R newValue; \
+ static_assert(sizeof(newValue) == sizeof(value), "size mismatch"); \
+ memcpy(&newValue, &value, sizeof(newValue)); \
+ return hash_type(newValue); \
+ }
+
+ANDROID_INT32_HASH(bool)
+ANDROID_INT32_HASH(int8_t)
+ANDROID_INT32_HASH(uint8_t)
+ANDROID_INT32_HASH(int16_t)
+ANDROID_INT32_HASH(uint16_t)
+ANDROID_INT32_HASH(int32_t)
+ANDROID_INT32_HASH(uint32_t)
+ANDROID_INT64_HASH(int64_t)
+ANDROID_INT64_HASH(uint64_t)
+ANDROID_REINTERPRET_HASH(float, uint32_t)
+ANDROID_REINTERPRET_HASH(double, uint64_t)
+
+template <typename T> inline hash_t hash_type(T* const & value) {
+ return hash_type(uintptr_t(value));
+}
+
+} // namespace android
+
+// ---------------------------------------------------------------------------
+
+#endif // ANDROID_TYPE_HELPERS_H
diff --git a/android/android-emugl/guest/utils/Unicode.h b/android/android-emugl/guest/utils/Unicode.h
new file mode 100644
index 0000000000..666b70f4ee
--- /dev/null
+++ b/android/android-emugl/guest/utils/Unicode.h
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2005 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_UNICODE_H
+#define ANDROID_UNICODE_H
+
+#include <sys/types.h>
+#include <stdint.h>
+
+extern "C" {
+
+// Standard string functions on char16_t strings.
+int strcmp16(const char16_t *, const char16_t *);
+int strncmp16(const char16_t *s1, const char16_t *s2, size_t n);
+size_t strlen16(const char16_t *);
+size_t strnlen16(const char16_t *, size_t);
+char16_t *strcpy16(char16_t *, const char16_t *);
+char16_t *strncpy16(char16_t *, const char16_t *, size_t);
+char16_t *strstr16(const char16_t*, const char16_t*);
+
+// Version of comparison that supports embedded NULs.
+// This is different than strncmp() because we don't stop
+// at a nul character and consider the strings to be different
+// if the lengths are different (thus we need to supply the
+// lengths of both strings). This can also be used when
+// your string is not nul-terminated as it will have the
+// equivalent result as strcmp16 (unlike strncmp16).
+int strzcmp16(const char16_t *s1, size_t n1, const char16_t *s2, size_t n2);
+
+// Version of strzcmp16 for comparing strings in different endianness.
+int strzcmp16_h_n(const char16_t *s1H, size_t n1, const char16_t *s2N, size_t n2);
+
+// Standard string functions on char32_t strings.
+size_t strlen32(const char32_t *);
+size_t strnlen32(const char32_t *, size_t);
+
+/**
+ * Measure the length of a UTF-32 string in UTF-8. If the string is invalid
+ * such as containing a surrogate character, -1 will be returned.
+ */
+ssize_t utf32_to_utf8_length(const char32_t *src, size_t src_len);
+
+/**
+ * Stores a UTF-8 string converted from "src" in "dst", if "dst_length" is not
+ * large enough to store the string, the part of the "src" string is stored
+ * into "dst" as much as possible. See the examples for more detail.
+ * Returns the size actually used for storing the string.
+ * dst" is not nul-terminated when dst_len is fully used (like strncpy).
+ *
+ * \code
+ * Example 1
+ * "src" == \u3042\u3044 (\xE3\x81\x82\xE3\x81\x84)
+ * "src_len" == 2
+ * "dst_len" >= 7
+ * ->
+ * Returned value == 6
+ * "dst" becomes \xE3\x81\x82\xE3\x81\x84\0
+ * (note that "dst" is nul-terminated)
+ *
+ * Example 2
+ * "src" == \u3042\u3044 (\xE3\x81\x82\xE3\x81\x84)
+ * "src_len" == 2
+ * "dst_len" == 5
+ * ->
+ * Returned value == 3
+ * "dst" becomes \xE3\x81\x82\0
+ * (note that "dst" is nul-terminated, but \u3044 is not stored in "dst"
+ * since "dst" does not have enough size to store the character)
+ *
+ * Example 3
+ * "src" == \u3042\u3044 (\xE3\x81\x82\xE3\x81\x84)
+ * "src_len" == 2
+ * "dst_len" == 6
+ * ->
+ * Returned value == 6
+ * "dst" becomes \xE3\x81\x82\xE3\x81\x84
+ * (note that "dst" is NOT nul-terminated, like strncpy)
+ * \endcode
+ */
+void utf32_to_utf8(const char32_t* src, size_t src_len, char* dst, size_t dst_len);
+
+/**
+ * Returns the unicode value at "index".
+ * Returns -1 when the index is invalid (equals to or more than "src_len").
+ * If returned value is positive, it is able to be converted to char32_t, which
+ * is unsigned. Then, if "next_index" is not NULL, the next index to be used is
+ * stored in "next_index". "next_index" can be NULL.
+ */
+int32_t utf32_from_utf8_at(const char *src, size_t src_len, size_t index, size_t *next_index);
+
+
+/**
+ * Returns the UTF-8 length of UTF-16 string "src".
+ */
+ssize_t utf16_to_utf8_length(const char16_t *src, size_t src_len);
+
+/**
+ * Converts a UTF-16 string to UTF-8. The destination buffer must be large
+ * enough to fit the UTF-16 as measured by utf16_to_utf8_length with an added
+ * NUL terminator.
+ */
+void utf16_to_utf8(const char16_t* src, size_t src_len, char* dst, size_t dst_len);
+
+/**
+ * Returns the length of "src" when "src" is valid UTF-8 string.
+ * Returns 0 if src is NULL or 0-length string. Returns -1 when the source
+ * is an invalid string.
+ *
+ * This function should be used to determine whether "src" is valid UTF-8
+ * characters with valid unicode codepoints. "src" must be nul-terminated.
+ *
+ * If you are going to use other utf8_to_... functions defined in this header
+ * with string which may not be valid UTF-8 with valid codepoint (form 0 to
+ * 0x10FFFF), you should use this function before calling others, since the
+ * other functions do not check whether the string is valid UTF-8 or not.
+ *
+ * If you do not care whether "src" is valid UTF-8 or not, you should use
+ * strlen() as usual, which should be much faster.
+ */
+ssize_t utf8_length(const char *src);
+
+/**
+ * Measure the length of a UTF-32 string.
+ */
+size_t utf8_to_utf32_length(const char *src, size_t src_len);
+
+/**
+ * Stores a UTF-32 string converted from "src" in "dst". "dst" must be large
+ * enough to store the entire converted string as measured by
+ * utf8_to_utf32_length plus space for a NUL terminator.
+ */
+void utf8_to_utf32(const char* src, size_t src_len, char32_t* dst);
+
+/**
+ * Returns the UTF-16 length of UTF-8 string "src". Returns -1 in case
+ * it's invalid utf8. No buffer over-read occurs because of bound checks. Using overreadIsFatal you
+ * can ask to log a message and fail in case the invalid utf8 could have caused an override if no
+ * bound checks were used (otherwise -1 is returned).
+ */
+ssize_t utf8_to_utf16_length(const uint8_t* src, size_t srcLen, bool overreadIsFatal = false);
+
+/**
+ * Convert UTF-8 to UTF-16 including surrogate pairs.
+ * Returns a pointer to the end of the string (where a NUL terminator might go
+ * if you wanted to add one). At most dstLen characters are written; it won't emit half a surrogate
+ * pair. If dstLen == 0 nothing is written and dst is returned. If dstLen > SSIZE_MAX it aborts
+ * (this being probably a negative number returned as an error and casted to unsigned).
+ */
+char16_t* utf8_to_utf16_no_null_terminator(
+ const uint8_t* src, size_t srcLen, char16_t* dst, size_t dstLen);
+
+/**
+ * Convert UTF-8 to UTF-16 including surrogate pairs. At most dstLen - 1
+ * characters are written; it won't emit half a surrogate pair; and a NUL terminator is appended
+ * after. dstLen - 1 can be measured beforehand using utf8_to_utf16_length. Aborts if dstLen == 0
+ * (at least one character is needed for the NUL terminator) or dstLen > SSIZE_MAX (the latter
+ * case being likely a negative number returned as an error and casted to unsigned) . Returns a
+ * pointer to the NUL terminator.
+ */
+char16_t *utf8_to_utf16(
+ const uint8_t* src, size_t srcLen, char16_t* dst, size_t dstLen);
+
+}
+
+#endif
diff --git a/android/android-emugl/guest/utils/threads.h b/android/android-emugl/guest/utils/threads.h
new file mode 100644
index 0000000000..9de3382118
--- /dev/null
+++ b/android/android-emugl/guest/utils/threads.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _LIBS_UTILS_THREADS_H
+#define _LIBS_UTILS_THREADS_H
+
+/*
+ * Please, DO NOT USE!
+ *
+ * This file is here only for legacy reasons. Instead, include directly
+ * the headers you need below.
+ *
+ */
+
+#include <utils/AndroidThreads.h>
+
+#ifdef __cplusplus
+#include <utils/Condition.h>
+#include <utils/Errors.h>
+#include <utils/Mutex.h>
+#include <utils/RWLock.h>
+#include <utils/Thread.h>
+#endif
+
+#endif // _LIBS_UTILS_THREADS_H
diff --git a/android/android-emugl/guest/vndk/window.h b/android/android-emugl/guest/vndk/window.h
new file mode 100644
index 0000000000..d88ff1e84b
--- /dev/null
+++ b/android/android-emugl/guest/vndk/window.h
@@ -0,0 +1,290 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ANDROID_VNDK_NATIVEWINDOW_ANATIVEWINDOW_H
+#define ANDROID_VNDK_NATIVEWINDOW_ANATIVEWINDOW_H
+#include <nativebase/nativebase.h>
+// vndk is a superset of the NDK
+#include <android/native_window.h>
+__BEGIN_DECLS
+/*
+ * Convert this ANativeWindowBuffer into a AHardwareBuffer
+ */
+AHardwareBuffer* ANativeWindowBuffer_getHardwareBuffer(ANativeWindowBuffer* anwb);
+/*****************************************************************************/
+/*
+ * Stores a value into one of the 4 available slots
+ * Retrieve the value with ANativeWindow_OemStorageGet()
+ *
+ * slot: 0 to 3
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_OemStorageSet(ANativeWindow* window, uint32_t slot, intptr_t value);
+/*
+ * Retrieves a value from one of the 4 available slots
+ * By default the returned value is 0 if it wasn't set by ANativeWindow_OemStorageSet()
+ *
+ * slot: 0 to 3
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_OemStorageGet(ANativeWindow* window, uint32_t slot, intptr_t* value);
+/*
+ * Set the swap interval for this surface.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_setSwapInterval(ANativeWindow* window, int interval);
+/*
+ * queries that can be used with ANativeWindow_query() and ANativeWindow_queryf()
+ */
+enum ANativeWindowQuery {
+ /* The minimum number of buffers that must remain un-dequeued after a buffer
+ * has been queued. This value applies only if set_buffer_count was used to
+ * override the number of buffers and if a buffer has since been queued.
+ * Users of the set_buffer_count ANativeWindow method should query this
+ * value before calling set_buffer_count. If it is necessary to have N
+ * buffers simultaneously dequeued as part of the steady-state operation,
+ * and this query returns M then N+M buffers should be requested via
+ * native_window_set_buffer_count.
+ *
+ * Note that this value does NOT apply until a single buffer has been
+ * queued. In particular this means that it is possible to:
+ *
+ * 1. Query M = min undequeued buffers
+ * 2. Set the buffer count to N + M
+ * 3. Dequeue all N + M buffers
+ * 4. Cancel M buffers
+ * 5. Queue, dequeue, queue, dequeue, ad infinitum
+ */
+ ANATIVEWINDOW_QUERY_MIN_UNDEQUEUED_BUFFERS = 3,
+ /*
+ * Default width of ANativeWindow buffers, these are the
+ * dimensions of the window buffers irrespective of the
+ * ANativeWindow_setBuffersDimensions() call and match the native window
+ * size.
+ */
+ ANATIVEWINDOW_QUERY_DEFAULT_WIDTH = 6,
+ ANATIVEWINDOW_QUERY_DEFAULT_HEIGHT = 7,
+ /*
+ * transformation that will most-likely be applied to buffers. This is only
+ * a hint, the actual transformation applied might be different.
+ *
+ * INTENDED USE:
+ *
+ * The transform hint can be used by a producer, for instance the GLES
+ * driver, to pre-rotate the rendering such that the final transformation
+ * in the composer is identity. This can be very useful when used in
+ * conjunction with the h/w composer HAL, in situations where it
+ * cannot handle arbitrary rotations.
+ *
+ * 1. Before dequeuing a buffer, the GL driver (or any other ANW client)
+ * queries the ANW for NATIVE_WINDOW_TRANSFORM_HINT.
+ *
+ * 2. The GL driver overrides the width and height of the ANW to
+ * account for NATIVE_WINDOW_TRANSFORM_HINT. This is done by querying
+ * NATIVE_WINDOW_DEFAULT_{WIDTH | HEIGHT}, swapping the dimensions
+ * according to NATIVE_WINDOW_TRANSFORM_HINT and calling
+ * native_window_set_buffers_dimensions().
+ *
+ * 3. The GL driver dequeues a buffer of the new pre-rotated size.
+ *
+ * 4. The GL driver renders to the buffer such that the image is
+ * already transformed, that is applying NATIVE_WINDOW_TRANSFORM_HINT
+ * to the rendering.
+ *
+ * 5. The GL driver calls native_window_set_transform to apply
+ * inverse transformation to the buffer it just rendered.
+ * In order to do this, the GL driver needs
+ * to calculate the inverse of NATIVE_WINDOW_TRANSFORM_HINT, this is
+ * done easily:
+ *
+ * int hintTransform, inverseTransform;
+ * query(..., NATIVE_WINDOW_TRANSFORM_HINT, &hintTransform);
+ * inverseTransform = hintTransform;
+ * if (hintTransform & HAL_TRANSFORM_ROT_90)
+ * inverseTransform ^= HAL_TRANSFORM_ROT_180;
+ *
+ *
+ * 6. The GL driver queues the pre-transformed buffer.
+ *
+ * 7. The composer combines the buffer transform with the display
+ * transform. If the buffer transform happens to cancel out the
+ * display transform then no rotation is needed.
+ *
+ */
+ ANATIVEWINDOW_QUERY_TRANSFORM_HINT = 8,
+ /*
+ * Returns the age of the contents of the most recently dequeued buffer as
+ * the number of frames that have elapsed since it was last queued. For
+ * example, if the window is double-buffered, the age of any given buffer in
+ * steady state will be 2. If the dequeued buffer has never been queued, its
+ * age will be 0.
+ */
+ ANATIVEWINDOW_QUERY_BUFFER_AGE = 13,
+ /* min swap interval supported by this compositor */
+ ANATIVEWINDOW_QUERY_MIN_SWAP_INTERVAL = 0x10000,
+ /* max swap interval supported by this compositor */
+ ANATIVEWINDOW_QUERY_MAX_SWAP_INTERVAL = 0x10001,
+ /* horizontal resolution in DPI. value is float, use queryf() */
+ ANATIVEWINDOW_QUERY_XDPI = 0x10002,
+ /* vertical resolution in DPI. value is float, use queryf() */
+ ANATIVEWINDOW_QUERY_YDPI = 0x10003,
+};
+typedef enum ANativeWindowQuery ANativeWindowQuery;
+/*
+ * hook used to retrieve information about the native window.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_query(const ANativeWindow* window, ANativeWindowQuery query, int* value);
+int ANativeWindow_queryf(const ANativeWindow* window, ANativeWindowQuery query, float* value);
+/*
+ * Hook called by EGL to acquire a buffer. This call may block if no
+ * buffers are available.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The libsync fence file descriptor returned in the int pointed to by the
+ * fenceFd argument will refer to the fence that must signal before the
+ * dequeued buffer may be written to. A value of -1 indicates that the
+ * caller may access the buffer immediately without waiting on a fence. If
+ * a valid file descriptor is returned (i.e. any value except -1) then the
+ * caller is responsible for closing the file descriptor.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer, int* fenceFd);
+/*
+ * Hook called by EGL when modifications to the render buffer are done.
+ * This unlocks and post the buffer.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The fenceFd argument specifies a libsync fence file descriptor for a
+ * fence that must signal before the buffer can be accessed. If the buffer
+ * can be accessed immediately then a value of -1 should be used. The
+ * caller must not use the file descriptor after it is passed to
+ * queueBuffer, and the ANativeWindow implementation is responsible for
+ * closing it.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd);
+/*
+ * Hook used to cancel a buffer that has been dequeued.
+ * No synchronization is performed between dequeue() and cancel(), so
+ * either external synchronization is needed, or these functions must be
+ * called from the same thread.
+ *
+ * The window holds a reference to the buffer between dequeueBuffer and
+ * either queueBuffer or cancelBuffer, so clients only need their own
+ * reference if they might use the buffer after queueing or canceling it.
+ * Holding a reference to a buffer after queueing or canceling it is only
+ * allowed if a specific buffer count has been set.
+ *
+ * The fenceFd argument specifies a libsync fence file decsriptor for a
+ * fence that must signal before the buffer can be accessed. If the buffer
+ * can be accessed immediately then a value of -1 should be used.
+ *
+ * Note that if the client has not waited on the fence that was returned
+ * from dequeueBuffer, that same fence should be passed to cancelBuffer to
+ * ensure that future uses of the buffer are preceded by a wait on that
+ * fence. The caller must not use the file descriptor after it is passed
+ * to cancelBuffer, and the ANativeWindow implementation is responsible for
+ * closing it.
+ *
+ * Returns 0 on success or -errno on error.
+ */
+int ANativeWindow_cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd);
+/*
+ * Sets the intended usage flags for the next buffers.
+ *
+ * usage: one of AHARDWAREBUFFER_USAGE_* constant
+ *
+ * By default (if this function is never called), a usage of
+ * AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE | AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
+ * is assumed.
+ *
+ * Calling this function will usually cause following buffers to be
+ * reallocated.
+ */
+int ANativeWindow_setUsage(ANativeWindow* window, uint64_t usage);
+/*
+ * Sets the number of buffers associated with this native window.
+ */
+int ANativeWindow_setBufferCount(ANativeWindow* window, size_t bufferCount);
+/*
+ * All buffers dequeued after this call will have the dimensions specified.
+ * In particular, all buffers will have a fixed-size, independent from the
+ * native-window size. They will be scaled according to the scaling mode
+ * (see native_window_set_scaling_mode) upon window composition.
+ *
+ * If w and h are 0, the normal behavior is restored. That is, dequeued buffers
+ * following this call will be sized to match the window's size.
+ *
+ * Calling this function will reset the window crop to a NULL value, which
+ * disables cropping of the buffers.
+ */
+int ANativeWindow_setBuffersDimensions(ANativeWindow* window, uint32_t w, uint32_t h);
+/*
+ * All buffers dequeued after this call will have the format specified.
+ * format: one of AHARDWAREBUFFER_FORMAT_* constant
+ *
+ * If the specified format is 0, the default buffer format will be used.
+ */
+int ANativeWindow_setBuffersFormat(ANativeWindow* window, int format);
+/*
+ * All buffers queued after this call will be associated with the timestamp in nanosecond
+ * parameter specified. If the timestamp is set to NATIVE_WINDOW_TIMESTAMP_AUTO
+ * (the default), timestamps will be generated automatically when queueBuffer is
+ * called. The timestamp is measured in nanoseconds, and is normally monotonically
+ * increasing. The timestamp should be unaffected by time-of-day adjustments,
+ * and for a camera should be strictly monotonic but for a media player may be
+ * reset when the position is set.
+ */
+int ANativeWindow_setBuffersTimestamp(ANativeWindow* window, int64_t timestamp);
+/*
+ * All buffers queued after this call will be associated with the dataSpace
+ * parameter specified.
+ *
+ * dataSpace specifies additional information about the buffer that's dependent
+ * on the buffer format and the endpoints. For example, it can be used to convey
+ * the color space of the image data in the buffer, or it can be used to
+ * indicate that the buffers contain depth measurement data instead of color
+ * images. The default dataSpace is 0, HAL_DATASPACE_UNKNOWN, unless it has been
+ * overridden by the consumer.
+ */
+int ANativeWindow_setBufferDataSpace(ANativeWindow* window, android_dataspace_t dataSpace);
+/*
+ * Enable/disable shared buffer mode
+ */
+int ANativeWindow_setSharedBufferMode(ANativeWindow* window, bool sharedBufferMode);
+/*
+ * Enable/disable auto refresh when in shared buffer mode
+ */
+int ANativeWindow_setAutoRefresh(ANativeWindow* window, bool autoRefresh);
+/*****************************************************************************/
+__END_DECLS
+#endif /* ANDROID_VNDK_NATIVEWINDOW_ANATIVEWINDOW_H */
diff --git a/android/android-emugl/host/include/OpenglRender/RenderLib.h b/android/android-emugl/host/include/OpenglRender/RenderLib.h
index d16f243d4c..bb0cbd8511 100644
--- a/android/android-emugl/host/include/OpenglRender/RenderLib.h
+++ b/android/android-emugl/host/include/OpenglRender/RenderLib.h
@@ -22,6 +22,12 @@
namespace emugl {
+struct RenderOpt {
+ void* display;
+ void* surface;
+ void* config;
+};
+
// RenderLib - root interface for the GPU emulation library
// Use it to set the library-wide parameters (logging, crash reporting) and
// create indivudual renderers that take care of drawing windows.
@@ -53,7 +59,7 @@ public:
virtual void* getEGL(void) = 0;
- virtual bool getDSCC(void**, void**, void**, void**, int* , int*) = 0;
+ virtual bool getOpt(RenderOpt* opt) = 0;
// initRenderer - initialize the OpenGL renderer object.
//
diff --git a/android/android-emugl/host/include/OpenglRender/Renderer.h b/android/android-emugl/host/include/OpenglRender/Renderer.h
index 7fc13ecbee..08dcce7b24 100644
--- a/android/android-emugl/host/include/OpenglRender/Renderer.h
+++ b/android/android-emugl/host/include/OpenglRender/Renderer.h
@@ -16,6 +16,7 @@
#include "OpenglRender/RenderChannel.h"
#include "OpenglRender/render_api_platform_types.h"
#include "android/base/files/Stream.h"
+#include "android/snapshot/Snapshotter.h"
#include "android/snapshot/common.h"
#include <functional>
@@ -183,6 +184,10 @@ public:
virtual void fillGLESUsages(android_studio::EmulatorGLESUsages*) = 0;
virtual void getScreenshot(unsigned int nChannels, unsigned int* width,
unsigned int* height, std::vector<unsigned char>& pixels) = 0;
+ virtual void snapshotOperationCallback(
+ android::snapshot::Snapshotter::Operation op,
+ android::snapshot::Snapshotter::Stage stage) = 0;
+
protected:
~Renderer() = default;
};
diff --git a/android/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp b/android/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp
index ac740ccc63..927105d144 100644
--- a/android/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp
+++ b/android/android-emugl/host/libs/Translator/EGL/EglDisplay.cpp
@@ -53,13 +53,16 @@ void EglDisplay::initialize(int renderableType) {
m_configInitialized = true;
}
-bool EglDisplay::isInitialize() { return m_initialized;}
+bool EglDisplay::isInitialize() {
+ emugl::Mutex::AutoLock mutex(m_lock);
+ return m_initialized;
+}
void EglDisplay::terminate(){
emugl::Mutex::AutoLock mutex(m_lock);
- m_contexts.clear();
- m_surfaces.clear();
- m_initialized = false;
+ m_contexts.clear();
+ m_surfaces.clear();
+ m_initialized = false;
}
namespace CompareEglConfigs {
diff --git a/android/android-emugl/host/libs/Translator/GLES_CM/Android.mk b/android/android-emugl/host/libs/Translator/GLES_CM/Android.mk
index 4f54228ede..cfbdcbb46c 100644
--- a/android/android-emugl/host/libs/Translator/GLES_CM/Android.mk
+++ b/android/android-emugl/host/libs/Translator/GLES_CM/Android.mk
@@ -11,6 +11,10 @@ host_common_SRC_FILES := \
### GLES_CM host implementation (On top of OpenGL) ########################
$(call emugl-begin-shared-library,lib$(BUILD_TARGET_SUFFIX)GLES_CM_translator)
$(call emugl-import,libGLcommon)
+
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_SRC_FILES := $(host_common_SRC_FILES)
LOCAL_STATIC_LIBRARIES += android-emu-base emulator-astc-codec
$(call emugl-end-module)
diff --git a/android/android-emugl/host/libs/Translator/GLES_V2/Android.mk b/android/android-emugl/host/libs/Translator/GLES_V2/Android.mk
index 5f5e0e45ac..7b4629105b 100644
--- a/android/android-emugl/host/libs/Translator/GLES_V2/Android.mk
+++ b/android/android-emugl/host/libs/Translator/GLES_V2/Android.mk
@@ -1,5 +1,8 @@
LOCAL_PATH := $(call my-dir)
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
host_common_SRC_FILES := \
GLESv2Imp.cpp \
GLESv2Context.cpp \
@@ -17,6 +20,9 @@ $(call emugl-begin-shared-library,lib$(BUILD_TARGET_SUFFIX)GLES_V2_translator)
$(call emugl-import, libGLcommon)
$(call emugl-import, libOpenglCodecCommon)
+# Workaround for b/115634240
+LOCAL_SOURCE_DEPENDENCIES := $(call generated-proto-sources-dir)/android/metrics/proto/studio_stats.pb.cc
+
LOCAL_SRC_FILES := $(host_common_SRC_FILES)
# ANGLE shader translation is not supported on Windows yet.
diff --git a/android/android-emugl/host/libs/Translator/GLcommon/GLBackgroundLoader.cpp b/android/android-emugl/host/libs/Translator/GLcommon/GLBackgroundLoader.cpp
index 985d8a4cc7..754c421f0c 100644
--- a/android/android-emugl/host/libs/Translator/GLcommon/GLBackgroundLoader.cpp
+++ b/android/android-emugl/host/libs/Translator/GLcommon/GLBackgroundLoader.cpp
@@ -35,6 +35,8 @@ intptr_t GLBackgroundLoader::main() {
}
for (const auto& it : m_textureMap) {
+ if (m_interrupted.load(std::memory_order_relaxed)) break;
+
// Acquire the texture loader for each load; bail
// in case something else happened to interrupt loading.
auto ptr = m_textureLoaderWPtr.lock();
@@ -47,7 +49,8 @@ intptr_t GLBackgroundLoader::main() {
m_glesIface.restoreTexture(saveable.get());
// allow other threads to run for a while
ptr.reset();
- android::base::System::get()->sleepMs(10);
+ android::base::System::get()->sleepMs(
+ m_loadDelayMs.load(std::memory_order_relaxed));
}
}
@@ -62,3 +65,12 @@ intptr_t GLBackgroundLoader::main() {
return 0;
}
+
+bool GLBackgroundLoader::wait(intptr_t* exitStatus) {
+ m_loadDelayMs.store(0, std::memory_order_relaxed);
+ return Thread::wait();
+}
+
+void GLBackgroundLoader::interrupt() {
+ m_interrupted.store(true, std::memory_order_relaxed);
+}
diff --git a/android/android-emugl/host/libs/Translator/GLcommon/SaveableTexture.cpp b/android/android-emugl/host/libs/Translator/GLcommon/SaveableTexture.cpp
index d7315ba65d..5656b8c0dd 100644
--- a/android/android-emugl/host/libs/Translator/GLcommon/SaveableTexture.cpp
+++ b/android/android-emugl/host/libs/Translator/GLcommon/SaveableTexture.cpp
@@ -405,6 +405,7 @@ void SaveableTexture::loadFromStream(android::base::Stream* stream) {
GL_LOG("SaveableTexture::%s: warning: texture target 0x%x not supported\n", m_target);
fprintf(stderr, "Warning: texture target %d not supported\n", m_target);
}
+ m_loadedFromStream.store(true);
}
void SaveableTexture::onSave(
@@ -665,12 +666,18 @@ void SaveableTexture::onSave(
void SaveableTexture::restore() {
assert(m_loader);
m_loader(this);
+
+ if (!m_loadedFromStream.load()) {
+ return;
+ }
+
m_globalTexObj.reset(new NamedObject(
GenNameInfo(NamedObjectType::TEXTURE), m_globalNamespace));
if (!m_globalTexObj) {
GL_LOG("SaveableTexture::%s: %p: could not allocate NamedObject for texture\n", __func__, this);
emugl_crash_reporter( "Fatal: could not allocate SaveableTexture m_globalTexObj\n");
}
+
m_globalName = m_globalTexObj->getGlobalName();
if (m_target == GL_TEXTURE_2D || m_target == GL_TEXTURE_CUBE_MAP ||
m_target == GL_TEXTURE_3D || m_target == GL_TEXTURE_2D_ARRAY) {
diff --git a/android/android-emugl/host/libs/Translator/include/GLcommon/GLBackgroundLoader.h b/android/android-emugl/host/libs/Translator/include/GLcommon/GLBackgroundLoader.h
index 435cce8fbf..d38fd7993f 100644
--- a/android/android-emugl/host/libs/Translator/include/GLcommon/GLBackgroundLoader.h
+++ b/android/android-emugl/host/libs/Translator/include/GLcommon/GLBackgroundLoader.h
@@ -21,9 +21,10 @@
#include <EGL/egl.h>
+#include <atomic>
#include <memory>
-class GLBackgroundLoader : public emugl::Thread {
+class GLBackgroundLoader : public emugl::InterruptibleThread {
public:
GLBackgroundLoader(const android::snapshot::ITextureLoaderWPtr& textureLoaderWeak,
const EGLiface& eglIface,
@@ -33,8 +34,18 @@ public:
m_eglIface(eglIface),
m_glesIface(glesIface),
m_textureMap(textureMap) { }
+ ~GLBackgroundLoader() {
+ wait(nullptr);
+ m_textureMap.clear();
+ }
intptr_t main();
+ bool wait(intptr_t* exitStatus) override;
+ void interrupt() override;
+
+private:
+ std::atomic<int> m_loadDelayMs { 10 };
+ std::atomic<bool> m_interrupted { false };
const android::snapshot::ITextureLoaderWPtr m_textureLoaderWPtr;
const EGLiface& m_eglIface;
diff --git a/android/android-emugl/host/libs/Translator/include/GLcommon/SaveableTexture.h b/android/android-emugl/host/libs/Translator/include/GLcommon/SaveableTexture.h
index a381c6808a..4935e770fa 100644
--- a/android/android-emugl/host/libs/Translator/include/GLcommon/SaveableTexture.h
+++ b/android/android-emugl/host/libs/Translator/include/GLcommon/SaveableTexture.h
@@ -25,6 +25,7 @@
#include <GLES2/gl2ext.h>
+#include <atomic>
#include <functional>
#include <memory>
@@ -108,6 +109,7 @@ private:
loader_t m_loader;
GlobalNameSpace* m_globalNamespace = nullptr;
bool m_isDirty = true;
+ std::atomic<bool> m_loadedFromStream { false };
};
typedef std::shared_ptr<SaveableTexture> SaveableTexturePtr;
diff --git a/android/android-emugl/host/libs/libOpenglRender/Android.mk b/android/android-emugl/host/libs/libOpenglRender/Android.mk
index 4b808e8fd4..f196cbfd9d 100644
--- a/android/android-emugl/host/libs/libOpenglRender/Android.mk
+++ b/android/android-emugl/host/libs/libOpenglRender/Android.mk
@@ -89,6 +89,7 @@ endif
standalone_common_C_INCLUDES := \
$(LOCAL_PATH) \
$(EMUGL_PATH)/host/include \
+ $(EMUGL_PATH)/host/include/vulkan \
$(EMUGL_PATH)/host/libs/Translator/include \
$(EMUGL_PATH)/host/libs/Translator/GLES_V2/ \
$(EMUGL_PATH)/host/libs/libOpenGLESDispatch \
@@ -97,6 +98,7 @@ standalone_common_C_INCLUDES := \
$(ANGLE_TRANSLATION_INCLUDES) \
$(EMUGL_PATH)/host/libs/libOpenglRender/standalone_common \
$(EMUGL_PATH)/host/libs/libOpenglRender/standalone_common/angle-util \
+ $(EMUGL_PATH)/host/libs/libOpenglRender/vulkan \
standalone_common_STATIC_LIBRARIES := \
$(ANGLE_TRANSLATION_STATIC_LIBRARIES) \
@@ -111,6 +113,7 @@ standalone_common_STATIC_LIBRARIES := \
$(call emugl-begin-shared-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender)
$(call emugl-import,libGLESv1_dec libGLESv2_dec lib_renderControl_dec libOpenglCodecCommon)
+$(call emugl-import,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan)
LOCAL_LDLIBS += $(host_common_LDLIBS)
LOCAL_LDLIBS += $(ANDROID_EMU_LDLIBS)
@@ -120,8 +123,10 @@ $(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include)
$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
# use Translator's egl/gles headers
+LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/include/vulkan
LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include
LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/libOpenGLESDispatch
+LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/libOpenglRender/vulkan
LOCAL_STATIC_LIBRARIES += libemugl_common
LOCAL_STATIC_LIBRARIES += libOpenGLESDispatch
@@ -137,6 +142,7 @@ $(call emugl-end-module)
$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_standalone_common)
$(call emugl-import,libOpenglCodecCommon libemugl_gtest)
$(call emugl-import,lib$(BUILD_TARGET_SUFFIX)OpenglRender)
+$(call emugl-import,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan)
LOCAL_C_INCLUDES += $(standalone_common_C_INCLUDES)
LOCAL_STATIC_LIBRARIES += $(standalone_common_STATIC_LIBRARIES)
@@ -182,6 +188,7 @@ LOCAL_SRC_FILES := \
tests/OpenGLTestContext.cpp \
tests/StalePtrRegistry_unittest.cpp \
tests/TextureDraw_unittest.cpp \
+ tests/Vulkan_unittest.cpp \
LOCAL_LDFLAGS += $(standalone_common_LDFLAGS)
LOCAL_LDLIBS += $(standalone_common_LDLIBS)
diff --git a/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.cpp b/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.cpp
index e8ee1a132a..f9203d332e 100644
--- a/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.cpp
@@ -95,6 +95,29 @@ static GLenum sGetUnsizedColorBufferFormat(GLenum format) {
}
}
// static
+int sGetBytesPerPixel(GLenum p_internalFormat) {
+ switch (p_internalFormat) {
+ case GL_RGB:
+ return 3;
+ case GL_RGB565_OES:
+ return 2;
+ case GL_RGBA:
+ case GL_RGB5_A1_OES:
+ case GL_RGBA4_OES:
+ return 4;
+ case GL_UNSIGNED_INT_10_10_10_2_OES:
+ return 4;
+ case GL_RGB10_A2:
+ return 4;
+ case GL_RGBA16F:
+ return 8;
+ case GL_LUMINANCE:
+ return 2;
+ default:
+ return 3;
+ }
+}
+
ColorBuffer* ColorBuffer::create(EGLDisplay p_display,
int p_width,
int p_height,
@@ -106,86 +129,125 @@ ColorBuffer* ColorBuffer::create(EGLDisplay p_display,
GLenum texFormat = 0;
GLenum pixelType = GL_UNSIGNED_BYTE;
- int bytesPerPixel = 3;
switch (p_internalFormat) {
case GL_RGB:
texFormat = GL_RGB;
- bytesPerPixel = 3;
break;
- case GL_RGB565_OES: // and GL_RGB565
+ case GL_RGB565_OES: // and GL_RGB565
// Still say "GL_RGB" for compatibility
// with older drivers
texFormat = GL_RGB;
pixelType = GL_UNSIGNED_SHORT_5_6_5;
- bytesPerPixel = 2;
break;
case GL_RGBA:
case GL_RGB5_A1_OES:
case GL_RGBA4_OES:
texFormat = GL_RGBA;
- bytesPerPixel = 4;
break;
case GL_UNSIGNED_INT_10_10_10_2_OES:
texFormat = GL_RGBA;
pixelType = GL_UNSIGNED_SHORT;
- bytesPerPixel = 4;
break;
case GL_RGB10_A2:
texFormat = GL_RGBA;
pixelType = GL_UNSIGNED_INT_2_10_10_10_REV;
- bytesPerPixel = 4;
break;
case GL_RGBA16F:
texFormat = GL_RGBA;
pixelType = GL_HALF_FLOAT;
- bytesPerPixel = 8;
break;
case GL_LUMINANCE:
texFormat = GL_LUMINANCE;
pixelType = GL_UNSIGNED_SHORT;
- bytesPerPixel = 2;
break;
default:
fprintf(stderr, "ColorBuffer::create invalid format 0x%x\n",
p_internalFormat);
return NULL;
}
- const unsigned long bufsize = ((unsigned long)bytesPerPixel) * p_width
- * p_height;
+ ColorBuffer* cb = new ColorBuffer(p_display, hndl, helper);
+ cb->m_width = p_width;
+ cb->m_height = p_height;
+ cb->m_internalFormat = p_internalFormat;
+ cb->m_format = texFormat;
+ cb->m_type = pixelType;
+ cb->m_frameworkFormat = p_frameworkFormat;
+ cb->m_fastBlitSupported = fastBlitSupported;
+
+ return cb;
+}
+
+ColorBuffer::ColorBuffer(EGLDisplay display, HandleType hndl, Helper* helper)
+ : m_display(display), m_helper(helper), mHndl(hndl) {}
+
+ColorBuffer::~ColorBuffer() {
+ if (isInitialized()) {
+ RecursiveScopedHelperContext context(m_helper);
+ if (m_blitEGLImage) {
+ s_egl.eglDestroyImageKHR(m_display, m_blitEGLImage);
+ }
+ if (m_eglImage) {
+ s_egl.eglDestroyImageKHR(m_display, m_eglImage);
+ }
+
+ if (m_fbo) {
+ s_gles2.glDeleteFramebuffers(1, &m_fbo);
+ }
+
+ if (m_yuv_conversion_fbo) {
+ s_gles2.glDeleteFramebuffers(1, &m_yuv_conversion_fbo);
+ }
+
+ m_yuv_converter.reset();
+
+ GLuint tex[2] = {m_tex, m_blitTex};
+ s_gles2.glDeleteTextures(2, tex);
+
+ delete m_resizer;
+ }
+}
+
+bool ColorBuffer::isInitialized() {
+ return m_eglImage && m_blitEGLImage;
+}
+
+void ColorBuffer::initialize() {
+ if (isInitialized())
+ return;
+
+ int bytesPerPixel = sGetBytesPerPixel(m_internalFormat);
+ const unsigned long bufsize =
+ ((unsigned long)bytesPerPixel) * m_width * m_height;
android::base::ScopedCPtr<char> initialImage(
static_cast<char*>(::malloc(bufsize)));
if (!initialImage) {
fprintf(stderr,
"error: failed to allocate initial memory for ColorBuffer "
"of size %dx%dx%d (%lu KB)\n",
- p_width, p_height, bytesPerPixel * 8, bufsize / 1024);
- return nullptr;
+ m_width, m_height, bytesPerPixel * 8, bufsize / 1024);
+ return;
}
memset(initialImage.get(), 0xff, bufsize);
- RecursiveScopedHelperContext context(helper);
+ RecursiveScopedHelperContext context(m_helper);
if (!context.isOk()) {
- return NULL;
+ return;
}
-
- ColorBuffer* cb = new ColorBuffer(p_display, hndl, helper);
-
GLint prevUnpackAlignment;
s_gles2.glGetIntegerv(GL_UNPACK_ALIGNMENT, &prevUnpackAlignment);
s_gles2.glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- s_gles2.glGenTextures(1, &cb->m_tex);
- s_gles2.glBindTexture(GL_TEXTURE_2D, cb->m_tex);
+ s_gles2.glGenTextures(1, &m_tex);
+ s_gles2.glBindTexture(GL_TEXTURE_2D, m_tex);
- s_gles2.glTexImage2D(GL_TEXTURE_2D, 0, p_internalFormat, p_width, p_height,
- 0, texFormat, pixelType,
- initialImage.get());
+ s_gles2.glTexImage2D(GL_TEXTURE_2D, 0, m_internalFormat, m_width, m_height,
+ 0, m_format, m_type, initialImage.get());
initialImage.reset();
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@@ -196,87 +258,46 @@ ColorBuffer* ColorBuffer::create(EGLDisplay p_display,
//
// create another texture for that colorbuffer for blit
//
- s_gles2.glGenTextures(1, &cb->m_blitTex);
- s_gles2.glBindTexture(GL_TEXTURE_2D, cb->m_blitTex);
- s_gles2.glTexImage2D(GL_TEXTURE_2D, 0, p_internalFormat, p_width, p_height,
- 0, texFormat, pixelType, NULL);
+ s_gles2.glGenTextures(1, &m_blitTex);
+ s_gles2.glBindTexture(GL_TEXTURE_2D, m_blitTex);
+ s_gles2.glTexImage2D(GL_TEXTURE_2D, 0, m_internalFormat, m_width, m_height,
+ 0, m_format, m_type, NULL);
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- cb->m_width = p_width;
- cb->m_height = p_height;
- cb->m_internalFormat = p_internalFormat;
- cb->m_format = texFormat;
- cb->m_type = pixelType;
-
- cb->m_eglImage = s_egl.eglCreateImageKHR(
- p_display, s_egl.eglGetCurrentContext(), EGL_GL_TEXTURE_2D_KHR,
- (EGLClientBuffer)SafePointerFromUInt(cb->m_tex), NULL);
-
- cb->m_blitEGLImage = s_egl.eglCreateImageKHR(
- p_display, s_egl.eglGetCurrentContext(), EGL_GL_TEXTURE_2D_KHR,
- (EGLClientBuffer)SafePointerFromUInt(cb->m_blitTex), NULL);
+ m_eglImage = s_egl.eglCreateImageKHR(
+ m_display, s_egl.eglGetCurrentContext(), EGL_GL_TEXTURE_2D_KHR,
+ (EGLClientBuffer)SafePointerFromUInt(m_tex), NULL);
- cb->m_resizer = new TextureResize(p_width, p_height);
+ m_blitEGLImage = s_egl.eglCreateImageKHR(
+ m_display, s_egl.eglGetCurrentContext(), EGL_GL_TEXTURE_2D_KHR,
+ (EGLClientBuffer)SafePointerFromUInt(m_blitTex), NULL);
- cb->m_frameworkFormat = p_frameworkFormat;
- switch (cb->m_frameworkFormat) {
+ m_resizer = new TextureResize(m_width, m_height);
+ switch (m_frameworkFormat) {
case FRAMEWORK_FORMAT_GL_COMPATIBLE:
break;
case FRAMEWORK_FORMAT_YV12:
case FRAMEWORK_FORMAT_YUV_420_888:
- cb->m_yuv_converter.reset(
- new YUVConverter(p_width, p_height, cb->m_frameworkFormat));
+ m_yuv_converter.reset(
+ new YUVConverter(m_width, m_height, m_frameworkFormat));
break;
default:
break;
}
-
- cb->m_fastBlitSupported = fastBlitSupported;
-
// desktop GL only: use GL_UNSIGNED_INT_8_8_8_8_REV for faster readback.
if (emugl::getRenderer() == SELECTED_RENDERER_HOST) {
#define GL_UNSIGNED_INT_8_8_8_8 0x8035
#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367
- cb->m_asyncReadbackType = GL_UNSIGNED_INT_8_8_8_8_REV;
+ m_asyncReadbackType = GL_UNSIGNED_INT_8_8_8_8_REV;
}
s_gles2.glPixelStorei(GL_UNPACK_ALIGNMENT, prevUnpackAlignment);
s_gles2.glFinish();
- return cb;
-}
-
-ColorBuffer::ColorBuffer(EGLDisplay display, HandleType hndl, Helper* helper)
- : m_display(display), m_helper(helper), mHndl(hndl) {}
-
-ColorBuffer::~ColorBuffer() {
- RecursiveScopedHelperContext context(m_helper);
-
- if (m_blitEGLImage) {
- s_egl.eglDestroyImageKHR(m_display, m_blitEGLImage);
- }
- if (m_eglImage) {
- s_egl.eglDestroyImageKHR(m_display, m_eglImage);
- }
-
- if (m_fbo) {
- s_gles2.glDeleteFramebuffers(1, &m_fbo);
- }
-
- if (m_yuv_conversion_fbo) {
- s_gles2.glDeleteFramebuffers(1, &m_yuv_conversion_fbo);
- }
-
- m_yuv_converter.reset();
-
- GLuint tex[2] = {m_tex, m_blitTex};
- s_gles2.glDeleteTextures(2, tex);
-
- delete m_resizer;
}
void ColorBuffer::readPixels(int x,
@@ -294,6 +315,7 @@ void ColorBuffer::readPixels(int x,
p_format = sGetUnsizedColorBufferFormat(p_format);
touch();
+ initialize();
if (bindFbo(&m_fbo, m_tex)) {
GLint prevAlignment = 0;
s_gles2.glGetIntegerv(GL_PACK_ALIGNMENT, &prevAlignment);
@@ -306,7 +328,6 @@ void ColorBuffer::readPixels(int x,
void ColorBuffer::reformat(GLint internalformat,
GLenum format, GLenum type) {
-
format = sGetUnsizedColorBufferFormat(format);
s_gles2.glBindTexture(GL_TEXTURE_2D, m_tex);
@@ -350,7 +371,7 @@ void ColorBuffer::subUpdate(int x,
}
touch();
-
+ initialize();
p_format = sGetUnsizedColorBufferFormat(p_format);
if (m_needFormatCheck) {
@@ -395,7 +416,7 @@ bool ColorBuffer::blitFromCurrentReadBuffer() {
}
touch();
-
+ initialize();
if (m_fastBlitSupported) {
s_egl.eglBlitFromCurrentReadBufferANDROID(m_display, m_eglImage);
m_sync = (GLsync)s_egl.eglSetImageFenceANDROID(m_display, m_eglImage);
@@ -547,15 +568,16 @@ bool ColorBuffer::blitFromCurrentReadBuffer() {
}
bool ColorBuffer::bindToTexture() {
- if (!m_eglImage) {
- return false;
- }
RenderThreadInfo* tInfo = RenderThreadInfo::get();
if (!tInfo->currContext.get()) {
return false;
}
touch();
+ initialize();
+ if (!m_eglImage) {
+ return false;
+ }
if (tInfo->currContext->clientVersion() > GLESApi_CM) {
s_gles2.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
} else {
@@ -573,6 +595,7 @@ bool ColorBuffer::bindToRenderbuffer() {
return false;
}
touch();
+ initialize();
if (tInfo->currContext->clientVersion() > GLESApi_CM) {
s_gles2.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES,
m_eglImage);
@@ -584,6 +607,7 @@ bool ColorBuffer::bindToRenderbuffer() {
}
GLuint ColorBuffer::scale() {
+ initialize();
return m_resizer->update(m_tex);
}
@@ -594,12 +618,14 @@ void ColorBuffer::waitSync() {
}
bool ColorBuffer::post(GLuint tex, float rotation, float dx, float dy) {
+ initialize();
// NOTE: Do not call m_helper->setupContext() here!
waitSync();
return m_helper->getTextureDraw()->draw(tex, rotation, dx, dy);
}
bool ColorBuffer::postWithOverlay(GLuint tex, float rotation, float dx, float dy) {
+ initialize();
// NOTE: Do not call m_helper->setupContext() here!
waitSync();
return m_helper->getTextureDraw()->drawWithOverlay(tex, rotation, dx, dy);
@@ -611,7 +637,7 @@ void ColorBuffer::readback(unsigned char* img) {
return;
}
touch();
-
+ initialize();
waitSync();
if (bindFbo(&m_fbo, m_tex)) {
@@ -626,7 +652,7 @@ void ColorBuffer::readbackAsync(GLuint buffer) {
return;
}
touch();
-
+ initialize();
waitSync();
if (bindFbo(&m_fbo, m_tex)) {
@@ -643,7 +669,7 @@ void ColorBuffer::readbackAsync(GLuint buffer1, GLuint buffer2, unsigned char* i
return;
}
touch();
-
+ initialize();
waitSync();
if (bindFbo(&m_fbo, m_tex)) {
@@ -672,8 +698,6 @@ void ColorBuffer::onSave(android::base::Stream* stream) {
stream->putBe32(static_cast<uint32_t>(m_height));
stream->putBe32(static_cast<uint32_t>(m_internalFormat));
stream->putBe32(static_cast<uint32_t>(m_frameworkFormat));
- // for debug
- assert(m_eglImage && m_blitEGLImage);
stream->putBe32(reinterpret_cast<uintptr_t>(m_eglImage));
stream->putBe32(reinterpret_cast<uintptr_t>(m_blitEGLImage));
}
@@ -699,7 +723,6 @@ ColorBuffer* ColorBuffer::onLoad(android::base::Stream* stream,
cb->mNeedRestore = true;
cb->m_eglImage = eglImage;
cb->m_blitEGLImage = blitEGLImage;
- assert(eglImage && blitEGLImage);
cb->m_width = width;
cb->m_height = height;
cb->m_internalFormat = internalFormat;
@@ -709,6 +732,8 @@ ColorBuffer* ColorBuffer::onLoad(android::base::Stream* stream,
}
void ColorBuffer::restore() {
+ if (!isInitialized())
+ return;
RecursiveScopedHelperContext context(m_helper);
s_gles2.glGenTextures(1, &m_tex);
s_gles2.glBindTexture(GL_TEXTURE_2D, m_tex);
diff --git a/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.h b/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
index 4f23a4b51e..0a17c5b018 100644
--- a/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
+++ b/android/android-emugl/host/libs/libOpenglRender/ColorBuffer.h
@@ -139,11 +139,6 @@ public:
Helper* helper,
bool fastBlitSupported);
- // Sometimes things happen and we need to reformat the GL texture
- // used. This function replaces the format of the underlying texture
- // with the internalformat / format / type combination specified.
- void reformat(GLint internalformat, GLenum format, GLenum type);
-
// Destructor.
~ColorBuffer();
@@ -224,7 +219,8 @@ public:
HandleType getHndl() const;
bool isFastBlitSupported() const { return m_fastBlitSupported; }
-
+ bool isInitialized();
+ void initialize();
public:
void restore();
@@ -232,6 +228,11 @@ private:
ColorBuffer(EGLDisplay display, HandleType hndl, Helper* helper);
void waitSync();
+ // Sometimes things happen and we need to reformat the GL texture
+ // used. This function replaces the format of the underlying texture
+ // with the internalformat / format / type combination specified.
+ void reformat(GLint internalformat, GLenum format, GLenum type);
+
private:
GLuint m_tex = 0;
GLuint m_blitTex = 0;
diff --git a/android/android-emugl/host/libs/libOpenglRender/FrameBuffer.cpp b/android/android-emugl/host/libs/libOpenglRender/FrameBuffer.cpp
index 4f786407aa..99226bba5f 100644
--- a/android/android-emugl/host/libs/libOpenglRender/FrameBuffer.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/FrameBuffer.cpp
@@ -1119,7 +1119,9 @@ int FrameBuffer::openColorBuffer(HandleType p_colorbuffer) {
}
c->second.refcount++;
markOpened(&c->second);
-
+ if(!c->second.cb->isInitialized()) {
+ c->second.cb->initialize();
+ }
uint64_t puid = tInfo->m_puid;
if (puid) {
m_procOwnedColorBuffers[puid].insert(p_colorbuffer);
diff --git a/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.cpp b/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.cpp
index 63941aee0e..720b36ea1c 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.cpp
@@ -85,21 +85,17 @@ void* RenderLibImpl::getEGL(void) {
return &s_egl;
}
-bool RenderLibImpl::getDSCC(void** display, void** surface, void** config,
- void** context, int* width, int* height) {
+bool RenderLibImpl::getOpt(RenderOpt* opt) {
FrameBuffer* fb = FrameBuffer::getFB();
if (fb == nullptr) {
return false;
}
- *display = fb->getDisplay();
- *surface = fb->getWindowSurface();
- *config = fb->getConfig();
- *context = fb->getContext();
- *width = fb->windowWidth() * fb->getDpr();
- *height = fb->windowHeight() * fb->getDpr();
+ opt->display = fb->getDisplay();
+ opt->surface = fb->getWindowSurface();
+ opt->config = fb->getConfig();
- return (*display && *surface && *config && *context);
+ return (opt->display && opt->surface && opt->config);
}
RendererPtr RenderLibImpl::initRenderer(int width, int height,
diff --git a/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.h b/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.h
index bcd2292cda..38e68b9524 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.h
+++ b/android/android-emugl/host/libs/libOpenglRender/RenderLibImpl.h
@@ -44,7 +44,7 @@ public:
virtual void* getEGL(void) override;
- virtual bool getDSCC(void**, void**, void **, void**, int*, int*) override;
+ virtual bool getOpt(RenderOpt* opt) override;
virtual RendererPtr initRenderer(int width,
int height,
diff --git a/android/android-emugl/host/libs/libOpenglRender/RenderWindow.cpp b/android/android-emugl/host/libs/libOpenglRender/RenderWindow.cpp
index 6719de7cf7..121895e1f8 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RenderWindow.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/RenderWindow.cpp
@@ -19,6 +19,7 @@
#include "emugl/common/mutex.h"
#include "emugl/common/thread.h"
#include "FrameBuffer.h"
+#include "RendererImpl.h"
#include <stdarg.h>
#include <stdio.h>
@@ -368,7 +369,8 @@ RenderWindow::RenderWindow(int width,
while (auto cmd = mRepostCommands.receive()) {
if (*cmd == RepostCommand::Sync) {
continue;
- } else if (*cmd == RepostCommand::Repost) {
+ } else if (*cmd == RepostCommand::Repost &&
+ !mPaused) {
GL_LOG("Reposting thread dequeueing a CMD_REPAINT");
RenderWindowMessage msg = {CMD_REPAINT};
(void)msg.process();
@@ -410,6 +412,21 @@ RenderWindow::~RenderWindow() {
}
}
+void RenderWindow::setPaused(bool paused) {
+ // If pausing, flush commands
+ if (!mPaused && paused) {
+ if (useThread()) {
+ fprintf(stderr,
+ "WARNING: flushMessages unsupported for RenderWindowThread. "
+ "Generic snapshot load might segfault.\n");
+ } else {
+ mRepostCommands.waitForEmpty();
+ }
+ }
+
+ mPaused = paused;
+}
+
bool RenderWindow::getHardwareStrings(const char** vendor,
const char** renderer,
const char** version) {
diff --git a/android/android-emugl/host/libs/libOpenglRender/RenderWindow.h b/android/android-emugl/host/libs/libOpenglRender/RenderWindow.h
index dede500796..612893b163 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RenderWindow.h
+++ b/android/android-emugl/host/libs/libOpenglRender/RenderWindow.h
@@ -137,6 +137,8 @@ public:
// Resets whether the guest has posted a frame.
void resetGuestPostedAFrame();
+ void setPaused(bool paused);
+
private:
bool processMessage(const RenderWindowMessage& msg);
bool useThread() const { return mThread != nullptr; }
@@ -152,6 +154,8 @@ private:
};
android::base::MessageChannel<RepostCommand, 10> mRepostCommands;
android::base::FunctorThread mRepostThread;
+
+ bool mPaused = false;
};
#endif // ANDROID_EMUGL_LIBRENDER_RENDER_WINDOW_H
diff --git a/android/android-emugl/host/libs/libOpenglRender/RendererImpl.cpp b/android/android-emugl/host/libs/libOpenglRender/RendererImpl.cpp
index 4be4bbbbfb..ef14eead7b 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RendererImpl.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/RendererImpl.cpp
@@ -254,16 +254,18 @@ void RendererImpl::save(android::base::Stream* stream,
bool RendererImpl::load(android::base::Stream* stream,
const android::snapshot::ITextureLoaderPtr& textureLoader) {
+
#ifdef SNAPSHOT_PROFILE
- android::base::System::Duration startTime
- = android::base::System::get()->getUnixTimeUs();
+ android::base::System::Duration startTime =
+ android::base::System::get()->getUnixTimeUs();
#endif
- cleanupRenderThreads();
waitForProcessCleanup();
#ifdef SNAPSHOT_PROFILE
- printf("RenderThread cleanup time: %lld ms\n",
- (long long)(android::base::System::get()->getUnixTimeUs()
- - startTime) / 1000);
+ printf("Previous session cleanup time: %lld ms\n",
+ (long long)(android::base::System::get()
+ ->getUnixTimeUs() -
+ startTime) /
+ 1000);
#endif
mStopped = stream->getByte();
@@ -382,4 +384,34 @@ void RendererImpl::cleanupProcGLObjects(uint64_t puid) {
mCleanupThread->cleanup(puid);
}
+void RendererImpl::snapshotOperationCallback(
+ android::snapshot::Snapshotter::Operation op,
+ android::snapshot::Snapshotter::Stage stage) {
+ using namespace android::snapshot;
+ switch (op) {
+ case Snapshotter::Operation::Load:
+ if (stage == Snapshotter::Stage::Start) {
+#ifdef SNAPSHOT_PROFILE
+ android::base::System::Duration startTime =
+ android::base::System::get()->getUnixTimeUs();
+#endif
+ mRenderWindow->setPaused(true);
+ cleanupRenderThreads();
+#ifdef SNAPSHOT_PROFILE
+ printf("Previous session suspend time: %lld ms\n",
+ (long long)(android::base::System::get()
+ ->getUnixTimeUs() -
+ startTime) /
+ 1000);
+#endif
+ }
+ if (stage == Snapshotter::Stage::End) {
+ mRenderWindow->setPaused(false);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
} // namespace emugl
diff --git a/android/android-emugl/host/libs/libOpenglRender/RendererImpl.h b/android/android-emugl/host/libs/libOpenglRender/RendererImpl.h
index 77d8d6f1b5..7ed91d551c 100644
--- a/android/android-emugl/host/libs/libOpenglRender/RendererImpl.h
+++ b/android/android-emugl/host/libs/libOpenglRender/RendererImpl.h
@@ -81,11 +81,16 @@ public:
void fillGLESUsages(android_studio::EmulatorGLESUsages*) final;
void getScreenshot(unsigned int nChannels, unsigned int* width,
unsigned int* height, std::vector<unsigned char>& pixels) final;
+ void snapshotOperationCallback(
+ android::snapshot::Snapshotter::Operation op,
+ android::snapshot::Snapshotter::Stage stage) final;
+
private:
DISALLOW_COPY_ASSIGN_AND_MOVE(RendererImpl);
private:
- // Stop all render threads and wait until they exit.
+ // Stop all render threads and wait until they exit,
+ // and also delete them.
void cleanupRenderThreads();
// Wait for process cleanup to complete.
void waitForProcessCleanup();
diff --git a/android/android-emugl/host/libs/libOpenglRender/TextureResize.cpp b/android/android-emugl/host/libs/libOpenglRender/TextureResize.cpp
index 83b7f77d81..da375a5136 100644
--- a/android/android-emugl/host/libs/libOpenglRender/TextureResize.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/TextureResize.cpp
@@ -383,7 +383,8 @@ void TextureResize::resize(GLuint texture) {
// Restore the previous texture filters.
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
s_gles2.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
-
+ s_gles2.glFramebufferTexture2D(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
// Secondly, scale the vertical dimension using the second framebuffer.
s_gles2.glBindFramebuffer(GL_FRAMEBUFFER, mFBHeight.framebuffer);
s_gles2.glClear(GL_COLOR_BUFFER_BIT);
@@ -394,7 +395,8 @@ void TextureResize::resize(GLuint texture) {
s_gles2.glBindTexture(GL_TEXTURE_2D, mFBWidth.texture);
s_gles2.glUniform1i(mFBHeight.uTexture, 0);
s_gles2.glDrawArrays(GL_TRIANGLES, 0, sizeof(kVertexData) / (2 * sizeof(float)));
-
+ s_gles2.glFramebufferTexture2D(
+ GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0);
// Clear the bindings. (Viewport restored outside)
s_gles2.glBindBuffer(GL_ARRAY_BUFFER, 0);
s_gles2.glBindFramebuffer(GL_FRAMEBUFFER, 0);
diff --git a/android/android-emugl/host/libs/libOpenglRender/tests/Vulkan_unittest.cpp b/android/android-emugl/host/libs/libOpenglRender/tests/Vulkan_unittest.cpp
new file mode 100644
index 0000000000..cf3ab848c7
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/tests/Vulkan_unittest.cpp
@@ -0,0 +1,462 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <gtest/gtest.h>
+
+#include "VulkanDispatch.h"
+
+#include "android/base/ArraySize.h"
+#include "android/base/files/PathUtils.h"
+#include "android/base/system/System.h"
+#include "android/base/testing/TestSystem.h"
+
+#include "Standalone.h"
+
+#include <sstream>
+#include <string>
+#include <vulkan/vulkan.h>
+
+#ifdef _WIN32
+#include <windows.h>
+#include "android/base/system/Win32UnicodeString.h"
+using android::base::Win32UnicodeString;
+#else
+#include <dlfcn.h>
+#endif
+
+using android::base::arraySize;
+using android::base::pj;
+using android::base::TestSystem;
+
+namespace emugl {
+
+static std::string loaderAndMockTestLibsDir() {
+ return
+ pj(TestSystem::getProgramDirectoryFromPlatform(),
+ "testlib64");
+}
+
+static std::string testIcdFilename() {
+ // TODO: Use Swiftshader for rendering tests
+ return pj(loaderAndMockTestLibsDir(), "VkICD_mock_icd.json");
+}
+
+static void* dlOpenFuncForTesting() {
+#ifdef _WIN32
+ const Win32UnicodeString name(
+ pj(loaderAndMockTestLibsDir(), "vulkan-1.dll"));
+ return LoadLibraryW(name.c_str());
+#else
+
+#ifdef __APPLE__
+ constexpr char suffix[] = ".dylib";
+#else
+ constexpr char suffix[] = ".so";
+#endif
+
+ std::string libName =
+ std::string("libvulkan") + suffix;
+
+ auto name = pj(loaderAndMockTestLibsDir(), libName);
+ return dlopen(name.c_str(), RTLD_NOW);
+#endif
+}
+
+static void* dlSymFuncForTesting(void* lib, const char* sym) {
+#ifdef _WIN32
+ return (void*)GetProcAddress((HMODULE)lib, sym);
+#else
+ return dlsym(lib, sym);
+#endif
+}
+
+static std::string deviceTypeToString(VkPhysicalDeviceType type) {
+#define DO_ENUM_RETURN_STRING(e) \
+ case e: \
+ return #e; \
+
+ switch (type) {
+ DO_ENUM_RETURN_STRING(VK_PHYSICAL_DEVICE_TYPE_OTHER)
+ DO_ENUM_RETURN_STRING(VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)
+ DO_ENUM_RETURN_STRING(VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)
+ DO_ENUM_RETURN_STRING(VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)
+ DO_ENUM_RETURN_STRING(VK_PHYSICAL_DEVICE_TYPE_CPU)
+ default:
+ return "Unknown";
+ }
+}
+
+static std::string queueFlagsToString(VkQueueFlags queueFlags) {
+ std::stringstream ss;
+
+ if (queueFlags & VK_QUEUE_GRAPHICS_BIT) {
+ ss << "VK_QUEUE_GRAPHICS_BIT | ";
+ }
+ if (queueFlags & VK_QUEUE_COMPUTE_BIT) {
+ ss << "VK_QUEUE_COMPUTE_BIT | ";
+ }
+ if (queueFlags & VK_QUEUE_TRANSFER_BIT) {
+ ss << "VK_QUEUE_TRANSFER_BIT | ";
+ }
+ if (queueFlags & VK_QUEUE_SPARSE_BINDING_BIT) {
+ ss << "VK_QUEUE_SPARSE_BINDING_BIT | ";
+ }
+ if (queueFlags & VK_QUEUE_PROTECTED_BIT) {
+ ss << "VK_QUEUE_PROTECTED_BIT";
+ }
+
+ return ss.str();
+}
+
+static std::string getPhysicalDevicePropertiesString(
+ const goldfish_vk::VulkanDispatch* vk,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceProperties& props) {
+
+ std::stringstream ss;
+
+ uint16_t apiMaj = (uint16_t)(props.apiVersion >> 22);
+ uint16_t apiMin = (uint16_t)(0x000003ff & (props.apiVersion >> 12));
+ uint16_t apiPatch = (uint16_t)(0x000007ff & (props.apiVersion));
+
+ ss << "API version: " << apiMaj << "." << apiMin << "." << apiPatch << "\n";
+ ss << "Driver version: " << std::hex << props.driverVersion << "\n";
+ ss << "Vendor ID: " << std::hex << props.vendorID << "\n";
+ ss << "Device ID: " << std::hex << props.deviceID << "\n";
+ ss << "Device type: " << deviceTypeToString(props.deviceType) << "\n";
+ ss << "Device name: " << props.deviceName << "\n";
+
+ uint32_t deviceExtensionCount;
+ std::vector<VkExtensionProperties> deviceExtensionProperties;
+ vk->vkEnumerateDeviceExtensionProperties(
+ physicalDevice,
+ nullptr,
+ &deviceExtensionCount,
+ nullptr);
+
+ deviceExtensionProperties.resize(deviceExtensionCount);
+ vk->vkEnumerateDeviceExtensionProperties(
+ physicalDevice,
+ nullptr,
+ &deviceExtensionCount,
+ deviceExtensionProperties.data());
+
+ for (uint32_t i = 0; i < deviceExtensionCount; ++i) {
+ ss << "Device extension: " <<
+ deviceExtensionProperties[i].extensionName << "\n";
+ }
+
+ return ss.str();
+}
+
+static void testInstanceCreation(const VulkanDispatch* vk,
+ VkInstance* instance_out) {
+
+ EXPECT_TRUE(vk->vkEnumerateInstanceExtensionProperties);
+ EXPECT_TRUE(vk->vkCreateInstance);
+
+ uint32_t count;
+ vk->vkEnumerateInstanceExtensionProperties(nullptr, &count, nullptr);
+
+ fprintf(stderr, "%s: exts: %u\n", __func__, count);
+
+ std::vector<VkExtensionProperties> props(count);
+ vk->vkEnumerateInstanceExtensionProperties(nullptr, &count, props.data());
+
+ for (uint32_t i = 0; i < count; i++) {
+ fprintf(stderr, "%s: ext: %s\n", __func__, props[i].extensionName);
+ }
+
+ // Query the correct surface extensions, which we'll need.
+
+ const char* exts[] = {
+ "VK_KHR_surface",
+#ifdef _WIN32
+#define PLATFORM_SURFACE_INSTANCE_EXT "VK_KHR_win32_surface"
+#else
+#ifdef __APPLE__
+#define PLATFORM_SURFACE_INSTANCE_EXT "VK_MVK_macos_surface"
+#else
+#define PLATFORM_SURFACE_INSTANCE_EXT "VK_KHR_xlib_surface"
+#endif
+#endif
+ PLATFORM_SURFACE_INSTANCE_EXT,
+ };
+
+ VkInstanceCreateInfo instanceCreateInfo = {
+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, 0, 0,
+ nullptr,
+ 0, nullptr,
+ arraySize(exts), exts,
+ };
+
+ VkInstance instance;
+
+ EXPECT_EQ(VK_SUCCESS,
+ vk->vkCreateInstance(
+ &instanceCreateInfo, nullptr, &instance));
+
+ *instance_out = instance;
+}
+
+static void testDeviceCreation(const VulkanDispatch* vk,
+ VkInstance instance,
+ VkPhysicalDevice* physDevice_out,
+ VkDevice* device_out) {
+
+ fprintf(stderr, "%s: call\n", __func__);
+
+ EXPECT_TRUE(vk->vkEnumeratePhysicalDevices);
+ EXPECT_TRUE(vk->vkGetPhysicalDeviceProperties);
+ EXPECT_TRUE(vk->vkGetPhysicalDeviceQueueFamilyProperties);
+
+ uint32_t physicalDeviceCount;
+ std::vector<VkPhysicalDevice> physicalDevices;
+
+ EXPECT_EQ(VK_SUCCESS,
+ vk->vkEnumeratePhysicalDevices(
+ instance, &physicalDeviceCount, nullptr));
+
+ physicalDevices.resize(physicalDeviceCount);
+
+ EXPECT_EQ(VK_SUCCESS,
+ vk->vkEnumeratePhysicalDevices(
+ instance, &physicalDeviceCount, physicalDevices.data()));
+
+ std::vector<VkPhysicalDeviceProperties> physicalDeviceProps(physicalDeviceCount);
+
+ // at the end of the day, we need to pick a physical device.
+ // Pick one that has graphics + compute if possible, otherwise settle for a device
+ // that has at least one queue family capable of graphics.
+ // TODO: Pick the device that has present capability for that queue if
+ // we are not running in no-window mode.
+
+ bool bestPhysicalDeviceFound = false;
+ uint32_t bestPhysicalDeviceIndex = 0;
+
+ std::vector<uint32_t> physDevsWithBothGraphicsAndCompute;
+ std::vector<uint32_t> physDevsWithGraphicsOnly;
+
+ for (uint32_t i = 0; i < physicalDeviceCount; i++) {
+ uint32_t deviceExtensionCount;
+ std::vector<VkExtensionProperties> deviceExtensionProperties;
+ vk->vkEnumerateDeviceExtensionProperties(
+ physicalDevices[i],
+ nullptr,
+ &deviceExtensionCount,
+ nullptr);
+
+ deviceExtensionProperties.resize(deviceExtensionCount);
+ vk->vkEnumerateDeviceExtensionProperties(
+ physicalDevices[i],
+ nullptr,
+ &deviceExtensionCount,
+ deviceExtensionProperties.data());
+
+ bool hasSwapchainExtension = false;
+
+ fprintf(stderr, "%s: check swapchain ext\n", __func__);
+ for (uint32_t j = 0; j < deviceExtensionCount; j++) {
+ std::string ext = deviceExtensionProperties[j].extensionName;
+ if (ext == "VK_KHR_swapchain") {
+ hasSwapchainExtension = true;
+ }
+ }
+
+ if (!hasSwapchainExtension) continue;
+
+ vk->vkGetPhysicalDeviceProperties(
+ physicalDevices[i],
+ physicalDeviceProps.data() + i);
+
+ auto str = getPhysicalDevicePropertiesString(vk, physicalDevices[i], physicalDeviceProps[i]);
+ fprintf(stderr, "device %u: %s\n", i, str.c_str());
+
+ uint32_t queueFamilyCount;
+ vk->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevices[i], &queueFamilyCount, nullptr);
+
+ std::vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
+ vk->vkGetPhysicalDeviceQueueFamilyProperties(physicalDevices[i], &queueFamilyCount, queueFamilies.data());
+
+ bool hasGraphicsQueue = false;
+ bool hasComputeQueue = false;
+
+ for (uint32_t j = 0; j < queueFamilyCount; j++) {
+ if (queueFamilies[j].queueCount > 0) {
+
+ auto flags = queueFamilies[j].queueFlags;
+ auto flagsAsString =
+ queueFlagsToString(flags);
+
+ fprintf(stderr, "%s: found %u @ family %u with caps: %s\n",
+ __func__,
+ queueFamilies[j].queueCount, j,
+ flagsAsString.c_str());
+
+ if ((flags & VK_QUEUE_GRAPHICS_BIT) &&
+ (flags & VK_QUEUE_COMPUTE_BIT)) {
+ hasGraphicsQueue = true;
+ hasComputeQueue = true;
+ bestPhysicalDeviceFound = true;
+ break;
+ }
+
+ if (flags & VK_QUEUE_GRAPHICS_BIT) {
+ hasGraphicsQueue = true;
+ bestPhysicalDeviceFound = true;
+ }
+
+ if (flags & VK_QUEUE_COMPUTE_BIT) {
+ hasComputeQueue = true;
+ bestPhysicalDeviceFound = true;
+ }
+ }
+ }
+
+ if (hasGraphicsQueue && hasComputeQueue) {
+ physDevsWithBothGraphicsAndCompute.push_back(i);
+ break;
+ }
+
+ if (hasGraphicsQueue) {
+ physDevsWithGraphicsOnly.push_back(i);
+ }
+ }
+
+ EXPECT_TRUE(bestPhysicalDeviceFound);
+
+ if (physDevsWithBothGraphicsAndCompute.size() > 0) {
+ bestPhysicalDeviceIndex = physDevsWithBothGraphicsAndCompute[0];
+ } else if (physDevsWithGraphicsOnly.size() > 0) {
+ bestPhysicalDeviceIndex = physDevsWithGraphicsOnly[0];
+ } else {
+ EXPECT_TRUE(false);
+ return;
+ }
+
+ // Now we got our device; select it
+ VkPhysicalDevice bestPhysicalDevice = physicalDevices[bestPhysicalDeviceIndex];
+
+ uint32_t queueFamilyCount;
+ vk->vkGetPhysicalDeviceQueueFamilyProperties(
+ bestPhysicalDevice, &queueFamilyCount, nullptr);
+
+ std::vector<VkQueueFamilyProperties> queueFamilies(queueFamilyCount);
+ vk->vkGetPhysicalDeviceQueueFamilyProperties(
+ bestPhysicalDevice, &queueFamilyCount, queueFamilies.data());
+
+ std::vector<uint32_t> wantedQueueFamilies;
+ std::vector<uint32_t> wantedQueueFamilyCounts;
+
+ for (uint32_t i = 0; i < queueFamilyCount; i++) {
+ if (queueFamilies[i].queueCount > 0) {
+ auto flags = queueFamilies[i].queueFlags;
+ if ((flags & VK_QUEUE_GRAPHICS_BIT) &&
+ (flags & VK_QUEUE_COMPUTE_BIT)) {
+ wantedQueueFamilies.push_back(i);
+ wantedQueueFamilyCounts.push_back(queueFamilies[i].queueCount);
+ break;
+ }
+
+ if ((flags & VK_QUEUE_GRAPHICS_BIT) ||
+ (flags & VK_QUEUE_COMPUTE_BIT)) {
+ wantedQueueFamilies.push_back(i);
+ wantedQueueFamilyCounts.push_back(queueFamilies[i].queueCount);
+ }
+ }
+ }
+
+ std::vector<VkDeviceQueueCreateInfo> queueCis;
+
+ for (uint32_t i = 0; i < wantedQueueFamilies.size(); ++i) {
+ auto familyIndex = wantedQueueFamilies[i];
+ auto queueCount = wantedQueueFamilyCounts[i];
+
+ std::vector<float> priorities;
+
+ for (uint32_t j = 0; j < queueCount; ++j) {
+ priorities.push_back(1.0f);
+ }
+
+ VkDeviceQueueCreateInfo dqci = {
+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, 0, 0,
+ familyIndex,
+ queueCount,
+ priorities.data(),
+ };
+
+ queueCis.push_back(dqci);
+ }
+
+ const char* exts[] = {
+ "VK_KHR_swapchain",
+ };
+
+ VkDeviceCreateInfo ci = {
+ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, 0, 0,
+ (uint32_t)queueCis.size(),
+ queueCis.data(),
+ 0, nullptr,
+ arraySize(exts), exts,
+ nullptr,
+ };
+
+ VkDevice device;
+ EXPECT_EQ(VK_SUCCESS,
+ vk->vkCreateDevice(bestPhysicalDevice, &ci, nullptr, &device));
+
+ *physDevice_out = bestPhysicalDevice;
+ *device_out = device;
+}
+
+static void teardownVulkanTest(const VulkanDispatch* vk,
+ VkDevice dev,
+ VkInstance instance) {
+ vk->vkDestroyDevice(dev, nullptr);
+ vk->vkDestroyInstance(instance, nullptr);
+}
+
+class VulkanTest : public ::testing::Test {
+protected:
+ void SetUp() override {
+ TestSystem::setEnvironmentVariable(
+ "VK_ICD_FILENAMES",
+ testIcdFilename());
+
+ goldfish_vk::init_vulkan_dispatch_from_system_loader(
+ dlOpenFuncForTesting,
+ dlSymFuncForTesting,
+ &mVk);
+
+ testInstanceCreation(&mVk, &mInstance);
+ testDeviceCreation(
+ &mVk, mInstance, &mPhysicalDevice, &mDevice);
+ }
+
+ void TearDown() override {
+ teardownVulkanTest(&mVk, mDevice, mInstance);
+ TestSystem::setEnvironmentVariable(
+ "VK_ICD_FILENAMES", "");
+ }
+
+private:
+ VulkanDispatch mVk;
+ VkInstance mInstance;
+ VkPhysicalDevice mPhysicalDevice;
+ VkDevice mDevice;
+};
+
+TEST_F(VulkanTest, Basic) { }
+
+} // namespace emugl
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/__init__.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/__init__.py
new file mode 100644
index 0000000000..355ccb92aa
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/__init__.py
@@ -0,0 +1,7 @@
+from .common import *
+from .frontend import *
+from .marshaling import *
+from .testing import *
+from .deepcopy import *
+from .handlemap import *
+from .dispatch import *
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/__init__.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/__init__.py
new file mode 100644
index 0000000000..dd6cdc998a
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/__init__.py
@@ -0,0 +1,2 @@
+from .vulkantypes import *
+from .codegen import *
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/codegen.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/codegen.py
new file mode 100644
index 0000000000..c2677e3b79
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/codegen.py
@@ -0,0 +1,458 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from .vulkantypes import VulkanType, VulkanCompoundType, VulkanAPI
+
+from copy import deepcopy
+
+import os
+import sys
+
+
+# Class capturing a .cpp file and a .h file (a "C++ module")
+class Module(object):
+
+ def __init__(self, directory, basename):
+ self.directory = directory
+ self.basename = basename
+
+ self.headerPreamble = ""
+ self.implPreamble = ""
+
+ self.headerPostamble = ""
+ self.implPostamble = ""
+
+ self.headerFileHandle = ""
+ self.implFileHandle = ""
+
+ def getMakefileSrcEntry(self):
+ dirName = self.directory
+ baseName = self.basename
+ joined = os.path.join(dirName, baseName)
+ return " " + joined + ".cpp \\\n"
+
+ def begin(self, globalDir):
+ # Create subdirectory, if needed
+ absDir = os.path.join(globalDir, self.directory)
+
+ filename = os.path.join(absDir, self.basename)
+
+ fpHeader = open(filename + ".h", "w", encoding="utf-8")
+ fpImpl = open(filename + ".cpp", "w", encoding="utf-8")
+
+ self.headerFileHandle = fpHeader
+ self.implFileHandle = fpImpl
+
+ self.headerFileHandle.write(self.headerPreamble)
+ self.implFileHandle.write(self.implPreamble)
+
+ def appendHeader(self, toAppend):
+ self.headerFileHandle.write(toAppend)
+
+ def appendImpl(self, toAppend):
+ self.implFileHandle.write(toAppend)
+
+ def end(self):
+ self.headerFileHandle.write(self.headerPostamble)
+ self.implFileHandle.write(self.implPostamble)
+
+ self.headerFileHandle.close()
+ self.implFileHandle.close()
+
+
+class CodeGen(object):
+
+ def __init__(self,):
+ self.code = ""
+ self.indentLevel = 0
+
+ def swapCode(self,):
+ res = "%s" % self.code
+ self.code = ""
+ return res
+
+ def indent(self,):
+ return "".join(" " * self.indentLevel)
+
+ def beginBlock(self,):
+ self.code += self.indent() + "{\n"
+ self.indentLevel += 1
+
+ def endBlock(self,):
+ self.indentLevel -= 1
+ self.code += self.indent() + "}\n"
+
+ def beginIf(self, cond):
+ self.code += self.indent() + "if (" + cond + ")\n"
+ self.beginBlock()
+
+ def beginElse(self, cond = None):
+ if cond is not None:
+ self.code += \
+ self.indent() + \
+ "else if (" + cond + ")\n"
+ else:
+ self.code += self.indent() + "else\n"
+ self.beginBlock()
+
+ def endElse(self):
+ self.endBlock()
+
+ def endIf(self):
+ self.endBlock()
+
+ def beginWhile(self, cond):
+ self.code += self.indent() + "while (" + cond + ")\n"
+ self.beginBlock()
+
+ def endWhile(self):
+ self.endBlock()
+
+ def beginFor(self, initial, condition, increment):
+ self.code += \
+ self.indent() + "for (" + \
+ "; ".join([initial, condition, increment]) + \
+ ")\n"
+ self.beginBlock()
+
+ def endFor(self):
+ self.endBlock()
+
+ def stmt(self, code):
+ self.code += self.indent() + code + ";\n"
+
+ def line(self, code):
+ self.code += self.indent() + code + "\n"
+
+ def leftline(self, code):
+ self.code += code + "\n"
+
+ def funcCall(self, lhs, funcName, parameters):
+ res = self.indent()
+
+ if lhs is not None:
+ res += lhs + " = "
+
+ res += funcName + "(%s);\n" % (", ".join(parameters))
+
+ self.code += res
+
+ # Given a VulkanType object, generate a C type declaration
+ # with optional parameter name:
+ # [const] [typename][*][const*] [paramName]
+ def makeCTypeDecl(self, vulkanType, useParamName=True):
+ constness = "const " if vulkanType.isConst else ""
+ typeName = vulkanType.typeName
+
+ if vulkanType.pointerIndirectionLevels == 0:
+ ptrSpec = ""
+ elif vulkanType.isPointerToConstPointer:
+ ptrSpec = "* const*" if vulkanType.isConst else "**"
+ if vulkanType.pointerIndirectionLevels > 2:
+ ptrSpec += "*" * (vulkanType.pointerIndirectionLevels - 2)
+ else:
+ ptrSpec = "*" * vulkanType.pointerIndirectionLevels
+
+ if useParamName and (vulkanType.paramName is not None):
+ paramStr = (" " + vulkanType.paramName)
+ else:
+ paramStr = ""
+
+ return "%s%s%s%s" % (constness, typeName, ptrSpec, paramStr)
+
+ # Given a VulkanAPI object, generate the C function protype:
+ # <returntype> <funcname>(<parameters>)
+ def makeFuncProto(self, vulkanApi):
+
+ protoBegin = "%s %s" % (self.makeCTypeDecl(
+ vulkanApi.retType, useParamName=False), vulkanApi.name)
+ protoParams = "(\n %s)" % (",\n ".join(
+ list(map(self.makeCTypeDecl, vulkanApi.parameters))))
+
+ return protoBegin + protoParams
+
+ def makeFuncDecl(self, vulkanApi):
+ return self.makeFuncProto(vulkanApi) + ";\n\n"
+
+ def makeFuncImpl(self, vulkanApi, codegenFunc):
+ self.swapCode()
+
+ self.line(self.makeFuncProto(vulkanApi))
+ self.beginBlock()
+ codegenFunc(self)
+ self.endBlock()
+
+ return self.swapCode() + "\n"
+
+ def makeStructAccess(self,
+ vulkanType,
+ structVarName,
+ asPtr=True,
+ structAsPtr=True,
+ accessIndex=None):
+
+ deref = "->" if structAsPtr else "."
+
+ indexExpr = (" + %s" % accessIndex) if accessIndex else ""
+
+ addrOfExpr = "" if vulkanType.accessibleAsPointer() or (
+ not asPtr) else "&"
+
+ return "%s%s%s%s%s" % (addrOfExpr, structVarName, deref,
+ vulkanType.paramName, indexExpr)
+
+ def makeRawLengthAccess(self, vulkanType):
+ lenExpr = vulkanType.getLengthExpression()
+
+ if not lenExpr:
+ return None
+
+ if lenExpr == "null-terminated":
+ return "strlen(%s)" % vulkanType.paramName
+
+ return lenExpr
+
+ def makeLengthAccessFromStruct(self,
+ structInfo,
+ vulkanType,
+ structVarName,
+ asPtr=True):
+ # Handle special cases first
+ # Mostly when latexmath is involved
+ def handleSpecialCases(structInfo, vulkanType, structVarName, asPtr):
+ cases = [
+ {
+ "structName": "VkShaderModuleCreateInfo",
+ "field": "pCode",
+ "lenExprMember": "codeSize",
+ "postprocess": lambda expr: "(%s / 4)" % expr
+ },
+ {
+ "structName": "VkPipelineMultisampleStateCreateInfo",
+ "field": "pSampleMask",
+ "lenExprMember": "rasterizationSamples",
+ "postprocess": lambda expr: "(((%s) + 31) / 32)" % expr
+ },
+ ]
+
+ for c in cases:
+ if (structInfo.name, vulkanType.paramName) == (c["structName"],
+ c["field"]):
+ deref = "->" if asPtr else "."
+ expr = "%s%s%s" % (structVarName, deref, c["lenExprMember"])
+ return c["postprocess"](expr)
+
+ return None
+
+ specialCaseAccess = \
+ handleSpecialCases( \
+ structInfo, vulkanType, structVarName, asPtr)
+
+ if specialCaseAccess is not None:
+ return specialCaseAccess
+
+ lenExpr = vulkanType.getLengthExpression()
+
+ if not lenExpr:
+ return None
+
+ deref = "->" if asPtr else "."
+
+ if lenExpr == "null-terminated":
+ return "strlen(%s%s%s)" % (structVarName, deref,
+ vulkanType.paramName)
+
+ if not structInfo.getMember(lenExpr):
+ return self.makeRawLengthAccess(vulkanType)
+
+ return "%s%s%s" % (structVarName, deref, lenExpr)
+
+ def makeLengthAccessFromApi(self, api, vulkanType):
+ # Handle special cases first
+ # Mostly when :: is involved
+ def handleSpecialCases(vulkanType):
+ lenExpr = vulkanType.getLengthExpression()
+
+ if lenExpr is None:
+ return None
+
+ if "::" in lenExpr:
+ structVarName, memberVarName = lenExpr.split("::")
+ return "%s->%s" % (structVarName, memberVarName)
+ return None
+
+ specialCaseAccess = handleSpecialCases(vulkanType)
+
+ if specialCaseAccess is not None:
+ return specialCaseAccess
+
+ lenExpr = vulkanType.getLengthExpression()
+
+ if not lenExpr:
+ return None
+
+ lenExprInfo = api.getParameter(lenExpr)
+
+ if not lenExprInfo:
+ return self.makeRawLengthAccess(vulkanType)
+
+ if lenExpr == "null-terminated":
+ return "strlen(%s)" % vulkanType.paramName()
+ else:
+ deref = "*" if lenExprInfo.pointerIndirectionLevels > 0 else ""
+ return "(%s(%s))" % (deref, lenExpr)
+
+ def accessParameter(self, param, asPtr=True):
+ if asPtr:
+ if param.pointerIndirectionLevels > 0:
+ return param.paramName
+ else:
+ return "&%s" % param.paramName
+ else:
+ return param.paramName
+
+ def sizeofExpr(self, vulkanType):
+ return "sizeof(%s)" % (
+ self.makeCTypeDecl(vulkanType, useParamName=False))
+
+ def generalAccess(self,
+ vulkanType,
+ parentVarName="parent",
+ asPtr=True,
+ structAsPtr=True):
+ if vulkanType.parent is None:
+ return self.accessParameter(vulkanType, asPtr=asPtr)
+
+ if isinstance(vulkanType.parent, VulkanCompoundType):
+ return self.makeStructAccess(
+ vulkanType, parentVarName, asPtr=asPtr, structAsPtr=structAsPtr)
+
+ if isinstance(vulkanType.parent, VulkanAPI):
+ return self.accessParameter(vulkanType, asPtr=asPtr)
+
+ raise
+
+ def generalLengthAccess(self, vulkanType, parentVarName="parent"):
+ if vulkanType.parent is None:
+ return self.makeRawLengthAccess(vulkanType)
+
+ if isinstance(vulkanType.parent, VulkanCompoundType):
+ return self.makeLengthAccessFromStruct(
+ vulkanType.parent, vulkanType, parentVarName, asPtr=True)
+
+ if isinstance(vulkanType.parent, VulkanAPI):
+ return self.makeLengthAccessFromApi(vulkanType.parent, vulkanType)
+
+ raise
+
+
+# Class to wrap a Vulkan API call.
+#
+# The user gives a generic callback, |codegenDef|,
+# that takes a CodeGen object and a VulkanAPI object as arguments.
+# codegenDef uses CodeGen along with the VulkanAPI object
+# to generate the function body.
+class VulkanAPIWrapper(object):
+
+ def __init__(self,
+ customApiPrefix,
+ extraParameters=None,
+ returnTypeOverride=None,
+ codegenDef=None):
+ self.customApiPrefix = customApiPrefix
+ self.extraParameters = extraParameters
+ self.returnTypeOverride = returnTypeOverride
+
+ self.codegen = CodeGen()
+
+ self.definitionFunc = codegenDef
+
+ # Private function
+ def makeApiFunc(self, typeInfo, apiName):
+ customApi = deepcopy(typeInfo.apis[apiName])
+ customApi.name = self.customApiPrefix + customApi.name
+ if self.extraParameters is not None:
+ if isinstance(self.extraParameters, list):
+ customApi.parameters = \
+ self.extraParameters + customApi.parameters
+ else:
+ raise
+
+ if self.returnTypeOverride is not None:
+ customApi.retType = self.returnTypeOverride
+ return customApi
+
+ self.makeApi = makeApiFunc
+
+ def setCodegenDef(self, codegenDefFunc):
+ self.definitionFunc = codegenDefFunc
+
+ def makeDecl(self, typeInfo, apiName):
+ return self.codegen.makeFuncProto(
+ self.makeApi(self, typeInfo, apiName)) + ";\n\n"
+
+ def makeDefinition(self, typeInfo, apiName, isStatic=False):
+ vulkanApi = self.makeApi(self, typeInfo, apiName)
+
+ self.codegen.swapCode()
+ self.codegen.beginBlock()
+
+ if self.definitionFunc is None:
+ print("ERROR: No definition found for (%s, %s)" %
+ (vulkanApi.name, self.customApiPrefix))
+ sys.exit(1)
+
+ self.definitionFunc(self.codegen, vulkanApi)
+
+ self.codegen.endBlock()
+
+ return ("static " if isStatic else "") + self.codegen.makeFuncProto(
+ vulkanApi) + "\n" + self.codegen.swapCode() + "\n"
+
+# Base class for wrapping all Vulkan API objects. These work with Vulkan
+# Registry generators and have gen* triggers. They tend to contain
+# VulkanAPIWrapper objects to make it easier to generate the code.
+class VulkanWrapperGenerator(object):
+
+ def __init__(self, module, typeInfo):
+ self.module = module
+ self.typeInfo = typeInfo
+
+ def onBegin(self):
+ pass
+
+ def onEnd(self):
+ pass
+
+ def onBeginFeature(self, featureName):
+ pass
+
+ def onEndFeature(self):
+ pass
+
+ def onGenType(self, typeInfo, name, alias):
+ pass
+
+ def onGenStruct(self, typeInfo, typeName, alias):
+ pass
+
+ def onGenGroup(self, groupinfo, groupName, alias=None):
+ pass
+
+ def onGenEnum(self, enuminfo, name, alias):
+ pass
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ pass
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/vulkantypes.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/vulkantypes.py
new file mode 100644
index 0000000000..5f0fa3a839
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/common/vulkantypes.py
@@ -0,0 +1,357 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from generator import noneStr
+
+from copy import deepcopy
+
+# Holds information about a Vulkan type instance (i.e., not a type definition).
+# Type instances are used as struct field definitions or function parameters,
+# to be later fed to code generation.
+# VulkanType instances can be constructed in two ways:
+# 1. From an XML tag with <type> / <param> tags in vk.xml,
+# using makeVulkanTypeFromXMLTag
+# 2. User-defined instances with makeVulkanTypeSimple.
+class VulkanType(object):
+
+ def __init__(self):
+ self.parent = None
+ self.typeName = ""
+
+ self.paramName = None
+
+ self.lenExpr = None
+ self.isOptional = False
+
+ self.isConst = False
+
+ self.staticArrExpr = "" # "" means not static array
+ # 0 means the array size is not a numeric literal
+ self.staticArrCount = 0
+ self.pointerIndirectionLevels = 0 # 0 means not pointer
+ self.isPointerToConstPointer = False
+
+ def __str__(self,):
+ return ("(vulkantype %s %s paramName %s len %s optional? %s "
+ "staticArrExpr %s %s)") % (
+ self.typeName + ("*" * self.pointerIndirectionLevels) +
+ ("ptr2constptr" if self.isPointerToConstPointer else ""), "const"
+ if self.isConst else "nonconst", self.paramName, self.lenExpr,
+ self.isOptional, self.staticArrExpr, self.staticArrCount)
+
+ def isString(self,):
+ return self.pointerIndirectionLevels == 1 and (self.typeName == "char")
+
+ def isArrayOfStrings(self,):
+ return self.isPointerToConstPointer and (self.typeName == "char")
+
+ # Utility functions to make codegen life easier.
+ # This method derives the correct "count" expression if possible.
+ # Otherwise, returns None or "null-terminated" if a string.
+ def getLengthExpression(self,):
+ if self.staticArrExpr != "":
+ return self.staticArrExpr
+ if self.lenExpr:
+ return self.lenExpr
+ return None
+
+ # Can we just pass this to functions expecting T*
+ def accessibleAsPointer(self,):
+ if self.staticArrExpr != "":
+ return True
+ if self.pointerIndirectionLevels > 0:
+ return True
+ return False
+
+ # Rough attempt to infer where a type could be an output.
+ # Good for inferring which things need to be marshaled in
+ # versus marshaled out for Vulkan API calls
+ def possiblyOutput(self,):
+ return self.pointerIndirectionLevels > 0 and (not self.isConst)
+
+ def isVoidWithNoSize(self,):
+ return self.typeName == "void" and self.pointerIndirectionLevels == 0
+
+ def getTransformed(self, isConstChoice=None, ptrIndirectionChoice=None):
+ res = deepcopy(self)
+
+ if isConstChoice is not None:
+ res.isConst = isConstChoice
+ if ptrIndirectionChoice is not None:
+ res.pointerIndirectionLevels = ptrIndirectionChoice
+
+ return res
+
+ def getForAddressAccess(self):
+ return self.getTransformed(
+ ptrIndirectionChoice=self.pointerIndirectionLevels + 1)
+
+ def getForValueAccess(self):
+ if self.typeName == "void" and self.pointerIndirectionLevels == 1:
+ asUint8Type = deepcopy(self)
+ asUint8Type.typeName = "uint8_t"
+ return asUint8Type.getForValueAccess()
+ return self.getTransformed(
+ ptrIndirectionChoice=self.pointerIndirectionLevels - 1)
+
+ def getForNonConstAccess(self):
+ return self.getTransformed(isConstChoice=False)
+
+ def isNextPointer(self):
+ if self.paramName == "pNext":
+ return True
+ return False
+
+def makeVulkanTypeFromXMLTag(tag):
+ res = VulkanType()
+ # Process the length expression
+
+ if tag.attrib.get("len") is not None:
+ lengths = tag.attrib.get("len").split(",")
+ res.lenExpr = lengths[0]
+
+ # Calculate static array expression
+
+ nametag = tag.find("name")
+ enumtag = tag.find("enum")
+
+ if enumtag is not None:
+ res.staticArrExpr = enumtag.text
+ elif nametag is not None:
+ res.staticArrExpr = noneStr(nametag.tail)[1:-1]
+ if res.staticArrExpr != "":
+ res.staticArrCount = int(res.staticArrExpr)
+
+ # Determine const
+
+ beforeTypePart = noneStr(tag.text)
+
+ if "const" in beforeTypePart:
+ res.isConst = True
+
+ # Calculate type and pointer info
+
+ for elem in tag:
+ if elem.tag == "name":
+ res.paramName = elem.text
+ if elem.tag == "type":
+ duringTypePart = noneStr(elem.text)
+ afterTypePart = noneStr(elem.tail)
+ # Now we know enough to fill some stuff in
+ res.typeName = duringTypePart
+
+ # This only handles pointerIndirectionLevels == 2
+ # along with optional constant pointer for the inner part.
+ for c in afterTypePart:
+ if c == "*":
+ res.pointerIndirectionLevels += 1
+ if "const" in afterTypePart and res.pointerIndirectionLevels == 2:
+ res.isPointerToConstPointer = True
+
+ # If void*, treat like it's not a pointer
+ # if duringTypePart == "void":
+ # res.pointerIndirectionLevels -= 1
+
+ # Calculate optionality (based on validitygenerator.py)
+ if tag.attrib.get("optional") is not None:
+ res.isOptional = True
+
+ # If no validity is being generated, it usually means that
+ # validity is complex and not absolute, so let's say yes.
+ if tag.attrib.get("noautovalidity") is not None:
+ res.isOptional = True
+
+ # If this is a structure extension, it is optional.
+ if tag.attrib.get("structextends") is not None:
+ res.isOptional = True
+
+ # If this is a pNext pointer, it is optional.
+ if res.paramName == "pNext":
+ res.isOptional = True
+
+ return res
+
+
+def makeVulkanTypeSimple(isConst,
+ typeName,
+ ptrIndirectionLevels,
+ paramName=None):
+ res = VulkanType()
+
+ res.typeName = typeName
+ res.isConst = isConst
+ res.pointerIndirectionLevels = ptrIndirectionLevels
+ res.isPointerToConstPointer = False
+ res.paramName = paramName
+
+ return res
+
+# Classes for describing aggregate types (unions, structs) and API calls.
+class VulkanCompoundType(object):
+
+ def __init__(self, name, members, isUnion=False):
+ self.isUnion = isUnion
+ self.name = name
+ self.members = members
+
+ self.copy = None
+
+ def initCopies(self):
+ self.copy = deepcopy(self)
+
+ for m in self.members:
+ m.parent = self.copy
+
+ def getMember(self, memberName):
+ for m in self.members:
+ if m.paramName == memberName:
+ return m
+ return None
+
+
+class VulkanAPI(object):
+
+ def __init__(self, name, retType, parameters):
+ self.name = name
+ self.origName = name
+ self.retType = retType
+ self.parameters = parameters
+
+ self.copy = None
+
+ def initCopies(self):
+ self.copy = deepcopy(self)
+
+ for m in self.parameters:
+ m.parent = self.copy
+
+ def getParameter(self, parameterName):
+ for p in self.parameters:
+ if p.paramName == parameterName:
+ return p
+ return None
+
+
+# Parses everything about Vulkan types into a Python readable format.
+class VulkanTypeInfo(object):
+
+ def __init__(self,):
+ self.typeCategories = {}
+
+ self.structs = {}
+
+ self.enums = {}
+
+ self.apis = {}
+
+ def categoryOf(self, name):
+ return self.typeCategories[name]
+
+ def isHandleType(self, vulkantype):
+ name = vulkantype.typeName
+ if name in self.typeCategories:
+ return self.typeCategories[name] == "handle"
+ return False
+
+ def isCompoundType(self, name):
+ if name in self.typeCategories:
+ return self.typeCategories[name] in ["struct", "union"]
+ else:
+ return False
+
+ def onGenType(self, typeinfo, name, alias):
+ category = typeinfo.elem.get("category")
+ self.typeCategories[name] = category
+
+ if category in ["struct", "union"]:
+ self.onGenStruct(typeinfo, name, alias)
+
+ def onGenStruct(self, typeinfo, typeName, alias):
+ if not alias:
+ members = []
+ for member in typeinfo.elem.findall(".//member"):
+ members.append(makeVulkanTypeFromXMLTag(member))
+
+ self.structs[typeName] = \
+ VulkanCompoundType( \
+ typeName,
+ members,
+ isUnion = self.categoryOf(typeName) == "union")
+ self.structs[typeName].initCopies()
+
+ def onGenGroup(self, _groupinfo, groupName, _alias=None):
+ self.enums[groupName] = 1
+
+ def onGenEnum(self, _enuminfo, name, _alias):
+ self.enums[name] = 1
+
+ def onGenCmd(self, cmdinfo, name, _alias):
+ self.typeCategories[name] = "api"
+
+ proto = cmdinfo.elem.find("proto")
+ params = cmdinfo.elem.findall("param")
+
+ self.apis[name] = \
+ VulkanAPI(
+ name,
+ makeVulkanTypeFromXMLTag(proto),
+ list(map(makeVulkanTypeFromXMLTag, params)))
+ self.apis[name].initCopies()
+
+
+# General function to iterate over a vulkan type and call code that processes
+# each of its sub-components, if any.
+def iterateVulkanType(typeInfo, vulkanType, forEachType):
+ if not vulkanType.isArrayOfStrings():
+ if vulkanType.isPointerToConstPointer:
+ return
+
+ needCheck = \
+ vulkanType.isOptional and \
+ vulkanType.pointerIndirectionLevels > 0
+
+ if typeInfo.isCompoundType(vulkanType.typeName):
+
+ if needCheck:
+ forEachType.onCheck(vulkanType)
+
+ forEachType.onCompoundType(vulkanType)
+
+ if needCheck:
+ forEachType.endCheck(vulkanType)
+
+ else:
+
+ if vulkanType.isString():
+
+ forEachType.onString(vulkanType)
+
+ elif vulkanType.isArrayOfStrings():
+
+ forEachType.onStringArray(vulkanType)
+
+ elif vulkanType.staticArrExpr:
+
+ forEachType.onStaticArr(vulkanType)
+
+ elif vulkanType.pointerIndirectionLevels > 0:
+ if needCheck:
+ forEachType.onCheck(vulkanType)
+ forEachType.onPointer(vulkanType)
+ if needCheck:
+ forEachType.endCheck(vulkanType)
+ else:
+
+ forEachType.onValue(vulkanType)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/deepcopy.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/deepcopy.py
new file mode 100644
index 0000000000..7292738acb
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/deepcopy.py
@@ -0,0 +1,268 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from copy import deepcopy
+
+from .common.codegen import CodeGen
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+
+class DeepcopyCodegen(object):
+ def __init__(self, cgen, inputVars, poolVarName, prefix):
+ self.cgen = cgen
+ self.inputVars = inputVars
+ self.prefix = prefix
+ self.poolVarName = poolVarName
+
+ def makeAccess(varName, asPtr = True):
+ return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
+
+ def makeLengthAccess(varName):
+ return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
+
+ self.exprAccessorLhs = makeAccess(self.inputVars[0])
+ self.exprAccessorRhs = makeAccess(self.inputVars[1])
+
+ self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
+ self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
+
+ self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
+ self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
+
+ self.checked = False
+
+ def needSkip(self, vulkanType):
+ if vulkanType.isNextPointer():
+ return True
+ return False
+
+ def makeCastExpr(self, vulkanType):
+ return "(%s)" % (
+ self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
+
+ def makeNonConstCastForCopy(self, access, vulkanType):
+ if vulkanType.staticArrExpr:
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
+ elif vulkanType.accessibleAsPointer():
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
+ else:
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
+ return casted
+
+ def makeAllocBytesExpr(self, lenAccess, vulkanType):
+ sizeof = self.cgen.sizeofExpr( \
+ vulkanType.getForValueAccess())
+ if lenAccess:
+ bytesExpr = "%s * %s" % (lenAccess, sizeof)
+ else:
+ bytesExpr = sizeof
+
+ return bytesExpr
+
+ def onCheck(self, vulkanType):
+ pass
+
+ def endCheck(self, vulkanType):
+ pass
+
+ def onCompoundType(self, vulkanType):
+
+ if self.needSkip(vulkanType):
+ self.cgen.line("// TODO: Unsupported : %s" %
+ self.cgen.makeCTypeDecl(vulkanType))
+ return
+
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+ lenAccessRhs = self.lenAccessorRhs(vulkanType)
+
+ isPtr = vulkanType.pointerIndirectionLevels > 0
+
+ if isPtr:
+ self.cgen.stmt("%s = nullptr" % accessRhs)
+ self.cgen.beginIf(accessLhs)
+
+ self.cgen.stmt( \
+ "%s = %s%s->alloc(%s)" % \
+ (accessRhs, self.makeCastExpr(vulkanType.getForNonConstAccess()),
+ self.poolVarName, self.makeAllocBytesExpr(lenAccessLhs, vulkanType)))
+
+ if lenAccessLhs is not None:
+
+ loopVar = "i"
+ accessLhs = "%s + %s" % (accessLhs, loopVar)
+ forInit = "uint32_t %s = 0" % loopVar
+ forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
+ forIncr = "++%s" % loopVar
+
+ if isPtr:
+ self.cgen.stmt("%s = %s" % (lenAccessRhs, lenAccessLhs))
+
+ accessRhs = "%s + %s" % (accessRhs, loopVar)
+ self.cgen.beginFor(forInit, forCond, forIncr)
+
+
+ accessRhsCasted = self.makeNonConstCastForCopy(accessRhs, vulkanType)
+
+ self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
+ [self.poolVarName, accessLhs, accessRhsCasted])
+
+ if lenAccessLhs is not None:
+ self.cgen.endFor()
+
+ if isPtr:
+ self.cgen.endIf()
+
+ def onString(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ self.cgen.stmt("%s = nullptr" % accessRhs)
+ self.cgen.beginIf(accessLhs)
+
+ self.cgen.stmt( \
+ "%s = %s->strDup(%s)" % \
+ (accessRhs,
+ self.poolVarName,
+ accessLhs))
+
+ self.cgen.endIf()
+
+ def onStringArray(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+ lenAccessRhs = self.lenAccessorRhs(vulkanType)
+
+ self.cgen.stmt("%s = nullptr" % accessRhs)
+ self.cgen.beginIf("%s && %s" % (accessLhs, lenAccessLhs))
+
+ self.cgen.stmt( \
+ "%s = %s->strDupArray(%s, %s)" % \
+ (accessRhs,
+ self.poolVarName,
+ accessLhs,
+ lenAccessLhs))
+
+ self.cgen.endIf()
+
+ def onStaticArr(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+
+ bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
+ self.cgen.stmt("memcpy(%s, %s, %s)" % (accessRhs, accessLhs, bytesExpr))
+
+ def onPointer(self, vulkanType):
+
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ if self.needSkip(vulkanType):
+ self.cgen.stmt("%s = %s" % (accessRhs, accessLhs))
+ return
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+
+ self.cgen.stmt("%s = nullptr" % accessRhs)
+ self.cgen.beginIf(accessLhs)
+
+ bytesExpr = self.makeAllocBytesExpr(lenAccessLhs, vulkanType)
+
+ self.cgen.stmt( \
+ "%s = %s%s->dupArray(%s, %s)" % \
+ (accessRhs,
+ self.makeCastExpr(vulkanType.getForNonConstAccess()),
+ self.poolVarName,
+ accessLhs,
+ bytesExpr))
+
+ self.cgen.endIf()
+
+ def onValue(self, vulkanType):
+ accessLhs = self.exprAccessorValueLhs(vulkanType)
+ accessRhs = self.exprAccessorValueRhs(vulkanType)
+
+ self.cgen.stmt("%s = %s" % (accessRhs, accessLhs))
+
+class VulkanDeepcopy(VulkanWrapperGenerator):
+
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ self.codegen = CodeGen()
+
+ self.deepcopyPrefix = "deepcopy_"
+ self.deepcopyVars = ["from", "to"]
+ self.deepcopyPoolVarName = "pool"
+ self.deepcopyPoolParam = \
+ makeVulkanTypeSimple(False, "Pool", 1,
+ self.deepcopyPoolVarName)
+ self.voidType = makeVulkanTypeSimple(False, "void", 0)
+
+ self.deepcopyCodegen = \
+ DeepcopyCodegen(
+ None,
+ self.deepcopyVars,
+ self.deepcopyPoolVarName,
+ self.deepcopyPrefix)
+
+ self.knownDefs = {}
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
+
+ if name in self.knownDefs:
+ return
+
+ category = self.typeInfo.categoryOf(name)
+
+ if category in ["struct", "union"] and not alias:
+
+ structInfo = self.typeInfo.structs[name]
+
+ typeFromName = \
+ lambda varname: \
+ makeVulkanTypeSimple(varname == "from", name, 1, varname)
+
+ deepcopyParams = \
+ [self.deepcopyPoolParam] + \
+ list(map(typeFromName, self.deepcopyVars))
+
+ deepcopyPrototype = \
+ VulkanAPI(self.deepcopyPrefix + name,
+ self.voidType,
+ deepcopyParams)
+
+ def structDeepcopyDef(cgen):
+ self.deepcopyCodegen.cgen = cgen
+ for member in structInfo.members:
+ iterateVulkanType(self.typeInfo, member,
+ self.deepcopyCodegen)
+
+ self.module.appendHeader(
+ self.codegen.makeFuncDecl(deepcopyPrototype))
+ self.module.appendImpl(
+ self.codegen.makeFuncImpl(deepcopyPrototype, structDeepcopyDef))
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/dispatch.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/dispatch.py
new file mode 100644
index 0000000000..2bbda4cac9
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/dispatch.py
@@ -0,0 +1,329 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from copy import deepcopy
+
+from .common.codegen import CodeGen
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+
+# No real good way to automatically infer the most important Vulkan API
+# functions as it relates to which getProcAddress function to use, plus
+# we might want to control which function to use depending on our
+# performance needs.
+
+# This is based on the minimum set of functions needed to be directly
+# queried with dlsym and not returning null.
+getProcAddrFuncs = [
+ "vkGetInstanceProcAddr",
+ "vkDestroyInstance",
+ "vkEnumeratePhysicalDevices",
+ "vkGetPhysicalDeviceFeatures",
+ "vkGetPhysicalDeviceFormatProperties",
+ "vkGetPhysicalDeviceImageFormatProperties",
+ "vkGetPhysicalDeviceProperties",
+ "vkGetPhysicalDeviceQueueFamilyProperties",
+ "vkGetPhysicalDeviceMemoryProperties",
+ "vkCreateDevice",
+ "vkDestroyDevice",
+ "vkEnumerateDeviceExtensionProperties",
+ "vkEnumerateDeviceLayerProperties",
+ "vkGetDeviceQueue",
+ "vkQueueSubmit",
+ "vkQueueWaitIdle",
+ "vkDeviceWaitIdle",
+]
+
+getInstanceProcAddrNoInstanceFuncs = [
+ "vkCreateInstance",
+ "vkEnumerateInstanceExtensionProperties",
+ "vkEnumerateInstanceLayerProperties",
+]
+
+getInstanceProcAddrFuncs = [
+ "vkGetDeviceProcAddr",
+ "vkCreateSwapchainKHR",
+ "vkDestroySwapchainKHR",
+ "vkGetSwapchainImagesKHR",
+ "vkAcquireNextImageKHR",
+ "vkQueuePresentKHR",
+ "vkCreateMacOSSurfaceMVK",
+ "vkCreateWin32SurfaceKHR",
+ "vkGetPhysicalDeviceWin32PresentationSupportKHR",
+ "vkCreateXlibSurfaceKHR",
+ "vkGetPhysicalDeviceXlibPresentationSupportKHR",
+ "vkCreateXcbSurfaceKHR",
+ "vkGetPhysicalDeviceXcbPresentationSupportKHR",
+]
+
+# Implicitly, everything else is going to be obtained
+# with vkGetDeviceProcAddr,
+# unless it has instance in the arg.
+
+def isGetProcAddressAPI(vulkanApi):
+ return vulkanApi.name in getProcAddrFuncs
+
+def isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
+ return vulkanApi.name in getInstanceProcAddrNoInstanceFuncs
+
+def isGetInstanceProcAddressAPI(vulkanApi):
+ if vulkanApi.name in getInstanceProcAddrFuncs:
+ return True
+
+ if vulkanApi.parameters[0].typeName == "VkInstance":
+ return True
+
+ return False
+
+def isGetDeviceProcAddressAPI(vulkanApi):
+ if isGetProcAddressAPI(vulkanApi):
+ return False
+
+ if isGetInstanceProcAddressAPI(vulkanApi):
+ return False
+
+ return True
+
+def inferProcAddressFuncType(vulkanApi):
+ if isGetProcAddressAPI(vulkanApi):
+ return "global"
+ if isGetInstanceProcAddressNoInstanceAPI(vulkanApi):
+ return "global-instance"
+ if isGetInstanceProcAddressAPI(vulkanApi):
+ return "instance"
+ return "device"
+
+# VulkanDispatch defines a struct, VulkanDispatch,
+# that is populated by function pointers from the Vulkan
+# loader. No attempt is made to do something different
+# for instance vs device functions.
+class VulkanDispatch(VulkanWrapperGenerator):
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ self.apisToGet = {}
+
+ self.cgenHeader = CodeGen()
+ self.cgenImpl = CodeGen()
+ self.typeInfo = typeInfo
+
+ self.currentFeature = ""
+ self.featureForCodegen = ""
+
+ def onBegin(self):
+ self.cgenHeader.line("""
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ VulkanDispatch* dispatch_out);
+""")
+ self.cgenHeader.line("struct VulkanDispatch {")
+ self.module.appendHeader(self.cgenHeader.swapCode())
+
+ def syncFeature(self, cgen, feature):
+ if self.featureForCodegen != feature:
+ if feature == "":
+ cgen.leftline("#endif")
+ self.featureForCodegen = feature
+ return
+
+ if self.featureForCodegen != "":
+ cgen.leftline("#endif")
+
+ cgen.leftline("#ifdef %s" % feature)
+ self.featureForCodegen = feature
+
+ def makeDlsymCall(self, cgen, apiname, typedecl):
+ cgen.stmt( \
+ "out->%s = (%s)dlSymFunc(lib, \"%s\")" % \
+ (apiname, typedecl, apiname))
+
+ def onEnd(self):
+ self.cgenHeader.line("};")
+ self.module.appendHeader(self.cgenHeader.swapCode())
+
+ self.cgenImpl.line("""
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ VulkanDispatch* out)""")
+
+ self.cgenImpl.beginBlock()
+
+ self.cgenImpl.stmt("memset(out, 0x0, sizeof(VulkanDispatch))")
+
+ self.cgenImpl.stmt("void* lib = dlOpenFunc()")
+ self.cgenImpl.stmt("if (!lib) return")
+
+ apis = \
+ self.apisToGet["global"] + \
+ self.apisToGet["global-instance"] + \
+ self.apisToGet["instance"] + \
+ self.apisToGet["device"] + \
+ self.apisToGet["global"] + \
+ self.apisToGet["global"]
+
+ for vulkanApi, typeDecl, feature in apis:
+ self.syncFeature(self.cgenImpl, feature)
+ self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
+
+ self.syncFeature(self.cgenImpl, "")
+ self.cgenImpl.endBlock()
+ self.module.appendImpl(self.cgenImpl.swapCode())
+
+ def onBeginFeature(self, featureName):
+ self.currentFeature = featureName
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
+
+ vulkanApi = self.typeInfo.apis[name]
+
+ typeDecl = "PFN_%s" % name
+
+ procAddressType = inferProcAddressFuncType(vulkanApi)
+
+ self.cgenHeader.stmt("%s %s" % (typeDecl, name));
+ self.module.appendHeader(self.cgenHeader.swapCode())
+
+ current = self.apisToGet.get(procAddressType, [])
+ if current == []:
+ self.apisToGet[procAddressType] = current
+ current.append((vulkanApi, typeDecl, self.currentFeature))
+
+# VulkanDispatchFast allows one to get the optimal function pointers
+# for a given Vulkan API call, in order to improve performance.
+#
+# We can optionally query VkDevices to get function pointers that are
+# closer to the ICD and have fewer levels of indirection from the loader
+# to get there.
+# See
+# https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md
+# for more info.
+#
+# This requires the calling C++ code to provide functions to
+# generate the desired instances and devices, otherwise we won't know
+# which instance or device to pass to vkGet(Instance|Device)ProcAddr,
+# so it does push more complexity to the user.
+class VulkanDispatchFast(VulkanDispatch):
+
+ def __init__(self, module, typeInfo):
+ VulkanDispatch.__init__(self, module, typeInfo)
+
+ def onBegin(self):
+ self.cgenHeader.line("""
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ InstanceGetter instanceGetter,
+ DeviceGetter deviceGetter,
+ VulkanDispatch* dispatch_out);
+""")
+
+ self.cgenHeader.line("struct VulkanDispatch {")
+ self.cgenHeader.line("VkInstance instance;")
+ self.cgenHeader.line("VkPhysicalDevice physicalDevice;")
+ self.cgenHeader.line("uint32_t physicalDeviceQueueFamilyInfoCount;")
+ self.cgenHeader.line("VkQueueFamilyProperties* physicalDeviceQueueFamilyInfos;")
+ self.cgenHeader.line("VkDevice device;")
+ self.cgenHeader.line("bool presentCapable;")
+ self.module.appendHeader(self.cgenHeader.swapCode())
+
+ def makeGetProcAddr(self, cgen, dispatchLevel, dispatch, apiname, typedecl):
+ if dispatchLevel == "instance":
+ funcname = "vkGetInstanceProcAddr"
+ elif dispatchLevel == "device":
+ funcname = "vkGetDeviceProcAddr"
+ else:
+ raise
+
+ cgen.stmt( \
+ "out->%s = (%s)out->%s(%s, \"%s\")" % \
+ (apiname, typedecl, funcname, dispatch, apiname))
+
+ def onEnd(self):
+ self.cgenHeader.line("};")
+ self.module.appendHeader(self.cgenHeader.swapCode())
+
+ self.cgenImpl.line("""
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ InstanceGetter instanceGetter,
+ DeviceGetter deviceGetter,
+ VulkanDispatch* out)""")
+
+ self.cgenImpl.beginBlock()
+
+ self.cgenImpl.stmt("out->instance = nullptr")
+ self.cgenImpl.stmt("out->physicalDevice = nullptr")
+ self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfoCount = 0")
+ self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = nullptr")
+ self.cgenImpl.stmt("out->device = nullptr")
+ self.cgenImpl.stmt("out->presentCapable = false")
+
+ self.cgenImpl.stmt("void* lib = dlOpenFunc()")
+ self.cgenImpl.stmt("if (!lib) return")
+
+ for vulkanApi, typeDecl, feature in self.apisToGet["global"]:
+ self.syncFeature(self.cgenImpl, feature)
+ self.makeDlsymCall(self.cgenImpl, vulkanApi.name, typeDecl)
+
+ self.syncFeature(self.cgenImpl, "")
+ self.cgenImpl.stmt("if (!out->vkGetInstanceProcAddr) return")
+
+ for vulkanApi, typeDecl, feature in self.apisToGet["global-instance"]:
+ self.syncFeature(self.cgenImpl, feature)
+ self.makeGetProcAddr( \
+ self.cgenImpl, "instance", "nullptr", vulkanApi.name, typeDecl);
+
+ self.syncFeature(self.cgenImpl, "")
+ self.cgenImpl.stmt("if (!instanceGetter(out, &out->instance)) return")
+
+ for vulkanApi, typeDecl, feature in self.apisToGet["instance"]:
+ self.syncFeature(self.cgenImpl, feature)
+ self.makeGetProcAddr( \
+ self.cgenImpl, "instance", "out->instance", vulkanApi.name, typeDecl);
+
+ self.syncFeature(self.cgenImpl, "")
+
+ self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, nullptr, &out->device, &out->presentCapable)) return")
+ self.cgenImpl.stmt("out->physicalDeviceQueueFamilyInfos = (VkQueueFamilyProperties*)malloc(out->physicalDeviceQueueFamilyInfoCount * sizeof(VkQueueFamilyProperties))");
+ self.cgenImpl.stmt("if (!deviceGetter(out, out->instance, &out->physicalDevice, &out->physicalDeviceQueueFamilyInfoCount, out->physicalDeviceQueueFamilyInfos, &out->device, &out->presentCapable)) return")
+
+ for vulkanApi, typeDecl, feature in self.apisToGet["device"]:
+ self.syncFeature(self.cgenImpl, feature)
+ self.makeGetProcAddr( \
+ self.cgenImpl, "device", "out->device", vulkanApi.name, typeDecl);
+
+ self.syncFeature(self.cgenImpl, "")
+
+ self.cgenImpl.endBlock()
+
+ self.module.appendImpl(self.cgenImpl.swapCode())
+
+ def onBeginFeature(self, featureName):
+ VulkanDispatch.onBeginFeature(self, featureName);
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanDispatch.onGenType(self, typeXml, name, alias);
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanDispatch.onGenCmd(self, cmdinfo, name, alias);
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/frontend.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/frontend.py
new file mode 100644
index 0000000000..b182c0e785
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/frontend.py
@@ -0,0 +1,102 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from .common.codegen import CodeGen, VulkanAPIWrapper
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+
+from .wrapperdefs import API_PREFIX_VALIDATE
+from .wrapperdefs import PARAMETERS_VALIDATE
+from .wrapperdefs import VOID_TYPE
+from .wrapperdefs import VALIDATE_RESULT_TYPE
+from .wrapperdefs import VALIDATE_VAR_NAME
+from .wrapperdefs import VALIDATE_GOOD_RESULT
+
+from .wrapperdefs import VULKAN_STREAM_TYPE
+from .wrapperdefs import VULKAN_STREAM_VAR_NAME
+
+from .wrapperdefs import API_PREFIX_MARSHAL
+from .wrapperdefs import API_PREFIX_FRONTEND
+
+# Frontend
+class VulkanFrontend(VulkanWrapperGenerator):
+
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ def validateDefFunc(_codegen, _api):
+ # TODO
+ pass
+
+ self.validateWrapper = \
+ VulkanAPIWrapper(
+ API_PREFIX_VALIDATE,
+ PARAMETERS_VALIDATE,
+ VOID_TYPE,
+ validateDefFunc)
+
+ def frontendDefFunc(codegen, api):
+ retTypeName = api.retType.typeName
+
+ codegen.stmt(
+ "%s %s = %s" % (VALIDATE_RESULT_TYPE, VALIDATE_VAR_NAME,
+ VALIDATE_GOOD_RESULT))
+ codegen.funcCall(None, API_PREFIX_VALIDATE + api.origName,
+ ["&%s" % VALIDATE_VAR_NAME] + list(
+ map(lambda p: p.paramName, api.parameters)))
+
+ codegen.beginIf(
+ "%s != %s" % (VALIDATE_VAR_NAME, VALIDATE_GOOD_RESULT))
+ if retTypeName == VALIDATE_RESULT_TYPE:
+ codegen.stmt("return %s" % VALIDATE_VAR_NAME)
+ elif retTypeName != "void":
+ codegen.stmt("return (%s)0" % retTypeName)
+ else:
+ codegen.stmt("return")
+ codegen.endIf()
+
+ codegen.stmt("// VULKAN_STREAM_GET()")
+ codegen.stmt("%s* %s = nullptr" % (VULKAN_STREAM_TYPE,
+ VULKAN_STREAM_VAR_NAME))
+
+ retLhs = None
+ if retTypeName != "void":
+ retLhs = retTypeName + " res"
+
+ codegen.funcCall(retLhs, API_PREFIX_MARSHAL + api.origName,
+ [VULKAN_STREAM_VAR_NAME] + list(
+ map(lambda p: p.paramName, api.parameters)))
+
+ if retTypeName != "void":
+ codegen.stmt("return res")
+
+ self.frontendWrapper = \
+ VulkanAPIWrapper(
+ API_PREFIX_FRONTEND,
+ [],
+ None,
+ frontendDefFunc)
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
+ self.module.appendHeader(
+ self.frontendWrapper.makeDecl(self.typeInfo, name))
+ self.module.appendImpl(
+ self.validateWrapper.makeDefinition(
+ self.typeInfo, name, isStatic=True))
+ self.module.appendImpl(
+ self.frontendWrapper.makeDefinition(self.typeInfo, name))
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/handlemap.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/handlemap.py
new file mode 100644
index 0000000000..76c69d3ece
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/handlemap.py
@@ -0,0 +1,214 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from copy import deepcopy
+
+from .common.codegen import CodeGen
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+
+class HandleMapCodegen(object):
+ def __init__(self, cgen, inputVar, handlemapVarName, prefix, isHandleFunc):
+ self.cgen = cgen
+ self.inputVar = inputVar
+ self.prefix = prefix
+ self.handlemapVarName = handlemapVarName
+
+ def makeAccess(varName, asPtr = True):
+ return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
+
+ def makeLengthAccess(varName):
+ return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
+
+ self.exprAccessor = makeAccess(self.inputVar)
+ self.exprAccessorValue = makeAccess(self.inputVar, asPtr = False)
+ self.lenAccessor = makeLengthAccess(self.inputVar)
+
+ self.checked = False
+ self.isHandleFunc = isHandleFunc
+
+ def needSkip(self, vulkanType):
+ if vulkanType.isNextPointer():
+ return True
+ return False
+
+ def makeCastExpr(self, vulkanType):
+ return "(%s)" % (
+ self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
+
+ def asNonConstCast(self, access, vulkanType):
+ if vulkanType.staticArrExpr:
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
+ elif vulkanType.accessibleAsPointer():
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForNonConstAccess()), access)
+ else:
+ casted = "%s(%s)" % (self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()), access)
+ return casted
+
+ def onCheck(self, vulkanType):
+ pass
+
+ def endCheck(self, vulkanType):
+ pass
+
+ def onCompoundType(self, vulkanType):
+
+ if self.needSkip(vulkanType):
+ self.cgen.line("// TODO: Unsupported : %s" %
+ self.cgen.makeCTypeDecl(vulkanType))
+ return
+
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ isPtr = vulkanType.pointerIndirectionLevels > 0
+
+ if isPtr:
+ self.cgen.beginIf(access)
+
+ if lenAccess is not None:
+
+ loopVar = "i"
+ access = "%s + %s" % (access, loopVar)
+ forInit = "uint32_t %s = 0" % loopVar
+ forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
+ forIncr = "++%s" % loopVar
+
+ self.cgen.beginFor(forInit, forCond, forIncr)
+
+ accessCasted = self.asNonConstCast(access, vulkanType)
+ self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
+ [self.handlemapVarName, accessCasted])
+
+ if lenAccess is not None:
+ self.cgen.endFor()
+
+ if isPtr:
+ self.cgen.endIf()
+
+ def onString(self, vulkanType):
+ pass
+
+ def onStringArray(self, vulkanType):
+ pass
+
+ def onStaticArr(self, vulkanType):
+ if not self.isHandleFunc(vulkanType):
+ return
+
+ accessLhs = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ self.cgen.stmt("%s->mapHandles_%s(%s%s, %s)" % \
+ (self.handlemapVarName, vulkanType.typeName,
+ self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
+ accessLhs, lenAccess))
+
+ def onPointer(self, vulkanType):
+ if not self.isHandleFunc(vulkanType):
+ return
+
+ if self.needSkip(vulkanType):
+ return
+
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ self.cgen.beginIf(access)
+
+ self.cgen.stmt( \
+ "%s->mapHandles_%s(%s%s, %s)" % \
+ (self.handlemapVarName,
+ vulkanType.typeName,
+ self.makeCastExpr(vulkanType.getForNonConstAccess()),
+ access,
+ lenAccess))
+
+ self.cgen.endIf()
+
+ def onValue(self, vulkanType):
+ if not self.isHandleFunc(vulkanType):
+ return
+ access = self.exprAccessor(vulkanType)
+ self.cgen.stmt(
+ "%s->mapHandles_%s(%s%s)" % \
+ (self.handlemapVarName, vulkanType.typeName,
+ self.makeCastExpr(vulkanType.getForAddressAccess().getForNonConstAccess()),
+ access))
+
+class VulkanHandleMap(VulkanWrapperGenerator):
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ self.codegen = CodeGen()
+
+ self.handlemapPrefix = "handlemap_"
+ self.toMapVar = "toMap"
+ self.handlemapVarName = "handlemap"
+ self.handlemapParam = \
+ makeVulkanTypeSimple(False, "VulkanHandleMapping", 1,
+ self.handlemapVarName)
+ self.voidType = makeVulkanTypeSimple(False, "void", 0)
+
+ self.handlemapCodegen = \
+ HandleMapCodegen(
+ None,
+ self.toMapVar,
+ self.handlemapVarName,
+ self.handlemapPrefix,
+ lambda vtype : typeInfo.isHandleType(vtype))
+
+ self.knownDefs = {}
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
+
+ if name in self.knownDefs:
+ return
+
+ category = self.typeInfo.categoryOf(name)
+
+ if category in ["struct", "union"] and not alias:
+
+ structInfo = self.typeInfo.structs[name]
+
+ typeFromName = \
+ lambda varname: \
+ makeVulkanTypeSimple(varname == "from", name, 1, varname)
+
+ handlemapParams = \
+ [self.handlemapParam] + \
+ list(map(typeFromName, [self.toMapVar]))
+
+ handlemapPrototype = \
+ VulkanAPI(self.handlemapPrefix + name,
+ self.voidType,
+ handlemapParams)
+
+ def funcDefGenerator(cgen):
+ self.handlemapCodegen.cgen = cgen
+ for member in structInfo.members:
+ iterateVulkanType(self.typeInfo, member,
+ self.handlemapCodegen)
+
+ self.module.appendHeader(
+ self.codegen.makeFuncDecl(handlemapPrototype))
+ self.module.appendImpl(
+ self.codegen.makeFuncImpl(handlemapPrototype, funcDefGenerator))
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/marshaling.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/marshaling.py
new file mode 100644
index 0000000000..cdbe061460
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/marshaling.py
@@ -0,0 +1,383 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from copy import deepcopy
+
+from .common.codegen import CodeGen, VulkanAPIWrapper
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+from .wrapperdefs import VULKAN_STREAM_VAR_NAME
+from .wrapperdefs import STREAM_RET_TYPE
+from .wrapperdefs import MARSHAL_INPUT_VAR_NAME
+from .wrapperdefs import UNMARSHAL_INPUT_VAR_NAME
+from .wrapperdefs import PARAMETERS_MARSHALING
+from .wrapperdefs import API_PREFIX_MARSHAL
+from .wrapperdefs import API_PREFIX_UNMARSHAL
+
+class VulkanMarshalingCodegen(object):
+
+ def __init__(self,
+ cgen,
+ streamVarName,
+ inputVarName,
+ marshalPrefix,
+ direction = "write",
+ forApiOutput = False,
+ dynAlloc = False):
+ self.cgen = cgen
+ self.direction = direction
+ self.processSimple = "write" if self.direction == "write" else "read"
+ self.forApiOutput = forApiOutput
+
+ self.checked = False
+
+ self.streamVarName = streamVarName
+ self.inputVarName = inputVarName
+ self.marshalPrefix = marshalPrefix
+
+ self.exprAccessor = lambda t: self.cgen.generalAccess(t, parentVarName = self.inputVarName, asPtr = True)
+ self.lenAccessor = lambda t: self.cgen.generalLengthAccess(t, parentVarName = self.inputVarName)
+
+ self.dynAlloc = dynAlloc
+
+ def needSkip(self, vulkanType):
+ if vulkanType.isNextPointer():
+ return True
+ return False
+
+ def getTypeForStreaming(self, vulkanType):
+ res = deepcopy(vulkanType)
+
+ if not vulkanType.accessibleAsPointer():
+ res = res.getForAddressAccess()
+
+ if vulkanType.staticArrExpr:
+ res = res.getForAddressAccess()
+
+ if self.direction == "write":
+ return res
+ else:
+ return res.getForNonConstAccess()
+
+ def makeCastExpr(self, vulkanType):
+ return "(%s)" % (
+ self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
+
+ def genStreamCall(self, vulkanType, toStreamExpr, sizeExpr):
+ varname = self.streamVarName
+ func = self.processSimple
+ cast = self.makeCastExpr(self.getTypeForStreaming(vulkanType))
+
+ self.cgen.stmt(
+ "%s->%s(%s%s, %s)" % (varname, func, cast, toStreamExpr, sizeExpr))
+
+ def doAllocSpace(self, vulkanType):
+ if self.dynAlloc and self.direction == "read":
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+ sizeof = self.cgen.sizeofExpr( \
+ vulkanType.getForValueAccess())
+ if lenAccess:
+ bytesExpr = "%s * %s" % (lenAccess, sizeof)
+ else:
+ bytesExpr = sizeof
+
+ self.cgen.stmt( \
+ "%s->alloc((void**)&%s, %s)" %
+ (self.streamVarName,
+ access, bytesExpr))
+
+ def onCheck(self, vulkanType):
+
+ if self.forApiOutput:
+ return
+
+ self.checked = True
+
+ access = self.exprAccessor(vulkanType)
+ addrExpr = "&" + access
+ sizeExpr = self.cgen.sizeofExpr(vulkanType)
+ self.genStreamCall(vulkanType.getForAddressAccess(), addrExpr, sizeExpr)
+
+ if self.needSkip(vulkanType):
+ return
+
+ self.cgen.beginIf(access)
+
+ def endCheck(self, vulkanType):
+
+ if self.needSkip(vulkanType):
+ return
+
+ if self.checked:
+ self.cgen.endIf()
+ self.checked = False
+
+ def onCompoundType(self, vulkanType):
+
+ if self.needSkip(vulkanType):
+ self.cgen.line("// TODO: Unsupported : %s" %
+ self.cgen.makeCTypeDecl(vulkanType))
+ return
+
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ if vulkanType.pointerIndirectionLevels > 0:
+ self.doAllocSpace(vulkanType)
+
+ if lenAccess is not None:
+ loopVar = "i"
+ access = "%s + %s" % (access, loopVar)
+ forInit = "uint32_t %s = 0" % loopVar
+ forCond = "%s < (uint32_t)%s" % (loopVar, lenAccess)
+ forIncr = "++%s" % loopVar
+ self.cgen.beginFor(forInit, forCond, forIncr)
+
+ accessWithCast = "%s(%s)" % (self.makeCastExpr(
+ self.getTypeForStreaming(vulkanType)), access)
+
+ self.cgen.funcCall(None, self.marshalPrefix + vulkanType.typeName,
+ [self.streamVarName, accessWithCast])
+
+ if lenAccess is not None:
+ self.cgen.endFor()
+
+ def onString(self, vulkanType):
+
+ access = self.exprAccessor(vulkanType)
+
+ if self.direction == "write":
+ self.cgen.stmt("%s->putString(%s)" % (self.streamVarName, access))
+ else:
+ castExpr = \
+ self.makeCastExpr( \
+ self.getTypeForStreaming( \
+ vulkanType.getForAddressAccess()))
+
+ self.cgen.stmt( \
+ "%s->loadStringInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
+
+ def onStringArray(self, vulkanType):
+
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ if self.direction == "write":
+ self.cgen.stmt("saveStringArray(%s, %s, %s)" % (self.streamVarName,
+ access, lenAccess))
+ else:
+ castExpr = \
+ self.makeCastExpr( \
+ self.getTypeForStreaming( \
+ vulkanType.getForAddressAccess()))
+
+ self.cgen.stmt("%s->loadStringArrayInPlace(%s&%s)" % (self.streamVarName, castExpr, access))
+
+ def onStaticArr(self, vulkanType):
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+ finalLenExpr = "%s * %s" % (lenAccess, self.cgen.sizeofExpr(vulkanType))
+ self.genStreamCall(vulkanType, access, finalLenExpr)
+
+ def onPointer(self, vulkanType):
+ if self.needSkip(vulkanType):
+ self.cgen.line("// TODO: Unsupported : %s" %
+ self.cgen.makeCTypeDecl(vulkanType))
+ return
+
+ access = self.exprAccessor(vulkanType)
+ lenAccess = self.lenAccessor(vulkanType)
+
+ self.doAllocSpace(vulkanType)
+
+ if lenAccess is not None:
+ finalLenExpr = "%s * %s" % (
+ lenAccess, self.cgen.sizeofExpr(vulkanType.getForValueAccess()))
+ else:
+ finalLenExpr = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
+
+ self.genStreamCall(vulkanType, access, finalLenExpr)
+
+ def onValue(self, vulkanType):
+ access = self.exprAccessor(vulkanType)
+ self.genStreamCall(vulkanType, access, self.cgen.sizeofExpr(vulkanType))
+
+
+class VulkanMarshaling(VulkanWrapperGenerator):
+
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ self.writeCodegen = \
+ VulkanMarshalingCodegen(
+ None,
+ VULKAN_STREAM_VAR_NAME,
+ MARSHAL_INPUT_VAR_NAME,
+ API_PREFIX_MARSHAL,
+ direction = "write")
+
+ self.apiOutputCodegenForRead = \
+ VulkanMarshalingCodegen(
+ None,
+ VULKAN_STREAM_VAR_NAME,
+ MARSHAL_INPUT_VAR_NAME,
+ API_PREFIX_MARSHAL,
+ direction = "read",
+ forApiOutput = True)
+
+ self.readCodegen = \
+ VulkanMarshalingCodegen(
+ None,
+ VULKAN_STREAM_VAR_NAME,
+ UNMARSHAL_INPUT_VAR_NAME,
+ API_PREFIX_UNMARSHAL,
+ direction = "read",
+ dynAlloc = True)
+
+ self.apiOutputCodegenForWrite = \
+ VulkanMarshalingCodegen(
+ None,
+ VULKAN_STREAM_VAR_NAME,
+ UNMARSHAL_INPUT_VAR_NAME,
+ API_PREFIX_UNMARSHAL,
+ direction = "write",
+ forApiOutput = True,
+ dynAlloc = True)
+
+ def apiMarshalingDef(cgen, api):
+ self.apiOutputCodegenForRead.cgen = cgen
+ self.writeCodegen.cgen = cgen
+
+ for param in api.parameters:
+ if param.paramName == VULKAN_STREAM_VAR_NAME:
+ continue
+ if param.possiblyOutput():
+ iterateVulkanType(typeInfo, param,
+ self.apiOutputCodegenForRead)
+ else:
+ iterateVulkanType(typeInfo, param, self.writeCodegen)
+
+ if api.retType.isVoidWithNoSize():
+ pass
+ else:
+ result_var_name = "%s_%s_return" % (api.name,
+ api.retType.typeName)
+ cgen.stmt("%s %s" % (cgen.makeCTypeDecl(
+ api.retType, useParamName=False), result_var_name))
+ cgen.stmt("%s->read(&%s, %s)" % (VULKAN_STREAM_VAR_NAME,
+ result_var_name,
+ cgen.sizeofExpr(api.retType)))
+ cgen.stmt("return %s" % result_var_name)
+
+ self.marshalWrapper = \
+ VulkanAPIWrapper(
+ API_PREFIX_MARSHAL,
+ PARAMETERS_MARSHALING,
+ None,
+ apiMarshalingDef)
+
+ def apiUnmarshalingDef(cgen, api):
+ self.apiOutputCodegenForWrite.cgen = cgen
+ self.readCodegen.cgen = cgen
+
+ for param in api.parameters:
+ if param.paramName == VULKAN_STREAM_VAR_NAME:
+ continue
+ if param.possiblyOutput():
+ iterateVulkanType(typeInfo, param,
+ self.apiOutputCodegenForWrite)
+ else:
+ iterateVulkanType(typeInfo, param, self.readCodegen)
+
+ if api.retType.isVoidWithNoSize():
+ pass
+ else:
+ result_var_name = "%s_%s_return" % (api.name,
+ api.retType.typeName)
+ cgen.stmt("%s %s" % (cgen.makeCTypeDecl(
+ api.retType, useParamName=False), result_var_name))
+ cgen.stmt("%s->write(&%s, %s)" % (VULKAN_STREAM_VAR_NAME,
+ result_var_name,
+ cgen.sizeofExpr(api.retType)))
+ cgen.stmt("return %s" % result_var_name)
+
+ self.unmarshalWrapper = \
+ VulkanAPIWrapper(
+ API_PREFIX_UNMARSHAL,
+ PARAMETERS_MARSHALING,
+ None,
+ apiUnmarshalingDef)
+
+ self.knownDefs = {}
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
+
+ if name in self.knownDefs:
+ return
+
+ category = self.typeInfo.categoryOf(name)
+
+ if category in ["struct", "union"] and not alias:
+
+ structInfo = self.typeInfo.structs[name]
+
+ marshalParams = PARAMETERS_MARSHALING + \
+ [makeVulkanTypeSimple(True, name, 1, MARSHAL_INPUT_VAR_NAME)]
+ marshalPrototype = \
+ VulkanAPI(API_PREFIX_MARSHAL + name,
+ STREAM_RET_TYPE,
+ marshalParams)
+
+ def structMarshalingDef(cgen):
+ self.writeCodegen.cgen = cgen
+ for member in structInfo.members:
+ iterateVulkanType(self.typeInfo, member, self.writeCodegen)
+
+ self.module.appendHeader(
+ self.marshalWrapper.codegen.makeFuncDecl(marshalPrototype))
+ self.module.appendImpl(
+ self.marshalWrapper.codegen.makeFuncImpl(
+ marshalPrototype, structMarshalingDef))
+
+ unmarshalPrototype = \
+ VulkanAPI(API_PREFIX_UNMARSHAL + name,
+ STREAM_RET_TYPE,
+ PARAMETERS_MARSHALING + [makeVulkanTypeSimple(False, name, 1, UNMARSHAL_INPUT_VAR_NAME)])
+
+ def structUnmarshalingDef(cgen):
+ self.readCodegen.cgen = cgen
+ for member in structInfo.members:
+ iterateVulkanType(self.typeInfo, member, self.readCodegen)
+
+ self.module.appendHeader(
+ self.unmarshalWrapper.codegen.makeFuncDecl(unmarshalPrototype))
+ self.module.appendImpl(
+ self.unmarshalWrapper.codegen.makeFuncImpl(
+ unmarshalPrototype, structUnmarshalingDef))
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
+ self.module.appendHeader(
+ self.marshalWrapper.makeDecl(self.typeInfo, name))
+ self.module.appendImpl(
+ self.marshalWrapper.makeDefinition(self.typeInfo, name))
+ self.module.appendHeader(
+ self.unmarshalWrapper.makeDecl(self.typeInfo, name))
+ self.module.appendImpl(
+ self.unmarshalWrapper.makeDefinition(self.typeInfo, name))
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/testing.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/testing.py
new file mode 100644
index 0000000000..e8ee73c64b
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/testing.py
@@ -0,0 +1,332 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from copy import deepcopy
+
+from .common.codegen import CodeGen
+from .common.vulkantypes import \
+ VulkanAPI, makeVulkanTypeSimple, iterateVulkanType
+
+from .wrapperdefs import VulkanWrapperGenerator
+from .wrapperdefs import EQUALITY_VAR_NAMES
+from .wrapperdefs import EQUALITY_ON_FAIL_VAR
+from .wrapperdefs import EQUALITY_ON_FAIL_VAR_TYPE
+from .wrapperdefs import EQUALITY_RET_TYPE
+from .wrapperdefs import API_PREFIX_EQUALITY
+
+class VulkanEqualityCodegen(object):
+
+ def __init__(self, cgen, inputVars, onFailCompareVar, prefix):
+ self.cgen = cgen
+ self.inputVars = inputVars
+ self.onFailCompareVar = onFailCompareVar
+ self.prefix = prefix
+
+ def makeAccess(varName, asPtr = True):
+ return lambda t: self.cgen.generalAccess(t, parentVarName = varName, asPtr = asPtr)
+
+ def makeLengthAccess(varName):
+ return lambda t: self.cgen.generalLengthAccess(t, parentVarName = varName)
+
+ self.exprAccessorLhs = makeAccess(self.inputVars[0])
+ self.exprAccessorRhs = makeAccess(self.inputVars[1])
+
+ self.exprAccessorValueLhs = makeAccess(self.inputVars[0], asPtr = False)
+ self.exprAccessorValueRhs = makeAccess(self.inputVars[1], asPtr = False)
+
+ self.lenAccessorLhs = makeLengthAccess(self.inputVars[0])
+ self.lenAccessorRhs = makeLengthAccess(self.inputVars[1])
+
+ self.checked = False
+
+ def getTypeForCompare(self, vulkanType):
+ res = deepcopy(vulkanType)
+
+ if not vulkanType.accessibleAsPointer():
+ res = res.getForAddressAccess()
+
+ if vulkanType.staticArrExpr:
+ res = res.getForAddressAccess()
+
+ return res
+
+ def makeCastExpr(self, vulkanType):
+ return "(%s)" % (
+ self.cgen.makeCTypeDecl(vulkanType, useParamName=False))
+
+ def makeEqualExpr(self, lhs, rhs):
+ return "(%s) == (%s)" % (lhs, rhs)
+
+ def makeEqualBufExpr(self, lhs, rhs, size):
+ return "(memcmp(%s, %s, %s) == 0)" % (lhs, rhs, size)
+
+ def makeEqualStringExpr(self, lhs, rhs):
+ return "(strcmp(%s, %s) == 0)" % (lhs, rhs)
+
+ def makeBothNotNullExpr(self, lhs, rhs):
+ return "(%s) && (%s)" % (lhs, rhs)
+
+ def makeBothNullExpr(self, lhs, rhs):
+ return "!(%s) && !(%s)" % (lhs, rhs)
+
+ def compareWithConsequence(self, compareExpr, vulkanType, errMsg=""):
+ self.cgen.stmt("if (!(%s)) { %s(\"%s (Error: %s)\"); }" %
+ (compareExpr, self.onFailCompareVar,
+ self.exprAccessorValueLhs(vulkanType), errMsg))
+
+ def onCheck(self, vulkanType):
+
+ self.checked = True
+
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ bothNull = self.makeBothNullExpr(accessLhs, accessRhs)
+ bothNotNull = self.makeBothNotNullExpr(accessLhs, accessRhs)
+ nullMatchExpr = "(%s) || (%s)" % (bothNull, bothNotNull)
+
+ self.compareWithConsequence( \
+ nullMatchExpr,
+ vulkanType,
+ "Mismatch in optional field")
+
+ skipStreamInternal = vulkanType.typeName == "void"
+
+ if skipStreamInternal:
+ return
+
+ self.cgen.beginIf("%s && %s" % (accessLhs, accessRhs))
+
+ def endCheck(self, vulkanType):
+
+ skipStreamInternal = vulkanType.typeName == "void"
+ if skipStreamInternal:
+ return
+
+ if self.checked:
+ self.cgen.endIf()
+ self.checked = False
+
+ def onCompoundType(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+ lenAccessRhs = self.lenAccessorRhs(vulkanType)
+
+ needNullCheck = vulkanType.pointerIndirectionLevels > 0
+
+ if needNullCheck:
+ bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
+ self.cgen.beginIf(bothNotNullExpr)
+
+ if lenAccessLhs is not None:
+ equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
+
+ self.compareWithConsequence( \
+ equalLenExpr,
+ vulkanType, "Lengths not equal")
+
+ loopVar = "i"
+ accessLhs = "%s + %s" % (accessLhs, loopVar)
+ accessRhs = "%s + %s" % (accessRhs, loopVar)
+ forInit = "uint32_t %s = 0" % loopVar
+ forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
+ forIncr = "++%s" % loopVar
+
+ if needNullCheck:
+ self.cgen.beginIf(equalLenExpr)
+
+ self.cgen.beginFor(forInit, forCond, forIncr)
+
+ self.cgen.funcCall(None, self.prefix + vulkanType.typeName,
+ [accessLhs, accessRhs, self.onFailCompareVar])
+
+ if lenAccessLhs is not None:
+ self.cgen.endFor()
+ if needNullCheck:
+ self.cgen.endIf()
+
+ if needNullCheck:
+ self.cgen.endIf()
+
+ def onString(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
+ bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
+ nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
+
+ self.compareWithConsequence( \
+ nullMatchExpr,
+ vulkanType,
+ "Mismatch in string pointer nullness")
+
+ self.cgen.beginIf(bothNotNullExpr)
+
+ self.compareWithConsequence(
+ self.makeEqualStringExpr(accessLhs, accessRhs),
+ vulkanType, "Unequal strings")
+
+ self.cgen.endIf()
+
+ def onStringArray(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+ lenAccessRhs = self.lenAccessorRhs(vulkanType)
+
+ bothNullExpr = self.makeBothNullExpr(accessLhs, accessRhs)
+ bothNotNullExpr = self.makeBothNotNullExpr(accessLhs, accessRhs)
+ nullMatchExpr = "(%s) || (%s)" % (bothNullExpr, bothNotNullExpr)
+
+ self.compareWithConsequence( \
+ nullMatchExpr,
+ vulkanType,
+ "Mismatch in string array pointer nullness")
+
+ equalLenExpr = self.makeEqualExpr(lenAccessLhs, lenAccessRhs)
+
+ self.compareWithConsequence( \
+ equalLenExpr,
+ vulkanType, "Lengths not equal in string array")
+
+ self.compareWithConsequence( \
+ equalLenExpr,
+ vulkanType, "Lengths not equal in string array")
+
+ self.cgen.beginIf("%s && %s" % (equalLenExpr, bothNotNullExpr))
+
+ loopVar = "i"
+ accessLhs = "*(%s + %s)" % (accessLhs, loopVar)
+ accessRhs = "*(%s + %s)" % (accessRhs, loopVar)
+ forInit = "uint32_t %s = 0" % loopVar
+ forCond = "%s < (uint32_t)%s" % (loopVar, lenAccessLhs)
+ forIncr = "++%s" % loopVar
+
+ self.cgen.beginFor(forInit, forCond, forIncr)
+
+ self.compareWithConsequence(
+ self.makeEqualStringExpr(accessLhs, accessRhs),
+ vulkanType, "Unequal string in string array")
+
+ self.cgen.endFor()
+
+ self.cgen.endIf()
+
+ def onStaticArr(self, vulkanType):
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+
+ finalLenExpr = "%s * %s" % (lenAccessLhs,
+ self.cgen.sizeofExpr(vulkanType))
+
+ self.compareWithConsequence(
+ self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
+ vulkanType, "Unequal static array")
+
+ def onPointer(self, vulkanType):
+ skipStreamInternal = vulkanType.typeName == "void"
+ if skipStreamInternal:
+ return
+
+ accessLhs = self.exprAccessorLhs(vulkanType)
+ accessRhs = self.exprAccessorRhs(vulkanType)
+
+ lenAccessLhs = self.lenAccessorLhs(vulkanType)
+ lenAccessRhs = self.lenAccessorRhs(vulkanType)
+
+ if lenAccessLhs is not None:
+ self.compareWithConsequence( \
+ self.makeEqualExpr(lenAccessLhs, lenAccessRhs),
+ vulkanType, "Lengths not equal")
+
+ finalLenExpr = "%s * %s" % (lenAccessLhs,
+ self.cgen.sizeofExpr(
+ vulkanType.getForValueAccess()))
+ else:
+ finalLenExpr = self.cgen.sizeofExpr(vulkanType.getForValueAccess())
+
+ self.compareWithConsequence(
+ self.makeEqualBufExpr(accessLhs, accessRhs, finalLenExpr),
+ vulkanType, "Unequal dyn array")
+
+ def onValue(self, vulkanType):
+ accessLhs = self.exprAccessorValueLhs(vulkanType)
+ accessRhs = self.exprAccessorValueRhs(vulkanType)
+ self.compareWithConsequence(
+ self.makeEqualExpr(accessLhs, accessRhs), vulkanType,
+ "Value not equal")
+
+
+class VulkanTesting(VulkanWrapperGenerator):
+
+ def __init__(self, module, typeInfo):
+ VulkanWrapperGenerator.__init__(self, module, typeInfo)
+
+ self.codegen = CodeGen()
+
+ self.equalityCodegen = \
+ VulkanEqualityCodegen(
+ None,
+ EQUALITY_VAR_NAMES,
+ EQUALITY_ON_FAIL_VAR,
+ API_PREFIX_EQUALITY)
+
+ self.knownDefs = {}
+
+ def onGenType(self, typeXml, name, alias):
+ VulkanWrapperGenerator.onGenType(self, typeXml, name, alias)
+
+ if name in self.knownDefs:
+ return
+
+ category = self.typeInfo.categoryOf(name)
+
+ if category in ["struct", "union"] and not alias:
+
+ structInfo = self.typeInfo.structs[name]
+
+ typeFromName = \
+ lambda varname: makeVulkanTypeSimple(True, name, 1, varname)
+
+ compareParams = \
+ list(map(typeFromName, EQUALITY_VAR_NAMES)) + \
+ [EQUALITY_ON_FAIL_VAR_TYPE]
+
+ comparePrototype = \
+ VulkanAPI(API_PREFIX_EQUALITY + name,
+ EQUALITY_RET_TYPE,
+ compareParams)
+
+ def structCompareDef(cgen):
+ self.equalityCodegen.cgen = cgen
+ for member in structInfo.members:
+ iterateVulkanType(self.typeInfo, member,
+ self.equalityCodegen)
+
+ self.module.appendHeader(
+ self.codegen.makeFuncDecl(comparePrototype))
+ self.module.appendImpl(
+ self.codegen.makeFuncImpl(comparePrototype, structCompareDef))
+
+ def onGenCmd(self, cmdinfo, name, alias):
+ VulkanWrapperGenerator.onGenCmd(self, cmdinfo, name, alias)
+
+ # TODO: Figure something out for API testing
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/wrapperdefs.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/wrapperdefs.py
new file mode 100644
index 0000000000..9ef45aff54
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal/wrapperdefs.py
@@ -0,0 +1,54 @@
+# Copyright (c) 2018 The Android Open Source Project
+# Copyright (c) 2018 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from .common.codegen import VulkanWrapperGenerator
+from .common.vulkantypes import makeVulkanTypeSimple
+
+# Contains definitions for various Vulkan API wrappers. This information is
+# shared to make it easier for one kind of wrapper to know how to call
+# another one.
+
+API_PREFIX_MARSHAL = "marshal_"
+API_PREFIX_UNMARSHAL = "unmarshal_"
+
+MARSHAL_INPUT_VAR_NAME = "forMarshaling"
+UNMARSHAL_INPUT_VAR_NAME = "forUnmarshaling"
+
+API_PREFIX_VALIDATE = "validate_"
+API_PREFIX_FRONTEND = "goldfish_frontend_"
+
+VULKAN_STREAM_TYPE = "VulkanStream"
+VULKAN_STREAM_VAR_NAME = "vkStream"
+
+VALIDATE_RESULT_TYPE = "VkResult"
+VALIDATE_VAR_NAME = "validateResult"
+VALIDATE_GOOD_RESULT = "VK_SUCCESS"
+
+PARAMETERS_MARSHALING = [
+ makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE, 1, VULKAN_STREAM_VAR_NAME)
+]
+PARAMETERS_VALIDATE = [
+ makeVulkanTypeSimple(False, VALIDATE_RESULT_TYPE, 1, VALIDATE_VAR_NAME)
+]
+
+VOID_TYPE = makeVulkanTypeSimple(False, "void", 0)
+STREAM_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
+
+API_PREFIX_EQUALITY = "checkEqual_"
+EQUALITY_VAR_NAMES = ["a", "b"]
+EQUALITY_ON_FAIL_VAR = "onFail"
+EQUALITY_ON_FAIL_VAR_TYPE = makeVulkanTypeSimple(False, "OnFailCompareFunc", 0,
+ EQUALITY_ON_FAIL_VAR)
+EQUALITY_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal_readme.markdown b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal_readme.markdown
new file mode 100644
index 0000000000..b09e97ddc1
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cereal_readme.markdown
@@ -0,0 +1,59 @@
+# "Cereal": generator for Vulkan drivers - Overview
+
+Cereal consists of all necessary components for doing Vulkan driver development
+for the Android Emulator.
+
+It generates code that is intended to live on both the guest and host, crossing
+a VM boundary, but there is no explicit restriction there; it is possible to
+use this to generate API wrappers / remoting generally.
+
+## Generated targets:
+
+All generated targets have some way of getting tested on host, but the final
+purpose of them is as follows:
+
+Guest code:
+
+- Frontend (`guest/goldfish_vk_frontend`): The functions that are directly
+ referenced by the Vulkan HAL in the guest. Includes validation.
+
+Host code:
+
+- (TODO) Decoder (`host/goldfish_vk_decoder`) Functions that take existing Vulkan API calls and convert them to be runnable on the host Vulkan driver, with some translation if necessary.
+
+Common code:
+
+- Marshaling (`guest/goldfish_vk_marshaling`): Functions specifically for
+ transforming Vulkan structs to and from a serialized format.
+- Testing (`guest/goldfish_vk_testing`): More autogenerated code that makes it
+ easier to thoroughly test the other auto-generated code.
+
+## Organization
+
+The structure of Python modules is as follows:
+
+### Top level
+
+`cerealgenerator.py` has a subclass of OutputGenerator that is also registered in `genvk.py` as `cereal`. It is the main "entry point" to Cereal and uses the same interface as other Vulkan generators such as `cgenerator.py` and `validitygenerator.py`.
+
+### `cereal` Module
+
+`cereal/` is a module that contains definitions for the modules mentioned above (frontend, decoder, marshaling, testing). There are both definitions and common utility functions.
+
+The definitions are contained in `cereal/` and are as follows:
+
+- `wrapperdefs.py`: Definitions that need to be shared across generated modules. For example, the code for frontend needs to know the API prefixes and signatures for the marshaling code.
+- `frontend.py`: Definition for the guest API frontend.
+- `marshaling.py`: Definition for marshaling.
+- `testing.py`: Definition for generating code to test the other generated code.
+
+Utility functions in `cereal/common`:
+
+- `vulkantypes.py`: Knows everything that is specifically about Vulkan types (disregarding code generation) and provides all relevant information about a particular type instance (a struct field or function parameter) or complex type definition (a struct or union, or an API signature). It provides the following classes / functions that are used throughout the rest of the code:
+ - `VulkanType`: Describes a single primitive type. It optionally carries information about the name of the struct field or function parameter.
+ - `VulkanCompoundType`: Describes a compound type (a struct or union). Fields are represented in a list `members` which is a list of `VulkanType`.
+ - `VulkanAPI`: Describes an API signature in terms of its name, return type, and parameters. Return type and parameters are represented as `VulkanType`'s.
+ - `iterateVulkanType`: When we want to do something for all fields of a struct or all parameters of an API call, it's easy to repeatedly write code that checks properties of the `VulkanType` involved. This function makes it much easier by abstracting those checks away. It is a function that takes another object, `forEachType`, and depending on what `VulkanType` was visited, calls a corresponding callback.
+
+- `codegen.py`: Knows everything about generating C++ code from the classes in `vulkantypes.py`. - Provides the class `Module` which represents a C++ .cpp / .h, and handles actual writing to the files.
+ - Provides the class `Codegen` which makes it easier to generate C++ code by automatically handling code indentation, generating C type declarations, and functions that make it easier to recover the proper struct access expressions and field length expressions from `VulkanType`'s.
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cerealgenerator.py b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cerealgenerator.py
index f1b6b24233..e69ed3f103 100644
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cerealgenerator.py
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/cerealgenerator.py
@@ -18,331 +18,283 @@
import os, re, sys
from generator import *
-# CerealGenerator - generates complete set of encoder, and decoder source
+import cereal
+
+from copy import deepcopy
+
+# CerealGenerator - generates set of driver sources
# while being agnostic to the stream implementation
+copyrightHeader = """// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+"""
+
+autogeneratedHeaderTemplate = """
+// Autogenerated module %s
+// %s
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+"""
+
+autogeneratedMkTemplate = """
+# Autogenerated makefile
+# %s
+# Please do not modify directly;
+# re-run android/scripts/generate-vulkan-sources.sh,
+# or directly from Python by defining:
+# VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+# CEREAL_OUTPUT_DIR: Where to put the generated sources.
+# python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+"""
+
+def banner_command(argv):
+ """Return sanitized command-line description.
+ |argv| must be a list of command-line parameters, e.g. sys.argv.
+ Return a string corresponding to the command, with platform-specific
+ paths removed."""
+
+ def makeRelative(someArg):
+ if os.path.exists(someArg):
+ return os.path.relpath(someArg)
+ return someArg
+
+ return ' '.join(map(makeRelative, argv))
+
# ---- methods overriding base class ----
# beginFile(genOpts)
# endFile()
# beginFeature(interface, emit)
# endFeature()
+# genType(typeinfo,name)
+# genStruct(typeinfo,name)
+# genGroup(groupinfo,name)
+# genEnum(enuminfo, name)
# genCmd(cmdinfo)
class CerealGenerator(OutputGenerator):
+
"""Generate serialization code"""
def __init__(self, errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile)
- self.moduleHeaderFileHandles = {}
- self.moduleImplFileHandles = {}
+ self.typeInfo = cereal.VulkanTypeInfo()
+
+ self.modules = {}
+ self.moduleList = []
- self.moduleHeaderFilePreambles = {}
- self.moduleImplFilePreambles = {}
+ self.wrappers = []
- self.indentLevel = 0
- self.code = ""
+ self.codegen = cereal.CodeGen()
- self.cereal_Android_mk_header = """
+ self.cereal_Android_mk_header = """%s
LOCAL_PATH := $(call my-dir)
# For Vulkan libraries
cereal_C_INCLUDES := \\
$(LOCAL_PATH) \\
+ $(LOCAL_PATH)/../ \\
$(EMUGL_PATH)/host/include/vulkan \\
cereal_STATIC_LIBRARIES := \\
android-emu \\
android-emu-base \\
-"""
-
- self.cereal_Android_mk_body = """
-$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_cereal_guest)
-
-LOCAL_C_INCLUDES += $(cereal_C_INCLUDES)
-
-LOCAL_STATIC_LIBRARIES += $(cereal_STATIC_LIBRARIES)
-
-LOCAL_SRC_FILES := \\
- guest/goldfish_vk_frontend.cpp \\
+""" % (autogeneratedMkTemplate % banner_command(sys.argv))
-$(call emugl-end-module)
+ vulkanStreamInclude = """
+#include "VulkanStream.h"
+#include "android/base/files/StreamSerializing.h"
"""
-
- self.moduleHeaderFilePreambles[self.moduleKey("guest", "goldfish_vk_frontend")] = """
-#include <vulkan.h>
+ marshalInclude = """
+#include "common/goldfish_vk_marshaling.h"
"""
+ self.addModule("common", "goldfish_vk_marshaling", extraHeader = vulkanStreamInclude)
+ self.addModule("guest", "goldfish_vk_frontend", extraHeader = marshalInclude)
- self.moduleImplFilePreambles[self.moduleKey("guest", "goldfish_vk_frontend")] = """
-#include "goldfish_vk_frontend.h"
+ self.addWrapper(cereal.VulkanMarshaling(self.modules["goldfish_vk_marshaling"], self.typeInfo))
+ self.addWrapper(cereal.VulkanFrontend(self.modules["goldfish_vk_frontend"], self.typeInfo))
-#include "goldfish_vk_encoder.h"
+ testingInclude = """
+#include <string.h>
+#include <functional>
+using OnFailCompareFunc = std::function<void(const char*)>;
"""
-################################################################################
- def beginFile(self, genOpts):
- OutputGenerator.beginFile(self, genOpts)
-
- write(self.cereal_Android_mk_header, file = self.outFile)
-
- write(self.cereal_Android_mk_body, file = self.outFile)
-
- self.beginModule("guest", "goldfish_vk_frontend")
- self.beginModule("guest", "goldfish_vk_encoder")
-
- def endFile(self):
- OutputGenerator.endFile(self)
- def beginFeature(self, interface, emit):
- # Start processing in superclass
- OutputGenerator.beginFeature(self, interface, emit)
- self.appendHeader("guest", "goldfish_vk_frontend", "#ifdef %s\n" % self.featureName)
- self.appendImpl("guest", "goldfish_vk_frontend", "#ifdef %s\n" % self.featureName)
- self.appendHeader("guest", "goldfish_vk_encoder", "#ifdef %s\n" % self.featureName)
- self.appendImpl("guest", "goldfish_vk_encoder", "#ifdef %s\n" % self.featureName)
-
- def endFeature(self):
- # Finish processing in superclass
- OutputGenerator.endFeature(self)
- self.appendHeader("guest", "goldfish_vk_frontend", "#endif\n")
- self.appendImpl("guest", "goldfish_vk_frontend", "#endif\n")
- self.appendHeader("guest", "goldfish_vk_encoder", "#endif\n")
- self.appendImpl("guest", "goldfish_vk_encoder", "#endif\n")
-
- def moduleKey(self, directory, basename):
- return os.path.join(directory, basename)
-
-################################################################################
- def beginModule(self, directory, basename):
- # Create subdirectory, if needed
- absDir = os.path.join(self.genOpts.directory, directory)
- self.makeDir(absDir)
-
- filename = os.path.join(absDir, basename)
-
- fpHeader = open(filename + ".h", 'w', encoding='utf-8')
- write("// Module: %s (header) Autogenerated by CerealGenerator\n" % basename, file = fpHeader)
-
- fpImpl = open(filename + ".cpp", 'w', encoding='utf-8')
- write("// Module: %s (impl) Autogenerated by CerealGenerator\n" % basename, file = fpImpl)
-
- key = self.moduleKey(directory, basename)
-
- self.moduleHeaderFileHandles[key] = fpHeader
- self.moduleImplFileHandles[key] = fpImpl
+ self.addModule("common", "goldfish_vk_testing", extraHeader = testingInclude)
+ self.addWrapper(cereal.VulkanTesting(self.modules["goldfish_vk_testing"], self.typeInfo))
- if key in self.moduleHeaderFilePreambles:
- write(self.moduleHeaderFilePreambles[key], file = fpHeader)
-
- if key in self.moduleImplFilePreambles:
- write(self.moduleImplFilePreambles[key], file = fpImpl)
-
- def endModule(self, directory, basename):
- self.moduleHeaderFileHandles[self.moduleKey(directory, basename)].close()
- self.moduleImplFileHandles[self.moduleKey(directory, basename)].close()
-
- def appendHeader(self, directory, basename, toAppend):
- write(toAppend, file = self.moduleHeaderFileHandles[self.moduleKey(directory, basename)])
-
- def appendImpl(self, directory, basename, toAppend):
- write(toAppend, file = self.moduleImplFileHandles[self.moduleKey(directory, basename)])
-
-################################################################################
-
- def swapCode(self,):
- res = "%s" % self.code
- self.code = ""
- return res
-
- def indent(self,):
- return "".join(" " * self.indentLevel)
-
- def beginBlock(self,):
- self.code += self.indent() + "{\n"
- self.indentLevel += 1
-
- def endBlock(self,):
- self.indentLevel -= 1
- self.code += self.indent() + "}\n"
-
- def beginIf(self, cond):
- self.code += self.indent() + "if (" + cond + ")\n"
- self.beginBlock()
-
- def beginElse(self, cond):
- self.code += self.indent() + "else\n"
- self.beginBlock()
-
- def endElse(self):
- self.endBlock()
-
- def endIf(self):
- self.endBlock()
-
- def beginWhile(self, cond):
- self.code += self.indent() + "while (" + cond + ")\n"
- self.beginBlock()
-
- def endWhile(self):
- self.endBlock()
-
- def beginFor(self, initial, condition, increment):
- self.code += self.indent() + "for (" + "; ".join([initial, condition, increment]) + ")\n"
- self.beginBlock()
-
- def endFor(self, initial, condition, increment):
- self.endBlock()
-
- def stmt(self, code):
- self.code += self.indent() + code + ";\n"
-
- def line(self, code):
- self.code += self.indent() + code + "\n"
+ poolInclude = """
+#include "android/base/Pool.h"
+using android::base::Pool;
+"""
+ self.addModule("common", "goldfish_vk_deepcopy", extraHeader = poolInclude)
+ self.addWrapper(cereal.VulkanDeepcopy(self.modules["goldfish_vk_deepcopy"], self.typeInfo))
- def makeFuncProto(self, cmdInfoElem, name, callNamePrefix = "", extraArgs = None, retTypeOverride = None):
- params = cmdInfoElem.findall('param')
+ handleMapInclude = """
+#include "VulkanHandleMapping.h"
+"""
+ self.addModule("common", "goldfish_vk_handlemap", extraHeader = handleMapInclude)
+ self.addWrapper(cereal.VulkanHandleMap(self.modules["goldfish_vk_handlemap"], self.typeInfo))
- if extraArgs:
- args = list(extraArgs)
- else:
- args = []
+ dispatchHeaderDefs = """
+namespace goldfish_vk {
- for p in params:
- args.append(self.makeCParamDecl(p, 0).strip())
+struct VulkanDispatch;
- callName = callNamePrefix + name
+} // namespace goldfish_vk
+using DlOpenFunc = void* (void);
+using DlSymFunc = void* (void*, const char*);
+using InstanceGetter = bool (const goldfish_vk::VulkanDispatch* vk, VkInstance* instance);
+using DeviceGetter = bool (const goldfish_vk::VulkanDispatch* vk, VkInstance instance, VkPhysicalDevice* physDeviceOut, uint32_t* physicalDeviceQueueFamilyInfoCountOut, VkQueueFamilyProperties* physicalDeviceQueueFamilyInfosOut, VkDevice* deviceOut, bool* presentCapable);
+"""
- if retTypeOverride:
- retType = retTypeOverride
- else:
- retType = cmdInfoElem.find('proto').find('type').text
+ dispatchImplIncludes = """
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+"""
- divider = "\n "
- funcPrototype = retType + " " + callName + "(" + divider + ("," + divider).join(args) + ")\n"
+ self.addModule("common", "goldfish_vk_dispatch", extraHeader = dispatchHeaderDefs, extraImpl = dispatchImplIncludes)
+ self.addWrapper(cereal.VulkanDispatch(self.modules["goldfish_vk_dispatch"], self.typeInfo))
- return funcPrototype
+ self.cereal_Android_mk_body = """
+$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_cereal)
- def makeValidateProto(self, cmdInfoElem, name):
- return self.makeFuncProto(
- cmdInfoElem, name, "validate_",
- extraArgs = ["VkResult* validateResult"],
- retTypeOverride = "void")
+LOCAL_C_INCLUDES += $(cereal_C_INCLUDES)
- def makeEncodeProto(self, cmdInfoElem, name):
- return self.makeFuncProto(
- cmdInfoElem, name, "encode_",
- extraArgs = ["void* vkStream"])
+LOCAL_STATIC_LIBRARIES += $(cereal_STATIC_LIBRARIES)
- def makeValidateDef(self, cmdInfoElem, name):
- params = cmdInfoElem.findall('param')
+LOCAL_SRC_FILES := \\
+"""
+ def addSrcEntry(m):
+ self.cereal_Android_mk_body += m.getMakefileSrcEntry()
- funcPrototype = \
- "static " + \
- self.makeValidateProto(cmdInfoElem, name)
+ self.forEachModule(addSrcEntry)
- self.swapCode();
+ self.cereal_Android_mk_body += """
+$(call emugl-end-module)
+"""
- self.beginBlock();
+ def addModule(self, directory, basename, extraHeader = "", extraImpl = ""):
+ self.moduleList.append(basename)
+ self.modules[basename] = cereal.Module(directory, basename)
+ self.modules[basename].headerPreamble = copyrightHeader
+ self.modules[basename].headerPreamble += \
+ autogeneratedHeaderTemplate % (basename, "(header) generated by %s" % banner_command(sys.argv))
- self.endBlock();
- return funcPrototype + self.swapCode()
+ self.modules[basename].headerPreamble += """
+#pragma once
- def makeEncoderDef(self, cmdInfoElem, name):
- params = cmdInfoElem.findall('param')
+#include <vulkan.h>
- funcPrototype = \
- self.makeEncodeProto(cmdInfoElem, name)
+%s
- self.swapCode();
+namespace goldfish_vk {
- self.beginBlock();
+""" % extraHeader
- retType = cmdInfoElem.find('proto').find('type').text
+ self.modules[basename].implPreamble = copyrightHeader
+ self.modules[basename].implPreamble += \
+ autogeneratedHeaderTemplate % (basename, "(impl) generated by %s" % banner_command(sys.argv))
+ self.modules[basename].implPreamble += """
+#include "%s.h"
- if retType != "void":
- self.stmt("return (%s)0" % retType)
+%s
- self.endBlock();
- return funcPrototype + self.swapCode()
+namespace goldfish_vk {
- def makeValidateCall(self, cmdInfoElem, name):
- params = cmdInfoElem.findall('param')
+""" % (basename, extraImpl)
- args = ["&validateResult"]
- for p in params:
- ptype = p.find('type')
- pname = p.find('name')
- args.append(pname.text)
+ self.modules[basename].headerPostamble = """
+} // namespace goldfish_vk
+"""
+ self.modules[basename].implPostamble = """
+} // namespace goldfish_vk
+"""
- callName = "validate_" + name
- return callName + "(" + ", ".join(args) + ")"
+ def addWrapper(self, wrapper):
+ self.wrappers.append(wrapper)
- def makeFrontendDef(self, cmdInfoElem, name):
- def makeEncoderCall(cmdInfoElem, name):
- params = cmdInfoElem.findall('param')
+ def forEachModule(self, func):
+ for moduleName in self.moduleList:
+ func(self.modules[moduleName])
- args = ["vkStream"]
- for p in params:
- ptype = p.find('type')
- pname = p.find('name')
- args.append(pname.text)
+ def forEachWrapper(self, func):
+ for wrapper in self.wrappers:
+ func(wrapper)
- callName = "encode_" + name
+## Overrides####################################################################
- return callName + "(" + ", ".join(args) + ")"
+ def beginFile(self, genOpts):
+ OutputGenerator.beginFile(self, genOpts)
- prototype = self.makeFuncProto(cmdInfoElem, name, "goldfish_frontend_") + "\n"
+ write(self.cereal_Android_mk_header, file = self.outFile)
+ write(self.cereal_Android_mk_body, file = self.outFile)
- self.swapCode()
+ self.forEachModule(lambda m: m.begin(self.genOpts.directory))
+ self.forEachWrapper(lambda w: w.onBegin())
- self.beginBlock()
+ def endFile(self):
+ OutputGenerator.endFile(self)
- self.stmt("VkResult validateResult = VK_SUCCESS")
+ self.forEachWrapper(lambda w: w.onEnd())
+ self.forEachModule(lambda m: m.end())
- retType = cmdInfoElem.find('proto').find('type').text
+ def beginFeature(self, interface, emit):
+ # Start processing in superclass
+ OutputGenerator.beginFeature(self, interface, emit)
- self.stmt(self.makeValidateCall(cmdInfoElem, name))
+ self.forEachModule(lambda m: m.appendHeader("#ifdef %s\n" % self.featureName))
+ self.forEachModule(lambda m: m.appendImpl("#ifdef %s\n" % self.featureName))
+ self.forEachWrapper(lambda w: w.onBeginFeature(self.featureName))
- self.beginIf("validateResult != VK_SUCCESS")
- if retType == 'VkResult':
- self.stmt("return validateResult")
- elif retType != "void":
- self.stmt("return (%s)0" % retType)
- else:
- self.stmt("return")
- self.endIf()
+ def endFeature(self):
+ # Finish processing in superclass
+ OutputGenerator.endFeature(self)
- self.stmt("// VULKAN_STREAM_GET()")
- self.stmt("void* vkStream = 0")
+ self.forEachModule(lambda m: m.appendHeader("#endif\n"))
+ self.forEachModule(lambda m: m.appendImpl("#endif\n"))
+ self.forEachWrapper(lambda w: w.onEndFeature())
- if retType != 'void':
- self.stmt(retType + " res = " + makeEncoderCall(cmdInfoElem, name))
- self.stmt("return res")
- else:
- self.stmt(makeEncoderCall(cmdInfoElem, name))
+ def genType(self, typeinfo, name, alias):
+ OutputGenerator.genType(self, typeinfo, name, alias)
+ self.typeInfo.onGenType(typeinfo, name, alias)
+ self.forEachWrapper(lambda w: w.onGenType(typeinfo, name, alias))
- self.endBlock()
+ def genStruct(self, typeinfo, typeName, alias):
+ OutputGenerator.genStruct(self, typeinfo, typeName, alias)
+ self.typeInfo.onGenStruct(typeinfo, typeName, alias)
+ self.forEachWrapper(lambda w: w.onGenStruct(typeinfo, typeName, alias))
- implBody = self.swapCode()
- res = prototype + implBody
+ def genGroup(self, groupinfo, groupName, alias = None):
+ OutputGenerator.genGroup(self, groupinfo, groupName, alias)
+ self.typeInfo.onGenGroup(groupinfo, groupName, alias)
+ self.forEachWrapper(lambda w: w.onGenGroup(groupinfo, groupName, alias))
- return res
+ def genEnum(self, enuminfo, name, alias):
+ OutputGenerator.genEnum(self, enuminfo, name, alias)
+ self.typeInfo.onGenEnum(enuminfo, name, alias)
+ self.forEachWrapper(lambda w: w.onGenEnum(enuminfo, name, alias))
- # Command generation
def genCmd(self, cmdinfo, name, alias):
OutputGenerator.genCmd(self, cmdinfo, name, alias)
- frontendDecl = self.makeFuncProto(cmdinfo.elem, name, "goldfish_frontend_") + ";\n"
-
- validateDef = self.makeValidateDef(cmdinfo.elem, name)
- frontendDef = self.makeFrontendDef(cmdinfo.elem, name)
-
- self.appendHeader("guest", "goldfish_vk_frontend", frontendDecl)
- self.appendImpl("guest", "goldfish_vk_frontend", validateDef)
- self.appendImpl("guest", "goldfish_vk_frontend", frontendDef)
-
- encoderDecl = self.makeEncodeProto(cmdinfo.elem, name) + ";\n"
- encoderDef = self.makeEncoderDef(cmdinfo.elem, name)
-
- self.appendHeader("guest", "goldfish_vk_encoder", encoderDecl)
- self.appendImpl("guest", "goldfish_vk_encoder", encoderDef)
+ self.typeInfo.onGenCmd(cmdinfo, name, alias)
+ self.forEachWrapper(lambda w: w.onGenCmd(cmdinfo, name, alias))
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/Android.mk b/android/android-emugl/host/libs/libOpenglRender/vulkan/Android.mk
index 0ec19ad563..25d31d7425 100644
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/Android.mk
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/Android.mk
@@ -1,3 +1,35 @@
-include $(EMUGL_PATH)/host/libs/libOpenglRender/vulkan/cereal/Android.mk
-
LOCAL_PATH := $(call my-dir)
+
+$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan)
+$(call emugl-import,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_cereal)
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/cereal \
+ $(EMUGL_PATH)/host/include/vulkan \
+
+LOCAL_STATIC_LIBRARIES += \
+ android-emu \
+ android-emu-base \
+
+LOCAL_SRC_FILES := \
+ VulkanDispatch.cpp \
+ VulkanStream.cpp \
+
+$(call emugl-end-module)
+
+$(call emugl-begin-executable,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_unittests)
+$(call emugl-import,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan libemugl_gtest)
+
+LOCAL_STATIC_LIBRARIES += \
+ android-emu \
+ android-emu-base \
+
+LOCAL_C_INCLUDES += \
+ $(LOCAL_PATH)/cereal \
+ $(EMUGL_PATH)/host/include/vulkan \
+
+LOCAL_SRC_FILES := \
+ VulkanStream_unittest.cpp \
+
+$(call emugl-end-module)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.cpp
new file mode 100644
index 0000000000..1fbe6edb12
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.cpp
@@ -0,0 +1,38 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VulkanDispatch.h"
+
+#include "android/base/memory/LazyInstance.h"
+
+using android::base::LazyInstance;
+
+namespace emugl {
+
+class VulkanInitialization {
+public:
+ VulkanInitialization() {
+ }
+
+ VulkanDispatch* dispatch() { return 0; }
+};
+
+static LazyInstance<VulkanInitialization> sVulkanInitalization =
+ LAZY_INSTANCE_INIT;
+
+VulkanDispatch* getInstanceDeviceAndDispatch() {
+ return sVulkanInitalization->dispatch();
+}
+
+}
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.h
new file mode 100644
index 0000000000..d59d7c1acf
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanDispatch.h
@@ -0,0 +1,24 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "cereal/common/goldfish_vk_dispatch.h"
+
+using goldfish_vk::VulkanDispatch;
+
+namespace emugl {
+
+VulkanDispatch* getInstanceDeviceAndDispatch();
+
+}
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanHandleMapping.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanHandleMapping.h
new file mode 100644
index 0000000000..79d1611d57
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanHandleMapping.h
@@ -0,0 +1,70 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include <vulkan.h>
+
+namespace goldfish_vk {
+
+class VulkanHandleMapping {
+public:
+ VulkanHandleMapping() = default;
+
+ virtual void mapHandles_VkInstance(VkInstance* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDevice(VkDevice* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkQueue(VkQueue* handles, size_t count = 1) = 0;
+
+ virtual void mapHandles_VkSemaphore(VkSemaphore* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkCommandBuffer(VkCommandBuffer* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDeviceMemory(VkDeviceMemory* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkBuffer(VkBuffer* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkImage(VkImage* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkShaderModule(VkShaderModule* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkPipelineLayout(VkPipelineLayout* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkRenderPass(VkRenderPass* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkPipeline(VkPipeline* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDescriptorSetLayout(VkDescriptorSetLayout* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkSampler(VkSampler* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDescriptorPool(VkDescriptorPool* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkImageView(VkImageView* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDescriptorSet(VkDescriptorSet* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkBufferView(VkBufferView* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkCommandPool(VkCommandPool* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkFramebuffer(VkFramebuffer* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkPhysicalDevice(VkPhysicalDevice* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkSamplerYcbcrConversion(VkSamplerYcbcrConversion* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkFence(VkFence* handles, size_t count = 1) = 0;
+
+#ifdef VK_KHR_swapchain
+ virtual void mapHandles_VkSurfaceKHR(VkSurfaceKHR* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkSwapchainKHR(VkSwapchainKHR* handles, size_t count = 1) = 0;
+#endif
+
+#ifdef VK_KHR_display
+ virtual void mapHandles_VkDisplayKHR(VkDisplayKHR* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkDisplayModeKHR(VkDisplayModeKHR* handles, size_t count = 1) = 0;
+#endif
+
+#ifdef VK_NVX_device_generated_commands
+ virtual void mapHandles_VkObjectTableNVX(VkObjectTableNVX* handles, size_t count = 1) = 0;
+ virtual void mapHandles_VkIndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX* handles, size_t count = 1) = 0;
+#endif
+
+#ifdef VK_EXT_validation_cache
+ virtual void mapHandles_VkValidationCacheEXT(VkValidationCacheEXT* handles, size_t count = 1) = 0;
+#endif
+
+};
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.cpp
new file mode 100644
index 0000000000..2ca8b608ad
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.cpp
@@ -0,0 +1,59 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "VulkanStream.h"
+
+#include "android/base/files/StreamSerializing.h"
+
+namespace goldfish_vk {
+
+VulkanStream::VulkanStream() {
+}
+
+void VulkanStream::alloc(void** ptrAddr, size_t bytes) {
+ if (!bytes) {
+ *ptrAddr = nullptr;
+ return;
+ }
+
+ *ptrAddr = mPool.alloc(bytes);
+}
+
+void VulkanStream::loadStringInPlace(char** forOutput) {
+ size_t len = this->getBe32();
+
+ *forOutput = mPool.allocArray<char>(len + 1);
+
+ memset(*forOutput, 0x0, len + 1);
+
+ if (len > 0) {
+ this->read(*forOutput, len);
+ }
+}
+
+void VulkanStream::loadStringArrayInPlace(char*** forOutput) {
+ size_t count = this->getBe32();
+
+ if (!count) { *forOutput = nullptr; return; }
+
+ *forOutput = mPool.allocArray<char*>(count);
+
+ char** stringsForOutput = *forOutput;
+
+ for (size_t i = 0; i < count; i++) {
+ loadStringInPlace(stringsForOutput + i);
+ }
+}
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.h
new file mode 100644
index 0000000000..12560be62c
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream.h
@@ -0,0 +1,41 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+
+#include "android/base/files/Stream.h"
+
+#include "android/base/Pool.h"
+
+#include <string>
+#include <vector>
+
+namespace goldfish_vk {
+
+class VulkanStream : public android::base::Stream {
+public:
+ VulkanStream();
+
+ // General allocation function
+ void alloc(void** ptrAddr, size_t bytes);
+
+ // Utility functions to load strings or
+ // string arrays in place with allocation.
+ void loadStringInPlace(char** forOutput);
+ void loadStringArrayInPlace(char*** forOutput);
+
+private:
+ android::base::Pool mPool { 8, 4096, 64 };
+};
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream_unittest.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream_unittest.cpp
new file mode 100644
index 0000000000..a10dd5e87d
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/VulkanStream_unittest.cpp
@@ -0,0 +1,551 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "VulkanStream.h"
+
+#include "common/goldfish_vk_deepcopy.h"
+#include "common/goldfish_vk_marshaling.h"
+#include "common/goldfish_vk_testing.h"
+
+#include "android/base/ArraySize.h"
+#include "android/base/Pool.h"
+
+#include <gtest/gtest.h>
+#include <string.h>
+#include <vulkan.h>
+
+using android::base::arraySize;
+
+namespace goldfish_vk {
+
+class VulkanStreamForTesting : public VulkanStream {
+public:
+ ssize_t read(void* buffer, size_t size) override {
+ EXPECT_LE(mReadCursor + size, mBuffer.size());
+ memcpy(buffer, mBuffer.data() + mReadCursor, size);
+
+ mReadCursor += size;
+
+ if (mReadCursor == mWriteCursor) {
+ clear();
+ }
+ return size;
+ }
+
+ ssize_t write(const void* buffer, size_t size) override {
+ if (mBuffer.size() < mWriteCursor + size) {
+ mBuffer.resize(mWriteCursor + size);
+ }
+
+ memcpy(mBuffer.data() + mWriteCursor, buffer, size);
+
+ mWriteCursor += size;
+
+ if (mReadCursor == mWriteCursor) {
+ clear();
+ }
+ return size;
+ }
+
+private:
+ void clear() {
+ mBuffer.clear();
+ mReadCursor = 0;
+ mWriteCursor = 0;
+ }
+
+ size_t mReadCursor = 0;
+ size_t mWriteCursor = 0;
+ std::vector<char> mBuffer;
+};
+
+// Just see whether the test class is OK
+TEST(VulkanStream, Basic) {
+ VulkanStreamForTesting stream;
+
+ const uint32_t testInt = 6;
+ stream.putBe32(testInt);
+ EXPECT_EQ(testInt, stream.getBe32());
+
+ const std::string testString = "Hello World";
+ stream.putString(testString);
+ EXPECT_EQ(testString, stream.getString());
+}
+
+// Try a "basic" Vulkan struct (VkInstanceCreateInfo)
+TEST(VulkanStream, testMarshalVulkanStruct) {
+ VulkanStreamForTesting stream;
+
+ VkApplicationInfo appInfo = {
+ VK_STRUCTURE_TYPE_APPLICATION_INFO,
+ 0, // pNext
+ "VulkanStreamTest", // application name
+ 6, // application version
+ "VulkanStreamTestEngine", //engine name
+ 4, // engine version,
+ VK_API_VERSION_1_0,
+ };
+
+ const char* const layerNames[] = {
+ "layer0",
+ "layer1: test layer",
+ };
+
+ const char* const extensionNames[] = {
+ "VK_KHR_8bit_storage",
+ "VK_KHR_android_surface",
+ "VK_MVK_macos_surface",
+ };
+
+ VkInstanceCreateInfo forMarshaling = {
+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
+ 0, // pNext
+ 0, // flags,
+ &appInfo, // pApplicationInfo,
+ arraySize(layerNames),
+ layerNames,
+ arraySize(extensionNames),
+ extensionNames
+ };
+
+ marshal_VkInstanceCreateInfo(&stream, &forMarshaling);
+
+ VkInstanceCreateInfo forUnmarshaling;
+ memset(&forUnmarshaling, 0x0, sizeof(VkInstanceCreateInfo));
+
+ // Before unmarshaling, these structs should be different.
+ // Test that the generated comparator can detect inequality.
+ int inequalities = 0;
+ checkEqual_VkInstanceCreateInfo(
+ &forMarshaling, &forUnmarshaling, [&inequalities](const char* errMsg) {
+ (void)errMsg;
+ ++inequalities;
+ });
+
+ EXPECT_GT(inequalities, 0);
+
+ unmarshal_VkInstanceCreateInfo(&stream, &forUnmarshaling);
+
+ // Check that the strings are equal as well.
+
+ EXPECT_STREQ(
+ forMarshaling.pApplicationInfo->pApplicationName,
+ forUnmarshaling.pApplicationInfo->pApplicationName);
+
+ EXPECT_STREQ(
+ forMarshaling.pApplicationInfo->pEngineName,
+ forUnmarshaling.pApplicationInfo->pEngineName);
+
+ for (size_t i = 0; i < arraySize(layerNames); ++i) {
+ EXPECT_STREQ(
+ forMarshaling.ppEnabledLayerNames[i],
+ forUnmarshaling.ppEnabledLayerNames[i]);
+ }
+
+ for (size_t i = 0; i < arraySize(extensionNames); ++i) {
+ EXPECT_STREQ(
+ forMarshaling.ppEnabledExtensionNames[i],
+ forUnmarshaling.ppEnabledExtensionNames[i]);
+ }
+
+ EXPECT_EQ(forMarshaling.sType, forUnmarshaling.sType);
+ EXPECT_EQ(forMarshaling.pNext, forUnmarshaling.pNext);
+ EXPECT_EQ(forMarshaling.flags, forUnmarshaling.flags);
+ EXPECT_EQ(forMarshaling.pApplicationInfo->sType,
+ forUnmarshaling.pApplicationInfo->sType);
+ EXPECT_EQ(forMarshaling.pApplicationInfo->apiVersion,
+ forUnmarshaling.pApplicationInfo->apiVersion);
+
+ checkEqual_VkInstanceCreateInfo(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+// Try a Vulkan struct that has non-ptr structs in it
+TEST(VulkanStream, testMarshalVulkanStructWithNonPtrStruct) {
+ VulkanStreamForTesting stream;
+
+ VkPhysicalDeviceProperties forMarshaling = {
+ VK_API_VERSION_1_0,
+ 0,
+ 0x8086,
+ 0x7800,
+ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
+ "Intel740",
+ "123456789abcdef",
+ {
+ 0x00, // maxImageDimension1D;
+ 0x01, // maxImageDimension2D;
+ 0x02, // maxImageDimension3D;
+ 0x03, // maxImageDimensionCube;
+ 0x04, // maxImageArrayLayers;
+ 0x05, // maxTexelBufferElements;
+ 0x06, // maxUniformBufferRange;
+ 0x07, // maxStorageBufferRange;
+ 0x08, // maxPushConstantsSize;
+ 0x09, // maxMemoryAllocationCount;
+ 0x0a, // maxSamplerAllocationCount;
+ 0x0b, // bufferImageGranularity;
+ 0x0c, // sparseAddressSpaceSize;
+ 0x0d, // maxBoundDescriptorSets;
+ 0x0e, // maxPerStageDescriptorSamplers;
+ 0x0f, // maxPerStageDescriptorUniformBuffers;
+ 0x10, // maxPerStageDescriptorStorageBuffers;
+ 0x11, // maxPerStageDescriptorSampledImages;
+ 0x12, // maxPerStageDescriptorStorageImages;
+ 0x13, // maxPerStageDescriptorInputAttachments;
+ 0x14, // maxPerStageResources;
+ 0x15, // maxDescriptorSetSamplers;
+ 0x16, // maxDescriptorSetUniformBuffers;
+ 0x17, // maxDescriptorSetUniformBuffersDynamic;
+ 0x18, // maxDescriptorSetStorageBuffers;
+ 0x19, // maxDescriptorSetStorageBuffersDynamic;
+ 0x1a, // maxDescriptorSetSampledImages;
+ 0x1b, // maxDescriptorSetStorageImages;
+ 0x1c, // maxDescriptorSetInputAttachments;
+ 0x1d, // maxVertexInputAttributes;
+ 0x1e, // maxVertexInputBindings;
+ 0x1f, // maxVertexInputAttributeOffset;
+ 0x20, // maxVertexInputBindingStride;
+ 0x21, // maxVertexOutputComponents;
+ 0x22, // maxTessellationGenerationLevel;
+ 0x23, // maxTessellationPatchSize;
+ 0x24, // maxTessellationControlPerVertexInputComponents;
+ 0x25, // maxTessellationControlPerVertexOutputComponents;
+ 0x26, // maxTessellationControlPerPatchOutputComponents;
+ 0x27, // maxTessellationControlTotalOutputComponents;
+ 0x28, // maxTessellationEvaluationInputComponents;
+ 0x29, // maxTessellationEvaluationOutputComponents;
+ 0x2a, // maxGeometryShaderInvocations;
+ 0x2b, // maxGeometryInputComponents;
+ 0x2c, // maxGeometryOutputComponents;
+ 0x2d, // maxGeometryOutputVertices;
+ 0x2e, // maxGeometryTotalOutputComponents;
+ 0x2f, // maxFragmentInputComponents;
+ 0x30, // maxFragmentOutputAttachments;
+ 0x31, // maxFragmentDualSrcAttachments;
+ 0x32, // maxFragmentCombinedOutputResources;
+ 0x33, // maxComputeSharedMemorySize;
+ { 0x1, 0x2, 0x3 }, // maxComputeWorkGroupCount[3];
+ 0x35, // maxComputeWorkGroupInvocations;
+ { 0x4, 0x5, 0x6 }, // maxComputeWorkGroupSize[3];
+ 0x37, // subPixelPrecisionBits;
+ 0x38, // subTexelPrecisionBits;
+ 0x39, // mipmapPrecisionBits;
+ 0x3a, // maxDrawIndexedIndexValue;
+ 0x3b, // maxDrawIndirectCount;
+ 1.0f, // maxSamplerLodBias;
+ 1.0f, // maxSamplerAnisotropy;
+ 0x3e, // maxViewports;
+ { 0x7, 0x8 }, // maxViewportDimensions[2];
+ { 0.4f, 0.5f }, // viewportBoundsRange[2];
+ 0x41, // viewportSubPixelBits;
+ 0x42, // minMemoryMapAlignment;
+ 0x43, // minTexelBufferOffsetAlignment;
+ 0x44, // minUniformBufferOffsetAlignment;
+ 0x45, // minStorageBufferOffsetAlignment;
+ 0x46, // minTexelOffset;
+ 0x47, // maxTexelOffset;
+ 0x48, // minTexelGatherOffset;
+ 0x49, // maxTexelGatherOffset;
+ 10.0f, // minInterpolationOffset;
+ 11.0f, // maxInterpolationOffset;
+ 0x4c, // subPixelInterpolationOffsetBits;
+ 0x4d, // maxFramebufferWidth;
+ 0x4e, // maxFramebufferHeight;
+ 0x4f, // maxFramebufferLayers;
+ 0x50, // framebufferColorSampleCounts;
+ 0x51, // framebufferDepthSampleCounts;
+ 0x52, // framebufferStencilSampleCounts;
+ 0x53, // framebufferNoAttachmentsSampleCounts;
+ 0x54, // maxColorAttachments;
+ 0x55, // sampledImageColorSampleCounts;
+ 0x56, // sampledImageIntegerSampleCounts;
+ 0x57, // sampledImageDepthSampleCounts;
+ 0x58, // sampledImageStencilSampleCounts;
+ 0x59, // storageImageSampleCounts;
+ 0x5a, // maxSampleMaskWords;
+ 0x5b, // timestampComputeAndGraphics;
+ 100.0f, // timestampPeriod;
+ 0x5d, // maxClipDistances;
+ 0x5e, // maxCullDistances;
+ 0x5f, // maxCombinedClipAndCullDistances;
+ 0x60, // discreteQueuePriorities;
+ { 0.0f, 1.0f }, // pointSizeRange[2];
+ { 1.0f, 2.0f }, // lineWidthRange[2];
+ 3.0f, // pointSizeGranularity;
+ 4.0f, // lineWidthGranularity;
+ 0x65, // strictLines;
+ 0x66, // standardSampleLocations;
+ 0x67, // optimalBufferCopyOffsetAlignment;
+ 0x68, // optimalBufferCopyRowPitchAlignment;
+ 0x69, // nonCoherentAtomSize;
+ },
+ {
+ 0xff, // residencyStandard2DBlockShape;
+ 0x00, // residencyStandard2DMultisampleBlockShape;
+ 0x11, // residencyStandard3DBlockShape;
+ 0x22, // residencyAlignedMipSize;
+ 0x33, // residencyNonResidentStrict;
+ },
+ };
+
+ marshal_VkPhysicalDeviceProperties(&stream, &forMarshaling);
+
+ VkPhysicalDeviceProperties forUnmarshaling;
+ memset(&forUnmarshaling, 0x0, sizeof(VkPhysicalDeviceLimits));
+
+ // Test the autogenerated testing code
+ int inequalities = 0;
+ checkEqual_VkPhysicalDeviceProperties(
+ &forMarshaling, &forUnmarshaling, [&inequalities](const char* errMsg) {
+ (void)errMsg;
+ ++inequalities;
+ });
+
+ EXPECT_GT(inequalities, 0);
+
+ unmarshal_VkPhysicalDeviceProperties(&stream, &forUnmarshaling);
+
+ // Test the autogenerated testing code
+ EXPECT_EQ(VK_API_VERSION_1_0, forUnmarshaling.apiVersion);
+ EXPECT_EQ(VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, forUnmarshaling.deviceType);
+ EXPECT_EQ(2.0f, forUnmarshaling.limits.lineWidthRange[1]);
+ EXPECT_EQ(11.0f, forUnmarshaling.limits.maxInterpolationOffset);
+
+ checkEqual_VkPhysicalDeviceProperties(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+// Try a Vulkan struct that has ptr fields with count (dynamic arrays)
+TEST(VulkanStream, testMarshalVulkanStructWithPtrFields) {
+ VulkanStreamForTesting stream;
+
+ const uint32_t bindCount = 14;
+
+ std::vector<VkSparseImageMemoryBind> sparseBinds;
+
+ for (uint32_t i = 0; i < bindCount; i++) {
+ VkSparseImageMemoryBind sparseBind = {
+ // VkImageSubresource subresource
+ {
+ VK_IMAGE_ASPECT_COLOR_BIT |
+ VK_IMAGE_ASPECT_DEPTH_BIT,
+ i,
+ i * 2,
+ },
+ // VkOffset3D offset
+ { 1, 2 + (int32_t)i, 3},
+ // VkExtent3D extent
+ { 10, 20 * i, 30},
+ // VkDeviceMemory memory
+ (VkDeviceMemory)(uintptr_t)(0xff - i),
+ // VkDeviceSize memoryOffset
+ 0x12345678 + i,
+ // VkSparseMemoryBindFlags flags
+ VK_SPARSE_MEMORY_BIND_METADATA_BIT,
+ };
+
+ sparseBinds.push_back(sparseBind);
+ }
+
+ VkSparseImageMemoryBindInfo forMarshaling = {
+ (VkImage)(uintptr_t)54,
+ bindCount,
+ sparseBinds.data(),
+ };
+
+ marshal_VkSparseImageMemoryBindInfo(&stream, &forMarshaling);
+
+ VkSparseImageMemoryBindInfo forUnmarshaling = {
+ 0, 0, nullptr,
+ };
+
+ unmarshal_VkSparseImageMemoryBindInfo(&stream, &forUnmarshaling);
+
+ EXPECT_EQ(bindCount, forUnmarshaling.bindCount);
+ EXPECT_EQ(forMarshaling.image, forUnmarshaling.image);
+
+ // Test some values in there so we know the autogenerated
+ // compare code works.
+ for (uint32_t i = 0; i < bindCount; i++) {
+ EXPECT_EQ(forMarshaling.pBinds[i].memoryOffset,
+ forUnmarshaling.pBinds[i].memoryOffset);
+ EXPECT_EQ(forMarshaling.pBinds[i].memoryOffset,
+ forUnmarshaling.pBinds[i].memoryOffset);
+ EXPECT_EQ(forMarshaling.pBinds[i].subresource.arrayLayer,
+ forUnmarshaling.pBinds[i].subresource.arrayLayer);
+ }
+
+ checkEqual_VkSparseImageMemoryBindInfo(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+// Try a Vulkan struct that has ptr fields that are not structs
+TEST(VulkanStream, testMarshalVulkanStructWithSimplePtrFields) {
+ VulkanStreamForTesting stream;
+
+ const uint32_t queueCount = 4;
+
+ std::vector<float> queuePriorities;
+
+ for (uint32_t i = 0; i < queueCount; i++) {
+ queuePriorities.push_back(i * 4.0f);
+ }
+
+ VkDeviceQueueCreateInfo forMarshaling = {
+ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
+ 0,
+ 0,
+ 1,
+ queueCount,
+ queuePriorities.data(),
+ };
+
+ VkDeviceQueueCreateInfo forUnmarshaling = {
+ VK_STRUCTURE_TYPE_APPLICATION_INFO,
+ 0,
+ 0,
+ 0,
+ 0,
+ nullptr,
+ };
+
+ marshal_VkDeviceQueueCreateInfo(&stream, &forMarshaling);
+ unmarshal_VkDeviceQueueCreateInfo(&stream, &forUnmarshaling);
+
+ // As always, test the autogenerated tester.
+ for (uint32_t i = 0; i < queueCount; i++) {
+ EXPECT_EQ(forMarshaling.pQueuePriorities[i], forUnmarshaling.pQueuePriorities[i]);
+ }
+
+ checkEqual_VkDeviceQueueCreateInfo(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+// Vulkan struct with a void* field that refers to actual data
+// that needs to get transmitted over
+TEST(VulkanStream, testMarshalVulkanStructWithVoidPtrToData) {
+ VulkanStreamForTesting stream;
+
+ // Not going to validate the map entries---
+ // that's the validation layer's job,
+ // and this is just to make sure values match.
+ const uint32_t numEntries = 5;
+ const size_t dataSize = 54;
+
+ std::vector<VkSpecializationMapEntry> entries(numEntries);
+
+ for (uint32_t i = 0; i < numEntries; i++) {
+ entries[i].constantID = 8 * i + 0;
+ entries[i].offset = 8 * i + 1;
+ entries[i].size = 8 * i + 2;
+ }
+
+ std::vector<uint8_t> data(dataSize);
+
+ for (size_t i = 0; i < dataSize; i++) {
+ data[i] = (uint8_t)i;
+ }
+
+ VkSpecializationInfo forMarshaling = {
+ numEntries,
+ entries.data(),
+ dataSize,
+ data.data(),
+ };
+
+ VkSpecializationInfo forUnmarshaling;
+ memset(&forUnmarshaling, 0x0, sizeof(VkSpecializationInfo));
+
+ int inequalities = 0;
+ checkEqual_VkSpecializationInfo(
+ &forMarshaling, &forUnmarshaling, [&inequalities](const char* errMsg) {
+ ++inequalities;
+ });
+
+ EXPECT_GT(inequalities, 0);
+
+ marshal_VkSpecializationInfo(&stream, &forMarshaling);
+ unmarshal_VkSpecializationInfo(&stream, &forUnmarshaling);
+
+ checkEqual_VkSpecializationInfo(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+// Tests that marshal + unmarshal is equivalent to deepcopy.
+TEST(VulkanStream, testDeepcopyEquivalence) {
+ Pool pool;
+ VulkanStreamForTesting stream;
+
+ VkApplicationInfo appInfo = {
+ VK_STRUCTURE_TYPE_APPLICATION_INFO,
+ 0, // pNext
+ "VulkanStreamTest", // application name
+ 6, // application version
+ "VulkanStreamTestEngine", //engine name
+ 4, // engine version,
+ VK_API_VERSION_1_0,
+ };
+
+ const char* const layerNames[] = {
+ "layer0",
+ "layer1: test layer",
+ };
+
+ const char* const extensionNames[] = {
+ "VK_KHR_8bit_storage",
+ "VK_KHR_android_surface",
+ "VK_MVK_macos_surface",
+ };
+
+ VkInstanceCreateInfo forMarshaling = {
+ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
+ 0, // pNext
+ 0, // flags,
+ &appInfo, // pApplicationInfo,
+ arraySize(layerNames),
+ layerNames,
+ arraySize(extensionNames),
+ extensionNames
+ };
+
+ marshal_VkInstanceCreateInfo(&stream, &forMarshaling);
+
+ VkInstanceCreateInfo forUnmarshaling;
+ VkInstanceCreateInfo forDeepcopy;
+
+ unmarshal_VkInstanceCreateInfo(&stream, &forUnmarshaling);
+ deepcopy_VkInstanceCreateInfo(&pool, &forMarshaling, &forDeepcopy);
+
+ checkEqual_VkInstanceCreateInfo(
+ &forMarshaling, &forUnmarshaling, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+
+ checkEqual_VkInstanceCreateInfo(
+ &forMarshaling, &forDeepcopy, [](const char* errMsg) {
+ EXPECT_TRUE(false) << errMsg;
+ });
+}
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/Android.mk b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/Android.mk
index dd1378392c..eb82982a9a 100644
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/Android.mk
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/Android.mk
@@ -1,10 +1,20 @@
+# Autogenerated makefile
+# android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+# Please do not modify directly;
+# re-run android/scripts/generate-vulkan-sources.sh,
+# or directly from Python by defining:
+# VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+# CEREAL_OUTPUT_DIR: Where to put the generated sources.
+# python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
LOCAL_PATH := $(call my-dir)
# For Vulkan libraries
cereal_C_INCLUDES := \
$(LOCAL_PATH) \
+ $(LOCAL_PATH)/../ \
$(EMUGL_PATH)/host/include/vulkan \
cereal_STATIC_LIBRARIES := \
@@ -12,14 +22,19 @@ cereal_STATIC_LIBRARIES := \
android-emu-base \
-$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_cereal_guest)
+$(call emugl-begin-static-library,lib$(BUILD_TARGET_SUFFIX)OpenglRender_vulkan_cereal)
LOCAL_C_INCLUDES += $(cereal_C_INCLUDES)
LOCAL_STATIC_LIBRARIES += $(cereal_STATIC_LIBRARIES)
LOCAL_SRC_FILES := \
+ common/goldfish_vk_marshaling.cpp \
guest/goldfish_vk_frontend.cpp \
+ common/goldfish_vk_testing.cpp \
+ common/goldfish_vk_deepcopy.cpp \
+ common/goldfish_vk_handlemap.cpp \
+ common/goldfish_vk_dispatch.cpp \
$(call emugl-end-module)
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.cpp
new file mode 100644
index 0000000000..1b6b2778e9
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.cpp
@@ -0,0 +1,5477 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_deepcopy
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#include "goldfish_vk_deepcopy.h"
+
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void deepcopy_VkApplicationInfo(
+ Pool* pool,
+ const VkApplicationInfo* from,
+ VkApplicationInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pApplicationName = nullptr;
+ if (from->pApplicationName)
+ {
+ to->pApplicationName = pool->strDup(from->pApplicationName);
+ }
+ to->applicationVersion = from->applicationVersion;
+ to->pEngineName = nullptr;
+ if (from->pEngineName)
+ {
+ to->pEngineName = pool->strDup(from->pEngineName);
+ }
+ to->engineVersion = from->engineVersion;
+ to->apiVersion = from->apiVersion;
+}
+
+void deepcopy_VkInstanceCreateInfo(
+ Pool* pool,
+ const VkInstanceCreateInfo* from,
+ VkInstanceCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pApplicationInfo = nullptr;
+ if (from->pApplicationInfo)
+ {
+ to->pApplicationInfo = (VkApplicationInfo*)pool->alloc(sizeof(const VkApplicationInfo));
+ deepcopy_VkApplicationInfo(pool, from->pApplicationInfo, (VkApplicationInfo*)(to->pApplicationInfo));
+ }
+ to->enabledLayerCount = from->enabledLayerCount;
+ to->ppEnabledLayerNames = nullptr;
+ if (from->ppEnabledLayerNames && from->enabledLayerCount)
+ {
+ to->ppEnabledLayerNames = pool->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
+ }
+ to->enabledExtensionCount = from->enabledExtensionCount;
+ to->ppEnabledExtensionNames = nullptr;
+ if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
+ {
+ to->ppEnabledExtensionNames = pool->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
+ }
+}
+
+void deepcopy_VkAllocationCallbacks(
+ Pool* pool,
+ const VkAllocationCallbacks* from,
+ VkAllocationCallbacks* to)
+{
+ to->pUserData = nullptr;
+ if (from->pUserData)
+ {
+ to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
+ }
+ to->pfnAllocation = from->pfnAllocation;
+ to->pfnReallocation = from->pfnReallocation;
+ to->pfnFree = from->pfnFree;
+ to->pfnInternalAllocation = from->pfnInternalAllocation;
+ to->pfnInternalFree = from->pfnInternalFree;
+}
+
+void deepcopy_VkPhysicalDeviceFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceFeatures* from,
+ VkPhysicalDeviceFeatures* to)
+{
+ to->robustBufferAccess = from->robustBufferAccess;
+ to->fullDrawIndexUint32 = from->fullDrawIndexUint32;
+ to->imageCubeArray = from->imageCubeArray;
+ to->independentBlend = from->independentBlend;
+ to->geometryShader = from->geometryShader;
+ to->tessellationShader = from->tessellationShader;
+ to->sampleRateShading = from->sampleRateShading;
+ to->dualSrcBlend = from->dualSrcBlend;
+ to->logicOp = from->logicOp;
+ to->multiDrawIndirect = from->multiDrawIndirect;
+ to->drawIndirectFirstInstance = from->drawIndirectFirstInstance;
+ to->depthClamp = from->depthClamp;
+ to->depthBiasClamp = from->depthBiasClamp;
+ to->fillModeNonSolid = from->fillModeNonSolid;
+ to->depthBounds = from->depthBounds;
+ to->wideLines = from->wideLines;
+ to->largePoints = from->largePoints;
+ to->alphaToOne = from->alphaToOne;
+ to->multiViewport = from->multiViewport;
+ to->samplerAnisotropy = from->samplerAnisotropy;
+ to->textureCompressionETC2 = from->textureCompressionETC2;
+ to->textureCompressionASTC_LDR = from->textureCompressionASTC_LDR;
+ to->textureCompressionBC = from->textureCompressionBC;
+ to->occlusionQueryPrecise = from->occlusionQueryPrecise;
+ to->pipelineStatisticsQuery = from->pipelineStatisticsQuery;
+ to->vertexPipelineStoresAndAtomics = from->vertexPipelineStoresAndAtomics;
+ to->fragmentStoresAndAtomics = from->fragmentStoresAndAtomics;
+ to->shaderTessellationAndGeometryPointSize = from->shaderTessellationAndGeometryPointSize;
+ to->shaderImageGatherExtended = from->shaderImageGatherExtended;
+ to->shaderStorageImageExtendedFormats = from->shaderStorageImageExtendedFormats;
+ to->shaderStorageImageMultisample = from->shaderStorageImageMultisample;
+ to->shaderStorageImageReadWithoutFormat = from->shaderStorageImageReadWithoutFormat;
+ to->shaderStorageImageWriteWithoutFormat = from->shaderStorageImageWriteWithoutFormat;
+ to->shaderUniformBufferArrayDynamicIndexing = from->shaderUniformBufferArrayDynamicIndexing;
+ to->shaderSampledImageArrayDynamicIndexing = from->shaderSampledImageArrayDynamicIndexing;
+ to->shaderStorageBufferArrayDynamicIndexing = from->shaderStorageBufferArrayDynamicIndexing;
+ to->shaderStorageImageArrayDynamicIndexing = from->shaderStorageImageArrayDynamicIndexing;
+ to->shaderClipDistance = from->shaderClipDistance;
+ to->shaderCullDistance = from->shaderCullDistance;
+ to->shaderFloat64 = from->shaderFloat64;
+ to->shaderInt64 = from->shaderInt64;
+ to->shaderInt16 = from->shaderInt16;
+ to->shaderResourceResidency = from->shaderResourceResidency;
+ to->shaderResourceMinLod = from->shaderResourceMinLod;
+ to->sparseBinding = from->sparseBinding;
+ to->sparseResidencyBuffer = from->sparseResidencyBuffer;
+ to->sparseResidencyImage2D = from->sparseResidencyImage2D;
+ to->sparseResidencyImage3D = from->sparseResidencyImage3D;
+ to->sparseResidency2Samples = from->sparseResidency2Samples;
+ to->sparseResidency4Samples = from->sparseResidency4Samples;
+ to->sparseResidency8Samples = from->sparseResidency8Samples;
+ to->sparseResidency16Samples = from->sparseResidency16Samples;
+ to->sparseResidencyAliased = from->sparseResidencyAliased;
+ to->variableMultisampleRate = from->variableMultisampleRate;
+ to->inheritedQueries = from->inheritedQueries;
+}
+
+void deepcopy_VkFormatProperties(
+ Pool* pool,
+ const VkFormatProperties* from,
+ VkFormatProperties* to)
+{
+ to->linearTilingFeatures = from->linearTilingFeatures;
+ to->optimalTilingFeatures = from->optimalTilingFeatures;
+ to->bufferFeatures = from->bufferFeatures;
+}
+
+void deepcopy_VkExtent3D(
+ Pool* pool,
+ const VkExtent3D* from,
+ VkExtent3D* to)
+{
+ to->width = from->width;
+ to->height = from->height;
+ to->depth = from->depth;
+}
+
+void deepcopy_VkImageFormatProperties(
+ Pool* pool,
+ const VkImageFormatProperties* from,
+ VkImageFormatProperties* to)
+{
+ deepcopy_VkExtent3D(pool, &from->maxExtent, (VkExtent3D*)(&to->maxExtent));
+ to->maxMipLevels = from->maxMipLevels;
+ to->maxArrayLayers = from->maxArrayLayers;
+ to->sampleCounts = from->sampleCounts;
+ to->maxResourceSize = from->maxResourceSize;
+}
+
+void deepcopy_VkPhysicalDeviceLimits(
+ Pool* pool,
+ const VkPhysicalDeviceLimits* from,
+ VkPhysicalDeviceLimits* to)
+{
+ to->maxImageDimension1D = from->maxImageDimension1D;
+ to->maxImageDimension2D = from->maxImageDimension2D;
+ to->maxImageDimension3D = from->maxImageDimension3D;
+ to->maxImageDimensionCube = from->maxImageDimensionCube;
+ to->maxImageArrayLayers = from->maxImageArrayLayers;
+ to->maxTexelBufferElements = from->maxTexelBufferElements;
+ to->maxUniformBufferRange = from->maxUniformBufferRange;
+ to->maxStorageBufferRange = from->maxStorageBufferRange;
+ to->maxPushConstantsSize = from->maxPushConstantsSize;
+ to->maxMemoryAllocationCount = from->maxMemoryAllocationCount;
+ to->maxSamplerAllocationCount = from->maxSamplerAllocationCount;
+ to->bufferImageGranularity = from->bufferImageGranularity;
+ to->sparseAddressSpaceSize = from->sparseAddressSpaceSize;
+ to->maxBoundDescriptorSets = from->maxBoundDescriptorSets;
+ to->maxPerStageDescriptorSamplers = from->maxPerStageDescriptorSamplers;
+ to->maxPerStageDescriptorUniformBuffers = from->maxPerStageDescriptorUniformBuffers;
+ to->maxPerStageDescriptorStorageBuffers = from->maxPerStageDescriptorStorageBuffers;
+ to->maxPerStageDescriptorSampledImages = from->maxPerStageDescriptorSampledImages;
+ to->maxPerStageDescriptorStorageImages = from->maxPerStageDescriptorStorageImages;
+ to->maxPerStageDescriptorInputAttachments = from->maxPerStageDescriptorInputAttachments;
+ to->maxPerStageResources = from->maxPerStageResources;
+ to->maxDescriptorSetSamplers = from->maxDescriptorSetSamplers;
+ to->maxDescriptorSetUniformBuffers = from->maxDescriptorSetUniformBuffers;
+ to->maxDescriptorSetUniformBuffersDynamic = from->maxDescriptorSetUniformBuffersDynamic;
+ to->maxDescriptorSetStorageBuffers = from->maxDescriptorSetStorageBuffers;
+ to->maxDescriptorSetStorageBuffersDynamic = from->maxDescriptorSetStorageBuffersDynamic;
+ to->maxDescriptorSetSampledImages = from->maxDescriptorSetSampledImages;
+ to->maxDescriptorSetStorageImages = from->maxDescriptorSetStorageImages;
+ to->maxDescriptorSetInputAttachments = from->maxDescriptorSetInputAttachments;
+ to->maxVertexInputAttributes = from->maxVertexInputAttributes;
+ to->maxVertexInputBindings = from->maxVertexInputBindings;
+ to->maxVertexInputAttributeOffset = from->maxVertexInputAttributeOffset;
+ to->maxVertexInputBindingStride = from->maxVertexInputBindingStride;
+ to->maxVertexOutputComponents = from->maxVertexOutputComponents;
+ to->maxTessellationGenerationLevel = from->maxTessellationGenerationLevel;
+ to->maxTessellationPatchSize = from->maxTessellationPatchSize;
+ to->maxTessellationControlPerVertexInputComponents = from->maxTessellationControlPerVertexInputComponents;
+ to->maxTessellationControlPerVertexOutputComponents = from->maxTessellationControlPerVertexOutputComponents;
+ to->maxTessellationControlPerPatchOutputComponents = from->maxTessellationControlPerPatchOutputComponents;
+ to->maxTessellationControlTotalOutputComponents = from->maxTessellationControlTotalOutputComponents;
+ to->maxTessellationEvaluationInputComponents = from->maxTessellationEvaluationInputComponents;
+ to->maxTessellationEvaluationOutputComponents = from->maxTessellationEvaluationOutputComponents;
+ to->maxGeometryShaderInvocations = from->maxGeometryShaderInvocations;
+ to->maxGeometryInputComponents = from->maxGeometryInputComponents;
+ to->maxGeometryOutputComponents = from->maxGeometryOutputComponents;
+ to->maxGeometryOutputVertices = from->maxGeometryOutputVertices;
+ to->maxGeometryTotalOutputComponents = from->maxGeometryTotalOutputComponents;
+ to->maxFragmentInputComponents = from->maxFragmentInputComponents;
+ to->maxFragmentOutputAttachments = from->maxFragmentOutputAttachments;
+ to->maxFragmentDualSrcAttachments = from->maxFragmentDualSrcAttachments;
+ to->maxFragmentCombinedOutputResources = from->maxFragmentCombinedOutputResources;
+ to->maxComputeSharedMemorySize = from->maxComputeSharedMemorySize;
+ memcpy(to->maxComputeWorkGroupCount, from->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
+ to->maxComputeWorkGroupInvocations = from->maxComputeWorkGroupInvocations;
+ memcpy(to->maxComputeWorkGroupSize, from->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
+ to->subPixelPrecisionBits = from->subPixelPrecisionBits;
+ to->subTexelPrecisionBits = from->subTexelPrecisionBits;
+ to->mipmapPrecisionBits = from->mipmapPrecisionBits;
+ to->maxDrawIndexedIndexValue = from->maxDrawIndexedIndexValue;
+ to->maxDrawIndirectCount = from->maxDrawIndirectCount;
+ to->maxSamplerLodBias = from->maxSamplerLodBias;
+ to->maxSamplerAnisotropy = from->maxSamplerAnisotropy;
+ to->maxViewports = from->maxViewports;
+ memcpy(to->maxViewportDimensions, from->maxViewportDimensions, 2 * sizeof(uint32_t));
+ memcpy(to->viewportBoundsRange, from->viewportBoundsRange, 2 * sizeof(float));
+ to->viewportSubPixelBits = from->viewportSubPixelBits;
+ to->minMemoryMapAlignment = from->minMemoryMapAlignment;
+ to->minTexelBufferOffsetAlignment = from->minTexelBufferOffsetAlignment;
+ to->minUniformBufferOffsetAlignment = from->minUniformBufferOffsetAlignment;
+ to->minStorageBufferOffsetAlignment = from->minStorageBufferOffsetAlignment;
+ to->minTexelOffset = from->minTexelOffset;
+ to->maxTexelOffset = from->maxTexelOffset;
+ to->minTexelGatherOffset = from->minTexelGatherOffset;
+ to->maxTexelGatherOffset = from->maxTexelGatherOffset;
+ to->minInterpolationOffset = from->minInterpolationOffset;
+ to->maxInterpolationOffset = from->maxInterpolationOffset;
+ to->subPixelInterpolationOffsetBits = from->subPixelInterpolationOffsetBits;
+ to->maxFramebufferWidth = from->maxFramebufferWidth;
+ to->maxFramebufferHeight = from->maxFramebufferHeight;
+ to->maxFramebufferLayers = from->maxFramebufferLayers;
+ to->framebufferColorSampleCounts = from->framebufferColorSampleCounts;
+ to->framebufferDepthSampleCounts = from->framebufferDepthSampleCounts;
+ to->framebufferStencilSampleCounts = from->framebufferStencilSampleCounts;
+ to->framebufferNoAttachmentsSampleCounts = from->framebufferNoAttachmentsSampleCounts;
+ to->maxColorAttachments = from->maxColorAttachments;
+ to->sampledImageColorSampleCounts = from->sampledImageColorSampleCounts;
+ to->sampledImageIntegerSampleCounts = from->sampledImageIntegerSampleCounts;
+ to->sampledImageDepthSampleCounts = from->sampledImageDepthSampleCounts;
+ to->sampledImageStencilSampleCounts = from->sampledImageStencilSampleCounts;
+ to->storageImageSampleCounts = from->storageImageSampleCounts;
+ to->maxSampleMaskWords = from->maxSampleMaskWords;
+ to->timestampComputeAndGraphics = from->timestampComputeAndGraphics;
+ to->timestampPeriod = from->timestampPeriod;
+ to->maxClipDistances = from->maxClipDistances;
+ to->maxCullDistances = from->maxCullDistances;
+ to->maxCombinedClipAndCullDistances = from->maxCombinedClipAndCullDistances;
+ to->discreteQueuePriorities = from->discreteQueuePriorities;
+ memcpy(to->pointSizeRange, from->pointSizeRange, 2 * sizeof(float));
+ memcpy(to->lineWidthRange, from->lineWidthRange, 2 * sizeof(float));
+ to->pointSizeGranularity = from->pointSizeGranularity;
+ to->lineWidthGranularity = from->lineWidthGranularity;
+ to->strictLines = from->strictLines;
+ to->standardSampleLocations = from->standardSampleLocations;
+ to->optimalBufferCopyOffsetAlignment = from->optimalBufferCopyOffsetAlignment;
+ to->optimalBufferCopyRowPitchAlignment = from->optimalBufferCopyRowPitchAlignment;
+ to->nonCoherentAtomSize = from->nonCoherentAtomSize;
+}
+
+void deepcopy_VkPhysicalDeviceSparseProperties(
+ Pool* pool,
+ const VkPhysicalDeviceSparseProperties* from,
+ VkPhysicalDeviceSparseProperties* to)
+{
+ to->residencyStandard2DBlockShape = from->residencyStandard2DBlockShape;
+ to->residencyStandard2DMultisampleBlockShape = from->residencyStandard2DMultisampleBlockShape;
+ to->residencyStandard3DBlockShape = from->residencyStandard3DBlockShape;
+ to->residencyAlignedMipSize = from->residencyAlignedMipSize;
+ to->residencyNonResidentStrict = from->residencyNonResidentStrict;
+}
+
+void deepcopy_VkPhysicalDeviceProperties(
+ Pool* pool,
+ const VkPhysicalDeviceProperties* from,
+ VkPhysicalDeviceProperties* to)
+{
+ to->apiVersion = from->apiVersion;
+ to->driverVersion = from->driverVersion;
+ to->vendorID = from->vendorID;
+ to->deviceID = from->deviceID;
+ to->deviceType = from->deviceType;
+ memcpy(to->deviceName, from->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
+ memcpy(to->pipelineCacheUUID, from->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ deepcopy_VkPhysicalDeviceLimits(pool, &from->limits, (VkPhysicalDeviceLimits*)(&to->limits));
+ deepcopy_VkPhysicalDeviceSparseProperties(pool, &from->sparseProperties, (VkPhysicalDeviceSparseProperties*)(&to->sparseProperties));
+}
+
+void deepcopy_VkQueueFamilyProperties(
+ Pool* pool,
+ const VkQueueFamilyProperties* from,
+ VkQueueFamilyProperties* to)
+{
+ to->queueFlags = from->queueFlags;
+ to->queueCount = from->queueCount;
+ to->timestampValidBits = from->timestampValidBits;
+ deepcopy_VkExtent3D(pool, &from->minImageTransferGranularity, (VkExtent3D*)(&to->minImageTransferGranularity));
+}
+
+void deepcopy_VkMemoryType(
+ Pool* pool,
+ const VkMemoryType* from,
+ VkMemoryType* to)
+{
+ to->propertyFlags = from->propertyFlags;
+ to->heapIndex = from->heapIndex;
+}
+
+void deepcopy_VkMemoryHeap(
+ Pool* pool,
+ const VkMemoryHeap* from,
+ VkMemoryHeap* to)
+{
+ to->size = from->size;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkPhysicalDeviceMemoryProperties(
+ Pool* pool,
+ const VkPhysicalDeviceMemoryProperties* from,
+ VkPhysicalDeviceMemoryProperties* to)
+{
+ to->memoryTypeCount = from->memoryTypeCount;
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
+ {
+ deepcopy_VkMemoryType(pool, from->memoryTypes + i, (VkMemoryType*)(to->memoryTypes + i));
+ }
+ to->memoryHeapCount = from->memoryHeapCount;
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
+ {
+ deepcopy_VkMemoryHeap(pool, from->memoryHeaps + i, (VkMemoryHeap*)(to->memoryHeaps + i));
+ }
+}
+
+void deepcopy_VkDeviceQueueCreateInfo(
+ Pool* pool,
+ const VkDeviceQueueCreateInfo* from,
+ VkDeviceQueueCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->queueFamilyIndex = from->queueFamilyIndex;
+ to->queueCount = from->queueCount;
+ to->pQueuePriorities = nullptr;
+ if (from->pQueuePriorities)
+ {
+ to->pQueuePriorities = (float*)pool->dupArray(from->pQueuePriorities, from->queueCount * sizeof(const float));
+ }
+}
+
+void deepcopy_VkDeviceCreateInfo(
+ Pool* pool,
+ const VkDeviceCreateInfo* from,
+ VkDeviceCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->queueCreateInfoCount = from->queueCreateInfoCount;
+ to->pQueueCreateInfos = nullptr;
+ if (from->pQueueCreateInfos)
+ {
+ to->pQueueCreateInfos = (VkDeviceQueueCreateInfo*)pool->alloc(from->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
+ to->queueCreateInfoCount = from->queueCreateInfoCount;
+ for (uint32_t i = 0; i < (uint32_t)from->queueCreateInfoCount; ++i)
+ {
+ deepcopy_VkDeviceQueueCreateInfo(pool, from->pQueueCreateInfos + i, (VkDeviceQueueCreateInfo*)(to->pQueueCreateInfos + i));
+ }
+ }
+ to->enabledLayerCount = from->enabledLayerCount;
+ to->ppEnabledLayerNames = nullptr;
+ if (from->ppEnabledLayerNames && from->enabledLayerCount)
+ {
+ to->ppEnabledLayerNames = pool->strDupArray(from->ppEnabledLayerNames, from->enabledLayerCount);
+ }
+ to->enabledExtensionCount = from->enabledExtensionCount;
+ to->ppEnabledExtensionNames = nullptr;
+ if (from->ppEnabledExtensionNames && from->enabledExtensionCount)
+ {
+ to->ppEnabledExtensionNames = pool->strDupArray(from->ppEnabledExtensionNames, from->enabledExtensionCount);
+ }
+ to->pEnabledFeatures = nullptr;
+ if (from->pEnabledFeatures)
+ {
+ to->pEnabledFeatures = (VkPhysicalDeviceFeatures*)pool->alloc(sizeof(const VkPhysicalDeviceFeatures));
+ deepcopy_VkPhysicalDeviceFeatures(pool, from->pEnabledFeatures, (VkPhysicalDeviceFeatures*)(to->pEnabledFeatures));
+ }
+}
+
+void deepcopy_VkExtensionProperties(
+ Pool* pool,
+ const VkExtensionProperties* from,
+ VkExtensionProperties* to)
+{
+ memcpy(to->extensionName, from->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ to->specVersion = from->specVersion;
+}
+
+void deepcopy_VkLayerProperties(
+ Pool* pool,
+ const VkLayerProperties* from,
+ VkLayerProperties* to)
+{
+ memcpy(to->layerName, from->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ to->specVersion = from->specVersion;
+ to->implementationVersion = from->implementationVersion;
+ memcpy(to->description, from->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
+}
+
+void deepcopy_VkSubmitInfo(
+ Pool* pool,
+ const VkSubmitInfo* from,
+ VkSubmitInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->waitSemaphoreCount = from->waitSemaphoreCount;
+ to->pWaitSemaphores = nullptr;
+ if (from->pWaitSemaphores)
+ {
+ to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
+ }
+ to->pWaitDstStageMask = nullptr;
+ if (from->pWaitDstStageMask)
+ {
+ to->pWaitDstStageMask = (VkPipelineStageFlags*)pool->dupArray(from->pWaitDstStageMask, from->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
+ }
+ to->commandBufferCount = from->commandBufferCount;
+ to->pCommandBuffers = nullptr;
+ if (from->pCommandBuffers)
+ {
+ to->pCommandBuffers = (VkCommandBuffer*)pool->dupArray(from->pCommandBuffers, from->commandBufferCount * sizeof(const VkCommandBuffer));
+ }
+ to->signalSemaphoreCount = from->signalSemaphoreCount;
+ to->pSignalSemaphores = nullptr;
+ if (from->pSignalSemaphores)
+ {
+ to->pSignalSemaphores = (VkSemaphore*)pool->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
+ }
+}
+
+void deepcopy_VkMemoryAllocateInfo(
+ Pool* pool,
+ const VkMemoryAllocateInfo* from,
+ VkMemoryAllocateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->allocationSize = from->allocationSize;
+ to->memoryTypeIndex = from->memoryTypeIndex;
+}
+
+void deepcopy_VkMappedMemoryRange(
+ Pool* pool,
+ const VkMappedMemoryRange* from,
+ VkMappedMemoryRange* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memory = from->memory;
+ to->offset = from->offset;
+ to->size = from->size;
+}
+
+void deepcopy_VkMemoryRequirements(
+ Pool* pool,
+ const VkMemoryRequirements* from,
+ VkMemoryRequirements* to)
+{
+ to->size = from->size;
+ to->alignment = from->alignment;
+ to->memoryTypeBits = from->memoryTypeBits;
+}
+
+void deepcopy_VkSparseImageFormatProperties(
+ Pool* pool,
+ const VkSparseImageFormatProperties* from,
+ VkSparseImageFormatProperties* to)
+{
+ to->aspectMask = from->aspectMask;
+ deepcopy_VkExtent3D(pool, &from->imageGranularity, (VkExtent3D*)(&to->imageGranularity));
+ to->flags = from->flags;
+}
+
+void deepcopy_VkSparseImageMemoryRequirements(
+ Pool* pool,
+ const VkSparseImageMemoryRequirements* from,
+ VkSparseImageMemoryRequirements* to)
+{
+ deepcopy_VkSparseImageFormatProperties(pool, &from->formatProperties, (VkSparseImageFormatProperties*)(&to->formatProperties));
+ to->imageMipTailFirstLod = from->imageMipTailFirstLod;
+ to->imageMipTailSize = from->imageMipTailSize;
+ to->imageMipTailOffset = from->imageMipTailOffset;
+ to->imageMipTailStride = from->imageMipTailStride;
+}
+
+void deepcopy_VkSparseMemoryBind(
+ Pool* pool,
+ const VkSparseMemoryBind* from,
+ VkSparseMemoryBind* to)
+{
+ to->resourceOffset = from->resourceOffset;
+ to->size = from->size;
+ to->memory = from->memory;
+ to->memoryOffset = from->memoryOffset;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkSparseBufferMemoryBindInfo(
+ Pool* pool,
+ const VkSparseBufferMemoryBindInfo* from,
+ VkSparseBufferMemoryBindInfo* to)
+{
+ to->buffer = from->buffer;
+ to->bindCount = from->bindCount;
+ to->pBinds = nullptr;
+ if (from->pBinds)
+ {
+ to->pBinds = (VkSparseMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
+ to->bindCount = from->bindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
+ {
+ deepcopy_VkSparseMemoryBind(pool, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
+ }
+ }
+}
+
+void deepcopy_VkSparseImageOpaqueMemoryBindInfo(
+ Pool* pool,
+ const VkSparseImageOpaqueMemoryBindInfo* from,
+ VkSparseImageOpaqueMemoryBindInfo* to)
+{
+ to->image = from->image;
+ to->bindCount = from->bindCount;
+ to->pBinds = nullptr;
+ if (from->pBinds)
+ {
+ to->pBinds = (VkSparseMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseMemoryBind));
+ to->bindCount = from->bindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
+ {
+ deepcopy_VkSparseMemoryBind(pool, from->pBinds + i, (VkSparseMemoryBind*)(to->pBinds + i));
+ }
+ }
+}
+
+void deepcopy_VkImageSubresource(
+ Pool* pool,
+ const VkImageSubresource* from,
+ VkImageSubresource* to)
+{
+ to->aspectMask = from->aspectMask;
+ to->mipLevel = from->mipLevel;
+ to->arrayLayer = from->arrayLayer;
+}
+
+void deepcopy_VkOffset3D(
+ Pool* pool,
+ const VkOffset3D* from,
+ VkOffset3D* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+ to->z = from->z;
+}
+
+void deepcopy_VkSparseImageMemoryBind(
+ Pool* pool,
+ const VkSparseImageMemoryBind* from,
+ VkSparseImageMemoryBind* to)
+{
+ deepcopy_VkImageSubresource(pool, &from->subresource, (VkImageSubresource*)(&to->subresource));
+ deepcopy_VkOffset3D(pool, &from->offset, (VkOffset3D*)(&to->offset));
+ deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
+ to->memory = from->memory;
+ to->memoryOffset = from->memoryOffset;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkSparseImageMemoryBindInfo(
+ Pool* pool,
+ const VkSparseImageMemoryBindInfo* from,
+ VkSparseImageMemoryBindInfo* to)
+{
+ to->image = from->image;
+ to->bindCount = from->bindCount;
+ to->pBinds = nullptr;
+ if (from->pBinds)
+ {
+ to->pBinds = (VkSparseImageMemoryBind*)pool->alloc(from->bindCount * sizeof(const VkSparseImageMemoryBind));
+ to->bindCount = from->bindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->bindCount; ++i)
+ {
+ deepcopy_VkSparseImageMemoryBind(pool, from->pBinds + i, (VkSparseImageMemoryBind*)(to->pBinds + i));
+ }
+ }
+}
+
+void deepcopy_VkBindSparseInfo(
+ Pool* pool,
+ const VkBindSparseInfo* from,
+ VkBindSparseInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->waitSemaphoreCount = from->waitSemaphoreCount;
+ to->pWaitSemaphores = nullptr;
+ if (from->pWaitSemaphores)
+ {
+ to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
+ }
+ to->bufferBindCount = from->bufferBindCount;
+ to->pBufferBinds = nullptr;
+ if (from->pBufferBinds)
+ {
+ to->pBufferBinds = (VkSparseBufferMemoryBindInfo*)pool->alloc(from->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
+ to->bufferBindCount = from->bufferBindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->bufferBindCount; ++i)
+ {
+ deepcopy_VkSparseBufferMemoryBindInfo(pool, from->pBufferBinds + i, (VkSparseBufferMemoryBindInfo*)(to->pBufferBinds + i));
+ }
+ }
+ to->imageOpaqueBindCount = from->imageOpaqueBindCount;
+ to->pImageOpaqueBinds = nullptr;
+ if (from->pImageOpaqueBinds)
+ {
+ to->pImageOpaqueBinds = (VkSparseImageOpaqueMemoryBindInfo*)pool->alloc(from->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
+ to->imageOpaqueBindCount = from->imageOpaqueBindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->imageOpaqueBindCount; ++i)
+ {
+ deepcopy_VkSparseImageOpaqueMemoryBindInfo(pool, from->pImageOpaqueBinds + i, (VkSparseImageOpaqueMemoryBindInfo*)(to->pImageOpaqueBinds + i));
+ }
+ }
+ to->imageBindCount = from->imageBindCount;
+ to->pImageBinds = nullptr;
+ if (from->pImageBinds)
+ {
+ to->pImageBinds = (VkSparseImageMemoryBindInfo*)pool->alloc(from->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
+ to->imageBindCount = from->imageBindCount;
+ for (uint32_t i = 0; i < (uint32_t)from->imageBindCount; ++i)
+ {
+ deepcopy_VkSparseImageMemoryBindInfo(pool, from->pImageBinds + i, (VkSparseImageMemoryBindInfo*)(to->pImageBinds + i));
+ }
+ }
+ to->signalSemaphoreCount = from->signalSemaphoreCount;
+ to->pSignalSemaphores = nullptr;
+ if (from->pSignalSemaphores)
+ {
+ to->pSignalSemaphores = (VkSemaphore*)pool->dupArray(from->pSignalSemaphores, from->signalSemaphoreCount * sizeof(const VkSemaphore));
+ }
+}
+
+void deepcopy_VkFenceCreateInfo(
+ Pool* pool,
+ const VkFenceCreateInfo* from,
+ VkFenceCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkSemaphoreCreateInfo(
+ Pool* pool,
+ const VkSemaphoreCreateInfo* from,
+ VkSemaphoreCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkEventCreateInfo(
+ Pool* pool,
+ const VkEventCreateInfo* from,
+ VkEventCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkQueryPoolCreateInfo(
+ Pool* pool,
+ const VkQueryPoolCreateInfo* from,
+ VkQueryPoolCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->queryType = from->queryType;
+ to->queryCount = from->queryCount;
+ to->pipelineStatistics = from->pipelineStatistics;
+}
+
+void deepcopy_VkBufferCreateInfo(
+ Pool* pool,
+ const VkBufferCreateInfo* from,
+ VkBufferCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->size = from->size;
+ to->usage = from->usage;
+ to->sharingMode = from->sharingMode;
+ to->queueFamilyIndexCount = from->queueFamilyIndexCount;
+ to->pQueueFamilyIndices = nullptr;
+ if (from->pQueueFamilyIndices)
+ {
+ to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkBufferViewCreateInfo(
+ Pool* pool,
+ const VkBufferViewCreateInfo* from,
+ VkBufferViewCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->buffer = from->buffer;
+ to->format = from->format;
+ to->offset = from->offset;
+ to->range = from->range;
+}
+
+void deepcopy_VkImageCreateInfo(
+ Pool* pool,
+ const VkImageCreateInfo* from,
+ VkImageCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->imageType = from->imageType;
+ to->format = from->format;
+ deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
+ to->mipLevels = from->mipLevels;
+ to->arrayLayers = from->arrayLayers;
+ to->samples = from->samples;
+ to->tiling = from->tiling;
+ to->usage = from->usage;
+ to->sharingMode = from->sharingMode;
+ to->queueFamilyIndexCount = from->queueFamilyIndexCount;
+ to->pQueueFamilyIndices = nullptr;
+ if (from->pQueueFamilyIndices)
+ {
+ to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ to->initialLayout = from->initialLayout;
+}
+
+void deepcopy_VkSubresourceLayout(
+ Pool* pool,
+ const VkSubresourceLayout* from,
+ VkSubresourceLayout* to)
+{
+ to->offset = from->offset;
+ to->size = from->size;
+ to->rowPitch = from->rowPitch;
+ to->arrayPitch = from->arrayPitch;
+ to->depthPitch = from->depthPitch;
+}
+
+void deepcopy_VkComponentMapping(
+ Pool* pool,
+ const VkComponentMapping* from,
+ VkComponentMapping* to)
+{
+ to->r = from->r;
+ to->g = from->g;
+ to->b = from->b;
+ to->a = from->a;
+}
+
+void deepcopy_VkImageSubresourceRange(
+ Pool* pool,
+ const VkImageSubresourceRange* from,
+ VkImageSubresourceRange* to)
+{
+ to->aspectMask = from->aspectMask;
+ to->baseMipLevel = from->baseMipLevel;
+ to->levelCount = from->levelCount;
+ to->baseArrayLayer = from->baseArrayLayer;
+ to->layerCount = from->layerCount;
+}
+
+void deepcopy_VkImageViewCreateInfo(
+ Pool* pool,
+ const VkImageViewCreateInfo* from,
+ VkImageViewCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->image = from->image;
+ to->viewType = from->viewType;
+ to->format = from->format;
+ deepcopy_VkComponentMapping(pool, &from->components, (VkComponentMapping*)(&to->components));
+ deepcopy_VkImageSubresourceRange(pool, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
+}
+
+void deepcopy_VkShaderModuleCreateInfo(
+ Pool* pool,
+ const VkShaderModuleCreateInfo* from,
+ VkShaderModuleCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->codeSize = from->codeSize;
+ to->pCode = nullptr;
+ if (from->pCode)
+ {
+ to->pCode = (uint32_t*)pool->dupArray(from->pCode, (from->codeSize / 4) * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkPipelineCacheCreateInfo(
+ Pool* pool,
+ const VkPipelineCacheCreateInfo* from,
+ VkPipelineCacheCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->initialDataSize = from->initialDataSize;
+ to->pInitialData = nullptr;
+ if (from->pInitialData)
+ {
+ to->pInitialData = (void*)pool->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
+ }
+}
+
+void deepcopy_VkSpecializationMapEntry(
+ Pool* pool,
+ const VkSpecializationMapEntry* from,
+ VkSpecializationMapEntry* to)
+{
+ to->constantID = from->constantID;
+ to->offset = from->offset;
+ to->size = from->size;
+}
+
+void deepcopy_VkSpecializationInfo(
+ Pool* pool,
+ const VkSpecializationInfo* from,
+ VkSpecializationInfo* to)
+{
+ to->mapEntryCount = from->mapEntryCount;
+ to->pMapEntries = nullptr;
+ if (from->pMapEntries)
+ {
+ to->pMapEntries = (VkSpecializationMapEntry*)pool->alloc(from->mapEntryCount * sizeof(const VkSpecializationMapEntry));
+ to->mapEntryCount = from->mapEntryCount;
+ for (uint32_t i = 0; i < (uint32_t)from->mapEntryCount; ++i)
+ {
+ deepcopy_VkSpecializationMapEntry(pool, from->pMapEntries + i, (VkSpecializationMapEntry*)(to->pMapEntries + i));
+ }
+ }
+ to->dataSize = from->dataSize;
+ to->pData = nullptr;
+ if (from->pData)
+ {
+ to->pData = (void*)pool->dupArray(from->pData, from->dataSize * sizeof(const uint8_t));
+ }
+}
+
+void deepcopy_VkPipelineShaderStageCreateInfo(
+ Pool* pool,
+ const VkPipelineShaderStageCreateInfo* from,
+ VkPipelineShaderStageCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->stage = from->stage;
+ to->module = from->module;
+ to->pName = nullptr;
+ if (from->pName)
+ {
+ to->pName = pool->strDup(from->pName);
+ }
+ to->pSpecializationInfo = nullptr;
+ if (from->pSpecializationInfo)
+ {
+ to->pSpecializationInfo = (VkSpecializationInfo*)pool->alloc(sizeof(const VkSpecializationInfo));
+ deepcopy_VkSpecializationInfo(pool, from->pSpecializationInfo, (VkSpecializationInfo*)(to->pSpecializationInfo));
+ }
+}
+
+void deepcopy_VkVertexInputBindingDescription(
+ Pool* pool,
+ const VkVertexInputBindingDescription* from,
+ VkVertexInputBindingDescription* to)
+{
+ to->binding = from->binding;
+ to->stride = from->stride;
+ to->inputRate = from->inputRate;
+}
+
+void deepcopy_VkVertexInputAttributeDescription(
+ Pool* pool,
+ const VkVertexInputAttributeDescription* from,
+ VkVertexInputAttributeDescription* to)
+{
+ to->location = from->location;
+ to->binding = from->binding;
+ to->format = from->format;
+ to->offset = from->offset;
+}
+
+void deepcopy_VkPipelineVertexInputStateCreateInfo(
+ Pool* pool,
+ const VkPipelineVertexInputStateCreateInfo* from,
+ VkPipelineVertexInputStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->vertexBindingDescriptionCount = from->vertexBindingDescriptionCount;
+ to->pVertexBindingDescriptions = nullptr;
+ if (from->pVertexBindingDescriptions)
+ {
+ to->pVertexBindingDescriptions = (VkVertexInputBindingDescription*)pool->alloc(from->vertexBindingDescriptionCount * sizeof(const VkVertexInputBindingDescription));
+ to->vertexBindingDescriptionCount = from->vertexBindingDescriptionCount;
+ for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDescriptionCount; ++i)
+ {
+ deepcopy_VkVertexInputBindingDescription(pool, from->pVertexBindingDescriptions + i, (VkVertexInputBindingDescription*)(to->pVertexBindingDescriptions + i));
+ }
+ }
+ to->vertexAttributeDescriptionCount = from->vertexAttributeDescriptionCount;
+ to->pVertexAttributeDescriptions = nullptr;
+ if (from->pVertexAttributeDescriptions)
+ {
+ to->pVertexAttributeDescriptions = (VkVertexInputAttributeDescription*)pool->alloc(from->vertexAttributeDescriptionCount * sizeof(const VkVertexInputAttributeDescription));
+ to->vertexAttributeDescriptionCount = from->vertexAttributeDescriptionCount;
+ for (uint32_t i = 0; i < (uint32_t)from->vertexAttributeDescriptionCount; ++i)
+ {
+ deepcopy_VkVertexInputAttributeDescription(pool, from->pVertexAttributeDescriptions + i, (VkVertexInputAttributeDescription*)(to->pVertexAttributeDescriptions + i));
+ }
+ }
+}
+
+void deepcopy_VkPipelineInputAssemblyStateCreateInfo(
+ Pool* pool,
+ const VkPipelineInputAssemblyStateCreateInfo* from,
+ VkPipelineInputAssemblyStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->topology = from->topology;
+ to->primitiveRestartEnable = from->primitiveRestartEnable;
+}
+
+void deepcopy_VkPipelineTessellationStateCreateInfo(
+ Pool* pool,
+ const VkPipelineTessellationStateCreateInfo* from,
+ VkPipelineTessellationStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->patchControlPoints = from->patchControlPoints;
+}
+
+void deepcopy_VkViewport(
+ Pool* pool,
+ const VkViewport* from,
+ VkViewport* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+ to->width = from->width;
+ to->height = from->height;
+ to->minDepth = from->minDepth;
+ to->maxDepth = from->maxDepth;
+}
+
+void deepcopy_VkOffset2D(
+ Pool* pool,
+ const VkOffset2D* from,
+ VkOffset2D* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+}
+
+void deepcopy_VkExtent2D(
+ Pool* pool,
+ const VkExtent2D* from,
+ VkExtent2D* to)
+{
+ to->width = from->width;
+ to->height = from->height;
+}
+
+void deepcopy_VkRect2D(
+ Pool* pool,
+ const VkRect2D* from,
+ VkRect2D* to)
+{
+ deepcopy_VkOffset2D(pool, &from->offset, (VkOffset2D*)(&to->offset));
+ deepcopy_VkExtent2D(pool, &from->extent, (VkExtent2D*)(&to->extent));
+}
+
+void deepcopy_VkPipelineViewportStateCreateInfo(
+ Pool* pool,
+ const VkPipelineViewportStateCreateInfo* from,
+ VkPipelineViewportStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->viewportCount = from->viewportCount;
+ to->pViewports = nullptr;
+ if (from->pViewports)
+ {
+ to->pViewports = (VkViewport*)pool->alloc(from->viewportCount * sizeof(const VkViewport));
+ to->viewportCount = from->viewportCount;
+ for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
+ {
+ deepcopy_VkViewport(pool, from->pViewports + i, (VkViewport*)(to->pViewports + i));
+ }
+ }
+ to->scissorCount = from->scissorCount;
+ to->pScissors = nullptr;
+ if (from->pScissors)
+ {
+ to->pScissors = (VkRect2D*)pool->alloc(from->scissorCount * sizeof(const VkRect2D));
+ to->scissorCount = from->scissorCount;
+ for (uint32_t i = 0; i < (uint32_t)from->scissorCount; ++i)
+ {
+ deepcopy_VkRect2D(pool, from->pScissors + i, (VkRect2D*)(to->pScissors + i));
+ }
+ }
+}
+
+void deepcopy_VkPipelineRasterizationStateCreateInfo(
+ Pool* pool,
+ const VkPipelineRasterizationStateCreateInfo* from,
+ VkPipelineRasterizationStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->depthClampEnable = from->depthClampEnable;
+ to->rasterizerDiscardEnable = from->rasterizerDiscardEnable;
+ to->polygonMode = from->polygonMode;
+ to->cullMode = from->cullMode;
+ to->frontFace = from->frontFace;
+ to->depthBiasEnable = from->depthBiasEnable;
+ to->depthBiasConstantFactor = from->depthBiasConstantFactor;
+ to->depthBiasClamp = from->depthBiasClamp;
+ to->depthBiasSlopeFactor = from->depthBiasSlopeFactor;
+ to->lineWidth = from->lineWidth;
+}
+
+void deepcopy_VkPipelineMultisampleStateCreateInfo(
+ Pool* pool,
+ const VkPipelineMultisampleStateCreateInfo* from,
+ VkPipelineMultisampleStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->rasterizationSamples = from->rasterizationSamples;
+ to->sampleShadingEnable = from->sampleShadingEnable;
+ to->minSampleShading = from->minSampleShading;
+ to->pSampleMask = nullptr;
+ if (from->pSampleMask)
+ {
+ to->pSampleMask = (VkSampleMask*)pool->dupArray(from->pSampleMask, (((from->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
+ }
+ to->alphaToCoverageEnable = from->alphaToCoverageEnable;
+ to->alphaToOneEnable = from->alphaToOneEnable;
+}
+
+void deepcopy_VkStencilOpState(
+ Pool* pool,
+ const VkStencilOpState* from,
+ VkStencilOpState* to)
+{
+ to->failOp = from->failOp;
+ to->passOp = from->passOp;
+ to->depthFailOp = from->depthFailOp;
+ to->compareOp = from->compareOp;
+ to->compareMask = from->compareMask;
+ to->writeMask = from->writeMask;
+ to->reference = from->reference;
+}
+
+void deepcopy_VkPipelineDepthStencilStateCreateInfo(
+ Pool* pool,
+ const VkPipelineDepthStencilStateCreateInfo* from,
+ VkPipelineDepthStencilStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->depthTestEnable = from->depthTestEnable;
+ to->depthWriteEnable = from->depthWriteEnable;
+ to->depthCompareOp = from->depthCompareOp;
+ to->depthBoundsTestEnable = from->depthBoundsTestEnable;
+ to->stencilTestEnable = from->stencilTestEnable;
+ deepcopy_VkStencilOpState(pool, &from->front, (VkStencilOpState*)(&to->front));
+ deepcopy_VkStencilOpState(pool, &from->back, (VkStencilOpState*)(&to->back));
+ to->minDepthBounds = from->minDepthBounds;
+ to->maxDepthBounds = from->maxDepthBounds;
+}
+
+void deepcopy_VkPipelineColorBlendAttachmentState(
+ Pool* pool,
+ const VkPipelineColorBlendAttachmentState* from,
+ VkPipelineColorBlendAttachmentState* to)
+{
+ to->blendEnable = from->blendEnable;
+ to->srcColorBlendFactor = from->srcColorBlendFactor;
+ to->dstColorBlendFactor = from->dstColorBlendFactor;
+ to->colorBlendOp = from->colorBlendOp;
+ to->srcAlphaBlendFactor = from->srcAlphaBlendFactor;
+ to->dstAlphaBlendFactor = from->dstAlphaBlendFactor;
+ to->alphaBlendOp = from->alphaBlendOp;
+ to->colorWriteMask = from->colorWriteMask;
+}
+
+void deepcopy_VkPipelineColorBlendStateCreateInfo(
+ Pool* pool,
+ const VkPipelineColorBlendStateCreateInfo* from,
+ VkPipelineColorBlendStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->logicOpEnable = from->logicOpEnable;
+ to->logicOp = from->logicOp;
+ to->attachmentCount = from->attachmentCount;
+ to->pAttachments = nullptr;
+ if (from->pAttachments)
+ {
+ to->pAttachments = (VkPipelineColorBlendAttachmentState*)pool->alloc(from->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
+ to->attachmentCount = from->attachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
+ {
+ deepcopy_VkPipelineColorBlendAttachmentState(pool, from->pAttachments + i, (VkPipelineColorBlendAttachmentState*)(to->pAttachments + i));
+ }
+ }
+ memcpy(to->blendConstants, from->blendConstants, 4 * sizeof(float));
+}
+
+void deepcopy_VkPipelineDynamicStateCreateInfo(
+ Pool* pool,
+ const VkPipelineDynamicStateCreateInfo* from,
+ VkPipelineDynamicStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->dynamicStateCount = from->dynamicStateCount;
+ to->pDynamicStates = nullptr;
+ if (from->pDynamicStates)
+ {
+ to->pDynamicStates = (VkDynamicState*)pool->dupArray(from->pDynamicStates, from->dynamicStateCount * sizeof(const VkDynamicState));
+ }
+}
+
+void deepcopy_VkGraphicsPipelineCreateInfo(
+ Pool* pool,
+ const VkGraphicsPipelineCreateInfo* from,
+ VkGraphicsPipelineCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->stageCount = from->stageCount;
+ to->pStages = nullptr;
+ if (from->pStages)
+ {
+ to->pStages = (VkPipelineShaderStageCreateInfo*)pool->alloc(from->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
+ to->stageCount = from->stageCount;
+ for (uint32_t i = 0; i < (uint32_t)from->stageCount; ++i)
+ {
+ deepcopy_VkPipelineShaderStageCreateInfo(pool, from->pStages + i, (VkPipelineShaderStageCreateInfo*)(to->pStages + i));
+ }
+ }
+ to->pVertexInputState = nullptr;
+ if (from->pVertexInputState)
+ {
+ to->pVertexInputState = (VkPipelineVertexInputStateCreateInfo*)pool->alloc(sizeof(const VkPipelineVertexInputStateCreateInfo));
+ deepcopy_VkPipelineVertexInputStateCreateInfo(pool, from->pVertexInputState, (VkPipelineVertexInputStateCreateInfo*)(to->pVertexInputState));
+ }
+ to->pInputAssemblyState = nullptr;
+ if (from->pInputAssemblyState)
+ {
+ to->pInputAssemblyState = (VkPipelineInputAssemblyStateCreateInfo*)pool->alloc(sizeof(const VkPipelineInputAssemblyStateCreateInfo));
+ deepcopy_VkPipelineInputAssemblyStateCreateInfo(pool, from->pInputAssemblyState, (VkPipelineInputAssemblyStateCreateInfo*)(to->pInputAssemblyState));
+ }
+ to->pTessellationState = nullptr;
+ if (from->pTessellationState)
+ {
+ to->pTessellationState = (VkPipelineTessellationStateCreateInfo*)pool->alloc(sizeof(const VkPipelineTessellationStateCreateInfo));
+ deepcopy_VkPipelineTessellationStateCreateInfo(pool, from->pTessellationState, (VkPipelineTessellationStateCreateInfo*)(to->pTessellationState));
+ }
+ to->pViewportState = nullptr;
+ if (from->pViewportState)
+ {
+ to->pViewportState = (VkPipelineViewportStateCreateInfo*)pool->alloc(sizeof(const VkPipelineViewportStateCreateInfo));
+ deepcopy_VkPipelineViewportStateCreateInfo(pool, from->pViewportState, (VkPipelineViewportStateCreateInfo*)(to->pViewportState));
+ }
+ to->pRasterizationState = nullptr;
+ if (from->pRasterizationState)
+ {
+ to->pRasterizationState = (VkPipelineRasterizationStateCreateInfo*)pool->alloc(sizeof(const VkPipelineRasterizationStateCreateInfo));
+ deepcopy_VkPipelineRasterizationStateCreateInfo(pool, from->pRasterizationState, (VkPipelineRasterizationStateCreateInfo*)(to->pRasterizationState));
+ }
+ to->pMultisampleState = nullptr;
+ if (from->pMultisampleState)
+ {
+ to->pMultisampleState = (VkPipelineMultisampleStateCreateInfo*)pool->alloc(sizeof(const VkPipelineMultisampleStateCreateInfo));
+ deepcopy_VkPipelineMultisampleStateCreateInfo(pool, from->pMultisampleState, (VkPipelineMultisampleStateCreateInfo*)(to->pMultisampleState));
+ }
+ to->pDepthStencilState = nullptr;
+ if (from->pDepthStencilState)
+ {
+ to->pDepthStencilState = (VkPipelineDepthStencilStateCreateInfo*)pool->alloc(sizeof(const VkPipelineDepthStencilStateCreateInfo));
+ deepcopy_VkPipelineDepthStencilStateCreateInfo(pool, from->pDepthStencilState, (VkPipelineDepthStencilStateCreateInfo*)(to->pDepthStencilState));
+ }
+ to->pColorBlendState = nullptr;
+ if (from->pColorBlendState)
+ {
+ to->pColorBlendState = (VkPipelineColorBlendStateCreateInfo*)pool->alloc(sizeof(const VkPipelineColorBlendStateCreateInfo));
+ deepcopy_VkPipelineColorBlendStateCreateInfo(pool, from->pColorBlendState, (VkPipelineColorBlendStateCreateInfo*)(to->pColorBlendState));
+ }
+ to->pDynamicState = nullptr;
+ if (from->pDynamicState)
+ {
+ to->pDynamicState = (VkPipelineDynamicStateCreateInfo*)pool->alloc(sizeof(const VkPipelineDynamicStateCreateInfo));
+ deepcopy_VkPipelineDynamicStateCreateInfo(pool, from->pDynamicState, (VkPipelineDynamicStateCreateInfo*)(to->pDynamicState));
+ }
+ to->layout = from->layout;
+ to->renderPass = from->renderPass;
+ to->subpass = from->subpass;
+ to->basePipelineHandle = from->basePipelineHandle;
+ to->basePipelineIndex = from->basePipelineIndex;
+}
+
+void deepcopy_VkComputePipelineCreateInfo(
+ Pool* pool,
+ const VkComputePipelineCreateInfo* from,
+ VkComputePipelineCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ deepcopy_VkPipelineShaderStageCreateInfo(pool, &from->stage, (VkPipelineShaderStageCreateInfo*)(&to->stage));
+ to->layout = from->layout;
+ to->basePipelineHandle = from->basePipelineHandle;
+ to->basePipelineIndex = from->basePipelineIndex;
+}
+
+void deepcopy_VkPushConstantRange(
+ Pool* pool,
+ const VkPushConstantRange* from,
+ VkPushConstantRange* to)
+{
+ to->stageFlags = from->stageFlags;
+ to->offset = from->offset;
+ to->size = from->size;
+}
+
+void deepcopy_VkPipelineLayoutCreateInfo(
+ Pool* pool,
+ const VkPipelineLayoutCreateInfo* from,
+ VkPipelineLayoutCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->setLayoutCount = from->setLayoutCount;
+ to->pSetLayouts = nullptr;
+ if (from->pSetLayouts)
+ {
+ to->pSetLayouts = (VkDescriptorSetLayout*)pool->dupArray(from->pSetLayouts, from->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+ }
+ to->pushConstantRangeCount = from->pushConstantRangeCount;
+ to->pPushConstantRanges = nullptr;
+ if (from->pPushConstantRanges)
+ {
+ to->pPushConstantRanges = (VkPushConstantRange*)pool->alloc(from->pushConstantRangeCount * sizeof(const VkPushConstantRange));
+ to->pushConstantRangeCount = from->pushConstantRangeCount;
+ for (uint32_t i = 0; i < (uint32_t)from->pushConstantRangeCount; ++i)
+ {
+ deepcopy_VkPushConstantRange(pool, from->pPushConstantRanges + i, (VkPushConstantRange*)(to->pPushConstantRanges + i));
+ }
+ }
+}
+
+void deepcopy_VkSamplerCreateInfo(
+ Pool* pool,
+ const VkSamplerCreateInfo* from,
+ VkSamplerCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->magFilter = from->magFilter;
+ to->minFilter = from->minFilter;
+ to->mipmapMode = from->mipmapMode;
+ to->addressModeU = from->addressModeU;
+ to->addressModeV = from->addressModeV;
+ to->addressModeW = from->addressModeW;
+ to->mipLodBias = from->mipLodBias;
+ to->anisotropyEnable = from->anisotropyEnable;
+ to->maxAnisotropy = from->maxAnisotropy;
+ to->compareEnable = from->compareEnable;
+ to->compareOp = from->compareOp;
+ to->minLod = from->minLod;
+ to->maxLod = from->maxLod;
+ to->borderColor = from->borderColor;
+ to->unnormalizedCoordinates = from->unnormalizedCoordinates;
+}
+
+void deepcopy_VkDescriptorSetLayoutBinding(
+ Pool* pool,
+ const VkDescriptorSetLayoutBinding* from,
+ VkDescriptorSetLayoutBinding* to)
+{
+ to->binding = from->binding;
+ to->descriptorType = from->descriptorType;
+ to->descriptorCount = from->descriptorCount;
+ to->stageFlags = from->stageFlags;
+ to->pImmutableSamplers = nullptr;
+ if (from->pImmutableSamplers)
+ {
+ to->pImmutableSamplers = (VkSampler*)pool->dupArray(from->pImmutableSamplers, from->descriptorCount * sizeof(const VkSampler));
+ }
+}
+
+void deepcopy_VkDescriptorSetLayoutCreateInfo(
+ Pool* pool,
+ const VkDescriptorSetLayoutCreateInfo* from,
+ VkDescriptorSetLayoutCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->bindingCount = from->bindingCount;
+ to->pBindings = nullptr;
+ if (from->pBindings)
+ {
+ to->pBindings = (VkDescriptorSetLayoutBinding*)pool->alloc(from->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
+ to->bindingCount = from->bindingCount;
+ for (uint32_t i = 0; i < (uint32_t)from->bindingCount; ++i)
+ {
+ deepcopy_VkDescriptorSetLayoutBinding(pool, from->pBindings + i, (VkDescriptorSetLayoutBinding*)(to->pBindings + i));
+ }
+ }
+}
+
+void deepcopy_VkDescriptorPoolSize(
+ Pool* pool,
+ const VkDescriptorPoolSize* from,
+ VkDescriptorPoolSize* to)
+{
+ to->type = from->type;
+ to->descriptorCount = from->descriptorCount;
+}
+
+void deepcopy_VkDescriptorPoolCreateInfo(
+ Pool* pool,
+ const VkDescriptorPoolCreateInfo* from,
+ VkDescriptorPoolCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->maxSets = from->maxSets;
+ to->poolSizeCount = from->poolSizeCount;
+ to->pPoolSizes = nullptr;
+ if (from->pPoolSizes)
+ {
+ to->pPoolSizes = (VkDescriptorPoolSize*)pool->alloc(from->poolSizeCount * sizeof(const VkDescriptorPoolSize));
+ to->poolSizeCount = from->poolSizeCount;
+ for (uint32_t i = 0; i < (uint32_t)from->poolSizeCount; ++i)
+ {
+ deepcopy_VkDescriptorPoolSize(pool, from->pPoolSizes + i, (VkDescriptorPoolSize*)(to->pPoolSizes + i));
+ }
+ }
+}
+
+void deepcopy_VkDescriptorSetAllocateInfo(
+ Pool* pool,
+ const VkDescriptorSetAllocateInfo* from,
+ VkDescriptorSetAllocateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->descriptorPool = from->descriptorPool;
+ to->descriptorSetCount = from->descriptorSetCount;
+ to->pSetLayouts = nullptr;
+ if (from->pSetLayouts)
+ {
+ to->pSetLayouts = (VkDescriptorSetLayout*)pool->dupArray(from->pSetLayouts, from->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+ }
+}
+
+void deepcopy_VkDescriptorImageInfo(
+ Pool* pool,
+ const VkDescriptorImageInfo* from,
+ VkDescriptorImageInfo* to)
+{
+ to->sampler = from->sampler;
+ to->imageView = from->imageView;
+ to->imageLayout = from->imageLayout;
+}
+
+void deepcopy_VkDescriptorBufferInfo(
+ Pool* pool,
+ const VkDescriptorBufferInfo* from,
+ VkDescriptorBufferInfo* to)
+{
+ to->buffer = from->buffer;
+ to->offset = from->offset;
+ to->range = from->range;
+}
+
+void deepcopy_VkWriteDescriptorSet(
+ Pool* pool,
+ const VkWriteDescriptorSet* from,
+ VkWriteDescriptorSet* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->dstSet = from->dstSet;
+ to->dstBinding = from->dstBinding;
+ to->dstArrayElement = from->dstArrayElement;
+ to->descriptorCount = from->descriptorCount;
+ to->descriptorType = from->descriptorType;
+ to->pImageInfo = nullptr;
+ if (from->pImageInfo)
+ {
+ to->pImageInfo = (VkDescriptorImageInfo*)pool->alloc(from->descriptorCount * sizeof(const VkDescriptorImageInfo));
+ to->descriptorCount = from->descriptorCount;
+ for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
+ {
+ deepcopy_VkDescriptorImageInfo(pool, from->pImageInfo + i, (VkDescriptorImageInfo*)(to->pImageInfo + i));
+ }
+ }
+ to->pBufferInfo = nullptr;
+ if (from->pBufferInfo)
+ {
+ to->pBufferInfo = (VkDescriptorBufferInfo*)pool->alloc(from->descriptorCount * sizeof(const VkDescriptorBufferInfo));
+ to->descriptorCount = from->descriptorCount;
+ for (uint32_t i = 0; i < (uint32_t)from->descriptorCount; ++i)
+ {
+ deepcopy_VkDescriptorBufferInfo(pool, from->pBufferInfo + i, (VkDescriptorBufferInfo*)(to->pBufferInfo + i));
+ }
+ }
+ to->pTexelBufferView = nullptr;
+ if (from->pTexelBufferView)
+ {
+ to->pTexelBufferView = (VkBufferView*)pool->dupArray(from->pTexelBufferView, from->descriptorCount * sizeof(const VkBufferView));
+ }
+}
+
+void deepcopy_VkCopyDescriptorSet(
+ Pool* pool,
+ const VkCopyDescriptorSet* from,
+ VkCopyDescriptorSet* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcSet = from->srcSet;
+ to->srcBinding = from->srcBinding;
+ to->srcArrayElement = from->srcArrayElement;
+ to->dstSet = from->dstSet;
+ to->dstBinding = from->dstBinding;
+ to->dstArrayElement = from->dstArrayElement;
+ to->descriptorCount = from->descriptorCount;
+}
+
+void deepcopy_VkFramebufferCreateInfo(
+ Pool* pool,
+ const VkFramebufferCreateInfo* from,
+ VkFramebufferCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->renderPass = from->renderPass;
+ to->attachmentCount = from->attachmentCount;
+ to->pAttachments = nullptr;
+ if (from->pAttachments)
+ {
+ to->pAttachments = (VkImageView*)pool->dupArray(from->pAttachments, from->attachmentCount * sizeof(const VkImageView));
+ }
+ to->width = from->width;
+ to->height = from->height;
+ to->layers = from->layers;
+}
+
+void deepcopy_VkAttachmentDescription(
+ Pool* pool,
+ const VkAttachmentDescription* from,
+ VkAttachmentDescription* to)
+{
+ to->flags = from->flags;
+ to->format = from->format;
+ to->samples = from->samples;
+ to->loadOp = from->loadOp;
+ to->storeOp = from->storeOp;
+ to->stencilLoadOp = from->stencilLoadOp;
+ to->stencilStoreOp = from->stencilStoreOp;
+ to->initialLayout = from->initialLayout;
+ to->finalLayout = from->finalLayout;
+}
+
+void deepcopy_VkAttachmentReference(
+ Pool* pool,
+ const VkAttachmentReference* from,
+ VkAttachmentReference* to)
+{
+ to->attachment = from->attachment;
+ to->layout = from->layout;
+}
+
+void deepcopy_VkSubpassDescription(
+ Pool* pool,
+ const VkSubpassDescription* from,
+ VkSubpassDescription* to)
+{
+ to->flags = from->flags;
+ to->pipelineBindPoint = from->pipelineBindPoint;
+ to->inputAttachmentCount = from->inputAttachmentCount;
+ to->pInputAttachments = nullptr;
+ if (from->pInputAttachments)
+ {
+ to->pInputAttachments = (VkAttachmentReference*)pool->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference));
+ to->inputAttachmentCount = from->inputAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference(pool, from->pInputAttachments + i, (VkAttachmentReference*)(to->pInputAttachments + i));
+ }
+ }
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ to->pColorAttachments = nullptr;
+ if (from->pColorAttachments)
+ {
+ to->pColorAttachments = (VkAttachmentReference*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference(pool, from->pColorAttachments + i, (VkAttachmentReference*)(to->pColorAttachments + i));
+ }
+ }
+ to->pResolveAttachments = nullptr;
+ if (from->pResolveAttachments)
+ {
+ to->pResolveAttachments = (VkAttachmentReference*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference));
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference(pool, from->pResolveAttachments + i, (VkAttachmentReference*)(to->pResolveAttachments + i));
+ }
+ }
+ to->pDepthStencilAttachment = nullptr;
+ if (from->pDepthStencilAttachment)
+ {
+ to->pDepthStencilAttachment = (VkAttachmentReference*)pool->alloc(sizeof(const VkAttachmentReference));
+ deepcopy_VkAttachmentReference(pool, from->pDepthStencilAttachment, (VkAttachmentReference*)(to->pDepthStencilAttachment));
+ }
+ to->preserveAttachmentCount = from->preserveAttachmentCount;
+ to->pPreserveAttachments = nullptr;
+ if (from->pPreserveAttachments)
+ {
+ to->pPreserveAttachments = (uint32_t*)pool->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkSubpassDependency(
+ Pool* pool,
+ const VkSubpassDependency* from,
+ VkSubpassDependency* to)
+{
+ to->srcSubpass = from->srcSubpass;
+ to->dstSubpass = from->dstSubpass;
+ to->srcStageMask = from->srcStageMask;
+ to->dstStageMask = from->dstStageMask;
+ to->srcAccessMask = from->srcAccessMask;
+ to->dstAccessMask = from->dstAccessMask;
+ to->dependencyFlags = from->dependencyFlags;
+}
+
+void deepcopy_VkRenderPassCreateInfo(
+ Pool* pool,
+ const VkRenderPassCreateInfo* from,
+ VkRenderPassCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->attachmentCount = from->attachmentCount;
+ to->pAttachments = nullptr;
+ if (from->pAttachments)
+ {
+ to->pAttachments = (VkAttachmentDescription*)pool->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription));
+ to->attachmentCount = from->attachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentDescription(pool, from->pAttachments + i, (VkAttachmentDescription*)(to->pAttachments + i));
+ }
+ }
+ to->subpassCount = from->subpassCount;
+ to->pSubpasses = nullptr;
+ if (from->pSubpasses)
+ {
+ to->pSubpasses = (VkSubpassDescription*)pool->alloc(from->subpassCount * sizeof(const VkSubpassDescription));
+ to->subpassCount = from->subpassCount;
+ for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
+ {
+ deepcopy_VkSubpassDescription(pool, from->pSubpasses + i, (VkSubpassDescription*)(to->pSubpasses + i));
+ }
+ }
+ to->dependencyCount = from->dependencyCount;
+ to->pDependencies = nullptr;
+ if (from->pDependencies)
+ {
+ to->pDependencies = (VkSubpassDependency*)pool->alloc(from->dependencyCount * sizeof(const VkSubpassDependency));
+ to->dependencyCount = from->dependencyCount;
+ for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
+ {
+ deepcopy_VkSubpassDependency(pool, from->pDependencies + i, (VkSubpassDependency*)(to->pDependencies + i));
+ }
+ }
+}
+
+void deepcopy_VkCommandPoolCreateInfo(
+ Pool* pool,
+ const VkCommandPoolCreateInfo* from,
+ VkCommandPoolCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->queueFamilyIndex = from->queueFamilyIndex;
+}
+
+void deepcopy_VkCommandBufferAllocateInfo(
+ Pool* pool,
+ const VkCommandBufferAllocateInfo* from,
+ VkCommandBufferAllocateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->commandPool = from->commandPool;
+ to->level = from->level;
+ to->commandBufferCount = from->commandBufferCount;
+}
+
+void deepcopy_VkCommandBufferInheritanceInfo(
+ Pool* pool,
+ const VkCommandBufferInheritanceInfo* from,
+ VkCommandBufferInheritanceInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->renderPass = from->renderPass;
+ to->subpass = from->subpass;
+ to->framebuffer = from->framebuffer;
+ to->occlusionQueryEnable = from->occlusionQueryEnable;
+ to->queryFlags = from->queryFlags;
+ to->pipelineStatistics = from->pipelineStatistics;
+}
+
+void deepcopy_VkCommandBufferBeginInfo(
+ Pool* pool,
+ const VkCommandBufferBeginInfo* from,
+ VkCommandBufferBeginInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pInheritanceInfo = nullptr;
+ if (from->pInheritanceInfo)
+ {
+ to->pInheritanceInfo = (VkCommandBufferInheritanceInfo*)pool->alloc(sizeof(const VkCommandBufferInheritanceInfo));
+ deepcopy_VkCommandBufferInheritanceInfo(pool, from->pInheritanceInfo, (VkCommandBufferInheritanceInfo*)(to->pInheritanceInfo));
+ }
+}
+
+void deepcopy_VkBufferCopy(
+ Pool* pool,
+ const VkBufferCopy* from,
+ VkBufferCopy* to)
+{
+ to->srcOffset = from->srcOffset;
+ to->dstOffset = from->dstOffset;
+ to->size = from->size;
+}
+
+void deepcopy_VkImageSubresourceLayers(
+ Pool* pool,
+ const VkImageSubresourceLayers* from,
+ VkImageSubresourceLayers* to)
+{
+ to->aspectMask = from->aspectMask;
+ to->mipLevel = from->mipLevel;
+ to->baseArrayLayer = from->baseArrayLayer;
+ to->layerCount = from->layerCount;
+}
+
+void deepcopy_VkImageCopy(
+ Pool* pool,
+ const VkImageCopy* from,
+ VkImageCopy* to)
+{
+ deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
+ deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
+ deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
+ deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
+ deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
+}
+
+void deepcopy_VkImageBlit(
+ Pool* pool,
+ const VkImageBlit* from,
+ VkImageBlit* to)
+{
+ deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ deepcopy_VkOffset3D(pool, from->srcOffsets + i, (VkOffset3D*)(to->srcOffsets + i));
+ }
+ deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ deepcopy_VkOffset3D(pool, from->dstOffsets + i, (VkOffset3D*)(to->dstOffsets + i));
+ }
+}
+
+void deepcopy_VkBufferImageCopy(
+ Pool* pool,
+ const VkBufferImageCopy* from,
+ VkBufferImageCopy* to)
+{
+ to->bufferOffset = from->bufferOffset;
+ to->bufferRowLength = from->bufferRowLength;
+ to->bufferImageHeight = from->bufferImageHeight;
+ deepcopy_VkImageSubresourceLayers(pool, &from->imageSubresource, (VkImageSubresourceLayers*)(&to->imageSubresource));
+ deepcopy_VkOffset3D(pool, &from->imageOffset, (VkOffset3D*)(&to->imageOffset));
+ deepcopy_VkExtent3D(pool, &from->imageExtent, (VkExtent3D*)(&to->imageExtent));
+}
+
+void deepcopy_VkClearColorValue(
+ Pool* pool,
+ const VkClearColorValue* from,
+ VkClearColorValue* to)
+{
+ memcpy(to->float32, from->float32, 4 * sizeof(float));
+ memcpy(to->int32, from->int32, 4 * sizeof(int32_t));
+ memcpy(to->uint32, from->uint32, 4 * sizeof(uint32_t));
+}
+
+void deepcopy_VkClearDepthStencilValue(
+ Pool* pool,
+ const VkClearDepthStencilValue* from,
+ VkClearDepthStencilValue* to)
+{
+ to->depth = from->depth;
+ to->stencil = from->stencil;
+}
+
+void deepcopy_VkClearValue(
+ Pool* pool,
+ const VkClearValue* from,
+ VkClearValue* to)
+{
+ deepcopy_VkClearColorValue(pool, &from->color, (VkClearColorValue*)(&to->color));
+ deepcopy_VkClearDepthStencilValue(pool, &from->depthStencil, (VkClearDepthStencilValue*)(&to->depthStencil));
+}
+
+void deepcopy_VkClearAttachment(
+ Pool* pool,
+ const VkClearAttachment* from,
+ VkClearAttachment* to)
+{
+ to->aspectMask = from->aspectMask;
+ to->colorAttachment = from->colorAttachment;
+ deepcopy_VkClearValue(pool, &from->clearValue, (VkClearValue*)(&to->clearValue));
+}
+
+void deepcopy_VkClearRect(
+ Pool* pool,
+ const VkClearRect* from,
+ VkClearRect* to)
+{
+ deepcopy_VkRect2D(pool, &from->rect, (VkRect2D*)(&to->rect));
+ to->baseArrayLayer = from->baseArrayLayer;
+ to->layerCount = from->layerCount;
+}
+
+void deepcopy_VkImageResolve(
+ Pool* pool,
+ const VkImageResolve* from,
+ VkImageResolve* to)
+{
+ deepcopy_VkImageSubresourceLayers(pool, &from->srcSubresource, (VkImageSubresourceLayers*)(&to->srcSubresource));
+ deepcopy_VkOffset3D(pool, &from->srcOffset, (VkOffset3D*)(&to->srcOffset));
+ deepcopy_VkImageSubresourceLayers(pool, &from->dstSubresource, (VkImageSubresourceLayers*)(&to->dstSubresource));
+ deepcopy_VkOffset3D(pool, &from->dstOffset, (VkOffset3D*)(&to->dstOffset));
+ deepcopy_VkExtent3D(pool, &from->extent, (VkExtent3D*)(&to->extent));
+}
+
+void deepcopy_VkMemoryBarrier(
+ Pool* pool,
+ const VkMemoryBarrier* from,
+ VkMemoryBarrier* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcAccessMask = from->srcAccessMask;
+ to->dstAccessMask = from->dstAccessMask;
+}
+
+void deepcopy_VkBufferMemoryBarrier(
+ Pool* pool,
+ const VkBufferMemoryBarrier* from,
+ VkBufferMemoryBarrier* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcAccessMask = from->srcAccessMask;
+ to->dstAccessMask = from->dstAccessMask;
+ to->srcQueueFamilyIndex = from->srcQueueFamilyIndex;
+ to->dstQueueFamilyIndex = from->dstQueueFamilyIndex;
+ to->buffer = from->buffer;
+ to->offset = from->offset;
+ to->size = from->size;
+}
+
+void deepcopy_VkImageMemoryBarrier(
+ Pool* pool,
+ const VkImageMemoryBarrier* from,
+ VkImageMemoryBarrier* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcAccessMask = from->srcAccessMask;
+ to->dstAccessMask = from->dstAccessMask;
+ to->oldLayout = from->oldLayout;
+ to->newLayout = from->newLayout;
+ to->srcQueueFamilyIndex = from->srcQueueFamilyIndex;
+ to->dstQueueFamilyIndex = from->dstQueueFamilyIndex;
+ to->image = from->image;
+ deepcopy_VkImageSubresourceRange(pool, &from->subresourceRange, (VkImageSubresourceRange*)(&to->subresourceRange));
+}
+
+void deepcopy_VkRenderPassBeginInfo(
+ Pool* pool,
+ const VkRenderPassBeginInfo* from,
+ VkRenderPassBeginInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->renderPass = from->renderPass;
+ to->framebuffer = from->framebuffer;
+ deepcopy_VkRect2D(pool, &from->renderArea, (VkRect2D*)(&to->renderArea));
+ to->clearValueCount = from->clearValueCount;
+ to->pClearValues = nullptr;
+ if (from->pClearValues)
+ {
+ to->pClearValues = (VkClearValue*)pool->alloc(from->clearValueCount * sizeof(const VkClearValue));
+ to->clearValueCount = from->clearValueCount;
+ for (uint32_t i = 0; i < (uint32_t)from->clearValueCount; ++i)
+ {
+ deepcopy_VkClearValue(pool, from->pClearValues + i, (VkClearValue*)(to->pClearValues + i));
+ }
+ }
+}
+
+void deepcopy_VkDispatchIndirectCommand(
+ Pool* pool,
+ const VkDispatchIndirectCommand* from,
+ VkDispatchIndirectCommand* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+ to->z = from->z;
+}
+
+void deepcopy_VkDrawIndexedIndirectCommand(
+ Pool* pool,
+ const VkDrawIndexedIndirectCommand* from,
+ VkDrawIndexedIndirectCommand* to)
+{
+ to->indexCount = from->indexCount;
+ to->instanceCount = from->instanceCount;
+ to->firstIndex = from->firstIndex;
+ to->vertexOffset = from->vertexOffset;
+ to->firstInstance = from->firstInstance;
+}
+
+void deepcopy_VkDrawIndirectCommand(
+ Pool* pool,
+ const VkDrawIndirectCommand* from,
+ VkDrawIndirectCommand* to)
+{
+ to->vertexCount = from->vertexCount;
+ to->instanceCount = from->instanceCount;
+ to->firstVertex = from->firstVertex;
+ to->firstInstance = from->firstInstance;
+}
+
+void deepcopy_VkBaseOutStructure(
+ Pool* pool,
+ const VkBaseOutStructure* from,
+ VkBaseOutStructure* to)
+{
+ to->sType = from->sType;
+ // TODO: Unsupported : VkBaseOutStructure* pNext
+}
+
+void deepcopy_VkBaseInStructure(
+ Pool* pool,
+ const VkBaseInStructure* from,
+ VkBaseInStructure* to)
+{
+ to->sType = from->sType;
+ // TODO: Unsupported : const VkBaseInStructure* pNext
+}
+
+#endif
+#ifdef VK_VERSION_1_1
+void deepcopy_VkPhysicalDeviceSubgroupProperties(
+ Pool* pool,
+ const VkPhysicalDeviceSubgroupProperties* from,
+ VkPhysicalDeviceSubgroupProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->subgroupSize = from->subgroupSize;
+ to->supportedStages = from->supportedStages;
+ to->supportedOperations = from->supportedOperations;
+ to->quadOperationsInAllStages = from->quadOperationsInAllStages;
+}
+
+void deepcopy_VkBindBufferMemoryInfo(
+ Pool* pool,
+ const VkBindBufferMemoryInfo* from,
+ VkBindBufferMemoryInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->buffer = from->buffer;
+ to->memory = from->memory;
+ to->memoryOffset = from->memoryOffset;
+}
+
+void deepcopy_VkBindImageMemoryInfo(
+ Pool* pool,
+ const VkBindImageMemoryInfo* from,
+ VkBindImageMemoryInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->image = from->image;
+ to->memory = from->memory;
+ to->memoryOffset = from->memoryOffset;
+}
+
+void deepcopy_VkPhysicalDevice16BitStorageFeatures(
+ Pool* pool,
+ const VkPhysicalDevice16BitStorageFeatures* from,
+ VkPhysicalDevice16BitStorageFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->storageBuffer16BitAccess = from->storageBuffer16BitAccess;
+ to->uniformAndStorageBuffer16BitAccess = from->uniformAndStorageBuffer16BitAccess;
+ to->storagePushConstant16 = from->storagePushConstant16;
+ to->storageInputOutput16 = from->storageInputOutput16;
+}
+
+void deepcopy_VkMemoryDedicatedRequirements(
+ Pool* pool,
+ const VkMemoryDedicatedRequirements* from,
+ VkMemoryDedicatedRequirements* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->prefersDedicatedAllocation = from->prefersDedicatedAllocation;
+ to->requiresDedicatedAllocation = from->requiresDedicatedAllocation;
+}
+
+void deepcopy_VkMemoryDedicatedAllocateInfo(
+ Pool* pool,
+ const VkMemoryDedicatedAllocateInfo* from,
+ VkMemoryDedicatedAllocateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->image = from->image;
+ to->buffer = from->buffer;
+}
+
+void deepcopy_VkMemoryAllocateFlagsInfo(
+ Pool* pool,
+ const VkMemoryAllocateFlagsInfo* from,
+ VkMemoryAllocateFlagsInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->deviceMask = from->deviceMask;
+}
+
+void deepcopy_VkDeviceGroupRenderPassBeginInfo(
+ Pool* pool,
+ const VkDeviceGroupRenderPassBeginInfo* from,
+ VkDeviceGroupRenderPassBeginInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->deviceMask = from->deviceMask;
+ to->deviceRenderAreaCount = from->deviceRenderAreaCount;
+ to->pDeviceRenderAreas = nullptr;
+ if (from->pDeviceRenderAreas)
+ {
+ to->pDeviceRenderAreas = (VkRect2D*)pool->alloc(from->deviceRenderAreaCount * sizeof(const VkRect2D));
+ to->deviceRenderAreaCount = from->deviceRenderAreaCount;
+ for (uint32_t i = 0; i < (uint32_t)from->deviceRenderAreaCount; ++i)
+ {
+ deepcopy_VkRect2D(pool, from->pDeviceRenderAreas + i, (VkRect2D*)(to->pDeviceRenderAreas + i));
+ }
+ }
+}
+
+void deepcopy_VkDeviceGroupCommandBufferBeginInfo(
+ Pool* pool,
+ const VkDeviceGroupCommandBufferBeginInfo* from,
+ VkDeviceGroupCommandBufferBeginInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->deviceMask = from->deviceMask;
+}
+
+void deepcopy_VkDeviceGroupSubmitInfo(
+ Pool* pool,
+ const VkDeviceGroupSubmitInfo* from,
+ VkDeviceGroupSubmitInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->waitSemaphoreCount = from->waitSemaphoreCount;
+ to->pWaitSemaphoreDeviceIndices = nullptr;
+ if (from->pWaitSemaphoreDeviceIndices)
+ {
+ to->pWaitSemaphoreDeviceIndices = (uint32_t*)pool->dupArray(from->pWaitSemaphoreDeviceIndices, from->waitSemaphoreCount * sizeof(const uint32_t));
+ }
+ to->commandBufferCount = from->commandBufferCount;
+ to->pCommandBufferDeviceMasks = nullptr;
+ if (from->pCommandBufferDeviceMasks)
+ {
+ to->pCommandBufferDeviceMasks = (uint32_t*)pool->dupArray(from->pCommandBufferDeviceMasks, from->commandBufferCount * sizeof(const uint32_t));
+ }
+ to->signalSemaphoreCount = from->signalSemaphoreCount;
+ to->pSignalSemaphoreDeviceIndices = nullptr;
+ if (from->pSignalSemaphoreDeviceIndices)
+ {
+ to->pSignalSemaphoreDeviceIndices = (uint32_t*)pool->dupArray(from->pSignalSemaphoreDeviceIndices, from->signalSemaphoreCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkDeviceGroupBindSparseInfo(
+ Pool* pool,
+ const VkDeviceGroupBindSparseInfo* from,
+ VkDeviceGroupBindSparseInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->resourceDeviceIndex = from->resourceDeviceIndex;
+ to->memoryDeviceIndex = from->memoryDeviceIndex;
+}
+
+void deepcopy_VkBindBufferMemoryDeviceGroupInfo(
+ Pool* pool,
+ const VkBindBufferMemoryDeviceGroupInfo* from,
+ VkBindBufferMemoryDeviceGroupInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->deviceIndexCount = from->deviceIndexCount;
+ to->pDeviceIndices = nullptr;
+ if (from->pDeviceIndices)
+ {
+ to->pDeviceIndices = (uint32_t*)pool->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkBindImageMemoryDeviceGroupInfo(
+ Pool* pool,
+ const VkBindImageMemoryDeviceGroupInfo* from,
+ VkBindImageMemoryDeviceGroupInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->deviceIndexCount = from->deviceIndexCount;
+ to->pDeviceIndices = nullptr;
+ if (from->pDeviceIndices)
+ {
+ to->pDeviceIndices = (uint32_t*)pool->dupArray(from->pDeviceIndices, from->deviceIndexCount * sizeof(const uint32_t));
+ }
+ to->splitInstanceBindRegionCount = from->splitInstanceBindRegionCount;
+ to->pSplitInstanceBindRegions = nullptr;
+ if (from->pSplitInstanceBindRegions)
+ {
+ to->pSplitInstanceBindRegions = (VkRect2D*)pool->alloc(from->splitInstanceBindRegionCount * sizeof(const VkRect2D));
+ to->splitInstanceBindRegionCount = from->splitInstanceBindRegionCount;
+ for (uint32_t i = 0; i < (uint32_t)from->splitInstanceBindRegionCount; ++i)
+ {
+ deepcopy_VkRect2D(pool, from->pSplitInstanceBindRegions + i, (VkRect2D*)(to->pSplitInstanceBindRegions + i));
+ }
+ }
+}
+
+void deepcopy_VkPhysicalDeviceGroupProperties(
+ Pool* pool,
+ const VkPhysicalDeviceGroupProperties* from,
+ VkPhysicalDeviceGroupProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->physicalDeviceCount = from->physicalDeviceCount;
+ memcpy(to->physicalDevices, from->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
+ to->subsetAllocation = from->subsetAllocation;
+}
+
+void deepcopy_VkDeviceGroupDeviceCreateInfo(
+ Pool* pool,
+ const VkDeviceGroupDeviceCreateInfo* from,
+ VkDeviceGroupDeviceCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->physicalDeviceCount = from->physicalDeviceCount;
+ to->pPhysicalDevices = nullptr;
+ if (from->pPhysicalDevices)
+ {
+ to->pPhysicalDevices = (VkPhysicalDevice*)pool->dupArray(from->pPhysicalDevices, from->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+ }
+}
+
+void deepcopy_VkBufferMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkBufferMemoryRequirementsInfo2* from,
+ VkBufferMemoryRequirementsInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->buffer = from->buffer;
+}
+
+void deepcopy_VkImageMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkImageMemoryRequirementsInfo2* from,
+ VkImageMemoryRequirementsInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->image = from->image;
+}
+
+void deepcopy_VkImageSparseMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkImageSparseMemoryRequirementsInfo2* from,
+ VkImageSparseMemoryRequirementsInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->image = from->image;
+}
+
+void deepcopy_VkMemoryRequirements2(
+ Pool* pool,
+ const VkMemoryRequirements2* from,
+ VkMemoryRequirements2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkMemoryRequirements(pool, &from->memoryRequirements, (VkMemoryRequirements*)(&to->memoryRequirements));
+}
+
+void deepcopy_VkSparseImageMemoryRequirements2(
+ Pool* pool,
+ const VkSparseImageMemoryRequirements2* from,
+ VkSparseImageMemoryRequirements2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkSparseImageMemoryRequirements(pool, &from->memoryRequirements, (VkSparseImageMemoryRequirements*)(&to->memoryRequirements));
+}
+
+void deepcopy_VkPhysicalDeviceFeatures2(
+ Pool* pool,
+ const VkPhysicalDeviceFeatures2* from,
+ VkPhysicalDeviceFeatures2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkPhysicalDeviceFeatures(pool, &from->features, (VkPhysicalDeviceFeatures*)(&to->features));
+}
+
+void deepcopy_VkPhysicalDeviceProperties2(
+ Pool* pool,
+ const VkPhysicalDeviceProperties2* from,
+ VkPhysicalDeviceProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkPhysicalDeviceProperties(pool, &from->properties, (VkPhysicalDeviceProperties*)(&to->properties));
+}
+
+void deepcopy_VkFormatProperties2(
+ Pool* pool,
+ const VkFormatProperties2* from,
+ VkFormatProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkFormatProperties(pool, &from->formatProperties, (VkFormatProperties*)(&to->formatProperties));
+}
+
+void deepcopy_VkImageFormatProperties2(
+ Pool* pool,
+ const VkImageFormatProperties2* from,
+ VkImageFormatProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkImageFormatProperties(pool, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
+}
+
+void deepcopy_VkPhysicalDeviceImageFormatInfo2(
+ Pool* pool,
+ const VkPhysicalDeviceImageFormatInfo2* from,
+ VkPhysicalDeviceImageFormatInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->format = from->format;
+ to->type = from->type;
+ to->tiling = from->tiling;
+ to->usage = from->usage;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkQueueFamilyProperties2(
+ Pool* pool,
+ const VkQueueFamilyProperties2* from,
+ VkQueueFamilyProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkQueueFamilyProperties(pool, &from->queueFamilyProperties, (VkQueueFamilyProperties*)(&to->queueFamilyProperties));
+}
+
+void deepcopy_VkPhysicalDeviceMemoryProperties2(
+ Pool* pool,
+ const VkPhysicalDeviceMemoryProperties2* from,
+ VkPhysicalDeviceMemoryProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkPhysicalDeviceMemoryProperties(pool, &from->memoryProperties, (VkPhysicalDeviceMemoryProperties*)(&to->memoryProperties));
+}
+
+void deepcopy_VkSparseImageFormatProperties2(
+ Pool* pool,
+ const VkSparseImageFormatProperties2* from,
+ VkSparseImageFormatProperties2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkSparseImageFormatProperties(pool, &from->properties, (VkSparseImageFormatProperties*)(&to->properties));
+}
+
+void deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(
+ Pool* pool,
+ const VkPhysicalDeviceSparseImageFormatInfo2* from,
+ VkPhysicalDeviceSparseImageFormatInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->format = from->format;
+ to->type = from->type;
+ to->samples = from->samples;
+ to->usage = from->usage;
+ to->tiling = from->tiling;
+}
+
+void deepcopy_VkPhysicalDevicePointClippingProperties(
+ Pool* pool,
+ const VkPhysicalDevicePointClippingProperties* from,
+ VkPhysicalDevicePointClippingProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pointClippingBehavior = from->pointClippingBehavior;
+}
+
+void deepcopy_VkInputAttachmentAspectReference(
+ Pool* pool,
+ const VkInputAttachmentAspectReference* from,
+ VkInputAttachmentAspectReference* to)
+{
+ to->subpass = from->subpass;
+ to->inputAttachmentIndex = from->inputAttachmentIndex;
+ to->aspectMask = from->aspectMask;
+}
+
+void deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(
+ Pool* pool,
+ const VkRenderPassInputAttachmentAspectCreateInfo* from,
+ VkRenderPassInputAttachmentAspectCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->aspectReferenceCount = from->aspectReferenceCount;
+ to->pAspectReferences = nullptr;
+ if (from->pAspectReferences)
+ {
+ to->pAspectReferences = (VkInputAttachmentAspectReference*)pool->alloc(from->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
+ to->aspectReferenceCount = from->aspectReferenceCount;
+ for (uint32_t i = 0; i < (uint32_t)from->aspectReferenceCount; ++i)
+ {
+ deepcopy_VkInputAttachmentAspectReference(pool, from->pAspectReferences + i, (VkInputAttachmentAspectReference*)(to->pAspectReferences + i));
+ }
+ }
+}
+
+void deepcopy_VkImageViewUsageCreateInfo(
+ Pool* pool,
+ const VkImageViewUsageCreateInfo* from,
+ VkImageViewUsageCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->usage = from->usage;
+}
+
+void deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(
+ Pool* pool,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* from,
+ VkPipelineTessellationDomainOriginStateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->domainOrigin = from->domainOrigin;
+}
+
+void deepcopy_VkRenderPassMultiviewCreateInfo(
+ Pool* pool,
+ const VkRenderPassMultiviewCreateInfo* from,
+ VkRenderPassMultiviewCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->subpassCount = from->subpassCount;
+ to->pViewMasks = nullptr;
+ if (from->pViewMasks)
+ {
+ to->pViewMasks = (uint32_t*)pool->dupArray(from->pViewMasks, from->subpassCount * sizeof(const uint32_t));
+ }
+ to->dependencyCount = from->dependencyCount;
+ to->pViewOffsets = nullptr;
+ if (from->pViewOffsets)
+ {
+ to->pViewOffsets = (int32_t*)pool->dupArray(from->pViewOffsets, from->dependencyCount * sizeof(const int32_t));
+ }
+ to->correlationMaskCount = from->correlationMaskCount;
+ to->pCorrelationMasks = nullptr;
+ if (from->pCorrelationMasks)
+ {
+ to->pCorrelationMasks = (uint32_t*)pool->dupArray(from->pCorrelationMasks, from->correlationMaskCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkPhysicalDeviceMultiviewFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewFeatures* from,
+ VkPhysicalDeviceMultiviewFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->multiview = from->multiview;
+ to->multiviewGeometryShader = from->multiviewGeometryShader;
+ to->multiviewTessellationShader = from->multiviewTessellationShader;
+}
+
+void deepcopy_VkPhysicalDeviceMultiviewProperties(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewProperties* from,
+ VkPhysicalDeviceMultiviewProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxMultiviewViewCount = from->maxMultiviewViewCount;
+ to->maxMultiviewInstanceIndex = from->maxMultiviewInstanceIndex;
+}
+
+void deepcopy_VkPhysicalDeviceVariablePointerFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceVariablePointerFeatures* from,
+ VkPhysicalDeviceVariablePointerFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->variablePointersStorageBuffer = from->variablePointersStorageBuffer;
+ to->variablePointers = from->variablePointers;
+}
+
+void deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceProtectedMemoryFeatures* from,
+ VkPhysicalDeviceProtectedMemoryFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->protectedMemory = from->protectedMemory;
+}
+
+void deepcopy_VkPhysicalDeviceProtectedMemoryProperties(
+ Pool* pool,
+ const VkPhysicalDeviceProtectedMemoryProperties* from,
+ VkPhysicalDeviceProtectedMemoryProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->protectedNoFault = from->protectedNoFault;
+}
+
+void deepcopy_VkDeviceQueueInfo2(
+ Pool* pool,
+ const VkDeviceQueueInfo2* from,
+ VkDeviceQueueInfo2* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->queueFamilyIndex = from->queueFamilyIndex;
+ to->queueIndex = from->queueIndex;
+}
+
+void deepcopy_VkProtectedSubmitInfo(
+ Pool* pool,
+ const VkProtectedSubmitInfo* from,
+ VkProtectedSubmitInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->protectedSubmit = from->protectedSubmit;
+}
+
+void deepcopy_VkSamplerYcbcrConversionCreateInfo(
+ Pool* pool,
+ const VkSamplerYcbcrConversionCreateInfo* from,
+ VkSamplerYcbcrConversionCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->format = from->format;
+ to->ycbcrModel = from->ycbcrModel;
+ to->ycbcrRange = from->ycbcrRange;
+ deepcopy_VkComponentMapping(pool, &from->components, (VkComponentMapping*)(&to->components));
+ to->xChromaOffset = from->xChromaOffset;
+ to->yChromaOffset = from->yChromaOffset;
+ to->chromaFilter = from->chromaFilter;
+ to->forceExplicitReconstruction = from->forceExplicitReconstruction;
+}
+
+void deepcopy_VkSamplerYcbcrConversionInfo(
+ Pool* pool,
+ const VkSamplerYcbcrConversionInfo* from,
+ VkSamplerYcbcrConversionInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->conversion = from->conversion;
+}
+
+void deepcopy_VkBindImagePlaneMemoryInfo(
+ Pool* pool,
+ const VkBindImagePlaneMemoryInfo* from,
+ VkBindImagePlaneMemoryInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->planeAspect = from->planeAspect;
+}
+
+void deepcopy_VkImagePlaneMemoryRequirementsInfo(
+ Pool* pool,
+ const VkImagePlaneMemoryRequirementsInfo* from,
+ VkImagePlaneMemoryRequirementsInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->planeAspect = from->planeAspect;
+}
+
+void deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* from,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->samplerYcbcrConversion = from->samplerYcbcrConversion;
+}
+
+void deepcopy_VkSamplerYcbcrConversionImageFormatProperties(
+ Pool* pool,
+ const VkSamplerYcbcrConversionImageFormatProperties* from,
+ VkSamplerYcbcrConversionImageFormatProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->combinedImageSamplerDescriptorCount = from->combinedImageSamplerDescriptorCount;
+}
+
+void deepcopy_VkDescriptorUpdateTemplateEntry(
+ Pool* pool,
+ const VkDescriptorUpdateTemplateEntry* from,
+ VkDescriptorUpdateTemplateEntry* to)
+{
+ to->dstBinding = from->dstBinding;
+ to->dstArrayElement = from->dstArrayElement;
+ to->descriptorCount = from->descriptorCount;
+ to->descriptorType = from->descriptorType;
+ to->offset = from->offset;
+ to->stride = from->stride;
+}
+
+void deepcopy_VkDescriptorUpdateTemplateCreateInfo(
+ Pool* pool,
+ const VkDescriptorUpdateTemplateCreateInfo* from,
+ VkDescriptorUpdateTemplateCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->descriptorUpdateEntryCount = from->descriptorUpdateEntryCount;
+ to->pDescriptorUpdateEntries = nullptr;
+ if (from->pDescriptorUpdateEntries)
+ {
+ to->pDescriptorUpdateEntries = (VkDescriptorUpdateTemplateEntry*)pool->alloc(from->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
+ to->descriptorUpdateEntryCount = from->descriptorUpdateEntryCount;
+ for (uint32_t i = 0; i < (uint32_t)from->descriptorUpdateEntryCount; ++i)
+ {
+ deepcopy_VkDescriptorUpdateTemplateEntry(pool, from->pDescriptorUpdateEntries + i, (VkDescriptorUpdateTemplateEntry*)(to->pDescriptorUpdateEntries + i));
+ }
+ }
+ to->templateType = from->templateType;
+ to->descriptorSetLayout = from->descriptorSetLayout;
+ to->pipelineBindPoint = from->pipelineBindPoint;
+ to->pipelineLayout = from->pipelineLayout;
+ to->set = from->set;
+}
+
+void deepcopy_VkExternalMemoryProperties(
+ Pool* pool,
+ const VkExternalMemoryProperties* from,
+ VkExternalMemoryProperties* to)
+{
+ to->externalMemoryFeatures = from->externalMemoryFeatures;
+ to->exportFromImportedHandleTypes = from->exportFromImportedHandleTypes;
+ to->compatibleHandleTypes = from->compatibleHandleTypes;
+}
+
+void deepcopy_VkPhysicalDeviceExternalImageFormatInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalImageFormatInfo* from,
+ VkPhysicalDeviceExternalImageFormatInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+}
+
+void deepcopy_VkExternalImageFormatProperties(
+ Pool* pool,
+ const VkExternalImageFormatProperties* from,
+ VkExternalImageFormatProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkExternalMemoryProperties(pool, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
+}
+
+void deepcopy_VkPhysicalDeviceExternalBufferInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalBufferInfo* from,
+ VkPhysicalDeviceExternalBufferInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->usage = from->usage;
+ to->handleType = from->handleType;
+}
+
+void deepcopy_VkExternalBufferProperties(
+ Pool* pool,
+ const VkExternalBufferProperties* from,
+ VkExternalBufferProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkExternalMemoryProperties(pool, &from->externalMemoryProperties, (VkExternalMemoryProperties*)(&to->externalMemoryProperties));
+}
+
+void deepcopy_VkPhysicalDeviceIDProperties(
+ Pool* pool,
+ const VkPhysicalDeviceIDProperties* from,
+ VkPhysicalDeviceIDProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ memcpy(to->deviceUUID, from->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ memcpy(to->driverUUID, from->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ memcpy(to->deviceLUID, from->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
+ to->deviceNodeMask = from->deviceNodeMask;
+ to->deviceLUIDValid = from->deviceLUIDValid;
+}
+
+void deepcopy_VkExternalMemoryImageCreateInfo(
+ Pool* pool,
+ const VkExternalMemoryImageCreateInfo* from,
+ VkExternalMemoryImageCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkExternalMemoryBufferCreateInfo(
+ Pool* pool,
+ const VkExternalMemoryBufferCreateInfo* from,
+ VkExternalMemoryBufferCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkExportMemoryAllocateInfo(
+ Pool* pool,
+ const VkExportMemoryAllocateInfo* from,
+ VkExportMemoryAllocateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkPhysicalDeviceExternalFenceInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalFenceInfo* from,
+ VkPhysicalDeviceExternalFenceInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+}
+
+void deepcopy_VkExternalFenceProperties(
+ Pool* pool,
+ const VkExternalFenceProperties* from,
+ VkExternalFenceProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->exportFromImportedHandleTypes = from->exportFromImportedHandleTypes;
+ to->compatibleHandleTypes = from->compatibleHandleTypes;
+ to->externalFenceFeatures = from->externalFenceFeatures;
+}
+
+void deepcopy_VkExportFenceCreateInfo(
+ Pool* pool,
+ const VkExportFenceCreateInfo* from,
+ VkExportFenceCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkExportSemaphoreCreateInfo(
+ Pool* pool,
+ const VkExportSemaphoreCreateInfo* from,
+ VkExportSemaphoreCreateInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalSemaphoreInfo* from,
+ VkPhysicalDeviceExternalSemaphoreInfo* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+}
+
+void deepcopy_VkExternalSemaphoreProperties(
+ Pool* pool,
+ const VkExternalSemaphoreProperties* from,
+ VkExternalSemaphoreProperties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->exportFromImportedHandleTypes = from->exportFromImportedHandleTypes;
+ to->compatibleHandleTypes = from->compatibleHandleTypes;
+ to->externalSemaphoreFeatures = from->externalSemaphoreFeatures;
+}
+
+void deepcopy_VkPhysicalDeviceMaintenance3Properties(
+ Pool* pool,
+ const VkPhysicalDeviceMaintenance3Properties* from,
+ VkPhysicalDeviceMaintenance3Properties* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxPerSetDescriptors = from->maxPerSetDescriptors;
+ to->maxMemoryAllocationSize = from->maxMemoryAllocationSize;
+}
+
+void deepcopy_VkDescriptorSetLayoutSupport(
+ Pool* pool,
+ const VkDescriptorSetLayoutSupport* from,
+ VkDescriptorSetLayoutSupport* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->supported = from->supported;
+}
+
+void deepcopy_VkPhysicalDeviceShaderDrawParameterFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* from,
+ VkPhysicalDeviceShaderDrawParameterFeatures* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->shaderDrawParameters = from->shaderDrawParameters;
+}
+
+#endif
+#ifdef VK_KHR_surface
+void deepcopy_VkSurfaceCapabilitiesKHR(
+ Pool* pool,
+ const VkSurfaceCapabilitiesKHR* from,
+ VkSurfaceCapabilitiesKHR* to)
+{
+ to->minImageCount = from->minImageCount;
+ to->maxImageCount = from->maxImageCount;
+ deepcopy_VkExtent2D(pool, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
+ deepcopy_VkExtent2D(pool, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
+ deepcopy_VkExtent2D(pool, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
+ to->maxImageArrayLayers = from->maxImageArrayLayers;
+ to->supportedTransforms = from->supportedTransforms;
+ to->currentTransform = from->currentTransform;
+ to->supportedCompositeAlpha = from->supportedCompositeAlpha;
+ to->supportedUsageFlags = from->supportedUsageFlags;
+}
+
+void deepcopy_VkSurfaceFormatKHR(
+ Pool* pool,
+ const VkSurfaceFormatKHR* from,
+ VkSurfaceFormatKHR* to)
+{
+ to->format = from->format;
+ to->colorSpace = from->colorSpace;
+}
+
+#endif
+#ifdef VK_KHR_swapchain
+void deepcopy_VkSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkSwapchainCreateInfoKHR* from,
+ VkSwapchainCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->surface = from->surface;
+ to->minImageCount = from->minImageCount;
+ to->imageFormat = from->imageFormat;
+ to->imageColorSpace = from->imageColorSpace;
+ deepcopy_VkExtent2D(pool, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
+ to->imageArrayLayers = from->imageArrayLayers;
+ to->imageUsage = from->imageUsage;
+ to->imageSharingMode = from->imageSharingMode;
+ to->queueFamilyIndexCount = from->queueFamilyIndexCount;
+ to->pQueueFamilyIndices = nullptr;
+ if (from->pQueueFamilyIndices)
+ {
+ to->pQueueFamilyIndices = (uint32_t*)pool->dupArray(from->pQueueFamilyIndices, from->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ to->preTransform = from->preTransform;
+ to->compositeAlpha = from->compositeAlpha;
+ to->presentMode = from->presentMode;
+ to->clipped = from->clipped;
+ to->oldSwapchain = from->oldSwapchain;
+}
+
+void deepcopy_VkPresentInfoKHR(
+ Pool* pool,
+ const VkPresentInfoKHR* from,
+ VkPresentInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->waitSemaphoreCount = from->waitSemaphoreCount;
+ to->pWaitSemaphores = nullptr;
+ if (from->pWaitSemaphores)
+ {
+ to->pWaitSemaphores = (VkSemaphore*)pool->dupArray(from->pWaitSemaphores, from->waitSemaphoreCount * sizeof(const VkSemaphore));
+ }
+ to->swapchainCount = from->swapchainCount;
+ to->pSwapchains = nullptr;
+ if (from->pSwapchains)
+ {
+ to->pSwapchains = (VkSwapchainKHR*)pool->dupArray(from->pSwapchains, from->swapchainCount * sizeof(const VkSwapchainKHR));
+ }
+ to->pImageIndices = nullptr;
+ if (from->pImageIndices)
+ {
+ to->pImageIndices = (uint32_t*)pool->dupArray(from->pImageIndices, from->swapchainCount * sizeof(const uint32_t));
+ }
+ to->pResults = nullptr;
+ if (from->pResults)
+ {
+ to->pResults = (VkResult*)pool->dupArray(from->pResults, from->swapchainCount * sizeof(VkResult));
+ }
+}
+
+void deepcopy_VkImageSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkImageSwapchainCreateInfoKHR* from,
+ VkImageSwapchainCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchain = from->swapchain;
+}
+
+void deepcopy_VkBindImageMemorySwapchainInfoKHR(
+ Pool* pool,
+ const VkBindImageMemorySwapchainInfoKHR* from,
+ VkBindImageMemorySwapchainInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchain = from->swapchain;
+ to->imageIndex = from->imageIndex;
+}
+
+void deepcopy_VkAcquireNextImageInfoKHR(
+ Pool* pool,
+ const VkAcquireNextImageInfoKHR* from,
+ VkAcquireNextImageInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchain = from->swapchain;
+ to->timeout = from->timeout;
+ to->semaphore = from->semaphore;
+ to->fence = from->fence;
+ to->deviceMask = from->deviceMask;
+}
+
+void deepcopy_VkDeviceGroupPresentCapabilitiesKHR(
+ Pool* pool,
+ const VkDeviceGroupPresentCapabilitiesKHR* from,
+ VkDeviceGroupPresentCapabilitiesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ memcpy(to->presentMask, from->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
+ to->modes = from->modes;
+}
+
+void deepcopy_VkDeviceGroupPresentInfoKHR(
+ Pool* pool,
+ const VkDeviceGroupPresentInfoKHR* from,
+ VkDeviceGroupPresentInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchainCount = from->swapchainCount;
+ to->pDeviceMasks = nullptr;
+ if (from->pDeviceMasks)
+ {
+ to->pDeviceMasks = (uint32_t*)pool->dupArray(from->pDeviceMasks, from->swapchainCount * sizeof(const uint32_t));
+ }
+ to->mode = from->mode;
+}
+
+void deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkDeviceGroupSwapchainCreateInfoKHR* from,
+ VkDeviceGroupSwapchainCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->modes = from->modes;
+}
+
+#endif
+#ifdef VK_KHR_display
+void deepcopy_VkDisplayPropertiesKHR(
+ Pool* pool,
+ const VkDisplayPropertiesKHR* from,
+ VkDisplayPropertiesKHR* to)
+{
+ to->display = from->display;
+ to->displayName = nullptr;
+ if (from->displayName)
+ {
+ to->displayName = pool->strDup(from->displayName);
+ }
+ deepcopy_VkExtent2D(pool, &from->physicalDimensions, (VkExtent2D*)(&to->physicalDimensions));
+ deepcopy_VkExtent2D(pool, &from->physicalResolution, (VkExtent2D*)(&to->physicalResolution));
+ to->supportedTransforms = from->supportedTransforms;
+ to->planeReorderPossible = from->planeReorderPossible;
+ to->persistentContent = from->persistentContent;
+}
+
+void deepcopy_VkDisplayModeParametersKHR(
+ Pool* pool,
+ const VkDisplayModeParametersKHR* from,
+ VkDisplayModeParametersKHR* to)
+{
+ deepcopy_VkExtent2D(pool, &from->visibleRegion, (VkExtent2D*)(&to->visibleRegion));
+ to->refreshRate = from->refreshRate;
+}
+
+void deepcopy_VkDisplayModePropertiesKHR(
+ Pool* pool,
+ const VkDisplayModePropertiesKHR* from,
+ VkDisplayModePropertiesKHR* to)
+{
+ to->displayMode = from->displayMode;
+ deepcopy_VkDisplayModeParametersKHR(pool, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
+}
+
+void deepcopy_VkDisplayModeCreateInfoKHR(
+ Pool* pool,
+ const VkDisplayModeCreateInfoKHR* from,
+ VkDisplayModeCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ deepcopy_VkDisplayModeParametersKHR(pool, &from->parameters, (VkDisplayModeParametersKHR*)(&to->parameters));
+}
+
+void deepcopy_VkDisplayPlaneCapabilitiesKHR(
+ Pool* pool,
+ const VkDisplayPlaneCapabilitiesKHR* from,
+ VkDisplayPlaneCapabilitiesKHR* to)
+{
+ to->supportedAlpha = from->supportedAlpha;
+ deepcopy_VkOffset2D(pool, &from->minSrcPosition, (VkOffset2D*)(&to->minSrcPosition));
+ deepcopy_VkOffset2D(pool, &from->maxSrcPosition, (VkOffset2D*)(&to->maxSrcPosition));
+ deepcopy_VkExtent2D(pool, &from->minSrcExtent, (VkExtent2D*)(&to->minSrcExtent));
+ deepcopy_VkExtent2D(pool, &from->maxSrcExtent, (VkExtent2D*)(&to->maxSrcExtent));
+ deepcopy_VkOffset2D(pool, &from->minDstPosition, (VkOffset2D*)(&to->minDstPosition));
+ deepcopy_VkOffset2D(pool, &from->maxDstPosition, (VkOffset2D*)(&to->maxDstPosition));
+ deepcopy_VkExtent2D(pool, &from->minDstExtent, (VkExtent2D*)(&to->minDstExtent));
+ deepcopy_VkExtent2D(pool, &from->maxDstExtent, (VkExtent2D*)(&to->maxDstExtent));
+}
+
+void deepcopy_VkDisplayPlanePropertiesKHR(
+ Pool* pool,
+ const VkDisplayPlanePropertiesKHR* from,
+ VkDisplayPlanePropertiesKHR* to)
+{
+ to->currentDisplay = from->currentDisplay;
+ to->currentStackIndex = from->currentStackIndex;
+}
+
+void deepcopy_VkDisplaySurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkDisplaySurfaceCreateInfoKHR* from,
+ VkDisplaySurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->displayMode = from->displayMode;
+ to->planeIndex = from->planeIndex;
+ to->planeStackIndex = from->planeStackIndex;
+ to->transform = from->transform;
+ to->globalAlpha = from->globalAlpha;
+ to->alphaMode = from->alphaMode;
+ deepcopy_VkExtent2D(pool, &from->imageExtent, (VkExtent2D*)(&to->imageExtent));
+}
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void deepcopy_VkDisplayPresentInfoKHR(
+ Pool* pool,
+ const VkDisplayPresentInfoKHR* from,
+ VkDisplayPresentInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkRect2D(pool, &from->srcRect, (VkRect2D*)(&to->srcRect));
+ deepcopy_VkRect2D(pool, &from->dstRect, (VkRect2D*)(&to->dstRect));
+ to->persistent = from->persistent;
+}
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void deepcopy_VkXlibSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkXlibSurfaceCreateInfoKHR* from,
+ VkXlibSurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->dpy = nullptr;
+ if (from->dpy)
+ {
+ to->dpy = (Display*)pool->dupArray(from->dpy, sizeof(Display));
+ }
+ to->window = from->window;
+}
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void deepcopy_VkXcbSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkXcbSurfaceCreateInfoKHR* from,
+ VkXcbSurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->connection = nullptr;
+ if (from->connection)
+ {
+ to->connection = (xcb_connection_t*)pool->dupArray(from->connection, sizeof(xcb_connection_t));
+ }
+ to->window = from->window;
+}
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void deepcopy_VkWaylandSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkWaylandSurfaceCreateInfoKHR* from,
+ VkWaylandSurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->display = nullptr;
+ if (from->display)
+ {
+ to->display = (wl_display*)pool->dupArray(from->display, sizeof(wl_display));
+ }
+ to->surface = nullptr;
+ if (from->surface)
+ {
+ to->surface = (wl_surface*)pool->dupArray(from->surface, sizeof(wl_surface));
+ }
+}
+
+#endif
+#ifdef VK_KHR_mir_surface
+void deepcopy_VkMirSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkMirSurfaceCreateInfoKHR* from,
+ VkMirSurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->connection = nullptr;
+ if (from->connection)
+ {
+ to->connection = (MirConnection*)pool->dupArray(from->connection, sizeof(MirConnection));
+ }
+ to->mirSurface = nullptr;
+ if (from->mirSurface)
+ {
+ to->mirSurface = (MirSurface*)pool->dupArray(from->mirSurface, sizeof(MirSurface));
+ }
+}
+
+#endif
+#ifdef VK_KHR_android_surface
+void deepcopy_VkAndroidSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkAndroidSurfaceCreateInfoKHR* from,
+ VkAndroidSurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->window = nullptr;
+ if (from->window)
+ {
+ to->window = (ANativeWindow*)pool->dupArray(from->window, sizeof(ANativeWindow));
+ }
+}
+
+#endif
+#ifdef VK_KHR_win32_surface
+void deepcopy_VkWin32SurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkWin32SurfaceCreateInfoKHR* from,
+ VkWin32SurfaceCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->hinstance = from->hinstance;
+ to->hwnd = from->hwnd;
+}
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void deepcopy_VkImportMemoryWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportMemoryWin32HandleInfoKHR* from,
+ VkImportMemoryWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+ to->handle = from->handle;
+ to->name = from->name;
+}
+
+void deepcopy_VkExportMemoryWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportMemoryWin32HandleInfoKHR* from,
+ VkExportMemoryWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pAttributes = nullptr;
+ if (from->pAttributes)
+ {
+ to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ to->dwAccess = from->dwAccess;
+ to->name = from->name;
+}
+
+void deepcopy_VkMemoryWin32HandlePropertiesKHR(
+ Pool* pool,
+ const VkMemoryWin32HandlePropertiesKHR* from,
+ VkMemoryWin32HandlePropertiesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memoryTypeBits = from->memoryTypeBits;
+}
+
+void deepcopy_VkMemoryGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkMemoryGetWin32HandleInfoKHR* from,
+ VkMemoryGetWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memory = from->memory;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void deepcopy_VkImportMemoryFdInfoKHR(
+ Pool* pool,
+ const VkImportMemoryFdInfoKHR* from,
+ VkImportMemoryFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+ to->fd = from->fd;
+}
+
+void deepcopy_VkMemoryFdPropertiesKHR(
+ Pool* pool,
+ const VkMemoryFdPropertiesKHR* from,
+ VkMemoryFdPropertiesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memoryTypeBits = from->memoryTypeBits;
+}
+
+void deepcopy_VkMemoryGetFdInfoKHR(
+ Pool* pool,
+ const VkMemoryGetFdInfoKHR* from,
+ VkMemoryGetFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memory = from->memory;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ Pool* pool,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* from,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->acquireCount = from->acquireCount;
+ to->pAcquireSyncs = nullptr;
+ if (from->pAcquireSyncs)
+ {
+ to->pAcquireSyncs = (VkDeviceMemory*)pool->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
+ }
+ to->pAcquireKeys = nullptr;
+ if (from->pAcquireKeys)
+ {
+ to->pAcquireKeys = (uint64_t*)pool->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
+ }
+ to->pAcquireTimeouts = nullptr;
+ if (from->pAcquireTimeouts)
+ {
+ to->pAcquireTimeouts = (uint32_t*)pool->dupArray(from->pAcquireTimeouts, from->acquireCount * sizeof(const uint32_t));
+ }
+ to->releaseCount = from->releaseCount;
+ to->pReleaseSyncs = nullptr;
+ if (from->pReleaseSyncs)
+ {
+ to->pReleaseSyncs = (VkDeviceMemory*)pool->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
+ }
+ to->pReleaseKeys = nullptr;
+ if (from->pReleaseKeys)
+ {
+ to->pReleaseKeys = (uint64_t*)pool->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
+ }
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void deepcopy_VkImportSemaphoreWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportSemaphoreWin32HandleInfoKHR* from,
+ VkImportSemaphoreWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->semaphore = from->semaphore;
+ to->flags = from->flags;
+ to->handleType = from->handleType;
+ to->handle = from->handle;
+ to->name = from->name;
+}
+
+void deepcopy_VkExportSemaphoreWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportSemaphoreWin32HandleInfoKHR* from,
+ VkExportSemaphoreWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pAttributes = nullptr;
+ if (from->pAttributes)
+ {
+ to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ to->dwAccess = from->dwAccess;
+ to->name = from->name;
+}
+
+void deepcopy_VkD3D12FenceSubmitInfoKHR(
+ Pool* pool,
+ const VkD3D12FenceSubmitInfoKHR* from,
+ VkD3D12FenceSubmitInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->waitSemaphoreValuesCount = from->waitSemaphoreValuesCount;
+ to->pWaitSemaphoreValues = nullptr;
+ if (from->pWaitSemaphoreValues)
+ {
+ to->pWaitSemaphoreValues = (uint64_t*)pool->dupArray(from->pWaitSemaphoreValues, from->waitSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+ to->signalSemaphoreValuesCount = from->signalSemaphoreValuesCount;
+ to->pSignalSemaphoreValues = nullptr;
+ if (from->pSignalSemaphoreValues)
+ {
+ to->pSignalSemaphoreValues = (uint64_t*)pool->dupArray(from->pSignalSemaphoreValues, from->signalSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+}
+
+void deepcopy_VkSemaphoreGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkSemaphoreGetWin32HandleInfoKHR* from,
+ VkSemaphoreGetWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->semaphore = from->semaphore;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void deepcopy_VkImportSemaphoreFdInfoKHR(
+ Pool* pool,
+ const VkImportSemaphoreFdInfoKHR* from,
+ VkImportSemaphoreFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->semaphore = from->semaphore;
+ to->flags = from->flags;
+ to->handleType = from->handleType;
+ to->fd = from->fd;
+}
+
+void deepcopy_VkSemaphoreGetFdInfoKHR(
+ Pool* pool,
+ const VkSemaphoreGetFdInfoKHR* from,
+ VkSemaphoreGetFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->semaphore = from->semaphore;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ Pool* pool,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* from,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxPushDescriptors = from->maxPushDescriptors;
+}
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void deepcopy_VkRectLayerKHR(
+ Pool* pool,
+ const VkRectLayerKHR* from,
+ VkRectLayerKHR* to)
+{
+ deepcopy_VkOffset2D(pool, &from->offset, (VkOffset2D*)(&to->offset));
+ deepcopy_VkExtent2D(pool, &from->extent, (VkExtent2D*)(&to->extent));
+ to->layer = from->layer;
+}
+
+void deepcopy_VkPresentRegionKHR(
+ Pool* pool,
+ const VkPresentRegionKHR* from,
+ VkPresentRegionKHR* to)
+{
+ to->rectangleCount = from->rectangleCount;
+ to->pRectangles = nullptr;
+ if (from->pRectangles)
+ {
+ to->pRectangles = (VkRectLayerKHR*)pool->alloc(from->rectangleCount * sizeof(const VkRectLayerKHR));
+ to->rectangleCount = from->rectangleCount;
+ for (uint32_t i = 0; i < (uint32_t)from->rectangleCount; ++i)
+ {
+ deepcopy_VkRectLayerKHR(pool, from->pRectangles + i, (VkRectLayerKHR*)(to->pRectangles + i));
+ }
+ }
+}
+
+void deepcopy_VkPresentRegionsKHR(
+ Pool* pool,
+ const VkPresentRegionsKHR* from,
+ VkPresentRegionsKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchainCount = from->swapchainCount;
+ to->pRegions = nullptr;
+ if (from->pRegions)
+ {
+ to->pRegions = (VkPresentRegionKHR*)pool->alloc(from->swapchainCount * sizeof(const VkPresentRegionKHR));
+ to->swapchainCount = from->swapchainCount;
+ for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
+ {
+ deepcopy_VkPresentRegionKHR(pool, from->pRegions + i, (VkPresentRegionKHR*)(to->pRegions + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void deepcopy_VkAttachmentDescription2KHR(
+ Pool* pool,
+ const VkAttachmentDescription2KHR* from,
+ VkAttachmentDescription2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->format = from->format;
+ to->samples = from->samples;
+ to->loadOp = from->loadOp;
+ to->storeOp = from->storeOp;
+ to->stencilLoadOp = from->stencilLoadOp;
+ to->stencilStoreOp = from->stencilStoreOp;
+ to->initialLayout = from->initialLayout;
+ to->finalLayout = from->finalLayout;
+}
+
+void deepcopy_VkAttachmentReference2KHR(
+ Pool* pool,
+ const VkAttachmentReference2KHR* from,
+ VkAttachmentReference2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->attachment = from->attachment;
+ to->layout = from->layout;
+ to->aspectMask = from->aspectMask;
+}
+
+void deepcopy_VkSubpassDescription2KHR(
+ Pool* pool,
+ const VkSubpassDescription2KHR* from,
+ VkSubpassDescription2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pipelineBindPoint = from->pipelineBindPoint;
+ to->viewMask = from->viewMask;
+ to->inputAttachmentCount = from->inputAttachmentCount;
+ to->pInputAttachments = nullptr;
+ if (from->pInputAttachments)
+ {
+ to->pInputAttachments = (VkAttachmentReference2KHR*)pool->alloc(from->inputAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ to->inputAttachmentCount = from->inputAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->inputAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference2KHR(pool, from->pInputAttachments + i, (VkAttachmentReference2KHR*)(to->pInputAttachments + i));
+ }
+ }
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ to->pColorAttachments = nullptr;
+ if (from->pColorAttachments)
+ {
+ to->pColorAttachments = (VkAttachmentReference2KHR*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference2KHR(pool, from->pColorAttachments + i, (VkAttachmentReference2KHR*)(to->pColorAttachments + i));
+ }
+ }
+ to->pResolveAttachments = nullptr;
+ if (from->pResolveAttachments)
+ {
+ to->pResolveAttachments = (VkAttachmentReference2KHR*)pool->alloc(from->colorAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ to->colorAttachmentCount = from->colorAttachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->colorAttachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentReference2KHR(pool, from->pResolveAttachments + i, (VkAttachmentReference2KHR*)(to->pResolveAttachments + i));
+ }
+ }
+ to->pDepthStencilAttachment = nullptr;
+ if (from->pDepthStencilAttachment)
+ {
+ to->pDepthStencilAttachment = (VkAttachmentReference2KHR*)pool->alloc(sizeof(const VkAttachmentReference2KHR));
+ deepcopy_VkAttachmentReference2KHR(pool, from->pDepthStencilAttachment, (VkAttachmentReference2KHR*)(to->pDepthStencilAttachment));
+ }
+ to->preserveAttachmentCount = from->preserveAttachmentCount;
+ to->pPreserveAttachments = nullptr;
+ if (from->pPreserveAttachments)
+ {
+ to->pPreserveAttachments = (uint32_t*)pool->dupArray(from->pPreserveAttachments, from->preserveAttachmentCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkSubpassDependency2KHR(
+ Pool* pool,
+ const VkSubpassDependency2KHR* from,
+ VkSubpassDependency2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcSubpass = from->srcSubpass;
+ to->dstSubpass = from->dstSubpass;
+ to->srcStageMask = from->srcStageMask;
+ to->dstStageMask = from->dstStageMask;
+ to->srcAccessMask = from->srcAccessMask;
+ to->dstAccessMask = from->dstAccessMask;
+ to->dependencyFlags = from->dependencyFlags;
+ to->viewOffset = from->viewOffset;
+}
+
+void deepcopy_VkRenderPassCreateInfo2KHR(
+ Pool* pool,
+ const VkRenderPassCreateInfo2KHR* from,
+ VkRenderPassCreateInfo2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->attachmentCount = from->attachmentCount;
+ to->pAttachments = nullptr;
+ if (from->pAttachments)
+ {
+ to->pAttachments = (VkAttachmentDescription2KHR*)pool->alloc(from->attachmentCount * sizeof(const VkAttachmentDescription2KHR));
+ to->attachmentCount = from->attachmentCount;
+ for (uint32_t i = 0; i < (uint32_t)from->attachmentCount; ++i)
+ {
+ deepcopy_VkAttachmentDescription2KHR(pool, from->pAttachments + i, (VkAttachmentDescription2KHR*)(to->pAttachments + i));
+ }
+ }
+ to->subpassCount = from->subpassCount;
+ to->pSubpasses = nullptr;
+ if (from->pSubpasses)
+ {
+ to->pSubpasses = (VkSubpassDescription2KHR*)pool->alloc(from->subpassCount * sizeof(const VkSubpassDescription2KHR));
+ to->subpassCount = from->subpassCount;
+ for (uint32_t i = 0; i < (uint32_t)from->subpassCount; ++i)
+ {
+ deepcopy_VkSubpassDescription2KHR(pool, from->pSubpasses + i, (VkSubpassDescription2KHR*)(to->pSubpasses + i));
+ }
+ }
+ to->dependencyCount = from->dependencyCount;
+ to->pDependencies = nullptr;
+ if (from->pDependencies)
+ {
+ to->pDependencies = (VkSubpassDependency2KHR*)pool->alloc(from->dependencyCount * sizeof(const VkSubpassDependency2KHR));
+ to->dependencyCount = from->dependencyCount;
+ for (uint32_t i = 0; i < (uint32_t)from->dependencyCount; ++i)
+ {
+ deepcopy_VkSubpassDependency2KHR(pool, from->pDependencies + i, (VkSubpassDependency2KHR*)(to->pDependencies + i));
+ }
+ }
+ to->correlatedViewMaskCount = from->correlatedViewMaskCount;
+ to->pCorrelatedViewMasks = nullptr;
+ if (from->pCorrelatedViewMasks)
+ {
+ to->pCorrelatedViewMasks = (uint32_t*)pool->dupArray(from->pCorrelatedViewMasks, from->correlatedViewMaskCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkSubpassBeginInfoKHR(
+ Pool* pool,
+ const VkSubpassBeginInfoKHR* from,
+ VkSubpassBeginInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->contents = from->contents;
+}
+
+void deepcopy_VkSubpassEndInfoKHR(
+ Pool* pool,
+ const VkSubpassEndInfoKHR* from,
+ VkSubpassEndInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+}
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(
+ Pool* pool,
+ const VkSharedPresentSurfaceCapabilitiesKHR* from,
+ VkSharedPresentSurfaceCapabilitiesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->sharedPresentSupportedUsageFlags = from->sharedPresentSupportedUsageFlags;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void deepcopy_VkImportFenceWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportFenceWin32HandleInfoKHR* from,
+ VkImportFenceWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->fence = from->fence;
+ to->flags = from->flags;
+ to->handleType = from->handleType;
+ to->handle = from->handle;
+ to->name = from->name;
+}
+
+void deepcopy_VkExportFenceWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportFenceWin32HandleInfoKHR* from,
+ VkExportFenceWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pAttributes = nullptr;
+ if (from->pAttributes)
+ {
+ to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ to->dwAccess = from->dwAccess;
+ to->name = from->name;
+}
+
+void deepcopy_VkFenceGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkFenceGetWin32HandleInfoKHR* from,
+ VkFenceGetWin32HandleInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->fence = from->fence;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void deepcopy_VkImportFenceFdInfoKHR(
+ Pool* pool,
+ const VkImportFenceFdInfoKHR* from,
+ VkImportFenceFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->fence = from->fence;
+ to->flags = from->flags;
+ to->handleType = from->handleType;
+ to->fd = from->fd;
+}
+
+void deepcopy_VkFenceGetFdInfoKHR(
+ Pool* pool,
+ const VkFenceGetFdInfoKHR* from,
+ VkFenceGetFdInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->fence = from->fence;
+ to->handleType = from->handleType;
+}
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(
+ Pool* pool,
+ const VkPhysicalDeviceSurfaceInfo2KHR* from,
+ VkPhysicalDeviceSurfaceInfo2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->surface = from->surface;
+}
+
+void deepcopy_VkSurfaceCapabilities2KHR(
+ Pool* pool,
+ const VkSurfaceCapabilities2KHR* from,
+ VkSurfaceCapabilities2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkSurfaceCapabilitiesKHR(pool, &from->surfaceCapabilities, (VkSurfaceCapabilitiesKHR*)(&to->surfaceCapabilities));
+}
+
+void deepcopy_VkSurfaceFormat2KHR(
+ Pool* pool,
+ const VkSurfaceFormat2KHR* from,
+ VkSurfaceFormat2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkSurfaceFormatKHR(pool, &from->surfaceFormat, (VkSurfaceFormatKHR*)(&to->surfaceFormat));
+}
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void deepcopy_VkDisplayProperties2KHR(
+ Pool* pool,
+ const VkDisplayProperties2KHR* from,
+ VkDisplayProperties2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkDisplayPropertiesKHR(pool, &from->displayProperties, (VkDisplayPropertiesKHR*)(&to->displayProperties));
+}
+
+void deepcopy_VkDisplayPlaneProperties2KHR(
+ Pool* pool,
+ const VkDisplayPlaneProperties2KHR* from,
+ VkDisplayPlaneProperties2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkDisplayPlanePropertiesKHR(pool, &from->displayPlaneProperties, (VkDisplayPlanePropertiesKHR*)(&to->displayPlaneProperties));
+}
+
+void deepcopy_VkDisplayModeProperties2KHR(
+ Pool* pool,
+ const VkDisplayModeProperties2KHR* from,
+ VkDisplayModeProperties2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkDisplayModePropertiesKHR(pool, &from->displayModeProperties, (VkDisplayModePropertiesKHR*)(&to->displayModeProperties));
+}
+
+void deepcopy_VkDisplayPlaneInfo2KHR(
+ Pool* pool,
+ const VkDisplayPlaneInfo2KHR* from,
+ VkDisplayPlaneInfo2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->mode = from->mode;
+ to->planeIndex = from->planeIndex;
+}
+
+void deepcopy_VkDisplayPlaneCapabilities2KHR(
+ Pool* pool,
+ const VkDisplayPlaneCapabilities2KHR* from,
+ VkDisplayPlaneCapabilities2KHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkDisplayPlaneCapabilitiesKHR(pool, &from->capabilities, (VkDisplayPlaneCapabilitiesKHR*)(&to->capabilities));
+}
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void deepcopy_VkImageFormatListCreateInfoKHR(
+ Pool* pool,
+ const VkImageFormatListCreateInfoKHR* from,
+ VkImageFormatListCreateInfoKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->viewFormatCount = from->viewFormatCount;
+ to->pViewFormats = nullptr;
+ if (from->pViewFormats)
+ {
+ to->pViewFormats = (VkFormat*)pool->dupArray(from->pViewFormats, from->viewFormatCount * sizeof(const VkFormat));
+ }
+}
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void deepcopy_VkPhysicalDevice8BitStorageFeaturesKHR(
+ Pool* pool,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* from,
+ VkPhysicalDevice8BitStorageFeaturesKHR* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->storageBuffer8BitAccess = from->storageBuffer8BitAccess;
+ to->uniformAndStorageBuffer8BitAccess = from->uniformAndStorageBuffer8BitAccess;
+ to->storagePushConstant8 = from->storagePushConstant8;
+}
+
+#endif
+#ifdef VK_EXT_debug_report
+void deepcopy_VkDebugReportCallbackCreateInfoEXT(
+ Pool* pool,
+ const VkDebugReportCallbackCreateInfoEXT* from,
+ VkDebugReportCallbackCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pfnCallback = from->pfnCallback;
+ to->pUserData = nullptr;
+ if (from->pUserData)
+ {
+ to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(
+ Pool* pool,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* from,
+ VkPipelineRasterizationStateRasterizationOrderAMD* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->rasterizationOrder = from->rasterizationOrder;
+}
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void deepcopy_VkDebugMarkerObjectNameInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerObjectNameInfoEXT* from,
+ VkDebugMarkerObjectNameInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectType = from->objectType;
+ to->object = from->object;
+ to->pObjectName = nullptr;
+ if (from->pObjectName)
+ {
+ to->pObjectName = pool->strDup(from->pObjectName);
+ }
+}
+
+void deepcopy_VkDebugMarkerObjectTagInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerObjectTagInfoEXT* from,
+ VkDebugMarkerObjectTagInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectType = from->objectType;
+ to->object = from->object;
+ to->tagName = from->tagName;
+ to->tagSize = from->tagSize;
+ to->pTag = nullptr;
+ if (from->pTag)
+ {
+ to->pTag = (void*)pool->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
+ }
+}
+
+void deepcopy_VkDebugMarkerMarkerInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerMarkerInfoEXT* from,
+ VkDebugMarkerMarkerInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pMarkerName = nullptr;
+ if (from->pMarkerName)
+ {
+ to->pMarkerName = pool->strDup(from->pMarkerName);
+ }
+ memcpy(to->color, from->color, 4 * sizeof(float));
+}
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void deepcopy_VkDedicatedAllocationImageCreateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationImageCreateInfoNV* from,
+ VkDedicatedAllocationImageCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->dedicatedAllocation = from->dedicatedAllocation;
+}
+
+void deepcopy_VkDedicatedAllocationBufferCreateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationBufferCreateInfoNV* from,
+ VkDedicatedAllocationBufferCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->dedicatedAllocation = from->dedicatedAllocation;
+}
+
+void deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* from,
+ VkDedicatedAllocationMemoryAllocateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->image = from->image;
+ to->buffer = from->buffer;
+}
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void deepcopy_VkTextureLODGatherFormatPropertiesAMD(
+ Pool* pool,
+ const VkTextureLODGatherFormatPropertiesAMD* from,
+ VkTextureLODGatherFormatPropertiesAMD* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->supportsTextureGatherLODBiasAMD = from->supportsTextureGatherLODBiasAMD;
+}
+
+#endif
+#ifdef VK_AMD_shader_info
+void deepcopy_VkShaderResourceUsageAMD(
+ Pool* pool,
+ const VkShaderResourceUsageAMD* from,
+ VkShaderResourceUsageAMD* to)
+{
+ to->numUsedVgprs = from->numUsedVgprs;
+ to->numUsedSgprs = from->numUsedSgprs;
+ to->ldsSizePerLocalWorkGroup = from->ldsSizePerLocalWorkGroup;
+ to->ldsUsageSizeInBytes = from->ldsUsageSizeInBytes;
+ to->scratchMemUsageInBytes = from->scratchMemUsageInBytes;
+}
+
+void deepcopy_VkShaderStatisticsInfoAMD(
+ Pool* pool,
+ const VkShaderStatisticsInfoAMD* from,
+ VkShaderStatisticsInfoAMD* to)
+{
+ to->shaderStageMask = from->shaderStageMask;
+ deepcopy_VkShaderResourceUsageAMD(pool, &from->resourceUsage, (VkShaderResourceUsageAMD*)(&to->resourceUsage));
+ to->numPhysicalVgprs = from->numPhysicalVgprs;
+ to->numPhysicalSgprs = from->numPhysicalSgprs;
+ to->numAvailableVgprs = from->numAvailableVgprs;
+ to->numAvailableSgprs = from->numAvailableSgprs;
+ memcpy(to->computeWorkGroupSize, from->computeWorkGroupSize, 3 * sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void deepcopy_VkExternalImageFormatPropertiesNV(
+ Pool* pool,
+ const VkExternalImageFormatPropertiesNV* from,
+ VkExternalImageFormatPropertiesNV* to)
+{
+ deepcopy_VkImageFormatProperties(pool, &from->imageFormatProperties, (VkImageFormatProperties*)(&to->imageFormatProperties));
+ to->externalMemoryFeatures = from->externalMemoryFeatures;
+ to->exportFromImportedHandleTypes = from->exportFromImportedHandleTypes;
+ to->compatibleHandleTypes = from->compatibleHandleTypes;
+}
+
+#endif
+#ifdef VK_NV_external_memory
+void deepcopy_VkExternalMemoryImageCreateInfoNV(
+ Pool* pool,
+ const VkExternalMemoryImageCreateInfoNV* from,
+ VkExternalMemoryImageCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+void deepcopy_VkExportMemoryAllocateInfoNV(
+ Pool* pool,
+ const VkExportMemoryAllocateInfoNV* from,
+ VkExportMemoryAllocateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleTypes = from->handleTypes;
+}
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void deepcopy_VkImportMemoryWin32HandleInfoNV(
+ Pool* pool,
+ const VkImportMemoryWin32HandleInfoNV* from,
+ VkImportMemoryWin32HandleInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+ to->handle = from->handle;
+}
+
+void deepcopy_VkExportMemoryWin32HandleInfoNV(
+ Pool* pool,
+ const VkExportMemoryWin32HandleInfoNV* from,
+ VkExportMemoryWin32HandleInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pAttributes = nullptr;
+ if (from->pAttributes)
+ {
+ to->pAttributes = (SECURITY_ATTRIBUTES*)pool->dupArray(from->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ to->dwAccess = from->dwAccess;
+}
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ Pool* pool,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* from,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->acquireCount = from->acquireCount;
+ to->pAcquireSyncs = nullptr;
+ if (from->pAcquireSyncs)
+ {
+ to->pAcquireSyncs = (VkDeviceMemory*)pool->dupArray(from->pAcquireSyncs, from->acquireCount * sizeof(const VkDeviceMemory));
+ }
+ to->pAcquireKeys = nullptr;
+ if (from->pAcquireKeys)
+ {
+ to->pAcquireKeys = (uint64_t*)pool->dupArray(from->pAcquireKeys, from->acquireCount * sizeof(const uint64_t));
+ }
+ to->pAcquireTimeoutMilliseconds = nullptr;
+ if (from->pAcquireTimeoutMilliseconds)
+ {
+ to->pAcquireTimeoutMilliseconds = (uint32_t*)pool->dupArray(from->pAcquireTimeoutMilliseconds, from->acquireCount * sizeof(const uint32_t));
+ }
+ to->releaseCount = from->releaseCount;
+ to->pReleaseSyncs = nullptr;
+ if (from->pReleaseSyncs)
+ {
+ to->pReleaseSyncs = (VkDeviceMemory*)pool->dupArray(from->pReleaseSyncs, from->releaseCount * sizeof(const VkDeviceMemory));
+ }
+ to->pReleaseKeys = nullptr;
+ if (from->pReleaseKeys)
+ {
+ to->pReleaseKeys = (uint64_t*)pool->dupArray(from->pReleaseKeys, from->releaseCount * sizeof(const uint64_t));
+ }
+}
+
+#endif
+#ifdef VK_EXT_validation_flags
+void deepcopy_VkValidationFlagsEXT(
+ Pool* pool,
+ const VkValidationFlagsEXT* from,
+ VkValidationFlagsEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->disabledValidationCheckCount = from->disabledValidationCheckCount;
+ to->pDisabledValidationChecks = nullptr;
+ if (from->pDisabledValidationChecks)
+ {
+ to->pDisabledValidationChecks = (VkValidationCheckEXT*)pool->dupArray(from->pDisabledValidationChecks, from->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
+ }
+}
+
+#endif
+#ifdef VK_NN_vi_surface
+void deepcopy_VkViSurfaceCreateInfoNN(
+ Pool* pool,
+ const VkViSurfaceCreateInfoNN* from,
+ VkViSurfaceCreateInfoNN* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->window = nullptr;
+ if (from->window)
+ {
+ to->window = (void*)pool->dupArray(from->window, sizeof(uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void deepcopy_VkConditionalRenderingBeginInfoEXT(
+ Pool* pool,
+ const VkConditionalRenderingBeginInfoEXT* from,
+ VkConditionalRenderingBeginInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->buffer = from->buffer;
+ to->offset = from->offset;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* from,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->conditionalRendering = from->conditionalRendering;
+ to->inheritedConditionalRendering = from->inheritedConditionalRendering;
+}
+
+void deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ Pool* pool,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* from,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->conditionalRenderingEnable = from->conditionalRenderingEnable;
+}
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void deepcopy_VkDeviceGeneratedCommandsFeaturesNVX(
+ Pool* pool,
+ const VkDeviceGeneratedCommandsFeaturesNVX* from,
+ VkDeviceGeneratedCommandsFeaturesNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->computeBindingPointSupport = from->computeBindingPointSupport;
+}
+
+void deepcopy_VkDeviceGeneratedCommandsLimitsNVX(
+ Pool* pool,
+ const VkDeviceGeneratedCommandsLimitsNVX* from,
+ VkDeviceGeneratedCommandsLimitsNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxIndirectCommandsLayoutTokenCount = from->maxIndirectCommandsLayoutTokenCount;
+ to->maxObjectEntryCounts = from->maxObjectEntryCounts;
+ to->minSequenceCountBufferOffsetAlignment = from->minSequenceCountBufferOffsetAlignment;
+ to->minSequenceIndexBufferOffsetAlignment = from->minSequenceIndexBufferOffsetAlignment;
+ to->minCommandsTokenBufferOffsetAlignment = from->minCommandsTokenBufferOffsetAlignment;
+}
+
+void deepcopy_VkIndirectCommandsTokenNVX(
+ Pool* pool,
+ const VkIndirectCommandsTokenNVX* from,
+ VkIndirectCommandsTokenNVX* to)
+{
+ to->tokenType = from->tokenType;
+ to->buffer = from->buffer;
+ to->offset = from->offset;
+}
+
+void deepcopy_VkIndirectCommandsLayoutTokenNVX(
+ Pool* pool,
+ const VkIndirectCommandsLayoutTokenNVX* from,
+ VkIndirectCommandsLayoutTokenNVX* to)
+{
+ to->tokenType = from->tokenType;
+ to->bindingUnit = from->bindingUnit;
+ to->dynamicCount = from->dynamicCount;
+ to->divisor = from->divisor;
+}
+
+void deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(
+ Pool* pool,
+ const VkIndirectCommandsLayoutCreateInfoNVX* from,
+ VkIndirectCommandsLayoutCreateInfoNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pipelineBindPoint = from->pipelineBindPoint;
+ to->flags = from->flags;
+ to->tokenCount = from->tokenCount;
+ to->pTokens = nullptr;
+ if (from->pTokens)
+ {
+ to->pTokens = (VkIndirectCommandsLayoutTokenNVX*)pool->alloc(from->tokenCount * sizeof(const VkIndirectCommandsLayoutTokenNVX));
+ to->tokenCount = from->tokenCount;
+ for (uint32_t i = 0; i < (uint32_t)from->tokenCount; ++i)
+ {
+ deepcopy_VkIndirectCommandsLayoutTokenNVX(pool, from->pTokens + i, (VkIndirectCommandsLayoutTokenNVX*)(to->pTokens + i));
+ }
+ }
+}
+
+void deepcopy_VkCmdProcessCommandsInfoNVX(
+ Pool* pool,
+ const VkCmdProcessCommandsInfoNVX* from,
+ VkCmdProcessCommandsInfoNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectTable = from->objectTable;
+ to->indirectCommandsLayout = from->indirectCommandsLayout;
+ to->indirectCommandsTokenCount = from->indirectCommandsTokenCount;
+ to->pIndirectCommandsTokens = nullptr;
+ if (from->pIndirectCommandsTokens)
+ {
+ to->pIndirectCommandsTokens = (VkIndirectCommandsTokenNVX*)pool->alloc(from->indirectCommandsTokenCount * sizeof(const VkIndirectCommandsTokenNVX));
+ to->indirectCommandsTokenCount = from->indirectCommandsTokenCount;
+ for (uint32_t i = 0; i < (uint32_t)from->indirectCommandsTokenCount; ++i)
+ {
+ deepcopy_VkIndirectCommandsTokenNVX(pool, from->pIndirectCommandsTokens + i, (VkIndirectCommandsTokenNVX*)(to->pIndirectCommandsTokens + i));
+ }
+ }
+ to->maxSequencesCount = from->maxSequencesCount;
+ to->targetCommandBuffer = from->targetCommandBuffer;
+ to->sequencesCountBuffer = from->sequencesCountBuffer;
+ to->sequencesCountOffset = from->sequencesCountOffset;
+ to->sequencesIndexBuffer = from->sequencesIndexBuffer;
+ to->sequencesIndexOffset = from->sequencesIndexOffset;
+}
+
+void deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(
+ Pool* pool,
+ const VkCmdReserveSpaceForCommandsInfoNVX* from,
+ VkCmdReserveSpaceForCommandsInfoNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectTable = from->objectTable;
+ to->indirectCommandsLayout = from->indirectCommandsLayout;
+ to->maxSequencesCount = from->maxSequencesCount;
+}
+
+void deepcopy_VkObjectTableCreateInfoNVX(
+ Pool* pool,
+ const VkObjectTableCreateInfoNVX* from,
+ VkObjectTableCreateInfoNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectCount = from->objectCount;
+ to->pObjectEntryTypes = nullptr;
+ if (from->pObjectEntryTypes)
+ {
+ to->pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(from->pObjectEntryTypes, from->objectCount * sizeof(const VkObjectEntryTypeNVX));
+ }
+ to->pObjectEntryCounts = nullptr;
+ if (from->pObjectEntryCounts)
+ {
+ to->pObjectEntryCounts = (uint32_t*)pool->dupArray(from->pObjectEntryCounts, from->objectCount * sizeof(const uint32_t));
+ }
+ to->pObjectEntryUsageFlags = nullptr;
+ if (from->pObjectEntryUsageFlags)
+ {
+ to->pObjectEntryUsageFlags = (VkObjectEntryUsageFlagsNVX*)pool->dupArray(from->pObjectEntryUsageFlags, from->objectCount * sizeof(const VkObjectEntryUsageFlagsNVX));
+ }
+ to->maxUniformBuffersPerDescriptor = from->maxUniformBuffersPerDescriptor;
+ to->maxStorageBuffersPerDescriptor = from->maxStorageBuffersPerDescriptor;
+ to->maxStorageImagesPerDescriptor = from->maxStorageImagesPerDescriptor;
+ to->maxSampledImagesPerDescriptor = from->maxSampledImagesPerDescriptor;
+ to->maxPipelineLayouts = from->maxPipelineLayouts;
+}
+
+void deepcopy_VkObjectTableEntryNVX(
+ Pool* pool,
+ const VkObjectTableEntryNVX* from,
+ VkObjectTableEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+}
+
+void deepcopy_VkObjectTablePipelineEntryNVX(
+ Pool* pool,
+ const VkObjectTablePipelineEntryNVX* from,
+ VkObjectTablePipelineEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+ to->pipeline = from->pipeline;
+}
+
+void deepcopy_VkObjectTableDescriptorSetEntryNVX(
+ Pool* pool,
+ const VkObjectTableDescriptorSetEntryNVX* from,
+ VkObjectTableDescriptorSetEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+ to->pipelineLayout = from->pipelineLayout;
+ to->descriptorSet = from->descriptorSet;
+}
+
+void deepcopy_VkObjectTableVertexBufferEntryNVX(
+ Pool* pool,
+ const VkObjectTableVertexBufferEntryNVX* from,
+ VkObjectTableVertexBufferEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+ to->buffer = from->buffer;
+}
+
+void deepcopy_VkObjectTableIndexBufferEntryNVX(
+ Pool* pool,
+ const VkObjectTableIndexBufferEntryNVX* from,
+ VkObjectTableIndexBufferEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+ to->buffer = from->buffer;
+ to->indexType = from->indexType;
+}
+
+void deepcopy_VkObjectTablePushConstantEntryNVX(
+ Pool* pool,
+ const VkObjectTablePushConstantEntryNVX* from,
+ VkObjectTablePushConstantEntryNVX* to)
+{
+ to->type = from->type;
+ to->flags = from->flags;
+ to->pipelineLayout = from->pipelineLayout;
+ to->stageFlags = from->stageFlags;
+}
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void deepcopy_VkViewportWScalingNV(
+ Pool* pool,
+ const VkViewportWScalingNV* from,
+ VkViewportWScalingNV* to)
+{
+ to->xcoeff = from->xcoeff;
+ to->ycoeff = from->ycoeff;
+}
+
+void deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineViewportWScalingStateCreateInfoNV* from,
+ VkPipelineViewportWScalingStateCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->viewportWScalingEnable = from->viewportWScalingEnable;
+ to->viewportCount = from->viewportCount;
+ to->pViewportWScalings = nullptr;
+ if (from->pViewportWScalings)
+ {
+ to->pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(from->viewportCount * sizeof(const VkViewportWScalingNV));
+ to->viewportCount = from->viewportCount;
+ for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
+ {
+ deepcopy_VkViewportWScalingNV(pool, from->pViewportWScalings + i, (VkViewportWScalingNV*)(to->pViewportWScalings + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void deepcopy_VkSurfaceCapabilities2EXT(
+ Pool* pool,
+ const VkSurfaceCapabilities2EXT* from,
+ VkSurfaceCapabilities2EXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->minImageCount = from->minImageCount;
+ to->maxImageCount = from->maxImageCount;
+ deepcopy_VkExtent2D(pool, &from->currentExtent, (VkExtent2D*)(&to->currentExtent));
+ deepcopy_VkExtent2D(pool, &from->minImageExtent, (VkExtent2D*)(&to->minImageExtent));
+ deepcopy_VkExtent2D(pool, &from->maxImageExtent, (VkExtent2D*)(&to->maxImageExtent));
+ to->maxImageArrayLayers = from->maxImageArrayLayers;
+ to->supportedTransforms = from->supportedTransforms;
+ to->currentTransform = from->currentTransform;
+ to->supportedCompositeAlpha = from->supportedCompositeAlpha;
+ to->supportedUsageFlags = from->supportedUsageFlags;
+ to->supportedSurfaceCounters = from->supportedSurfaceCounters;
+}
+
+#endif
+#ifdef VK_EXT_display_control
+void deepcopy_VkDisplayPowerInfoEXT(
+ Pool* pool,
+ const VkDisplayPowerInfoEXT* from,
+ VkDisplayPowerInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->powerState = from->powerState;
+}
+
+void deepcopy_VkDeviceEventInfoEXT(
+ Pool* pool,
+ const VkDeviceEventInfoEXT* from,
+ VkDeviceEventInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->deviceEvent = from->deviceEvent;
+}
+
+void deepcopy_VkDisplayEventInfoEXT(
+ Pool* pool,
+ const VkDisplayEventInfoEXT* from,
+ VkDisplayEventInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->displayEvent = from->displayEvent;
+}
+
+void deepcopy_VkSwapchainCounterCreateInfoEXT(
+ Pool* pool,
+ const VkSwapchainCounterCreateInfoEXT* from,
+ VkSwapchainCounterCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->surfaceCounters = from->surfaceCounters;
+}
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void deepcopy_VkRefreshCycleDurationGOOGLE(
+ Pool* pool,
+ const VkRefreshCycleDurationGOOGLE* from,
+ VkRefreshCycleDurationGOOGLE* to)
+{
+ to->refreshDuration = from->refreshDuration;
+}
+
+void deepcopy_VkPastPresentationTimingGOOGLE(
+ Pool* pool,
+ const VkPastPresentationTimingGOOGLE* from,
+ VkPastPresentationTimingGOOGLE* to)
+{
+ to->presentID = from->presentID;
+ to->desiredPresentTime = from->desiredPresentTime;
+ to->actualPresentTime = from->actualPresentTime;
+ to->earliestPresentTime = from->earliestPresentTime;
+ to->presentMargin = from->presentMargin;
+}
+
+void deepcopy_VkPresentTimeGOOGLE(
+ Pool* pool,
+ const VkPresentTimeGOOGLE* from,
+ VkPresentTimeGOOGLE* to)
+{
+ to->presentID = from->presentID;
+ to->desiredPresentTime = from->desiredPresentTime;
+}
+
+void deepcopy_VkPresentTimesInfoGOOGLE(
+ Pool* pool,
+ const VkPresentTimesInfoGOOGLE* from,
+ VkPresentTimesInfoGOOGLE* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->swapchainCount = from->swapchainCount;
+ to->pTimes = nullptr;
+ if (from->pTimes)
+ {
+ to->pTimes = (VkPresentTimeGOOGLE*)pool->alloc(from->swapchainCount * sizeof(const VkPresentTimeGOOGLE));
+ to->swapchainCount = from->swapchainCount;
+ for (uint32_t i = 0; i < (uint32_t)from->swapchainCount; ++i)
+ {
+ deepcopy_VkPresentTimeGOOGLE(pool, from->pTimes + i, (VkPresentTimeGOOGLE*)(to->pTimes + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* from,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->perViewPositionAllComponents = from->perViewPositionAllComponents;
+}
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void deepcopy_VkViewportSwizzleNV(
+ Pool* pool,
+ const VkViewportSwizzleNV* from,
+ VkViewportSwizzleNV* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+ to->z = from->z;
+ to->w = from->w;
+}
+
+void deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* from,
+ VkPipelineViewportSwizzleStateCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->viewportCount = from->viewportCount;
+ to->pViewportSwizzles = nullptr;
+ if (from->pViewportSwizzles)
+ {
+ to->pViewportSwizzles = (VkViewportSwizzleNV*)pool->alloc(from->viewportCount * sizeof(const VkViewportSwizzleNV));
+ to->viewportCount = from->viewportCount;
+ for (uint32_t i = 0; i < (uint32_t)from->viewportCount; ++i)
+ {
+ deepcopy_VkViewportSwizzleNV(pool, from->pViewportSwizzles + i, (VkViewportSwizzleNV*)(to->pViewportSwizzles + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* from,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxDiscardRectangles = from->maxDiscardRectangles;
+}
+
+void deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* from,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->discardRectangleMode = from->discardRectangleMode;
+ to->discardRectangleCount = from->discardRectangleCount;
+ to->pDiscardRectangles = nullptr;
+ if (from->pDiscardRectangles)
+ {
+ to->pDiscardRectangles = (VkRect2D*)pool->alloc(from->discardRectangleCount * sizeof(const VkRect2D));
+ to->discardRectangleCount = from->discardRectangleCount;
+ for (uint32_t i = 0; i < (uint32_t)from->discardRectangleCount; ++i)
+ {
+ deepcopy_VkRect2D(pool, from->pDiscardRectangles + i, (VkRect2D*)(to->pDiscardRectangles + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* from,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->primitiveOverestimationSize = from->primitiveOverestimationSize;
+ to->maxExtraPrimitiveOverestimationSize = from->maxExtraPrimitiveOverestimationSize;
+ to->extraPrimitiveOverestimationSizeGranularity = from->extraPrimitiveOverestimationSizeGranularity;
+ to->primitiveUnderestimation = from->primitiveUnderestimation;
+ to->conservativePointAndLineRasterization = from->conservativePointAndLineRasterization;
+ to->degenerateTrianglesRasterized = from->degenerateTrianglesRasterized;
+ to->degenerateLinesRasterized = from->degenerateLinesRasterized;
+ to->fullyCoveredFragmentShaderInputVariable = from->fullyCoveredFragmentShaderInputVariable;
+ to->conservativeRasterizationPostDepthCoverage = from->conservativeRasterizationPostDepthCoverage;
+}
+
+void deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* from,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->conservativeRasterizationMode = from->conservativeRasterizationMode;
+ to->extraPrimitiveOverestimationSize = from->extraPrimitiveOverestimationSize;
+}
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void deepcopy_VkXYColorEXT(
+ Pool* pool,
+ const VkXYColorEXT* from,
+ VkXYColorEXT* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+}
+
+void deepcopy_VkHdrMetadataEXT(
+ Pool* pool,
+ const VkHdrMetadataEXT* from,
+ VkHdrMetadataEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkXYColorEXT(pool, &from->displayPrimaryRed, (VkXYColorEXT*)(&to->displayPrimaryRed));
+ deepcopy_VkXYColorEXT(pool, &from->displayPrimaryGreen, (VkXYColorEXT*)(&to->displayPrimaryGreen));
+ deepcopy_VkXYColorEXT(pool, &from->displayPrimaryBlue, (VkXYColorEXT*)(&to->displayPrimaryBlue));
+ deepcopy_VkXYColorEXT(pool, &from->whitePoint, (VkXYColorEXT*)(&to->whitePoint));
+ to->maxLuminance = from->maxLuminance;
+ to->minLuminance = from->minLuminance;
+ to->maxContentLightLevel = from->maxContentLightLevel;
+ to->maxFrameAverageLightLevel = from->maxFrameAverageLightLevel;
+}
+
+#endif
+#ifdef VK_MVK_ios_surface
+void deepcopy_VkIOSSurfaceCreateInfoMVK(
+ Pool* pool,
+ const VkIOSSurfaceCreateInfoMVK* from,
+ VkIOSSurfaceCreateInfoMVK* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pView = nullptr;
+ if (from->pView)
+ {
+ to->pView = (void*)pool->dupArray(from->pView, sizeof(const uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_MVK_macos_surface
+void deepcopy_VkMacOSSurfaceCreateInfoMVK(
+ Pool* pool,
+ const VkMacOSSurfaceCreateInfoMVK* from,
+ VkMacOSSurfaceCreateInfoMVK* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pView = nullptr;
+ if (from->pView)
+ {
+ to->pView = (void*)pool->dupArray(from->pView, sizeof(const uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void deepcopy_VkDebugUtilsObjectNameInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsObjectNameInfoEXT* from,
+ VkDebugUtilsObjectNameInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectType = from->objectType;
+ to->objectHandle = from->objectHandle;
+ to->pObjectName = nullptr;
+ if (from->pObjectName)
+ {
+ to->pObjectName = pool->strDup(from->pObjectName);
+ }
+}
+
+void deepcopy_VkDebugUtilsObjectTagInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsObjectTagInfoEXT* from,
+ VkDebugUtilsObjectTagInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->objectType = from->objectType;
+ to->objectHandle = from->objectHandle;
+ to->tagName = from->tagName;
+ to->tagSize = from->tagSize;
+ to->pTag = nullptr;
+ if (from->pTag)
+ {
+ to->pTag = (void*)pool->dupArray(from->pTag, from->tagSize * sizeof(const uint8_t));
+ }
+}
+
+void deepcopy_VkDebugUtilsLabelEXT(
+ Pool* pool,
+ const VkDebugUtilsLabelEXT* from,
+ VkDebugUtilsLabelEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->pLabelName = nullptr;
+ if (from->pLabelName)
+ {
+ to->pLabelName = pool->strDup(from->pLabelName);
+ }
+ memcpy(to->color, from->color, 4 * sizeof(float));
+}
+
+void deepcopy_VkDebugUtilsMessengerCallbackDataEXT(
+ Pool* pool,
+ const VkDebugUtilsMessengerCallbackDataEXT* from,
+ VkDebugUtilsMessengerCallbackDataEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->pMessageIdName = nullptr;
+ if (from->pMessageIdName)
+ {
+ to->pMessageIdName = pool->strDup(from->pMessageIdName);
+ }
+ to->messageIdNumber = from->messageIdNumber;
+ to->pMessage = nullptr;
+ if (from->pMessage)
+ {
+ to->pMessage = pool->strDup(from->pMessage);
+ }
+ to->queueLabelCount = from->queueLabelCount;
+ to->pQueueLabels = nullptr;
+ if (from->pQueueLabels)
+ {
+ to->pQueueLabels = (VkDebugUtilsLabelEXT*)pool->alloc(from->queueLabelCount * sizeof(VkDebugUtilsLabelEXT));
+ to->queueLabelCount = from->queueLabelCount;
+ for (uint32_t i = 0; i < (uint32_t)from->queueLabelCount; ++i)
+ {
+ deepcopy_VkDebugUtilsLabelEXT(pool, from->pQueueLabels + i, (VkDebugUtilsLabelEXT*)(to->pQueueLabels + i));
+ }
+ }
+ to->cmdBufLabelCount = from->cmdBufLabelCount;
+ to->pCmdBufLabels = nullptr;
+ if (from->pCmdBufLabels)
+ {
+ to->pCmdBufLabels = (VkDebugUtilsLabelEXT*)pool->alloc(from->cmdBufLabelCount * sizeof(VkDebugUtilsLabelEXT));
+ to->cmdBufLabelCount = from->cmdBufLabelCount;
+ for (uint32_t i = 0; i < (uint32_t)from->cmdBufLabelCount; ++i)
+ {
+ deepcopy_VkDebugUtilsLabelEXT(pool, from->pCmdBufLabels + i, (VkDebugUtilsLabelEXT*)(to->pCmdBufLabels + i));
+ }
+ }
+ to->objectCount = from->objectCount;
+ to->pObjects = nullptr;
+ if (from->pObjects)
+ {
+ to->pObjects = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(from->objectCount * sizeof(VkDebugUtilsObjectNameInfoEXT));
+ to->objectCount = from->objectCount;
+ for (uint32_t i = 0; i < (uint32_t)from->objectCount; ++i)
+ {
+ deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, from->pObjects + i, (VkDebugUtilsObjectNameInfoEXT*)(to->pObjects + i));
+ }
+ }
+}
+
+void deepcopy_VkDebugUtilsMessengerCreateInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsMessengerCreateInfoEXT* from,
+ VkDebugUtilsMessengerCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->messageSeverity = from->messageSeverity;
+ to->messageType = from->messageType;
+ to->pfnUserCallback = from->pfnUserCallback;
+ to->pUserData = nullptr;
+ if (from->pUserData)
+ {
+ to->pUserData = (void*)pool->dupArray(from->pUserData, sizeof(uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void deepcopy_VkAndroidHardwareBufferUsageANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferUsageANDROID* from,
+ VkAndroidHardwareBufferUsageANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->androidHardwareBufferUsage = from->androidHardwareBufferUsage;
+}
+
+void deepcopy_VkAndroidHardwareBufferPropertiesANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferPropertiesANDROID* from,
+ VkAndroidHardwareBufferPropertiesANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->allocationSize = from->allocationSize;
+ to->memoryTypeBits = from->memoryTypeBits;
+}
+
+void deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* from,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->format = from->format;
+ to->externalFormat = from->externalFormat;
+ to->formatFeatures = from->formatFeatures;
+ deepcopy_VkComponentMapping(pool, &from->samplerYcbcrConversionComponents, (VkComponentMapping*)(&to->samplerYcbcrConversionComponents));
+ to->suggestedYcbcrModel = from->suggestedYcbcrModel;
+ to->suggestedYcbcrRange = from->suggestedYcbcrRange;
+ to->suggestedXChromaOffset = from->suggestedXChromaOffset;
+ to->suggestedYChromaOffset = from->suggestedYChromaOffset;
+}
+
+void deepcopy_VkImportAndroidHardwareBufferInfoANDROID(
+ Pool* pool,
+ const VkImportAndroidHardwareBufferInfoANDROID* from,
+ VkImportAndroidHardwareBufferInfoANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->buffer = nullptr;
+ if (from->buffer)
+ {
+ to->buffer = (AHardwareBuffer*)pool->dupArray(from->buffer, sizeof(AHardwareBuffer));
+ }
+}
+
+void deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ Pool* pool,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* from,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memory = from->memory;
+}
+
+void deepcopy_VkExternalFormatANDROID(
+ Pool* pool,
+ const VkExternalFormatANDROID* from,
+ VkExternalFormatANDROID* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->externalFormat = from->externalFormat;
+}
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void deepcopy_VkSamplerReductionModeCreateInfoEXT(
+ Pool* pool,
+ const VkSamplerReductionModeCreateInfoEXT* from,
+ VkSamplerReductionModeCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->reductionMode = from->reductionMode;
+}
+
+void deepcopy_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* from,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->filterMinmaxSingleComponentFormats = from->filterMinmaxSingleComponentFormats;
+ to->filterMinmaxImageComponentMapping = from->filterMinmaxImageComponentMapping;
+}
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void deepcopy_VkSampleLocationEXT(
+ Pool* pool,
+ const VkSampleLocationEXT* from,
+ VkSampleLocationEXT* to)
+{
+ to->x = from->x;
+ to->y = from->y;
+}
+
+void deepcopy_VkSampleLocationsInfoEXT(
+ Pool* pool,
+ const VkSampleLocationsInfoEXT* from,
+ VkSampleLocationsInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->sampleLocationsPerPixel = from->sampleLocationsPerPixel;
+ deepcopy_VkExtent2D(pool, &from->sampleLocationGridSize, (VkExtent2D*)(&to->sampleLocationGridSize));
+ to->sampleLocationsCount = from->sampleLocationsCount;
+ to->pSampleLocations = nullptr;
+ if (from->pSampleLocations)
+ {
+ to->pSampleLocations = (VkSampleLocationEXT*)pool->alloc(from->sampleLocationsCount * sizeof(const VkSampleLocationEXT));
+ to->sampleLocationsCount = from->sampleLocationsCount;
+ for (uint32_t i = 0; i < (uint32_t)from->sampleLocationsCount; ++i)
+ {
+ deepcopy_VkSampleLocationEXT(pool, from->pSampleLocations + i, (VkSampleLocationEXT*)(to->pSampleLocations + i));
+ }
+ }
+}
+
+void deepcopy_VkAttachmentSampleLocationsEXT(
+ Pool* pool,
+ const VkAttachmentSampleLocationsEXT* from,
+ VkAttachmentSampleLocationsEXT* to)
+{
+ to->attachmentIndex = from->attachmentIndex;
+ deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
+}
+
+void deepcopy_VkSubpassSampleLocationsEXT(
+ Pool* pool,
+ const VkSubpassSampleLocationsEXT* from,
+ VkSubpassSampleLocationsEXT* to)
+{
+ to->subpassIndex = from->subpassIndex;
+ deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
+}
+
+void deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(
+ Pool* pool,
+ const VkRenderPassSampleLocationsBeginInfoEXT* from,
+ VkRenderPassSampleLocationsBeginInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->attachmentInitialSampleLocationsCount = from->attachmentInitialSampleLocationsCount;
+ to->pAttachmentInitialSampleLocations = nullptr;
+ if (from->pAttachmentInitialSampleLocations)
+ {
+ to->pAttachmentInitialSampleLocations = (VkAttachmentSampleLocationsEXT*)pool->alloc(from->attachmentInitialSampleLocationsCount * sizeof(const VkAttachmentSampleLocationsEXT));
+ to->attachmentInitialSampleLocationsCount = from->attachmentInitialSampleLocationsCount;
+ for (uint32_t i = 0; i < (uint32_t)from->attachmentInitialSampleLocationsCount; ++i)
+ {
+ deepcopy_VkAttachmentSampleLocationsEXT(pool, from->pAttachmentInitialSampleLocations + i, (VkAttachmentSampleLocationsEXT*)(to->pAttachmentInitialSampleLocations + i));
+ }
+ }
+ to->postSubpassSampleLocationsCount = from->postSubpassSampleLocationsCount;
+ to->pPostSubpassSampleLocations = nullptr;
+ if (from->pPostSubpassSampleLocations)
+ {
+ to->pPostSubpassSampleLocations = (VkSubpassSampleLocationsEXT*)pool->alloc(from->postSubpassSampleLocationsCount * sizeof(const VkSubpassSampleLocationsEXT));
+ to->postSubpassSampleLocationsCount = from->postSubpassSampleLocationsCount;
+ for (uint32_t i = 0; i < (uint32_t)from->postSubpassSampleLocationsCount; ++i)
+ {
+ deepcopy_VkSubpassSampleLocationsEXT(pool, from->pPostSubpassSampleLocations + i, (VkSubpassSampleLocationsEXT*)(to->pPostSubpassSampleLocations + i));
+ }
+ }
+}
+
+void deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* from,
+ VkPipelineSampleLocationsStateCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->sampleLocationsEnable = from->sampleLocationsEnable;
+ deepcopy_VkSampleLocationsInfoEXT(pool, &from->sampleLocationsInfo, (VkSampleLocationsInfoEXT*)(&to->sampleLocationsInfo));
+}
+
+void deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* from,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->sampleLocationSampleCounts = from->sampleLocationSampleCounts;
+ deepcopy_VkExtent2D(pool, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
+ memcpy(to->sampleLocationCoordinateRange, from->sampleLocationCoordinateRange, 2 * sizeof(float));
+ to->sampleLocationSubPixelBits = from->sampleLocationSubPixelBits;
+ to->variableSampleLocations = from->variableSampleLocations;
+}
+
+void deepcopy_VkMultisamplePropertiesEXT(
+ Pool* pool,
+ const VkMultisamplePropertiesEXT* from,
+ VkMultisamplePropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ deepcopy_VkExtent2D(pool, &from->maxSampleLocationGridSize, (VkExtent2D*)(&to->maxSampleLocationGridSize));
+}
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* from,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->advancedBlendCoherentOperations = from->advancedBlendCoherentOperations;
+}
+
+void deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* from,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->advancedBlendMaxColorAttachments = from->advancedBlendMaxColorAttachments;
+ to->advancedBlendIndependentBlend = from->advancedBlendIndependentBlend;
+ to->advancedBlendNonPremultipliedSrcColor = from->advancedBlendNonPremultipliedSrcColor;
+ to->advancedBlendNonPremultipliedDstColor = from->advancedBlendNonPremultipliedDstColor;
+ to->advancedBlendCorrelatedOverlap = from->advancedBlendCorrelatedOverlap;
+ to->advancedBlendAllOperations = from->advancedBlendAllOperations;
+}
+
+void deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* from,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->srcPremultiplied = from->srcPremultiplied;
+ to->dstPremultiplied = from->dstPremultiplied;
+ to->blendOverlap = from->blendOverlap;
+}
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineCoverageToColorStateCreateInfoNV* from,
+ VkPipelineCoverageToColorStateCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->coverageToColorEnable = from->coverageToColorEnable;
+ to->coverageToColorLocation = from->coverageToColorLocation;
+}
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineCoverageModulationStateCreateInfoNV* from,
+ VkPipelineCoverageModulationStateCreateInfoNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->coverageModulationMode = from->coverageModulationMode;
+ to->coverageModulationTableEnable = from->coverageModulationTableEnable;
+ to->coverageModulationTableCount = from->coverageModulationTableCount;
+ to->pCoverageModulationTable = nullptr;
+ if (from->pCoverageModulationTable)
+ {
+ to->pCoverageModulationTable = (float*)pool->dupArray(from->pCoverageModulationTable, from->coverageModulationTableCount * sizeof(const float));
+ }
+}
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void deepcopy_VkValidationCacheCreateInfoEXT(
+ Pool* pool,
+ const VkValidationCacheCreateInfoEXT* from,
+ VkValidationCacheCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->flags = from->flags;
+ to->initialDataSize = from->initialDataSize;
+ to->pInitialData = nullptr;
+ if (from->pInitialData)
+ {
+ to->pInitialData = (void*)pool->dupArray(from->pInitialData, from->initialDataSize * sizeof(const uint8_t));
+ }
+}
+
+void deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(
+ Pool* pool,
+ const VkShaderModuleValidationCacheCreateInfoEXT* from,
+ VkShaderModuleValidationCacheCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->validationCache = from->validationCache;
+}
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ Pool* pool,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* from,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->bindingCount = from->bindingCount;
+ to->pBindingFlags = nullptr;
+ if (from->pBindingFlags)
+ {
+ to->pBindingFlags = (VkDescriptorBindingFlagsEXT*)pool->dupArray(from->pBindingFlags, from->bindingCount * sizeof(const VkDescriptorBindingFlagsEXT));
+ }
+}
+
+void deepcopy_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* from,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->shaderInputAttachmentArrayDynamicIndexing = from->shaderInputAttachmentArrayDynamicIndexing;
+ to->shaderUniformTexelBufferArrayDynamicIndexing = from->shaderUniformTexelBufferArrayDynamicIndexing;
+ to->shaderStorageTexelBufferArrayDynamicIndexing = from->shaderStorageTexelBufferArrayDynamicIndexing;
+ to->shaderUniformBufferArrayNonUniformIndexing = from->shaderUniformBufferArrayNonUniformIndexing;
+ to->shaderSampledImageArrayNonUniformIndexing = from->shaderSampledImageArrayNonUniformIndexing;
+ to->shaderStorageBufferArrayNonUniformIndexing = from->shaderStorageBufferArrayNonUniformIndexing;
+ to->shaderStorageImageArrayNonUniformIndexing = from->shaderStorageImageArrayNonUniformIndexing;
+ to->shaderInputAttachmentArrayNonUniformIndexing = from->shaderInputAttachmentArrayNonUniformIndexing;
+ to->shaderUniformTexelBufferArrayNonUniformIndexing = from->shaderUniformTexelBufferArrayNonUniformIndexing;
+ to->shaderStorageTexelBufferArrayNonUniformIndexing = from->shaderStorageTexelBufferArrayNonUniformIndexing;
+ to->descriptorBindingUniformBufferUpdateAfterBind = from->descriptorBindingUniformBufferUpdateAfterBind;
+ to->descriptorBindingSampledImageUpdateAfterBind = from->descriptorBindingSampledImageUpdateAfterBind;
+ to->descriptorBindingStorageImageUpdateAfterBind = from->descriptorBindingStorageImageUpdateAfterBind;
+ to->descriptorBindingStorageBufferUpdateAfterBind = from->descriptorBindingStorageBufferUpdateAfterBind;
+ to->descriptorBindingUniformTexelBufferUpdateAfterBind = from->descriptorBindingUniformTexelBufferUpdateAfterBind;
+ to->descriptorBindingStorageTexelBufferUpdateAfterBind = from->descriptorBindingStorageTexelBufferUpdateAfterBind;
+ to->descriptorBindingUpdateUnusedWhilePending = from->descriptorBindingUpdateUnusedWhilePending;
+ to->descriptorBindingPartiallyBound = from->descriptorBindingPartiallyBound;
+ to->descriptorBindingVariableDescriptorCount = from->descriptorBindingVariableDescriptorCount;
+ to->runtimeDescriptorArray = from->runtimeDescriptorArray;
+}
+
+void deepcopy_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* from,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxUpdateAfterBindDescriptorsInAllPools = from->maxUpdateAfterBindDescriptorsInAllPools;
+ to->shaderUniformBufferArrayNonUniformIndexingNative = from->shaderUniformBufferArrayNonUniformIndexingNative;
+ to->shaderSampledImageArrayNonUniformIndexingNative = from->shaderSampledImageArrayNonUniformIndexingNative;
+ to->shaderStorageBufferArrayNonUniformIndexingNative = from->shaderStorageBufferArrayNonUniformIndexingNative;
+ to->shaderStorageImageArrayNonUniformIndexingNative = from->shaderStorageImageArrayNonUniformIndexingNative;
+ to->shaderInputAttachmentArrayNonUniformIndexingNative = from->shaderInputAttachmentArrayNonUniformIndexingNative;
+ to->robustBufferAccessUpdateAfterBind = from->robustBufferAccessUpdateAfterBind;
+ to->quadDivergentImplicitLod = from->quadDivergentImplicitLod;
+ to->maxPerStageDescriptorUpdateAfterBindSamplers = from->maxPerStageDescriptorUpdateAfterBindSamplers;
+ to->maxPerStageDescriptorUpdateAfterBindUniformBuffers = from->maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+ to->maxPerStageDescriptorUpdateAfterBindStorageBuffers = from->maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+ to->maxPerStageDescriptorUpdateAfterBindSampledImages = from->maxPerStageDescriptorUpdateAfterBindSampledImages;
+ to->maxPerStageDescriptorUpdateAfterBindStorageImages = from->maxPerStageDescriptorUpdateAfterBindStorageImages;
+ to->maxPerStageDescriptorUpdateAfterBindInputAttachments = from->maxPerStageDescriptorUpdateAfterBindInputAttachments;
+ to->maxPerStageUpdateAfterBindResources = from->maxPerStageUpdateAfterBindResources;
+ to->maxDescriptorSetUpdateAfterBindSamplers = from->maxDescriptorSetUpdateAfterBindSamplers;
+ to->maxDescriptorSetUpdateAfterBindUniformBuffers = from->maxDescriptorSetUpdateAfterBindUniformBuffers;
+ to->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = from->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+ to->maxDescriptorSetUpdateAfterBindStorageBuffers = from->maxDescriptorSetUpdateAfterBindStorageBuffers;
+ to->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = from->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+ to->maxDescriptorSetUpdateAfterBindSampledImages = from->maxDescriptorSetUpdateAfterBindSampledImages;
+ to->maxDescriptorSetUpdateAfterBindStorageImages = from->maxDescriptorSetUpdateAfterBindStorageImages;
+ to->maxDescriptorSetUpdateAfterBindInputAttachments = from->maxDescriptorSetUpdateAfterBindInputAttachments;
+}
+
+void deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ Pool* pool,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* from,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->descriptorSetCount = from->descriptorSetCount;
+ to->pDescriptorCounts = nullptr;
+ if (from->pDescriptorCounts)
+ {
+ to->pDescriptorCounts = (uint32_t*)pool->dupArray(from->pDescriptorCounts, from->descriptorSetCount * sizeof(const uint32_t));
+ }
+}
+
+void deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ Pool* pool,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* from,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxVariableDescriptorCount = from->maxVariableDescriptorCount;
+}
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ Pool* pool,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* from,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->globalPriority = from->globalPriority;
+}
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void deepcopy_VkImportMemoryHostPointerInfoEXT(
+ Pool* pool,
+ const VkImportMemoryHostPointerInfoEXT* from,
+ VkImportMemoryHostPointerInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->handleType = from->handleType;
+ to->pHostPointer = nullptr;
+ if (from->pHostPointer)
+ {
+ to->pHostPointer = (void*)pool->dupArray(from->pHostPointer, sizeof(uint8_t));
+ }
+}
+
+void deepcopy_VkMemoryHostPointerPropertiesEXT(
+ Pool* pool,
+ const VkMemoryHostPointerPropertiesEXT* from,
+ VkMemoryHostPointerPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->memoryTypeBits = from->memoryTypeBits;
+}
+
+void deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* from,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->minImportedHostPointerAlignment = from->minImportedHostPointerAlignment;
+}
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(
+ Pool* pool,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* from,
+ VkPhysicalDeviceShaderCorePropertiesAMD* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->shaderEngineCount = from->shaderEngineCount;
+ to->shaderArraysPerEngineCount = from->shaderArraysPerEngineCount;
+ to->computeUnitsPerShaderArray = from->computeUnitsPerShaderArray;
+ to->simdPerComputeUnit = from->simdPerComputeUnit;
+ to->wavefrontsPerSimd = from->wavefrontsPerSimd;
+ to->wavefrontSize = from->wavefrontSize;
+ to->sgprsPerSimd = from->sgprsPerSimd;
+ to->minSgprAllocation = from->minSgprAllocation;
+ to->maxSgprAllocation = from->maxSgprAllocation;
+ to->sgprAllocationGranularity = from->sgprAllocationGranularity;
+ to->vgprsPerSimd = from->vgprsPerSimd;
+ to->minVgprAllocation = from->minVgprAllocation;
+ to->maxVgprAllocation = from->maxVgprAllocation;
+ to->vgprAllocationGranularity = from->vgprAllocationGranularity;
+}
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* from,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->maxVertexAttribDivisor = from->maxVertexAttribDivisor;
+}
+
+void deepcopy_VkVertexInputBindingDivisorDescriptionEXT(
+ Pool* pool,
+ const VkVertexInputBindingDivisorDescriptionEXT* from,
+ VkVertexInputBindingDivisorDescriptionEXT* to)
+{
+ to->binding = from->binding;
+ to->divisor = from->divisor;
+}
+
+void deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* from,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->vertexBindingDivisorCount = from->vertexBindingDivisorCount;
+ to->pVertexBindingDivisors = nullptr;
+ if (from->pVertexBindingDivisors)
+ {
+ to->pVertexBindingDivisors = (VkVertexInputBindingDivisorDescriptionEXT*)pool->alloc(from->vertexBindingDivisorCount * sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
+ to->vertexBindingDivisorCount = from->vertexBindingDivisorCount;
+ for (uint32_t i = 0; i < (uint32_t)from->vertexBindingDivisorCount; ++i)
+ {
+ deepcopy_VkVertexInputBindingDivisorDescriptionEXT(pool, from->pVertexBindingDivisors + i, (VkVertexInputBindingDivisorDescriptionEXT*)(to->pVertexBindingDivisors + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void deepcopy_VkQueueFamilyCheckpointPropertiesNV(
+ Pool* pool,
+ const VkQueueFamilyCheckpointPropertiesNV* from,
+ VkQueueFamilyCheckpointPropertiesNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->checkpointExecutionStageMask = from->checkpointExecutionStageMask;
+}
+
+void deepcopy_VkCheckpointDataNV(
+ Pool* pool,
+ const VkCheckpointDataNV* from,
+ VkCheckpointDataNV* to)
+{
+ to->sType = from->sType;
+ to->pNext = from->pNext;
+ to->stage = from->stage;
+ to->pCheckpointMarker = nullptr;
+ if (from->pCheckpointMarker)
+ {
+ to->pCheckpointMarker = (void*)pool->dupArray(from->pCheckpointMarker, sizeof(uint8_t));
+ }
+}
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.h
new file mode 100644
index 0000000000..02e217d63b
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_deepcopy.h
@@ -0,0 +1,1996 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_deepcopy
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
+
+#include <vulkan.h>
+
+
+#include "android/base/Pool.h"
+using android::base::Pool;
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void deepcopy_VkApplicationInfo(
+ Pool* pool,
+ const VkApplicationInfo* from,
+ VkApplicationInfo* to);
+
+void deepcopy_VkInstanceCreateInfo(
+ Pool* pool,
+ const VkInstanceCreateInfo* from,
+ VkInstanceCreateInfo* to);
+
+void deepcopy_VkAllocationCallbacks(
+ Pool* pool,
+ const VkAllocationCallbacks* from,
+ VkAllocationCallbacks* to);
+
+void deepcopy_VkPhysicalDeviceFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceFeatures* from,
+ VkPhysicalDeviceFeatures* to);
+
+void deepcopy_VkFormatProperties(
+ Pool* pool,
+ const VkFormatProperties* from,
+ VkFormatProperties* to);
+
+void deepcopy_VkExtent3D(
+ Pool* pool,
+ const VkExtent3D* from,
+ VkExtent3D* to);
+
+void deepcopy_VkImageFormatProperties(
+ Pool* pool,
+ const VkImageFormatProperties* from,
+ VkImageFormatProperties* to);
+
+void deepcopy_VkPhysicalDeviceLimits(
+ Pool* pool,
+ const VkPhysicalDeviceLimits* from,
+ VkPhysicalDeviceLimits* to);
+
+void deepcopy_VkPhysicalDeviceSparseProperties(
+ Pool* pool,
+ const VkPhysicalDeviceSparseProperties* from,
+ VkPhysicalDeviceSparseProperties* to);
+
+void deepcopy_VkPhysicalDeviceProperties(
+ Pool* pool,
+ const VkPhysicalDeviceProperties* from,
+ VkPhysicalDeviceProperties* to);
+
+void deepcopy_VkQueueFamilyProperties(
+ Pool* pool,
+ const VkQueueFamilyProperties* from,
+ VkQueueFamilyProperties* to);
+
+void deepcopy_VkMemoryType(
+ Pool* pool,
+ const VkMemoryType* from,
+ VkMemoryType* to);
+
+void deepcopy_VkMemoryHeap(
+ Pool* pool,
+ const VkMemoryHeap* from,
+ VkMemoryHeap* to);
+
+void deepcopy_VkPhysicalDeviceMemoryProperties(
+ Pool* pool,
+ const VkPhysicalDeviceMemoryProperties* from,
+ VkPhysicalDeviceMemoryProperties* to);
+
+void deepcopy_VkDeviceQueueCreateInfo(
+ Pool* pool,
+ const VkDeviceQueueCreateInfo* from,
+ VkDeviceQueueCreateInfo* to);
+
+void deepcopy_VkDeviceCreateInfo(
+ Pool* pool,
+ const VkDeviceCreateInfo* from,
+ VkDeviceCreateInfo* to);
+
+void deepcopy_VkExtensionProperties(
+ Pool* pool,
+ const VkExtensionProperties* from,
+ VkExtensionProperties* to);
+
+void deepcopy_VkLayerProperties(
+ Pool* pool,
+ const VkLayerProperties* from,
+ VkLayerProperties* to);
+
+void deepcopy_VkSubmitInfo(
+ Pool* pool,
+ const VkSubmitInfo* from,
+ VkSubmitInfo* to);
+
+void deepcopy_VkMemoryAllocateInfo(
+ Pool* pool,
+ const VkMemoryAllocateInfo* from,
+ VkMemoryAllocateInfo* to);
+
+void deepcopy_VkMappedMemoryRange(
+ Pool* pool,
+ const VkMappedMemoryRange* from,
+ VkMappedMemoryRange* to);
+
+void deepcopy_VkMemoryRequirements(
+ Pool* pool,
+ const VkMemoryRequirements* from,
+ VkMemoryRequirements* to);
+
+void deepcopy_VkSparseImageFormatProperties(
+ Pool* pool,
+ const VkSparseImageFormatProperties* from,
+ VkSparseImageFormatProperties* to);
+
+void deepcopy_VkSparseImageMemoryRequirements(
+ Pool* pool,
+ const VkSparseImageMemoryRequirements* from,
+ VkSparseImageMemoryRequirements* to);
+
+void deepcopy_VkSparseMemoryBind(
+ Pool* pool,
+ const VkSparseMemoryBind* from,
+ VkSparseMemoryBind* to);
+
+void deepcopy_VkSparseBufferMemoryBindInfo(
+ Pool* pool,
+ const VkSparseBufferMemoryBindInfo* from,
+ VkSparseBufferMemoryBindInfo* to);
+
+void deepcopy_VkSparseImageOpaqueMemoryBindInfo(
+ Pool* pool,
+ const VkSparseImageOpaqueMemoryBindInfo* from,
+ VkSparseImageOpaqueMemoryBindInfo* to);
+
+void deepcopy_VkImageSubresource(
+ Pool* pool,
+ const VkImageSubresource* from,
+ VkImageSubresource* to);
+
+void deepcopy_VkOffset3D(
+ Pool* pool,
+ const VkOffset3D* from,
+ VkOffset3D* to);
+
+void deepcopy_VkSparseImageMemoryBind(
+ Pool* pool,
+ const VkSparseImageMemoryBind* from,
+ VkSparseImageMemoryBind* to);
+
+void deepcopy_VkSparseImageMemoryBindInfo(
+ Pool* pool,
+ const VkSparseImageMemoryBindInfo* from,
+ VkSparseImageMemoryBindInfo* to);
+
+void deepcopy_VkBindSparseInfo(
+ Pool* pool,
+ const VkBindSparseInfo* from,
+ VkBindSparseInfo* to);
+
+void deepcopy_VkFenceCreateInfo(
+ Pool* pool,
+ const VkFenceCreateInfo* from,
+ VkFenceCreateInfo* to);
+
+void deepcopy_VkSemaphoreCreateInfo(
+ Pool* pool,
+ const VkSemaphoreCreateInfo* from,
+ VkSemaphoreCreateInfo* to);
+
+void deepcopy_VkEventCreateInfo(
+ Pool* pool,
+ const VkEventCreateInfo* from,
+ VkEventCreateInfo* to);
+
+void deepcopy_VkQueryPoolCreateInfo(
+ Pool* pool,
+ const VkQueryPoolCreateInfo* from,
+ VkQueryPoolCreateInfo* to);
+
+void deepcopy_VkBufferCreateInfo(
+ Pool* pool,
+ const VkBufferCreateInfo* from,
+ VkBufferCreateInfo* to);
+
+void deepcopy_VkBufferViewCreateInfo(
+ Pool* pool,
+ const VkBufferViewCreateInfo* from,
+ VkBufferViewCreateInfo* to);
+
+void deepcopy_VkImageCreateInfo(
+ Pool* pool,
+ const VkImageCreateInfo* from,
+ VkImageCreateInfo* to);
+
+void deepcopy_VkSubresourceLayout(
+ Pool* pool,
+ const VkSubresourceLayout* from,
+ VkSubresourceLayout* to);
+
+void deepcopy_VkComponentMapping(
+ Pool* pool,
+ const VkComponentMapping* from,
+ VkComponentMapping* to);
+
+void deepcopy_VkImageSubresourceRange(
+ Pool* pool,
+ const VkImageSubresourceRange* from,
+ VkImageSubresourceRange* to);
+
+void deepcopy_VkImageViewCreateInfo(
+ Pool* pool,
+ const VkImageViewCreateInfo* from,
+ VkImageViewCreateInfo* to);
+
+void deepcopy_VkShaderModuleCreateInfo(
+ Pool* pool,
+ const VkShaderModuleCreateInfo* from,
+ VkShaderModuleCreateInfo* to);
+
+void deepcopy_VkPipelineCacheCreateInfo(
+ Pool* pool,
+ const VkPipelineCacheCreateInfo* from,
+ VkPipelineCacheCreateInfo* to);
+
+void deepcopy_VkSpecializationMapEntry(
+ Pool* pool,
+ const VkSpecializationMapEntry* from,
+ VkSpecializationMapEntry* to);
+
+void deepcopy_VkSpecializationInfo(
+ Pool* pool,
+ const VkSpecializationInfo* from,
+ VkSpecializationInfo* to);
+
+void deepcopy_VkPipelineShaderStageCreateInfo(
+ Pool* pool,
+ const VkPipelineShaderStageCreateInfo* from,
+ VkPipelineShaderStageCreateInfo* to);
+
+void deepcopy_VkVertexInputBindingDescription(
+ Pool* pool,
+ const VkVertexInputBindingDescription* from,
+ VkVertexInputBindingDescription* to);
+
+void deepcopy_VkVertexInputAttributeDescription(
+ Pool* pool,
+ const VkVertexInputAttributeDescription* from,
+ VkVertexInputAttributeDescription* to);
+
+void deepcopy_VkPipelineVertexInputStateCreateInfo(
+ Pool* pool,
+ const VkPipelineVertexInputStateCreateInfo* from,
+ VkPipelineVertexInputStateCreateInfo* to);
+
+void deepcopy_VkPipelineInputAssemblyStateCreateInfo(
+ Pool* pool,
+ const VkPipelineInputAssemblyStateCreateInfo* from,
+ VkPipelineInputAssemblyStateCreateInfo* to);
+
+void deepcopy_VkPipelineTessellationStateCreateInfo(
+ Pool* pool,
+ const VkPipelineTessellationStateCreateInfo* from,
+ VkPipelineTessellationStateCreateInfo* to);
+
+void deepcopy_VkViewport(
+ Pool* pool,
+ const VkViewport* from,
+ VkViewport* to);
+
+void deepcopy_VkOffset2D(
+ Pool* pool,
+ const VkOffset2D* from,
+ VkOffset2D* to);
+
+void deepcopy_VkExtent2D(
+ Pool* pool,
+ const VkExtent2D* from,
+ VkExtent2D* to);
+
+void deepcopy_VkRect2D(
+ Pool* pool,
+ const VkRect2D* from,
+ VkRect2D* to);
+
+void deepcopy_VkPipelineViewportStateCreateInfo(
+ Pool* pool,
+ const VkPipelineViewportStateCreateInfo* from,
+ VkPipelineViewportStateCreateInfo* to);
+
+void deepcopy_VkPipelineRasterizationStateCreateInfo(
+ Pool* pool,
+ const VkPipelineRasterizationStateCreateInfo* from,
+ VkPipelineRasterizationStateCreateInfo* to);
+
+void deepcopy_VkPipelineMultisampleStateCreateInfo(
+ Pool* pool,
+ const VkPipelineMultisampleStateCreateInfo* from,
+ VkPipelineMultisampleStateCreateInfo* to);
+
+void deepcopy_VkStencilOpState(
+ Pool* pool,
+ const VkStencilOpState* from,
+ VkStencilOpState* to);
+
+void deepcopy_VkPipelineDepthStencilStateCreateInfo(
+ Pool* pool,
+ const VkPipelineDepthStencilStateCreateInfo* from,
+ VkPipelineDepthStencilStateCreateInfo* to);
+
+void deepcopy_VkPipelineColorBlendAttachmentState(
+ Pool* pool,
+ const VkPipelineColorBlendAttachmentState* from,
+ VkPipelineColorBlendAttachmentState* to);
+
+void deepcopy_VkPipelineColorBlendStateCreateInfo(
+ Pool* pool,
+ const VkPipelineColorBlendStateCreateInfo* from,
+ VkPipelineColorBlendStateCreateInfo* to);
+
+void deepcopy_VkPipelineDynamicStateCreateInfo(
+ Pool* pool,
+ const VkPipelineDynamicStateCreateInfo* from,
+ VkPipelineDynamicStateCreateInfo* to);
+
+void deepcopy_VkGraphicsPipelineCreateInfo(
+ Pool* pool,
+ const VkGraphicsPipelineCreateInfo* from,
+ VkGraphicsPipelineCreateInfo* to);
+
+void deepcopy_VkComputePipelineCreateInfo(
+ Pool* pool,
+ const VkComputePipelineCreateInfo* from,
+ VkComputePipelineCreateInfo* to);
+
+void deepcopy_VkPushConstantRange(
+ Pool* pool,
+ const VkPushConstantRange* from,
+ VkPushConstantRange* to);
+
+void deepcopy_VkPipelineLayoutCreateInfo(
+ Pool* pool,
+ const VkPipelineLayoutCreateInfo* from,
+ VkPipelineLayoutCreateInfo* to);
+
+void deepcopy_VkSamplerCreateInfo(
+ Pool* pool,
+ const VkSamplerCreateInfo* from,
+ VkSamplerCreateInfo* to);
+
+void deepcopy_VkDescriptorSetLayoutBinding(
+ Pool* pool,
+ const VkDescriptorSetLayoutBinding* from,
+ VkDescriptorSetLayoutBinding* to);
+
+void deepcopy_VkDescriptorSetLayoutCreateInfo(
+ Pool* pool,
+ const VkDescriptorSetLayoutCreateInfo* from,
+ VkDescriptorSetLayoutCreateInfo* to);
+
+void deepcopy_VkDescriptorPoolSize(
+ Pool* pool,
+ const VkDescriptorPoolSize* from,
+ VkDescriptorPoolSize* to);
+
+void deepcopy_VkDescriptorPoolCreateInfo(
+ Pool* pool,
+ const VkDescriptorPoolCreateInfo* from,
+ VkDescriptorPoolCreateInfo* to);
+
+void deepcopy_VkDescriptorSetAllocateInfo(
+ Pool* pool,
+ const VkDescriptorSetAllocateInfo* from,
+ VkDescriptorSetAllocateInfo* to);
+
+void deepcopy_VkDescriptorImageInfo(
+ Pool* pool,
+ const VkDescriptorImageInfo* from,
+ VkDescriptorImageInfo* to);
+
+void deepcopy_VkDescriptorBufferInfo(
+ Pool* pool,
+ const VkDescriptorBufferInfo* from,
+ VkDescriptorBufferInfo* to);
+
+void deepcopy_VkWriteDescriptorSet(
+ Pool* pool,
+ const VkWriteDescriptorSet* from,
+ VkWriteDescriptorSet* to);
+
+void deepcopy_VkCopyDescriptorSet(
+ Pool* pool,
+ const VkCopyDescriptorSet* from,
+ VkCopyDescriptorSet* to);
+
+void deepcopy_VkFramebufferCreateInfo(
+ Pool* pool,
+ const VkFramebufferCreateInfo* from,
+ VkFramebufferCreateInfo* to);
+
+void deepcopy_VkAttachmentDescription(
+ Pool* pool,
+ const VkAttachmentDescription* from,
+ VkAttachmentDescription* to);
+
+void deepcopy_VkAttachmentReference(
+ Pool* pool,
+ const VkAttachmentReference* from,
+ VkAttachmentReference* to);
+
+void deepcopy_VkSubpassDescription(
+ Pool* pool,
+ const VkSubpassDescription* from,
+ VkSubpassDescription* to);
+
+void deepcopy_VkSubpassDependency(
+ Pool* pool,
+ const VkSubpassDependency* from,
+ VkSubpassDependency* to);
+
+void deepcopy_VkRenderPassCreateInfo(
+ Pool* pool,
+ const VkRenderPassCreateInfo* from,
+ VkRenderPassCreateInfo* to);
+
+void deepcopy_VkCommandPoolCreateInfo(
+ Pool* pool,
+ const VkCommandPoolCreateInfo* from,
+ VkCommandPoolCreateInfo* to);
+
+void deepcopy_VkCommandBufferAllocateInfo(
+ Pool* pool,
+ const VkCommandBufferAllocateInfo* from,
+ VkCommandBufferAllocateInfo* to);
+
+void deepcopy_VkCommandBufferInheritanceInfo(
+ Pool* pool,
+ const VkCommandBufferInheritanceInfo* from,
+ VkCommandBufferInheritanceInfo* to);
+
+void deepcopy_VkCommandBufferBeginInfo(
+ Pool* pool,
+ const VkCommandBufferBeginInfo* from,
+ VkCommandBufferBeginInfo* to);
+
+void deepcopy_VkBufferCopy(
+ Pool* pool,
+ const VkBufferCopy* from,
+ VkBufferCopy* to);
+
+void deepcopy_VkImageSubresourceLayers(
+ Pool* pool,
+ const VkImageSubresourceLayers* from,
+ VkImageSubresourceLayers* to);
+
+void deepcopy_VkImageCopy(
+ Pool* pool,
+ const VkImageCopy* from,
+ VkImageCopy* to);
+
+void deepcopy_VkImageBlit(
+ Pool* pool,
+ const VkImageBlit* from,
+ VkImageBlit* to);
+
+void deepcopy_VkBufferImageCopy(
+ Pool* pool,
+ const VkBufferImageCopy* from,
+ VkBufferImageCopy* to);
+
+void deepcopy_VkClearColorValue(
+ Pool* pool,
+ const VkClearColorValue* from,
+ VkClearColorValue* to);
+
+void deepcopy_VkClearDepthStencilValue(
+ Pool* pool,
+ const VkClearDepthStencilValue* from,
+ VkClearDepthStencilValue* to);
+
+void deepcopy_VkClearValue(
+ Pool* pool,
+ const VkClearValue* from,
+ VkClearValue* to);
+
+void deepcopy_VkClearAttachment(
+ Pool* pool,
+ const VkClearAttachment* from,
+ VkClearAttachment* to);
+
+void deepcopy_VkClearRect(
+ Pool* pool,
+ const VkClearRect* from,
+ VkClearRect* to);
+
+void deepcopy_VkImageResolve(
+ Pool* pool,
+ const VkImageResolve* from,
+ VkImageResolve* to);
+
+void deepcopy_VkMemoryBarrier(
+ Pool* pool,
+ const VkMemoryBarrier* from,
+ VkMemoryBarrier* to);
+
+void deepcopy_VkBufferMemoryBarrier(
+ Pool* pool,
+ const VkBufferMemoryBarrier* from,
+ VkBufferMemoryBarrier* to);
+
+void deepcopy_VkImageMemoryBarrier(
+ Pool* pool,
+ const VkImageMemoryBarrier* from,
+ VkImageMemoryBarrier* to);
+
+void deepcopy_VkRenderPassBeginInfo(
+ Pool* pool,
+ const VkRenderPassBeginInfo* from,
+ VkRenderPassBeginInfo* to);
+
+void deepcopy_VkDispatchIndirectCommand(
+ Pool* pool,
+ const VkDispatchIndirectCommand* from,
+ VkDispatchIndirectCommand* to);
+
+void deepcopy_VkDrawIndexedIndirectCommand(
+ Pool* pool,
+ const VkDrawIndexedIndirectCommand* from,
+ VkDrawIndexedIndirectCommand* to);
+
+void deepcopy_VkDrawIndirectCommand(
+ Pool* pool,
+ const VkDrawIndirectCommand* from,
+ VkDrawIndirectCommand* to);
+
+void deepcopy_VkBaseOutStructure(
+ Pool* pool,
+ const VkBaseOutStructure* from,
+ VkBaseOutStructure* to);
+
+void deepcopy_VkBaseInStructure(
+ Pool* pool,
+ const VkBaseInStructure* from,
+ VkBaseInStructure* to);
+
+#endif
+#ifdef VK_VERSION_1_1
+void deepcopy_VkPhysicalDeviceSubgroupProperties(
+ Pool* pool,
+ const VkPhysicalDeviceSubgroupProperties* from,
+ VkPhysicalDeviceSubgroupProperties* to);
+
+void deepcopy_VkBindBufferMemoryInfo(
+ Pool* pool,
+ const VkBindBufferMemoryInfo* from,
+ VkBindBufferMemoryInfo* to);
+
+void deepcopy_VkBindImageMemoryInfo(
+ Pool* pool,
+ const VkBindImageMemoryInfo* from,
+ VkBindImageMemoryInfo* to);
+
+void deepcopy_VkPhysicalDevice16BitStorageFeatures(
+ Pool* pool,
+ const VkPhysicalDevice16BitStorageFeatures* from,
+ VkPhysicalDevice16BitStorageFeatures* to);
+
+void deepcopy_VkMemoryDedicatedRequirements(
+ Pool* pool,
+ const VkMemoryDedicatedRequirements* from,
+ VkMemoryDedicatedRequirements* to);
+
+void deepcopy_VkMemoryDedicatedAllocateInfo(
+ Pool* pool,
+ const VkMemoryDedicatedAllocateInfo* from,
+ VkMemoryDedicatedAllocateInfo* to);
+
+void deepcopy_VkMemoryAllocateFlagsInfo(
+ Pool* pool,
+ const VkMemoryAllocateFlagsInfo* from,
+ VkMemoryAllocateFlagsInfo* to);
+
+void deepcopy_VkDeviceGroupRenderPassBeginInfo(
+ Pool* pool,
+ const VkDeviceGroupRenderPassBeginInfo* from,
+ VkDeviceGroupRenderPassBeginInfo* to);
+
+void deepcopy_VkDeviceGroupCommandBufferBeginInfo(
+ Pool* pool,
+ const VkDeviceGroupCommandBufferBeginInfo* from,
+ VkDeviceGroupCommandBufferBeginInfo* to);
+
+void deepcopy_VkDeviceGroupSubmitInfo(
+ Pool* pool,
+ const VkDeviceGroupSubmitInfo* from,
+ VkDeviceGroupSubmitInfo* to);
+
+void deepcopy_VkDeviceGroupBindSparseInfo(
+ Pool* pool,
+ const VkDeviceGroupBindSparseInfo* from,
+ VkDeviceGroupBindSparseInfo* to);
+
+void deepcopy_VkBindBufferMemoryDeviceGroupInfo(
+ Pool* pool,
+ const VkBindBufferMemoryDeviceGroupInfo* from,
+ VkBindBufferMemoryDeviceGroupInfo* to);
+
+void deepcopy_VkBindImageMemoryDeviceGroupInfo(
+ Pool* pool,
+ const VkBindImageMemoryDeviceGroupInfo* from,
+ VkBindImageMemoryDeviceGroupInfo* to);
+
+void deepcopy_VkPhysicalDeviceGroupProperties(
+ Pool* pool,
+ const VkPhysicalDeviceGroupProperties* from,
+ VkPhysicalDeviceGroupProperties* to);
+
+void deepcopy_VkDeviceGroupDeviceCreateInfo(
+ Pool* pool,
+ const VkDeviceGroupDeviceCreateInfo* from,
+ VkDeviceGroupDeviceCreateInfo* to);
+
+void deepcopy_VkBufferMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkBufferMemoryRequirementsInfo2* from,
+ VkBufferMemoryRequirementsInfo2* to);
+
+void deepcopy_VkImageMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkImageMemoryRequirementsInfo2* from,
+ VkImageMemoryRequirementsInfo2* to);
+
+void deepcopy_VkImageSparseMemoryRequirementsInfo2(
+ Pool* pool,
+ const VkImageSparseMemoryRequirementsInfo2* from,
+ VkImageSparseMemoryRequirementsInfo2* to);
+
+void deepcopy_VkMemoryRequirements2(
+ Pool* pool,
+ const VkMemoryRequirements2* from,
+ VkMemoryRequirements2* to);
+
+void deepcopy_VkSparseImageMemoryRequirements2(
+ Pool* pool,
+ const VkSparseImageMemoryRequirements2* from,
+ VkSparseImageMemoryRequirements2* to);
+
+void deepcopy_VkPhysicalDeviceFeatures2(
+ Pool* pool,
+ const VkPhysicalDeviceFeatures2* from,
+ VkPhysicalDeviceFeatures2* to);
+
+void deepcopy_VkPhysicalDeviceProperties2(
+ Pool* pool,
+ const VkPhysicalDeviceProperties2* from,
+ VkPhysicalDeviceProperties2* to);
+
+void deepcopy_VkFormatProperties2(
+ Pool* pool,
+ const VkFormatProperties2* from,
+ VkFormatProperties2* to);
+
+void deepcopy_VkImageFormatProperties2(
+ Pool* pool,
+ const VkImageFormatProperties2* from,
+ VkImageFormatProperties2* to);
+
+void deepcopy_VkPhysicalDeviceImageFormatInfo2(
+ Pool* pool,
+ const VkPhysicalDeviceImageFormatInfo2* from,
+ VkPhysicalDeviceImageFormatInfo2* to);
+
+void deepcopy_VkQueueFamilyProperties2(
+ Pool* pool,
+ const VkQueueFamilyProperties2* from,
+ VkQueueFamilyProperties2* to);
+
+void deepcopy_VkPhysicalDeviceMemoryProperties2(
+ Pool* pool,
+ const VkPhysicalDeviceMemoryProperties2* from,
+ VkPhysicalDeviceMemoryProperties2* to);
+
+void deepcopy_VkSparseImageFormatProperties2(
+ Pool* pool,
+ const VkSparseImageFormatProperties2* from,
+ VkSparseImageFormatProperties2* to);
+
+void deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(
+ Pool* pool,
+ const VkPhysicalDeviceSparseImageFormatInfo2* from,
+ VkPhysicalDeviceSparseImageFormatInfo2* to);
+
+void deepcopy_VkPhysicalDevicePointClippingProperties(
+ Pool* pool,
+ const VkPhysicalDevicePointClippingProperties* from,
+ VkPhysicalDevicePointClippingProperties* to);
+
+void deepcopy_VkInputAttachmentAspectReference(
+ Pool* pool,
+ const VkInputAttachmentAspectReference* from,
+ VkInputAttachmentAspectReference* to);
+
+void deepcopy_VkRenderPassInputAttachmentAspectCreateInfo(
+ Pool* pool,
+ const VkRenderPassInputAttachmentAspectCreateInfo* from,
+ VkRenderPassInputAttachmentAspectCreateInfo* to);
+
+void deepcopy_VkImageViewUsageCreateInfo(
+ Pool* pool,
+ const VkImageViewUsageCreateInfo* from,
+ VkImageViewUsageCreateInfo* to);
+
+void deepcopy_VkPipelineTessellationDomainOriginStateCreateInfo(
+ Pool* pool,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* from,
+ VkPipelineTessellationDomainOriginStateCreateInfo* to);
+
+void deepcopy_VkRenderPassMultiviewCreateInfo(
+ Pool* pool,
+ const VkRenderPassMultiviewCreateInfo* from,
+ VkRenderPassMultiviewCreateInfo* to);
+
+void deepcopy_VkPhysicalDeviceMultiviewFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewFeatures* from,
+ VkPhysicalDeviceMultiviewFeatures* to);
+
+void deepcopy_VkPhysicalDeviceMultiviewProperties(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewProperties* from,
+ VkPhysicalDeviceMultiviewProperties* to);
+
+void deepcopy_VkPhysicalDeviceVariablePointerFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceVariablePointerFeatures* from,
+ VkPhysicalDeviceVariablePointerFeatures* to);
+
+void deepcopy_VkPhysicalDeviceProtectedMemoryFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceProtectedMemoryFeatures* from,
+ VkPhysicalDeviceProtectedMemoryFeatures* to);
+
+void deepcopy_VkPhysicalDeviceProtectedMemoryProperties(
+ Pool* pool,
+ const VkPhysicalDeviceProtectedMemoryProperties* from,
+ VkPhysicalDeviceProtectedMemoryProperties* to);
+
+void deepcopy_VkDeviceQueueInfo2(
+ Pool* pool,
+ const VkDeviceQueueInfo2* from,
+ VkDeviceQueueInfo2* to);
+
+void deepcopy_VkProtectedSubmitInfo(
+ Pool* pool,
+ const VkProtectedSubmitInfo* from,
+ VkProtectedSubmitInfo* to);
+
+void deepcopy_VkSamplerYcbcrConversionCreateInfo(
+ Pool* pool,
+ const VkSamplerYcbcrConversionCreateInfo* from,
+ VkSamplerYcbcrConversionCreateInfo* to);
+
+void deepcopy_VkSamplerYcbcrConversionInfo(
+ Pool* pool,
+ const VkSamplerYcbcrConversionInfo* from,
+ VkSamplerYcbcrConversionInfo* to);
+
+void deepcopy_VkBindImagePlaneMemoryInfo(
+ Pool* pool,
+ const VkBindImagePlaneMemoryInfo* from,
+ VkBindImagePlaneMemoryInfo* to);
+
+void deepcopy_VkImagePlaneMemoryRequirementsInfo(
+ Pool* pool,
+ const VkImagePlaneMemoryRequirementsInfo* from,
+ VkImagePlaneMemoryRequirementsInfo* to);
+
+void deepcopy_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* from,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* to);
+
+void deepcopy_VkSamplerYcbcrConversionImageFormatProperties(
+ Pool* pool,
+ const VkSamplerYcbcrConversionImageFormatProperties* from,
+ VkSamplerYcbcrConversionImageFormatProperties* to);
+
+void deepcopy_VkDescriptorUpdateTemplateEntry(
+ Pool* pool,
+ const VkDescriptorUpdateTemplateEntry* from,
+ VkDescriptorUpdateTemplateEntry* to);
+
+void deepcopy_VkDescriptorUpdateTemplateCreateInfo(
+ Pool* pool,
+ const VkDescriptorUpdateTemplateCreateInfo* from,
+ VkDescriptorUpdateTemplateCreateInfo* to);
+
+void deepcopy_VkExternalMemoryProperties(
+ Pool* pool,
+ const VkExternalMemoryProperties* from,
+ VkExternalMemoryProperties* to);
+
+void deepcopy_VkPhysicalDeviceExternalImageFormatInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalImageFormatInfo* from,
+ VkPhysicalDeviceExternalImageFormatInfo* to);
+
+void deepcopy_VkExternalImageFormatProperties(
+ Pool* pool,
+ const VkExternalImageFormatProperties* from,
+ VkExternalImageFormatProperties* to);
+
+void deepcopy_VkPhysicalDeviceExternalBufferInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalBufferInfo* from,
+ VkPhysicalDeviceExternalBufferInfo* to);
+
+void deepcopy_VkExternalBufferProperties(
+ Pool* pool,
+ const VkExternalBufferProperties* from,
+ VkExternalBufferProperties* to);
+
+void deepcopy_VkPhysicalDeviceIDProperties(
+ Pool* pool,
+ const VkPhysicalDeviceIDProperties* from,
+ VkPhysicalDeviceIDProperties* to);
+
+void deepcopy_VkExternalMemoryImageCreateInfo(
+ Pool* pool,
+ const VkExternalMemoryImageCreateInfo* from,
+ VkExternalMemoryImageCreateInfo* to);
+
+void deepcopy_VkExternalMemoryBufferCreateInfo(
+ Pool* pool,
+ const VkExternalMemoryBufferCreateInfo* from,
+ VkExternalMemoryBufferCreateInfo* to);
+
+void deepcopy_VkExportMemoryAllocateInfo(
+ Pool* pool,
+ const VkExportMemoryAllocateInfo* from,
+ VkExportMemoryAllocateInfo* to);
+
+void deepcopy_VkPhysicalDeviceExternalFenceInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalFenceInfo* from,
+ VkPhysicalDeviceExternalFenceInfo* to);
+
+void deepcopy_VkExternalFenceProperties(
+ Pool* pool,
+ const VkExternalFenceProperties* from,
+ VkExternalFenceProperties* to);
+
+void deepcopy_VkExportFenceCreateInfo(
+ Pool* pool,
+ const VkExportFenceCreateInfo* from,
+ VkExportFenceCreateInfo* to);
+
+void deepcopy_VkExportSemaphoreCreateInfo(
+ Pool* pool,
+ const VkExportSemaphoreCreateInfo* from,
+ VkExportSemaphoreCreateInfo* to);
+
+void deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(
+ Pool* pool,
+ const VkPhysicalDeviceExternalSemaphoreInfo* from,
+ VkPhysicalDeviceExternalSemaphoreInfo* to);
+
+void deepcopy_VkExternalSemaphoreProperties(
+ Pool* pool,
+ const VkExternalSemaphoreProperties* from,
+ VkExternalSemaphoreProperties* to);
+
+void deepcopy_VkPhysicalDeviceMaintenance3Properties(
+ Pool* pool,
+ const VkPhysicalDeviceMaintenance3Properties* from,
+ VkPhysicalDeviceMaintenance3Properties* to);
+
+void deepcopy_VkDescriptorSetLayoutSupport(
+ Pool* pool,
+ const VkDescriptorSetLayoutSupport* from,
+ VkDescriptorSetLayoutSupport* to);
+
+void deepcopy_VkPhysicalDeviceShaderDrawParameterFeatures(
+ Pool* pool,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* from,
+ VkPhysicalDeviceShaderDrawParameterFeatures* to);
+
+#endif
+#ifdef VK_KHR_surface
+void deepcopy_VkSurfaceCapabilitiesKHR(
+ Pool* pool,
+ const VkSurfaceCapabilitiesKHR* from,
+ VkSurfaceCapabilitiesKHR* to);
+
+void deepcopy_VkSurfaceFormatKHR(
+ Pool* pool,
+ const VkSurfaceFormatKHR* from,
+ VkSurfaceFormatKHR* to);
+
+#endif
+#ifdef VK_KHR_swapchain
+void deepcopy_VkSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkSwapchainCreateInfoKHR* from,
+ VkSwapchainCreateInfoKHR* to);
+
+void deepcopy_VkPresentInfoKHR(
+ Pool* pool,
+ const VkPresentInfoKHR* from,
+ VkPresentInfoKHR* to);
+
+void deepcopy_VkImageSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkImageSwapchainCreateInfoKHR* from,
+ VkImageSwapchainCreateInfoKHR* to);
+
+void deepcopy_VkBindImageMemorySwapchainInfoKHR(
+ Pool* pool,
+ const VkBindImageMemorySwapchainInfoKHR* from,
+ VkBindImageMemorySwapchainInfoKHR* to);
+
+void deepcopy_VkAcquireNextImageInfoKHR(
+ Pool* pool,
+ const VkAcquireNextImageInfoKHR* from,
+ VkAcquireNextImageInfoKHR* to);
+
+void deepcopy_VkDeviceGroupPresentCapabilitiesKHR(
+ Pool* pool,
+ const VkDeviceGroupPresentCapabilitiesKHR* from,
+ VkDeviceGroupPresentCapabilitiesKHR* to);
+
+void deepcopy_VkDeviceGroupPresentInfoKHR(
+ Pool* pool,
+ const VkDeviceGroupPresentInfoKHR* from,
+ VkDeviceGroupPresentInfoKHR* to);
+
+void deepcopy_VkDeviceGroupSwapchainCreateInfoKHR(
+ Pool* pool,
+ const VkDeviceGroupSwapchainCreateInfoKHR* from,
+ VkDeviceGroupSwapchainCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_display
+void deepcopy_VkDisplayPropertiesKHR(
+ Pool* pool,
+ const VkDisplayPropertiesKHR* from,
+ VkDisplayPropertiesKHR* to);
+
+void deepcopy_VkDisplayModeParametersKHR(
+ Pool* pool,
+ const VkDisplayModeParametersKHR* from,
+ VkDisplayModeParametersKHR* to);
+
+void deepcopy_VkDisplayModePropertiesKHR(
+ Pool* pool,
+ const VkDisplayModePropertiesKHR* from,
+ VkDisplayModePropertiesKHR* to);
+
+void deepcopy_VkDisplayModeCreateInfoKHR(
+ Pool* pool,
+ const VkDisplayModeCreateInfoKHR* from,
+ VkDisplayModeCreateInfoKHR* to);
+
+void deepcopy_VkDisplayPlaneCapabilitiesKHR(
+ Pool* pool,
+ const VkDisplayPlaneCapabilitiesKHR* from,
+ VkDisplayPlaneCapabilitiesKHR* to);
+
+void deepcopy_VkDisplayPlanePropertiesKHR(
+ Pool* pool,
+ const VkDisplayPlanePropertiesKHR* from,
+ VkDisplayPlanePropertiesKHR* to);
+
+void deepcopy_VkDisplaySurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkDisplaySurfaceCreateInfoKHR* from,
+ VkDisplaySurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void deepcopy_VkDisplayPresentInfoKHR(
+ Pool* pool,
+ const VkDisplayPresentInfoKHR* from,
+ VkDisplayPresentInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void deepcopy_VkXlibSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkXlibSurfaceCreateInfoKHR* from,
+ VkXlibSurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void deepcopy_VkXcbSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkXcbSurfaceCreateInfoKHR* from,
+ VkXcbSurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void deepcopy_VkWaylandSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkWaylandSurfaceCreateInfoKHR* from,
+ VkWaylandSurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_mir_surface
+void deepcopy_VkMirSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkMirSurfaceCreateInfoKHR* from,
+ VkMirSurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_android_surface
+void deepcopy_VkAndroidSurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkAndroidSurfaceCreateInfoKHR* from,
+ VkAndroidSurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_win32_surface
+void deepcopy_VkWin32SurfaceCreateInfoKHR(
+ Pool* pool,
+ const VkWin32SurfaceCreateInfoKHR* from,
+ VkWin32SurfaceCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void deepcopy_VkImportMemoryWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportMemoryWin32HandleInfoKHR* from,
+ VkImportMemoryWin32HandleInfoKHR* to);
+
+void deepcopy_VkExportMemoryWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportMemoryWin32HandleInfoKHR* from,
+ VkExportMemoryWin32HandleInfoKHR* to);
+
+void deepcopy_VkMemoryWin32HandlePropertiesKHR(
+ Pool* pool,
+ const VkMemoryWin32HandlePropertiesKHR* from,
+ VkMemoryWin32HandlePropertiesKHR* to);
+
+void deepcopy_VkMemoryGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkMemoryGetWin32HandleInfoKHR* from,
+ VkMemoryGetWin32HandleInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void deepcopy_VkImportMemoryFdInfoKHR(
+ Pool* pool,
+ const VkImportMemoryFdInfoKHR* from,
+ VkImportMemoryFdInfoKHR* to);
+
+void deepcopy_VkMemoryFdPropertiesKHR(
+ Pool* pool,
+ const VkMemoryFdPropertiesKHR* from,
+ VkMemoryFdPropertiesKHR* to);
+
+void deepcopy_VkMemoryGetFdInfoKHR(
+ Pool* pool,
+ const VkMemoryGetFdInfoKHR* from,
+ VkMemoryGetFdInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ Pool* pool,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* from,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void deepcopy_VkImportSemaphoreWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportSemaphoreWin32HandleInfoKHR* from,
+ VkImportSemaphoreWin32HandleInfoKHR* to);
+
+void deepcopy_VkExportSemaphoreWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportSemaphoreWin32HandleInfoKHR* from,
+ VkExportSemaphoreWin32HandleInfoKHR* to);
+
+void deepcopy_VkD3D12FenceSubmitInfoKHR(
+ Pool* pool,
+ const VkD3D12FenceSubmitInfoKHR* from,
+ VkD3D12FenceSubmitInfoKHR* to);
+
+void deepcopy_VkSemaphoreGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkSemaphoreGetWin32HandleInfoKHR* from,
+ VkSemaphoreGetWin32HandleInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void deepcopy_VkImportSemaphoreFdInfoKHR(
+ Pool* pool,
+ const VkImportSemaphoreFdInfoKHR* from,
+ VkImportSemaphoreFdInfoKHR* to);
+
+void deepcopy_VkSemaphoreGetFdInfoKHR(
+ Pool* pool,
+ const VkSemaphoreGetFdInfoKHR* from,
+ VkSemaphoreGetFdInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void deepcopy_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ Pool* pool,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* from,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* to);
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void deepcopy_VkRectLayerKHR(
+ Pool* pool,
+ const VkRectLayerKHR* from,
+ VkRectLayerKHR* to);
+
+void deepcopy_VkPresentRegionKHR(
+ Pool* pool,
+ const VkPresentRegionKHR* from,
+ VkPresentRegionKHR* to);
+
+void deepcopy_VkPresentRegionsKHR(
+ Pool* pool,
+ const VkPresentRegionsKHR* from,
+ VkPresentRegionsKHR* to);
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void deepcopy_VkAttachmentDescription2KHR(
+ Pool* pool,
+ const VkAttachmentDescription2KHR* from,
+ VkAttachmentDescription2KHR* to);
+
+void deepcopy_VkAttachmentReference2KHR(
+ Pool* pool,
+ const VkAttachmentReference2KHR* from,
+ VkAttachmentReference2KHR* to);
+
+void deepcopy_VkSubpassDescription2KHR(
+ Pool* pool,
+ const VkSubpassDescription2KHR* from,
+ VkSubpassDescription2KHR* to);
+
+void deepcopy_VkSubpassDependency2KHR(
+ Pool* pool,
+ const VkSubpassDependency2KHR* from,
+ VkSubpassDependency2KHR* to);
+
+void deepcopy_VkRenderPassCreateInfo2KHR(
+ Pool* pool,
+ const VkRenderPassCreateInfo2KHR* from,
+ VkRenderPassCreateInfo2KHR* to);
+
+void deepcopy_VkSubpassBeginInfoKHR(
+ Pool* pool,
+ const VkSubpassBeginInfoKHR* from,
+ VkSubpassBeginInfoKHR* to);
+
+void deepcopy_VkSubpassEndInfoKHR(
+ Pool* pool,
+ const VkSubpassEndInfoKHR* from,
+ VkSubpassEndInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void deepcopy_VkSharedPresentSurfaceCapabilitiesKHR(
+ Pool* pool,
+ const VkSharedPresentSurfaceCapabilitiesKHR* from,
+ VkSharedPresentSurfaceCapabilitiesKHR* to);
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void deepcopy_VkImportFenceWin32HandleInfoKHR(
+ Pool* pool,
+ const VkImportFenceWin32HandleInfoKHR* from,
+ VkImportFenceWin32HandleInfoKHR* to);
+
+void deepcopy_VkExportFenceWin32HandleInfoKHR(
+ Pool* pool,
+ const VkExportFenceWin32HandleInfoKHR* from,
+ VkExportFenceWin32HandleInfoKHR* to);
+
+void deepcopy_VkFenceGetWin32HandleInfoKHR(
+ Pool* pool,
+ const VkFenceGetWin32HandleInfoKHR* from,
+ VkFenceGetWin32HandleInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void deepcopy_VkImportFenceFdInfoKHR(
+ Pool* pool,
+ const VkImportFenceFdInfoKHR* from,
+ VkImportFenceFdInfoKHR* to);
+
+void deepcopy_VkFenceGetFdInfoKHR(
+ Pool* pool,
+ const VkFenceGetFdInfoKHR* from,
+ VkFenceGetFdInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(
+ Pool* pool,
+ const VkPhysicalDeviceSurfaceInfo2KHR* from,
+ VkPhysicalDeviceSurfaceInfo2KHR* to);
+
+void deepcopy_VkSurfaceCapabilities2KHR(
+ Pool* pool,
+ const VkSurfaceCapabilities2KHR* from,
+ VkSurfaceCapabilities2KHR* to);
+
+void deepcopy_VkSurfaceFormat2KHR(
+ Pool* pool,
+ const VkSurfaceFormat2KHR* from,
+ VkSurfaceFormat2KHR* to);
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void deepcopy_VkDisplayProperties2KHR(
+ Pool* pool,
+ const VkDisplayProperties2KHR* from,
+ VkDisplayProperties2KHR* to);
+
+void deepcopy_VkDisplayPlaneProperties2KHR(
+ Pool* pool,
+ const VkDisplayPlaneProperties2KHR* from,
+ VkDisplayPlaneProperties2KHR* to);
+
+void deepcopy_VkDisplayModeProperties2KHR(
+ Pool* pool,
+ const VkDisplayModeProperties2KHR* from,
+ VkDisplayModeProperties2KHR* to);
+
+void deepcopy_VkDisplayPlaneInfo2KHR(
+ Pool* pool,
+ const VkDisplayPlaneInfo2KHR* from,
+ VkDisplayPlaneInfo2KHR* to);
+
+void deepcopy_VkDisplayPlaneCapabilities2KHR(
+ Pool* pool,
+ const VkDisplayPlaneCapabilities2KHR* from,
+ VkDisplayPlaneCapabilities2KHR* to);
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void deepcopy_VkImageFormatListCreateInfoKHR(
+ Pool* pool,
+ const VkImageFormatListCreateInfoKHR* from,
+ VkImageFormatListCreateInfoKHR* to);
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void deepcopy_VkPhysicalDevice8BitStorageFeaturesKHR(
+ Pool* pool,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* from,
+ VkPhysicalDevice8BitStorageFeaturesKHR* to);
+
+#endif
+#ifdef VK_EXT_debug_report
+void deepcopy_VkDebugReportCallbackCreateInfoEXT(
+ Pool* pool,
+ const VkDebugReportCallbackCreateInfoEXT* from,
+ VkDebugReportCallbackCreateInfoEXT* to);
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void deepcopy_VkPipelineRasterizationStateRasterizationOrderAMD(
+ Pool* pool,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* from,
+ VkPipelineRasterizationStateRasterizationOrderAMD* to);
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void deepcopy_VkDebugMarkerObjectNameInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerObjectNameInfoEXT* from,
+ VkDebugMarkerObjectNameInfoEXT* to);
+
+void deepcopy_VkDebugMarkerObjectTagInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerObjectTagInfoEXT* from,
+ VkDebugMarkerObjectTagInfoEXT* to);
+
+void deepcopy_VkDebugMarkerMarkerInfoEXT(
+ Pool* pool,
+ const VkDebugMarkerMarkerInfoEXT* from,
+ VkDebugMarkerMarkerInfoEXT* to);
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void deepcopy_VkDedicatedAllocationImageCreateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationImageCreateInfoNV* from,
+ VkDedicatedAllocationImageCreateInfoNV* to);
+
+void deepcopy_VkDedicatedAllocationBufferCreateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationBufferCreateInfoNV* from,
+ VkDedicatedAllocationBufferCreateInfoNV* to);
+
+void deepcopy_VkDedicatedAllocationMemoryAllocateInfoNV(
+ Pool* pool,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* from,
+ VkDedicatedAllocationMemoryAllocateInfoNV* to);
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void deepcopy_VkTextureLODGatherFormatPropertiesAMD(
+ Pool* pool,
+ const VkTextureLODGatherFormatPropertiesAMD* from,
+ VkTextureLODGatherFormatPropertiesAMD* to);
+
+#endif
+#ifdef VK_AMD_shader_info
+void deepcopy_VkShaderResourceUsageAMD(
+ Pool* pool,
+ const VkShaderResourceUsageAMD* from,
+ VkShaderResourceUsageAMD* to);
+
+void deepcopy_VkShaderStatisticsInfoAMD(
+ Pool* pool,
+ const VkShaderStatisticsInfoAMD* from,
+ VkShaderStatisticsInfoAMD* to);
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void deepcopy_VkExternalImageFormatPropertiesNV(
+ Pool* pool,
+ const VkExternalImageFormatPropertiesNV* from,
+ VkExternalImageFormatPropertiesNV* to);
+
+#endif
+#ifdef VK_NV_external_memory
+void deepcopy_VkExternalMemoryImageCreateInfoNV(
+ Pool* pool,
+ const VkExternalMemoryImageCreateInfoNV* from,
+ VkExternalMemoryImageCreateInfoNV* to);
+
+void deepcopy_VkExportMemoryAllocateInfoNV(
+ Pool* pool,
+ const VkExportMemoryAllocateInfoNV* from,
+ VkExportMemoryAllocateInfoNV* to);
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void deepcopy_VkImportMemoryWin32HandleInfoNV(
+ Pool* pool,
+ const VkImportMemoryWin32HandleInfoNV* from,
+ VkImportMemoryWin32HandleInfoNV* to);
+
+void deepcopy_VkExportMemoryWin32HandleInfoNV(
+ Pool* pool,
+ const VkExportMemoryWin32HandleInfoNV* from,
+ VkExportMemoryWin32HandleInfoNV* to);
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void deepcopy_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ Pool* pool,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* from,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* to);
+
+#endif
+#ifdef VK_EXT_validation_flags
+void deepcopy_VkValidationFlagsEXT(
+ Pool* pool,
+ const VkValidationFlagsEXT* from,
+ VkValidationFlagsEXT* to);
+
+#endif
+#ifdef VK_NN_vi_surface
+void deepcopy_VkViSurfaceCreateInfoNN(
+ Pool* pool,
+ const VkViSurfaceCreateInfoNN* from,
+ VkViSurfaceCreateInfoNN* to);
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void deepcopy_VkConditionalRenderingBeginInfoEXT(
+ Pool* pool,
+ const VkConditionalRenderingBeginInfoEXT* from,
+ VkConditionalRenderingBeginInfoEXT* to);
+
+void deepcopy_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* from,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* to);
+
+void deepcopy_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ Pool* pool,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* from,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* to);
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void deepcopy_VkDeviceGeneratedCommandsFeaturesNVX(
+ Pool* pool,
+ const VkDeviceGeneratedCommandsFeaturesNVX* from,
+ VkDeviceGeneratedCommandsFeaturesNVX* to);
+
+void deepcopy_VkDeviceGeneratedCommandsLimitsNVX(
+ Pool* pool,
+ const VkDeviceGeneratedCommandsLimitsNVX* from,
+ VkDeviceGeneratedCommandsLimitsNVX* to);
+
+void deepcopy_VkIndirectCommandsTokenNVX(
+ Pool* pool,
+ const VkIndirectCommandsTokenNVX* from,
+ VkIndirectCommandsTokenNVX* to);
+
+void deepcopy_VkIndirectCommandsLayoutTokenNVX(
+ Pool* pool,
+ const VkIndirectCommandsLayoutTokenNVX* from,
+ VkIndirectCommandsLayoutTokenNVX* to);
+
+void deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(
+ Pool* pool,
+ const VkIndirectCommandsLayoutCreateInfoNVX* from,
+ VkIndirectCommandsLayoutCreateInfoNVX* to);
+
+void deepcopy_VkCmdProcessCommandsInfoNVX(
+ Pool* pool,
+ const VkCmdProcessCommandsInfoNVX* from,
+ VkCmdProcessCommandsInfoNVX* to);
+
+void deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(
+ Pool* pool,
+ const VkCmdReserveSpaceForCommandsInfoNVX* from,
+ VkCmdReserveSpaceForCommandsInfoNVX* to);
+
+void deepcopy_VkObjectTableCreateInfoNVX(
+ Pool* pool,
+ const VkObjectTableCreateInfoNVX* from,
+ VkObjectTableCreateInfoNVX* to);
+
+void deepcopy_VkObjectTableEntryNVX(
+ Pool* pool,
+ const VkObjectTableEntryNVX* from,
+ VkObjectTableEntryNVX* to);
+
+void deepcopy_VkObjectTablePipelineEntryNVX(
+ Pool* pool,
+ const VkObjectTablePipelineEntryNVX* from,
+ VkObjectTablePipelineEntryNVX* to);
+
+void deepcopy_VkObjectTableDescriptorSetEntryNVX(
+ Pool* pool,
+ const VkObjectTableDescriptorSetEntryNVX* from,
+ VkObjectTableDescriptorSetEntryNVX* to);
+
+void deepcopy_VkObjectTableVertexBufferEntryNVX(
+ Pool* pool,
+ const VkObjectTableVertexBufferEntryNVX* from,
+ VkObjectTableVertexBufferEntryNVX* to);
+
+void deepcopy_VkObjectTableIndexBufferEntryNVX(
+ Pool* pool,
+ const VkObjectTableIndexBufferEntryNVX* from,
+ VkObjectTableIndexBufferEntryNVX* to);
+
+void deepcopy_VkObjectTablePushConstantEntryNVX(
+ Pool* pool,
+ const VkObjectTablePushConstantEntryNVX* from,
+ VkObjectTablePushConstantEntryNVX* to);
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void deepcopy_VkViewportWScalingNV(
+ Pool* pool,
+ const VkViewportWScalingNV* from,
+ VkViewportWScalingNV* to);
+
+void deepcopy_VkPipelineViewportWScalingStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineViewportWScalingStateCreateInfoNV* from,
+ VkPipelineViewportWScalingStateCreateInfoNV* to);
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void deepcopy_VkSurfaceCapabilities2EXT(
+ Pool* pool,
+ const VkSurfaceCapabilities2EXT* from,
+ VkSurfaceCapabilities2EXT* to);
+
+#endif
+#ifdef VK_EXT_display_control
+void deepcopy_VkDisplayPowerInfoEXT(
+ Pool* pool,
+ const VkDisplayPowerInfoEXT* from,
+ VkDisplayPowerInfoEXT* to);
+
+void deepcopy_VkDeviceEventInfoEXT(
+ Pool* pool,
+ const VkDeviceEventInfoEXT* from,
+ VkDeviceEventInfoEXT* to);
+
+void deepcopy_VkDisplayEventInfoEXT(
+ Pool* pool,
+ const VkDisplayEventInfoEXT* from,
+ VkDisplayEventInfoEXT* to);
+
+void deepcopy_VkSwapchainCounterCreateInfoEXT(
+ Pool* pool,
+ const VkSwapchainCounterCreateInfoEXT* from,
+ VkSwapchainCounterCreateInfoEXT* to);
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void deepcopy_VkRefreshCycleDurationGOOGLE(
+ Pool* pool,
+ const VkRefreshCycleDurationGOOGLE* from,
+ VkRefreshCycleDurationGOOGLE* to);
+
+void deepcopy_VkPastPresentationTimingGOOGLE(
+ Pool* pool,
+ const VkPastPresentationTimingGOOGLE* from,
+ VkPastPresentationTimingGOOGLE* to);
+
+void deepcopy_VkPresentTimeGOOGLE(
+ Pool* pool,
+ const VkPresentTimeGOOGLE* from,
+ VkPresentTimeGOOGLE* to);
+
+void deepcopy_VkPresentTimesInfoGOOGLE(
+ Pool* pool,
+ const VkPresentTimesInfoGOOGLE* from,
+ VkPresentTimesInfoGOOGLE* to);
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void deepcopy_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ Pool* pool,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* from,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* to);
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void deepcopy_VkViewportSwizzleNV(
+ Pool* pool,
+ const VkViewportSwizzleNV* from,
+ VkViewportSwizzleNV* to);
+
+void deepcopy_VkPipelineViewportSwizzleStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* from,
+ VkPipelineViewportSwizzleStateCreateInfoNV* to);
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void deepcopy_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* from,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* to);
+
+void deepcopy_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* from,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* to);
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void deepcopy_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* from,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* to);
+
+void deepcopy_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* from,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* to);
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void deepcopy_VkXYColorEXT(
+ Pool* pool,
+ const VkXYColorEXT* from,
+ VkXYColorEXT* to);
+
+void deepcopy_VkHdrMetadataEXT(
+ Pool* pool,
+ const VkHdrMetadataEXT* from,
+ VkHdrMetadataEXT* to);
+
+#endif
+#ifdef VK_MVK_ios_surface
+void deepcopy_VkIOSSurfaceCreateInfoMVK(
+ Pool* pool,
+ const VkIOSSurfaceCreateInfoMVK* from,
+ VkIOSSurfaceCreateInfoMVK* to);
+
+#endif
+#ifdef VK_MVK_macos_surface
+void deepcopy_VkMacOSSurfaceCreateInfoMVK(
+ Pool* pool,
+ const VkMacOSSurfaceCreateInfoMVK* from,
+ VkMacOSSurfaceCreateInfoMVK* to);
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void deepcopy_VkDebugUtilsObjectNameInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsObjectNameInfoEXT* from,
+ VkDebugUtilsObjectNameInfoEXT* to);
+
+void deepcopy_VkDebugUtilsObjectTagInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsObjectTagInfoEXT* from,
+ VkDebugUtilsObjectTagInfoEXT* to);
+
+void deepcopy_VkDebugUtilsLabelEXT(
+ Pool* pool,
+ const VkDebugUtilsLabelEXT* from,
+ VkDebugUtilsLabelEXT* to);
+
+void deepcopy_VkDebugUtilsMessengerCallbackDataEXT(
+ Pool* pool,
+ const VkDebugUtilsMessengerCallbackDataEXT* from,
+ VkDebugUtilsMessengerCallbackDataEXT* to);
+
+void deepcopy_VkDebugUtilsMessengerCreateInfoEXT(
+ Pool* pool,
+ const VkDebugUtilsMessengerCreateInfoEXT* from,
+ VkDebugUtilsMessengerCreateInfoEXT* to);
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void deepcopy_VkAndroidHardwareBufferUsageANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferUsageANDROID* from,
+ VkAndroidHardwareBufferUsageANDROID* to);
+
+void deepcopy_VkAndroidHardwareBufferPropertiesANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferPropertiesANDROID* from,
+ VkAndroidHardwareBufferPropertiesANDROID* to);
+
+void deepcopy_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ Pool* pool,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* from,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* to);
+
+void deepcopy_VkImportAndroidHardwareBufferInfoANDROID(
+ Pool* pool,
+ const VkImportAndroidHardwareBufferInfoANDROID* from,
+ VkImportAndroidHardwareBufferInfoANDROID* to);
+
+void deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ Pool* pool,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* from,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* to);
+
+void deepcopy_VkExternalFormatANDROID(
+ Pool* pool,
+ const VkExternalFormatANDROID* from,
+ VkExternalFormatANDROID* to);
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void deepcopy_VkSamplerReductionModeCreateInfoEXT(
+ Pool* pool,
+ const VkSamplerReductionModeCreateInfoEXT* from,
+ VkSamplerReductionModeCreateInfoEXT* to);
+
+void deepcopy_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* from,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* to);
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void deepcopy_VkSampleLocationEXT(
+ Pool* pool,
+ const VkSampleLocationEXT* from,
+ VkSampleLocationEXT* to);
+
+void deepcopy_VkSampleLocationsInfoEXT(
+ Pool* pool,
+ const VkSampleLocationsInfoEXT* from,
+ VkSampleLocationsInfoEXT* to);
+
+void deepcopy_VkAttachmentSampleLocationsEXT(
+ Pool* pool,
+ const VkAttachmentSampleLocationsEXT* from,
+ VkAttachmentSampleLocationsEXT* to);
+
+void deepcopy_VkSubpassSampleLocationsEXT(
+ Pool* pool,
+ const VkSubpassSampleLocationsEXT* from,
+ VkSubpassSampleLocationsEXT* to);
+
+void deepcopy_VkRenderPassSampleLocationsBeginInfoEXT(
+ Pool* pool,
+ const VkRenderPassSampleLocationsBeginInfoEXT* from,
+ VkRenderPassSampleLocationsBeginInfoEXT* to);
+
+void deepcopy_VkPipelineSampleLocationsStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* from,
+ VkPipelineSampleLocationsStateCreateInfoEXT* to);
+
+void deepcopy_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* from,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* to);
+
+void deepcopy_VkMultisamplePropertiesEXT(
+ Pool* pool,
+ const VkMultisamplePropertiesEXT* from,
+ VkMultisamplePropertiesEXT* to);
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void deepcopy_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* from,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* to);
+
+void deepcopy_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* from,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* to);
+
+void deepcopy_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* from,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* to);
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void deepcopy_VkPipelineCoverageToColorStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineCoverageToColorStateCreateInfoNV* from,
+ VkPipelineCoverageToColorStateCreateInfoNV* to);
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void deepcopy_VkPipelineCoverageModulationStateCreateInfoNV(
+ Pool* pool,
+ const VkPipelineCoverageModulationStateCreateInfoNV* from,
+ VkPipelineCoverageModulationStateCreateInfoNV* to);
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void deepcopy_VkValidationCacheCreateInfoEXT(
+ Pool* pool,
+ const VkValidationCacheCreateInfoEXT* from,
+ VkValidationCacheCreateInfoEXT* to);
+
+void deepcopy_VkShaderModuleValidationCacheCreateInfoEXT(
+ Pool* pool,
+ const VkShaderModuleValidationCacheCreateInfoEXT* from,
+ VkShaderModuleValidationCacheCreateInfoEXT* to);
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void deepcopy_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ Pool* pool,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* from,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* to);
+
+void deepcopy_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* from,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* to);
+
+void deepcopy_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* from,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* to);
+
+void deepcopy_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ Pool* pool,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* from,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* to);
+
+void deepcopy_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ Pool* pool,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* from,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* to);
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void deepcopy_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ Pool* pool,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* from,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* to);
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void deepcopy_VkImportMemoryHostPointerInfoEXT(
+ Pool* pool,
+ const VkImportMemoryHostPointerInfoEXT* from,
+ VkImportMemoryHostPointerInfoEXT* to);
+
+void deepcopy_VkMemoryHostPointerPropertiesEXT(
+ Pool* pool,
+ const VkMemoryHostPointerPropertiesEXT* from,
+ VkMemoryHostPointerPropertiesEXT* to);
+
+void deepcopy_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* from,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* to);
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void deepcopy_VkPhysicalDeviceShaderCorePropertiesAMD(
+ Pool* pool,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* from,
+ VkPhysicalDeviceShaderCorePropertiesAMD* to);
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void deepcopy_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ Pool* pool,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* from,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* to);
+
+void deepcopy_VkVertexInputBindingDivisorDescriptionEXT(
+ Pool* pool,
+ const VkVertexInputBindingDivisorDescriptionEXT* from,
+ VkVertexInputBindingDivisorDescriptionEXT* to);
+
+void deepcopy_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ Pool* pool,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* from,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* to);
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void deepcopy_VkQueueFamilyCheckpointPropertiesNV(
+ Pool* pool,
+ const VkQueueFamilyCheckpointPropertiesNV* from,
+ VkQueueFamilyCheckpointPropertiesNV* to);
+
+void deepcopy_VkCheckpointDataNV(
+ Pool* pool,
+ const VkCheckpointDataNV* from,
+ VkCheckpointDataNV* to);
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.cpp
new file mode 100644
index 0000000000..9958528445
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.cpp
@@ -0,0 +1,780 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_dispatch
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#include "goldfish_vk_dispatch.h"
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+#endif
+#ifdef VK_VERSION_1_1
+#endif
+#ifdef VK_KHR_surface
+#endif
+#ifdef VK_KHR_swapchain
+#endif
+#ifdef VK_KHR_display
+#endif
+#ifdef VK_KHR_display_swapchain
+#endif
+#ifdef VK_KHR_xlib_surface
+#endif
+#ifdef VK_KHR_xcb_surface
+#endif
+#ifdef VK_KHR_wayland_surface
+#endif
+#ifdef VK_KHR_mir_surface
+#endif
+#ifdef VK_KHR_android_surface
+#endif
+#ifdef VK_KHR_win32_surface
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+#endif
+#ifdef VK_KHR_external_memory_fd
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+#endif
+#ifdef VK_KHR_push_descriptor
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+#endif
+#ifdef VK_KHR_shared_presentable_image
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+#endif
+#ifdef VK_KHR_external_fence_fd
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+#endif
+#ifdef VK_EXT_debug_report
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+#endif
+#ifdef VK_AMD_shader_info
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+#endif
+#ifdef VK_NV_external_memory
+#endif
+#ifdef VK_NV_external_memory_win32
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+#endif
+#ifdef VK_EXT_validation_flags
+#endif
+#ifdef VK_NN_vi_surface
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+#endif
+#ifdef VK_NVX_device_generated_commands
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+#endif
+#ifdef VK_EXT_display_control
+#endif
+#ifdef VK_GOOGLE_display_timing
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+#endif
+#ifdef VK_NV_viewport_swizzle
+#endif
+#ifdef VK_EXT_discard_rectangles
+#endif
+#ifdef VK_EXT_conservative_rasterization
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+#endif
+#ifdef VK_MVK_ios_surface
+#endif
+#ifdef VK_MVK_macos_surface
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+#endif
+#ifdef VK_EXT_descriptor_indexing
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+#endif
+#ifdef VK_EXT_external_memory_host
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+#endif
+
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ VulkanDispatch* out)
+{
+ memset(out, 0x0, sizeof(VulkanDispatch));
+ void* lib = dlOpenFunc();
+ if (!lib) return;
+#ifdef VK_VERSION_1_0
+ out->vkDestroyInstance = (PFN_vkDestroyInstance)dlSymFunc(lib, "vkDestroyInstance");
+ out->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)dlSymFunc(lib, "vkEnumeratePhysicalDevices");
+ out->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures");
+ out->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceFormatProperties");
+ out->vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceImageFormatProperties");
+ out->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)dlSymFunc(lib, "vkGetPhysicalDeviceProperties");
+ out->vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)dlSymFunc(lib, "vkGetPhysicalDeviceQueueFamilyProperties");
+ out->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)dlSymFunc(lib, "vkGetPhysicalDeviceMemoryProperties");
+ out->vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlSymFunc(lib, "vkGetInstanceProcAddr");
+ out->vkCreateDevice = (PFN_vkCreateDevice)dlSymFunc(lib, "vkCreateDevice");
+ out->vkDestroyDevice = (PFN_vkDestroyDevice)dlSymFunc(lib, "vkDestroyDevice");
+ out->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)dlSymFunc(lib, "vkEnumerateDeviceExtensionProperties");
+ out->vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)dlSymFunc(lib, "vkEnumerateDeviceLayerProperties");
+ out->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)dlSymFunc(lib, "vkGetDeviceQueue");
+ out->vkQueueSubmit = (PFN_vkQueueSubmit)dlSymFunc(lib, "vkQueueSubmit");
+ out->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)dlSymFunc(lib, "vkQueueWaitIdle");
+ out->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)dlSymFunc(lib, "vkDeviceWaitIdle");
+ out->vkCreateInstance = (PFN_vkCreateInstance)dlSymFunc(lib, "vkCreateInstance");
+ out->vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)dlSymFunc(lib, "vkEnumerateInstanceExtensionProperties");
+ out->vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)dlSymFunc(lib, "vkEnumerateInstanceLayerProperties");
+ out->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)dlSymFunc(lib, "vkGetDeviceProcAddr");
+#endif
+#ifdef VK_VERSION_1_1
+ out->vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)dlSymFunc(lib, "vkEnumeratePhysicalDeviceGroups");
+#endif
+#ifdef VK_KHR_surface
+ out->vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)dlSymFunc(lib, "vkDestroySurfaceKHR");
+#endif
+#ifdef VK_KHR_swapchain
+ out->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)dlSymFunc(lib, "vkCreateSwapchainKHR");
+ out->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)dlSymFunc(lib, "vkDestroySwapchainKHR");
+ out->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)dlSymFunc(lib, "vkGetSwapchainImagesKHR");
+ out->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)dlSymFunc(lib, "vkAcquireNextImageKHR");
+ out->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)dlSymFunc(lib, "vkQueuePresentKHR");
+#endif
+#ifdef VK_KHR_display
+ out->vkCreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)dlSymFunc(lib, "vkCreateDisplayPlaneSurfaceKHR");
+#endif
+#ifdef VK_KHR_xlib_surface
+ out->vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)dlSymFunc(lib, "vkCreateXlibSurfaceKHR");
+ out->vkGetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
+#endif
+#ifdef VK_KHR_xcb_surface
+ out->vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)dlSymFunc(lib, "vkCreateXcbSurfaceKHR");
+ out->vkGetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
+#endif
+#ifdef VK_KHR_wayland_surface
+ out->vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)dlSymFunc(lib, "vkCreateWaylandSurfaceKHR");
+#endif
+#ifdef VK_KHR_mir_surface
+ out->vkCreateMirSurfaceKHR = (PFN_vkCreateMirSurfaceKHR)dlSymFunc(lib, "vkCreateMirSurfaceKHR");
+#endif
+#ifdef VK_KHR_android_surface
+ out->vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)dlSymFunc(lib, "vkCreateAndroidSurfaceKHR");
+#endif
+#ifdef VK_KHR_win32_surface
+ out->vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)dlSymFunc(lib, "vkCreateWin32SurfaceKHR");
+ out->vkGetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
+#endif
+#ifdef VK_KHR_device_group_creation
+ out->vkEnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)dlSymFunc(lib, "vkEnumeratePhysicalDeviceGroupsKHR");
+#endif
+#ifdef VK_EXT_debug_report
+ out->vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)dlSymFunc(lib, "vkCreateDebugReportCallbackEXT");
+ out->vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)dlSymFunc(lib, "vkDestroyDebugReportCallbackEXT");
+ out->vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)dlSymFunc(lib, "vkDebugReportMessageEXT");
+#endif
+#ifdef VK_NN_vi_surface
+ out->vkCreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)dlSymFunc(lib, "vkCreateViSurfaceNN");
+#endif
+#ifdef VK_MVK_ios_surface
+ out->vkCreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)dlSymFunc(lib, "vkCreateIOSSurfaceMVK");
+#endif
+#ifdef VK_MVK_macos_surface
+ out->vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)dlSymFunc(lib, "vkCreateMacOSSurfaceMVK");
+#endif
+#ifdef VK_EXT_debug_utils
+ out->vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)dlSymFunc(lib, "vkCreateDebugUtilsMessengerEXT");
+ out->vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)dlSymFunc(lib, "vkDestroyDebugUtilsMessengerEXT");
+ out->vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)dlSymFunc(lib, "vkSubmitDebugUtilsMessageEXT");
+#endif
+#ifdef VK_VERSION_1_0
+ out->vkAllocateMemory = (PFN_vkAllocateMemory)dlSymFunc(lib, "vkAllocateMemory");
+ out->vkFreeMemory = (PFN_vkFreeMemory)dlSymFunc(lib, "vkFreeMemory");
+ out->vkMapMemory = (PFN_vkMapMemory)dlSymFunc(lib, "vkMapMemory");
+ out->vkUnmapMemory = (PFN_vkUnmapMemory)dlSymFunc(lib, "vkUnmapMemory");
+ out->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)dlSymFunc(lib, "vkFlushMappedMemoryRanges");
+ out->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)dlSymFunc(lib, "vkInvalidateMappedMemoryRanges");
+ out->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)dlSymFunc(lib, "vkGetDeviceMemoryCommitment");
+ out->vkBindBufferMemory = (PFN_vkBindBufferMemory)dlSymFunc(lib, "vkBindBufferMemory");
+ out->vkBindImageMemory = (PFN_vkBindImageMemory)dlSymFunc(lib, "vkBindImageMemory");
+ out->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)dlSymFunc(lib, "vkGetBufferMemoryRequirements");
+ out->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)dlSymFunc(lib, "vkGetImageMemoryRequirements");
+ out->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)dlSymFunc(lib, "vkGetImageSparseMemoryRequirements");
+ out->vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceSparseImageFormatProperties");
+ out->vkQueueBindSparse = (PFN_vkQueueBindSparse)dlSymFunc(lib, "vkQueueBindSparse");
+ out->vkCreateFence = (PFN_vkCreateFence)dlSymFunc(lib, "vkCreateFence");
+ out->vkDestroyFence = (PFN_vkDestroyFence)dlSymFunc(lib, "vkDestroyFence");
+ out->vkResetFences = (PFN_vkResetFences)dlSymFunc(lib, "vkResetFences");
+ out->vkGetFenceStatus = (PFN_vkGetFenceStatus)dlSymFunc(lib, "vkGetFenceStatus");
+ out->vkWaitForFences = (PFN_vkWaitForFences)dlSymFunc(lib, "vkWaitForFences");
+ out->vkCreateSemaphore = (PFN_vkCreateSemaphore)dlSymFunc(lib, "vkCreateSemaphore");
+ out->vkDestroySemaphore = (PFN_vkDestroySemaphore)dlSymFunc(lib, "vkDestroySemaphore");
+ out->vkCreateEvent = (PFN_vkCreateEvent)dlSymFunc(lib, "vkCreateEvent");
+ out->vkDestroyEvent = (PFN_vkDestroyEvent)dlSymFunc(lib, "vkDestroyEvent");
+ out->vkGetEventStatus = (PFN_vkGetEventStatus)dlSymFunc(lib, "vkGetEventStatus");
+ out->vkSetEvent = (PFN_vkSetEvent)dlSymFunc(lib, "vkSetEvent");
+ out->vkResetEvent = (PFN_vkResetEvent)dlSymFunc(lib, "vkResetEvent");
+ out->vkCreateQueryPool = (PFN_vkCreateQueryPool)dlSymFunc(lib, "vkCreateQueryPool");
+ out->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)dlSymFunc(lib, "vkDestroyQueryPool");
+ out->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)dlSymFunc(lib, "vkGetQueryPoolResults");
+ out->vkCreateBuffer = (PFN_vkCreateBuffer)dlSymFunc(lib, "vkCreateBuffer");
+ out->vkDestroyBuffer = (PFN_vkDestroyBuffer)dlSymFunc(lib, "vkDestroyBuffer");
+ out->vkCreateBufferView = (PFN_vkCreateBufferView)dlSymFunc(lib, "vkCreateBufferView");
+ out->vkDestroyBufferView = (PFN_vkDestroyBufferView)dlSymFunc(lib, "vkDestroyBufferView");
+ out->vkCreateImage = (PFN_vkCreateImage)dlSymFunc(lib, "vkCreateImage");
+ out->vkDestroyImage = (PFN_vkDestroyImage)dlSymFunc(lib, "vkDestroyImage");
+ out->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)dlSymFunc(lib, "vkGetImageSubresourceLayout");
+ out->vkCreateImageView = (PFN_vkCreateImageView)dlSymFunc(lib, "vkCreateImageView");
+ out->vkDestroyImageView = (PFN_vkDestroyImageView)dlSymFunc(lib, "vkDestroyImageView");
+ out->vkCreateShaderModule = (PFN_vkCreateShaderModule)dlSymFunc(lib, "vkCreateShaderModule");
+ out->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)dlSymFunc(lib, "vkDestroyShaderModule");
+ out->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)dlSymFunc(lib, "vkCreatePipelineCache");
+ out->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)dlSymFunc(lib, "vkDestroyPipelineCache");
+ out->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)dlSymFunc(lib, "vkGetPipelineCacheData");
+ out->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)dlSymFunc(lib, "vkMergePipelineCaches");
+ out->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)dlSymFunc(lib, "vkCreateGraphicsPipelines");
+ out->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)dlSymFunc(lib, "vkCreateComputePipelines");
+ out->vkDestroyPipeline = (PFN_vkDestroyPipeline)dlSymFunc(lib, "vkDestroyPipeline");
+ out->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)dlSymFunc(lib, "vkCreatePipelineLayout");
+ out->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)dlSymFunc(lib, "vkDestroyPipelineLayout");
+ out->vkCreateSampler = (PFN_vkCreateSampler)dlSymFunc(lib, "vkCreateSampler");
+ out->vkDestroySampler = (PFN_vkDestroySampler)dlSymFunc(lib, "vkDestroySampler");
+ out->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)dlSymFunc(lib, "vkCreateDescriptorSetLayout");
+ out->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)dlSymFunc(lib, "vkDestroyDescriptorSetLayout");
+ out->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)dlSymFunc(lib, "vkCreateDescriptorPool");
+ out->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)dlSymFunc(lib, "vkDestroyDescriptorPool");
+ out->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)dlSymFunc(lib, "vkResetDescriptorPool");
+ out->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)dlSymFunc(lib, "vkAllocateDescriptorSets");
+ out->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)dlSymFunc(lib, "vkFreeDescriptorSets");
+ out->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)dlSymFunc(lib, "vkUpdateDescriptorSets");
+ out->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)dlSymFunc(lib, "vkCreateFramebuffer");
+ out->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)dlSymFunc(lib, "vkDestroyFramebuffer");
+ out->vkCreateRenderPass = (PFN_vkCreateRenderPass)dlSymFunc(lib, "vkCreateRenderPass");
+ out->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)dlSymFunc(lib, "vkDestroyRenderPass");
+ out->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)dlSymFunc(lib, "vkGetRenderAreaGranularity");
+ out->vkCreateCommandPool = (PFN_vkCreateCommandPool)dlSymFunc(lib, "vkCreateCommandPool");
+ out->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)dlSymFunc(lib, "vkDestroyCommandPool");
+ out->vkResetCommandPool = (PFN_vkResetCommandPool)dlSymFunc(lib, "vkResetCommandPool");
+ out->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)dlSymFunc(lib, "vkAllocateCommandBuffers");
+ out->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)dlSymFunc(lib, "vkFreeCommandBuffers");
+ out->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)dlSymFunc(lib, "vkBeginCommandBuffer");
+ out->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)dlSymFunc(lib, "vkEndCommandBuffer");
+ out->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)dlSymFunc(lib, "vkResetCommandBuffer");
+ out->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)dlSymFunc(lib, "vkCmdBindPipeline");
+ out->vkCmdSetViewport = (PFN_vkCmdSetViewport)dlSymFunc(lib, "vkCmdSetViewport");
+ out->vkCmdSetScissor = (PFN_vkCmdSetScissor)dlSymFunc(lib, "vkCmdSetScissor");
+ out->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)dlSymFunc(lib, "vkCmdSetLineWidth");
+ out->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)dlSymFunc(lib, "vkCmdSetDepthBias");
+ out->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)dlSymFunc(lib, "vkCmdSetBlendConstants");
+ out->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)dlSymFunc(lib, "vkCmdSetDepthBounds");
+ out->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)dlSymFunc(lib, "vkCmdSetStencilCompareMask");
+ out->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)dlSymFunc(lib, "vkCmdSetStencilWriteMask");
+ out->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)dlSymFunc(lib, "vkCmdSetStencilReference");
+ out->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)dlSymFunc(lib, "vkCmdBindDescriptorSets");
+ out->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)dlSymFunc(lib, "vkCmdBindIndexBuffer");
+ out->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)dlSymFunc(lib, "vkCmdBindVertexBuffers");
+ out->vkCmdDraw = (PFN_vkCmdDraw)dlSymFunc(lib, "vkCmdDraw");
+ out->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)dlSymFunc(lib, "vkCmdDrawIndexed");
+ out->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)dlSymFunc(lib, "vkCmdDrawIndirect");
+ out->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)dlSymFunc(lib, "vkCmdDrawIndexedIndirect");
+ out->vkCmdDispatch = (PFN_vkCmdDispatch)dlSymFunc(lib, "vkCmdDispatch");
+ out->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)dlSymFunc(lib, "vkCmdDispatchIndirect");
+ out->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)dlSymFunc(lib, "vkCmdCopyBuffer");
+ out->vkCmdCopyImage = (PFN_vkCmdCopyImage)dlSymFunc(lib, "vkCmdCopyImage");
+ out->vkCmdBlitImage = (PFN_vkCmdBlitImage)dlSymFunc(lib, "vkCmdBlitImage");
+ out->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)dlSymFunc(lib, "vkCmdCopyBufferToImage");
+ out->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)dlSymFunc(lib, "vkCmdCopyImageToBuffer");
+ out->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)dlSymFunc(lib, "vkCmdUpdateBuffer");
+ out->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)dlSymFunc(lib, "vkCmdFillBuffer");
+ out->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)dlSymFunc(lib, "vkCmdClearColorImage");
+ out->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)dlSymFunc(lib, "vkCmdClearDepthStencilImage");
+ out->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)dlSymFunc(lib, "vkCmdClearAttachments");
+ out->vkCmdResolveImage = (PFN_vkCmdResolveImage)dlSymFunc(lib, "vkCmdResolveImage");
+ out->vkCmdSetEvent = (PFN_vkCmdSetEvent)dlSymFunc(lib, "vkCmdSetEvent");
+ out->vkCmdResetEvent = (PFN_vkCmdResetEvent)dlSymFunc(lib, "vkCmdResetEvent");
+ out->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)dlSymFunc(lib, "vkCmdWaitEvents");
+ out->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)dlSymFunc(lib, "vkCmdPipelineBarrier");
+ out->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)dlSymFunc(lib, "vkCmdBeginQuery");
+ out->vkCmdEndQuery = (PFN_vkCmdEndQuery)dlSymFunc(lib, "vkCmdEndQuery");
+ out->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)dlSymFunc(lib, "vkCmdResetQueryPool");
+ out->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)dlSymFunc(lib, "vkCmdWriteTimestamp");
+ out->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)dlSymFunc(lib, "vkCmdCopyQueryPoolResults");
+ out->vkCmdPushConstants = (PFN_vkCmdPushConstants)dlSymFunc(lib, "vkCmdPushConstants");
+ out->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)dlSymFunc(lib, "vkCmdBeginRenderPass");
+ out->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)dlSymFunc(lib, "vkCmdNextSubpass");
+ out->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)dlSymFunc(lib, "vkCmdEndRenderPass");
+ out->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)dlSymFunc(lib, "vkCmdExecuteCommands");
+#endif
+#ifdef VK_VERSION_1_1
+ out->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)dlSymFunc(lib, "vkEnumerateInstanceVersion");
+ out->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)dlSymFunc(lib, "vkBindBufferMemory2");
+ out->vkBindImageMemory2 = (PFN_vkBindImageMemory2)dlSymFunc(lib, "vkBindImageMemory2");
+ out->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)dlSymFunc(lib, "vkGetDeviceGroupPeerMemoryFeatures");
+ out->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)dlSymFunc(lib, "vkCmdSetDeviceMask");
+ out->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)dlSymFunc(lib, "vkCmdDispatchBase");
+ out->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)dlSymFunc(lib, "vkGetImageMemoryRequirements2");
+ out->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)dlSymFunc(lib, "vkGetBufferMemoryRequirements2");
+ out->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)dlSymFunc(lib, "vkGetImageSparseMemoryRequirements2");
+ out->vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures2");
+ out->vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceProperties2");
+ out->vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceFormatProperties2");
+ out->vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceImageFormatProperties2");
+ out->vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceQueueFamilyProperties2");
+ out->vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceMemoryProperties2");
+ out->vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceSparseImageFormatProperties2");
+ out->vkTrimCommandPool = (PFN_vkTrimCommandPool)dlSymFunc(lib, "vkTrimCommandPool");
+ out->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)dlSymFunc(lib, "vkGetDeviceQueue2");
+ out->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)dlSymFunc(lib, "vkCreateSamplerYcbcrConversion");
+ out->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)dlSymFunc(lib, "vkDestroySamplerYcbcrConversion");
+ out->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)dlSymFunc(lib, "vkCreateDescriptorUpdateTemplate");
+ out->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)dlSymFunc(lib, "vkDestroyDescriptorUpdateTemplate");
+ out->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)dlSymFunc(lib, "vkUpdateDescriptorSetWithTemplate");
+ out->vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)dlSymFunc(lib, "vkGetPhysicalDeviceExternalBufferProperties");
+ out->vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)dlSymFunc(lib, "vkGetPhysicalDeviceExternalFenceProperties");
+ out->vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)dlSymFunc(lib, "vkGetPhysicalDeviceExternalSemaphoreProperties");
+ out->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)dlSymFunc(lib, "vkGetDescriptorSetLayoutSupport");
+#endif
+#ifdef VK_KHR_surface
+ out->vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceSupportKHR");
+ out->vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
+ out->vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceFormatsKHR");
+ out->vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfacePresentModesKHR");
+#endif
+#ifdef VK_KHR_swapchain
+ out->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)dlSymFunc(lib, "vkGetDeviceGroupPresentCapabilitiesKHR");
+ out->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)dlSymFunc(lib, "vkGetDeviceGroupSurfacePresentModesKHR");
+ out->vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)dlSymFunc(lib, "vkGetPhysicalDevicePresentRectanglesKHR");
+ out->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)dlSymFunc(lib, "vkAcquireNextImage2KHR");
+#endif
+#ifdef VK_KHR_display
+ out->vkGetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceDisplayPropertiesKHR");
+ out->vkGetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
+ out->vkGetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)dlSymFunc(lib, "vkGetDisplayPlaneSupportedDisplaysKHR");
+ out->vkGetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)dlSymFunc(lib, "vkGetDisplayModePropertiesKHR");
+ out->vkCreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)dlSymFunc(lib, "vkCreateDisplayModeKHR");
+ out->vkGetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)dlSymFunc(lib, "vkGetDisplayPlaneCapabilitiesKHR");
+#endif
+#ifdef VK_KHR_display_swapchain
+ out->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)dlSymFunc(lib, "vkCreateSharedSwapchainsKHR");
+#endif
+#ifdef VK_KHR_wayland_surface
+ out->vkGetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+#endif
+#ifdef VK_KHR_mir_surface
+ out->vkGetPhysicalDeviceMirPresentationSupportKHR = (PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)dlSymFunc(lib, "vkGetPhysicalDeviceMirPresentationSupportKHR");
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+ out->vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures2KHR");
+ out->vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceProperties2KHR");
+ out->vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceFormatProperties2KHR");
+ out->vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceImageFormatProperties2KHR");
+ out->vkGetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+ out->vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceMemoryProperties2KHR");
+ out->vkGetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+#endif
+#ifdef VK_KHR_device_group
+ out->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)dlSymFunc(lib, "vkGetDeviceGroupPeerMemoryFeaturesKHR");
+ out->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)dlSymFunc(lib, "vkCmdSetDeviceMaskKHR");
+ out->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)dlSymFunc(lib, "vkCmdDispatchBaseKHR");
+#endif
+#ifdef VK_KHR_maintenance1
+ out->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)dlSymFunc(lib, "vkTrimCommandPoolKHR");
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+ out->vkGetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+#endif
+#ifdef VK_KHR_external_memory_win32
+ out->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)dlSymFunc(lib, "vkGetMemoryWin32HandleKHR");
+ out->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)dlSymFunc(lib, "vkGetMemoryWin32HandlePropertiesKHR");
+#endif
+#ifdef VK_KHR_external_memory_fd
+ out->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)dlSymFunc(lib, "vkGetMemoryFdKHR");
+ out->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)dlSymFunc(lib, "vkGetMemoryFdPropertiesKHR");
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+ out->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+ out->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)dlSymFunc(lib, "vkImportSemaphoreWin32HandleKHR");
+ out->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)dlSymFunc(lib, "vkGetSemaphoreWin32HandleKHR");
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+ out->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)dlSymFunc(lib, "vkImportSemaphoreFdKHR");
+ out->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)dlSymFunc(lib, "vkGetSemaphoreFdKHR");
+#endif
+#ifdef VK_KHR_push_descriptor
+ out->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)dlSymFunc(lib, "vkCmdPushDescriptorSetKHR");
+ out->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)dlSymFunc(lib, "vkCmdPushDescriptorSetWithTemplateKHR");
+#endif
+#ifdef VK_KHR_descriptor_update_template
+ out->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)dlSymFunc(lib, "vkCreateDescriptorUpdateTemplateKHR");
+ out->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)dlSymFunc(lib, "vkDestroyDescriptorUpdateTemplateKHR");
+ out->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)dlSymFunc(lib, "vkUpdateDescriptorSetWithTemplateKHR");
+#endif
+#ifdef VK_KHR_create_renderpass2
+ out->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)dlSymFunc(lib, "vkCreateRenderPass2KHR");
+ out->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)dlSymFunc(lib, "vkCmdBeginRenderPass2KHR");
+ out->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)dlSymFunc(lib, "vkCmdNextSubpass2KHR");
+ out->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)dlSymFunc(lib, "vkCmdEndRenderPass2KHR");
+#endif
+#ifdef VK_KHR_shared_presentable_image
+ out->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)dlSymFunc(lib, "vkGetSwapchainStatusKHR");
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+ out->vkGetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)dlSymFunc(lib, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
+#endif
+#ifdef VK_KHR_external_fence_win32
+ out->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)dlSymFunc(lib, "vkImportFenceWin32HandleKHR");
+ out->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)dlSymFunc(lib, "vkGetFenceWin32HandleKHR");
+#endif
+#ifdef VK_KHR_external_fence_fd
+ out->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)dlSymFunc(lib, "vkImportFenceFdKHR");
+ out->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)dlSymFunc(lib, "vkGetFenceFdKHR");
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+ out->vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
+ out->vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceFormats2KHR");
+#endif
+#ifdef VK_KHR_get_display_properties2
+ out->vkGetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceDisplayProperties2KHR");
+ out->vkGetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
+ out->vkGetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)dlSymFunc(lib, "vkGetDisplayModeProperties2KHR");
+ out->vkGetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)dlSymFunc(lib, "vkGetDisplayPlaneCapabilities2KHR");
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+ out->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)dlSymFunc(lib, "vkGetImageMemoryRequirements2KHR");
+ out->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)dlSymFunc(lib, "vkGetBufferMemoryRequirements2KHR");
+ out->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)dlSymFunc(lib, "vkGetImageSparseMemoryRequirements2KHR");
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+ out->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)dlSymFunc(lib, "vkCreateSamplerYcbcrConversionKHR");
+ out->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)dlSymFunc(lib, "vkDestroySamplerYcbcrConversionKHR");
+#endif
+#ifdef VK_KHR_bind_memory2
+ out->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)dlSymFunc(lib, "vkBindBufferMemory2KHR");
+ out->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)dlSymFunc(lib, "vkBindImageMemory2KHR");
+#endif
+#ifdef VK_KHR_maintenance3
+ out->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)dlSymFunc(lib, "vkGetDescriptorSetLayoutSupportKHR");
+#endif
+#ifdef VK_KHR_draw_indirect_count
+ out->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)dlSymFunc(lib, "vkCmdDrawIndirectCountKHR");
+ out->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)dlSymFunc(lib, "vkCmdDrawIndexedIndirectCountKHR");
+#endif
+#ifdef VK_EXT_debug_marker
+ out->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)dlSymFunc(lib, "vkDebugMarkerSetObjectTagEXT");
+ out->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)dlSymFunc(lib, "vkDebugMarkerSetObjectNameEXT");
+ out->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)dlSymFunc(lib, "vkCmdDebugMarkerBeginEXT");
+ out->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)dlSymFunc(lib, "vkCmdDebugMarkerEndEXT");
+ out->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)dlSymFunc(lib, "vkCmdDebugMarkerInsertEXT");
+#endif
+#ifdef VK_AMD_draw_indirect_count
+ out->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)dlSymFunc(lib, "vkCmdDrawIndirectCountAMD");
+ out->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)dlSymFunc(lib, "vkCmdDrawIndexedIndirectCountAMD");
+#endif
+#ifdef VK_AMD_shader_info
+ out->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)dlSymFunc(lib, "vkGetShaderInfoAMD");
+#endif
+#ifdef VK_NV_external_memory_capabilities
+ out->vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)dlSymFunc(lib, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
+#endif
+#ifdef VK_NV_external_memory_win32
+ out->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)dlSymFunc(lib, "vkGetMemoryWin32HandleNV");
+#endif
+#ifdef VK_EXT_conditional_rendering
+ out->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)dlSymFunc(lib, "vkCmdBeginConditionalRenderingEXT");
+ out->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)dlSymFunc(lib, "vkCmdEndConditionalRenderingEXT");
+#endif
+#ifdef VK_NVX_device_generated_commands
+ out->vkCmdProcessCommandsNVX = (PFN_vkCmdProcessCommandsNVX)dlSymFunc(lib, "vkCmdProcessCommandsNVX");
+ out->vkCmdReserveSpaceForCommandsNVX = (PFN_vkCmdReserveSpaceForCommandsNVX)dlSymFunc(lib, "vkCmdReserveSpaceForCommandsNVX");
+ out->vkCreateIndirectCommandsLayoutNVX = (PFN_vkCreateIndirectCommandsLayoutNVX)dlSymFunc(lib, "vkCreateIndirectCommandsLayoutNVX");
+ out->vkDestroyIndirectCommandsLayoutNVX = (PFN_vkDestroyIndirectCommandsLayoutNVX)dlSymFunc(lib, "vkDestroyIndirectCommandsLayoutNVX");
+ out->vkCreateObjectTableNVX = (PFN_vkCreateObjectTableNVX)dlSymFunc(lib, "vkCreateObjectTableNVX");
+ out->vkDestroyObjectTableNVX = (PFN_vkDestroyObjectTableNVX)dlSymFunc(lib, "vkDestroyObjectTableNVX");
+ out->vkRegisterObjectsNVX = (PFN_vkRegisterObjectsNVX)dlSymFunc(lib, "vkRegisterObjectsNVX");
+ out->vkUnregisterObjectsNVX = (PFN_vkUnregisterObjectsNVX)dlSymFunc(lib, "vkUnregisterObjectsNVX");
+ out->vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = (PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)dlSymFunc(lib, "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+ out->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)dlSymFunc(lib, "vkCmdSetViewportWScalingNV");
+#endif
+#ifdef VK_EXT_direct_mode_display
+ out->vkReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)dlSymFunc(lib, "vkReleaseDisplayEXT");
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+ out->vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)dlSymFunc(lib, "vkAcquireXlibDisplayEXT");
+ out->vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)dlSymFunc(lib, "vkGetRandROutputDisplayEXT");
+#endif
+#ifdef VK_EXT_display_surface_counter
+ out->vkGetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)dlSymFunc(lib, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
+#endif
+#ifdef VK_EXT_display_control
+ out->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)dlSymFunc(lib, "vkDisplayPowerControlEXT");
+ out->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)dlSymFunc(lib, "vkRegisterDeviceEventEXT");
+ out->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)dlSymFunc(lib, "vkRegisterDisplayEventEXT");
+ out->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)dlSymFunc(lib, "vkGetSwapchainCounterEXT");
+#endif
+#ifdef VK_GOOGLE_display_timing
+ out->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)dlSymFunc(lib, "vkGetRefreshCycleDurationGOOGLE");
+ out->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)dlSymFunc(lib, "vkGetPastPresentationTimingGOOGLE");
+#endif
+#ifdef VK_EXT_discard_rectangles
+ out->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)dlSymFunc(lib, "vkCmdSetDiscardRectangleEXT");
+#endif
+#ifdef VK_EXT_hdr_metadata
+ out->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)dlSymFunc(lib, "vkSetHdrMetadataEXT");
+#endif
+#ifdef VK_EXT_debug_utils
+ out->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)dlSymFunc(lib, "vkSetDebugUtilsObjectNameEXT");
+ out->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)dlSymFunc(lib, "vkSetDebugUtilsObjectTagEXT");
+ out->vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueBeginDebugUtilsLabelEXT");
+ out->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueEndDebugUtilsLabelEXT");
+ out->vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueInsertDebugUtilsLabelEXT");
+ out->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdBeginDebugUtilsLabelEXT");
+ out->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdEndDebugUtilsLabelEXT");
+ out->vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdInsertDebugUtilsLabelEXT");
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+ out->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)dlSymFunc(lib, "vkGetAndroidHardwareBufferPropertiesANDROID");
+ out->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)dlSymFunc(lib, "vkGetMemoryAndroidHardwareBufferANDROID");
+#endif
+#ifdef VK_EXT_sample_locations
+ out->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)dlSymFunc(lib, "vkCmdSetSampleLocationsEXT");
+ out->vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)dlSymFunc(lib, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
+#endif
+#ifdef VK_EXT_validation_cache
+ out->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)dlSymFunc(lib, "vkCreateValidationCacheEXT");
+ out->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)dlSymFunc(lib, "vkDestroyValidationCacheEXT");
+ out->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)dlSymFunc(lib, "vkMergeValidationCachesEXT");
+ out->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)dlSymFunc(lib, "vkGetValidationCacheDataEXT");
+#endif
+#ifdef VK_EXT_external_memory_host
+ out->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)dlSymFunc(lib, "vkGetMemoryHostPointerPropertiesEXT");
+#endif
+#ifdef VK_AMD_buffer_marker
+ out->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)dlSymFunc(lib, "vkCmdWriteBufferMarkerAMD");
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+ out->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)dlSymFunc(lib, "vkCmdSetCheckpointNV");
+ out->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)dlSymFunc(lib, "vkGetQueueCheckpointDataNV");
+#endif
+#ifdef VK_VERSION_1_0
+ out->vkDestroyInstance = (PFN_vkDestroyInstance)dlSymFunc(lib, "vkDestroyInstance");
+ out->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)dlSymFunc(lib, "vkEnumeratePhysicalDevices");
+ out->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures");
+ out->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceFormatProperties");
+ out->vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceImageFormatProperties");
+ out->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)dlSymFunc(lib, "vkGetPhysicalDeviceProperties");
+ out->vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)dlSymFunc(lib, "vkGetPhysicalDeviceQueueFamilyProperties");
+ out->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)dlSymFunc(lib, "vkGetPhysicalDeviceMemoryProperties");
+ out->vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlSymFunc(lib, "vkGetInstanceProcAddr");
+ out->vkCreateDevice = (PFN_vkCreateDevice)dlSymFunc(lib, "vkCreateDevice");
+ out->vkDestroyDevice = (PFN_vkDestroyDevice)dlSymFunc(lib, "vkDestroyDevice");
+ out->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)dlSymFunc(lib, "vkEnumerateDeviceExtensionProperties");
+ out->vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)dlSymFunc(lib, "vkEnumerateDeviceLayerProperties");
+ out->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)dlSymFunc(lib, "vkGetDeviceQueue");
+ out->vkQueueSubmit = (PFN_vkQueueSubmit)dlSymFunc(lib, "vkQueueSubmit");
+ out->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)dlSymFunc(lib, "vkQueueWaitIdle");
+ out->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)dlSymFunc(lib, "vkDeviceWaitIdle");
+ out->vkDestroyInstance = (PFN_vkDestroyInstance)dlSymFunc(lib, "vkDestroyInstance");
+ out->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)dlSymFunc(lib, "vkEnumeratePhysicalDevices");
+ out->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures");
+ out->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceFormatProperties");
+ out->vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)dlSymFunc(lib, "vkGetPhysicalDeviceImageFormatProperties");
+ out->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)dlSymFunc(lib, "vkGetPhysicalDeviceProperties");
+ out->vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)dlSymFunc(lib, "vkGetPhysicalDeviceQueueFamilyProperties");
+ out->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)dlSymFunc(lib, "vkGetPhysicalDeviceMemoryProperties");
+ out->vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlSymFunc(lib, "vkGetInstanceProcAddr");
+ out->vkCreateDevice = (PFN_vkCreateDevice)dlSymFunc(lib, "vkCreateDevice");
+ out->vkDestroyDevice = (PFN_vkDestroyDevice)dlSymFunc(lib, "vkDestroyDevice");
+ out->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)dlSymFunc(lib, "vkEnumerateDeviceExtensionProperties");
+ out->vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)dlSymFunc(lib, "vkEnumerateDeviceLayerProperties");
+ out->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)dlSymFunc(lib, "vkGetDeviceQueue");
+ out->vkQueueSubmit = (PFN_vkQueueSubmit)dlSymFunc(lib, "vkQueueSubmit");
+ out->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)dlSymFunc(lib, "vkQueueWaitIdle");
+ out->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)dlSymFunc(lib, "vkDeviceWaitIdle");
+#endif
+}
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.h
new file mode 100644
index 0000000000..51d014ebc0
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_dispatch.h
@@ -0,0 +1,610 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_dispatch
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
+
+#include <vulkan.h>
+
+
+namespace goldfish_vk {
+
+struct VulkanDispatch;
+
+} // namespace goldfish_vk
+using DlOpenFunc = void* (void);
+using DlSymFunc = void* (void*, const char*);
+using InstanceGetter = bool (const goldfish_vk::VulkanDispatch* vk, VkInstance* instance);
+using DeviceGetter = bool (const goldfish_vk::VulkanDispatch* vk, VkInstance instance, VkPhysicalDevice* physDeviceOut, uint32_t* physicalDeviceQueueFamilyInfoCountOut, VkQueueFamilyProperties* physicalDeviceQueueFamilyInfosOut, VkDevice* deviceOut, bool* presentCapable);
+
+
+namespace goldfish_vk {
+
+
+void init_vulkan_dispatch_from_system_loader(
+ DlOpenFunc dlOpenFunc,
+ DlSymFunc dlSymFunc,
+ VulkanDispatch* dispatch_out);
+
+struct VulkanDispatch {
+#ifdef VK_VERSION_1_0
+PFN_vkCreateInstance vkCreateInstance;
+PFN_vkDestroyInstance vkDestroyInstance;
+PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
+PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
+PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
+PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties;
+PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
+PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
+PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
+PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
+PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
+PFN_vkCreateDevice vkCreateDevice;
+PFN_vkDestroyDevice vkDestroyDevice;
+PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
+PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
+PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
+PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
+PFN_vkGetDeviceQueue vkGetDeviceQueue;
+PFN_vkQueueSubmit vkQueueSubmit;
+PFN_vkQueueWaitIdle vkQueueWaitIdle;
+PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
+PFN_vkAllocateMemory vkAllocateMemory;
+PFN_vkFreeMemory vkFreeMemory;
+PFN_vkMapMemory vkMapMemory;
+PFN_vkUnmapMemory vkUnmapMemory;
+PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
+PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
+PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment;
+PFN_vkBindBufferMemory vkBindBufferMemory;
+PFN_vkBindImageMemory vkBindImageMemory;
+PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
+PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
+PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements;
+PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties;
+PFN_vkQueueBindSparse vkQueueBindSparse;
+PFN_vkCreateFence vkCreateFence;
+PFN_vkDestroyFence vkDestroyFence;
+PFN_vkResetFences vkResetFences;
+PFN_vkGetFenceStatus vkGetFenceStatus;
+PFN_vkWaitForFences vkWaitForFences;
+PFN_vkCreateSemaphore vkCreateSemaphore;
+PFN_vkDestroySemaphore vkDestroySemaphore;
+PFN_vkCreateEvent vkCreateEvent;
+PFN_vkDestroyEvent vkDestroyEvent;
+PFN_vkGetEventStatus vkGetEventStatus;
+PFN_vkSetEvent vkSetEvent;
+PFN_vkResetEvent vkResetEvent;
+PFN_vkCreateQueryPool vkCreateQueryPool;
+PFN_vkDestroyQueryPool vkDestroyQueryPool;
+PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
+PFN_vkCreateBuffer vkCreateBuffer;
+PFN_vkDestroyBuffer vkDestroyBuffer;
+PFN_vkCreateBufferView vkCreateBufferView;
+PFN_vkDestroyBufferView vkDestroyBufferView;
+PFN_vkCreateImage vkCreateImage;
+PFN_vkDestroyImage vkDestroyImage;
+PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
+PFN_vkCreateImageView vkCreateImageView;
+PFN_vkDestroyImageView vkDestroyImageView;
+PFN_vkCreateShaderModule vkCreateShaderModule;
+PFN_vkDestroyShaderModule vkDestroyShaderModule;
+PFN_vkCreatePipelineCache vkCreatePipelineCache;
+PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
+PFN_vkGetPipelineCacheData vkGetPipelineCacheData;
+PFN_vkMergePipelineCaches vkMergePipelineCaches;
+PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
+PFN_vkCreateComputePipelines vkCreateComputePipelines;
+PFN_vkDestroyPipeline vkDestroyPipeline;
+PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
+PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
+PFN_vkCreateSampler vkCreateSampler;
+PFN_vkDestroySampler vkDestroySampler;
+PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
+PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
+PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
+PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
+PFN_vkResetDescriptorPool vkResetDescriptorPool;
+PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
+PFN_vkFreeDescriptorSets vkFreeDescriptorSets;
+PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
+PFN_vkCreateFramebuffer vkCreateFramebuffer;
+PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
+PFN_vkCreateRenderPass vkCreateRenderPass;
+PFN_vkDestroyRenderPass vkDestroyRenderPass;
+PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity;
+PFN_vkCreateCommandPool vkCreateCommandPool;
+PFN_vkDestroyCommandPool vkDestroyCommandPool;
+PFN_vkResetCommandPool vkResetCommandPool;
+PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
+PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
+PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
+PFN_vkEndCommandBuffer vkEndCommandBuffer;
+PFN_vkResetCommandBuffer vkResetCommandBuffer;
+PFN_vkCmdBindPipeline vkCmdBindPipeline;
+PFN_vkCmdSetViewport vkCmdSetViewport;
+PFN_vkCmdSetScissor vkCmdSetScissor;
+PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
+PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
+PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants;
+PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds;
+PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask;
+PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask;
+PFN_vkCmdSetStencilReference vkCmdSetStencilReference;
+PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
+PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
+PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
+PFN_vkCmdDraw vkCmdDraw;
+PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
+PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
+PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
+PFN_vkCmdDispatch vkCmdDispatch;
+PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect;
+PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
+PFN_vkCmdCopyImage vkCmdCopyImage;
+PFN_vkCmdBlitImage vkCmdBlitImage;
+PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
+PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer;
+PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer;
+PFN_vkCmdFillBuffer vkCmdFillBuffer;
+PFN_vkCmdClearColorImage vkCmdClearColorImage;
+PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage;
+PFN_vkCmdClearAttachments vkCmdClearAttachments;
+PFN_vkCmdResolveImage vkCmdResolveImage;
+PFN_vkCmdSetEvent vkCmdSetEvent;
+PFN_vkCmdResetEvent vkCmdResetEvent;
+PFN_vkCmdWaitEvents vkCmdWaitEvents;
+PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
+PFN_vkCmdBeginQuery vkCmdBeginQuery;
+PFN_vkCmdEndQuery vkCmdEndQuery;
+PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
+PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp;
+PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
+PFN_vkCmdPushConstants vkCmdPushConstants;
+PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
+PFN_vkCmdNextSubpass vkCmdNextSubpass;
+PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
+PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
+#endif
+#ifdef VK_VERSION_1_1
+PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion;
+PFN_vkBindBufferMemory2 vkBindBufferMemory2;
+PFN_vkBindImageMemory2 vkBindImageMemory2;
+PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures;
+PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask;
+PFN_vkCmdDispatchBase vkCmdDispatchBase;
+PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups;
+PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2;
+PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2;
+PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2;
+PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
+PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
+PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2;
+PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2;
+PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2;
+PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2;
+PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2;
+PFN_vkTrimCommandPool vkTrimCommandPool;
+PFN_vkGetDeviceQueue2 vkGetDeviceQueue2;
+PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion;
+PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion;
+PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate;
+PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate;
+PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate;
+PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties;
+PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties;
+PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties;
+PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport;
+#endif
+#ifdef VK_KHR_surface
+PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
+PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR;
+PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
+PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR;
+PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR;
+#endif
+#ifdef VK_KHR_swapchain
+PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR;
+PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR;
+PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR;
+PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR;
+PFN_vkQueuePresentKHR vkQueuePresentKHR;
+PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR;
+PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR;
+PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR;
+PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR;
+#endif
+#ifdef VK_KHR_display
+PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR;
+PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
+PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR;
+PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR;
+PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR;
+PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR;
+PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR;
+#endif
+#ifdef VK_KHR_display_swapchain
+PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR;
+#endif
+#ifdef VK_KHR_xlib_surface
+PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR;
+PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR;
+#endif
+#ifdef VK_KHR_xcb_surface
+PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR;
+PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR;
+#endif
+#ifdef VK_KHR_wayland_surface
+PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR;
+PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR;
+#endif
+#ifdef VK_KHR_mir_surface
+PFN_vkCreateMirSurfaceKHR vkCreateMirSurfaceKHR;
+PFN_vkGetPhysicalDeviceMirPresentationSupportKHR vkGetPhysicalDeviceMirPresentationSupportKHR;
+#endif
+#ifdef VK_KHR_android_surface
+PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
+#endif
+#ifdef VK_KHR_win32_surface
+PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR;
+PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR;
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR;
+PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR;
+PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR;
+PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR;
+PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR;
+PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR;
+PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
+#endif
+#ifdef VK_KHR_device_group
+PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR;
+PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR;
+PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR;
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR;
+#endif
+#ifdef VK_KHR_device_group_creation
+PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR;
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR;
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR;
+PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR;
+#endif
+#ifdef VK_KHR_external_memory_fd
+PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR;
+PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR;
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR;
+PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR;
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR;
+PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR;
+#endif
+#ifdef VK_KHR_push_descriptor
+PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
+PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR;
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+#endif
+#ifdef VK_KHR_descriptor_update_template
+PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR;
+PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR;
+PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR;
+#endif
+#ifdef VK_KHR_create_renderpass2
+PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR;
+PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR;
+PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR;
+PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR;
+#endif
+#ifdef VK_KHR_shared_presentable_image
+PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR;
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR;
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR;
+PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR;
+#endif
+#ifdef VK_KHR_external_fence_fd
+PFN_vkImportFenceFdKHR vkImportFenceFdKHR;
+PFN_vkGetFenceFdKHR vkGetFenceFdKHR;
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR;
+PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR;
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR;
+PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
+PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR;
+PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR;
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR;
+PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR;
+PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR;
+#endif
+#ifdef VK_KHR_image_format_list
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR;
+PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR;
+#endif
+#ifdef VK_KHR_bind_memory2
+PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR;
+PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR;
+#endif
+#ifdef VK_KHR_maintenance3
+PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR;
+#endif
+#ifdef VK_KHR_draw_indirect_count
+PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR;
+PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR;
+#endif
+#ifdef VK_KHR_8bit_storage
+#endif
+#ifdef VK_EXT_debug_report
+PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT;
+PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT;
+PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT;
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT;
+PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT;
+PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT;
+PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT;
+PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT;
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+#endif
+#ifdef VK_AMD_draw_indirect_count
+PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD;
+PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD;
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+#endif
+#ifdef VK_AMD_shader_info
+PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
+#endif
+#ifdef VK_NV_external_memory
+#endif
+#ifdef VK_NV_external_memory_win32
+PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+#endif
+#ifdef VK_EXT_validation_flags
+#endif
+#ifdef VK_NN_vi_surface
+PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT;
+PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT;
+#endif
+#ifdef VK_NVX_device_generated_commands
+PFN_vkCmdProcessCommandsNVX vkCmdProcessCommandsNVX;
+PFN_vkCmdReserveSpaceForCommandsNVX vkCmdReserveSpaceForCommandsNVX;
+PFN_vkCreateIndirectCommandsLayoutNVX vkCreateIndirectCommandsLayoutNVX;
+PFN_vkDestroyIndirectCommandsLayoutNVX vkDestroyIndirectCommandsLayoutNVX;
+PFN_vkCreateObjectTableNVX vkCreateObjectTableNVX;
+PFN_vkDestroyObjectTableNVX vkDestroyObjectTableNVX;
+PFN_vkRegisterObjectsNVX vkRegisterObjectsNVX;
+PFN_vkUnregisterObjectsNVX vkUnregisterObjectsNVX;
+PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV;
+#endif
+#ifdef VK_EXT_direct_mode_display
+PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT;
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
+PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
+#endif
+#ifdef VK_EXT_display_surface_counter
+PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT;
+#endif
+#ifdef VK_EXT_display_control
+PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT;
+PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT;
+PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT;
+PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT;
+#endif
+#ifdef VK_GOOGLE_display_timing
+PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
+PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+#endif
+#ifdef VK_NV_viewport_swizzle
+#endif
+#ifdef VK_EXT_discard_rectangles
+PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT;
+#endif
+#ifdef VK_EXT_conservative_rasterization
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT;
+#endif
+#ifdef VK_MVK_ios_surface
+PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK;
+#endif
+#ifdef VK_MVK_macos_surface
+PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT;
+PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT;
+PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT;
+PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT;
+PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT;
+PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT;
+PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT;
+PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT;
+PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT;
+PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT;
+PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT;
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
+PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT;
+PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT;
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT;
+PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT;
+PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT;
+PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT;
+#endif
+#ifdef VK_EXT_descriptor_indexing
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+#endif
+#ifdef VK_EXT_external_memory_host
+PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
+#endif
+#ifdef VK_AMD_buffer_marker
+PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD;
+#endif
+#ifdef VK_AMD_shader_core_properties
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV;
+PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV;
+#endif
+};
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.cpp
new file mode 100644
index 0000000000..b63e160014
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.cpp
@@ -0,0 +1,3015 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_handlemap
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#include "goldfish_vk_handlemap.h"
+
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void handlemap_VkApplicationInfo(
+ VulkanHandleMapping* handlemap,
+ VkApplicationInfo* toMap)
+{
+}
+
+void handlemap_VkInstanceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkInstanceCreateInfo* toMap)
+{
+ if (toMap->pApplicationInfo)
+ {
+ handlemap_VkApplicationInfo(handlemap, (VkApplicationInfo*)(toMap->pApplicationInfo));
+ }
+}
+
+void handlemap_VkAllocationCallbacks(
+ VulkanHandleMapping* handlemap,
+ VkAllocationCallbacks* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceFeatures* toMap)
+{
+}
+
+void handlemap_VkFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkFormatProperties* toMap)
+{
+}
+
+void handlemap_VkExtent3D(
+ VulkanHandleMapping* handlemap,
+ VkExtent3D* toMap)
+{
+}
+
+void handlemap_VkImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatProperties* toMap)
+{
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->maxExtent));
+}
+
+void handlemap_VkPhysicalDeviceLimits(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceLimits* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceSparseProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSparseProperties* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProperties* toMap)
+{
+ handlemap_VkPhysicalDeviceLimits(handlemap, (VkPhysicalDeviceLimits*)(&toMap->limits));
+ handlemap_VkPhysicalDeviceSparseProperties(handlemap, (VkPhysicalDeviceSparseProperties*)(&toMap->sparseProperties));
+}
+
+void handlemap_VkQueueFamilyProperties(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyProperties* toMap)
+{
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->minImageTransferGranularity));
+}
+
+void handlemap_VkMemoryType(
+ VulkanHandleMapping* handlemap,
+ VkMemoryType* toMap)
+{
+}
+
+void handlemap_VkMemoryHeap(
+ VulkanHandleMapping* handlemap,
+ VkMemoryHeap* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMemoryProperties* toMap)
+{
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
+ {
+ handlemap_VkMemoryType(handlemap, (VkMemoryType*)(toMap->memoryTypes + i));
+ }
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
+ {
+ handlemap_VkMemoryHeap(handlemap, (VkMemoryHeap*)(toMap->memoryHeaps + i));
+ }
+}
+
+void handlemap_VkDeviceQueueCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueCreateInfo* toMap)
+{
+}
+
+void handlemap_VkDeviceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceCreateInfo* toMap)
+{
+ if (toMap->pQueueCreateInfos)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->queueCreateInfoCount; ++i)
+ {
+ handlemap_VkDeviceQueueCreateInfo(handlemap, (VkDeviceQueueCreateInfo*)(toMap->pQueueCreateInfos + i));
+ }
+ }
+ if (toMap->pEnabledFeatures)
+ {
+ handlemap_VkPhysicalDeviceFeatures(handlemap, (VkPhysicalDeviceFeatures*)(toMap->pEnabledFeatures));
+ }
+}
+
+void handlemap_VkExtensionProperties(
+ VulkanHandleMapping* handlemap,
+ VkExtensionProperties* toMap)
+{
+}
+
+void handlemap_VkLayerProperties(
+ VulkanHandleMapping* handlemap,
+ VkLayerProperties* toMap)
+{
+}
+
+void handlemap_VkSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkSubmitInfo* toMap)
+{
+ if (toMap->pWaitSemaphores)
+ {
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)toMap->pWaitSemaphores, toMap->waitSemaphoreCount);
+ }
+ if (toMap->pCommandBuffers)
+ {
+ handlemap->mapHandles_VkCommandBuffer((VkCommandBuffer*)toMap->pCommandBuffers, toMap->commandBufferCount);
+ }
+ if (toMap->pSignalSemaphores)
+ {
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)toMap->pSignalSemaphores, toMap->signalSemaphoreCount);
+ }
+}
+
+void handlemap_VkMemoryAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryAllocateInfo* toMap)
+{
+}
+
+void handlemap_VkMappedMemoryRange(
+ VulkanHandleMapping* handlemap,
+ VkMappedMemoryRange* toMap)
+{
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkMemoryRequirements(
+ VulkanHandleMapping* handlemap,
+ VkMemoryRequirements* toMap)
+{
+}
+
+void handlemap_VkSparseImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageFormatProperties* toMap)
+{
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->imageGranularity));
+}
+
+void handlemap_VkSparseImageMemoryRequirements(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryRequirements* toMap)
+{
+ handlemap_VkSparseImageFormatProperties(handlemap, (VkSparseImageFormatProperties*)(&toMap->formatProperties));
+}
+
+void handlemap_VkSparseMemoryBind(
+ VulkanHandleMapping* handlemap,
+ VkSparseMemoryBind* toMap)
+{
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkSparseBufferMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseBufferMemoryBindInfo* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+ if (toMap->pBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->bindCount; ++i)
+ {
+ handlemap_VkSparseMemoryBind(handlemap, (VkSparseMemoryBind*)(toMap->pBinds + i));
+ }
+ }
+}
+
+void handlemap_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageOpaqueMemoryBindInfo* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ if (toMap->pBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->bindCount; ++i)
+ {
+ handlemap_VkSparseMemoryBind(handlemap, (VkSparseMemoryBind*)(toMap->pBinds + i));
+ }
+ }
+}
+
+void handlemap_VkImageSubresource(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresource* toMap)
+{
+}
+
+void handlemap_VkOffset3D(
+ VulkanHandleMapping* handlemap,
+ VkOffset3D* toMap)
+{
+}
+
+void handlemap_VkSparseImageMemoryBind(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryBind* toMap)
+{
+ handlemap_VkImageSubresource(handlemap, (VkImageSubresource*)(&toMap->subresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->offset));
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->extent));
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkSparseImageMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryBindInfo* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ if (toMap->pBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->bindCount; ++i)
+ {
+ handlemap_VkSparseImageMemoryBind(handlemap, (VkSparseImageMemoryBind*)(toMap->pBinds + i));
+ }
+ }
+}
+
+void handlemap_VkBindSparseInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindSparseInfo* toMap)
+{
+ if (toMap->pWaitSemaphores)
+ {
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)toMap->pWaitSemaphores, toMap->waitSemaphoreCount);
+ }
+ if (toMap->pBufferBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->bufferBindCount; ++i)
+ {
+ handlemap_VkSparseBufferMemoryBindInfo(handlemap, (VkSparseBufferMemoryBindInfo*)(toMap->pBufferBinds + i));
+ }
+ }
+ if (toMap->pImageOpaqueBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->imageOpaqueBindCount; ++i)
+ {
+ handlemap_VkSparseImageOpaqueMemoryBindInfo(handlemap, (VkSparseImageOpaqueMemoryBindInfo*)(toMap->pImageOpaqueBinds + i));
+ }
+ }
+ if (toMap->pImageBinds)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->imageBindCount; ++i)
+ {
+ handlemap_VkSparseImageMemoryBindInfo(handlemap, (VkSparseImageMemoryBindInfo*)(toMap->pImageBinds + i));
+ }
+ }
+ if (toMap->pSignalSemaphores)
+ {
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)toMap->pSignalSemaphores, toMap->signalSemaphoreCount);
+ }
+}
+
+void handlemap_VkFenceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkFenceCreateInfo* toMap)
+{
+}
+
+void handlemap_VkSemaphoreCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreCreateInfo* toMap)
+{
+}
+
+void handlemap_VkEventCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkEventCreateInfo* toMap)
+{
+}
+
+void handlemap_VkQueryPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkQueryPoolCreateInfo* toMap)
+{
+}
+
+void handlemap_VkBufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkBufferCreateInfo* toMap)
+{
+}
+
+void handlemap_VkBufferViewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkBufferViewCreateInfo* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkImageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageCreateInfo* toMap)
+{
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->extent));
+}
+
+void handlemap_VkSubresourceLayout(
+ VulkanHandleMapping* handlemap,
+ VkSubresourceLayout* toMap)
+{
+}
+
+void handlemap_VkComponentMapping(
+ VulkanHandleMapping* handlemap,
+ VkComponentMapping* toMap)
+{
+}
+
+void handlemap_VkImageSubresourceRange(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresourceRange* toMap)
+{
+}
+
+void handlemap_VkImageViewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageViewCreateInfo* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ handlemap_VkComponentMapping(handlemap, (VkComponentMapping*)(&toMap->components));
+ handlemap_VkImageSubresourceRange(handlemap, (VkImageSubresourceRange*)(&toMap->subresourceRange));
+}
+
+void handlemap_VkShaderModuleCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkShaderModuleCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPipelineCacheCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCacheCreateInfo* toMap)
+{
+}
+
+void handlemap_VkSpecializationMapEntry(
+ VulkanHandleMapping* handlemap,
+ VkSpecializationMapEntry* toMap)
+{
+}
+
+void handlemap_VkSpecializationInfo(
+ VulkanHandleMapping* handlemap,
+ VkSpecializationInfo* toMap)
+{
+ if (toMap->pMapEntries)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->mapEntryCount; ++i)
+ {
+ handlemap_VkSpecializationMapEntry(handlemap, (VkSpecializationMapEntry*)(toMap->pMapEntries + i));
+ }
+ }
+}
+
+void handlemap_VkPipelineShaderStageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineShaderStageCreateInfo* toMap)
+{
+ handlemap->mapHandles_VkShaderModule((VkShaderModule*)&toMap->module);
+ if (toMap->pSpecializationInfo)
+ {
+ handlemap_VkSpecializationInfo(handlemap, (VkSpecializationInfo*)(toMap->pSpecializationInfo));
+ }
+}
+
+void handlemap_VkVertexInputBindingDescription(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputBindingDescription* toMap)
+{
+}
+
+void handlemap_VkVertexInputAttributeDescription(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputAttributeDescription* toMap)
+{
+}
+
+void handlemap_VkPipelineVertexInputStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineVertexInputStateCreateInfo* toMap)
+{
+ if (toMap->pVertexBindingDescriptions)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->vertexBindingDescriptionCount; ++i)
+ {
+ handlemap_VkVertexInputBindingDescription(handlemap, (VkVertexInputBindingDescription*)(toMap->pVertexBindingDescriptions + i));
+ }
+ }
+ if (toMap->pVertexAttributeDescriptions)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->vertexAttributeDescriptionCount; ++i)
+ {
+ handlemap_VkVertexInputAttributeDescription(handlemap, (VkVertexInputAttributeDescription*)(toMap->pVertexAttributeDescriptions + i));
+ }
+ }
+}
+
+void handlemap_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineInputAssemblyStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPipelineTessellationStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineTessellationStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkViewport(
+ VulkanHandleMapping* handlemap,
+ VkViewport* toMap)
+{
+}
+
+void handlemap_VkOffset2D(
+ VulkanHandleMapping* handlemap,
+ VkOffset2D* toMap)
+{
+}
+
+void handlemap_VkExtent2D(
+ VulkanHandleMapping* handlemap,
+ VkExtent2D* toMap)
+{
+}
+
+void handlemap_VkRect2D(
+ VulkanHandleMapping* handlemap,
+ VkRect2D* toMap)
+{
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->offset));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->extent));
+}
+
+void handlemap_VkPipelineViewportStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportStateCreateInfo* toMap)
+{
+ if (toMap->pViewports)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->viewportCount; ++i)
+ {
+ handlemap_VkViewport(handlemap, (VkViewport*)(toMap->pViewports + i));
+ }
+ }
+ if (toMap->pScissors)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->scissorCount; ++i)
+ {
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(toMap->pScissors + i));
+ }
+ }
+}
+
+void handlemap_VkPipelineRasterizationStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPipelineMultisampleStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineMultisampleStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkStencilOpState(
+ VulkanHandleMapping* handlemap,
+ VkStencilOpState* toMap)
+{
+}
+
+void handlemap_VkPipelineDepthStencilStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDepthStencilStateCreateInfo* toMap)
+{
+ handlemap_VkStencilOpState(handlemap, (VkStencilOpState*)(&toMap->front));
+ handlemap_VkStencilOpState(handlemap, (VkStencilOpState*)(&toMap->back));
+}
+
+void handlemap_VkPipelineColorBlendAttachmentState(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendAttachmentState* toMap)
+{
+}
+
+void handlemap_VkPipelineColorBlendStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendStateCreateInfo* toMap)
+{
+ if (toMap->pAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->attachmentCount; ++i)
+ {
+ handlemap_VkPipelineColorBlendAttachmentState(handlemap, (VkPipelineColorBlendAttachmentState*)(toMap->pAttachments + i));
+ }
+ }
+}
+
+void handlemap_VkPipelineDynamicStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDynamicStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkGraphicsPipelineCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkGraphicsPipelineCreateInfo* toMap)
+{
+ if (toMap->pStages)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->stageCount; ++i)
+ {
+ handlemap_VkPipelineShaderStageCreateInfo(handlemap, (VkPipelineShaderStageCreateInfo*)(toMap->pStages + i));
+ }
+ }
+ if (toMap->pVertexInputState)
+ {
+ handlemap_VkPipelineVertexInputStateCreateInfo(handlemap, (VkPipelineVertexInputStateCreateInfo*)(toMap->pVertexInputState));
+ }
+ if (toMap->pInputAssemblyState)
+ {
+ handlemap_VkPipelineInputAssemblyStateCreateInfo(handlemap, (VkPipelineInputAssemblyStateCreateInfo*)(toMap->pInputAssemblyState));
+ }
+ if (toMap->pTessellationState)
+ {
+ handlemap_VkPipelineTessellationStateCreateInfo(handlemap, (VkPipelineTessellationStateCreateInfo*)(toMap->pTessellationState));
+ }
+ if (toMap->pViewportState)
+ {
+ handlemap_VkPipelineViewportStateCreateInfo(handlemap, (VkPipelineViewportStateCreateInfo*)(toMap->pViewportState));
+ }
+ if (toMap->pRasterizationState)
+ {
+ handlemap_VkPipelineRasterizationStateCreateInfo(handlemap, (VkPipelineRasterizationStateCreateInfo*)(toMap->pRasterizationState));
+ }
+ if (toMap->pMultisampleState)
+ {
+ handlemap_VkPipelineMultisampleStateCreateInfo(handlemap, (VkPipelineMultisampleStateCreateInfo*)(toMap->pMultisampleState));
+ }
+ if (toMap->pDepthStencilState)
+ {
+ handlemap_VkPipelineDepthStencilStateCreateInfo(handlemap, (VkPipelineDepthStencilStateCreateInfo*)(toMap->pDepthStencilState));
+ }
+ if (toMap->pColorBlendState)
+ {
+ handlemap_VkPipelineColorBlendStateCreateInfo(handlemap, (VkPipelineColorBlendStateCreateInfo*)(toMap->pColorBlendState));
+ }
+ if (toMap->pDynamicState)
+ {
+ handlemap_VkPipelineDynamicStateCreateInfo(handlemap, (VkPipelineDynamicStateCreateInfo*)(toMap->pDynamicState));
+ }
+ handlemap->mapHandles_VkPipelineLayout((VkPipelineLayout*)&toMap->layout);
+ handlemap->mapHandles_VkRenderPass((VkRenderPass*)&toMap->renderPass);
+ handlemap->mapHandles_VkPipeline((VkPipeline*)&toMap->basePipelineHandle);
+}
+
+void handlemap_VkComputePipelineCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkComputePipelineCreateInfo* toMap)
+{
+ handlemap_VkPipelineShaderStageCreateInfo(handlemap, (VkPipelineShaderStageCreateInfo*)(&toMap->stage));
+ handlemap->mapHandles_VkPipelineLayout((VkPipelineLayout*)&toMap->layout);
+ handlemap->mapHandles_VkPipeline((VkPipeline*)&toMap->basePipelineHandle);
+}
+
+void handlemap_VkPushConstantRange(
+ VulkanHandleMapping* handlemap,
+ VkPushConstantRange* toMap)
+{
+}
+
+void handlemap_VkPipelineLayoutCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineLayoutCreateInfo* toMap)
+{
+ if (toMap->pSetLayouts)
+ {
+ handlemap->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)toMap->pSetLayouts, toMap->setLayoutCount);
+ }
+ if (toMap->pPushConstantRanges)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->pushConstantRangeCount; ++i)
+ {
+ handlemap_VkPushConstantRange(handlemap, (VkPushConstantRange*)(toMap->pPushConstantRanges + i));
+ }
+ }
+}
+
+void handlemap_VkSamplerCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerCreateInfo* toMap)
+{
+}
+
+void handlemap_VkDescriptorSetLayoutBinding(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutBinding* toMap)
+{
+ if (toMap->pImmutableSamplers)
+ {
+ handlemap->mapHandles_VkSampler((VkSampler*)toMap->pImmutableSamplers, toMap->descriptorCount);
+ }
+}
+
+void handlemap_VkDescriptorSetLayoutCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutCreateInfo* toMap)
+{
+ if (toMap->pBindings)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->bindingCount; ++i)
+ {
+ handlemap_VkDescriptorSetLayoutBinding(handlemap, (VkDescriptorSetLayoutBinding*)(toMap->pBindings + i));
+ }
+ }
+}
+
+void handlemap_VkDescriptorPoolSize(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorPoolSize* toMap)
+{
+}
+
+void handlemap_VkDescriptorPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorPoolCreateInfo* toMap)
+{
+ if (toMap->pPoolSizes)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->poolSizeCount; ++i)
+ {
+ handlemap_VkDescriptorPoolSize(handlemap, (VkDescriptorPoolSize*)(toMap->pPoolSizes + i));
+ }
+ }
+}
+
+void handlemap_VkDescriptorSetAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetAllocateInfo* toMap)
+{
+ handlemap->mapHandles_VkDescriptorPool((VkDescriptorPool*)&toMap->descriptorPool);
+ if (toMap->pSetLayouts)
+ {
+ handlemap->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)toMap->pSetLayouts, toMap->descriptorSetCount);
+ }
+}
+
+void handlemap_VkDescriptorImageInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorImageInfo* toMap)
+{
+ handlemap->mapHandles_VkSampler((VkSampler*)&toMap->sampler);
+ handlemap->mapHandles_VkImageView((VkImageView*)&toMap->imageView);
+}
+
+void handlemap_VkDescriptorBufferInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorBufferInfo* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkWriteDescriptorSet(
+ VulkanHandleMapping* handlemap,
+ VkWriteDescriptorSet* toMap)
+{
+ handlemap->mapHandles_VkDescriptorSet((VkDescriptorSet*)&toMap->dstSet);
+ if (toMap->pImageInfo)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->descriptorCount; ++i)
+ {
+ handlemap_VkDescriptorImageInfo(handlemap, (VkDescriptorImageInfo*)(toMap->pImageInfo + i));
+ }
+ }
+ if (toMap->pBufferInfo)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->descriptorCount; ++i)
+ {
+ handlemap_VkDescriptorBufferInfo(handlemap, (VkDescriptorBufferInfo*)(toMap->pBufferInfo + i));
+ }
+ }
+ if (toMap->pTexelBufferView)
+ {
+ handlemap->mapHandles_VkBufferView((VkBufferView*)toMap->pTexelBufferView, toMap->descriptorCount);
+ }
+}
+
+void handlemap_VkCopyDescriptorSet(
+ VulkanHandleMapping* handlemap,
+ VkCopyDescriptorSet* toMap)
+{
+ handlemap->mapHandles_VkDescriptorSet((VkDescriptorSet*)&toMap->srcSet);
+ handlemap->mapHandles_VkDescriptorSet((VkDescriptorSet*)&toMap->dstSet);
+}
+
+void handlemap_VkFramebufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkFramebufferCreateInfo* toMap)
+{
+ handlemap->mapHandles_VkRenderPass((VkRenderPass*)&toMap->renderPass);
+ if (toMap->pAttachments)
+ {
+ handlemap->mapHandles_VkImageView((VkImageView*)toMap->pAttachments, toMap->attachmentCount);
+ }
+}
+
+void handlemap_VkAttachmentDescription(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentDescription* toMap)
+{
+}
+
+void handlemap_VkAttachmentReference(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentReference* toMap)
+{
+}
+
+void handlemap_VkSubpassDescription(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDescription* toMap)
+{
+ if (toMap->pInputAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->inputAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference(handlemap, (VkAttachmentReference*)(toMap->pInputAttachments + i));
+ }
+ }
+ if (toMap->pColorAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->colorAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference(handlemap, (VkAttachmentReference*)(toMap->pColorAttachments + i));
+ }
+ }
+ if (toMap->pResolveAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->colorAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference(handlemap, (VkAttachmentReference*)(toMap->pResolveAttachments + i));
+ }
+ }
+ if (toMap->pDepthStencilAttachment)
+ {
+ handlemap_VkAttachmentReference(handlemap, (VkAttachmentReference*)(toMap->pDepthStencilAttachment));
+ }
+}
+
+void handlemap_VkSubpassDependency(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDependency* toMap)
+{
+}
+
+void handlemap_VkRenderPassCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassCreateInfo* toMap)
+{
+ if (toMap->pAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->attachmentCount; ++i)
+ {
+ handlemap_VkAttachmentDescription(handlemap, (VkAttachmentDescription*)(toMap->pAttachments + i));
+ }
+ }
+ if (toMap->pSubpasses)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->subpassCount; ++i)
+ {
+ handlemap_VkSubpassDescription(handlemap, (VkSubpassDescription*)(toMap->pSubpasses + i));
+ }
+ }
+ if (toMap->pDependencies)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->dependencyCount; ++i)
+ {
+ handlemap_VkSubpassDependency(handlemap, (VkSubpassDependency*)(toMap->pDependencies + i));
+ }
+ }
+}
+
+void handlemap_VkCommandPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandPoolCreateInfo* toMap)
+{
+}
+
+void handlemap_VkCommandBufferAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferAllocateInfo* toMap)
+{
+ handlemap->mapHandles_VkCommandPool((VkCommandPool*)&toMap->commandPool);
+}
+
+void handlemap_VkCommandBufferInheritanceInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferInheritanceInfo* toMap)
+{
+ handlemap->mapHandles_VkRenderPass((VkRenderPass*)&toMap->renderPass);
+ handlemap->mapHandles_VkFramebuffer((VkFramebuffer*)&toMap->framebuffer);
+}
+
+void handlemap_VkCommandBufferBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferBeginInfo* toMap)
+{
+ if (toMap->pInheritanceInfo)
+ {
+ handlemap_VkCommandBufferInheritanceInfo(handlemap, (VkCommandBufferInheritanceInfo*)(toMap->pInheritanceInfo));
+ }
+}
+
+void handlemap_VkBufferCopy(
+ VulkanHandleMapping* handlemap,
+ VkBufferCopy* toMap)
+{
+}
+
+void handlemap_VkImageSubresourceLayers(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresourceLayers* toMap)
+{
+}
+
+void handlemap_VkImageCopy(
+ VulkanHandleMapping* handlemap,
+ VkImageCopy* toMap)
+{
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->srcSubresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->srcOffset));
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->dstSubresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->dstOffset));
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->extent));
+}
+
+void handlemap_VkImageBlit(
+ VulkanHandleMapping* handlemap,
+ VkImageBlit* toMap)
+{
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->srcSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(toMap->srcOffsets + i));
+ }
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->dstSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(toMap->dstOffsets + i));
+ }
+}
+
+void handlemap_VkBufferImageCopy(
+ VulkanHandleMapping* handlemap,
+ VkBufferImageCopy* toMap)
+{
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->imageSubresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->imageOffset));
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->imageExtent));
+}
+
+void handlemap_VkClearColorValue(
+ VulkanHandleMapping* handlemap,
+ VkClearColorValue* toMap)
+{
+}
+
+void handlemap_VkClearDepthStencilValue(
+ VulkanHandleMapping* handlemap,
+ VkClearDepthStencilValue* toMap)
+{
+}
+
+void handlemap_VkClearValue(
+ VulkanHandleMapping* handlemap,
+ VkClearValue* toMap)
+{
+ handlemap_VkClearColorValue(handlemap, (VkClearColorValue*)(&toMap->color));
+ handlemap_VkClearDepthStencilValue(handlemap, (VkClearDepthStencilValue*)(&toMap->depthStencil));
+}
+
+void handlemap_VkClearAttachment(
+ VulkanHandleMapping* handlemap,
+ VkClearAttachment* toMap)
+{
+ handlemap_VkClearValue(handlemap, (VkClearValue*)(&toMap->clearValue));
+}
+
+void handlemap_VkClearRect(
+ VulkanHandleMapping* handlemap,
+ VkClearRect* toMap)
+{
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(&toMap->rect));
+}
+
+void handlemap_VkImageResolve(
+ VulkanHandleMapping* handlemap,
+ VkImageResolve* toMap)
+{
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->srcSubresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->srcOffset));
+ handlemap_VkImageSubresourceLayers(handlemap, (VkImageSubresourceLayers*)(&toMap->dstSubresource));
+ handlemap_VkOffset3D(handlemap, (VkOffset3D*)(&toMap->dstOffset));
+ handlemap_VkExtent3D(handlemap, (VkExtent3D*)(&toMap->extent));
+}
+
+void handlemap_VkMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkMemoryBarrier* toMap)
+{
+}
+
+void handlemap_VkBufferMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkBufferMemoryBarrier* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkImageMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkImageMemoryBarrier* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ handlemap_VkImageSubresourceRange(handlemap, (VkImageSubresourceRange*)(&toMap->subresourceRange));
+}
+
+void handlemap_VkRenderPassBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassBeginInfo* toMap)
+{
+ handlemap->mapHandles_VkRenderPass((VkRenderPass*)&toMap->renderPass);
+ handlemap->mapHandles_VkFramebuffer((VkFramebuffer*)&toMap->framebuffer);
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(&toMap->renderArea));
+ if (toMap->pClearValues)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->clearValueCount; ++i)
+ {
+ handlemap_VkClearValue(handlemap, (VkClearValue*)(toMap->pClearValues + i));
+ }
+ }
+}
+
+void handlemap_VkDispatchIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDispatchIndirectCommand* toMap)
+{
+}
+
+void handlemap_VkDrawIndexedIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDrawIndexedIndirectCommand* toMap)
+{
+}
+
+void handlemap_VkDrawIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDrawIndirectCommand* toMap)
+{
+}
+
+void handlemap_VkBaseOutStructure(
+ VulkanHandleMapping* handlemap,
+ VkBaseOutStructure* toMap)
+{
+ // TODO: Unsupported : VkBaseOutStructure* pNext
+}
+
+void handlemap_VkBaseInStructure(
+ VulkanHandleMapping* handlemap,
+ VkBaseInStructure* toMap)
+{
+ // TODO: Unsupported : const VkBaseInStructure* pNext
+}
+
+#endif
+#ifdef VK_VERSION_1_1
+void handlemap_VkPhysicalDeviceSubgroupProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSubgroupProperties* toMap)
+{
+}
+
+void handlemap_VkBindBufferMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindBufferMemoryInfo* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkBindImageMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemoryInfo* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkPhysicalDevice16BitStorageFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevice16BitStorageFeatures* toMap)
+{
+}
+
+void handlemap_VkMemoryDedicatedRequirements(
+ VulkanHandleMapping* handlemap,
+ VkMemoryDedicatedRequirements* toMap)
+{
+}
+
+void handlemap_VkMemoryDedicatedAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryDedicatedAllocateInfo* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkMemoryAllocateFlagsInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryAllocateFlagsInfo* toMap)
+{
+}
+
+void handlemap_VkDeviceGroupRenderPassBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupRenderPassBeginInfo* toMap)
+{
+ if (toMap->pDeviceRenderAreas)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->deviceRenderAreaCount; ++i)
+ {
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(toMap->pDeviceRenderAreas + i));
+ }
+ }
+}
+
+void handlemap_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupCommandBufferBeginInfo* toMap)
+{
+}
+
+void handlemap_VkDeviceGroupSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupSubmitInfo* toMap)
+{
+}
+
+void handlemap_VkDeviceGroupBindSparseInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupBindSparseInfo* toMap)
+{
+}
+
+void handlemap_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindBufferMemoryDeviceGroupInfo* toMap)
+{
+}
+
+void handlemap_VkBindImageMemoryDeviceGroupInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemoryDeviceGroupInfo* toMap)
+{
+ if (toMap->pSplitInstanceBindRegions)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->splitInstanceBindRegionCount; ++i)
+ {
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(toMap->pSplitInstanceBindRegions + i));
+ }
+ }
+}
+
+void handlemap_VkPhysicalDeviceGroupProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceGroupProperties* toMap)
+{
+ handlemap->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)toMap->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE);
+}
+
+void handlemap_VkDeviceGroupDeviceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupDeviceCreateInfo* toMap)
+{
+ if (toMap->pPhysicalDevices)
+ {
+ handlemap->mapHandles_VkPhysicalDevice((VkPhysicalDevice*)toMap->pPhysicalDevices, toMap->physicalDeviceCount);
+ }
+}
+
+void handlemap_VkBufferMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkBufferMemoryRequirementsInfo2* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkImageMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkImageMemoryRequirementsInfo2* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+}
+
+void handlemap_VkImageSparseMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkImageSparseMemoryRequirementsInfo2* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+}
+
+void handlemap_VkMemoryRequirements2(
+ VulkanHandleMapping* handlemap,
+ VkMemoryRequirements2* toMap)
+{
+ handlemap_VkMemoryRequirements(handlemap, (VkMemoryRequirements*)(&toMap->memoryRequirements));
+}
+
+void handlemap_VkSparseImageMemoryRequirements2(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryRequirements2* toMap)
+{
+ handlemap_VkSparseImageMemoryRequirements(handlemap, (VkSparseImageMemoryRequirements*)(&toMap->memoryRequirements));
+}
+
+void handlemap_VkPhysicalDeviceFeatures2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceFeatures2* toMap)
+{
+ handlemap_VkPhysicalDeviceFeatures(handlemap, (VkPhysicalDeviceFeatures*)(&toMap->features));
+}
+
+void handlemap_VkPhysicalDeviceProperties2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProperties2* toMap)
+{
+ handlemap_VkPhysicalDeviceProperties(handlemap, (VkPhysicalDeviceProperties*)(&toMap->properties));
+}
+
+void handlemap_VkFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkFormatProperties2* toMap)
+{
+ handlemap_VkFormatProperties(handlemap, (VkFormatProperties*)(&toMap->formatProperties));
+}
+
+void handlemap_VkImageFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatProperties2* toMap)
+{
+ handlemap_VkImageFormatProperties(handlemap, (VkImageFormatProperties*)(&toMap->imageFormatProperties));
+}
+
+void handlemap_VkPhysicalDeviceImageFormatInfo2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceImageFormatInfo2* toMap)
+{
+}
+
+void handlemap_VkQueueFamilyProperties2(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyProperties2* toMap)
+{
+ handlemap_VkQueueFamilyProperties(handlemap, (VkQueueFamilyProperties*)(&toMap->queueFamilyProperties));
+}
+
+void handlemap_VkPhysicalDeviceMemoryProperties2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMemoryProperties2* toMap)
+{
+ handlemap_VkPhysicalDeviceMemoryProperties(handlemap, (VkPhysicalDeviceMemoryProperties*)(&toMap->memoryProperties));
+}
+
+void handlemap_VkSparseImageFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageFormatProperties2* toMap)
+{
+ handlemap_VkSparseImageFormatProperties(handlemap, (VkSparseImageFormatProperties*)(&toMap->properties));
+}
+
+void handlemap_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSparseImageFormatInfo2* toMap)
+{
+}
+
+void handlemap_VkPhysicalDevicePointClippingProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevicePointClippingProperties* toMap)
+{
+}
+
+void handlemap_VkInputAttachmentAspectReference(
+ VulkanHandleMapping* handlemap,
+ VkInputAttachmentAspectReference* toMap)
+{
+}
+
+void handlemap_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassInputAttachmentAspectCreateInfo* toMap)
+{
+ if (toMap->pAspectReferences)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->aspectReferenceCount; ++i)
+ {
+ handlemap_VkInputAttachmentAspectReference(handlemap, (VkInputAttachmentAspectReference*)(toMap->pAspectReferences + i));
+ }
+ }
+}
+
+void handlemap_VkImageViewUsageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageViewUsageCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineTessellationDomainOriginStateCreateInfo* toMap)
+{
+}
+
+void handlemap_VkRenderPassMultiviewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassMultiviewCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceMultiviewFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewFeatures* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceMultiviewProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewProperties* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceVariablePointerFeatures* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProtectedMemoryFeatures* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProtectedMemoryProperties* toMap)
+{
+}
+
+void handlemap_VkDeviceQueueInfo2(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueInfo2* toMap)
+{
+}
+
+void handlemap_VkProtectedSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkProtectedSubmitInfo* toMap)
+{
+}
+
+void handlemap_VkSamplerYcbcrConversionCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionCreateInfo* toMap)
+{
+ handlemap_VkComponentMapping(handlemap, (VkComponentMapping*)(&toMap->components));
+}
+
+void handlemap_VkSamplerYcbcrConversionInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionInfo* toMap)
+{
+ handlemap->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&toMap->conversion);
+}
+
+void handlemap_VkBindImagePlaneMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImagePlaneMemoryInfo* toMap)
+{
+}
+
+void handlemap_VkImagePlaneMemoryRequirementsInfo(
+ VulkanHandleMapping* handlemap,
+ VkImagePlaneMemoryRequirementsInfo* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* toMap)
+{
+}
+
+void handlemap_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionImageFormatProperties* toMap)
+{
+}
+
+void handlemap_VkDescriptorUpdateTemplateEntry(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorUpdateTemplateEntry* toMap)
+{
+}
+
+void handlemap_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorUpdateTemplateCreateInfo* toMap)
+{
+ if (toMap->pDescriptorUpdateEntries)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->descriptorUpdateEntryCount; ++i)
+ {
+ handlemap_VkDescriptorUpdateTemplateEntry(handlemap, (VkDescriptorUpdateTemplateEntry*)(toMap->pDescriptorUpdateEntries + i));
+ }
+ }
+ handlemap->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&toMap->descriptorSetLayout);
+ handlemap->mapHandles_VkPipelineLayout((VkPipelineLayout*)&toMap->pipelineLayout);
+}
+
+void handlemap_VkExternalMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryProperties* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalImageFormatInfo* toMap)
+{
+}
+
+void handlemap_VkExternalImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalImageFormatProperties* toMap)
+{
+ handlemap_VkExternalMemoryProperties(handlemap, (VkExternalMemoryProperties*)(&toMap->externalMemoryProperties));
+}
+
+void handlemap_VkPhysicalDeviceExternalBufferInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalBufferInfo* toMap)
+{
+}
+
+void handlemap_VkExternalBufferProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalBufferProperties* toMap)
+{
+ handlemap_VkExternalMemoryProperties(handlemap, (VkExternalMemoryProperties*)(&toMap->externalMemoryProperties));
+}
+
+void handlemap_VkPhysicalDeviceIDProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceIDProperties* toMap)
+{
+}
+
+void handlemap_VkExternalMemoryImageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryImageCreateInfo* toMap)
+{
+}
+
+void handlemap_VkExternalMemoryBufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryBufferCreateInfo* toMap)
+{
+}
+
+void handlemap_VkExportMemoryAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryAllocateInfo* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceExternalFenceInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalFenceInfo* toMap)
+{
+}
+
+void handlemap_VkExternalFenceProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalFenceProperties* toMap)
+{
+}
+
+void handlemap_VkExportFenceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportFenceCreateInfo* toMap)
+{
+}
+
+void handlemap_VkExportSemaphoreCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportSemaphoreCreateInfo* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalSemaphoreInfo* toMap)
+{
+}
+
+void handlemap_VkExternalSemaphoreProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalSemaphoreProperties* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceMaintenance3Properties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMaintenance3Properties* toMap)
+{
+}
+
+void handlemap_VkDescriptorSetLayoutSupport(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutSupport* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceShaderDrawParameterFeatures* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_surface
+void handlemap_VkSurfaceCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilitiesKHR* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->currentExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->minImageExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxImageExtent));
+}
+
+void handlemap_VkSurfaceFormatKHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceFormatKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_swapchain
+void handlemap_VkSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSwapchainCreateInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&toMap->surface);
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->imageExtent));
+ handlemap->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&toMap->oldSwapchain);
+}
+
+void handlemap_VkPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentInfoKHR* toMap)
+{
+ if (toMap->pWaitSemaphores)
+ {
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)toMap->pWaitSemaphores, toMap->waitSemaphoreCount);
+ }
+ if (toMap->pSwapchains)
+ {
+ handlemap->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)toMap->pSwapchains, toMap->swapchainCount);
+ }
+}
+
+void handlemap_VkImageSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImageSwapchainCreateInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&toMap->swapchain);
+}
+
+void handlemap_VkBindImageMemorySwapchainInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemorySwapchainInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&toMap->swapchain);
+}
+
+void handlemap_VkAcquireNextImageInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkAcquireNextImageInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&toMap->swapchain);
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)&toMap->semaphore);
+ handlemap->mapHandles_VkFence((VkFence*)&toMap->fence);
+}
+
+void handlemap_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupPresentCapabilitiesKHR* toMap)
+{
+}
+
+void handlemap_VkDeviceGroupPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupPresentInfoKHR* toMap)
+{
+}
+
+void handlemap_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupSwapchainCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_display
+void handlemap_VkDisplayPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPropertiesKHR* toMap)
+{
+ handlemap->mapHandles_VkDisplayKHR((VkDisplayKHR*)&toMap->display);
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->physicalDimensions));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->physicalResolution));
+}
+
+void handlemap_VkDisplayModeParametersKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeParametersKHR* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->visibleRegion));
+}
+
+void handlemap_VkDisplayModePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModePropertiesKHR* toMap)
+{
+ handlemap->mapHandles_VkDisplayModeKHR((VkDisplayModeKHR*)&toMap->displayMode);
+ handlemap_VkDisplayModeParametersKHR(handlemap, (VkDisplayModeParametersKHR*)(&toMap->parameters));
+}
+
+void handlemap_VkDisplayModeCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeCreateInfoKHR* toMap)
+{
+ handlemap_VkDisplayModeParametersKHR(handlemap, (VkDisplayModeParametersKHR*)(&toMap->parameters));
+}
+
+void handlemap_VkDisplayPlaneCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneCapabilitiesKHR* toMap)
+{
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->minSrcPosition));
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->maxSrcPosition));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->minSrcExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxSrcExtent));
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->minDstPosition));
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->maxDstPosition));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->minDstExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxDstExtent));
+}
+
+void handlemap_VkDisplayPlanePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlanePropertiesKHR* toMap)
+{
+ handlemap->mapHandles_VkDisplayKHR((VkDisplayKHR*)&toMap->currentDisplay);
+}
+
+void handlemap_VkDisplaySurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplaySurfaceCreateInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkDisplayModeKHR((VkDisplayModeKHR*)&toMap->displayMode);
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->imageExtent));
+}
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void handlemap_VkDisplayPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPresentInfoKHR* toMap)
+{
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(&toMap->srcRect));
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(&toMap->dstRect));
+}
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void handlemap_VkXlibSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkXlibSurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void handlemap_VkXcbSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkXcbSurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void handlemap_VkWaylandSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWaylandSurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_mir_surface
+void handlemap_VkMirSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMirSurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_android_surface
+void handlemap_VkAndroidSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkAndroidSurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_win32_surface
+void handlemap_VkWin32SurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWin32SurfaceCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void handlemap_VkImportMemoryWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryWin32HandleInfoKHR* toMap)
+{
+}
+
+void handlemap_VkExportMemoryWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryWin32HandleInfoKHR* toMap)
+{
+}
+
+void handlemap_VkMemoryWin32HandlePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryWin32HandlePropertiesKHR* toMap)
+{
+}
+
+void handlemap_VkMemoryGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetWin32HandleInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void handlemap_VkImportMemoryFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryFdInfoKHR* toMap)
+{
+}
+
+void handlemap_VkMemoryFdPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryFdPropertiesKHR* toMap)
+{
+}
+
+void handlemap_VkMemoryGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetFdInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void handlemap_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* toMap)
+{
+ if (toMap->pAcquireSyncs)
+ {
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)toMap->pAcquireSyncs, toMap->acquireCount);
+ }
+ if (toMap->pReleaseSyncs)
+ {
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)toMap->pReleaseSyncs, toMap->releaseCount);
+ }
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void handlemap_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportSemaphoreWin32HandleInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)&toMap->semaphore);
+}
+
+void handlemap_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportSemaphoreWin32HandleInfoKHR* toMap)
+{
+}
+
+void handlemap_VkD3D12FenceSubmitInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkD3D12FenceSubmitInfoKHR* toMap)
+{
+}
+
+void handlemap_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreGetWin32HandleInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)&toMap->semaphore);
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void handlemap_VkImportSemaphoreFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportSemaphoreFdInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)&toMap->semaphore);
+}
+
+void handlemap_VkSemaphoreGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreGetFdInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkSemaphore((VkSemaphore*)&toMap->semaphore);
+}
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void handlemap_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void handlemap_VkRectLayerKHR(
+ VulkanHandleMapping* handlemap,
+ VkRectLayerKHR* toMap)
+{
+ handlemap_VkOffset2D(handlemap, (VkOffset2D*)(&toMap->offset));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->extent));
+}
+
+void handlemap_VkPresentRegionKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentRegionKHR* toMap)
+{
+ if (toMap->pRectangles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->rectangleCount; ++i)
+ {
+ handlemap_VkRectLayerKHR(handlemap, (VkRectLayerKHR*)(toMap->pRectangles + i));
+ }
+ }
+}
+
+void handlemap_VkPresentRegionsKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentRegionsKHR* toMap)
+{
+ if (toMap->pRegions)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->swapchainCount; ++i)
+ {
+ handlemap_VkPresentRegionKHR(handlemap, (VkPresentRegionKHR*)(toMap->pRegions + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void handlemap_VkAttachmentDescription2KHR(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentDescription2KHR* toMap)
+{
+}
+
+void handlemap_VkAttachmentReference2KHR(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentReference2KHR* toMap)
+{
+}
+
+void handlemap_VkSubpassDescription2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDescription2KHR* toMap)
+{
+ if (toMap->pInputAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->inputAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference2KHR(handlemap, (VkAttachmentReference2KHR*)(toMap->pInputAttachments + i));
+ }
+ }
+ if (toMap->pColorAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->colorAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference2KHR(handlemap, (VkAttachmentReference2KHR*)(toMap->pColorAttachments + i));
+ }
+ }
+ if (toMap->pResolveAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->colorAttachmentCount; ++i)
+ {
+ handlemap_VkAttachmentReference2KHR(handlemap, (VkAttachmentReference2KHR*)(toMap->pResolveAttachments + i));
+ }
+ }
+ if (toMap->pDepthStencilAttachment)
+ {
+ handlemap_VkAttachmentReference2KHR(handlemap, (VkAttachmentReference2KHR*)(toMap->pDepthStencilAttachment));
+ }
+}
+
+void handlemap_VkSubpassDependency2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDependency2KHR* toMap)
+{
+}
+
+void handlemap_VkRenderPassCreateInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassCreateInfo2KHR* toMap)
+{
+ if (toMap->pAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->attachmentCount; ++i)
+ {
+ handlemap_VkAttachmentDescription2KHR(handlemap, (VkAttachmentDescription2KHR*)(toMap->pAttachments + i));
+ }
+ }
+ if (toMap->pSubpasses)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->subpassCount; ++i)
+ {
+ handlemap_VkSubpassDescription2KHR(handlemap, (VkSubpassDescription2KHR*)(toMap->pSubpasses + i));
+ }
+ }
+ if (toMap->pDependencies)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->dependencyCount; ++i)
+ {
+ handlemap_VkSubpassDependency2KHR(handlemap, (VkSubpassDependency2KHR*)(toMap->pDependencies + i));
+ }
+ }
+}
+
+void handlemap_VkSubpassBeginInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassBeginInfoKHR* toMap)
+{
+}
+
+void handlemap_VkSubpassEndInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassEndInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void handlemap_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkSharedPresentSurfaceCapabilitiesKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void handlemap_VkImportFenceWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportFenceWin32HandleInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkFence((VkFence*)&toMap->fence);
+}
+
+void handlemap_VkExportFenceWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportFenceWin32HandleInfoKHR* toMap)
+{
+}
+
+void handlemap_VkFenceGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkFenceGetWin32HandleInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkFence((VkFence*)&toMap->fence);
+}
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void handlemap_VkImportFenceFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportFenceFdInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkFence((VkFence*)&toMap->fence);
+}
+
+void handlemap_VkFenceGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkFenceGetFdInfoKHR* toMap)
+{
+ handlemap->mapHandles_VkFence((VkFence*)&toMap->fence);
+}
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void handlemap_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSurfaceInfo2KHR* toMap)
+{
+ handlemap->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&toMap->surface);
+}
+
+void handlemap_VkSurfaceCapabilities2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilities2KHR* toMap)
+{
+ handlemap_VkSurfaceCapabilitiesKHR(handlemap, (VkSurfaceCapabilitiesKHR*)(&toMap->surfaceCapabilities));
+}
+
+void handlemap_VkSurfaceFormat2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceFormat2KHR* toMap)
+{
+ handlemap_VkSurfaceFormatKHR(handlemap, (VkSurfaceFormatKHR*)(&toMap->surfaceFormat));
+}
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void handlemap_VkDisplayProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayProperties2KHR* toMap)
+{
+ handlemap_VkDisplayPropertiesKHR(handlemap, (VkDisplayPropertiesKHR*)(&toMap->displayProperties));
+}
+
+void handlemap_VkDisplayPlaneProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneProperties2KHR* toMap)
+{
+ handlemap_VkDisplayPlanePropertiesKHR(handlemap, (VkDisplayPlanePropertiesKHR*)(&toMap->displayPlaneProperties));
+}
+
+void handlemap_VkDisplayModeProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeProperties2KHR* toMap)
+{
+ handlemap_VkDisplayModePropertiesKHR(handlemap, (VkDisplayModePropertiesKHR*)(&toMap->displayModeProperties));
+}
+
+void handlemap_VkDisplayPlaneInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneInfo2KHR* toMap)
+{
+ handlemap->mapHandles_VkDisplayModeKHR((VkDisplayModeKHR*)&toMap->mode);
+}
+
+void handlemap_VkDisplayPlaneCapabilities2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneCapabilities2KHR* toMap)
+{
+ handlemap_VkDisplayPlaneCapabilitiesKHR(handlemap, (VkDisplayPlaneCapabilitiesKHR*)(&toMap->capabilities));
+}
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void handlemap_VkImageFormatListCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatListCreateInfoKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void handlemap_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevice8BitStorageFeaturesKHR* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_debug_report
+void handlemap_VkDebugReportCallbackCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugReportCallbackCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void handlemap_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationStateRasterizationOrderAMD* toMap)
+{
+}
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void handlemap_VkDebugMarkerObjectNameInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerObjectNameInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDebugMarkerObjectTagInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerObjectTagInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDebugMarkerMarkerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerMarkerInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void handlemap_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationImageCreateInfoNV* toMap)
+{
+}
+
+void handlemap_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationBufferCreateInfoNV* toMap)
+{
+}
+
+void handlemap_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationMemoryAllocateInfoNV* toMap)
+{
+ handlemap->mapHandles_VkImage((VkImage*)&toMap->image);
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void handlemap_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanHandleMapping* handlemap,
+ VkTextureLODGatherFormatPropertiesAMD* toMap)
+{
+}
+
+#endif
+#ifdef VK_AMD_shader_info
+void handlemap_VkShaderResourceUsageAMD(
+ VulkanHandleMapping* handlemap,
+ VkShaderResourceUsageAMD* toMap)
+{
+}
+
+void handlemap_VkShaderStatisticsInfoAMD(
+ VulkanHandleMapping* handlemap,
+ VkShaderStatisticsInfoAMD* toMap)
+{
+ handlemap_VkShaderResourceUsageAMD(handlemap, (VkShaderResourceUsageAMD*)(&toMap->resourceUsage));
+}
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void handlemap_VkExternalImageFormatPropertiesNV(
+ VulkanHandleMapping* handlemap,
+ VkExternalImageFormatPropertiesNV* toMap)
+{
+ handlemap_VkImageFormatProperties(handlemap, (VkImageFormatProperties*)(&toMap->imageFormatProperties));
+}
+
+#endif
+#ifdef VK_NV_external_memory
+void handlemap_VkExternalMemoryImageCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryImageCreateInfoNV* toMap)
+{
+}
+
+void handlemap_VkExportMemoryAllocateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryAllocateInfoNV* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void handlemap_VkImportMemoryWin32HandleInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryWin32HandleInfoNV* toMap)
+{
+}
+
+void handlemap_VkExportMemoryWin32HandleInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryWin32HandleInfoNV* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void handlemap_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* toMap)
+{
+ if (toMap->pAcquireSyncs)
+ {
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)toMap->pAcquireSyncs, toMap->acquireCount);
+ }
+ if (toMap->pReleaseSyncs)
+ {
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)toMap->pReleaseSyncs, toMap->releaseCount);
+ }
+}
+
+#endif
+#ifdef VK_EXT_validation_flags
+void handlemap_VkValidationFlagsEXT(
+ VulkanHandleMapping* handlemap,
+ VkValidationFlagsEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_NN_vi_surface
+void handlemap_VkViSurfaceCreateInfoNN(
+ VulkanHandleMapping* handlemap,
+ VkViSurfaceCreateInfoNN* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void handlemap_VkConditionalRenderingBeginInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkConditionalRenderingBeginInfoEXT* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* toMap)
+{
+}
+
+void handlemap_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void handlemap_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGeneratedCommandsFeaturesNVX* toMap)
+{
+}
+
+void handlemap_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGeneratedCommandsLimitsNVX* toMap)
+{
+}
+
+void handlemap_VkIndirectCommandsTokenNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsTokenNVX* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkIndirectCommandsLayoutTokenNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsLayoutTokenNVX* toMap)
+{
+}
+
+void handlemap_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsLayoutCreateInfoNVX* toMap)
+{
+ if (toMap->pTokens)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->tokenCount; ++i)
+ {
+ handlemap_VkIndirectCommandsLayoutTokenNVX(handlemap, (VkIndirectCommandsLayoutTokenNVX*)(toMap->pTokens + i));
+ }
+ }
+}
+
+void handlemap_VkCmdProcessCommandsInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkCmdProcessCommandsInfoNVX* toMap)
+{
+ handlemap->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&toMap->objectTable);
+ handlemap->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&toMap->indirectCommandsLayout);
+ if (toMap->pIndirectCommandsTokens)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->indirectCommandsTokenCount; ++i)
+ {
+ handlemap_VkIndirectCommandsTokenNVX(handlemap, (VkIndirectCommandsTokenNVX*)(toMap->pIndirectCommandsTokens + i));
+ }
+ }
+ handlemap->mapHandles_VkCommandBuffer((VkCommandBuffer*)&toMap->targetCommandBuffer);
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->sequencesCountBuffer);
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->sequencesIndexBuffer);
+}
+
+void handlemap_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkCmdReserveSpaceForCommandsInfoNVX* toMap)
+{
+ handlemap->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&toMap->objectTable);
+ handlemap->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&toMap->indirectCommandsLayout);
+}
+
+void handlemap_VkObjectTableCreateInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableCreateInfoNVX* toMap)
+{
+}
+
+void handlemap_VkObjectTableEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableEntryNVX* toMap)
+{
+}
+
+void handlemap_VkObjectTablePipelineEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTablePipelineEntryNVX* toMap)
+{
+ handlemap->mapHandles_VkPipeline((VkPipeline*)&toMap->pipeline);
+}
+
+void handlemap_VkObjectTableDescriptorSetEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableDescriptorSetEntryNVX* toMap)
+{
+ handlemap->mapHandles_VkPipelineLayout((VkPipelineLayout*)&toMap->pipelineLayout);
+ handlemap->mapHandles_VkDescriptorSet((VkDescriptorSet*)&toMap->descriptorSet);
+}
+
+void handlemap_VkObjectTableVertexBufferEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableVertexBufferEntryNVX* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkObjectTableIndexBufferEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableIndexBufferEntryNVX* toMap)
+{
+ handlemap->mapHandles_VkBuffer((VkBuffer*)&toMap->buffer);
+}
+
+void handlemap_VkObjectTablePushConstantEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTablePushConstantEntryNVX* toMap)
+{
+ handlemap->mapHandles_VkPipelineLayout((VkPipelineLayout*)&toMap->pipelineLayout);
+}
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void handlemap_VkViewportWScalingNV(
+ VulkanHandleMapping* handlemap,
+ VkViewportWScalingNV* toMap)
+{
+}
+
+void handlemap_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportWScalingStateCreateInfoNV* toMap)
+{
+ if (toMap->pViewportWScalings)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->viewportCount; ++i)
+ {
+ handlemap_VkViewportWScalingNV(handlemap, (VkViewportWScalingNV*)(toMap->pViewportWScalings + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void handlemap_VkSurfaceCapabilities2EXT(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilities2EXT* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->currentExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->minImageExtent));
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxImageExtent));
+}
+
+#endif
+#ifdef VK_EXT_display_control
+void handlemap_VkDisplayPowerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPowerInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDeviceEventInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDeviceEventInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDisplayEventInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDisplayEventInfoEXT* toMap)
+{
+}
+
+void handlemap_VkSwapchainCounterCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSwapchainCounterCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void handlemap_VkRefreshCycleDurationGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkRefreshCycleDurationGOOGLE* toMap)
+{
+}
+
+void handlemap_VkPastPresentationTimingGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPastPresentationTimingGOOGLE* toMap)
+{
+}
+
+void handlemap_VkPresentTimeGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPresentTimeGOOGLE* toMap)
+{
+}
+
+void handlemap_VkPresentTimesInfoGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPresentTimesInfoGOOGLE* toMap)
+{
+ if (toMap->pTimes)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->swapchainCount; ++i)
+ {
+ handlemap_VkPresentTimeGOOGLE(handlemap, (VkPresentTimeGOOGLE*)(toMap->pTimes + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void handlemap_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void handlemap_VkViewportSwizzleNV(
+ VulkanHandleMapping* handlemap,
+ VkViewportSwizzleNV* toMap)
+{
+}
+
+void handlemap_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportSwizzleStateCreateInfoNV* toMap)
+{
+ if (toMap->pViewportSwizzles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->viewportCount; ++i)
+ {
+ handlemap_VkViewportSwizzleNV(handlemap, (VkViewportSwizzleNV*)(toMap->pViewportSwizzles + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void handlemap_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* toMap)
+{
+ if (toMap->pDiscardRectangles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->discardRectangleCount; ++i)
+ {
+ handlemap_VkRect2D(handlemap, (VkRect2D*)(toMap->pDiscardRectangles + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void handlemap_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void handlemap_VkXYColorEXT(
+ VulkanHandleMapping* handlemap,
+ VkXYColorEXT* toMap)
+{
+}
+
+void handlemap_VkHdrMetadataEXT(
+ VulkanHandleMapping* handlemap,
+ VkHdrMetadataEXT* toMap)
+{
+ handlemap_VkXYColorEXT(handlemap, (VkXYColorEXT*)(&toMap->displayPrimaryRed));
+ handlemap_VkXYColorEXT(handlemap, (VkXYColorEXT*)(&toMap->displayPrimaryGreen));
+ handlemap_VkXYColorEXT(handlemap, (VkXYColorEXT*)(&toMap->displayPrimaryBlue));
+ handlemap_VkXYColorEXT(handlemap, (VkXYColorEXT*)(&toMap->whitePoint));
+}
+
+#endif
+#ifdef VK_MVK_ios_surface
+void handlemap_VkIOSSurfaceCreateInfoMVK(
+ VulkanHandleMapping* handlemap,
+ VkIOSSurfaceCreateInfoMVK* toMap)
+{
+}
+
+#endif
+#ifdef VK_MVK_macos_surface
+void handlemap_VkMacOSSurfaceCreateInfoMVK(
+ VulkanHandleMapping* handlemap,
+ VkMacOSSurfaceCreateInfoMVK* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void handlemap_VkDebugUtilsObjectNameInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsObjectNameInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDebugUtilsObjectTagInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsObjectTagInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDebugUtilsLabelEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsLabelEXT* toMap)
+{
+}
+
+void handlemap_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsMessengerCallbackDataEXT* toMap)
+{
+ if (toMap->pQueueLabels)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->queueLabelCount; ++i)
+ {
+ handlemap_VkDebugUtilsLabelEXT(handlemap, (VkDebugUtilsLabelEXT*)(toMap->pQueueLabels + i));
+ }
+ }
+ if (toMap->pCmdBufLabels)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->cmdBufLabelCount; ++i)
+ {
+ handlemap_VkDebugUtilsLabelEXT(handlemap, (VkDebugUtilsLabelEXT*)(toMap->pCmdBufLabels + i));
+ }
+ }
+ if (toMap->pObjects)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->objectCount; ++i)
+ {
+ handlemap_VkDebugUtilsObjectNameInfoEXT(handlemap, (VkDebugUtilsObjectNameInfoEXT*)(toMap->pObjects + i));
+ }
+ }
+}
+
+void handlemap_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsMessengerCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void handlemap_VkAndroidHardwareBufferUsageANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferUsageANDROID* toMap)
+{
+}
+
+void handlemap_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferPropertiesANDROID* toMap)
+{
+}
+
+void handlemap_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* toMap)
+{
+ handlemap_VkComponentMapping(handlemap, (VkComponentMapping*)(&toMap->samplerYcbcrConversionComponents));
+}
+
+void handlemap_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanHandleMapping* handlemap,
+ VkImportAndroidHardwareBufferInfoANDROID* toMap)
+{
+}
+
+void handlemap_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* toMap)
+{
+ handlemap->mapHandles_VkDeviceMemory((VkDeviceMemory*)&toMap->memory);
+}
+
+void handlemap_VkExternalFormatANDROID(
+ VulkanHandleMapping* handlemap,
+ VkExternalFormatANDROID* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void handlemap_VkSamplerReductionModeCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSamplerReductionModeCreateInfoEXT* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void handlemap_VkSampleLocationEXT(
+ VulkanHandleMapping* handlemap,
+ VkSampleLocationEXT* toMap)
+{
+}
+
+void handlemap_VkSampleLocationsInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSampleLocationsInfoEXT* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->sampleLocationGridSize));
+ if (toMap->pSampleLocations)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->sampleLocationsCount; ++i)
+ {
+ handlemap_VkSampleLocationEXT(handlemap, (VkSampleLocationEXT*)(toMap->pSampleLocations + i));
+ }
+ }
+}
+
+void handlemap_VkAttachmentSampleLocationsEXT(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentSampleLocationsEXT* toMap)
+{
+ handlemap_VkSampleLocationsInfoEXT(handlemap, (VkSampleLocationsInfoEXT*)(&toMap->sampleLocationsInfo));
+}
+
+void handlemap_VkSubpassSampleLocationsEXT(
+ VulkanHandleMapping* handlemap,
+ VkSubpassSampleLocationsEXT* toMap)
+{
+ handlemap_VkSampleLocationsInfoEXT(handlemap, (VkSampleLocationsInfoEXT*)(&toMap->sampleLocationsInfo));
+}
+
+void handlemap_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassSampleLocationsBeginInfoEXT* toMap)
+{
+ if (toMap->pAttachmentInitialSampleLocations)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->attachmentInitialSampleLocationsCount; ++i)
+ {
+ handlemap_VkAttachmentSampleLocationsEXT(handlemap, (VkAttachmentSampleLocationsEXT*)(toMap->pAttachmentInitialSampleLocations + i));
+ }
+ }
+ if (toMap->pPostSubpassSampleLocations)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->postSubpassSampleLocationsCount; ++i)
+ {
+ handlemap_VkSubpassSampleLocationsEXT(handlemap, (VkSubpassSampleLocationsEXT*)(toMap->pPostSubpassSampleLocations + i));
+ }
+ }
+}
+
+void handlemap_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineSampleLocationsStateCreateInfoEXT* toMap)
+{
+ handlemap_VkSampleLocationsInfoEXT(handlemap, (VkSampleLocationsInfoEXT*)(&toMap->sampleLocationsInfo));
+}
+
+void handlemap_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxSampleLocationGridSize));
+}
+
+void handlemap_VkMultisamplePropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkMultisamplePropertiesEXT* toMap)
+{
+ handlemap_VkExtent2D(handlemap, (VkExtent2D*)(&toMap->maxSampleLocationGridSize));
+}
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void handlemap_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void handlemap_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCoverageToColorStateCreateInfoNV* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void handlemap_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCoverageModulationStateCreateInfoNV* toMap)
+{
+}
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void handlemap_VkValidationCacheCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkValidationCacheCreateInfoEXT* toMap)
+{
+}
+
+void handlemap_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkShaderModuleValidationCacheCreateInfoEXT* toMap)
+{
+ handlemap->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&toMap->validationCache);
+}
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void handlemap_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* toMap)
+{
+}
+
+void handlemap_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void handlemap_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void handlemap_VkImportMemoryHostPointerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryHostPointerInfoEXT* toMap)
+{
+}
+
+void handlemap_VkMemoryHostPointerPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkMemoryHostPointerPropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* toMap)
+{
+}
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void handlemap_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceShaderCorePropertiesAMD* toMap)
+{
+}
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void handlemap_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* toMap)
+{
+}
+
+void handlemap_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputBindingDivisorDescriptionEXT* toMap)
+{
+}
+
+void handlemap_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* toMap)
+{
+ if (toMap->pVertexBindingDivisors)
+ {
+ for (uint32_t i = 0; i < (uint32_t)toMap->vertexBindingDivisorCount; ++i)
+ {
+ handlemap_VkVertexInputBindingDivisorDescriptionEXT(handlemap, (VkVertexInputBindingDivisorDescriptionEXT*)(toMap->pVertexBindingDivisors + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void handlemap_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyCheckpointPropertiesNV* toMap)
+{
+}
+
+void handlemap_VkCheckpointDataNV(
+ VulkanHandleMapping* handlemap,
+ VkCheckpointDataNV* toMap)
+{
+}
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.h
new file mode 100644
index 0000000000..977c157ff5
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_handlemap.h
@@ -0,0 +1,1652 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_handlemap
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
+
+#include <vulkan.h>
+
+
+#include "VulkanHandleMapping.h"
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void handlemap_VkApplicationInfo(
+ VulkanHandleMapping* handlemap,
+ VkApplicationInfo* toMap);
+
+void handlemap_VkInstanceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkInstanceCreateInfo* toMap);
+
+void handlemap_VkAllocationCallbacks(
+ VulkanHandleMapping* handlemap,
+ VkAllocationCallbacks* toMap);
+
+void handlemap_VkPhysicalDeviceFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceFeatures* toMap);
+
+void handlemap_VkFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkFormatProperties* toMap);
+
+void handlemap_VkExtent3D(
+ VulkanHandleMapping* handlemap,
+ VkExtent3D* toMap);
+
+void handlemap_VkImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatProperties* toMap);
+
+void handlemap_VkPhysicalDeviceLimits(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceLimits* toMap);
+
+void handlemap_VkPhysicalDeviceSparseProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSparseProperties* toMap);
+
+void handlemap_VkPhysicalDeviceProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProperties* toMap);
+
+void handlemap_VkQueueFamilyProperties(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyProperties* toMap);
+
+void handlemap_VkMemoryType(
+ VulkanHandleMapping* handlemap,
+ VkMemoryType* toMap);
+
+void handlemap_VkMemoryHeap(
+ VulkanHandleMapping* handlemap,
+ VkMemoryHeap* toMap);
+
+void handlemap_VkPhysicalDeviceMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMemoryProperties* toMap);
+
+void handlemap_VkDeviceQueueCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueCreateInfo* toMap);
+
+void handlemap_VkDeviceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceCreateInfo* toMap);
+
+void handlemap_VkExtensionProperties(
+ VulkanHandleMapping* handlemap,
+ VkExtensionProperties* toMap);
+
+void handlemap_VkLayerProperties(
+ VulkanHandleMapping* handlemap,
+ VkLayerProperties* toMap);
+
+void handlemap_VkSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkSubmitInfo* toMap);
+
+void handlemap_VkMemoryAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryAllocateInfo* toMap);
+
+void handlemap_VkMappedMemoryRange(
+ VulkanHandleMapping* handlemap,
+ VkMappedMemoryRange* toMap);
+
+void handlemap_VkMemoryRequirements(
+ VulkanHandleMapping* handlemap,
+ VkMemoryRequirements* toMap);
+
+void handlemap_VkSparseImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageFormatProperties* toMap);
+
+void handlemap_VkSparseImageMemoryRequirements(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryRequirements* toMap);
+
+void handlemap_VkSparseMemoryBind(
+ VulkanHandleMapping* handlemap,
+ VkSparseMemoryBind* toMap);
+
+void handlemap_VkSparseBufferMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseBufferMemoryBindInfo* toMap);
+
+void handlemap_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageOpaqueMemoryBindInfo* toMap);
+
+void handlemap_VkImageSubresource(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresource* toMap);
+
+void handlemap_VkOffset3D(
+ VulkanHandleMapping* handlemap,
+ VkOffset3D* toMap);
+
+void handlemap_VkSparseImageMemoryBind(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryBind* toMap);
+
+void handlemap_VkSparseImageMemoryBindInfo(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryBindInfo* toMap);
+
+void handlemap_VkBindSparseInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindSparseInfo* toMap);
+
+void handlemap_VkFenceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkFenceCreateInfo* toMap);
+
+void handlemap_VkSemaphoreCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreCreateInfo* toMap);
+
+void handlemap_VkEventCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkEventCreateInfo* toMap);
+
+void handlemap_VkQueryPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkQueryPoolCreateInfo* toMap);
+
+void handlemap_VkBufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkBufferCreateInfo* toMap);
+
+void handlemap_VkBufferViewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkBufferViewCreateInfo* toMap);
+
+void handlemap_VkImageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageCreateInfo* toMap);
+
+void handlemap_VkSubresourceLayout(
+ VulkanHandleMapping* handlemap,
+ VkSubresourceLayout* toMap);
+
+void handlemap_VkComponentMapping(
+ VulkanHandleMapping* handlemap,
+ VkComponentMapping* toMap);
+
+void handlemap_VkImageSubresourceRange(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresourceRange* toMap);
+
+void handlemap_VkImageViewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageViewCreateInfo* toMap);
+
+void handlemap_VkShaderModuleCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkShaderModuleCreateInfo* toMap);
+
+void handlemap_VkPipelineCacheCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCacheCreateInfo* toMap);
+
+void handlemap_VkSpecializationMapEntry(
+ VulkanHandleMapping* handlemap,
+ VkSpecializationMapEntry* toMap);
+
+void handlemap_VkSpecializationInfo(
+ VulkanHandleMapping* handlemap,
+ VkSpecializationInfo* toMap);
+
+void handlemap_VkPipelineShaderStageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineShaderStageCreateInfo* toMap);
+
+void handlemap_VkVertexInputBindingDescription(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputBindingDescription* toMap);
+
+void handlemap_VkVertexInputAttributeDescription(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputAttributeDescription* toMap);
+
+void handlemap_VkPipelineVertexInputStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineVertexInputStateCreateInfo* toMap);
+
+void handlemap_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineInputAssemblyStateCreateInfo* toMap);
+
+void handlemap_VkPipelineTessellationStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineTessellationStateCreateInfo* toMap);
+
+void handlemap_VkViewport(
+ VulkanHandleMapping* handlemap,
+ VkViewport* toMap);
+
+void handlemap_VkOffset2D(
+ VulkanHandleMapping* handlemap,
+ VkOffset2D* toMap);
+
+void handlemap_VkExtent2D(
+ VulkanHandleMapping* handlemap,
+ VkExtent2D* toMap);
+
+void handlemap_VkRect2D(
+ VulkanHandleMapping* handlemap,
+ VkRect2D* toMap);
+
+void handlemap_VkPipelineViewportStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportStateCreateInfo* toMap);
+
+void handlemap_VkPipelineRasterizationStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationStateCreateInfo* toMap);
+
+void handlemap_VkPipelineMultisampleStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineMultisampleStateCreateInfo* toMap);
+
+void handlemap_VkStencilOpState(
+ VulkanHandleMapping* handlemap,
+ VkStencilOpState* toMap);
+
+void handlemap_VkPipelineDepthStencilStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDepthStencilStateCreateInfo* toMap);
+
+void handlemap_VkPipelineColorBlendAttachmentState(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendAttachmentState* toMap);
+
+void handlemap_VkPipelineColorBlendStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendStateCreateInfo* toMap);
+
+void handlemap_VkPipelineDynamicStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDynamicStateCreateInfo* toMap);
+
+void handlemap_VkGraphicsPipelineCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkGraphicsPipelineCreateInfo* toMap);
+
+void handlemap_VkComputePipelineCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkComputePipelineCreateInfo* toMap);
+
+void handlemap_VkPushConstantRange(
+ VulkanHandleMapping* handlemap,
+ VkPushConstantRange* toMap);
+
+void handlemap_VkPipelineLayoutCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineLayoutCreateInfo* toMap);
+
+void handlemap_VkSamplerCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerCreateInfo* toMap);
+
+void handlemap_VkDescriptorSetLayoutBinding(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutBinding* toMap);
+
+void handlemap_VkDescriptorSetLayoutCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutCreateInfo* toMap);
+
+void handlemap_VkDescriptorPoolSize(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorPoolSize* toMap);
+
+void handlemap_VkDescriptorPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorPoolCreateInfo* toMap);
+
+void handlemap_VkDescriptorSetAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetAllocateInfo* toMap);
+
+void handlemap_VkDescriptorImageInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorImageInfo* toMap);
+
+void handlemap_VkDescriptorBufferInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorBufferInfo* toMap);
+
+void handlemap_VkWriteDescriptorSet(
+ VulkanHandleMapping* handlemap,
+ VkWriteDescriptorSet* toMap);
+
+void handlemap_VkCopyDescriptorSet(
+ VulkanHandleMapping* handlemap,
+ VkCopyDescriptorSet* toMap);
+
+void handlemap_VkFramebufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkFramebufferCreateInfo* toMap);
+
+void handlemap_VkAttachmentDescription(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentDescription* toMap);
+
+void handlemap_VkAttachmentReference(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentReference* toMap);
+
+void handlemap_VkSubpassDescription(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDescription* toMap);
+
+void handlemap_VkSubpassDependency(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDependency* toMap);
+
+void handlemap_VkRenderPassCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassCreateInfo* toMap);
+
+void handlemap_VkCommandPoolCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandPoolCreateInfo* toMap);
+
+void handlemap_VkCommandBufferAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferAllocateInfo* toMap);
+
+void handlemap_VkCommandBufferInheritanceInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferInheritanceInfo* toMap);
+
+void handlemap_VkCommandBufferBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferBeginInfo* toMap);
+
+void handlemap_VkBufferCopy(
+ VulkanHandleMapping* handlemap,
+ VkBufferCopy* toMap);
+
+void handlemap_VkImageSubresourceLayers(
+ VulkanHandleMapping* handlemap,
+ VkImageSubresourceLayers* toMap);
+
+void handlemap_VkImageCopy(
+ VulkanHandleMapping* handlemap,
+ VkImageCopy* toMap);
+
+void handlemap_VkImageBlit(
+ VulkanHandleMapping* handlemap,
+ VkImageBlit* toMap);
+
+void handlemap_VkBufferImageCopy(
+ VulkanHandleMapping* handlemap,
+ VkBufferImageCopy* toMap);
+
+void handlemap_VkClearColorValue(
+ VulkanHandleMapping* handlemap,
+ VkClearColorValue* toMap);
+
+void handlemap_VkClearDepthStencilValue(
+ VulkanHandleMapping* handlemap,
+ VkClearDepthStencilValue* toMap);
+
+void handlemap_VkClearValue(
+ VulkanHandleMapping* handlemap,
+ VkClearValue* toMap);
+
+void handlemap_VkClearAttachment(
+ VulkanHandleMapping* handlemap,
+ VkClearAttachment* toMap);
+
+void handlemap_VkClearRect(
+ VulkanHandleMapping* handlemap,
+ VkClearRect* toMap);
+
+void handlemap_VkImageResolve(
+ VulkanHandleMapping* handlemap,
+ VkImageResolve* toMap);
+
+void handlemap_VkMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkMemoryBarrier* toMap);
+
+void handlemap_VkBufferMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkBufferMemoryBarrier* toMap);
+
+void handlemap_VkImageMemoryBarrier(
+ VulkanHandleMapping* handlemap,
+ VkImageMemoryBarrier* toMap);
+
+void handlemap_VkRenderPassBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassBeginInfo* toMap);
+
+void handlemap_VkDispatchIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDispatchIndirectCommand* toMap);
+
+void handlemap_VkDrawIndexedIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDrawIndexedIndirectCommand* toMap);
+
+void handlemap_VkDrawIndirectCommand(
+ VulkanHandleMapping* handlemap,
+ VkDrawIndirectCommand* toMap);
+
+void handlemap_VkBaseOutStructure(
+ VulkanHandleMapping* handlemap,
+ VkBaseOutStructure* toMap);
+
+void handlemap_VkBaseInStructure(
+ VulkanHandleMapping* handlemap,
+ VkBaseInStructure* toMap);
+
+#endif
+#ifdef VK_VERSION_1_1
+void handlemap_VkPhysicalDeviceSubgroupProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSubgroupProperties* toMap);
+
+void handlemap_VkBindBufferMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindBufferMemoryInfo* toMap);
+
+void handlemap_VkBindImageMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemoryInfo* toMap);
+
+void handlemap_VkPhysicalDevice16BitStorageFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevice16BitStorageFeatures* toMap);
+
+void handlemap_VkMemoryDedicatedRequirements(
+ VulkanHandleMapping* handlemap,
+ VkMemoryDedicatedRequirements* toMap);
+
+void handlemap_VkMemoryDedicatedAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryDedicatedAllocateInfo* toMap);
+
+void handlemap_VkMemoryAllocateFlagsInfo(
+ VulkanHandleMapping* handlemap,
+ VkMemoryAllocateFlagsInfo* toMap);
+
+void handlemap_VkDeviceGroupRenderPassBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupRenderPassBeginInfo* toMap);
+
+void handlemap_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupCommandBufferBeginInfo* toMap);
+
+void handlemap_VkDeviceGroupSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupSubmitInfo* toMap);
+
+void handlemap_VkDeviceGroupBindSparseInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupBindSparseInfo* toMap);
+
+void handlemap_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindBufferMemoryDeviceGroupInfo* toMap);
+
+void handlemap_VkBindImageMemoryDeviceGroupInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemoryDeviceGroupInfo* toMap);
+
+void handlemap_VkPhysicalDeviceGroupProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceGroupProperties* toMap);
+
+void handlemap_VkDeviceGroupDeviceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupDeviceCreateInfo* toMap);
+
+void handlemap_VkBufferMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkBufferMemoryRequirementsInfo2* toMap);
+
+void handlemap_VkImageMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkImageMemoryRequirementsInfo2* toMap);
+
+void handlemap_VkImageSparseMemoryRequirementsInfo2(
+ VulkanHandleMapping* handlemap,
+ VkImageSparseMemoryRequirementsInfo2* toMap);
+
+void handlemap_VkMemoryRequirements2(
+ VulkanHandleMapping* handlemap,
+ VkMemoryRequirements2* toMap);
+
+void handlemap_VkSparseImageMemoryRequirements2(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageMemoryRequirements2* toMap);
+
+void handlemap_VkPhysicalDeviceFeatures2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceFeatures2* toMap);
+
+void handlemap_VkPhysicalDeviceProperties2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProperties2* toMap);
+
+void handlemap_VkFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkFormatProperties2* toMap);
+
+void handlemap_VkImageFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatProperties2* toMap);
+
+void handlemap_VkPhysicalDeviceImageFormatInfo2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceImageFormatInfo2* toMap);
+
+void handlemap_VkQueueFamilyProperties2(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyProperties2* toMap);
+
+void handlemap_VkPhysicalDeviceMemoryProperties2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMemoryProperties2* toMap);
+
+void handlemap_VkSparseImageFormatProperties2(
+ VulkanHandleMapping* handlemap,
+ VkSparseImageFormatProperties2* toMap);
+
+void handlemap_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSparseImageFormatInfo2* toMap);
+
+void handlemap_VkPhysicalDevicePointClippingProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevicePointClippingProperties* toMap);
+
+void handlemap_VkInputAttachmentAspectReference(
+ VulkanHandleMapping* handlemap,
+ VkInputAttachmentAspectReference* toMap);
+
+void handlemap_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassInputAttachmentAspectCreateInfo* toMap);
+
+void handlemap_VkImageViewUsageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkImageViewUsageCreateInfo* toMap);
+
+void handlemap_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkPipelineTessellationDomainOriginStateCreateInfo* toMap);
+
+void handlemap_VkRenderPassMultiviewCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassMultiviewCreateInfo* toMap);
+
+void handlemap_VkPhysicalDeviceMultiviewFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewFeatures* toMap);
+
+void handlemap_VkPhysicalDeviceMultiviewProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewProperties* toMap);
+
+void handlemap_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceVariablePointerFeatures* toMap);
+
+void handlemap_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProtectedMemoryFeatures* toMap);
+
+void handlemap_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceProtectedMemoryProperties* toMap);
+
+void handlemap_VkDeviceQueueInfo2(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueInfo2* toMap);
+
+void handlemap_VkProtectedSubmitInfo(
+ VulkanHandleMapping* handlemap,
+ VkProtectedSubmitInfo* toMap);
+
+void handlemap_VkSamplerYcbcrConversionCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionCreateInfo* toMap);
+
+void handlemap_VkSamplerYcbcrConversionInfo(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionInfo* toMap);
+
+void handlemap_VkBindImagePlaneMemoryInfo(
+ VulkanHandleMapping* handlemap,
+ VkBindImagePlaneMemoryInfo* toMap);
+
+void handlemap_VkImagePlaneMemoryRequirementsInfo(
+ VulkanHandleMapping* handlemap,
+ VkImagePlaneMemoryRequirementsInfo* toMap);
+
+void handlemap_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* toMap);
+
+void handlemap_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkSamplerYcbcrConversionImageFormatProperties* toMap);
+
+void handlemap_VkDescriptorUpdateTemplateEntry(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorUpdateTemplateEntry* toMap);
+
+void handlemap_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorUpdateTemplateCreateInfo* toMap);
+
+void handlemap_VkExternalMemoryProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryProperties* toMap);
+
+void handlemap_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalImageFormatInfo* toMap);
+
+void handlemap_VkExternalImageFormatProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalImageFormatProperties* toMap);
+
+void handlemap_VkPhysicalDeviceExternalBufferInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalBufferInfo* toMap);
+
+void handlemap_VkExternalBufferProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalBufferProperties* toMap);
+
+void handlemap_VkPhysicalDeviceIDProperties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceIDProperties* toMap);
+
+void handlemap_VkExternalMemoryImageCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryImageCreateInfo* toMap);
+
+void handlemap_VkExternalMemoryBufferCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryBufferCreateInfo* toMap);
+
+void handlemap_VkExportMemoryAllocateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryAllocateInfo* toMap);
+
+void handlemap_VkPhysicalDeviceExternalFenceInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalFenceInfo* toMap);
+
+void handlemap_VkExternalFenceProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalFenceProperties* toMap);
+
+void handlemap_VkExportFenceCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportFenceCreateInfo* toMap);
+
+void handlemap_VkExportSemaphoreCreateInfo(
+ VulkanHandleMapping* handlemap,
+ VkExportSemaphoreCreateInfo* toMap);
+
+void handlemap_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalSemaphoreInfo* toMap);
+
+void handlemap_VkExternalSemaphoreProperties(
+ VulkanHandleMapping* handlemap,
+ VkExternalSemaphoreProperties* toMap);
+
+void handlemap_VkPhysicalDeviceMaintenance3Properties(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMaintenance3Properties* toMap);
+
+void handlemap_VkDescriptorSetLayoutSupport(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutSupport* toMap);
+
+void handlemap_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceShaderDrawParameterFeatures* toMap);
+
+#endif
+#ifdef VK_KHR_surface
+void handlemap_VkSurfaceCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilitiesKHR* toMap);
+
+void handlemap_VkSurfaceFormatKHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceFormatKHR* toMap);
+
+#endif
+#ifdef VK_KHR_swapchain
+void handlemap_VkSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSwapchainCreateInfoKHR* toMap);
+
+void handlemap_VkPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentInfoKHR* toMap);
+
+void handlemap_VkImageSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImageSwapchainCreateInfoKHR* toMap);
+
+void handlemap_VkBindImageMemorySwapchainInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkBindImageMemorySwapchainInfoKHR* toMap);
+
+void handlemap_VkAcquireNextImageInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkAcquireNextImageInfoKHR* toMap);
+
+void handlemap_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupPresentCapabilitiesKHR* toMap);
+
+void handlemap_VkDeviceGroupPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupPresentInfoKHR* toMap);
+
+void handlemap_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGroupSwapchainCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_display
+void handlemap_VkDisplayPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPropertiesKHR* toMap);
+
+void handlemap_VkDisplayModeParametersKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeParametersKHR* toMap);
+
+void handlemap_VkDisplayModePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModePropertiesKHR* toMap);
+
+void handlemap_VkDisplayModeCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeCreateInfoKHR* toMap);
+
+void handlemap_VkDisplayPlaneCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneCapabilitiesKHR* toMap);
+
+void handlemap_VkDisplayPlanePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlanePropertiesKHR* toMap);
+
+void handlemap_VkDisplaySurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplaySurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void handlemap_VkDisplayPresentInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPresentInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void handlemap_VkXlibSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkXlibSurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void handlemap_VkXcbSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkXcbSurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void handlemap_VkWaylandSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWaylandSurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_mir_surface
+void handlemap_VkMirSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMirSurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_android_surface
+void handlemap_VkAndroidSurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkAndroidSurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_win32_surface
+void handlemap_VkWin32SurfaceCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWin32SurfaceCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void handlemap_VkImportMemoryWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryWin32HandleInfoKHR* toMap);
+
+void handlemap_VkExportMemoryWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryWin32HandleInfoKHR* toMap);
+
+void handlemap_VkMemoryWin32HandlePropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryWin32HandlePropertiesKHR* toMap);
+
+void handlemap_VkMemoryGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetWin32HandleInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void handlemap_VkImportMemoryFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryFdInfoKHR* toMap);
+
+void handlemap_VkMemoryFdPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryFdPropertiesKHR* toMap);
+
+void handlemap_VkMemoryGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetFdInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void handlemap_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void handlemap_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportSemaphoreWin32HandleInfoKHR* toMap);
+
+void handlemap_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportSemaphoreWin32HandleInfoKHR* toMap);
+
+void handlemap_VkD3D12FenceSubmitInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkD3D12FenceSubmitInfoKHR* toMap);
+
+void handlemap_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreGetWin32HandleInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void handlemap_VkImportSemaphoreFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportSemaphoreFdInfoKHR* toMap);
+
+void handlemap_VkSemaphoreGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSemaphoreGetFdInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void handlemap_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* toMap);
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void handlemap_VkRectLayerKHR(
+ VulkanHandleMapping* handlemap,
+ VkRectLayerKHR* toMap);
+
+void handlemap_VkPresentRegionKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentRegionKHR* toMap);
+
+void handlemap_VkPresentRegionsKHR(
+ VulkanHandleMapping* handlemap,
+ VkPresentRegionsKHR* toMap);
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void handlemap_VkAttachmentDescription2KHR(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentDescription2KHR* toMap);
+
+void handlemap_VkAttachmentReference2KHR(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentReference2KHR* toMap);
+
+void handlemap_VkSubpassDescription2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDescription2KHR* toMap);
+
+void handlemap_VkSubpassDependency2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassDependency2KHR* toMap);
+
+void handlemap_VkRenderPassCreateInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassCreateInfo2KHR* toMap);
+
+void handlemap_VkSubpassBeginInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassBeginInfoKHR* toMap);
+
+void handlemap_VkSubpassEndInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkSubpassEndInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void handlemap_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanHandleMapping* handlemap,
+ VkSharedPresentSurfaceCapabilitiesKHR* toMap);
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void handlemap_VkImportFenceWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportFenceWin32HandleInfoKHR* toMap);
+
+void handlemap_VkExportFenceWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkExportFenceWin32HandleInfoKHR* toMap);
+
+void handlemap_VkFenceGetWin32HandleInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkFenceGetWin32HandleInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void handlemap_VkImportFenceFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImportFenceFdInfoKHR* toMap);
+
+void handlemap_VkFenceGetFdInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkFenceGetFdInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void handlemap_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSurfaceInfo2KHR* toMap);
+
+void handlemap_VkSurfaceCapabilities2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilities2KHR* toMap);
+
+void handlemap_VkSurfaceFormat2KHR(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceFormat2KHR* toMap);
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void handlemap_VkDisplayProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayProperties2KHR* toMap);
+
+void handlemap_VkDisplayPlaneProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneProperties2KHR* toMap);
+
+void handlemap_VkDisplayModeProperties2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayModeProperties2KHR* toMap);
+
+void handlemap_VkDisplayPlaneInfo2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneInfo2KHR* toMap);
+
+void handlemap_VkDisplayPlaneCapabilities2KHR(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPlaneCapabilities2KHR* toMap);
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void handlemap_VkImageFormatListCreateInfoKHR(
+ VulkanHandleMapping* handlemap,
+ VkImageFormatListCreateInfoKHR* toMap);
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void handlemap_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDevice8BitStorageFeaturesKHR* toMap);
+
+#endif
+#ifdef VK_EXT_debug_report
+void handlemap_VkDebugReportCallbackCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugReportCallbackCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void handlemap_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationStateRasterizationOrderAMD* toMap);
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void handlemap_VkDebugMarkerObjectNameInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerObjectNameInfoEXT* toMap);
+
+void handlemap_VkDebugMarkerObjectTagInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerObjectTagInfoEXT* toMap);
+
+void handlemap_VkDebugMarkerMarkerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugMarkerMarkerInfoEXT* toMap);
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void handlemap_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationImageCreateInfoNV* toMap);
+
+void handlemap_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationBufferCreateInfoNV* toMap);
+
+void handlemap_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkDedicatedAllocationMemoryAllocateInfoNV* toMap);
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void handlemap_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanHandleMapping* handlemap,
+ VkTextureLODGatherFormatPropertiesAMD* toMap);
+
+#endif
+#ifdef VK_AMD_shader_info
+void handlemap_VkShaderResourceUsageAMD(
+ VulkanHandleMapping* handlemap,
+ VkShaderResourceUsageAMD* toMap);
+
+void handlemap_VkShaderStatisticsInfoAMD(
+ VulkanHandleMapping* handlemap,
+ VkShaderStatisticsInfoAMD* toMap);
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void handlemap_VkExternalImageFormatPropertiesNV(
+ VulkanHandleMapping* handlemap,
+ VkExternalImageFormatPropertiesNV* toMap);
+
+#endif
+#ifdef VK_NV_external_memory
+void handlemap_VkExternalMemoryImageCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExternalMemoryImageCreateInfoNV* toMap);
+
+void handlemap_VkExportMemoryAllocateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryAllocateInfoNV* toMap);
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void handlemap_VkImportMemoryWin32HandleInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryWin32HandleInfoNV* toMap);
+
+void handlemap_VkExportMemoryWin32HandleInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkExportMemoryWin32HandleInfoNV* toMap);
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void handlemap_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* toMap);
+
+#endif
+#ifdef VK_EXT_validation_flags
+void handlemap_VkValidationFlagsEXT(
+ VulkanHandleMapping* handlemap,
+ VkValidationFlagsEXT* toMap);
+
+#endif
+#ifdef VK_NN_vi_surface
+void handlemap_VkViSurfaceCreateInfoNN(
+ VulkanHandleMapping* handlemap,
+ VkViSurfaceCreateInfoNN* toMap);
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void handlemap_VkConditionalRenderingBeginInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkConditionalRenderingBeginInfoEXT* toMap);
+
+void handlemap_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* toMap);
+
+void handlemap_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* toMap);
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void handlemap_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGeneratedCommandsFeaturesNVX* toMap);
+
+void handlemap_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanHandleMapping* handlemap,
+ VkDeviceGeneratedCommandsLimitsNVX* toMap);
+
+void handlemap_VkIndirectCommandsTokenNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsTokenNVX* toMap);
+
+void handlemap_VkIndirectCommandsLayoutTokenNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsLayoutTokenNVX* toMap);
+
+void handlemap_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkIndirectCommandsLayoutCreateInfoNVX* toMap);
+
+void handlemap_VkCmdProcessCommandsInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkCmdProcessCommandsInfoNVX* toMap);
+
+void handlemap_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkCmdReserveSpaceForCommandsInfoNVX* toMap);
+
+void handlemap_VkObjectTableCreateInfoNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableCreateInfoNVX* toMap);
+
+void handlemap_VkObjectTableEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableEntryNVX* toMap);
+
+void handlemap_VkObjectTablePipelineEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTablePipelineEntryNVX* toMap);
+
+void handlemap_VkObjectTableDescriptorSetEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableDescriptorSetEntryNVX* toMap);
+
+void handlemap_VkObjectTableVertexBufferEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableVertexBufferEntryNVX* toMap);
+
+void handlemap_VkObjectTableIndexBufferEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTableIndexBufferEntryNVX* toMap);
+
+void handlemap_VkObjectTablePushConstantEntryNVX(
+ VulkanHandleMapping* handlemap,
+ VkObjectTablePushConstantEntryNVX* toMap);
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void handlemap_VkViewportWScalingNV(
+ VulkanHandleMapping* handlemap,
+ VkViewportWScalingNV* toMap);
+
+void handlemap_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportWScalingStateCreateInfoNV* toMap);
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void handlemap_VkSurfaceCapabilities2EXT(
+ VulkanHandleMapping* handlemap,
+ VkSurfaceCapabilities2EXT* toMap);
+
+#endif
+#ifdef VK_EXT_display_control
+void handlemap_VkDisplayPowerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDisplayPowerInfoEXT* toMap);
+
+void handlemap_VkDeviceEventInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDeviceEventInfoEXT* toMap);
+
+void handlemap_VkDisplayEventInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDisplayEventInfoEXT* toMap);
+
+void handlemap_VkSwapchainCounterCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSwapchainCounterCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void handlemap_VkRefreshCycleDurationGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkRefreshCycleDurationGOOGLE* toMap);
+
+void handlemap_VkPastPresentationTimingGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPastPresentationTimingGOOGLE* toMap);
+
+void handlemap_VkPresentTimeGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPresentTimeGOOGLE* toMap);
+
+void handlemap_VkPresentTimesInfoGOOGLE(
+ VulkanHandleMapping* handlemap,
+ VkPresentTimesInfoGOOGLE* toMap);
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void handlemap_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* toMap);
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void handlemap_VkViewportSwizzleNV(
+ VulkanHandleMapping* handlemap,
+ VkViewportSwizzleNV* toMap);
+
+void handlemap_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineViewportSwizzleStateCreateInfoNV* toMap);
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void handlemap_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* toMap);
+
+void handlemap_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void handlemap_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* toMap);
+
+void handlemap_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void handlemap_VkXYColorEXT(
+ VulkanHandleMapping* handlemap,
+ VkXYColorEXT* toMap);
+
+void handlemap_VkHdrMetadataEXT(
+ VulkanHandleMapping* handlemap,
+ VkHdrMetadataEXT* toMap);
+
+#endif
+#ifdef VK_MVK_ios_surface
+void handlemap_VkIOSSurfaceCreateInfoMVK(
+ VulkanHandleMapping* handlemap,
+ VkIOSSurfaceCreateInfoMVK* toMap);
+
+#endif
+#ifdef VK_MVK_macos_surface
+void handlemap_VkMacOSSurfaceCreateInfoMVK(
+ VulkanHandleMapping* handlemap,
+ VkMacOSSurfaceCreateInfoMVK* toMap);
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void handlemap_VkDebugUtilsObjectNameInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsObjectNameInfoEXT* toMap);
+
+void handlemap_VkDebugUtilsObjectTagInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsObjectTagInfoEXT* toMap);
+
+void handlemap_VkDebugUtilsLabelEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsLabelEXT* toMap);
+
+void handlemap_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsMessengerCallbackDataEXT* toMap);
+
+void handlemap_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDebugUtilsMessengerCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void handlemap_VkAndroidHardwareBufferUsageANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferUsageANDROID* toMap);
+
+void handlemap_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferPropertiesANDROID* toMap);
+
+void handlemap_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanHandleMapping* handlemap,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* toMap);
+
+void handlemap_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanHandleMapping* handlemap,
+ VkImportAndroidHardwareBufferInfoANDROID* toMap);
+
+void handlemap_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanHandleMapping* handlemap,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* toMap);
+
+void handlemap_VkExternalFormatANDROID(
+ VulkanHandleMapping* handlemap,
+ VkExternalFormatANDROID* toMap);
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void handlemap_VkSamplerReductionModeCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSamplerReductionModeCreateInfoEXT* toMap);
+
+void handlemap_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* toMap);
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void handlemap_VkSampleLocationEXT(
+ VulkanHandleMapping* handlemap,
+ VkSampleLocationEXT* toMap);
+
+void handlemap_VkSampleLocationsInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkSampleLocationsInfoEXT* toMap);
+
+void handlemap_VkAttachmentSampleLocationsEXT(
+ VulkanHandleMapping* handlemap,
+ VkAttachmentSampleLocationsEXT* toMap);
+
+void handlemap_VkSubpassSampleLocationsEXT(
+ VulkanHandleMapping* handlemap,
+ VkSubpassSampleLocationsEXT* toMap);
+
+void handlemap_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkRenderPassSampleLocationsBeginInfoEXT* toMap);
+
+void handlemap_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineSampleLocationsStateCreateInfoEXT* toMap);
+
+void handlemap_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* toMap);
+
+void handlemap_VkMultisamplePropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkMultisamplePropertiesEXT* toMap);
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void handlemap_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* toMap);
+
+void handlemap_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* toMap);
+
+void handlemap_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void handlemap_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCoverageToColorStateCreateInfoNV* toMap);
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void handlemap_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanHandleMapping* handlemap,
+ VkPipelineCoverageModulationStateCreateInfoNV* toMap);
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void handlemap_VkValidationCacheCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkValidationCacheCreateInfoEXT* toMap);
+
+void handlemap_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkShaderModuleValidationCacheCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void handlemap_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* toMap);
+
+void handlemap_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* toMap);
+
+void handlemap_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* toMap);
+
+void handlemap_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* toMap);
+
+void handlemap_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanHandleMapping* handlemap,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* toMap);
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void handlemap_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void handlemap_VkImportMemoryHostPointerInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkImportMemoryHostPointerInfoEXT* toMap);
+
+void handlemap_VkMemoryHostPointerPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkMemoryHostPointerPropertiesEXT* toMap);
+
+void handlemap_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* toMap);
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void handlemap_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceShaderCorePropertiesAMD* toMap);
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void handlemap_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanHandleMapping* handlemap,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* toMap);
+
+void handlemap_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanHandleMapping* handlemap,
+ VkVertexInputBindingDivisorDescriptionEXT* toMap);
+
+void handlemap_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanHandleMapping* handlemap,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* toMap);
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void handlemap_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanHandleMapping* handlemap,
+ VkQueueFamilyCheckpointPropertiesNV* toMap);
+
+void handlemap_VkCheckpointDataNV(
+ VulkanHandleMapping* handlemap,
+ VkCheckpointDataNV* toMap);
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.cpp
new file mode 100644
index 0000000000..58d4931cad
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.cpp
@@ -0,0 +1,19429 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_marshaling
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#include "goldfish_vk_marshaling.h"
+
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void marshal_VkApplicationInfo(
+ VulkanStream* vkStream,
+ const VkApplicationInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->putString(forMarshaling->pApplicationName);
+ vkStream->write((uint32_t*)&forMarshaling->applicationVersion, sizeof(uint32_t));
+ vkStream->putString(forMarshaling->pEngineName);
+ vkStream->write((uint32_t*)&forMarshaling->engineVersion, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->apiVersion, sizeof(uint32_t));
+}
+
+void unmarshal_VkApplicationInfo(
+ VulkanStream* vkStream,
+ VkApplicationInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pApplicationName);
+ vkStream->read((uint32_t*)&forUnmarshaling->applicationVersion, sizeof(uint32_t));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pEngineName);
+ vkStream->read((uint32_t*)&forUnmarshaling->engineVersion, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->apiVersion, sizeof(uint32_t));
+}
+
+void marshal_VkInstanceCreateInfo(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkInstanceCreateFlags*)&forMarshaling->flags, sizeof(VkInstanceCreateFlags));
+ vkStream->write((const VkApplicationInfo**)&forMarshaling->pApplicationInfo, sizeof(const VkApplicationInfo*));
+ if (forMarshaling->pApplicationInfo)
+ {
+ marshal_VkApplicationInfo(vkStream, (const VkApplicationInfo*)(forMarshaling->pApplicationInfo));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->enabledLayerCount, sizeof(uint32_t));
+ saveStringArray(vkStream, forMarshaling->ppEnabledLayerNames, forMarshaling->enabledLayerCount);
+ vkStream->write((uint32_t*)&forMarshaling->enabledExtensionCount, sizeof(uint32_t));
+ saveStringArray(vkStream, forMarshaling->ppEnabledExtensionNames, forMarshaling->enabledExtensionCount);
+}
+
+void unmarshal_VkInstanceCreateInfo(
+ VulkanStream* vkStream,
+ VkInstanceCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkInstanceCreateFlags*)&forUnmarshaling->flags, sizeof(VkInstanceCreateFlags));
+ vkStream->read((VkApplicationInfo**)&forUnmarshaling->pApplicationInfo, sizeof(const VkApplicationInfo*));
+ if (forUnmarshaling->pApplicationInfo)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pApplicationInfo, sizeof(const VkApplicationInfo));
+ unmarshal_VkApplicationInfo(vkStream, (VkApplicationInfo*)(forUnmarshaling->pApplicationInfo));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->enabledLayerCount, sizeof(uint32_t));
+ vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledLayerNames);
+ vkStream->read((uint32_t*)&forUnmarshaling->enabledExtensionCount, sizeof(uint32_t));
+ vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledExtensionNames);
+}
+
+void marshal_VkAllocationCallbacks(
+ VulkanStream* vkStream,
+ const VkAllocationCallbacks* forMarshaling)
+{
+ vkStream->write((void**)&forMarshaling->pUserData, sizeof(void*));
+ if (forMarshaling->pUserData)
+ {
+ vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
+ }
+ vkStream->write((PFN_vkAllocationFunction*)&forMarshaling->pfnAllocation, sizeof(PFN_vkAllocationFunction));
+ vkStream->write((PFN_vkReallocationFunction*)&forMarshaling->pfnReallocation, sizeof(PFN_vkReallocationFunction));
+ vkStream->write((PFN_vkFreeFunction*)&forMarshaling->pfnFree, sizeof(PFN_vkFreeFunction));
+ vkStream->write((PFN_vkInternalAllocationNotification*)&forMarshaling->pfnInternalAllocation, sizeof(PFN_vkInternalAllocationNotification));
+ vkStream->write((PFN_vkInternalFreeNotification*)&forMarshaling->pfnInternalFree, sizeof(PFN_vkInternalFreeNotification));
+}
+
+void unmarshal_VkAllocationCallbacks(
+ VulkanStream* vkStream,
+ VkAllocationCallbacks* forUnmarshaling)
+{
+ vkStream->read((void**)&forUnmarshaling->pUserData, sizeof(void*));
+ if (forUnmarshaling->pUserData)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
+ }
+ vkStream->read((PFN_vkAllocationFunction*)&forUnmarshaling->pfnAllocation, sizeof(PFN_vkAllocationFunction));
+ vkStream->read((PFN_vkReallocationFunction*)&forUnmarshaling->pfnReallocation, sizeof(PFN_vkReallocationFunction));
+ vkStream->read((PFN_vkFreeFunction*)&forUnmarshaling->pfnFree, sizeof(PFN_vkFreeFunction));
+ vkStream->read((PFN_vkInternalAllocationNotification*)&forUnmarshaling->pfnInternalAllocation, sizeof(PFN_vkInternalAllocationNotification));
+ vkStream->read((PFN_vkInternalFreeNotification*)&forUnmarshaling->pfnInternalFree, sizeof(PFN_vkInternalFreeNotification));
+}
+
+VkResult marshal_vkCreateInstance(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkInstance* pInstance)
+{
+ marshal_VkInstanceCreateInfo(vkStream, (const VkInstanceCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkInstance*)pInstance, sizeof(VkInstance));
+ VkResult marshal_vkCreateInstance_VkResult_return;
+ vkStream->read(&marshal_vkCreateInstance_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateInstance_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateInstance(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkInstance* pInstance)
+{
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkInstanceCreateInfo));
+ unmarshal_VkInstanceCreateInfo(vkStream, (VkInstanceCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkInstance*)pInstance, sizeof(VkInstance));
+ VkResult unmarshal_vkCreateInstance_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateInstance_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateInstance_VkResult_return;
+}
+
+void marshal_vkDestroyInstance(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyInstance(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkEnumeratePhysicalDevices(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceCount,
+ VkPhysicalDevice* pPhysicalDevices)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
+ vkStream->read((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+ VkResult marshal_vkEnumeratePhysicalDevices_VkResult_return;
+ vkStream->read(&marshal_vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumeratePhysicalDevices_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumeratePhysicalDevices(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceCount,
+ VkPhysicalDevice* pPhysicalDevices)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
+ vkStream->write((VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)) * sizeof(VkPhysicalDevice));
+ VkResult unmarshal_vkEnumeratePhysicalDevices_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumeratePhysicalDevices_VkResult_return;
+}
+
+void marshal_VkPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceFeatures* forMarshaling)
+{
+ vkStream->write((VkBool32*)&forMarshaling->robustBufferAccess, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fullDrawIndexUint32, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->imageCubeArray, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->independentBlend, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->geometryShader, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->tessellationShader, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sampleRateShading, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->dualSrcBlend, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->logicOp, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->multiDrawIndirect, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->drawIndirectFirstInstance, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->depthClamp, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->depthBiasClamp, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fillModeNonSolid, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->depthBounds, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->wideLines, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->largePoints, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->alphaToOne, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->multiViewport, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->samplerAnisotropy, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->textureCompressionETC2, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->textureCompressionASTC_LDR, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->textureCompressionBC, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->occlusionQueryPrecise, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->pipelineStatisticsQuery, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->vertexPipelineStoresAndAtomics, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fragmentStoresAndAtomics, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderTessellationAndGeometryPointSize, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderImageGatherExtended, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageExtendedFormats, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageMultisample, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageReadWithoutFormat, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageWriteWithoutFormat, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderClipDistance, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderCullDistance, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderFloat64, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderInt64, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderInt16, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderResourceResidency, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderResourceMinLod, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseBinding, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidencyBuffer, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidencyImage2D, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidencyImage3D, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidency2Samples, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidency4Samples, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidency8Samples, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidency16Samples, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->sparseResidencyAliased, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->variableMultisampleRate, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->inheritedQueries, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceFeatures* forUnmarshaling)
+{
+ vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccess, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fullDrawIndexUint32, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->imageCubeArray, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->independentBlend, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->geometryShader, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->tessellationShader, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sampleRateShading, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->dualSrcBlend, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->logicOp, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->multiDrawIndirect, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->drawIndirectFirstInstance, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthClamp, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthBiasClamp, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fillModeNonSolid, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthBounds, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->wideLines, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->largePoints, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->alphaToOne, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->multiViewport, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->samplerAnisotropy, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionETC2, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionASTC_LDR, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->textureCompressionBC, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->occlusionQueryPrecise, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->pipelineStatisticsQuery, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->vertexPipelineStoresAndAtomics, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fragmentStoresAndAtomics, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderTessellationAndGeometryPointSize, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderImageGatherExtended, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageExtendedFormats, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageMultisample, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageReadWithoutFormat, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageWriteWithoutFormat, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderClipDistance, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderCullDistance, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderFloat64, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderInt64, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderInt16, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderResourceResidency, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderResourceMinLod, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseBinding, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyBuffer, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyImage2D, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyImage3D, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency2Samples, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency4Samples, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency8Samples, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidency16Samples, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->sparseResidencyAliased, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->variableMultisampleRate, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->inheritedQueries, sizeof(VkBool32));
+}
+
+void marshal_vkGetPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures* pFeatures)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(pFeatures));
+}
+
+void unmarshal_vkGetPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures* pFeatures)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(pFeatures));
+}
+
+void marshal_VkFormatProperties(
+ VulkanStream* vkStream,
+ const VkFormatProperties* forMarshaling)
+{
+ vkStream->write((VkFormatFeatureFlags*)&forMarshaling->linearTilingFeatures, sizeof(VkFormatFeatureFlags));
+ vkStream->write((VkFormatFeatureFlags*)&forMarshaling->optimalTilingFeatures, sizeof(VkFormatFeatureFlags));
+ vkStream->write((VkFormatFeatureFlags*)&forMarshaling->bufferFeatures, sizeof(VkFormatFeatureFlags));
+}
+
+void unmarshal_VkFormatProperties(
+ VulkanStream* vkStream,
+ VkFormatProperties* forUnmarshaling)
+{
+ vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->linearTilingFeatures, sizeof(VkFormatFeatureFlags));
+ vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->optimalTilingFeatures, sizeof(VkFormatFeatureFlags));
+ vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->bufferFeatures, sizeof(VkFormatFeatureFlags));
+}
+
+void marshal_vkGetPhysicalDeviceFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties* pFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ marshal_VkFormatProperties(vkStream, (VkFormatProperties*)(pFormatProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties* pFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ unmarshal_VkFormatProperties(vkStream, (VkFormatProperties*)(pFormatProperties));
+}
+
+void marshal_VkExtent3D(
+ VulkanStream* vkStream,
+ const VkExtent3D* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->depth, sizeof(uint32_t));
+}
+
+void unmarshal_VkExtent3D(
+ VulkanStream* vkStream,
+ VkExtent3D* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->depth, sizeof(uint32_t));
+}
+
+void marshal_VkImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkImageFormatProperties* forMarshaling)
+{
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->maxExtent));
+ vkStream->write((uint32_t*)&forMarshaling->maxMipLevels, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxArrayLayers, sizeof(uint32_t));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkDeviceSize*)&forMarshaling->maxResourceSize, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkImageFormatProperties(
+ VulkanStream* vkStream,
+ VkImageFormatProperties* forUnmarshaling)
+{
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->maxExtent));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxMipLevels, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxArrayLayers, sizeof(uint32_t));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->maxResourceSize, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkImageFormatProperties* pImageFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->write((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+ marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(pImageFormatProperties));
+ VkResult marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkImageFormatProperties* pImageFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->read((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+ unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(pImageFormatProperties));
+ VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
+}
+
+void marshal_VkPhysicalDeviceLimits(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceLimits* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->maxImageDimension1D, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageDimension2D, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageDimension3D, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageDimensionCube, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTexelBufferElements, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxUniformBufferRange, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxStorageBufferRange, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPushConstantsSize, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxMemoryAllocationCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxSamplerAllocationCount, sizeof(uint32_t));
+ vkStream->write((VkDeviceSize*)&forMarshaling->bufferImageGranularity, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->sparseAddressSpaceSize, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&forMarshaling->maxBoundDescriptorSets, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorSamplers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUniformBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorStorageBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorSampledImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorStorageImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorInputAttachments, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageResources, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetSamplers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUniformBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUniformBuffersDynamic, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageBuffersDynamic, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetSampledImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetStorageImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetInputAttachments, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexInputAttributes, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexInputBindings, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexInputAttributeOffset, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexInputBindingStride, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationGenerationLevel, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationPatchSize, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerVertexInputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerVertexOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlPerPatchOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationControlTotalOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationEvaluationInputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTessellationEvaluationOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxGeometryShaderInvocations, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxGeometryInputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxGeometryOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxGeometryOutputVertices, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxGeometryTotalOutputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFragmentInputComponents, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFragmentOutputAttachments, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFragmentDualSrcAttachments, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFragmentCombinedOutputResources, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxComputeSharedMemorySize, sizeof(uint32_t));
+ vkStream->write((uint32_t*)forMarshaling->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxComputeWorkGroupInvocations, sizeof(uint32_t));
+ vkStream->write((uint32_t*)forMarshaling->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->subPixelPrecisionBits, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->subTexelPrecisionBits, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->mipmapPrecisionBits, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDrawIndexedIndexValue, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDrawIndirectCount, sizeof(uint32_t));
+ vkStream->write((float*)&forMarshaling->maxSamplerLodBias, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxSamplerAnisotropy, sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->maxViewports, sizeof(uint32_t));
+ vkStream->write((uint32_t*)forMarshaling->maxViewportDimensions, 2 * sizeof(uint32_t));
+ vkStream->write((float*)forMarshaling->viewportBoundsRange, 2 * sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->viewportSubPixelBits, sizeof(uint32_t));
+ vkStream->write((size_t*)&forMarshaling->minMemoryMapAlignment, sizeof(size_t));
+ vkStream->write((VkDeviceSize*)&forMarshaling->minTexelBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->minUniformBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->minStorageBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->write((int32_t*)&forMarshaling->minTexelOffset, sizeof(int32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTexelOffset, sizeof(uint32_t));
+ vkStream->write((int32_t*)&forMarshaling->minTexelGatherOffset, sizeof(int32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxTexelGatherOffset, sizeof(uint32_t));
+ vkStream->write((float*)&forMarshaling->minInterpolationOffset, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxInterpolationOffset, sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->subPixelInterpolationOffsetBits, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFramebufferWidth, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFramebufferHeight, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxFramebufferLayers, sizeof(uint32_t));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferColorSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferDepthSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferStencilSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->framebufferNoAttachmentsSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((uint32_t*)&forMarshaling->maxColorAttachments, sizeof(uint32_t));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageColorSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageIntegerSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageDepthSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampledImageStencilSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->storageImageSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->write((uint32_t*)&forMarshaling->maxSampleMaskWords, sizeof(uint32_t));
+ vkStream->write((VkBool32*)&forMarshaling->timestampComputeAndGraphics, sizeof(VkBool32));
+ vkStream->write((float*)&forMarshaling->timestampPeriod, sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->maxClipDistances, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxCullDistances, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxCombinedClipAndCullDistances, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->discreteQueuePriorities, sizeof(uint32_t));
+ vkStream->write((float*)forMarshaling->pointSizeRange, 2 * sizeof(float));
+ vkStream->write((float*)forMarshaling->lineWidthRange, 2 * sizeof(float));
+ vkStream->write((float*)&forMarshaling->pointSizeGranularity, sizeof(float));
+ vkStream->write((float*)&forMarshaling->lineWidthGranularity, sizeof(float));
+ vkStream->write((VkBool32*)&forMarshaling->strictLines, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->standardSampleLocations, sizeof(VkBool32));
+ vkStream->write((VkDeviceSize*)&forMarshaling->optimalBufferCopyOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->optimalBufferCopyRowPitchAlignment, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->nonCoherentAtomSize, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkPhysicalDeviceLimits(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceLimits* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension1D, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension2D, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimension3D, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageDimensionCube, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTexelBufferElements, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxUniformBufferRange, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxStorageBufferRange, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPushConstantsSize, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxMemoryAllocationCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSamplerAllocationCount, sizeof(uint32_t));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferImageGranularity, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->sparseAddressSpaceSize, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxBoundDescriptorSets, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSamplers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUniformBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorSampledImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorStorageImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorInputAttachments, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageResources, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetSamplers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUniformBuffersDynamic, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageBuffersDynamic, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetSampledImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetStorageImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetInputAttachments, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputAttributes, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputBindings, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputAttributeOffset, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexInputBindingStride, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationGenerationLevel, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationPatchSize, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexInputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerVertexOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlPerPatchOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationControlTotalOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationEvaluationInputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTessellationEvaluationOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryShaderInvocations, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryInputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryOutputVertices, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxGeometryTotalOutputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentInputComponents, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentOutputAttachments, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentDualSrcAttachments, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFragmentCombinedOutputResources, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxComputeSharedMemorySize, sizeof(uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->maxComputeWorkGroupCount, 3 * sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxComputeWorkGroupInvocations, sizeof(uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->maxComputeWorkGroupSize, 3 * sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->subPixelPrecisionBits, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->subTexelPrecisionBits, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->mipmapPrecisionBits, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDrawIndexedIndexValue, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDrawIndirectCount, sizeof(uint32_t));
+ vkStream->read((float*)&forUnmarshaling->maxSamplerLodBias, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxSamplerAnisotropy, sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxViewports, sizeof(uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->maxViewportDimensions, 2 * sizeof(uint32_t));
+ vkStream->read((float*)forUnmarshaling->viewportBoundsRange, 2 * sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->viewportSubPixelBits, sizeof(uint32_t));
+ vkStream->read((size_t*)&forUnmarshaling->minMemoryMapAlignment, sizeof(size_t));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->minTexelBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->minUniformBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->minStorageBufferOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->read((int32_t*)&forUnmarshaling->minTexelOffset, sizeof(int32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTexelOffset, sizeof(uint32_t));
+ vkStream->read((int32_t*)&forUnmarshaling->minTexelGatherOffset, sizeof(int32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxTexelGatherOffset, sizeof(uint32_t));
+ vkStream->read((float*)&forUnmarshaling->minInterpolationOffset, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxInterpolationOffset, sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->subPixelInterpolationOffsetBits, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferWidth, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferHeight, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxFramebufferLayers, sizeof(uint32_t));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferColorSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferDepthSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferStencilSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->framebufferNoAttachmentsSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxColorAttachments, sizeof(uint32_t));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageColorSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageIntegerSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageDepthSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampledImageStencilSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->storageImageSampleCounts, sizeof(VkSampleCountFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSampleMaskWords, sizeof(uint32_t));
+ vkStream->read((VkBool32*)&forUnmarshaling->timestampComputeAndGraphics, sizeof(VkBool32));
+ vkStream->read((float*)&forUnmarshaling->timestampPeriod, sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxClipDistances, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxCullDistances, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxCombinedClipAndCullDistances, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->discreteQueuePriorities, sizeof(uint32_t));
+ vkStream->read((float*)forUnmarshaling->pointSizeRange, 2 * sizeof(float));
+ vkStream->read((float*)forUnmarshaling->lineWidthRange, 2 * sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->pointSizeGranularity, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->lineWidthGranularity, sizeof(float));
+ vkStream->read((VkBool32*)&forUnmarshaling->strictLines, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->standardSampleLocations, sizeof(VkBool32));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyOffsetAlignment, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->optimalBufferCopyRowPitchAlignment, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->nonCoherentAtomSize, sizeof(VkDeviceSize));
+}
+
+void marshal_VkPhysicalDeviceSparseProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSparseProperties* forMarshaling)
+{
+ vkStream->write((VkBool32*)&forMarshaling->residencyStandard2DBlockShape, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->residencyStandard2DMultisampleBlockShape, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->residencyStandard3DBlockShape, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->residencyAlignedMipSize, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->residencyNonResidentStrict, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceSparseProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSparseProperties* forUnmarshaling)
+{
+ vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard2DBlockShape, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard2DMultisampleBlockShape, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->residencyStandard3DBlockShape, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->residencyAlignedMipSize, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->residencyNonResidentStrict, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProperties* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->apiVersion, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->driverVersion, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->vendorID, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->deviceID, sizeof(uint32_t));
+ vkStream->write((VkPhysicalDeviceType*)&forMarshaling->deviceType, sizeof(VkPhysicalDeviceType));
+ vkStream->write((char*)forMarshaling->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
+ vkStream->write((uint8_t*)forMarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ marshal_VkPhysicalDeviceLimits(vkStream, (VkPhysicalDeviceLimits*)(&forMarshaling->limits));
+ marshal_VkPhysicalDeviceSparseProperties(vkStream, (VkPhysicalDeviceSparseProperties*)(&forMarshaling->sparseProperties));
+}
+
+void unmarshal_VkPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProperties* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->apiVersion, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->driverVersion, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->vendorID, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceID, sizeof(uint32_t));
+ vkStream->read((VkPhysicalDeviceType*)&forUnmarshaling->deviceType, sizeof(VkPhysicalDeviceType));
+ vkStream->read((char*)forUnmarshaling->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char));
+ vkStream->read((uint8_t*)forUnmarshaling->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ unmarshal_VkPhysicalDeviceLimits(vkStream, (VkPhysicalDeviceLimits*)(&forUnmarshaling->limits));
+ unmarshal_VkPhysicalDeviceSparseProperties(vkStream, (VkPhysicalDeviceSparseProperties*)(&forUnmarshaling->sparseProperties));
+}
+
+void marshal_vkGetPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(pProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(pProperties));
+}
+
+void marshal_VkQueueFamilyProperties(
+ VulkanStream* vkStream,
+ const VkQueueFamilyProperties* forMarshaling)
+{
+ vkStream->write((VkQueueFlags*)&forMarshaling->queueFlags, sizeof(VkQueueFlags));
+ vkStream->write((uint32_t*)&forMarshaling->queueCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->timestampValidBits, sizeof(uint32_t));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->minImageTransferGranularity));
+}
+
+void unmarshal_VkQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkQueueFamilyProperties* forUnmarshaling)
+{
+ vkStream->read((VkQueueFlags*)&forUnmarshaling->queueFlags, sizeof(VkQueueFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->timestampValidBits, sizeof(uint32_t));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->minImageTransferGranularity));
+}
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties* pQueueFamilyProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ marshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties* pQueueFamilyProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ unmarshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
+ }
+}
+
+void marshal_VkMemoryType(
+ VulkanStream* vkStream,
+ const VkMemoryType* forMarshaling)
+{
+ vkStream->write((VkMemoryPropertyFlags*)&forMarshaling->propertyFlags, sizeof(VkMemoryPropertyFlags));
+ vkStream->write((uint32_t*)&forMarshaling->heapIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryType(
+ VulkanStream* vkStream,
+ VkMemoryType* forUnmarshaling)
+{
+ vkStream->read((VkMemoryPropertyFlags*)&forUnmarshaling->propertyFlags, sizeof(VkMemoryPropertyFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->heapIndex, sizeof(uint32_t));
+}
+
+void marshal_VkMemoryHeap(
+ VulkanStream* vkStream,
+ const VkMemoryHeap* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+ vkStream->write((VkMemoryHeapFlags*)&forMarshaling->flags, sizeof(VkMemoryHeapFlags));
+}
+
+void unmarshal_VkMemoryHeap(
+ VulkanStream* vkStream,
+ VkMemoryHeap* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+ vkStream->read((VkMemoryHeapFlags*)&forUnmarshaling->flags, sizeof(VkMemoryHeapFlags));
+}
+
+void marshal_VkPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMemoryProperties* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
+ {
+ marshal_VkMemoryType(vkStream, (VkMemoryType*)(forMarshaling->memoryTypes + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->memoryHeapCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
+ {
+ marshal_VkMemoryHeap(vkStream, (VkMemoryHeap*)(forMarshaling->memoryHeaps + i));
+ }
+}
+
+void unmarshal_VkPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMemoryProperties* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
+ {
+ unmarshal_VkMemoryType(vkStream, (VkMemoryType*)(forUnmarshaling->memoryTypes + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryHeapCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
+ {
+ unmarshal_VkMemoryHeap(vkStream, (VkMemoryHeap*)(forUnmarshaling->memoryHeaps + i));
+ }
+}
+
+void marshal_vkGetPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties* pMemoryProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties* pMemoryProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
+}
+
+PFN_vkVoidFunction marshal_vkGetInstanceProcAddr(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const char* pName)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->putString(pName);
+ PFN_vkVoidFunction marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
+ vkStream->read(&marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+ return marshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
+}
+
+PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const char* pName)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->loadStringInPlace((char**)&pName);
+ PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
+ vkStream->write(&unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+ return unmarshal_vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
+}
+
+PFN_vkVoidFunction marshal_vkGetDeviceProcAddr(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const char* pName)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->putString(pName);
+ PFN_vkVoidFunction marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
+ vkStream->read(&marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+ return marshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
+}
+
+PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const char* pName)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->loadStringInPlace((char**)&pName);
+ PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
+ vkStream->write(&unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
+ return unmarshal_vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
+}
+
+void marshal_VkDeviceQueueCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceQueueCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->queueCount, sizeof(uint32_t));
+ vkStream->write((const float*)forMarshaling->pQueuePriorities, forMarshaling->queueCount * sizeof(const float));
+}
+
+void unmarshal_VkDeviceQueueCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceQueueCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pQueuePriorities, forUnmarshaling->queueCount * sizeof(const float));
+ vkStream->read((float*)forUnmarshaling->pQueuePriorities, forUnmarshaling->queueCount * sizeof(const float));
+}
+
+void marshal_VkDeviceCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->queueCreateInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->queueCreateInfoCount; ++i)
+ {
+ marshal_VkDeviceQueueCreateInfo(vkStream, (const VkDeviceQueueCreateInfo*)(forMarshaling->pQueueCreateInfos + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->enabledLayerCount, sizeof(uint32_t));
+ saveStringArray(vkStream, forMarshaling->ppEnabledLayerNames, forMarshaling->enabledLayerCount);
+ vkStream->write((uint32_t*)&forMarshaling->enabledExtensionCount, sizeof(uint32_t));
+ saveStringArray(vkStream, forMarshaling->ppEnabledExtensionNames, forMarshaling->enabledExtensionCount);
+ vkStream->write((const VkPhysicalDeviceFeatures**)&forMarshaling->pEnabledFeatures, sizeof(const VkPhysicalDeviceFeatures*));
+ if (forMarshaling->pEnabledFeatures)
+ {
+ marshal_VkPhysicalDeviceFeatures(vkStream, (const VkPhysicalDeviceFeatures*)(forMarshaling->pEnabledFeatures));
+ }
+}
+
+void unmarshal_VkDeviceCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueCreateInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pQueueCreateInfos, forUnmarshaling->queueCreateInfoCount * sizeof(const VkDeviceQueueCreateInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueCreateInfoCount; ++i)
+ {
+ unmarshal_VkDeviceQueueCreateInfo(vkStream, (VkDeviceQueueCreateInfo*)(forUnmarshaling->pQueueCreateInfos + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->enabledLayerCount, sizeof(uint32_t));
+ vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledLayerNames);
+ vkStream->read((uint32_t*)&forUnmarshaling->enabledExtensionCount, sizeof(uint32_t));
+ vkStream->loadStringArrayInPlace((char***)&forUnmarshaling->ppEnabledExtensionNames);
+ vkStream->read((VkPhysicalDeviceFeatures**)&forUnmarshaling->pEnabledFeatures, sizeof(const VkPhysicalDeviceFeatures*));
+ if (forUnmarshaling->pEnabledFeatures)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pEnabledFeatures, sizeof(const VkPhysicalDeviceFeatures));
+ unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(forUnmarshaling->pEnabledFeatures));
+ }
+}
+
+VkResult marshal_vkCreateDevice(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDeviceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDevice* pDevice)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkDeviceCreateInfo(vkStream, (const VkDeviceCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDevice*)pDevice, sizeof(VkDevice));
+ VkResult marshal_vkCreateDevice_VkResult_return;
+ vkStream->read(&marshal_vkCreateDevice_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDevice_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDevice(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDeviceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDevice* pDevice)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDeviceCreateInfo));
+ unmarshal_VkDeviceCreateInfo(vkStream, (VkDeviceCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDevice*)pDevice, sizeof(VkDevice));
+ VkResult unmarshal_vkCreateDevice_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDevice_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDevice_VkResult_return;
+}
+
+void marshal_vkDestroyDevice(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDevice(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkExtensionProperties(
+ VulkanStream* vkStream,
+ const VkExtensionProperties* forMarshaling)
+{
+ vkStream->write((char*)forMarshaling->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ vkStream->write((uint32_t*)&forMarshaling->specVersion, sizeof(uint32_t));
+}
+
+void unmarshal_VkExtensionProperties(
+ VulkanStream* vkStream,
+ VkExtensionProperties* forUnmarshaling)
+{
+ vkStream->read((char*)forUnmarshaling->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ vkStream->read((uint32_t*)&forUnmarshaling->specVersion, sizeof(uint32_t));
+}
+
+VkResult marshal_vkEnumerateInstanceExtensionProperties(
+ VulkanStream* vkStream,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties)
+{
+ vkStream->putString(pLayerName);
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
+ }
+ VkResult marshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
+ vkStream->read(&marshal_vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumerateInstanceExtensionProperties(
+ VulkanStream* vkStream,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties)
+{
+ vkStream->loadStringInPlace((char**)&pLayerName);
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
+ }
+ VkResult unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumerateInstanceExtensionProperties_VkResult_return;
+}
+
+VkResult marshal_vkEnumerateDeviceExtensionProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->putString(pLayerName);
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
+ }
+ VkResult marshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
+ vkStream->read(&marshal_vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumerateDeviceExtensionProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->loadStringInPlace((char**)&pLayerName);
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkExtensionProperties(vkStream, (VkExtensionProperties*)(pProperties + i));
+ }
+ VkResult unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumerateDeviceExtensionProperties_VkResult_return;
+}
+
+void marshal_VkLayerProperties(
+ VulkanStream* vkStream,
+ const VkLayerProperties* forMarshaling)
+{
+ vkStream->write((char*)forMarshaling->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ vkStream->write((uint32_t*)&forMarshaling->specVersion, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->implementationVersion, sizeof(uint32_t));
+ vkStream->write((char*)forMarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
+}
+
+void unmarshal_VkLayerProperties(
+ VulkanStream* vkStream,
+ VkLayerProperties* forUnmarshaling)
+{
+ vkStream->read((char*)forUnmarshaling->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char));
+ vkStream->read((uint32_t*)&forUnmarshaling->specVersion, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->implementationVersion, sizeof(uint32_t));
+ vkStream->read((char*)forUnmarshaling->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char));
+}
+
+VkResult marshal_vkEnumerateInstanceLayerProperties(
+ VulkanStream* vkStream,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties)
+{
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
+ }
+ VkResult marshal_vkEnumerateInstanceLayerProperties_VkResult_return;
+ vkStream->read(&marshal_vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumerateInstanceLayerProperties_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumerateInstanceLayerProperties(
+ VulkanStream* vkStream,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties)
+{
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
+ }
+ VkResult unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumerateInstanceLayerProperties_VkResult_return;
+}
+
+VkResult marshal_vkEnumerateDeviceLayerProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
+ }
+ VkResult marshal_vkEnumerateDeviceLayerProperties_VkResult_return;
+ vkStream->read(&marshal_vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumerateDeviceLayerProperties_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumerateDeviceLayerProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkLayerProperties(vkStream, (VkLayerProperties*)(pProperties + i));
+ }
+ VkResult unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumerateDeviceLayerProperties_VkResult_return;
+}
+
+void marshal_vkGetDeviceQueue(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t queueFamilyIndex,
+ uint32_t queueIndex,
+ VkQueue* pQueue)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&queueIndex, sizeof(uint32_t));
+ vkStream->read((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+void unmarshal_vkGetDeviceQueue(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t queueFamilyIndex,
+ uint32_t queueIndex,
+ VkQueue* pQueue)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&queueIndex, sizeof(uint32_t));
+ vkStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+void marshal_VkSubmitInfo(
+ VulkanStream* vkStream,
+ const VkSubmitInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->write((const VkPipelineStageFlags*)forMarshaling->pWaitDstStageMask, forMarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
+ vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
+ vkStream->write((const VkCommandBuffer*)forMarshaling->pCommandBuffers, forMarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
+ vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const VkSemaphore*)forMarshaling->pSignalSemaphores, forMarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+}
+
+void unmarshal_VkSubmitInfo(
+ VulkanStream* vkStream,
+ VkSubmitInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->alloc((void**)&forUnmarshaling->pWaitDstStageMask, forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
+ vkStream->read((VkPipelineStageFlags*)forUnmarshaling->pWaitDstStageMask, forUnmarshaling->waitSemaphoreCount * sizeof(const VkPipelineStageFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pCommandBuffers, forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
+ vkStream->read((VkCommandBuffer*)forUnmarshaling->pCommandBuffers, forUnmarshaling->commandBufferCount * sizeof(const VkCommandBuffer));
+ vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+}
+
+VkResult marshal_vkQueueSubmit(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t submitCount,
+ const VkSubmitInfo* pSubmits,
+ VkFence fence)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->write((uint32_t*)&submitCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
+ {
+ marshal_VkSubmitInfo(vkStream, (const VkSubmitInfo*)(pSubmits + i));
+ }
+ vkStream->write((VkFence*)&fence, sizeof(VkFence));
+ VkResult marshal_vkQueueSubmit_VkResult_return;
+ vkStream->read(&marshal_vkQueueSubmit_VkResult_return, sizeof(VkResult));
+ return marshal_vkQueueSubmit_VkResult_return;
+}
+
+VkResult unmarshal_vkQueueSubmit(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t submitCount,
+ const VkSubmitInfo* pSubmits,
+ VkFence fence)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->read((uint32_t*)&submitCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pSubmits, ((submitCount)) * sizeof(const VkSubmitInfo));
+ for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
+ {
+ unmarshal_VkSubmitInfo(vkStream, (VkSubmitInfo*)(pSubmits + i));
+ }
+ vkStream->read((VkFence*)&fence, sizeof(VkFence));
+ VkResult unmarshal_vkQueueSubmit_VkResult_return;
+ vkStream->write(&unmarshal_vkQueueSubmit_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkQueueSubmit_VkResult_return;
+}
+
+VkResult marshal_vkQueueWaitIdle(
+ VulkanStream* vkStream,
+ VkQueue queue)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ VkResult marshal_vkQueueWaitIdle_VkResult_return;
+ vkStream->read(&marshal_vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
+ return marshal_vkQueueWaitIdle_VkResult_return;
+}
+
+VkResult unmarshal_vkQueueWaitIdle(
+ VulkanStream* vkStream,
+ VkQueue queue)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ VkResult unmarshal_vkQueueWaitIdle_VkResult_return;
+ vkStream->write(&unmarshal_vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkQueueWaitIdle_VkResult_return;
+}
+
+VkResult marshal_vkDeviceWaitIdle(
+ VulkanStream* vkStream,
+ VkDevice device)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ VkResult marshal_vkDeviceWaitIdle_VkResult_return;
+ vkStream->read(&marshal_vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
+ return marshal_vkDeviceWaitIdle_VkResult_return;
+}
+
+VkResult unmarshal_vkDeviceWaitIdle(
+ VulkanStream* vkStream,
+ VkDevice device)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ VkResult unmarshal_vkDeviceWaitIdle_VkResult_return;
+ vkStream->write(&unmarshal_vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkDeviceWaitIdle_VkResult_return;
+}
+
+void marshal_VkMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ const VkMemoryAllocateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceSize*)&forMarshaling->allocationSize, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ VkMemoryAllocateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->allocationSize, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeIndex, sizeof(uint32_t));
+}
+
+VkResult marshal_vkAllocateMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryAllocateInfo* pAllocateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDeviceMemory* pMemory)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkMemoryAllocateInfo(vkStream, (const VkMemoryAllocateInfo*)(pAllocateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+ VkResult marshal_vkAllocateMemory_VkResult_return;
+ vkStream->read(&marshal_vkAllocateMemory_VkResult_return, sizeof(VkResult));
+ return marshal_vkAllocateMemory_VkResult_return;
+}
+
+VkResult unmarshal_vkAllocateMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryAllocateInfo* pAllocateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDeviceMemory* pMemory)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkMemoryAllocateInfo));
+ unmarshal_VkMemoryAllocateInfo(vkStream, (VkMemoryAllocateInfo*)(pAllocateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDeviceMemory*)pMemory, sizeof(VkDeviceMemory));
+ VkResult unmarshal_vkAllocateMemory_VkResult_return;
+ vkStream->write(&unmarshal_vkAllocateMemory_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAllocateMemory_VkResult_return;
+}
+
+void marshal_vkFreeMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkFreeMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkMapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize offset,
+ VkDeviceSize size,
+ VkMemoryMapFlags flags,
+ void** ppData)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+ vkStream->write((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
+ vkStream->read((void**)ppData, sizeof(void*));
+ VkResult marshal_vkMapMemory_VkResult_return;
+ vkStream->read(&marshal_vkMapMemory_VkResult_return, sizeof(VkResult));
+ return marshal_vkMapMemory_VkResult_return;
+}
+
+VkResult unmarshal_vkMapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize offset,
+ VkDeviceSize size,
+ VkMemoryMapFlags flags,
+ void** ppData)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+ vkStream->read((VkMemoryMapFlags*)&flags, sizeof(VkMemoryMapFlags));
+ vkStream->write((void**)ppData, sizeof(void*));
+ VkResult unmarshal_vkMapMemory_VkResult_return;
+ vkStream->write(&unmarshal_vkMapMemory_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkMapMemory_VkResult_return;
+}
+
+void marshal_vkUnmapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+}
+
+void unmarshal_vkUnmapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+}
+
+void marshal_VkMappedMemoryRange(
+ VulkanStream* vkStream,
+ const VkMappedMemoryRange* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkMappedMemoryRange(
+ VulkanStream* vkStream,
+ VkMappedMemoryRange* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkFlushMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+ {
+ marshal_VkMappedMemoryRange(vkStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+ }
+ VkResult marshal_vkFlushMappedMemoryRanges_VkResult_return;
+ vkStream->read(&marshal_vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+ return marshal_vkFlushMappedMemoryRanges_VkResult_return;
+}
+
+VkResult unmarshal_vkFlushMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pMemoryRanges, ((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
+ for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+ {
+ unmarshal_VkMappedMemoryRange(vkStream, (VkMappedMemoryRange*)(pMemoryRanges + i));
+ }
+ VkResult unmarshal_vkFlushMappedMemoryRanges_VkResult_return;
+ vkStream->write(&unmarshal_vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkFlushMappedMemoryRanges_VkResult_return;
+}
+
+VkResult marshal_vkInvalidateMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+ {
+ marshal_VkMappedMemoryRange(vkStream, (const VkMappedMemoryRange*)(pMemoryRanges + i));
+ }
+ VkResult marshal_vkInvalidateMappedMemoryRanges_VkResult_return;
+ vkStream->read(&marshal_vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+ return marshal_vkInvalidateMappedMemoryRanges_VkResult_return;
+}
+
+VkResult unmarshal_vkInvalidateMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&memoryRangeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pMemoryRanges, ((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
+ for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
+ {
+ unmarshal_VkMappedMemoryRange(vkStream, (VkMappedMemoryRange*)(pMemoryRanges + i));
+ }
+ VkResult unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return;
+ vkStream->write(&unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkInvalidateMappedMemoryRanges_VkResult_return;
+}
+
+void marshal_vkGetDeviceMemoryCommitment(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize* pCommittedMemoryInBytes)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
+}
+
+void unmarshal_vkGetDeviceMemoryCommitment(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize* pCommittedMemoryInBytes)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkBindBufferMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+ VkResult marshal_vkBindBufferMemory_VkResult_return;
+ vkStream->read(&marshal_vkBindBufferMemory_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindBufferMemory_VkResult_return;
+}
+
+VkResult unmarshal_vkBindBufferMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+ VkResult unmarshal_vkBindBufferMemory_VkResult_return;
+ vkStream->write(&unmarshal_vkBindBufferMemory_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindBufferMemory_VkResult_return;
+}
+
+VkResult marshal_vkBindImageMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+ VkResult marshal_vkBindImageMemory_VkResult_return;
+ vkStream->read(&marshal_vkBindImageMemory_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindImageMemory_VkResult_return;
+}
+
+VkResult unmarshal_vkBindImageMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&memoryOffset, sizeof(VkDeviceSize));
+ VkResult unmarshal_vkBindImageMemory_VkResult_return;
+ vkStream->write(&unmarshal_vkBindImageMemory_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindImageMemory_VkResult_return;
+}
+
+void marshal_VkMemoryRequirements(
+ VulkanStream* vkStream,
+ const VkMemoryRequirements* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->alignment, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryRequirements(
+ VulkanStream* vkStream,
+ VkMemoryRequirements* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->alignment, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void marshal_vkGetBufferMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkMemoryRequirements* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetBufferMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkMemoryRequirements* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void marshal_vkGetImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkMemoryRequirements* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkMemoryRequirements* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(pMemoryRequirements));
+}
+
+void marshal_VkSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkSparseImageFormatProperties* forMarshaling)
+{
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->imageGranularity));
+ vkStream->write((VkSparseImageFormatFlags*)&forMarshaling->flags, sizeof(VkSparseImageFormatFlags));
+}
+
+void unmarshal_VkSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkSparseImageFormatProperties* forUnmarshaling)
+{
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->imageGranularity));
+ vkStream->read((VkSparseImageFormatFlags*)&forUnmarshaling->flags, sizeof(VkSparseImageFormatFlags));
+}
+
+void marshal_VkSparseImageMemoryRequirements(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryRequirements* forMarshaling)
+{
+ marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forMarshaling->formatProperties));
+ vkStream->write((uint32_t*)&forMarshaling->imageMipTailFirstLod, sizeof(uint32_t));
+ vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailSize, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->imageMipTailStride, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkSparseImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryRequirements* forUnmarshaling)
+{
+ unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forUnmarshaling->formatProperties));
+ vkStream->read((uint32_t*)&forUnmarshaling->imageMipTailFirstLod, sizeof(uint32_t));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailSize, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->imageMipTailStride, sizeof(VkDeviceSize));
+}
+
+void marshal_vkGetImageSparseMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ marshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
+ }
+}
+
+void unmarshal_vkGetImageSparseMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ unmarshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
+ }
+}
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkSampleCountFlagBits samples,
+ VkImageUsageFlags usage,
+ VkImageTiling tiling,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->write((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(pProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkSampleCountFlagBits samples,
+ VkImageUsageFlags usage,
+ VkImageTiling tiling,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->read((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->read((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(pProperties + i));
+ }
+}
+
+void marshal_VkSparseMemoryBind(
+ VulkanStream* vkStream,
+ const VkSparseMemoryBind* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->resourceOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags, sizeof(VkSparseMemoryBindFlags));
+}
+
+void unmarshal_VkSparseMemoryBind(
+ VulkanStream* vkStream,
+ VkSparseMemoryBind* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->resourceOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, sizeof(VkSparseMemoryBindFlags));
+}
+
+void marshal_VkSparseBufferMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseBufferMemoryBindInfo* forMarshaling)
+{
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
+ {
+ marshal_VkSparseMemoryBind(vkStream, (const VkSparseMemoryBind*)(forMarshaling->pBinds + i));
+ }
+}
+
+void unmarshal_VkSparseBufferMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseBufferMemoryBindInfo* forUnmarshaling)
+{
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
+ {
+ unmarshal_VkSparseMemoryBind(vkStream, (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i));
+ }
+}
+
+void marshal_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseImageOpaqueMemoryBindInfo* forMarshaling)
+{
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
+ {
+ marshal_VkSparseMemoryBind(vkStream, (const VkSparseMemoryBind*)(forMarshaling->pBinds + i));
+ }
+}
+
+void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling)
+{
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseMemoryBind));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
+ {
+ unmarshal_VkSparseMemoryBind(vkStream, (VkSparseMemoryBind*)(forUnmarshaling->pBinds + i));
+ }
+}
+
+void marshal_VkImageSubresource(
+ VulkanStream* vkStream,
+ const VkImageSubresource* forMarshaling)
+{
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->arrayLayer, sizeof(uint32_t));
+}
+
+void unmarshal_VkImageSubresource(
+ VulkanStream* vkStream,
+ VkImageSubresource* forUnmarshaling)
+{
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->arrayLayer, sizeof(uint32_t));
+}
+
+void marshal_VkOffset3D(
+ VulkanStream* vkStream,
+ const VkOffset3D* forMarshaling)
+{
+ vkStream->write((int32_t*)&forMarshaling->x, sizeof(int32_t));
+ vkStream->write((int32_t*)&forMarshaling->y, sizeof(int32_t));
+ vkStream->write((int32_t*)&forMarshaling->z, sizeof(int32_t));
+}
+
+void unmarshal_VkOffset3D(
+ VulkanStream* vkStream,
+ VkOffset3D* forUnmarshaling)
+{
+ vkStream->read((int32_t*)&forUnmarshaling->x, sizeof(int32_t));
+ vkStream->read((int32_t*)&forUnmarshaling->y, sizeof(int32_t));
+ vkStream->read((int32_t*)&forUnmarshaling->z, sizeof(int32_t));
+}
+
+void marshal_VkSparseImageMemoryBind(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryBind* forMarshaling)
+{
+ marshal_VkImageSubresource(vkStream, (VkImageSubresource*)(&forMarshaling->subresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->offset));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkSparseMemoryBindFlags*)&forMarshaling->flags, sizeof(VkSparseMemoryBindFlags));
+}
+
+void unmarshal_VkSparseImageMemoryBind(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryBind* forUnmarshaling)
+{
+ unmarshal_VkImageSubresource(vkStream, (VkImageSubresource*)(&forUnmarshaling->subresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->offset));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkSparseMemoryBindFlags*)&forUnmarshaling->flags, sizeof(VkSparseMemoryBindFlags));
+}
+
+void marshal_VkSparseImageMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryBindInfo* forMarshaling)
+{
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((uint32_t*)&forMarshaling->bindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindCount; ++i)
+ {
+ marshal_VkSparseImageMemoryBind(vkStream, (const VkSparseImageMemoryBind*)(forMarshaling->pBinds + i));
+ }
+}
+
+void unmarshal_VkSparseImageMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryBindInfo* forUnmarshaling)
+{
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((uint32_t*)&forUnmarshaling->bindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBinds, forUnmarshaling->bindCount * sizeof(const VkSparseImageMemoryBind));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindCount; ++i)
+ {
+ unmarshal_VkSparseImageMemoryBind(vkStream, (VkSparseImageMemoryBind*)(forUnmarshaling->pBinds + i));
+ }
+}
+
+void marshal_VkBindSparseInfo(
+ VulkanStream* vkStream,
+ const VkBindSparseInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->write((uint32_t*)&forMarshaling->bufferBindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->bufferBindCount; ++i)
+ {
+ marshal_VkSparseBufferMemoryBindInfo(vkStream, (const VkSparseBufferMemoryBindInfo*)(forMarshaling->pBufferBinds + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->imageOpaqueBindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->imageOpaqueBindCount; ++i)
+ {
+ marshal_VkSparseImageOpaqueMemoryBindInfo(vkStream, (const VkSparseImageOpaqueMemoryBindInfo*)(forMarshaling->pImageOpaqueBinds + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->imageBindCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->imageBindCount; ++i)
+ {
+ marshal_VkSparseImageMemoryBindInfo(vkStream, (const VkSparseImageMemoryBindInfo*)(forMarshaling->pImageBinds + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const VkSemaphore*)forMarshaling->pSignalSemaphores, forMarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+}
+
+void unmarshal_VkBindSparseInfo(
+ VulkanStream* vkStream,
+ VkBindSparseInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((uint32_t*)&forUnmarshaling->bufferBindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBufferBinds, forUnmarshaling->bufferBindCount * sizeof(const VkSparseBufferMemoryBindInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bufferBindCount; ++i)
+ {
+ unmarshal_VkSparseBufferMemoryBindInfo(vkStream, (VkSparseBufferMemoryBindInfo*)(forUnmarshaling->pBufferBinds + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->imageOpaqueBindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pImageOpaqueBinds, forUnmarshaling->imageOpaqueBindCount * sizeof(const VkSparseImageOpaqueMemoryBindInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageOpaqueBindCount; ++i)
+ {
+ unmarshal_VkSparseImageOpaqueMemoryBindInfo(vkStream, (VkSparseImageOpaqueMemoryBindInfo*)(forUnmarshaling->pImageOpaqueBinds + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->imageBindCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pImageBinds, forUnmarshaling->imageBindCount * sizeof(const VkSparseImageMemoryBindInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->imageBindCount; ++i)
+ {
+ unmarshal_VkSparseImageMemoryBindInfo(vkStream, (VkSparseImageMemoryBindInfo*)(forUnmarshaling->pImageBinds + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((VkSemaphore*)forUnmarshaling->pSignalSemaphores, forUnmarshaling->signalSemaphoreCount * sizeof(const VkSemaphore));
+}
+
+VkResult marshal_vkQueueBindSparse(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t bindInfoCount,
+ const VkBindSparseInfo* pBindInfo,
+ VkFence fence)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ marshal_VkBindSparseInfo(vkStream, (const VkBindSparseInfo*)(pBindInfo + i));
+ }
+ vkStream->write((VkFence*)&fence, sizeof(VkFence));
+ VkResult marshal_vkQueueBindSparse_VkResult_return;
+ vkStream->read(&marshal_vkQueueBindSparse_VkResult_return, sizeof(VkResult));
+ return marshal_vkQueueBindSparse_VkResult_return;
+}
+
+VkResult unmarshal_vkQueueBindSparse(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t bindInfoCount,
+ const VkBindSparseInfo* pBindInfo,
+ VkFence fence)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBindInfo, ((bindInfoCount)) * sizeof(const VkBindSparseInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ unmarshal_VkBindSparseInfo(vkStream, (VkBindSparseInfo*)(pBindInfo + i));
+ }
+ vkStream->read((VkFence*)&fence, sizeof(VkFence));
+ VkResult unmarshal_vkQueueBindSparse_VkResult_return;
+ vkStream->write(&unmarshal_vkQueueBindSparse_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkQueueBindSparse_VkResult_return;
+}
+
+void marshal_VkFenceCreateInfo(
+ VulkanStream* vkStream,
+ const VkFenceCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFenceCreateFlags*)&forMarshaling->flags, sizeof(VkFenceCreateFlags));
+}
+
+void unmarshal_VkFenceCreateInfo(
+ VulkanStream* vkStream,
+ VkFenceCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFenceCreateFlags*)&forUnmarshaling->flags, sizeof(VkFenceCreateFlags));
+}
+
+VkResult marshal_vkCreateFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkFenceCreateInfo(vkStream, (const VkFenceCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkFence*)pFence, sizeof(VkFence));
+ VkResult marshal_vkCreateFence_VkResult_return;
+ vkStream->read(&marshal_vkCreateFence_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateFence_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkFenceCreateInfo));
+ unmarshal_VkFenceCreateInfo(vkStream, (VkFenceCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkFence*)pFence, sizeof(VkFence));
+ VkResult unmarshal_vkCreateFence_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateFence_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateFence_VkResult_return;
+}
+
+void marshal_vkDestroyFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkFence*)&fence, sizeof(VkFence));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkFence*)&fence, sizeof(VkFence));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkResetFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+ vkStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+ VkResult marshal_vkResetFences_VkResult_return;
+ vkStream->read(&marshal_vkResetFences_VkResult_return, sizeof(VkResult));
+ return marshal_vkResetFences_VkResult_return;
+}
+
+VkResult unmarshal_vkResetFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&fenceCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
+ vkStream->read((VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+ VkResult unmarshal_vkResetFences_VkResult_return;
+ vkStream->write(&unmarshal_vkResetFences_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkResetFences_VkResult_return;
+}
+
+VkResult marshal_vkGetFenceStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkFence*)&fence, sizeof(VkFence));
+ VkResult marshal_vkGetFenceStatus_VkResult_return;
+ vkStream->read(&marshal_vkGetFenceStatus_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetFenceStatus_VkResult_return;
+}
+
+VkResult unmarshal_vkGetFenceStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkFence*)&fence, sizeof(VkFence));
+ VkResult unmarshal_vkGetFenceStatus_VkResult_return;
+ vkStream->write(&unmarshal_vkGetFenceStatus_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetFenceStatus_VkResult_return;
+}
+
+VkResult marshal_vkWaitForFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences,
+ VkBool32 waitAll,
+ uint64_t timeout)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&fenceCount, sizeof(uint32_t));
+ vkStream->write((const VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+ vkStream->write((VkBool32*)&waitAll, sizeof(VkBool32));
+ vkStream->write((uint64_t*)&timeout, sizeof(uint64_t));
+ VkResult marshal_vkWaitForFences_VkResult_return;
+ vkStream->read(&marshal_vkWaitForFences_VkResult_return, sizeof(VkResult));
+ return marshal_vkWaitForFences_VkResult_return;
+}
+
+VkResult unmarshal_vkWaitForFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences,
+ VkBool32 waitAll,
+ uint64_t timeout)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&fenceCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pFences, ((fenceCount)) * sizeof(const VkFence));
+ vkStream->read((VkFence*)pFences, ((fenceCount)) * sizeof(const VkFence));
+ vkStream->read((VkBool32*)&waitAll, sizeof(VkBool32));
+ vkStream->read((uint64_t*)&timeout, sizeof(uint64_t));
+ VkResult unmarshal_vkWaitForFences_VkResult_return;
+ vkStream->write(&unmarshal_vkWaitForFences_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkWaitForFences_VkResult_return;
+}
+
+void marshal_VkSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ const VkSemaphoreCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSemaphoreCreateFlags*)&forMarshaling->flags, sizeof(VkSemaphoreCreateFlags));
+}
+
+void unmarshal_VkSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ VkSemaphoreCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSemaphoreCreateFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreCreateFlags));
+}
+
+VkResult marshal_vkCreateSemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSemaphore* pSemaphore)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSemaphoreCreateInfo(vkStream, (const VkSemaphoreCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+ VkResult marshal_vkCreateSemaphore_VkResult_return;
+ vkStream->read(&marshal_vkCreateSemaphore_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSemaphore_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSemaphore* pSemaphore)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSemaphoreCreateInfo));
+ unmarshal_VkSemaphoreCreateInfo(vkStream, (VkSemaphoreCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSemaphore*)pSemaphore, sizeof(VkSemaphore));
+ VkResult unmarshal_vkCreateSemaphore_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSemaphore_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSemaphore_VkResult_return;
+}
+
+void marshal_vkDestroySemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSemaphore semaphore,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSemaphore semaphore,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkEventCreateInfo(
+ VulkanStream* vkStream,
+ const VkEventCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkEventCreateFlags*)&forMarshaling->flags, sizeof(VkEventCreateFlags));
+}
+
+void unmarshal_VkEventCreateInfo(
+ VulkanStream* vkStream,
+ VkEventCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkEventCreateFlags*)&forUnmarshaling->flags, sizeof(VkEventCreateFlags));
+}
+
+VkResult marshal_vkCreateEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkEventCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkEvent* pEvent)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkEventCreateInfo(vkStream, (const VkEventCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkEvent*)pEvent, sizeof(VkEvent));
+ VkResult marshal_vkCreateEvent_VkResult_return;
+ vkStream->read(&marshal_vkCreateEvent_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateEvent_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkEventCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkEvent* pEvent)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkEventCreateInfo));
+ unmarshal_VkEventCreateInfo(vkStream, (VkEventCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkEvent*)pEvent, sizeof(VkEvent));
+ VkResult unmarshal_vkCreateEvent_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateEvent_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateEvent_VkResult_return;
+}
+
+void marshal_vkDestroyEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkGetEventStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ VkResult marshal_vkGetEventStatus_VkResult_return;
+ vkStream->read(&marshal_vkGetEventStatus_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetEventStatus_VkResult_return;
+}
+
+VkResult unmarshal_vkGetEventStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ VkResult unmarshal_vkGetEventStatus_VkResult_return;
+ vkStream->write(&unmarshal_vkGetEventStatus_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetEventStatus_VkResult_return;
+}
+
+VkResult marshal_vkSetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ VkResult marshal_vkSetEvent_VkResult_return;
+ vkStream->read(&marshal_vkSetEvent_VkResult_return, sizeof(VkResult));
+ return marshal_vkSetEvent_VkResult_return;
+}
+
+VkResult unmarshal_vkSetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ VkResult unmarshal_vkSetEvent_VkResult_return;
+ vkStream->write(&unmarshal_vkSetEvent_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkSetEvent_VkResult_return;
+}
+
+VkResult marshal_vkResetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ VkResult marshal_vkResetEvent_VkResult_return;
+ vkStream->read(&marshal_vkResetEvent_VkResult_return, sizeof(VkResult));
+ return marshal_vkResetEvent_VkResult_return;
+}
+
+VkResult unmarshal_vkResetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ VkResult unmarshal_vkResetEvent_VkResult_return;
+ vkStream->write(&unmarshal_vkResetEvent_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkResetEvent_VkResult_return;
+}
+
+void marshal_VkQueryPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkQueryPoolCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkQueryPoolCreateFlags*)&forMarshaling->flags, sizeof(VkQueryPoolCreateFlags));
+ vkStream->write((VkQueryType*)&forMarshaling->queryType, sizeof(VkQueryType));
+ vkStream->write((uint32_t*)&forMarshaling->queryCount, sizeof(uint32_t));
+ vkStream->write((VkQueryPipelineStatisticFlags*)&forMarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
+}
+
+void unmarshal_VkQueryPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkQueryPoolCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkQueryPoolCreateFlags*)&forUnmarshaling->flags, sizeof(VkQueryPoolCreateFlags));
+ vkStream->read((VkQueryType*)&forUnmarshaling->queryType, sizeof(VkQueryType));
+ vkStream->read((uint32_t*)&forUnmarshaling->queryCount, sizeof(uint32_t));
+ vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
+}
+
+VkResult marshal_vkCreateQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkQueryPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkQueryPool* pQueryPool)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkQueryPoolCreateInfo(vkStream, (const VkQueryPoolCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+ VkResult marshal_vkCreateQueryPool_VkResult_return;
+ vkStream->read(&marshal_vkCreateQueryPool_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateQueryPool_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkQueryPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkQueryPool* pQueryPool)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkQueryPoolCreateInfo));
+ unmarshal_VkQueryPoolCreateInfo(vkStream, (VkQueryPoolCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkQueryPool*)pQueryPool, sizeof(VkQueryPool));
+ VkResult unmarshal_vkCreateQueryPool_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateQueryPool_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateQueryPool_VkResult_return;
+}
+
+void marshal_vkDestroyQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkGetQueryPoolResults(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ size_t dataSize,
+ void* pData,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+ vkStream->write((size_t*)&dataSize, sizeof(size_t));
+ vkStream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
+ vkStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+ vkStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+ VkResult marshal_vkGetQueryPoolResults_VkResult_return;
+ vkStream->read(&marshal_vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetQueryPoolResults_VkResult_return;
+}
+
+VkResult unmarshal_vkGetQueryPoolResults(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ size_t dataSize,
+ void* pData,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
+ vkStream->read((size_t*)&dataSize, sizeof(size_t));
+ vkStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
+ vkStream->read((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+ vkStream->read((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+ VkResult unmarshal_vkGetQueryPoolResults_VkResult_return;
+ vkStream->write(&unmarshal_vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetQueryPoolResults_VkResult_return;
+}
+
+void marshal_VkBufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkBufferCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+ vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
+ vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t**)&forMarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forMarshaling->pQueueFamilyIndices)
+ {
+ vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+}
+
+void unmarshal_VkBufferCreateInfo(
+ VulkanStream* vkStream,
+ VkBufferCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+ vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
+ vkStream->read((VkSharingMode*)&forUnmarshaling->sharingMode, sizeof(VkSharingMode));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forUnmarshaling->pQueueFamilyIndices)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+}
+
+VkResult marshal_vkCreateBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBuffer* pBuffer)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkBufferCreateInfo(vkStream, (const VkBufferCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkBuffer*)pBuffer, sizeof(VkBuffer));
+ VkResult marshal_vkCreateBuffer_VkResult_return;
+ vkStream->read(&marshal_vkCreateBuffer_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateBuffer_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBuffer* pBuffer)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferCreateInfo));
+ unmarshal_VkBufferCreateInfo(vkStream, (VkBufferCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkBuffer*)pBuffer, sizeof(VkBuffer));
+ VkResult unmarshal_vkCreateBuffer_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateBuffer_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateBuffer_VkResult_return;
+}
+
+void marshal_vkDestroyBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkBufferViewCreateInfo(
+ VulkanStream* vkStream,
+ const VkBufferViewCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBufferViewCreateFlags*)&forMarshaling->flags, sizeof(VkBufferViewCreateFlags));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkBufferViewCreateInfo(
+ VulkanStream* vkStream,
+ VkBufferViewCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBufferViewCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferViewCreateFlags));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkCreateBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBufferView* pView)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkBufferViewCreateInfo(vkStream, (const VkBufferViewCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkBufferView*)pView, sizeof(VkBufferView));
+ VkResult marshal_vkCreateBufferView_VkResult_return;
+ vkStream->read(&marshal_vkCreateBufferView_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateBufferView_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBufferView* pView)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkBufferViewCreateInfo));
+ unmarshal_VkBufferViewCreateInfo(vkStream, (VkBufferViewCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkBufferView*)pView, sizeof(VkBufferView));
+ VkResult unmarshal_vkCreateBufferView_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateBufferView_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateBufferView_VkResult_return;
+}
+
+void marshal_vkDestroyBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBufferView bufferView,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkBufferView*)&bufferView, sizeof(VkBufferView));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBufferView bufferView,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkBufferView*)&bufferView, sizeof(VkBufferView));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkImageCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
+ vkStream->write((VkImageType*)&forMarshaling->imageType, sizeof(VkImageType));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
+ vkStream->write((uint32_t*)&forMarshaling->mipLevels, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->arrayLayers, sizeof(uint32_t));
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkSharingMode*)&forMarshaling->sharingMode, sizeof(VkSharingMode));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t**)&forMarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forMarshaling->pQueueFamilyIndices)
+ {
+ vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
+}
+
+void unmarshal_VkImageCreateInfo(
+ VulkanStream* vkStream,
+ VkImageCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
+ vkStream->read((VkImageType*)&forUnmarshaling->imageType, sizeof(VkImageType));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
+ vkStream->read((uint32_t*)&forUnmarshaling->mipLevels, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->arrayLayers, sizeof(uint32_t));
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkSharingMode*)&forUnmarshaling->sharingMode, sizeof(VkSharingMode));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forUnmarshaling->pQueueFamilyIndices)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
+}
+
+VkResult marshal_vkCreateImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImage* pImage)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageCreateInfo(vkStream, (const VkImageCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkImage*)pImage, sizeof(VkImage));
+ VkResult marshal_vkCreateImage_VkResult_return;
+ vkStream->read(&marshal_vkCreateImage_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateImage_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImage* pImage)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkImageCreateInfo));
+ unmarshal_VkImageCreateInfo(vkStream, (VkImageCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkImage*)pImage, sizeof(VkImage));
+ VkResult unmarshal_vkCreateImage_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateImage_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateImage_VkResult_return;
+}
+
+void marshal_vkDestroyImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkSubresourceLayout(
+ VulkanStream* vkStream,
+ const VkSubresourceLayout* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->rowPitch, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->arrayPitch, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->depthPitch, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkSubresourceLayout(
+ VulkanStream* vkStream,
+ VkSubresourceLayout* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->rowPitch, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->arrayPitch, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->depthPitch, sizeof(VkDeviceSize));
+}
+
+void marshal_vkGetImageSubresourceLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkImageSubresource* pSubresource,
+ VkSubresourceLayout* pLayout)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ marshal_VkImageSubresource(vkStream, (const VkImageSubresource*)(pSubresource));
+ marshal_VkSubresourceLayout(vkStream, (VkSubresourceLayout*)(pLayout));
+}
+
+void unmarshal_vkGetImageSubresourceLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkImageSubresource* pSubresource,
+ VkSubresourceLayout* pLayout)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->alloc((void**)&pSubresource, sizeof(const VkImageSubresource));
+ unmarshal_VkImageSubresource(vkStream, (VkImageSubresource*)(pSubresource));
+ unmarshal_VkSubresourceLayout(vkStream, (VkSubresourceLayout*)(pLayout));
+}
+
+void marshal_VkComponentMapping(
+ VulkanStream* vkStream,
+ const VkComponentMapping* forMarshaling)
+{
+ vkStream->write((VkComponentSwizzle*)&forMarshaling->r, sizeof(VkComponentSwizzle));
+ vkStream->write((VkComponentSwizzle*)&forMarshaling->g, sizeof(VkComponentSwizzle));
+ vkStream->write((VkComponentSwizzle*)&forMarshaling->b, sizeof(VkComponentSwizzle));
+ vkStream->write((VkComponentSwizzle*)&forMarshaling->a, sizeof(VkComponentSwizzle));
+}
+
+void unmarshal_VkComponentMapping(
+ VulkanStream* vkStream,
+ VkComponentMapping* forUnmarshaling)
+{
+ vkStream->read((VkComponentSwizzle*)&forUnmarshaling->r, sizeof(VkComponentSwizzle));
+ vkStream->read((VkComponentSwizzle*)&forUnmarshaling->g, sizeof(VkComponentSwizzle));
+ vkStream->read((VkComponentSwizzle*)&forUnmarshaling->b, sizeof(VkComponentSwizzle));
+ vkStream->read((VkComponentSwizzle*)&forUnmarshaling->a, sizeof(VkComponentSwizzle));
+}
+
+void marshal_VkImageSubresourceRange(
+ VulkanStream* vkStream,
+ const VkImageSubresourceRange* forMarshaling)
+{
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->write((uint32_t*)&forMarshaling->baseMipLevel, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->levelCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkImageSubresourceRange(
+ VulkanStream* vkStream,
+ VkImageSubresourceRange* forUnmarshaling)
+{
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->baseMipLevel, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->levelCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
+}
+
+void marshal_VkImageViewCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageViewCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImageViewCreateFlags*)&forMarshaling->flags, sizeof(VkImageViewCreateFlags));
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((VkImageViewType*)&forMarshaling->viewType, sizeof(VkImageViewType));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->components));
+ marshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
+}
+
+void unmarshal_VkImageViewCreateInfo(
+ VulkanStream* vkStream,
+ VkImageViewCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImageViewCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageViewCreateFlags));
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((VkImageViewType*)&forUnmarshaling->viewType, sizeof(VkImageViewType));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->components));
+ unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
+}
+
+VkResult marshal_vkCreateImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageViewCreateInfo(vkStream, (const VkImageViewCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkImageView*)pView, sizeof(VkImageView));
+ VkResult marshal_vkCreateImageView_VkResult_return;
+ vkStream->read(&marshal_vkCreateImageView_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateImageView_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkImageViewCreateInfo));
+ unmarshal_VkImageViewCreateInfo(vkStream, (VkImageViewCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkImageView*)pView, sizeof(VkImageView));
+ VkResult unmarshal_vkCreateImageView_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateImageView_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateImageView_VkResult_return;
+}
+
+void marshal_vkDestroyImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImageView imageView,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkImageView*)&imageView, sizeof(VkImageView));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImageView imageView,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkImageView*)&imageView, sizeof(VkImageView));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkShaderModuleCreateInfo(
+ VulkanStream* vkStream,
+ const VkShaderModuleCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkShaderModuleCreateFlags*)&forMarshaling->flags, sizeof(VkShaderModuleCreateFlags));
+ vkStream->write((size_t*)&forMarshaling->codeSize, sizeof(size_t));
+ vkStream->write((const uint32_t*)forMarshaling->pCode, (forMarshaling->codeSize / 4) * sizeof(const uint32_t));
+}
+
+void unmarshal_VkShaderModuleCreateInfo(
+ VulkanStream* vkStream,
+ VkShaderModuleCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkShaderModuleCreateFlags*)&forUnmarshaling->flags, sizeof(VkShaderModuleCreateFlags));
+ vkStream->read((size_t*)&forUnmarshaling->codeSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pCode, (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pCode, (forUnmarshaling->codeSize / 4) * sizeof(const uint32_t));
+}
+
+VkResult marshal_vkCreateShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkShaderModule* pShaderModule)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkShaderModuleCreateInfo(vkStream, (const VkShaderModuleCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+ VkResult marshal_vkCreateShaderModule_VkResult_return;
+ vkStream->read(&marshal_vkCreateShaderModule_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateShaderModule_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkShaderModule* pShaderModule)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkShaderModuleCreateInfo));
+ unmarshal_VkShaderModuleCreateInfo(vkStream, (VkShaderModuleCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkShaderModule*)pShaderModule, sizeof(VkShaderModule));
+ VkResult unmarshal_vkCreateShaderModule_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateShaderModule_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateShaderModule_VkResult_return;
+}
+
+void marshal_vkDestroyShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkShaderModule shaderModule,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkShaderModule shaderModule,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkShaderModule*)&shaderModule, sizeof(VkShaderModule));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkPipelineCacheCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineCacheCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineCacheCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCacheCreateFlags));
+ vkStream->write((size_t*)&forMarshaling->initialDataSize, sizeof(size_t));
+ vkStream->write((const void*)forMarshaling->pInitialData, forMarshaling->initialDataSize * sizeof(const uint8_t));
+}
+
+void unmarshal_VkPipelineCacheCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineCacheCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineCacheCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCacheCreateFlags));
+ vkStream->read((size_t*)&forUnmarshaling->initialDataSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pInitialData, forUnmarshaling->initialDataSize * sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pInitialData, forUnmarshaling->initialDataSize * sizeof(const uint8_t));
+}
+
+VkResult marshal_vkCreatePipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineCacheCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineCache* pPipelineCache)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkPipelineCacheCreateInfo(vkStream, (const VkPipelineCacheCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+ VkResult marshal_vkCreatePipelineCache_VkResult_return;
+ vkStream->read(&marshal_vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreatePipelineCache_VkResult_return;
+}
+
+VkResult unmarshal_vkCreatePipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineCacheCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineCache* pPipelineCache)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineCacheCreateInfo));
+ unmarshal_VkPipelineCacheCreateInfo(vkStream, (VkPipelineCacheCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkPipelineCache*)pPipelineCache, sizeof(VkPipelineCache));
+ VkResult unmarshal_vkCreatePipelineCache_VkResult_return;
+ vkStream->write(&unmarshal_vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreatePipelineCache_VkResult_return;
+}
+
+void marshal_vkDestroyPipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyPipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkGetPipelineCacheData(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ size_t* pDataSize,
+ void* pData)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->read((size_t*)pDataSize, sizeof(size_t));
+ vkStream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+ VkResult marshal_vkGetPipelineCacheData_VkResult_return;
+ vkStream->read(&marshal_vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPipelineCacheData_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPipelineCacheData(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ size_t* pDataSize,
+ void* pData)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->write((size_t*)pDataSize, sizeof(size_t));
+ vkStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+ VkResult unmarshal_vkGetPipelineCacheData_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPipelineCacheData_VkResult_return;
+}
+
+VkResult marshal_vkMergePipelineCaches(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache dstCache,
+ uint32_t srcCacheCount,
+ const VkPipelineCache* pSrcCaches)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
+ vkStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+ vkStream->write((const VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
+ VkResult marshal_vkMergePipelineCaches_VkResult_return;
+ vkStream->read(&marshal_vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
+ return marshal_vkMergePipelineCaches_VkResult_return;
+}
+
+VkResult unmarshal_vkMergePipelineCaches(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache dstCache,
+ uint32_t srcCacheCount,
+ const VkPipelineCache* pSrcCaches)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineCache*)&dstCache, sizeof(VkPipelineCache));
+ vkStream->read((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
+ vkStream->read((VkPipelineCache*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
+ VkResult unmarshal_vkMergePipelineCaches_VkResult_return;
+ vkStream->write(&unmarshal_vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkMergePipelineCaches_VkResult_return;
+}
+
+void marshal_VkSpecializationMapEntry(
+ VulkanStream* vkStream,
+ const VkSpecializationMapEntry* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->constantID, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
+ vkStream->write((size_t*)&forMarshaling->size, sizeof(size_t));
+}
+
+void unmarshal_VkSpecializationMapEntry(
+ VulkanStream* vkStream,
+ VkSpecializationMapEntry* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->constantID, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
+ vkStream->read((size_t*)&forUnmarshaling->size, sizeof(size_t));
+}
+
+void marshal_VkSpecializationInfo(
+ VulkanStream* vkStream,
+ const VkSpecializationInfo* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->mapEntryCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->mapEntryCount; ++i)
+ {
+ marshal_VkSpecializationMapEntry(vkStream, (const VkSpecializationMapEntry*)(forMarshaling->pMapEntries + i));
+ }
+ vkStream->write((size_t*)&forMarshaling->dataSize, sizeof(size_t));
+ vkStream->write((const void*)forMarshaling->pData, forMarshaling->dataSize * sizeof(const uint8_t));
+}
+
+void unmarshal_VkSpecializationInfo(
+ VulkanStream* vkStream,
+ VkSpecializationInfo* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->mapEntryCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pMapEntries, forUnmarshaling->mapEntryCount * sizeof(const VkSpecializationMapEntry));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->mapEntryCount; ++i)
+ {
+ unmarshal_VkSpecializationMapEntry(vkStream, (VkSpecializationMapEntry*)(forUnmarshaling->pMapEntries + i));
+ }
+ vkStream->read((size_t*)&forUnmarshaling->dataSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pData, forUnmarshaling->dataSize * sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pData, forUnmarshaling->dataSize * sizeof(const uint8_t));
+}
+
+void marshal_VkPipelineShaderStageCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineShaderStageCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineShaderStageCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineShaderStageCreateFlags));
+ vkStream->write((VkShaderStageFlagBits*)&forMarshaling->stage, sizeof(VkShaderStageFlagBits));
+ vkStream->write((VkShaderModule*)&forMarshaling->module, sizeof(VkShaderModule));
+ vkStream->putString(forMarshaling->pName);
+ vkStream->write((const VkSpecializationInfo**)&forMarshaling->pSpecializationInfo, sizeof(const VkSpecializationInfo*));
+ if (forMarshaling->pSpecializationInfo)
+ {
+ marshal_VkSpecializationInfo(vkStream, (const VkSpecializationInfo*)(forMarshaling->pSpecializationInfo));
+ }
+}
+
+void unmarshal_VkPipelineShaderStageCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineShaderStageCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineShaderStageCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineShaderStageCreateFlags));
+ vkStream->read((VkShaderStageFlagBits*)&forUnmarshaling->stage, sizeof(VkShaderStageFlagBits));
+ vkStream->read((VkShaderModule*)&forUnmarshaling->module, sizeof(VkShaderModule));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pName);
+ vkStream->read((VkSpecializationInfo**)&forUnmarshaling->pSpecializationInfo, sizeof(const VkSpecializationInfo*));
+ if (forUnmarshaling->pSpecializationInfo)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pSpecializationInfo, sizeof(const VkSpecializationInfo));
+ unmarshal_VkSpecializationInfo(vkStream, (VkSpecializationInfo*)(forUnmarshaling->pSpecializationInfo));
+ }
+}
+
+void marshal_VkVertexInputBindingDescription(
+ VulkanStream* vkStream,
+ const VkVertexInputBindingDescription* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->stride, sizeof(uint32_t));
+ vkStream->write((VkVertexInputRate*)&forMarshaling->inputRate, sizeof(VkVertexInputRate));
+}
+
+void unmarshal_VkVertexInputBindingDescription(
+ VulkanStream* vkStream,
+ VkVertexInputBindingDescription* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->stride, sizeof(uint32_t));
+ vkStream->read((VkVertexInputRate*)&forUnmarshaling->inputRate, sizeof(VkVertexInputRate));
+}
+
+void marshal_VkVertexInputAttributeDescription(
+ VulkanStream* vkStream,
+ const VkVertexInputAttributeDescription* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->location, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
+}
+
+void unmarshal_VkVertexInputAttributeDescription(
+ VulkanStream* vkStream,
+ VkVertexInputAttributeDescription* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->location, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
+}
+
+void marshal_VkPipelineVertexInputStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineVertexInputStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineVertexInputStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineVertexInputStateCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->vertexBindingDescriptionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexBindingDescriptionCount; ++i)
+ {
+ marshal_VkVertexInputBindingDescription(vkStream, (const VkVertexInputBindingDescription*)(forMarshaling->pVertexBindingDescriptions + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->vertexAttributeDescriptionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexAttributeDescriptionCount; ++i)
+ {
+ marshal_VkVertexInputAttributeDescription(vkStream, (const VkVertexInputAttributeDescription*)(forMarshaling->pVertexAttributeDescriptions + i));
+ }
+}
+
+void unmarshal_VkPipelineVertexInputStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineVertexInputStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineVertexInputStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineVertexInputStateCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->vertexBindingDescriptionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDescriptions, forUnmarshaling->vertexBindingDescriptionCount * sizeof(const VkVertexInputBindingDescription));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDescriptionCount; ++i)
+ {
+ unmarshal_VkVertexInputBindingDescription(vkStream, (VkVertexInputBindingDescription*)(forUnmarshaling->pVertexBindingDescriptions + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->vertexAttributeDescriptionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pVertexAttributeDescriptions, forUnmarshaling->vertexAttributeDescriptionCount * sizeof(const VkVertexInputAttributeDescription));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexAttributeDescriptionCount; ++i)
+ {
+ unmarshal_VkVertexInputAttributeDescription(vkStream, (VkVertexInputAttributeDescription*)(forUnmarshaling->pVertexAttributeDescriptions + i));
+ }
+}
+
+void marshal_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineInputAssemblyStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineInputAssemblyStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineInputAssemblyStateCreateFlags));
+ vkStream->write((VkPrimitiveTopology*)&forMarshaling->topology, sizeof(VkPrimitiveTopology));
+ vkStream->write((VkBool32*)&forMarshaling->primitiveRestartEnable, sizeof(VkBool32));
+}
+
+void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineInputAssemblyStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineInputAssemblyStateCreateFlags));
+ vkStream->read((VkPrimitiveTopology*)&forUnmarshaling->topology, sizeof(VkPrimitiveTopology));
+ vkStream->read((VkBool32*)&forUnmarshaling->primitiveRestartEnable, sizeof(VkBool32));
+}
+
+void marshal_VkPipelineTessellationStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineTessellationStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineTessellationStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineTessellationStateCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->patchControlPoints, sizeof(uint32_t));
+}
+
+void unmarshal_VkPipelineTessellationStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineTessellationStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineTessellationStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineTessellationStateCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->patchControlPoints, sizeof(uint32_t));
+}
+
+void marshal_VkViewport(
+ VulkanStream* vkStream,
+ const VkViewport* forMarshaling)
+{
+ vkStream->write((float*)&forMarshaling->x, sizeof(float));
+ vkStream->write((float*)&forMarshaling->y, sizeof(float));
+ vkStream->write((float*)&forMarshaling->width, sizeof(float));
+ vkStream->write((float*)&forMarshaling->height, sizeof(float));
+ vkStream->write((float*)&forMarshaling->minDepth, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxDepth, sizeof(float));
+}
+
+void unmarshal_VkViewport(
+ VulkanStream* vkStream,
+ VkViewport* forUnmarshaling)
+{
+ vkStream->read((float*)&forUnmarshaling->x, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->y, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->width, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->height, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->minDepth, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxDepth, sizeof(float));
+}
+
+void marshal_VkOffset2D(
+ VulkanStream* vkStream,
+ const VkOffset2D* forMarshaling)
+{
+ vkStream->write((int32_t*)&forMarshaling->x, sizeof(int32_t));
+ vkStream->write((int32_t*)&forMarshaling->y, sizeof(int32_t));
+}
+
+void unmarshal_VkOffset2D(
+ VulkanStream* vkStream,
+ VkOffset2D* forUnmarshaling)
+{
+ vkStream->read((int32_t*)&forUnmarshaling->x, sizeof(int32_t));
+ vkStream->read((int32_t*)&forUnmarshaling->y, sizeof(int32_t));
+}
+
+void marshal_VkExtent2D(
+ VulkanStream* vkStream,
+ const VkExtent2D* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
+}
+
+void unmarshal_VkExtent2D(
+ VulkanStream* vkStream,
+ VkExtent2D* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
+}
+
+void marshal_VkRect2D(
+ VulkanStream* vkStream,
+ const VkRect2D* forMarshaling)
+{
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->offset));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->extent));
+}
+
+void unmarshal_VkRect2D(
+ VulkanStream* vkStream,
+ VkRect2D* forUnmarshaling)
+{
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->offset));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->extent));
+}
+
+void marshal_VkPipelineViewportStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineViewportStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineViewportStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineViewportStateCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->write((const VkViewport**)&forMarshaling->pViewports, sizeof(const VkViewport*));
+ if (forMarshaling->pViewports)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
+ {
+ marshal_VkViewport(vkStream, (const VkViewport*)(forMarshaling->pViewports + i));
+ }
+ }
+ vkStream->write((uint32_t*)&forMarshaling->scissorCount, sizeof(uint32_t));
+ vkStream->write((const VkRect2D**)&forMarshaling->pScissors, sizeof(const VkRect2D*));
+ if (forMarshaling->pScissors)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->scissorCount; ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pScissors + i));
+ }
+ }
+}
+
+void unmarshal_VkPipelineViewportStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineViewportStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineViewportStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineViewportStateCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->read((VkViewport**)&forUnmarshaling->pViewports, sizeof(const VkViewport*));
+ if (forUnmarshaling->pViewports)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pViewports, forUnmarshaling->viewportCount * sizeof(const VkViewport));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->viewportCount; ++i)
+ {
+ unmarshal_VkViewport(vkStream, (VkViewport*)(forUnmarshaling->pViewports + i));
+ }
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->scissorCount, sizeof(uint32_t));
+ vkStream->read((VkRect2D**)&forUnmarshaling->pScissors, sizeof(const VkRect2D*));
+ if (forUnmarshaling->pScissors)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pScissors, forUnmarshaling->scissorCount * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->scissorCount; ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pScissors + i));
+ }
+ }
+}
+
+void marshal_VkPipelineRasterizationStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineRasterizationStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineRasterizationStateCreateFlags));
+ vkStream->write((VkBool32*)&forMarshaling->depthClampEnable, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->rasterizerDiscardEnable, sizeof(VkBool32));
+ vkStream->write((VkPolygonMode*)&forMarshaling->polygonMode, sizeof(VkPolygonMode));
+ vkStream->write((VkCullModeFlags*)&forMarshaling->cullMode, sizeof(VkCullModeFlags));
+ vkStream->write((VkFrontFace*)&forMarshaling->frontFace, sizeof(VkFrontFace));
+ vkStream->write((VkBool32*)&forMarshaling->depthBiasEnable, sizeof(VkBool32));
+ vkStream->write((float*)&forMarshaling->depthBiasConstantFactor, sizeof(float));
+ vkStream->write((float*)&forMarshaling->depthBiasClamp, sizeof(float));
+ vkStream->write((float*)&forMarshaling->depthBiasSlopeFactor, sizeof(float));
+ vkStream->write((float*)&forMarshaling->lineWidth, sizeof(float));
+}
+
+void unmarshal_VkPipelineRasterizationStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineRasterizationStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineRasterizationStateCreateFlags));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthClampEnable, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->rasterizerDiscardEnable, sizeof(VkBool32));
+ vkStream->read((VkPolygonMode*)&forUnmarshaling->polygonMode, sizeof(VkPolygonMode));
+ vkStream->read((VkCullModeFlags*)&forUnmarshaling->cullMode, sizeof(VkCullModeFlags));
+ vkStream->read((VkFrontFace*)&forUnmarshaling->frontFace, sizeof(VkFrontFace));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthBiasEnable, sizeof(VkBool32));
+ vkStream->read((float*)&forUnmarshaling->depthBiasConstantFactor, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->depthBiasClamp, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->depthBiasSlopeFactor, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->lineWidth, sizeof(float));
+}
+
+void marshal_VkPipelineMultisampleStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineMultisampleStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineMultisampleStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineMultisampleStateCreateFlags));
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->rasterizationSamples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkBool32*)&forMarshaling->sampleShadingEnable, sizeof(VkBool32));
+ vkStream->write((float*)&forMarshaling->minSampleShading, sizeof(float));
+ vkStream->write((const VkSampleMask**)&forMarshaling->pSampleMask, sizeof(const VkSampleMask*));
+ if (forMarshaling->pSampleMask)
+ {
+ vkStream->write((const VkSampleMask*)forMarshaling->pSampleMask, (((forMarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
+ }
+ vkStream->write((VkBool32*)&forMarshaling->alphaToCoverageEnable, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->alphaToOneEnable, sizeof(VkBool32));
+}
+
+void unmarshal_VkPipelineMultisampleStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineMultisampleStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineMultisampleStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineMultisampleStateCreateFlags));
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->rasterizationSamples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkBool32*)&forUnmarshaling->sampleShadingEnable, sizeof(VkBool32));
+ vkStream->read((float*)&forUnmarshaling->minSampleShading, sizeof(float));
+ vkStream->read((VkSampleMask**)&forUnmarshaling->pSampleMask, sizeof(const VkSampleMask*));
+ if (forUnmarshaling->pSampleMask)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pSampleMask, (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
+ vkStream->read((VkSampleMask*)forUnmarshaling->pSampleMask, (((forUnmarshaling->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask));
+ }
+ vkStream->read((VkBool32*)&forUnmarshaling->alphaToCoverageEnable, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->alphaToOneEnable, sizeof(VkBool32));
+}
+
+void marshal_VkStencilOpState(
+ VulkanStream* vkStream,
+ const VkStencilOpState* forMarshaling)
+{
+ vkStream->write((VkStencilOp*)&forMarshaling->failOp, sizeof(VkStencilOp));
+ vkStream->write((VkStencilOp*)&forMarshaling->passOp, sizeof(VkStencilOp));
+ vkStream->write((VkStencilOp*)&forMarshaling->depthFailOp, sizeof(VkStencilOp));
+ vkStream->write((VkCompareOp*)&forMarshaling->compareOp, sizeof(VkCompareOp));
+ vkStream->write((uint32_t*)&forMarshaling->compareMask, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->writeMask, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->reference, sizeof(uint32_t));
+}
+
+void unmarshal_VkStencilOpState(
+ VulkanStream* vkStream,
+ VkStencilOpState* forUnmarshaling)
+{
+ vkStream->read((VkStencilOp*)&forUnmarshaling->failOp, sizeof(VkStencilOp));
+ vkStream->read((VkStencilOp*)&forUnmarshaling->passOp, sizeof(VkStencilOp));
+ vkStream->read((VkStencilOp*)&forUnmarshaling->depthFailOp, sizeof(VkStencilOp));
+ vkStream->read((VkCompareOp*)&forUnmarshaling->compareOp, sizeof(VkCompareOp));
+ vkStream->read((uint32_t*)&forUnmarshaling->compareMask, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->writeMask, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->reference, sizeof(uint32_t));
+}
+
+void marshal_VkPipelineDepthStencilStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineDepthStencilStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineDepthStencilStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineDepthStencilStateCreateFlags));
+ vkStream->write((VkBool32*)&forMarshaling->depthTestEnable, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->depthWriteEnable, sizeof(VkBool32));
+ vkStream->write((VkCompareOp*)&forMarshaling->depthCompareOp, sizeof(VkCompareOp));
+ vkStream->write((VkBool32*)&forMarshaling->depthBoundsTestEnable, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->stencilTestEnable, sizeof(VkBool32));
+ marshal_VkStencilOpState(vkStream, (VkStencilOpState*)(&forMarshaling->front));
+ marshal_VkStencilOpState(vkStream, (VkStencilOpState*)(&forMarshaling->back));
+ vkStream->write((float*)&forMarshaling->minDepthBounds, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxDepthBounds, sizeof(float));
+}
+
+void unmarshal_VkPipelineDepthStencilStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineDepthStencilStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineDepthStencilStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineDepthStencilStateCreateFlags));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthTestEnable, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthWriteEnable, sizeof(VkBool32));
+ vkStream->read((VkCompareOp*)&forUnmarshaling->depthCompareOp, sizeof(VkCompareOp));
+ vkStream->read((VkBool32*)&forUnmarshaling->depthBoundsTestEnable, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->stencilTestEnable, sizeof(VkBool32));
+ unmarshal_VkStencilOpState(vkStream, (VkStencilOpState*)(&forUnmarshaling->front));
+ unmarshal_VkStencilOpState(vkStream, (VkStencilOpState*)(&forUnmarshaling->back));
+ vkStream->read((float*)&forUnmarshaling->minDepthBounds, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxDepthBounds, sizeof(float));
+}
+
+void marshal_VkPipelineColorBlendAttachmentState(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendAttachmentState* forMarshaling)
+{
+ vkStream->write((VkBool32*)&forMarshaling->blendEnable, sizeof(VkBool32));
+ vkStream->write((VkBlendFactor*)&forMarshaling->srcColorBlendFactor, sizeof(VkBlendFactor));
+ vkStream->write((VkBlendFactor*)&forMarshaling->dstColorBlendFactor, sizeof(VkBlendFactor));
+ vkStream->write((VkBlendOp*)&forMarshaling->colorBlendOp, sizeof(VkBlendOp));
+ vkStream->write((VkBlendFactor*)&forMarshaling->srcAlphaBlendFactor, sizeof(VkBlendFactor));
+ vkStream->write((VkBlendFactor*)&forMarshaling->dstAlphaBlendFactor, sizeof(VkBlendFactor));
+ vkStream->write((VkBlendOp*)&forMarshaling->alphaBlendOp, sizeof(VkBlendOp));
+ vkStream->write((VkColorComponentFlags*)&forMarshaling->colorWriteMask, sizeof(VkColorComponentFlags));
+}
+
+void unmarshal_VkPipelineColorBlendAttachmentState(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendAttachmentState* forUnmarshaling)
+{
+ vkStream->read((VkBool32*)&forUnmarshaling->blendEnable, sizeof(VkBool32));
+ vkStream->read((VkBlendFactor*)&forUnmarshaling->srcColorBlendFactor, sizeof(VkBlendFactor));
+ vkStream->read((VkBlendFactor*)&forUnmarshaling->dstColorBlendFactor, sizeof(VkBlendFactor));
+ vkStream->read((VkBlendOp*)&forUnmarshaling->colorBlendOp, sizeof(VkBlendOp));
+ vkStream->read((VkBlendFactor*)&forUnmarshaling->srcAlphaBlendFactor, sizeof(VkBlendFactor));
+ vkStream->read((VkBlendFactor*)&forUnmarshaling->dstAlphaBlendFactor, sizeof(VkBlendFactor));
+ vkStream->read((VkBlendOp*)&forUnmarshaling->alphaBlendOp, sizeof(VkBlendOp));
+ vkStream->read((VkColorComponentFlags*)&forUnmarshaling->colorWriteMask, sizeof(VkColorComponentFlags));
+}
+
+void marshal_VkPipelineColorBlendStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineColorBlendStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineColorBlendStateCreateFlags));
+ vkStream->write((VkBool32*)&forMarshaling->logicOpEnable, sizeof(VkBool32));
+ vkStream->write((VkLogicOp*)&forMarshaling->logicOp, sizeof(VkLogicOp));
+ vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i)
+ {
+ marshal_VkPipelineColorBlendAttachmentState(vkStream, (const VkPipelineColorBlendAttachmentState*)(forMarshaling->pAttachments + i));
+ }
+ vkStream->write((float*)forMarshaling->blendConstants, 4 * sizeof(float));
+}
+
+void unmarshal_VkPipelineColorBlendStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineColorBlendStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineColorBlendStateCreateFlags));
+ vkStream->read((VkBool32*)&forUnmarshaling->logicOpEnable, sizeof(VkBool32));
+ vkStream->read((VkLogicOp*)&forUnmarshaling->logicOp, sizeof(VkLogicOp));
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkPipelineColorBlendAttachmentState));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i)
+ {
+ unmarshal_VkPipelineColorBlendAttachmentState(vkStream, (VkPipelineColorBlendAttachmentState*)(forUnmarshaling->pAttachments + i));
+ }
+ vkStream->read((float*)forUnmarshaling->blendConstants, 4 * sizeof(float));
+}
+
+void marshal_VkPipelineDynamicStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineDynamicStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineDynamicStateCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineDynamicStateCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->dynamicStateCount, sizeof(uint32_t));
+ vkStream->write((const VkDynamicState*)forMarshaling->pDynamicStates, forMarshaling->dynamicStateCount * sizeof(const VkDynamicState));
+}
+
+void unmarshal_VkPipelineDynamicStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineDynamicStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineDynamicStateCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineDynamicStateCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->dynamicStateCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDynamicStates, forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
+ vkStream->read((VkDynamicState*)forUnmarshaling->pDynamicStates, forUnmarshaling->dynamicStateCount * sizeof(const VkDynamicState));
+}
+
+void marshal_VkGraphicsPipelineCreateInfo(
+ VulkanStream* vkStream,
+ const VkGraphicsPipelineCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->stageCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->stageCount; ++i)
+ {
+ marshal_VkPipelineShaderStageCreateInfo(vkStream, (const VkPipelineShaderStageCreateInfo*)(forMarshaling->pStages + i));
+ }
+ marshal_VkPipelineVertexInputStateCreateInfo(vkStream, (const VkPipelineVertexInputStateCreateInfo*)(forMarshaling->pVertexInputState));
+ marshal_VkPipelineInputAssemblyStateCreateInfo(vkStream, (const VkPipelineInputAssemblyStateCreateInfo*)(forMarshaling->pInputAssemblyState));
+ vkStream->write((const VkPipelineTessellationStateCreateInfo**)&forMarshaling->pTessellationState, sizeof(const VkPipelineTessellationStateCreateInfo*));
+ if (forMarshaling->pTessellationState)
+ {
+ marshal_VkPipelineTessellationStateCreateInfo(vkStream, (const VkPipelineTessellationStateCreateInfo*)(forMarshaling->pTessellationState));
+ }
+ vkStream->write((const VkPipelineViewportStateCreateInfo**)&forMarshaling->pViewportState, sizeof(const VkPipelineViewportStateCreateInfo*));
+ if (forMarshaling->pViewportState)
+ {
+ marshal_VkPipelineViewportStateCreateInfo(vkStream, (const VkPipelineViewportStateCreateInfo*)(forMarshaling->pViewportState));
+ }
+ marshal_VkPipelineRasterizationStateCreateInfo(vkStream, (const VkPipelineRasterizationStateCreateInfo*)(forMarshaling->pRasterizationState));
+ vkStream->write((const VkPipelineMultisampleStateCreateInfo**)&forMarshaling->pMultisampleState, sizeof(const VkPipelineMultisampleStateCreateInfo*));
+ if (forMarshaling->pMultisampleState)
+ {
+ marshal_VkPipelineMultisampleStateCreateInfo(vkStream, (const VkPipelineMultisampleStateCreateInfo*)(forMarshaling->pMultisampleState));
+ }
+ vkStream->write((const VkPipelineDepthStencilStateCreateInfo**)&forMarshaling->pDepthStencilState, sizeof(const VkPipelineDepthStencilStateCreateInfo*));
+ if (forMarshaling->pDepthStencilState)
+ {
+ marshal_VkPipelineDepthStencilStateCreateInfo(vkStream, (const VkPipelineDepthStencilStateCreateInfo*)(forMarshaling->pDepthStencilState));
+ }
+ vkStream->write((const VkPipelineColorBlendStateCreateInfo**)&forMarshaling->pColorBlendState, sizeof(const VkPipelineColorBlendStateCreateInfo*));
+ if (forMarshaling->pColorBlendState)
+ {
+ marshal_VkPipelineColorBlendStateCreateInfo(vkStream, (const VkPipelineColorBlendStateCreateInfo*)(forMarshaling->pColorBlendState));
+ }
+ vkStream->write((const VkPipelineDynamicStateCreateInfo**)&forMarshaling->pDynamicState, sizeof(const VkPipelineDynamicStateCreateInfo*));
+ if (forMarshaling->pDynamicState)
+ {
+ marshal_VkPipelineDynamicStateCreateInfo(vkStream, (const VkPipelineDynamicStateCreateInfo*)(forMarshaling->pDynamicState));
+ }
+ vkStream->write((VkPipelineLayout*)&forMarshaling->layout, sizeof(VkPipelineLayout));
+ vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
+ vkStream->write((VkPipeline*)&forMarshaling->basePipelineHandle, sizeof(VkPipeline));
+ vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
+}
+
+void unmarshal_VkGraphicsPipelineCreateInfo(
+ VulkanStream* vkStream,
+ VkGraphicsPipelineCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->stageCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pStages, forUnmarshaling->stageCount * sizeof(const VkPipelineShaderStageCreateInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->stageCount; ++i)
+ {
+ unmarshal_VkPipelineShaderStageCreateInfo(vkStream, (VkPipelineShaderStageCreateInfo*)(forUnmarshaling->pStages + i));
+ }
+ vkStream->alloc((void**)&forUnmarshaling->pVertexInputState, sizeof(const VkPipelineVertexInputStateCreateInfo));
+ unmarshal_VkPipelineVertexInputStateCreateInfo(vkStream, (VkPipelineVertexInputStateCreateInfo*)(forUnmarshaling->pVertexInputState));
+ vkStream->alloc((void**)&forUnmarshaling->pInputAssemblyState, sizeof(const VkPipelineInputAssemblyStateCreateInfo));
+ unmarshal_VkPipelineInputAssemblyStateCreateInfo(vkStream, (VkPipelineInputAssemblyStateCreateInfo*)(forUnmarshaling->pInputAssemblyState));
+ vkStream->read((VkPipelineTessellationStateCreateInfo**)&forUnmarshaling->pTessellationState, sizeof(const VkPipelineTessellationStateCreateInfo*));
+ if (forUnmarshaling->pTessellationState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pTessellationState, sizeof(const VkPipelineTessellationStateCreateInfo));
+ unmarshal_VkPipelineTessellationStateCreateInfo(vkStream, (VkPipelineTessellationStateCreateInfo*)(forUnmarshaling->pTessellationState));
+ }
+ vkStream->read((VkPipelineViewportStateCreateInfo**)&forUnmarshaling->pViewportState, sizeof(const VkPipelineViewportStateCreateInfo*));
+ if (forUnmarshaling->pViewportState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pViewportState, sizeof(const VkPipelineViewportStateCreateInfo));
+ unmarshal_VkPipelineViewportStateCreateInfo(vkStream, (VkPipelineViewportStateCreateInfo*)(forUnmarshaling->pViewportState));
+ }
+ vkStream->alloc((void**)&forUnmarshaling->pRasterizationState, sizeof(const VkPipelineRasterizationStateCreateInfo));
+ unmarshal_VkPipelineRasterizationStateCreateInfo(vkStream, (VkPipelineRasterizationStateCreateInfo*)(forUnmarshaling->pRasterizationState));
+ vkStream->read((VkPipelineMultisampleStateCreateInfo**)&forUnmarshaling->pMultisampleState, sizeof(const VkPipelineMultisampleStateCreateInfo*));
+ if (forUnmarshaling->pMultisampleState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pMultisampleState, sizeof(const VkPipelineMultisampleStateCreateInfo));
+ unmarshal_VkPipelineMultisampleStateCreateInfo(vkStream, (VkPipelineMultisampleStateCreateInfo*)(forUnmarshaling->pMultisampleState));
+ }
+ vkStream->read((VkPipelineDepthStencilStateCreateInfo**)&forUnmarshaling->pDepthStencilState, sizeof(const VkPipelineDepthStencilStateCreateInfo*));
+ if (forUnmarshaling->pDepthStencilState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pDepthStencilState, sizeof(const VkPipelineDepthStencilStateCreateInfo));
+ unmarshal_VkPipelineDepthStencilStateCreateInfo(vkStream, (VkPipelineDepthStencilStateCreateInfo*)(forUnmarshaling->pDepthStencilState));
+ }
+ vkStream->read((VkPipelineColorBlendStateCreateInfo**)&forUnmarshaling->pColorBlendState, sizeof(const VkPipelineColorBlendStateCreateInfo*));
+ if (forUnmarshaling->pColorBlendState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pColorBlendState, sizeof(const VkPipelineColorBlendStateCreateInfo));
+ unmarshal_VkPipelineColorBlendStateCreateInfo(vkStream, (VkPipelineColorBlendStateCreateInfo*)(forUnmarshaling->pColorBlendState));
+ }
+ vkStream->read((VkPipelineDynamicStateCreateInfo**)&forUnmarshaling->pDynamicState, sizeof(const VkPipelineDynamicStateCreateInfo*));
+ if (forUnmarshaling->pDynamicState)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pDynamicState, sizeof(const VkPipelineDynamicStateCreateInfo));
+ unmarshal_VkPipelineDynamicStateCreateInfo(vkStream, (VkPipelineDynamicStateCreateInfo*)(forUnmarshaling->pDynamicState));
+ }
+ vkStream->read((VkPipelineLayout*)&forUnmarshaling->layout, sizeof(VkPipelineLayout));
+ vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
+ vkStream->read((VkPipeline*)&forUnmarshaling->basePipelineHandle, sizeof(VkPipeline));
+ vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
+}
+
+VkResult marshal_vkCreateGraphicsPipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkGraphicsPipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+ {
+ marshal_VkGraphicsPipelineCreateInfo(vkStream, (const VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
+ }
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+ VkResult marshal_vkCreateGraphicsPipelines_VkResult_return;
+ vkStream->read(&marshal_vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateGraphicsPipelines_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateGraphicsPipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkGraphicsPipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->read((uint32_t*)&createInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pCreateInfos, ((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
+ for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+ {
+ unmarshal_VkGraphicsPipelineCreateInfo(vkStream, (VkGraphicsPipelineCreateInfo*)(pCreateInfos + i));
+ }
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+ VkResult unmarshal_vkCreateGraphicsPipelines_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateGraphicsPipelines_VkResult_return;
+}
+
+void marshal_VkComputePipelineCreateInfo(
+ VulkanStream* vkStream,
+ const VkComputePipelineCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineCreateFlags));
+ marshal_VkPipelineShaderStageCreateInfo(vkStream, (VkPipelineShaderStageCreateInfo*)(&forMarshaling->stage));
+ vkStream->write((VkPipelineLayout*)&forMarshaling->layout, sizeof(VkPipelineLayout));
+ vkStream->write((VkPipeline*)&forMarshaling->basePipelineHandle, sizeof(VkPipeline));
+ vkStream->write((int32_t*)&forMarshaling->basePipelineIndex, sizeof(int32_t));
+}
+
+void unmarshal_VkComputePipelineCreateInfo(
+ VulkanStream* vkStream,
+ VkComputePipelineCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineCreateFlags));
+ unmarshal_VkPipelineShaderStageCreateInfo(vkStream, (VkPipelineShaderStageCreateInfo*)(&forUnmarshaling->stage));
+ vkStream->read((VkPipelineLayout*)&forUnmarshaling->layout, sizeof(VkPipelineLayout));
+ vkStream->read((VkPipeline*)&forUnmarshaling->basePipelineHandle, sizeof(VkPipeline));
+ vkStream->read((int32_t*)&forUnmarshaling->basePipelineIndex, sizeof(int32_t));
+}
+
+VkResult marshal_vkCreateComputePipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkComputePipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->write((uint32_t*)&createInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+ {
+ marshal_VkComputePipelineCreateInfo(vkStream, (const VkComputePipelineCreateInfo*)(pCreateInfos + i));
+ }
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+ VkResult marshal_vkCreateComputePipelines_VkResult_return;
+ vkStream->read(&marshal_vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateComputePipelines_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateComputePipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkComputePipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineCache*)&pipelineCache, sizeof(VkPipelineCache));
+ vkStream->read((uint32_t*)&createInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pCreateInfos, ((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
+ for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
+ {
+ unmarshal_VkComputePipelineCreateInfo(vkStream, (VkComputePipelineCreateInfo*)(pCreateInfos + i));
+ }
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkPipeline*)pPipelines, ((createInfoCount)) * sizeof(VkPipeline));
+ VkResult unmarshal_vkCreateComputePipelines_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateComputePipelines_VkResult_return;
+}
+
+void marshal_vkDestroyPipeline(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyPipeline(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkPushConstantRange(
+ VulkanStream* vkStream,
+ const VkPushConstantRange* forMarshaling)
+{
+ vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->write((uint32_t*)&forMarshaling->offset, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->size, sizeof(uint32_t));
+}
+
+void unmarshal_VkPushConstantRange(
+ VulkanStream* vkStream,
+ VkPushConstantRange* forUnmarshaling)
+{
+ vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->offset, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->size, sizeof(uint32_t));
+}
+
+void marshal_VkPipelineLayoutCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineLayoutCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineLayoutCreateFlags*)&forMarshaling->flags, sizeof(VkPipelineLayoutCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->setLayoutCount, sizeof(uint32_t));
+ vkStream->write((const VkDescriptorSetLayout*)forMarshaling->pSetLayouts, forMarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+ vkStream->write((uint32_t*)&forMarshaling->pushConstantRangeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->pushConstantRangeCount; ++i)
+ {
+ marshal_VkPushConstantRange(vkStream, (const VkPushConstantRange*)(forMarshaling->pPushConstantRanges + i));
+ }
+}
+
+void unmarshal_VkPipelineLayoutCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineLayoutCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineLayoutCreateFlags*)&forUnmarshaling->flags, sizeof(VkPipelineLayoutCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->setLayoutCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSetLayouts, forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+ vkStream->read((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->setLayoutCount * sizeof(const VkDescriptorSetLayout));
+ vkStream->read((uint32_t*)&forUnmarshaling->pushConstantRangeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPushConstantRanges, forUnmarshaling->pushConstantRangeCount * sizeof(const VkPushConstantRange));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->pushConstantRangeCount; ++i)
+ {
+ unmarshal_VkPushConstantRange(vkStream, (VkPushConstantRange*)(forUnmarshaling->pPushConstantRanges + i));
+ }
+}
+
+VkResult marshal_vkCreatePipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineLayout* pPipelineLayout)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkPipelineLayoutCreateInfo(vkStream, (const VkPipelineLayoutCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+ VkResult marshal_vkCreatePipelineLayout_VkResult_return;
+ vkStream->read(&marshal_vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreatePipelineLayout_VkResult_return;
+}
+
+VkResult unmarshal_vkCreatePipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineLayout* pPipelineLayout)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkPipelineLayoutCreateInfo));
+ unmarshal_VkPipelineLayoutCreateInfo(vkStream, (VkPipelineLayoutCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkPipelineLayout*)pPipelineLayout, sizeof(VkPipelineLayout));
+ VkResult unmarshal_vkCreatePipelineLayout_VkResult_return;
+ vkStream->write(&unmarshal_vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreatePipelineLayout_VkResult_return;
+}
+
+void marshal_vkDestroyPipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineLayout pipelineLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyPipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineLayout pipelineLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipelineLayout*)&pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkSamplerCreateInfo(
+ VulkanStream* vkStream,
+ const VkSamplerCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSamplerCreateFlags*)&forMarshaling->flags, sizeof(VkSamplerCreateFlags));
+ vkStream->write((VkFilter*)&forMarshaling->magFilter, sizeof(VkFilter));
+ vkStream->write((VkFilter*)&forMarshaling->minFilter, sizeof(VkFilter));
+ vkStream->write((VkSamplerMipmapMode*)&forMarshaling->mipmapMode, sizeof(VkSamplerMipmapMode));
+ vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeU, sizeof(VkSamplerAddressMode));
+ vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeV, sizeof(VkSamplerAddressMode));
+ vkStream->write((VkSamplerAddressMode*)&forMarshaling->addressModeW, sizeof(VkSamplerAddressMode));
+ vkStream->write((float*)&forMarshaling->mipLodBias, sizeof(float));
+ vkStream->write((VkBool32*)&forMarshaling->anisotropyEnable, sizeof(VkBool32));
+ vkStream->write((float*)&forMarshaling->maxAnisotropy, sizeof(float));
+ vkStream->write((VkBool32*)&forMarshaling->compareEnable, sizeof(VkBool32));
+ vkStream->write((VkCompareOp*)&forMarshaling->compareOp, sizeof(VkCompareOp));
+ vkStream->write((float*)&forMarshaling->minLod, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxLod, sizeof(float));
+ vkStream->write((VkBorderColor*)&forMarshaling->borderColor, sizeof(VkBorderColor));
+ vkStream->write((VkBool32*)&forMarshaling->unnormalizedCoordinates, sizeof(VkBool32));
+}
+
+void unmarshal_VkSamplerCreateInfo(
+ VulkanStream* vkStream,
+ VkSamplerCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSamplerCreateFlags*)&forUnmarshaling->flags, sizeof(VkSamplerCreateFlags));
+ vkStream->read((VkFilter*)&forUnmarshaling->magFilter, sizeof(VkFilter));
+ vkStream->read((VkFilter*)&forUnmarshaling->minFilter, sizeof(VkFilter));
+ vkStream->read((VkSamplerMipmapMode*)&forUnmarshaling->mipmapMode, sizeof(VkSamplerMipmapMode));
+ vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeU, sizeof(VkSamplerAddressMode));
+ vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeV, sizeof(VkSamplerAddressMode));
+ vkStream->read((VkSamplerAddressMode*)&forUnmarshaling->addressModeW, sizeof(VkSamplerAddressMode));
+ vkStream->read((float*)&forUnmarshaling->mipLodBias, sizeof(float));
+ vkStream->read((VkBool32*)&forUnmarshaling->anisotropyEnable, sizeof(VkBool32));
+ vkStream->read((float*)&forUnmarshaling->maxAnisotropy, sizeof(float));
+ vkStream->read((VkBool32*)&forUnmarshaling->compareEnable, sizeof(VkBool32));
+ vkStream->read((VkCompareOp*)&forUnmarshaling->compareOp, sizeof(VkCompareOp));
+ vkStream->read((float*)&forUnmarshaling->minLod, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxLod, sizeof(float));
+ vkStream->read((VkBorderColor*)&forUnmarshaling->borderColor, sizeof(VkBorderColor));
+ vkStream->read((VkBool32*)&forUnmarshaling->unnormalizedCoordinates, sizeof(VkBool32));
+}
+
+VkResult marshal_vkCreateSampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSampler* pSampler)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSamplerCreateInfo(vkStream, (const VkSamplerCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSampler*)pSampler, sizeof(VkSampler));
+ VkResult marshal_vkCreateSampler_VkResult_return;
+ vkStream->read(&marshal_vkCreateSampler_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSampler_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSampler* pSampler)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerCreateInfo));
+ unmarshal_VkSamplerCreateInfo(vkStream, (VkSamplerCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSampler*)pSampler, sizeof(VkSampler));
+ VkResult unmarshal_vkCreateSampler_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSampler_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSampler_VkResult_return;
+}
+
+void marshal_vkDestroySampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSampler sampler,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSampler*)&sampler, sizeof(VkSampler));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSampler sampler,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSampler*)&sampler, sizeof(VkSampler));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkDescriptorSetLayoutBinding(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutBinding* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
+ vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->write((const VkSampler**)&forMarshaling->pImmutableSamplers, sizeof(const VkSampler*));
+ if (forMarshaling->pImmutableSamplers)
+ {
+ vkStream->write((const VkSampler*)forMarshaling->pImmutableSamplers, forMarshaling->descriptorCount * sizeof(const VkSampler));
+ }
+}
+
+void unmarshal_VkDescriptorSetLayoutBinding(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutBinding* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
+ vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->read((VkSampler**)&forUnmarshaling->pImmutableSamplers, sizeof(const VkSampler*));
+ if (forUnmarshaling->pImmutableSamplers)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pImmutableSamplers, forUnmarshaling->descriptorCount * sizeof(const VkSampler));
+ vkStream->read((VkSampler*)forUnmarshaling->pImmutableSamplers, forUnmarshaling->descriptorCount * sizeof(const VkSampler));
+ }
+}
+
+void marshal_VkDescriptorSetLayoutCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDescriptorSetLayoutCreateFlags*)&forMarshaling->flags, sizeof(VkDescriptorSetLayoutCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->bindingCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->bindingCount; ++i)
+ {
+ marshal_VkDescriptorSetLayoutBinding(vkStream, (const VkDescriptorSetLayoutBinding*)(forMarshaling->pBindings + i));
+ }
+}
+
+void unmarshal_VkDescriptorSetLayoutCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDescriptorSetLayoutCreateFlags*)&forUnmarshaling->flags, sizeof(VkDescriptorSetLayoutCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->bindingCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBindings, forUnmarshaling->bindingCount * sizeof(const VkDescriptorSetLayoutBinding));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->bindingCount; ++i)
+ {
+ unmarshal_VkDescriptorSetLayoutBinding(vkStream, (VkDescriptorSetLayoutBinding*)(forUnmarshaling->pBindings + i));
+ }
+}
+
+VkResult marshal_vkCreateDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorSetLayout* pSetLayout)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+ VkResult marshal_vkCreateDescriptorSetLayout_VkResult_return;
+ vkStream->read(&marshal_vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDescriptorSetLayout_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorSetLayout* pSetLayout)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
+ unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDescriptorSetLayout*)pSetLayout, sizeof(VkDescriptorSetLayout));
+ VkResult unmarshal_vkCreateDescriptorSetLayout_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDescriptorSetLayout_VkResult_return;
+}
+
+void marshal_vkDestroyDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSetLayout descriptorSetLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSetLayout descriptorSetLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorSetLayout*)&descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkDescriptorPoolSize(
+ VulkanStream* vkStream,
+ const VkDescriptorPoolSize* forMarshaling)
+{
+ vkStream->write((VkDescriptorType*)&forMarshaling->type, sizeof(VkDescriptorType));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkDescriptorPoolSize(
+ VulkanStream* vkStream,
+ VkDescriptorPoolSize* forUnmarshaling)
+{
+ vkStream->read((VkDescriptorType*)&forUnmarshaling->type, sizeof(VkDescriptorType));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
+}
+
+void marshal_VkDescriptorPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorPoolCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDescriptorPoolCreateFlags*)&forMarshaling->flags, sizeof(VkDescriptorPoolCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->maxSets, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->poolSizeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->poolSizeCount; ++i)
+ {
+ marshal_VkDescriptorPoolSize(vkStream, (const VkDescriptorPoolSize*)(forMarshaling->pPoolSizes + i));
+ }
+}
+
+void unmarshal_VkDescriptorPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorPoolCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDescriptorPoolCreateFlags*)&forUnmarshaling->flags, sizeof(VkDescriptorPoolCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSets, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->poolSizeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPoolSizes, forUnmarshaling->poolSizeCount * sizeof(const VkDescriptorPoolSize));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->poolSizeCount; ++i)
+ {
+ unmarshal_VkDescriptorPoolSize(vkStream, (VkDescriptorPoolSize*)(forUnmarshaling->pPoolSizes + i));
+ }
+}
+
+VkResult marshal_vkCreateDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorPool* pDescriptorPool)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorPoolCreateInfo(vkStream, (const VkDescriptorPoolCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+ VkResult marshal_vkCreateDescriptorPool_VkResult_return;
+ vkStream->read(&marshal_vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDescriptorPool_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorPool* pDescriptorPool)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorPoolCreateInfo));
+ unmarshal_VkDescriptorPoolCreateInfo(vkStream, (VkDescriptorPoolCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDescriptorPool*)pDescriptorPool, sizeof(VkDescriptorPool));
+ VkResult unmarshal_vkCreateDescriptorPool_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDescriptorPool_VkResult_return;
+}
+
+void marshal_vkDestroyDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkResetDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ VkDescriptorPoolResetFlags flags)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->write((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
+ VkResult marshal_vkResetDescriptorPool_VkResult_return;
+ vkStream->read(&marshal_vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
+ return marshal_vkResetDescriptorPool_VkResult_return;
+}
+
+VkResult unmarshal_vkResetDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ VkDescriptorPoolResetFlags flags)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->read((VkDescriptorPoolResetFlags*)&flags, sizeof(VkDescriptorPoolResetFlags));
+ VkResult unmarshal_vkResetDescriptorPool_VkResult_return;
+ vkStream->write(&unmarshal_vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkResetDescriptorPool_VkResult_return;
+}
+
+void marshal_VkDescriptorSetAllocateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorSetAllocateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDescriptorPool*)&forMarshaling->descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorSetCount, sizeof(uint32_t));
+ vkStream->write((const VkDescriptorSetLayout*)forMarshaling->pSetLayouts, forMarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+}
+
+void unmarshal_VkDescriptorSetAllocateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorSetAllocateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDescriptorPool*)&forUnmarshaling->descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorSetCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+ vkStream->read((VkDescriptorSetLayout*)forUnmarshaling->pSetLayouts, forUnmarshaling->descriptorSetCount * sizeof(const VkDescriptorSetLayout));
+}
+
+VkResult marshal_vkAllocateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetAllocateInfo* pAllocateInfo,
+ VkDescriptorSet* pDescriptorSets)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorSetAllocateInfo(vkStream, (const VkDescriptorSetAllocateInfo*)(pAllocateInfo));
+ vkStream->read((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+ VkResult marshal_vkAllocateDescriptorSets_VkResult_return;
+ vkStream->read(&marshal_vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
+ return marshal_vkAllocateDescriptorSets_VkResult_return;
+}
+
+VkResult unmarshal_vkAllocateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetAllocateInfo* pAllocateInfo,
+ VkDescriptorSet* pDescriptorSets)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkDescriptorSetAllocateInfo));
+ unmarshal_VkDescriptorSetAllocateInfo(vkStream, (VkDescriptorSetAllocateInfo*)(pAllocateInfo));
+ vkStream->write((VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount * sizeof(VkDescriptorSet));
+ VkResult unmarshal_vkAllocateDescriptorSets_VkResult_return;
+ vkStream->write(&unmarshal_vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAllocateDescriptorSets_VkResult_return;
+}
+
+VkResult marshal_vkFreeDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+ vkStream->write((const VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
+ if (pDescriptorSets)
+ {
+ vkStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ }
+ VkResult marshal_vkFreeDescriptorSets_VkResult_return;
+ vkStream->read(&marshal_vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
+ return marshal_vkFreeDescriptorSets_VkResult_return;
+}
+
+VkResult unmarshal_vkFreeDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorPool*)&descriptorPool, sizeof(VkDescriptorPool));
+ vkStream->read((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+ vkStream->read((VkDescriptorSet**)&pDescriptorSets, sizeof(const VkDescriptorSet*));
+ if (pDescriptorSets)
+ {
+ vkStream->alloc((void**)&pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ vkStream->read((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ }
+ VkResult unmarshal_vkFreeDescriptorSets_VkResult_return;
+ vkStream->write(&unmarshal_vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkFreeDescriptorSets_VkResult_return;
+}
+
+void marshal_VkDescriptorImageInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorImageInfo* forMarshaling)
+{
+ vkStream->write((VkSampler*)&forMarshaling->sampler, sizeof(VkSampler));
+ vkStream->write((VkImageView*)&forMarshaling->imageView, sizeof(VkImageView));
+ vkStream->write((VkImageLayout*)&forMarshaling->imageLayout, sizeof(VkImageLayout));
+}
+
+void unmarshal_VkDescriptorImageInfo(
+ VulkanStream* vkStream,
+ VkDescriptorImageInfo* forUnmarshaling)
+{
+ vkStream->read((VkSampler*)&forUnmarshaling->sampler, sizeof(VkSampler));
+ vkStream->read((VkImageView*)&forUnmarshaling->imageView, sizeof(VkImageView));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->imageLayout, sizeof(VkImageLayout));
+}
+
+void marshal_VkDescriptorBufferInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorBufferInfo* forMarshaling)
+{
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->range, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkDescriptorBufferInfo(
+ VulkanStream* vkStream,
+ VkDescriptorBufferInfo* forUnmarshaling)
+{
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->range, sizeof(VkDeviceSize));
+}
+
+void marshal_VkWriteDescriptorSet(
+ VulkanStream* vkStream,
+ const VkWriteDescriptorSet* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDescriptorSet*)&forMarshaling->dstSet, sizeof(VkDescriptorSet));
+ vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->write((const VkDescriptorImageInfo**)&forMarshaling->pImageInfo, sizeof(const VkDescriptorImageInfo*));
+ if (forMarshaling->pImageInfo)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i)
+ {
+ marshal_VkDescriptorImageInfo(vkStream, (const VkDescriptorImageInfo*)(forMarshaling->pImageInfo + i));
+ }
+ }
+ vkStream->write((const VkDescriptorBufferInfo**)&forMarshaling->pBufferInfo, sizeof(const VkDescriptorBufferInfo*));
+ if (forMarshaling->pBufferInfo)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorCount; ++i)
+ {
+ marshal_VkDescriptorBufferInfo(vkStream, (const VkDescriptorBufferInfo*)(forMarshaling->pBufferInfo + i));
+ }
+ }
+ vkStream->write((const VkBufferView**)&forMarshaling->pTexelBufferView, sizeof(const VkBufferView*));
+ if (forMarshaling->pTexelBufferView)
+ {
+ vkStream->write((const VkBufferView*)forMarshaling->pTexelBufferView, forMarshaling->descriptorCount * sizeof(const VkBufferView));
+ }
+}
+
+void unmarshal_VkWriteDescriptorSet(
+ VulkanStream* vkStream,
+ VkWriteDescriptorSet* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDescriptorSet*)&forUnmarshaling->dstSet, sizeof(VkDescriptorSet));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->read((VkDescriptorImageInfo**)&forUnmarshaling->pImageInfo, sizeof(const VkDescriptorImageInfo*));
+ if (forUnmarshaling->pImageInfo)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pImageInfo, forUnmarshaling->descriptorCount * sizeof(const VkDescriptorImageInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i)
+ {
+ unmarshal_VkDescriptorImageInfo(vkStream, (VkDescriptorImageInfo*)(forUnmarshaling->pImageInfo + i));
+ }
+ }
+ vkStream->read((VkDescriptorBufferInfo**)&forUnmarshaling->pBufferInfo, sizeof(const VkDescriptorBufferInfo*));
+ if (forUnmarshaling->pBufferInfo)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pBufferInfo, forUnmarshaling->descriptorCount * sizeof(const VkDescriptorBufferInfo));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorCount; ++i)
+ {
+ unmarshal_VkDescriptorBufferInfo(vkStream, (VkDescriptorBufferInfo*)(forUnmarshaling->pBufferInfo + i));
+ }
+ }
+ vkStream->read((VkBufferView**)&forUnmarshaling->pTexelBufferView, sizeof(const VkBufferView*));
+ if (forUnmarshaling->pTexelBufferView)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pTexelBufferView, forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
+ vkStream->read((VkBufferView*)forUnmarshaling->pTexelBufferView, forUnmarshaling->descriptorCount * sizeof(const VkBufferView));
+ }
+}
+
+void marshal_VkCopyDescriptorSet(
+ VulkanStream* vkStream,
+ const VkCopyDescriptorSet* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDescriptorSet*)&forMarshaling->srcSet, sizeof(VkDescriptorSet));
+ vkStream->write((uint32_t*)&forMarshaling->srcBinding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->srcArrayElement, sizeof(uint32_t));
+ vkStream->write((VkDescriptorSet*)&forMarshaling->dstSet, sizeof(VkDescriptorSet));
+ vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkCopyDescriptorSet(
+ VulkanStream* vkStream,
+ VkCopyDescriptorSet* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDescriptorSet*)&forUnmarshaling->srcSet, sizeof(VkDescriptorSet));
+ vkStream->read((uint32_t*)&forUnmarshaling->srcBinding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->srcArrayElement, sizeof(uint32_t));
+ vkStream->read((VkDescriptorSet*)&forUnmarshaling->dstSet, sizeof(VkDescriptorSet));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
+}
+
+void marshal_vkUpdateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites,
+ uint32_t descriptorCopyCount,
+ const VkCopyDescriptorSet* pDescriptorCopies)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+ {
+ marshal_VkWriteDescriptorSet(vkStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+ }
+ vkStream->write((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
+ {
+ marshal_VkCopyDescriptorSet(vkStream, (const VkCopyDescriptorSet*)(pDescriptorCopies + i));
+ }
+}
+
+void unmarshal_vkUpdateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites,
+ uint32_t descriptorCopyCount,
+ const VkCopyDescriptorSet* pDescriptorCopies)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDescriptorWrites, ((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+ {
+ unmarshal_VkWriteDescriptorSet(vkStream, (VkWriteDescriptorSet*)(pDescriptorWrites + i));
+ }
+ vkStream->read((uint32_t*)&descriptorCopyCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDescriptorCopies, ((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
+ {
+ unmarshal_VkCopyDescriptorSet(vkStream, (VkCopyDescriptorSet*)(pDescriptorCopies + i));
+ }
+}
+
+void marshal_VkFramebufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkFramebufferCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFramebufferCreateFlags*)&forMarshaling->flags, sizeof(VkFramebufferCreateFlags));
+ vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
+ vkStream->write((const VkImageView*)forMarshaling->pAttachments, forMarshaling->attachmentCount * sizeof(const VkImageView));
+ vkStream->write((uint32_t*)&forMarshaling->width, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->height, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->layers, sizeof(uint32_t));
+}
+
+void unmarshal_VkFramebufferCreateInfo(
+ VulkanStream* vkStream,
+ VkFramebufferCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFramebufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkFramebufferCreateFlags));
+ vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkImageView));
+ vkStream->read((VkImageView*)forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkImageView));
+ vkStream->read((uint32_t*)&forUnmarshaling->width, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->height, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->layers, sizeof(uint32_t));
+}
+
+VkResult marshal_vkCreateFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFramebufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFramebuffer* pFramebuffer)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkFramebufferCreateInfo(vkStream, (const VkFramebufferCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+ VkResult marshal_vkCreateFramebuffer_VkResult_return;
+ vkStream->read(&marshal_vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateFramebuffer_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFramebufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFramebuffer* pFramebuffer)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkFramebufferCreateInfo));
+ unmarshal_VkFramebufferCreateInfo(vkStream, (VkFramebufferCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkFramebuffer*)pFramebuffer, sizeof(VkFramebuffer));
+ VkResult unmarshal_vkCreateFramebuffer_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateFramebuffer_VkResult_return;
+}
+
+void marshal_vkDestroyFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFramebuffer framebuffer,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFramebuffer framebuffer,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkFramebuffer*)&framebuffer, sizeof(VkFramebuffer));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkAttachmentDescription(
+ VulkanStream* vkStream,
+ const VkAttachmentDescription* forMarshaling)
+{
+ vkStream->write((VkAttachmentDescriptionFlags*)&forMarshaling->flags, sizeof(VkAttachmentDescriptionFlags));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkAttachmentLoadOp*)&forMarshaling->loadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->write((VkAttachmentStoreOp*)&forMarshaling->storeOp, sizeof(VkAttachmentStoreOp));
+ vkStream->write((VkAttachmentLoadOp*)&forMarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->write((VkAttachmentStoreOp*)&forMarshaling->stencilStoreOp, sizeof(VkAttachmentStoreOp));
+ vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImageLayout*)&forMarshaling->finalLayout, sizeof(VkImageLayout));
+}
+
+void unmarshal_VkAttachmentDescription(
+ VulkanStream* vkStream,
+ VkAttachmentDescription* forUnmarshaling)
+{
+ vkStream->read((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags, sizeof(VkAttachmentDescriptionFlags));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, sizeof(VkAttachmentStoreOp));
+ vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp, sizeof(VkAttachmentStoreOp));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->finalLayout, sizeof(VkImageLayout));
+}
+
+void marshal_VkAttachmentReference(
+ VulkanStream* vkStream,
+ const VkAttachmentReference* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->attachment, sizeof(uint32_t));
+ vkStream->write((VkImageLayout*)&forMarshaling->layout, sizeof(VkImageLayout));
+}
+
+void unmarshal_VkAttachmentReference(
+ VulkanStream* vkStream,
+ VkAttachmentReference* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->attachment, sizeof(uint32_t));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->layout, sizeof(VkImageLayout));
+}
+
+void marshal_VkSubpassDescription(
+ VulkanStream* vkStream,
+ const VkSubpassDescription* forMarshaling)
+{
+ vkStream->write((VkSubpassDescriptionFlags*)&forMarshaling->flags, sizeof(VkSubpassDescriptionFlags));
+ vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((uint32_t*)&forMarshaling->inputAttachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->inputAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pInputAttachments + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pColorAttachments + i));
+ }
+ vkStream->write((const VkAttachmentReference**)&forMarshaling->pResolveAttachments, sizeof(const VkAttachmentReference*));
+ if (forMarshaling->pResolveAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pResolveAttachments + i));
+ }
+ }
+ vkStream->write((const VkAttachmentReference**)&forMarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference*));
+ if (forMarshaling->pDepthStencilAttachment)
+ {
+ marshal_VkAttachmentReference(vkStream, (const VkAttachmentReference*)(forMarshaling->pDepthStencilAttachment));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->preserveAttachmentCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pPreserveAttachments, forMarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkSubpassDescription(
+ VulkanStream* vkStream,
+ VkSubpassDescription* forUnmarshaling)
+{
+ vkStream->read((VkSubpassDescriptionFlags*)&forUnmarshaling->flags, sizeof(VkSubpassDescriptionFlags));
+ vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pInputAttachments, forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference(vkStream, (VkAttachmentReference*)(forUnmarshaling->pInputAttachments + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pColorAttachments, forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference(vkStream, (VkAttachmentReference*)(forUnmarshaling->pColorAttachments + i));
+ }
+ vkStream->read((VkAttachmentReference**)&forUnmarshaling->pResolveAttachments, sizeof(const VkAttachmentReference*));
+ if (forUnmarshaling->pResolveAttachments)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pResolveAttachments, forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference(vkStream, (VkAttachmentReference*)(forUnmarshaling->pResolveAttachments + i));
+ }
+ }
+ vkStream->read((VkAttachmentReference**)&forUnmarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference*));
+ if (forUnmarshaling->pDepthStencilAttachment)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference));
+ unmarshal_VkAttachmentReference(vkStream, (VkAttachmentReference*)(forUnmarshaling->pDepthStencilAttachment));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->preserveAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments, forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pPreserveAttachments, forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+}
+
+void marshal_VkSubpassDependency(
+ VulkanStream* vkStream,
+ const VkSubpassDependency* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->srcSubpass, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstSubpass, sizeof(uint32_t));
+ vkStream->write((VkPipelineStageFlags*)&forMarshaling->srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkPipelineStageFlags*)&forMarshaling->dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkDependencyFlags*)&forMarshaling->dependencyFlags, sizeof(VkDependencyFlags));
+}
+
+void unmarshal_VkSubpassDependency(
+ VulkanStream* vkStream,
+ VkSubpassDependency* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->srcSubpass, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstSubpass, sizeof(uint32_t));
+ vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkDependencyFlags*)&forUnmarshaling->dependencyFlags, sizeof(VkDependencyFlags));
+}
+
+void marshal_VkRenderPassCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkRenderPassCreateFlags*)&forMarshaling->flags, sizeof(VkRenderPassCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i)
+ {
+ marshal_VkAttachmentDescription(vkStream, (const VkAttachmentDescription*)(forMarshaling->pAttachments + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->subpassCount; ++i)
+ {
+ marshal_VkSubpassDescription(vkStream, (const VkSubpassDescription*)(forMarshaling->pSubpasses + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->dependencyCount; ++i)
+ {
+ marshal_VkSubpassDependency(vkStream, (const VkSubpassDependency*)(forMarshaling->pDependencies + i));
+ }
+}
+
+void unmarshal_VkRenderPassCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkRenderPassCreateFlags*)&forUnmarshaling->flags, sizeof(VkRenderPassCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentDescription(vkStream, (VkAttachmentDescription*)(forUnmarshaling->pAttachments + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSubpasses, forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i)
+ {
+ unmarshal_VkSubpassDescription(vkStream, (VkSubpassDescription*)(forUnmarshaling->pSubpasses + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDependencies, forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i)
+ {
+ unmarshal_VkSubpassDependency(vkStream, (VkSubpassDependency*)(forUnmarshaling->pDependencies + i));
+ }
+}
+
+VkResult marshal_vkCreateRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkRenderPassCreateInfo(vkStream, (const VkRenderPassCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+ VkResult marshal_vkCreateRenderPass_VkResult_return;
+ vkStream->read(&marshal_vkCreateRenderPass_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateRenderPass_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo));
+ unmarshal_VkRenderPassCreateInfo(vkStream, (VkRenderPassCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+ VkResult unmarshal_vkCreateRenderPass_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateRenderPass_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateRenderPass_VkResult_return;
+}
+
+void marshal_vkDestroyRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_vkGetRenderAreaGranularity(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ VkExtent2D* pGranularity)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(pGranularity));
+}
+
+void unmarshal_vkGetRenderAreaGranularity(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ VkExtent2D* pGranularity)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkRenderPass*)&renderPass, sizeof(VkRenderPass));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(pGranularity));
+}
+
+void marshal_VkCommandPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkCommandPoolCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkCommandPoolCreateFlags*)&forMarshaling->flags, sizeof(VkCommandPoolCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkCommandPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkCommandPoolCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkCommandPoolCreateFlags*)&forUnmarshaling->flags, sizeof(VkCommandPoolCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
+}
+
+VkResult marshal_vkCreateCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkCommandPool* pCommandPool)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkCommandPoolCreateInfo(vkStream, (const VkCommandPoolCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+ VkResult marshal_vkCreateCommandPool_VkResult_return;
+ vkStream->read(&marshal_vkCreateCommandPool_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateCommandPool_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkCommandPool* pCommandPool)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkCommandPoolCreateInfo));
+ unmarshal_VkCommandPoolCreateInfo(vkStream, (VkCommandPoolCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkCommandPool*)pCommandPool, sizeof(VkCommandPool));
+ VkResult unmarshal_vkCreateCommandPool_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateCommandPool_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateCommandPool_VkResult_return;
+}
+
+void marshal_vkDestroyCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkResetCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolResetFlags flags)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->write((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
+ VkResult marshal_vkResetCommandPool_VkResult_return;
+ vkStream->read(&marshal_vkResetCommandPool_VkResult_return, sizeof(VkResult));
+ return marshal_vkResetCommandPool_VkResult_return;
+}
+
+VkResult unmarshal_vkResetCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolResetFlags flags)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->read((VkCommandPoolResetFlags*)&flags, sizeof(VkCommandPoolResetFlags));
+ VkResult unmarshal_vkResetCommandPool_VkResult_return;
+ vkStream->write(&unmarshal_vkResetCommandPool_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkResetCommandPool_VkResult_return;
+}
+
+void marshal_VkCommandBufferAllocateInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferAllocateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkCommandPool*)&forMarshaling->commandPool, sizeof(VkCommandPool));
+ vkStream->write((VkCommandBufferLevel*)&forMarshaling->level, sizeof(VkCommandBufferLevel));
+ vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkCommandBufferAllocateInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferAllocateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkCommandPool*)&forUnmarshaling->commandPool, sizeof(VkCommandPool));
+ vkStream->read((VkCommandBufferLevel*)&forUnmarshaling->level, sizeof(VkCommandBufferLevel));
+ vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
+}
+
+VkResult marshal_vkAllocateCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandBufferAllocateInfo* pAllocateInfo,
+ VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkCommandBufferAllocateInfo(vkStream, (const VkCommandBufferAllocateInfo*)(pAllocateInfo));
+ vkStream->read((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+ VkResult marshal_vkAllocateCommandBuffers_VkResult_return;
+ vkStream->read(&marshal_vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
+ return marshal_vkAllocateCommandBuffers_VkResult_return;
+}
+
+VkResult unmarshal_vkAllocateCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandBufferAllocateInfo* pAllocateInfo,
+ VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pAllocateInfo, sizeof(const VkCommandBufferAllocateInfo));
+ unmarshal_VkCommandBufferAllocateInfo(vkStream, (VkCommandBufferAllocateInfo*)(pAllocateInfo));
+ vkStream->write((VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount * sizeof(VkCommandBuffer));
+ VkResult unmarshal_vkAllocateCommandBuffers_VkResult_return;
+ vkStream->write(&unmarshal_vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAllocateCommandBuffers_VkResult_return;
+}
+
+void marshal_vkFreeCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+ vkStream->write((const VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
+ if (pCommandBuffers)
+ {
+ vkStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+ }
+}
+
+void unmarshal_vkFreeCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->read((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+ vkStream->read((VkCommandBuffer**)&pCommandBuffers, sizeof(const VkCommandBuffer*));
+ if (pCommandBuffers)
+ {
+ vkStream->alloc((void**)&pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+ vkStream->read((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+ }
+}
+
+void marshal_VkCommandBufferInheritanceInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferInheritanceInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
+ vkStream->write((VkFramebuffer*)&forMarshaling->framebuffer, sizeof(VkFramebuffer));
+ vkStream->write((VkBool32*)&forMarshaling->occlusionQueryEnable, sizeof(VkBool32));
+ vkStream->write((VkQueryControlFlags*)&forMarshaling->queryFlags, sizeof(VkQueryControlFlags));
+ vkStream->write((VkQueryPipelineStatisticFlags*)&forMarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
+}
+
+void unmarshal_VkCommandBufferInheritanceInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferInheritanceInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
+ vkStream->read((VkFramebuffer*)&forUnmarshaling->framebuffer, sizeof(VkFramebuffer));
+ vkStream->read((VkBool32*)&forUnmarshaling->occlusionQueryEnable, sizeof(VkBool32));
+ vkStream->read((VkQueryControlFlags*)&forUnmarshaling->queryFlags, sizeof(VkQueryControlFlags));
+ vkStream->read((VkQueryPipelineStatisticFlags*)&forUnmarshaling->pipelineStatistics, sizeof(VkQueryPipelineStatisticFlags));
+}
+
+void marshal_VkCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferBeginInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkCommandBufferUsageFlags*)&forMarshaling->flags, sizeof(VkCommandBufferUsageFlags));
+ vkStream->write((const VkCommandBufferInheritanceInfo**)&forMarshaling->pInheritanceInfo, sizeof(const VkCommandBufferInheritanceInfo*));
+ if (forMarshaling->pInheritanceInfo)
+ {
+ marshal_VkCommandBufferInheritanceInfo(vkStream, (const VkCommandBufferInheritanceInfo*)(forMarshaling->pInheritanceInfo));
+ }
+}
+
+void unmarshal_VkCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferBeginInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkCommandBufferUsageFlags*)&forUnmarshaling->flags, sizeof(VkCommandBufferUsageFlags));
+ vkStream->read((VkCommandBufferInheritanceInfo**)&forUnmarshaling->pInheritanceInfo, sizeof(const VkCommandBufferInheritanceInfo*));
+ if (forUnmarshaling->pInheritanceInfo)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pInheritanceInfo, sizeof(const VkCommandBufferInheritanceInfo));
+ unmarshal_VkCommandBufferInheritanceInfo(vkStream, (VkCommandBufferInheritanceInfo*)(forUnmarshaling->pInheritanceInfo));
+ }
+}
+
+VkResult marshal_vkBeginCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCommandBufferBeginInfo* pBeginInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkCommandBufferBeginInfo(vkStream, (const VkCommandBufferBeginInfo*)(pBeginInfo));
+ VkResult marshal_vkBeginCommandBuffer_VkResult_return;
+ vkStream->read(&marshal_vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
+ return marshal_vkBeginCommandBuffer_VkResult_return;
+}
+
+VkResult unmarshal_vkBeginCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCommandBufferBeginInfo* pBeginInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pBeginInfo, sizeof(const VkCommandBufferBeginInfo));
+ unmarshal_VkCommandBufferBeginInfo(vkStream, (VkCommandBufferBeginInfo*)(pBeginInfo));
+ VkResult unmarshal_vkBeginCommandBuffer_VkResult_return;
+ vkStream->write(&unmarshal_vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBeginCommandBuffer_VkResult_return;
+}
+
+VkResult marshal_vkEndCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ VkResult marshal_vkEndCommandBuffer_VkResult_return;
+ vkStream->read(&marshal_vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
+ return marshal_vkEndCommandBuffer_VkResult_return;
+}
+
+VkResult unmarshal_vkEndCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ VkResult unmarshal_vkEndCommandBuffer_VkResult_return;
+ vkStream->write(&unmarshal_vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEndCommandBuffer_VkResult_return;
+}
+
+VkResult marshal_vkResetCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkCommandBufferResetFlags flags)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
+ VkResult marshal_vkResetCommandBuffer_VkResult_return;
+ vkStream->read(&marshal_vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
+ return marshal_vkResetCommandBuffer_VkResult_return;
+}
+
+VkResult unmarshal_vkResetCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkCommandBufferResetFlags flags)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkCommandBufferResetFlags*)&flags, sizeof(VkCommandBufferResetFlags));
+ VkResult unmarshal_vkResetCommandBuffer_VkResult_return;
+ vkStream->write(&unmarshal_vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkResetCommandBuffer_VkResult_return;
+}
+
+void marshal_vkCmdBindPipeline(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipeline pipeline)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+}
+
+void unmarshal_vkCmdBindPipeline(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipeline pipeline)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
+}
+
+void marshal_vkCmdSetViewport(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewport* pViewports)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+ {
+ marshal_VkViewport(vkStream, (const VkViewport*)(pViewports + i));
+ }
+}
+
+void unmarshal_vkCmdSetViewport(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewport* pViewports)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&firstViewport, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&viewportCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pViewports, ((viewportCount)) * sizeof(const VkViewport));
+ for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+ {
+ unmarshal_VkViewport(vkStream, (VkViewport*)(pViewports + i));
+ }
+}
+
+void marshal_vkCmdSetScissor(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstScissor,
+ uint32_t scissorCount,
+ const VkRect2D* pScissors)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&firstScissor, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&scissorCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(pScissors + i));
+ }
+}
+
+void unmarshal_vkCmdSetScissor(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstScissor,
+ uint32_t scissorCount,
+ const VkRect2D* pScissors)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&firstScissor, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&scissorCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pScissors, ((scissorCount)) * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(pScissors + i));
+ }
+}
+
+void marshal_vkCmdSetLineWidth(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float lineWidth)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((float*)&lineWidth, sizeof(float));
+}
+
+void unmarshal_vkCmdSetLineWidth(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float lineWidth)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((float*)&lineWidth, sizeof(float));
+}
+
+void marshal_vkCmdSetDepthBias(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float depthBiasConstantFactor,
+ float depthBiasClamp,
+ float depthBiasSlopeFactor)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((float*)&depthBiasConstantFactor, sizeof(float));
+ vkStream->write((float*)&depthBiasClamp, sizeof(float));
+ vkStream->write((float*)&depthBiasSlopeFactor, sizeof(float));
+}
+
+void unmarshal_vkCmdSetDepthBias(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float depthBiasConstantFactor,
+ float depthBiasClamp,
+ float depthBiasSlopeFactor)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((float*)&depthBiasConstantFactor, sizeof(float));
+ vkStream->read((float*)&depthBiasClamp, sizeof(float));
+ vkStream->read((float*)&depthBiasSlopeFactor, sizeof(float));
+}
+
+void marshal_vkCmdSetBlendConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const float blendConstants)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((const float*)&blendConstants, 4 * sizeof(const float));
+}
+
+void unmarshal_vkCmdSetBlendConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const float blendConstants)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((float*)&blendConstants, 4 * sizeof(const float));
+}
+
+void marshal_vkCmdSetDepthBounds(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float minDepthBounds,
+ float maxDepthBounds)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((float*)&minDepthBounds, sizeof(float));
+ vkStream->write((float*)&maxDepthBounds, sizeof(float));
+}
+
+void unmarshal_vkCmdSetDepthBounds(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float minDepthBounds,
+ float maxDepthBounds)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((float*)&minDepthBounds, sizeof(float));
+ vkStream->read((float*)&maxDepthBounds, sizeof(float));
+}
+
+void marshal_vkCmdSetStencilCompareMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t compareMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->write((uint32_t*)&compareMask, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdSetStencilCompareMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t compareMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->read((uint32_t*)&compareMask, sizeof(uint32_t));
+}
+
+void marshal_vkCmdSetStencilWriteMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t writeMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->write((uint32_t*)&writeMask, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdSetStencilWriteMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t writeMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->read((uint32_t*)&writeMask, sizeof(uint32_t));
+}
+
+void marshal_vkCmdSetStencilReference(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t reference)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->write((uint32_t*)&reference, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdSetStencilReference(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t reference)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkStencilFaceFlags*)&faceMask, sizeof(VkStencilFaceFlags));
+ vkStream->read((uint32_t*)&reference, sizeof(uint32_t));
+}
+
+void marshal_vkCmdBindDescriptorSets(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t firstSet,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets,
+ uint32_t dynamicOffsetCount,
+ const uint32_t* pDynamicOffsets)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->write((uint32_t*)&firstSet, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+ vkStream->write((const VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ vkStream->write((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+}
+
+void unmarshal_vkCmdBindDescriptorSets(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t firstSet,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets,
+ uint32_t dynamicOffsetCount,
+ const uint32_t* pDynamicOffsets)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->read((uint32_t*)&firstSet, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&descriptorSetCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ vkStream->read((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
+ vkStream->read((uint32_t*)&dynamicOffsetCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
+}
+
+void marshal_vkCmdBindIndexBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkIndexType indexType)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkIndexType*)&indexType, sizeof(VkIndexType));
+}
+
+void unmarshal_vkCmdBindIndexBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkIndexType indexType)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkIndexType*)&indexType, sizeof(VkIndexType));
+}
+
+void marshal_vkCmdBindVertexBuffers(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstBinding,
+ uint32_t bindingCount,
+ const VkBuffer* pBuffers,
+ const VkDeviceSize* pOffsets)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&firstBinding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&bindingCount, sizeof(uint32_t));
+ vkStream->write((const VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
+ vkStream->write((const VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
+}
+
+void unmarshal_vkCmdBindVertexBuffers(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstBinding,
+ uint32_t bindingCount,
+ const VkBuffer* pBuffers,
+ const VkDeviceSize* pOffsets)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&firstBinding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&bindingCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
+ vkStream->read((VkBuffer*)pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
+ vkStream->alloc((void**)&pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
+ vkStream->read((VkDeviceSize*)pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
+}
+
+void marshal_vkCmdDraw(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t vertexCount,
+ uint32_t instanceCount,
+ uint32_t firstVertex,
+ uint32_t firstInstance)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&vertexCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&firstVertex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDraw(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t vertexCount,
+ uint32_t instanceCount,
+ uint32_t firstVertex,
+ uint32_t firstInstance)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&vertexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&instanceCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&firstVertex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDrawIndexed(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t indexCount,
+ uint32_t instanceCount,
+ uint32_t firstIndex,
+ int32_t vertexOffset,
+ uint32_t firstInstance)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&indexCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&instanceCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&firstIndex, sizeof(uint32_t));
+ vkStream->write((int32_t*)&vertexOffset, sizeof(int32_t));
+ vkStream->write((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndexed(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t indexCount,
+ uint32_t instanceCount,
+ uint32_t firstIndex,
+ int32_t vertexOffset,
+ uint32_t firstInstance)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&indexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&instanceCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&firstIndex, sizeof(uint32_t));
+ vkStream->read((int32_t*)&vertexOffset, sizeof(int32_t));
+ vkStream->read((uint32_t*)&firstInstance, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDrawIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&drawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDrawIndexedIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&drawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndexedIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&drawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDispatch(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDispatch(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDispatchIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+}
+
+void unmarshal_vkCmdDispatchIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+}
+
+void marshal_VkBufferCopy(
+ VulkanStream* vkStream,
+ const VkBufferCopy* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->srcOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->dstOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkBufferCopy(
+ VulkanStream* vkStream,
+ VkBufferCopy* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->srcOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->dstOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+}
+
+void marshal_vkCmdCopyBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferCopy* pRegions)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkBufferCopy(vkStream, (const VkBufferCopy*)(pRegions + i));
+ }
+}
+
+void unmarshal_vkCmdCopyBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferCopy* pRegions)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferCopy));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkBufferCopy(vkStream, (VkBufferCopy*)(pRegions + i));
+ }
+}
+
+void marshal_VkImageSubresourceLayers(
+ VulkanStream* vkStream,
+ const VkImageSubresourceLayers* forMarshaling)
+{
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->write((uint32_t*)&forMarshaling->mipLevel, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkImageSubresourceLayers(
+ VulkanStream* vkStream,
+ VkImageSubresourceLayers* forUnmarshaling)
+{
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->mipLevel, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
+}
+
+void marshal_VkImageCopy(
+ VulkanStream* vkStream,
+ const VkImageCopy* forMarshaling)
+{
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
+}
+
+void unmarshal_VkImageCopy(
+ VulkanStream* vkStream,
+ VkImageCopy* forUnmarshaling)
+{
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
+}
+
+void marshal_vkCmdCopyImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageCopy* pRegions)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkImageCopy(vkStream, (const VkImageCopy*)(pRegions + i));
+ }
+}
+
+void unmarshal_vkCmdCopyImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageCopy* pRegions)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageCopy));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkImageCopy(vkStream, (VkImageCopy*)(pRegions + i));
+ }
+}
+
+void marshal_VkImageBlit(
+ VulkanStream* vkStream,
+ const VkImageBlit* forMarshaling)
+{
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->srcOffsets + i));
+ }
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(forMarshaling->dstOffsets + i));
+ }
+}
+
+void unmarshal_VkImageBlit(
+ VulkanStream* vkStream,
+ VkImageBlit* forUnmarshaling)
+{
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->srcOffsets + i));
+ }
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(forUnmarshaling->dstOffsets + i));
+ }
+}
+
+void marshal_vkCmdBlitImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageBlit* pRegions,
+ VkFilter filter)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkImageBlit(vkStream, (const VkImageBlit*)(pRegions + i));
+ }
+ vkStream->write((VkFilter*)&filter, sizeof(VkFilter));
+}
+
+void unmarshal_vkCmdBlitImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageBlit* pRegions,
+ VkFilter filter)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageBlit));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkImageBlit(vkStream, (VkImageBlit*)(pRegions + i));
+ }
+ vkStream->read((VkFilter*)&filter, sizeof(VkFilter));
+}
+
+void marshal_VkBufferImageCopy(
+ VulkanStream* vkStream,
+ const VkBufferImageCopy* forMarshaling)
+{
+ vkStream->write((VkDeviceSize*)&forMarshaling->bufferOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&forMarshaling->bufferRowLength, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->bufferImageHeight, sizeof(uint32_t));
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->imageSubresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->imageOffset));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->imageExtent));
+}
+
+void unmarshal_VkBufferImageCopy(
+ VulkanStream* vkStream,
+ VkBufferImageCopy* forUnmarshaling)
+{
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->bufferOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->bufferRowLength, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->bufferImageHeight, sizeof(uint32_t));
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->imageSubresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->imageOffset));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->imageExtent));
+}
+
+void marshal_vkCmdCopyBufferToImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+ vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkBufferImageCopy(vkStream, (const VkBufferImageCopy*)(pRegions + i));
+ }
+}
+
+void unmarshal_vkCmdCopyBufferToImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&srcBuffer, sizeof(VkBuffer));
+ vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferImageCopy));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkBufferImageCopy(vkStream, (VkBufferImageCopy*)(pRegions + i));
+ }
+}
+
+void marshal_vkCmdCopyImageToBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkBufferImageCopy(vkStream, (const VkBufferImageCopy*)(pRegions + i));
+ }
+}
+
+void unmarshal_vkCmdCopyImageToBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkBufferImageCopy));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkBufferImageCopy(vkStream, (VkBufferImageCopy*)(pRegions + i));
+ }
+}
+
+void marshal_vkCmdUpdateBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize dataSize,
+ const void* pData)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
+ vkStream->write((const void*)pData, ((dataSize)) * sizeof(const uint8_t));
+}
+
+void unmarshal_vkCmdUpdateBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize dataSize,
+ const void* pData)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&dataSize, sizeof(VkDeviceSize));
+ vkStream->alloc((void**)&pData, ((dataSize)) * sizeof(const uint8_t));
+ vkStream->read((void*)pData, ((dataSize)) * sizeof(const uint8_t));
+}
+
+void marshal_vkCmdFillBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize size,
+ uint32_t data)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&data, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdFillBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize size,
+ uint32_t data)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&size, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&data, sizeof(uint32_t));
+}
+
+void marshal_VkClearColorValue(
+ VulkanStream* vkStream,
+ const VkClearColorValue* forMarshaling)
+{
+ vkStream->write((float*)forMarshaling->float32, 4 * sizeof(float));
+ vkStream->write((int32_t*)forMarshaling->int32, 4 * sizeof(int32_t));
+ vkStream->write((uint32_t*)forMarshaling->uint32, 4 * sizeof(uint32_t));
+}
+
+void unmarshal_VkClearColorValue(
+ VulkanStream* vkStream,
+ VkClearColorValue* forUnmarshaling)
+{
+ vkStream->read((float*)forUnmarshaling->float32, 4 * sizeof(float));
+ vkStream->read((int32_t*)forUnmarshaling->int32, 4 * sizeof(int32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->uint32, 4 * sizeof(uint32_t));
+}
+
+void marshal_vkCmdClearColorImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearColorValue* pColor,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+ marshal_VkClearColorValue(vkStream, (const VkClearColorValue*)(pColor));
+ vkStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+ {
+ marshal_VkImageSubresourceRange(vkStream, (const VkImageSubresourceRange*)(pRanges + i));
+ }
+}
+
+void unmarshal_vkCmdClearColorImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearColorValue* pColor,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+ vkStream->alloc((void**)&pColor, sizeof(const VkClearColorValue));
+ unmarshal_VkClearColorValue(vkStream, (VkClearColorValue*)(pColor));
+ vkStream->read((uint32_t*)&rangeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRanges, ((rangeCount)) * sizeof(const VkImageSubresourceRange));
+ for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+ {
+ unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(pRanges + i));
+ }
+}
+
+void marshal_VkClearDepthStencilValue(
+ VulkanStream* vkStream,
+ const VkClearDepthStencilValue* forMarshaling)
+{
+ vkStream->write((float*)&forMarshaling->depth, sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->stencil, sizeof(uint32_t));
+}
+
+void unmarshal_VkClearDepthStencilValue(
+ VulkanStream* vkStream,
+ VkClearDepthStencilValue* forUnmarshaling)
+{
+ vkStream->read((float*)&forUnmarshaling->depth, sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->stencil, sizeof(uint32_t));
+}
+
+void marshal_vkCmdClearDepthStencilImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearDepthStencilValue* pDepthStencil,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&image, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+ marshal_VkClearDepthStencilValue(vkStream, (const VkClearDepthStencilValue*)(pDepthStencil));
+ vkStream->write((uint32_t*)&rangeCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+ {
+ marshal_VkImageSubresourceRange(vkStream, (const VkImageSubresourceRange*)(pRanges + i));
+ }
+}
+
+void unmarshal_vkCmdClearDepthStencilImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearDepthStencilValue* pDepthStencil,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&image, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&imageLayout, sizeof(VkImageLayout));
+ vkStream->alloc((void**)&pDepthStencil, sizeof(const VkClearDepthStencilValue));
+ unmarshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(pDepthStencil));
+ vkStream->read((uint32_t*)&rangeCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRanges, ((rangeCount)) * sizeof(const VkImageSubresourceRange));
+ for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
+ {
+ unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(pRanges + i));
+ }
+}
+
+void marshal_VkClearValue(
+ VulkanStream* vkStream,
+ const VkClearValue* forMarshaling)
+{
+ marshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forMarshaling->color));
+ marshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forMarshaling->depthStencil));
+}
+
+void unmarshal_VkClearValue(
+ VulkanStream* vkStream,
+ VkClearValue* forUnmarshaling)
+{
+ unmarshal_VkClearColorValue(vkStream, (VkClearColorValue*)(&forUnmarshaling->color));
+ unmarshal_VkClearDepthStencilValue(vkStream, (VkClearDepthStencilValue*)(&forUnmarshaling->depthStencil));
+}
+
+void marshal_VkClearAttachment(
+ VulkanStream* vkStream,
+ const VkClearAttachment* forMarshaling)
+{
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->write((uint32_t*)&forMarshaling->colorAttachment, sizeof(uint32_t));
+ marshal_VkClearValue(vkStream, (VkClearValue*)(&forMarshaling->clearValue));
+}
+
+void unmarshal_VkClearAttachment(
+ VulkanStream* vkStream,
+ VkClearAttachment* forUnmarshaling)
+{
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->colorAttachment, sizeof(uint32_t));
+ unmarshal_VkClearValue(vkStream, (VkClearValue*)(&forUnmarshaling->clearValue));
+}
+
+void marshal_VkClearRect(
+ VulkanStream* vkStream,
+ const VkClearRect* forMarshaling)
+{
+ marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->rect));
+ vkStream->write((uint32_t*)&forMarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->layerCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkClearRect(
+ VulkanStream* vkStream,
+ VkClearRect* forUnmarshaling)
+{
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->rect));
+ vkStream->read((uint32_t*)&forUnmarshaling->baseArrayLayer, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->layerCount, sizeof(uint32_t));
+}
+
+void marshal_vkCmdClearAttachments(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t attachmentCount,
+ const VkClearAttachment* pAttachments,
+ uint32_t rectCount,
+ const VkClearRect* pRects)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&attachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
+ {
+ marshal_VkClearAttachment(vkStream, (const VkClearAttachment*)(pAttachments + i));
+ }
+ vkStream->write((uint32_t*)&rectCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
+ {
+ marshal_VkClearRect(vkStream, (const VkClearRect*)(pRects + i));
+ }
+}
+
+void unmarshal_vkCmdClearAttachments(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t attachmentCount,
+ const VkClearAttachment* pAttachments,
+ uint32_t rectCount,
+ const VkClearRect* pRects)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&attachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pAttachments, ((attachmentCount)) * sizeof(const VkClearAttachment));
+ for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
+ {
+ unmarshal_VkClearAttachment(vkStream, (VkClearAttachment*)(pAttachments + i));
+ }
+ vkStream->read((uint32_t*)&rectCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRects, ((rectCount)) * sizeof(const VkClearRect));
+ for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
+ {
+ unmarshal_VkClearRect(vkStream, (VkClearRect*)(pRects + i));
+ }
+}
+
+void marshal_VkImageResolve(
+ VulkanStream* vkStream,
+ const VkImageResolve* forMarshaling)
+{
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->srcSubresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->srcOffset));
+ marshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forMarshaling->dstSubresource));
+ marshal_VkOffset3D(vkStream, (VkOffset3D*)(&forMarshaling->dstOffset));
+ marshal_VkExtent3D(vkStream, (VkExtent3D*)(&forMarshaling->extent));
+}
+
+void unmarshal_VkImageResolve(
+ VulkanStream* vkStream,
+ VkImageResolve* forUnmarshaling)
+{
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->srcSubresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->srcOffset));
+ unmarshal_VkImageSubresourceLayers(vkStream, (VkImageSubresourceLayers*)(&forUnmarshaling->dstSubresource));
+ unmarshal_VkOffset3D(vkStream, (VkOffset3D*)(&forUnmarshaling->dstOffset));
+ unmarshal_VkExtent3D(vkStream, (VkExtent3D*)(&forUnmarshaling->extent));
+}
+
+void marshal_vkCmdResolveImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageResolve* pRegions)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->write((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->write((uint32_t*)&regionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ marshal_VkImageResolve(vkStream, (const VkImageResolve*)(pRegions + i));
+ }
+}
+
+void unmarshal_vkCmdResolveImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageResolve* pRegions)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkImage*)&srcImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&srcImageLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImage*)&dstImage, sizeof(VkImage));
+ vkStream->read((VkImageLayout*)&dstImageLayout, sizeof(VkImageLayout));
+ vkStream->read((uint32_t*)&regionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pRegions, ((regionCount)) * sizeof(const VkImageResolve));
+ for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
+ {
+ unmarshal_VkImageResolve(vkStream, (VkImageResolve*)(pRegions + i));
+ }
+}
+
+void marshal_vkCmdSetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void unmarshal_vkCmdSetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->read((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void marshal_vkCmdResetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->write((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void unmarshal_vkCmdResetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkEvent*)&event, sizeof(VkEvent));
+ vkStream->read((VkPipelineStageFlags*)&stageMask, sizeof(VkPipelineStageFlags));
+}
+
+void marshal_VkMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkMemoryBarrier* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+}
+
+void unmarshal_VkMemoryBarrier(
+ VulkanStream* vkStream,
+ VkMemoryBarrier* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+}
+
+void marshal_VkBufferMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkBufferMemoryBarrier* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&forMarshaling->size, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkBufferMemoryBarrier(
+ VulkanStream* vkStream,
+ VkBufferMemoryBarrier* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->size, sizeof(VkDeviceSize));
+}
+
+void marshal_VkImageMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkImageMemoryBarrier* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkImageLayout*)&forMarshaling->oldLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImageLayout*)&forMarshaling->newLayout, sizeof(VkImageLayout));
+ vkStream->write((uint32_t*)&forMarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ marshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forMarshaling->subresourceRange));
+}
+
+void unmarshal_VkImageMemoryBarrier(
+ VulkanStream* vkStream,
+ VkImageMemoryBarrier* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->oldLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->newLayout, sizeof(VkImageLayout));
+ vkStream->read((uint32_t*)&forUnmarshaling->srcQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstQueueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ unmarshal_VkImageSubresourceRange(vkStream, (VkImageSubresourceRange*)(&forUnmarshaling->subresourceRange));
+}
+
+void marshal_vkCmdWaitEvents(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t eventCount,
+ const VkEvent* pEvents,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&eventCount, sizeof(uint32_t));
+ vkStream->write((const VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
+ vkStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+ {
+ marshal_VkMemoryBarrier(vkStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+ }
+ vkStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+ {
+ marshal_VkBufferMemoryBarrier(vkStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+ }
+ vkStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+ {
+ marshal_VkImageMemoryBarrier(vkStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+ }
+}
+
+void unmarshal_vkCmdWaitEvents(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t eventCount,
+ const VkEvent* pEvents,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&eventCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pEvents, ((eventCount)) * sizeof(const VkEvent));
+ vkStream->read((VkEvent*)pEvents, ((eventCount)) * sizeof(const VkEvent));
+ vkStream->read((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pMemoryBarriers, ((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+ {
+ unmarshal_VkMemoryBarrier(vkStream, (VkMemoryBarrier*)(pMemoryBarriers + i));
+ }
+ vkStream->read((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBufferMemoryBarriers, ((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+ {
+ unmarshal_VkBufferMemoryBarrier(vkStream, (VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+ }
+ vkStream->read((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pImageMemoryBarriers, ((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+ {
+ unmarshal_VkImageMemoryBarrier(vkStream, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+ }
+}
+
+void marshal_vkCmdPipelineBarrier(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ VkDependencyFlags dependencyFlags,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
+ vkStream->write((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+ {
+ marshal_VkMemoryBarrier(vkStream, (const VkMemoryBarrier*)(pMemoryBarriers + i));
+ }
+ vkStream->write((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+ {
+ marshal_VkBufferMemoryBarrier(vkStream, (const VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+ }
+ vkStream->write((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+ {
+ marshal_VkImageMemoryBarrier(vkStream, (const VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+ }
+}
+
+void unmarshal_vkCmdPipelineBarrier(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ VkDependencyFlags dependencyFlags,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineStageFlags*)&srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkPipelineStageFlags*)&dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkDependencyFlags*)&dependencyFlags, sizeof(VkDependencyFlags));
+ vkStream->read((uint32_t*)&memoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pMemoryBarriers, ((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
+ {
+ unmarshal_VkMemoryBarrier(vkStream, (VkMemoryBarrier*)(pMemoryBarriers + i));
+ }
+ vkStream->read((uint32_t*)&bufferMemoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBufferMemoryBarriers, ((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
+ {
+ unmarshal_VkBufferMemoryBarrier(vkStream, (VkBufferMemoryBarrier*)(pBufferMemoryBarriers + i));
+ }
+ vkStream->read((uint32_t*)&imageMemoryBarrierCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pImageMemoryBarriers, ((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
+ for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
+ {
+ unmarshal_VkImageMemoryBarrier(vkStream, (VkImageMemoryBarrier*)(pImageMemoryBarriers + i));
+ }
+}
+
+void marshal_vkCmdBeginQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query,
+ VkQueryControlFlags flags)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&query, sizeof(uint32_t));
+ vkStream->write((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
+}
+
+void unmarshal_vkCmdBeginQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query,
+ VkQueryControlFlags flags)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&query, sizeof(uint32_t));
+ vkStream->read((VkQueryControlFlags*)&flags, sizeof(VkQueryControlFlags));
+}
+
+void marshal_vkCmdEndQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdEndQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void marshal_vkCmdResetQueryPool(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdResetQueryPool(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
+}
+
+void marshal_vkCmdWriteTimestamp(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkQueryPool queryPool,
+ uint32_t query)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdWriteTimestamp(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkQueryPool queryPool,
+ uint32_t query)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&query, sizeof(uint32_t));
+}
+
+void marshal_vkCmdCopyQueryPoolResults(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->write((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&queryCount, sizeof(uint32_t));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+ vkStream->write((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+}
+
+void unmarshal_vkCmdCopyQueryPoolResults(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkQueryPool*)&queryPool, sizeof(VkQueryPool));
+ vkStream->read((uint32_t*)&firstQuery, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&queryCount, sizeof(uint32_t));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkDeviceSize*)&stride, sizeof(VkDeviceSize));
+ vkStream->read((VkQueryResultFlags*)&flags, sizeof(VkQueryResultFlags));
+}
+
+void marshal_vkCmdPushConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineLayout layout,
+ VkShaderStageFlags stageFlags,
+ uint32_t offset,
+ uint32_t size,
+ const void* pValues)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->write((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->write((uint32_t*)&offset, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&size, sizeof(uint32_t));
+ vkStream->write((const void*)pValues, ((size)) * sizeof(const uint8_t));
+}
+
+void unmarshal_vkCmdPushConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineLayout layout,
+ VkShaderStageFlags stageFlags,
+ uint32_t offset,
+ uint32_t size,
+ const void* pValues)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->read((VkShaderStageFlags*)&stageFlags, sizeof(VkShaderStageFlags));
+ vkStream->read((uint32_t*)&offset, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&size, sizeof(uint32_t));
+ vkStream->alloc((void**)&pValues, ((size)) * sizeof(const uint8_t));
+ vkStream->read((void*)pValues, ((size)) * sizeof(const uint8_t));
+}
+
+void marshal_VkRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassBeginInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkRenderPass*)&forMarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->write((VkFramebuffer*)&forMarshaling->framebuffer, sizeof(VkFramebuffer));
+ marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->renderArea));
+ vkStream->write((uint32_t*)&forMarshaling->clearValueCount, sizeof(uint32_t));
+ vkStream->write((const VkClearValue**)&forMarshaling->pClearValues, sizeof(const VkClearValue*));
+ if (forMarshaling->pClearValues)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->clearValueCount; ++i)
+ {
+ marshal_VkClearValue(vkStream, (const VkClearValue*)(forMarshaling->pClearValues + i));
+ }
+ }
+}
+
+void unmarshal_VkRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ VkRenderPassBeginInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkRenderPass*)&forUnmarshaling->renderPass, sizeof(VkRenderPass));
+ vkStream->read((VkFramebuffer*)&forUnmarshaling->framebuffer, sizeof(VkFramebuffer));
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->renderArea));
+ vkStream->read((uint32_t*)&forUnmarshaling->clearValueCount, sizeof(uint32_t));
+ vkStream->read((VkClearValue**)&forUnmarshaling->pClearValues, sizeof(const VkClearValue*));
+ if (forUnmarshaling->pClearValues)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pClearValues, forUnmarshaling->clearValueCount * sizeof(const VkClearValue));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->clearValueCount; ++i)
+ {
+ unmarshal_VkClearValue(vkStream, (VkClearValue*)(forUnmarshaling->pClearValues + i));
+ }
+ }
+}
+
+void marshal_vkCmdBeginRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ VkSubpassContents contents)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkRenderPassBeginInfo(vkStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+ vkStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void unmarshal_vkCmdBeginRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ VkSubpassContents contents)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
+ unmarshal_VkRenderPassBeginInfo(vkStream, (VkRenderPassBeginInfo*)(pRenderPassBegin));
+ vkStream->read((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void marshal_vkCmdNextSubpass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkSubpassContents contents)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void unmarshal_vkCmdNextSubpass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkSubpassContents contents)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkSubpassContents*)&contents, sizeof(VkSubpassContents));
+}
+
+void marshal_vkCmdEndRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void unmarshal_vkCmdEndRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void marshal_vkCmdExecuteCommands(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+ vkStream->write((const VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+}
+
+void unmarshal_vkCmdExecuteCommands(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&commandBufferCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+ vkStream->read((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
+}
+
+void marshal_VkDispatchIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDispatchIndirectCommand* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->x, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->y, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->z, sizeof(uint32_t));
+}
+
+void unmarshal_VkDispatchIndirectCommand(
+ VulkanStream* vkStream,
+ VkDispatchIndirectCommand* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->x, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->y, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->z, sizeof(uint32_t));
+}
+
+void marshal_VkDrawIndexedIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDrawIndexedIndirectCommand* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->indexCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->firstIndex, sizeof(uint32_t));
+ vkStream->write((int32_t*)&forMarshaling->vertexOffset, sizeof(int32_t));
+ vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
+}
+
+void unmarshal_VkDrawIndexedIndirectCommand(
+ VulkanStream* vkStream,
+ VkDrawIndexedIndirectCommand* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->indexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->firstIndex, sizeof(uint32_t));
+ vkStream->read((int32_t*)&forUnmarshaling->vertexOffset, sizeof(int32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
+}
+
+void marshal_VkDrawIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDrawIndirectCommand* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->vertexCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->instanceCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->firstVertex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->firstInstance, sizeof(uint32_t));
+}
+
+void unmarshal_VkDrawIndirectCommand(
+ VulkanStream* vkStream,
+ VkDrawIndirectCommand* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->vertexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->instanceCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->firstVertex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->firstInstance, sizeof(uint32_t));
+}
+
+void marshal_VkBaseOutStructure(
+ VulkanStream* vkStream,
+ const VkBaseOutStructure* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((VkBaseOutStructure**)&forMarshaling->pNext, sizeof(VkBaseOutStructure*));
+ // TODO: Unsupported : VkBaseOutStructure* pNext
+}
+
+void unmarshal_VkBaseOutStructure(
+ VulkanStream* vkStream,
+ VkBaseOutStructure* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((VkBaseOutStructure**)&forUnmarshaling->pNext, sizeof(VkBaseOutStructure*));
+ // TODO: Unsupported : VkBaseOutStructure* pNext
+}
+
+void marshal_VkBaseInStructure(
+ VulkanStream* vkStream,
+ const VkBaseInStructure* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const VkBaseInStructure**)&forMarshaling->pNext, sizeof(const VkBaseInStructure*));
+ // TODO: Unsupported : const VkBaseInStructure* pNext
+}
+
+void unmarshal_VkBaseInStructure(
+ VulkanStream* vkStream,
+ VkBaseInStructure* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((VkBaseInStructure**)&forUnmarshaling->pNext, sizeof(const VkBaseInStructure*));
+ // TODO: Unsupported : const VkBaseInStructure* pNext
+}
+
+#endif
+#ifdef VK_VERSION_1_1
+VkResult marshal_vkEnumerateInstanceVersion(
+ VulkanStream* vkStream,
+ uint32_t* pApiVersion)
+{
+ vkStream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
+ VkResult marshal_vkEnumerateInstanceVersion_VkResult_return;
+ vkStream->read(&marshal_vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumerateInstanceVersion_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumerateInstanceVersion(
+ VulkanStream* vkStream,
+ uint32_t* pApiVersion)
+{
+ vkStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
+ VkResult unmarshal_vkEnumerateInstanceVersion_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumerateInstanceVersion_VkResult_return;
+}
+
+void marshal_VkPhysicalDeviceSubgroupProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSubgroupProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->subgroupSize, sizeof(uint32_t));
+ vkStream->write((VkShaderStageFlags*)&forMarshaling->supportedStages, sizeof(VkShaderStageFlags));
+ vkStream->write((VkSubgroupFeatureFlags*)&forMarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
+ vkStream->write((VkBool32*)&forMarshaling->quadOperationsInAllStages, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceSubgroupProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSubgroupProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->subgroupSize, sizeof(uint32_t));
+ vkStream->read((VkShaderStageFlags*)&forUnmarshaling->supportedStages, sizeof(VkShaderStageFlags));
+ vkStream->read((VkSubgroupFeatureFlags*)&forUnmarshaling->supportedOperations, sizeof(VkSubgroupFeatureFlags));
+ vkStream->read((VkBool32*)&forUnmarshaling->quadOperationsInAllStages, sizeof(VkBool32));
+}
+
+void marshal_VkBindBufferMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindBufferMemoryInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkBindBufferMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindBufferMemoryInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
+}
+
+void marshal_VkBindImageMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindImageMemoryInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkDeviceSize*)&forMarshaling->memoryOffset, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkBindImageMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindImageMemoryInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->memoryOffset, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkBindBufferMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ marshal_VkBindBufferMemoryInfo(vkStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult marshal_vkBindBufferMemory2_VkResult_return;
+ vkStream->read(&marshal_vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindBufferMemory2_VkResult_return;
+}
+
+VkResult unmarshal_vkBindBufferMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ unmarshal_VkBindBufferMemoryInfo(vkStream, (VkBindBufferMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult unmarshal_vkBindBufferMemory2_VkResult_return;
+ vkStream->write(&unmarshal_vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindBufferMemory2_VkResult_return;
+}
+
+VkResult marshal_vkBindImageMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ marshal_VkBindImageMemoryInfo(vkStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult marshal_vkBindImageMemory2_VkResult_return;
+ vkStream->read(&marshal_vkBindImageMemory2_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindImageMemory2_VkResult_return;
+}
+
+VkResult unmarshal_vkBindImageMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ unmarshal_VkBindImageMemoryInfo(vkStream, (VkBindImageMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult unmarshal_vkBindImageMemory2_VkResult_return;
+ vkStream->write(&unmarshal_vkBindImageMemory2_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindImageMemory2_VkResult_return;
+}
+
+void marshal_VkPhysicalDevice16BitStorageFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDevice16BitStorageFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->storagePushConstant16, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->storageInputOutput16, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDevice16BitStorageFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice16BitStorageFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer16BitAccess, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer16BitAccess, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant16, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->storageInputOutput16, sizeof(VkBool32));
+}
+
+void marshal_VkMemoryDedicatedRequirements(
+ VulkanStream* vkStream,
+ const VkMemoryDedicatedRequirements* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
+}
+
+void unmarshal_VkMemoryDedicatedRequirements(
+ VulkanStream* vkStream,
+ VkMemoryDedicatedRequirements* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->prefersDedicatedAllocation, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->requiresDedicatedAllocation, sizeof(VkBool32));
+}
+
+void marshal_VkMemoryDedicatedAllocateInfo(
+ VulkanStream* vkStream,
+ const VkMemoryDedicatedAllocateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+}
+
+void unmarshal_VkMemoryDedicatedAllocateInfo(
+ VulkanStream* vkStream,
+ VkMemoryDedicatedAllocateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+}
+
+void marshal_VkMemoryAllocateFlagsInfo(
+ VulkanStream* vkStream,
+ const VkMemoryAllocateFlagsInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkMemoryAllocateFlags*)&forMarshaling->flags, sizeof(VkMemoryAllocateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryAllocateFlagsInfo(
+ VulkanStream* vkStream,
+ VkMemoryAllocateFlagsInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkMemoryAllocateFlags*)&forUnmarshaling->flags, sizeof(VkMemoryAllocateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void marshal_VkDeviceGroupRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupRenderPassBeginInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->deviceRenderAreaCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->deviceRenderAreaCount; ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pDeviceRenderAreas + i));
+ }
+}
+
+void unmarshal_VkDeviceGroupRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupRenderPassBeginInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceRenderAreaCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDeviceRenderAreas, forUnmarshaling->deviceRenderAreaCount * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->deviceRenderAreaCount; ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDeviceRenderAreas + i));
+ }
+}
+
+void marshal_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupCommandBufferBeginInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void marshal_VkDeviceGroupSubmitInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupSubmitInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pWaitSemaphoreDeviceIndices, forMarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->commandBufferCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pCommandBufferDeviceMasks, forMarshaling->commandBufferCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pSignalSemaphoreDeviceIndices, forMarshaling->signalSemaphoreCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkDeviceGroupSubmitInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupSubmitInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pWaitSemaphoreDeviceIndices, forUnmarshaling->waitSemaphoreCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->commandBufferCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pCommandBufferDeviceMasks, forUnmarshaling->commandBufferCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pSignalSemaphoreDeviceIndices, forUnmarshaling->signalSemaphoreCount * sizeof(const uint32_t));
+}
+
+void marshal_VkDeviceGroupBindSparseInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupBindSparseInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->resourceDeviceIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->memoryDeviceIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkDeviceGroupBindSparseInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupBindSparseInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->resourceDeviceIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryDeviceIndex, sizeof(uint32_t));
+}
+
+void marshal_vkGetDeviceGroupPeerMemoryFeatures(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+ vkStream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void unmarshal_vkGetDeviceGroupPeerMemoryFeatures(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&heapIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+ vkStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void marshal_vkCmdSetDeviceMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdSetDeviceMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDispatchBase(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDispatchBase(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&baseGroupX, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&baseGroupY, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void marshal_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ const VkBindBufferMemoryDeviceGroupInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+}
+
+void marshal_VkBindImageMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ const VkBindImageMemoryDeviceGroupInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->deviceIndexCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pDeviceIndices, forMarshaling->deviceIndexCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->splitInstanceBindRegionCount; ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pSplitInstanceBindRegions + i));
+ }
+}
+
+void unmarshal_VkBindImageMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ VkBindImageMemoryDeviceGroupInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceIndexCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pDeviceIndices, forUnmarshaling->deviceIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->splitInstanceBindRegionCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSplitInstanceBindRegions, forUnmarshaling->splitInstanceBindRegionCount * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->splitInstanceBindRegionCount; ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pSplitInstanceBindRegions + i));
+ }
+}
+
+void marshal_VkPhysicalDeviceGroupProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceGroupProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
+ vkStream->write((VkPhysicalDevice*)forMarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
+ vkStream->write((VkBool32*)&forMarshaling->subsetAllocation, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceGroupProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceGroupProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
+ vkStream->read((VkPhysicalDevice*)forUnmarshaling->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice));
+ vkStream->read((VkBool32*)&forUnmarshaling->subsetAllocation, sizeof(VkBool32));
+}
+
+void marshal_VkDeviceGroupDeviceCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupDeviceCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->physicalDeviceCount, sizeof(uint32_t));
+ vkStream->write((const VkPhysicalDevice*)forMarshaling->pPhysicalDevices, forMarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+}
+
+void unmarshal_VkDeviceGroupDeviceCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupDeviceCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->physicalDeviceCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+ vkStream->read((VkPhysicalDevice*)forUnmarshaling->pPhysicalDevices, forUnmarshaling->physicalDeviceCount * sizeof(const VkPhysicalDevice));
+}
+
+VkResult marshal_vkEnumeratePhysicalDeviceGroups(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+ {
+ marshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+ }
+ VkResult marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
+ vkStream->read(&marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumeratePhysicalDeviceGroups(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+ {
+ unmarshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+ }
+ VkResult unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumeratePhysicalDeviceGroups_VkResult_return;
+}
+
+void marshal_VkBufferMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkBufferMemoryRequirementsInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+}
+
+void unmarshal_VkBufferMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkBufferMemoryRequirementsInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+}
+
+void marshal_VkImageMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkImageMemoryRequirementsInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+}
+
+void unmarshal_VkImageMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkImageMemoryRequirementsInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+}
+
+void marshal_VkImageSparseMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkImageSparseMemoryRequirementsInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+}
+
+void unmarshal_VkImageSparseMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkImageSparseMemoryRequirementsInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+}
+
+void marshal_VkMemoryRequirements2(
+ VulkanStream* vkStream,
+ const VkMemoryRequirements2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forMarshaling->memoryRequirements));
+}
+
+void unmarshal_VkMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkMemoryRequirements2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkMemoryRequirements(vkStream, (VkMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
+}
+
+void marshal_VkSparseImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryRequirements2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forMarshaling->memoryRequirements));
+}
+
+void unmarshal_VkSparseImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryRequirements2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkSparseImageMemoryRequirements(vkStream, (VkSparseImageMemoryRequirements*)(&forUnmarshaling->memoryRequirements));
+}
+
+void marshal_vkGetImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageMemoryRequirementsInfo2(vkStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+ marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
+ unmarshal_VkImageMemoryRequirementsInfo2(vkStream, (VkImageMemoryRequirementsInfo2*)(pInfo));
+ unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void marshal_vkGetBufferMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkBufferMemoryRequirementsInfo2(vkStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+ marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetBufferMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
+ unmarshal_VkBufferMemoryRequirementsInfo2(vkStream, (VkBufferMemoryRequirementsInfo2*)(pInfo));
+ unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void marshal_vkGetImageSparseMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+ vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ marshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+ }
+}
+
+void unmarshal_vkGetImageSparseMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkImageSparseMemoryRequirementsInfo2));
+ unmarshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+ vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ unmarshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+ }
+}
+
+void marshal_VkPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceFeatures2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forMarshaling->features));
+}
+
+void unmarshal_VkPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceFeatures2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkPhysicalDeviceFeatures(vkStream, (VkPhysicalDeviceFeatures*)(&forUnmarshaling->features));
+}
+
+void marshal_VkPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forMarshaling->properties));
+}
+
+void unmarshal_VkPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkPhysicalDeviceProperties(vkStream, (VkPhysicalDeviceProperties*)(&forUnmarshaling->properties));
+}
+
+void marshal_VkFormatProperties2(
+ VulkanStream* vkStream,
+ const VkFormatProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forMarshaling->formatProperties));
+}
+
+void unmarshal_VkFormatProperties2(
+ VulkanStream* vkStream,
+ VkFormatProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkFormatProperties(vkStream, (VkFormatProperties*)(&forUnmarshaling->formatProperties));
+}
+
+void marshal_VkImageFormatProperties2(
+ VulkanStream* vkStream,
+ const VkImageFormatProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forMarshaling->imageFormatProperties));
+}
+
+void unmarshal_VkImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkImageFormatProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties));
+}
+
+void marshal_VkPhysicalDeviceImageFormatInfo2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceImageFormatInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
+ vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkImageCreateFlags*)&forMarshaling->flags, sizeof(VkImageCreateFlags));
+}
+
+void unmarshal_VkPhysicalDeviceImageFormatInfo2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceImageFormatInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
+ vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkImageCreateFlags*)&forUnmarshaling->flags, sizeof(VkImageCreateFlags));
+}
+
+void marshal_VkQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ const VkQueueFamilyProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forMarshaling->queueFamilyProperties));
+}
+
+void unmarshal_VkQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkQueueFamilyProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkQueueFamilyProperties(vkStream, (VkQueueFamilyProperties*)(&forUnmarshaling->queueFamilyProperties));
+}
+
+void marshal_VkPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMemoryProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forMarshaling->memoryProperties));
+}
+
+void unmarshal_VkPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMemoryProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkPhysicalDeviceMemoryProperties(vkStream, (VkPhysicalDeviceMemoryProperties*)(&forUnmarshaling->memoryProperties));
+}
+
+void marshal_VkSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ const VkSparseImageFormatProperties2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forMarshaling->properties));
+}
+
+void unmarshal_VkSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkSparseImageFormatProperties2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkSparseImageFormatProperties(vkStream, (VkSparseImageFormatProperties*)(&forUnmarshaling->properties));
+}
+
+void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkImageType*)&forMarshaling->type, sizeof(VkImageType));
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkImageTiling*)&forMarshaling->tiling, sizeof(VkImageTiling));
+}
+
+void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkImageType*)&forUnmarshaling->type, sizeof(VkImageType));
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkImageTiling*)&forUnmarshaling->tiling, sizeof(VkImageTiling));
+}
+
+void marshal_vkGetPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void unmarshal_vkGetPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void marshal_vkGetPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void marshal_vkGetPhysicalDeviceFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ marshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ unmarshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+ marshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+ VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pImageFormatInfo, sizeof(const VkPhysicalDeviceImageFormatInfo2));
+ unmarshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+ unmarshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+ VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
+}
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ marshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ unmarshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+ }
+}
+
+void marshal_vkGetPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pFormatInfo, sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
+ unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+ }
+}
+
+void marshal_vkTrimCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+void unmarshal_vkTrimCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->read((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+void marshal_VkPhysicalDevicePointClippingProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDevicePointClippingProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkPointClippingBehavior*)&forMarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
+}
+
+void unmarshal_VkPhysicalDevicePointClippingProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevicePointClippingProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkPointClippingBehavior*)&forUnmarshaling->pointClippingBehavior, sizeof(VkPointClippingBehavior));
+}
+
+void marshal_VkInputAttachmentAspectReference(
+ VulkanStream* vkStream,
+ const VkInputAttachmentAspectReference* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->subpass, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->inputAttachmentIndex, sizeof(uint32_t));
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+}
+
+void unmarshal_VkInputAttachmentAspectReference(
+ VulkanStream* vkStream,
+ VkInputAttachmentAspectReference* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->subpass, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentIndex, sizeof(uint32_t));
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+}
+
+void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->aspectReferenceCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->aspectReferenceCount; ++i)
+ {
+ marshal_VkInputAttachmentAspectReference(vkStream, (const VkInputAttachmentAspectReference*)(forMarshaling->pAspectReferences + i));
+ }
+}
+
+void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->aspectReferenceCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAspectReferences, forUnmarshaling->aspectReferenceCount * sizeof(const VkInputAttachmentAspectReference));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->aspectReferenceCount; ++i)
+ {
+ unmarshal_VkInputAttachmentAspectReference(vkStream, (VkInputAttachmentAspectReference*)(forUnmarshaling->pAspectReferences + i));
+ }
+}
+
+void marshal_VkImageViewUsageCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageViewUsageCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->usage, sizeof(VkImageUsageFlags));
+}
+
+void unmarshal_VkImageViewUsageCreateInfo(
+ VulkanStream* vkStream,
+ VkImageViewUsageCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->usage, sizeof(VkImageUsageFlags));
+}
+
+void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkTessellationDomainOrigin*)&forMarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
+}
+
+void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkTessellationDomainOrigin*)&forUnmarshaling->domainOrigin, sizeof(VkTessellationDomainOrigin));
+}
+
+void marshal_VkRenderPassMultiviewCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassMultiviewCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pViewMasks, forMarshaling->subpassCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
+ vkStream->write((const int32_t*)forMarshaling->pViewOffsets, forMarshaling->dependencyCount * sizeof(const int32_t));
+ vkStream->write((uint32_t*)&forMarshaling->correlationMaskCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pCorrelationMasks, forMarshaling->correlationMaskCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkRenderPassMultiviewCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassMultiviewCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pViewMasks, forUnmarshaling->subpassCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
+ vkStream->read((int32_t*)forUnmarshaling->pViewOffsets, forUnmarshaling->dependencyCount * sizeof(const int32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->correlationMaskCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pCorrelationMasks, forUnmarshaling->correlationMaskCount * sizeof(const uint32_t));
+}
+
+void marshal_VkPhysicalDeviceMultiviewFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->multiview, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->multiviewGeometryShader, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->multiviewTessellationShader, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceMultiviewFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->multiview, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->multiviewGeometryShader, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->multiviewTessellationShader, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceMultiviewProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxMultiviewViewCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDeviceMultiviewProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewViewCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxMultiviewInstanceIndex, sizeof(uint32_t));
+}
+
+void marshal_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceVariablePointerFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->variablePointers, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->variablePointersStorageBuffer, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->variablePointers, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->protectedMemory, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->protectedMemory, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->protectedNoFault, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->protectedNoFault, sizeof(VkBool32));
+}
+
+void marshal_VkDeviceQueueInfo2(
+ VulkanStream* vkStream,
+ const VkDeviceQueueInfo2* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceQueueCreateFlags*)&forMarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->queueIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkDeviceQueueInfo2(
+ VulkanStream* vkStream,
+ VkDeviceQueueInfo2* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceQueueCreateFlags*)&forUnmarshaling->flags, sizeof(VkDeviceQueueCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueIndex, sizeof(uint32_t));
+}
+
+void marshal_VkProtectedSubmitInfo(
+ VulkanStream* vkStream,
+ const VkProtectedSubmitInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->protectedSubmit, sizeof(VkBool32));
+}
+
+void unmarshal_VkProtectedSubmitInfo(
+ VulkanStream* vkStream,
+ VkProtectedSubmitInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->protectedSubmit, sizeof(VkBool32));
+}
+
+void marshal_vkGetDeviceQueue2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceQueueInfo2* pQueueInfo,
+ VkQueue* pQueue)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDeviceQueueInfo2(vkStream, (const VkDeviceQueueInfo2*)(pQueueInfo));
+ vkStream->read((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+void unmarshal_vkGetDeviceQueue2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceQueueInfo2* pQueueInfo,
+ VkQueue* pQueue)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pQueueInfo, sizeof(const VkDeviceQueueInfo2));
+ unmarshal_VkDeviceQueueInfo2(vkStream, (VkDeviceQueueInfo2*)(pQueueInfo));
+ vkStream->write((VkQueue*)pQueue, sizeof(VkQueue));
+}
+
+void marshal_VkSamplerYcbcrConversionCreateInfo(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkSamplerYcbcrModelConversion*)&forMarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+ vkStream->write((VkSamplerYcbcrRange*)&forMarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
+ marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->components));
+ vkStream->write((VkChromaLocation*)&forMarshaling->xChromaOffset, sizeof(VkChromaLocation));
+ vkStream->write((VkChromaLocation*)&forMarshaling->yChromaOffset, sizeof(VkChromaLocation));
+ vkStream->write((VkFilter*)&forMarshaling->chromaFilter, sizeof(VkFilter));
+ vkStream->write((VkBool32*)&forMarshaling->forceExplicitReconstruction, sizeof(VkBool32));
+}
+
+void unmarshal_VkSamplerYcbcrConversionCreateInfo(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkSamplerYcbcrModelConversion*)&forUnmarshaling->ycbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+ vkStream->read((VkSamplerYcbcrRange*)&forUnmarshaling->ycbcrRange, sizeof(VkSamplerYcbcrRange));
+ unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->components));
+ vkStream->read((VkChromaLocation*)&forUnmarshaling->xChromaOffset, sizeof(VkChromaLocation));
+ vkStream->read((VkChromaLocation*)&forUnmarshaling->yChromaOffset, sizeof(VkChromaLocation));
+ vkStream->read((VkFilter*)&forUnmarshaling->chromaFilter, sizeof(VkFilter));
+ vkStream->read((VkBool32*)&forUnmarshaling->forceExplicitReconstruction, sizeof(VkBool32));
+}
+
+void marshal_VkSamplerYcbcrConversionInfo(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSamplerYcbcrConversion*)&forMarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
+}
+
+void unmarshal_VkSamplerYcbcrConversionInfo(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSamplerYcbcrConversion*)&forUnmarshaling->conversion, sizeof(VkSamplerYcbcrConversion));
+}
+
+void marshal_VkBindImagePlaneMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindImagePlaneMemoryInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+}
+
+void unmarshal_VkBindImagePlaneMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindImagePlaneMemoryInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+}
+
+void marshal_VkImagePlaneMemoryRequirementsInfo(
+ VulkanStream* vkStream,
+ const VkImagePlaneMemoryRequirementsInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImageAspectFlagBits*)&forMarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+}
+
+void unmarshal_VkImagePlaneMemoryRequirementsInfo(
+ VulkanStream* vkStream,
+ VkImagePlaneMemoryRequirementsInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImageAspectFlagBits*)&forUnmarshaling->planeAspect, sizeof(VkImageAspectFlagBits));
+}
+
+void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->samplerYcbcrConversion, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->samplerYcbcrConversion, sizeof(VkBool32));
+}
+
+void marshal_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->combinedImageSamplerDescriptorCount, sizeof(uint32_t));
+}
+
+VkResult marshal_vkCreateSamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ VkResult marshal_vkCreateSamplerYcbcrConversion_VkResult_return;
+ vkStream->read(&marshal_vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSamplerYcbcrConversion_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerYcbcrConversionCreateInfo));
+ unmarshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ VkResult unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSamplerYcbcrConversion_VkResult_return;
+}
+
+void marshal_vkDestroySamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_VkDescriptorUpdateTemplateEntry(
+ VulkanStream* vkStream,
+ const VkDescriptorUpdateTemplateEntry* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->write((VkDescriptorType*)&forMarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->write((size_t*)&forMarshaling->offset, sizeof(size_t));
+ vkStream->write((size_t*)&forMarshaling->stride, sizeof(size_t));
+}
+
+void unmarshal_VkDescriptorUpdateTemplateEntry(
+ VulkanStream* vkStream,
+ VkDescriptorUpdateTemplateEntry* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->dstBinding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstArrayElement, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorCount, sizeof(uint32_t));
+ vkStream->read((VkDescriptorType*)&forUnmarshaling->descriptorType, sizeof(VkDescriptorType));
+ vkStream->read((size_t*)&forUnmarshaling->offset, sizeof(size_t));
+ vkStream->read((size_t*)&forUnmarshaling->stride, sizeof(size_t));
+}
+
+void marshal_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorUpdateTemplateCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkDescriptorUpdateTemplateCreateFlags*)&forMarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->descriptorUpdateEntryCount; ++i)
+ {
+ marshal_VkDescriptorUpdateTemplateEntry(vkStream, (const VkDescriptorUpdateTemplateEntry*)(forMarshaling->pDescriptorUpdateEntries + i));
+ }
+ vkStream->write((VkDescriptorUpdateTemplateType*)&forMarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
+ vkStream->write((VkDescriptorSetLayout*)&forMarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+ vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((VkPipelineLayout*)&forMarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->write((uint32_t*)&forMarshaling->set, sizeof(uint32_t));
+}
+
+void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkDescriptorUpdateTemplateCreateFlags*)&forUnmarshaling->flags, sizeof(VkDescriptorUpdateTemplateCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorUpdateEntryCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDescriptorUpdateEntries, forUnmarshaling->descriptorUpdateEntryCount * sizeof(const VkDescriptorUpdateTemplateEntry));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->descriptorUpdateEntryCount; ++i)
+ {
+ unmarshal_VkDescriptorUpdateTemplateEntry(vkStream, (VkDescriptorUpdateTemplateEntry*)(forUnmarshaling->pDescriptorUpdateEntries + i));
+ }
+ vkStream->read((VkDescriptorUpdateTemplateType*)&forUnmarshaling->templateType, sizeof(VkDescriptorUpdateTemplateType));
+ vkStream->read((VkDescriptorSetLayout*)&forUnmarshaling->descriptorSetLayout, sizeof(VkDescriptorSetLayout));
+ vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((VkPipelineLayout*)&forUnmarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->read((uint32_t*)&forUnmarshaling->set, sizeof(uint32_t));
+}
+
+VkResult marshal_vkCreateDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ VkResult marshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+ vkStream->read(&marshal_vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorUpdateTemplateCreateInfo));
+ unmarshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ VkResult unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDescriptorUpdateTemplate_VkResult_return;
+}
+
+void marshal_vkDestroyDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_vkUpdateDescriptorSetWithTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+ vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->write((const void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->write((const void*)pData, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_vkUpdateDescriptorSetWithTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+ vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->read((void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->alloc((void**)&pData, sizeof(const uint8_t));
+ vkStream->read((void*)pData, sizeof(const uint8_t));
+ }
+}
+
+void marshal_VkExternalMemoryProperties(
+ VulkanStream* vkStream,
+ const VkExternalMemoryProperties* forMarshaling)
+{
+ vkStream->write((VkExternalMemoryFeatureFlags*)&forMarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
+ vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+ vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void unmarshal_VkExternalMemoryProperties(
+ VulkanStream* vkStream,
+ VkExternalMemoryProperties* forUnmarshaling)
+{
+ vkStream->read((VkExternalMemoryFeatureFlags*)&forUnmarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlags));
+ vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+ vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void marshal_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void marshal_VkExternalImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkExternalImageFormatProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
+}
+
+void unmarshal_VkExternalImageFormatProperties(
+ VulkanStream* vkStream,
+ VkExternalImageFormatProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
+}
+
+void marshal_VkPhysicalDeviceExternalBufferInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalBufferInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBufferCreateFlags*)&forMarshaling->flags, sizeof(VkBufferCreateFlags));
+ vkStream->write((VkBufferUsageFlags*)&forMarshaling->usage, sizeof(VkBufferUsageFlags));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void unmarshal_VkPhysicalDeviceExternalBufferInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalBufferInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBufferCreateFlags*)&forUnmarshaling->flags, sizeof(VkBufferCreateFlags));
+ vkStream->read((VkBufferUsageFlags*)&forUnmarshaling->usage, sizeof(VkBufferUsageFlags));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void marshal_VkExternalBufferProperties(
+ VulkanStream* vkStream,
+ const VkExternalBufferProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forMarshaling->externalMemoryProperties));
+}
+
+void unmarshal_VkExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkExternalBufferProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkExternalMemoryProperties(vkStream, (VkExternalMemoryProperties*)(&forUnmarshaling->externalMemoryProperties));
+}
+
+void marshal_VkPhysicalDeviceIDProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceIDProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint8_t*)forMarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ vkStream->write((uint8_t*)forMarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ vkStream->write((uint8_t*)forMarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
+ vkStream->write((uint32_t*)&forMarshaling->deviceNodeMask, sizeof(uint32_t));
+ vkStream->write((VkBool32*)&forMarshaling->deviceLUIDValid, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceIDProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceIDProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint8_t*)forUnmarshaling->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ vkStream->read((uint8_t*)forUnmarshaling->driverUUID, VK_UUID_SIZE * sizeof(uint8_t));
+ vkStream->read((uint8_t*)forUnmarshaling->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceNodeMask, sizeof(uint32_t));
+ vkStream->read((VkBool32*)&forUnmarshaling->deviceLUIDValid, sizeof(VkBool32));
+}
+
+void marshal_vkGetPhysicalDeviceExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+ marshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalBufferInfo, sizeof(const VkPhysicalDeviceExternalBufferInfo));
+ unmarshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+ unmarshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+void marshal_VkExternalMemoryImageCreateInfo(
+ VulkanStream* vkStream,
+ const VkExternalMemoryImageCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void unmarshal_VkExternalMemoryImageCreateInfo(
+ VulkanStream* vkStream,
+ VkExternalMemoryImageCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void marshal_VkExternalMemoryBufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkExternalMemoryBufferCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void unmarshal_VkExternalMemoryBufferCreateInfo(
+ VulkanStream* vkStream,
+ VkExternalMemoryBufferCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void marshal_VkExportMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ const VkExportMemoryAllocateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void unmarshal_VkExportMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ VkExportMemoryAllocateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlags));
+}
+
+void marshal_VkPhysicalDeviceExternalFenceInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalFenceInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+void unmarshal_VkPhysicalDeviceExternalFenceInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalFenceInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+void marshal_VkExternalFenceProperties(
+ VulkanStream* vkStream,
+ const VkExternalFenceProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+ vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+ vkStream->write((VkExternalFenceFeatureFlags*)&forMarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
+}
+
+void unmarshal_VkExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkExternalFenceProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+ vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+ vkStream->read((VkExternalFenceFeatureFlags*)&forUnmarshaling->externalFenceFeatures, sizeof(VkExternalFenceFeatureFlags));
+}
+
+void marshal_vkGetPhysicalDeviceExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+ marshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalFenceInfo, sizeof(const VkPhysicalDeviceExternalFenceInfo));
+ unmarshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+ unmarshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+void marshal_VkExportFenceCreateInfo(
+ VulkanStream* vkStream,
+ const VkExportFenceCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalFenceHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+}
+
+void unmarshal_VkExportFenceCreateInfo(
+ VulkanStream* vkStream,
+ VkExportFenceCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalFenceHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalFenceHandleTypeFlags));
+}
+
+void marshal_VkExportSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ const VkExportSemaphoreCreateInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+}
+
+void unmarshal_VkExportSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ VkExportSemaphoreCreateInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->handleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+}
+
+void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+void marshal_VkExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ const VkExternalSemaphoreProperties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+ vkStream->write((VkExternalSemaphoreHandleTypeFlags*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+ vkStream->write((VkExternalSemaphoreFeatureFlags*)&forMarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
+}
+
+void unmarshal_VkExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkExternalSemaphoreProperties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+ vkStream->read((VkExternalSemaphoreHandleTypeFlags*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalSemaphoreHandleTypeFlags));
+ vkStream->read((VkExternalSemaphoreFeatureFlags*)&forUnmarshaling->externalSemaphoreFeatures, sizeof(VkExternalSemaphoreFeatureFlags));
+}
+
+void marshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+ marshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalSemaphoreInfo, sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
+ unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+ unmarshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+void marshal_VkPhysicalDeviceMaintenance3Properties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMaintenance3Properties* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxPerSetDescriptors, sizeof(uint32_t));
+ vkStream->write((VkDeviceSize*)&forMarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkPhysicalDeviceMaintenance3Properties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMaintenance3Properties* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerSetDescriptors, sizeof(uint32_t));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->maxMemoryAllocationSize, sizeof(VkDeviceSize));
+}
+
+void marshal_VkDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutSupport* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->supported, sizeof(VkBool32));
+}
+
+void unmarshal_VkDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutSupport* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->supported, sizeof(VkBool32));
+}
+
+void marshal_vkGetDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ marshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+void unmarshal_vkGetDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
+ unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ unmarshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->shaderDrawParameters, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderDrawParameters, sizeof(VkBool32));
+}
+
+#endif
+#ifdef VK_KHR_surface
+void marshal_vkDestroySurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkSurfaceKHR surface,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkSurfaceKHR surface,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ VkSurfaceKHR surface,
+ VkBool32* pSupported)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((VkBool32*)pSupported, sizeof(VkBool32));
+ VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ VkSurfaceKHR surface,
+ VkBool32* pSupported)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((VkBool32*)pSupported, sizeof(VkBool32));
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
+}
+
+void marshal_VkSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilitiesKHR* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageCount, sizeof(uint32_t));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->currentExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minImageExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxImageExtent));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->write((VkCompositeAlphaFlagsKHR*)&forMarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+}
+
+void unmarshal_VkSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilitiesKHR* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageCount, sizeof(uint32_t));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->currentExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minImageExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxImageExtent));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->read((VkCompositeAlphaFlagsKHR*)&forUnmarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ marshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
+ VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ unmarshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
+}
+
+void marshal_VkSurfaceFormatKHR(
+ VulkanStream* vkStream,
+ const VkSurfaceFormatKHR* forMarshaling)
+{
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkColorSpaceKHR*)&forMarshaling->colorSpace, sizeof(VkColorSpaceKHR));
+}
+
+void unmarshal_VkSurfaceFormatKHR(
+ VulkanStream* vkStream,
+ VkSurfaceFormatKHR* forUnmarshaling)
+{
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->colorSpace, sizeof(VkColorSpaceKHR));
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+ {
+ marshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+ {
+ unmarshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
+ vkStream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
+ VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
+ vkStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
+ VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_swapchain
+void marshal_VkSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkSwapchainCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSwapchainCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
+ vkStream->write((VkSurfaceKHR*)&forMarshaling->surface, sizeof(VkSurfaceKHR));
+ vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->write((VkFormat*)&forMarshaling->imageFormat, sizeof(VkFormat));
+ vkStream->write((VkColorSpaceKHR*)&forMarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
+ vkStream->write((uint32_t*)&forMarshaling->imageArrayLayers, sizeof(uint32_t));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->imageUsage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkSharingMode*)&forMarshaling->imageSharingMode, sizeof(VkSharingMode));
+ vkStream->write((uint32_t*)&forMarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t**)&forMarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forMarshaling->pQueueFamilyIndices)
+ {
+ vkStream->write((const uint32_t*)forMarshaling->pQueueFamilyIndices, forMarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->write((VkCompositeAlphaFlagBitsKHR*)&forMarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
+ vkStream->write((VkPresentModeKHR*)&forMarshaling->presentMode, sizeof(VkPresentModeKHR));
+ vkStream->write((VkBool32*)&forMarshaling->clipped, sizeof(VkBool32));
+ vkStream->write((VkSwapchainKHR*)&forMarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
+}
+
+void unmarshal_VkSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkSwapchainCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSwapchainCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkSwapchainCreateFlagsKHR));
+ vkStream->read((VkSurfaceKHR*)&forUnmarshaling->surface, sizeof(VkSurfaceKHR));
+ vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->read((VkFormat*)&forUnmarshaling->imageFormat, sizeof(VkFormat));
+ vkStream->read((VkColorSpaceKHR*)&forUnmarshaling->imageColorSpace, sizeof(VkColorSpaceKHR));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
+ vkStream->read((uint32_t*)&forUnmarshaling->imageArrayLayers, sizeof(uint32_t));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->imageUsage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkSharingMode*)&forUnmarshaling->imageSharingMode, sizeof(VkSharingMode));
+ vkStream->read((uint32_t*)&forUnmarshaling->queueFamilyIndexCount, sizeof(uint32_t));
+ vkStream->read((uint32_t**)&forUnmarshaling->pQueueFamilyIndices, sizeof(const uint32_t*));
+ if (forUnmarshaling->pQueueFamilyIndices)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pQueueFamilyIndices, forUnmarshaling->queueFamilyIndexCount * sizeof(const uint32_t));
+ }
+ vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->preTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->read((VkCompositeAlphaFlagBitsKHR*)&forUnmarshaling->compositeAlpha, sizeof(VkCompositeAlphaFlagBitsKHR));
+ vkStream->read((VkPresentModeKHR*)&forUnmarshaling->presentMode, sizeof(VkPresentModeKHR));
+ vkStream->read((VkBool32*)&forUnmarshaling->clipped, sizeof(VkBool32));
+ vkStream->read((VkSwapchainKHR*)&forUnmarshaling->oldSwapchain, sizeof(VkSwapchainKHR));
+}
+
+VkResult marshal_vkCreateSwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSwapchainCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchain)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSwapchainCreateInfoKHR(vkStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+ VkResult marshal_vkCreateSwapchainKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSwapchainKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSwapchainCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchain)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSwapchainCreateInfoKHR));
+ unmarshal_VkSwapchainCreateInfoKHR(vkStream, (VkSwapchainCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSwapchainKHR*)pSwapchain, sizeof(VkSwapchainKHR));
+ VkResult unmarshal_vkCreateSwapchainKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSwapchainKHR_VkResult_return;
+}
+
+void marshal_vkDestroySwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkGetSwapchainImagesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pSwapchainImageCount,
+ VkImage* pSwapchainImages)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
+ vkStream->read((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+ VkResult marshal_vkGetSwapchainImagesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetSwapchainImagesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetSwapchainImagesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pSwapchainImageCount,
+ VkImage* pSwapchainImages)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
+ vkStream->write((VkImage*)pSwapchainImages, (*(pSwapchainImageCount)) * sizeof(VkImage));
+ VkResult unmarshal_vkGetSwapchainImagesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetSwapchainImagesKHR_VkResult_return;
+}
+
+VkResult marshal_vkAcquireNextImageKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint64_t timeout,
+ VkSemaphore semaphore,
+ VkFence fence,
+ uint32_t* pImageIndex)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((uint64_t*)&timeout, sizeof(uint64_t));
+ vkStream->write((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkFence*)&fence, sizeof(VkFence));
+ vkStream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
+ VkResult marshal_vkAcquireNextImageKHR_VkResult_return;
+ vkStream->read(&marshal_vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkAcquireNextImageKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkAcquireNextImageKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint64_t timeout,
+ VkSemaphore semaphore,
+ VkFence fence,
+ uint32_t* pImageIndex)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((uint64_t*)&timeout, sizeof(uint64_t));
+ vkStream->read((VkSemaphore*)&semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkFence*)&fence, sizeof(VkFence));
+ vkStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+ VkResult unmarshal_vkAcquireNextImageKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAcquireNextImageKHR_VkResult_return;
+}
+
+void marshal_VkPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkPresentInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->write((const VkSemaphore*)forMarshaling->pWaitSemaphores, forMarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->write((const VkSwapchainKHR*)forMarshaling->pSwapchains, forMarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+ vkStream->write((const uint32_t*)forMarshaling->pImageIndices, forMarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->write((VkResult**)&forMarshaling->pResults, sizeof(VkResult*));
+ if (forMarshaling->pResults)
+ {
+ vkStream->write((VkResult*)forMarshaling->pResults, forMarshaling->swapchainCount * sizeof(VkResult));
+ }
+}
+
+void unmarshal_VkPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkPresentInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((VkSemaphore*)forUnmarshaling->pWaitSemaphores, forUnmarshaling->waitSemaphoreCount * sizeof(const VkSemaphore));
+ vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+ vkStream->read((VkSwapchainKHR*)forUnmarshaling->pSwapchains, forUnmarshaling->swapchainCount * sizeof(const VkSwapchainKHR));
+ vkStream->alloc((void**)&forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pImageIndices, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->read((VkResult**)&forUnmarshaling->pResults, sizeof(VkResult*));
+ if (forUnmarshaling->pResults)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
+ vkStream->read((VkResult*)forUnmarshaling->pResults, forUnmarshaling->swapchainCount * sizeof(VkResult));
+ }
+}
+
+VkResult marshal_vkQueuePresentKHR(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkPresentInfoKHR* pPresentInfo)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ marshal_VkPresentInfoKHR(vkStream, (const VkPresentInfoKHR*)(pPresentInfo));
+ VkResult marshal_vkQueuePresentKHR_VkResult_return;
+ vkStream->read(&marshal_vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkQueuePresentKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkQueuePresentKHR(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkPresentInfoKHR* pPresentInfo)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->alloc((void**)&pPresentInfo, sizeof(const VkPresentInfoKHR));
+ unmarshal_VkPresentInfoKHR(vkStream, (VkPresentInfoKHR*)(pPresentInfo));
+ VkResult unmarshal_vkQueuePresentKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkQueuePresentKHR_VkResult_return;
+}
+
+void marshal_VkImageSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkImageSwapchainCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+}
+
+void unmarshal_VkImageSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkImageSwapchainCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+}
+
+void marshal_VkBindImageMemorySwapchainInfoKHR(
+ VulkanStream* vkStream,
+ const VkBindImageMemorySwapchainInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((uint32_t*)&forMarshaling->imageIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkBindImageMemorySwapchainInfoKHR(
+ VulkanStream* vkStream,
+ VkBindImageMemorySwapchainInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((uint32_t*)&forUnmarshaling->imageIndex, sizeof(uint32_t));
+}
+
+void marshal_VkAcquireNextImageInfoKHR(
+ VulkanStream* vkStream,
+ const VkAcquireNextImageInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSwapchainKHR*)&forMarshaling->swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((uint64_t*)&forMarshaling->timeout, sizeof(uint64_t));
+ vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+ vkStream->write((uint32_t*)&forMarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void unmarshal_VkAcquireNextImageInfoKHR(
+ VulkanStream* vkStream,
+ VkAcquireNextImageInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSwapchainKHR*)&forUnmarshaling->swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((uint64_t*)&forUnmarshaling->timeout, sizeof(uint64_t));
+ vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+ vkStream->read((uint32_t*)&forUnmarshaling->deviceMask, sizeof(uint32_t));
+}
+
+void marshal_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)forMarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
+ vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+}
+
+void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)forUnmarshaling->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t));
+ vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+}
+
+void marshal_VkDeviceGroupPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupPresentInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pDeviceMasks, forMarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->write((VkDeviceGroupPresentModeFlagBitsKHR*)&forMarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
+}
+
+void unmarshal_VkDeviceGroupPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupPresentInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pDeviceMasks, forUnmarshaling->swapchainCount * sizeof(const uint32_t));
+ vkStream->read((VkDeviceGroupPresentModeFlagBitsKHR*)&forUnmarshaling->mode, sizeof(VkDeviceGroupPresentModeFlagBitsKHR));
+}
+
+void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)&forMarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+}
+
+void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)&forUnmarshaling->modes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+}
+
+VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDeviceGroupPresentCapabilitiesKHR(vkStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
+ VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ unmarshal_VkDeviceGroupPresentCapabilitiesKHR(vkStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
+ VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSurfaceKHR surface,
+ VkDeviceGroupPresentModeFlagsKHR* pModes)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+ VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSurfaceKHR surface,
+ VkDeviceGroupPresentModeFlagsKHR* pModes)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
+ VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pRectCount,
+ VkRect2D* pRects)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->read((uint32_t*)pRectCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
+ {
+ marshal_VkRect2D(vkStream, (VkRect2D*)(pRects + i));
+ }
+ VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pRectCount,
+ VkRect2D* pRects)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ vkStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(pRects + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
+}
+
+VkResult marshal_vkAcquireNextImage2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAcquireNextImageInfoKHR* pAcquireInfo,
+ uint32_t* pImageIndex)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkAcquireNextImageInfoKHR(vkStream, (const VkAcquireNextImageInfoKHR*)(pAcquireInfo));
+ vkStream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
+ VkResult marshal_vkAcquireNextImage2KHR_VkResult_return;
+ vkStream->read(&marshal_vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkAcquireNextImage2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkAcquireNextImage2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAcquireNextImageInfoKHR* pAcquireInfo,
+ uint32_t* pImageIndex)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pAcquireInfo, sizeof(const VkAcquireNextImageInfoKHR));
+ unmarshal_VkAcquireNextImageInfoKHR(vkStream, (VkAcquireNextImageInfoKHR*)(pAcquireInfo));
+ vkStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
+ VkResult unmarshal_vkAcquireNextImage2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAcquireNextImage2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_display
+void marshal_VkDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkDisplayKHR*)&forMarshaling->display, sizeof(VkDisplayKHR));
+ vkStream->putString(forMarshaling->displayName);
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalDimensions));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->physicalResolution));
+ vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->write((VkBool32*)&forMarshaling->planeReorderPossible, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->persistentContent, sizeof(VkBool32));
+}
+
+void unmarshal_VkDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkDisplayKHR*)&forUnmarshaling->display, sizeof(VkDisplayKHR));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->displayName);
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalDimensions));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->physicalResolution));
+ vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->read((VkBool32*)&forUnmarshaling->planeReorderPossible, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->persistentContent, sizeof(VkBool32));
+}
+
+void marshal_VkDisplayModeParametersKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeParametersKHR* forMarshaling)
+{
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->visibleRegion));
+ vkStream->write((uint32_t*)&forMarshaling->refreshRate, sizeof(uint32_t));
+}
+
+void unmarshal_VkDisplayModeParametersKHR(
+ VulkanStream* vkStream,
+ VkDisplayModeParametersKHR* forUnmarshaling)
+{
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->visibleRegion));
+ vkStream->read((uint32_t*)&forUnmarshaling->refreshRate, sizeof(uint32_t));
+}
+
+void marshal_VkDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModePropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
+ marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
+}
+
+void unmarshal_VkDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayModePropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
+ unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
+}
+
+void marshal_VkDisplayModeCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDisplayModeCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
+ marshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forMarshaling->parameters));
+}
+
+void unmarshal_VkDisplayModeCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplayModeCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDisplayModeCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplayModeCreateFlagsKHR));
+ unmarshal_VkDisplayModeParametersKHR(vkStream, (VkDisplayModeParametersKHR*)(&forUnmarshaling->parameters));
+}
+
+void marshal_VkDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneCapabilitiesKHR* forMarshaling)
+{
+ vkStream->write((VkDisplayPlaneAlphaFlagsKHR*)&forMarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minSrcPosition));
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxSrcPosition));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minSrcExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxSrcExtent));
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->minDstPosition));
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->maxDstPosition));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minDstExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxDstExtent));
+}
+
+void unmarshal_VkDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneCapabilitiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkDisplayPlaneAlphaFlagsKHR*)&forUnmarshaling->supportedAlpha, sizeof(VkDisplayPlaneAlphaFlagsKHR));
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minSrcPosition));
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxSrcPosition));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minSrcExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSrcExtent));
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->minDstPosition));
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->maxDstPosition));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minDstExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxDstExtent));
+}
+
+void marshal_VkDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlanePropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkDisplayKHR*)&forMarshaling->currentDisplay, sizeof(VkDisplayKHR));
+ vkStream->write((uint32_t*)&forMarshaling->currentStackIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPlanePropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkDisplayKHR*)&forUnmarshaling->currentDisplay, sizeof(VkDisplayKHR));
+ vkStream->read((uint32_t*)&forUnmarshaling->currentStackIndex, sizeof(uint32_t));
+}
+
+void marshal_VkDisplaySurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplaySurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDisplaySurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
+ vkStream->write((VkDisplayModeKHR*)&forMarshaling->displayMode, sizeof(VkDisplayModeKHR));
+ vkStream->write((uint32_t*)&forMarshaling->planeIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->planeStackIndex, sizeof(uint32_t));
+ vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->transform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->write((float*)&forMarshaling->globalAlpha, sizeof(float));
+ vkStream->write((VkDisplayPlaneAlphaFlagBitsKHR*)&forMarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->imageExtent));
+}
+
+void unmarshal_VkDisplaySurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplaySurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDisplaySurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkDisplaySurfaceCreateFlagsKHR));
+ vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->displayMode, sizeof(VkDisplayModeKHR));
+ vkStream->read((uint32_t*)&forUnmarshaling->planeIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->planeStackIndex, sizeof(uint32_t));
+ vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->transform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->read((float*)&forUnmarshaling->globalAlpha, sizeof(float));
+ vkStream->read((VkDisplayPlaneAlphaFlagBitsKHR*)&forUnmarshaling->alphaMode, sizeof(VkDisplayPlaneAlphaFlagBitsKHR));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->imageExtent));
+}
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPropertiesKHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPropertiesKHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlanePropertiesKHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlanePropertiesKHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t planeIndex,
+ uint32_t* pDisplayCount,
+ VkDisplayKHR* pDisplays)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
+ vkStream->read((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+ VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t planeIndex,
+ uint32_t* pDisplayCount,
+ VkDisplayKHR* pDisplays)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&planeIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
+ vkStream->write((VkDisplayKHR*)pDisplays, (*(pDisplayCount)) * sizeof(VkDisplayKHR));
+ VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModePropertiesKHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetDisplayModePropertiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDisplayModePropertiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModePropertiesKHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDisplayModePropertiesKHR_VkResult_return;
+}
+
+VkResult marshal_vkCreateDisplayModeKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ const VkDisplayModeCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDisplayModeKHR* pMode)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ marshal_VkDisplayModeCreateInfoKHR(vkStream, (const VkDisplayModeCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+ VkResult marshal_vkCreateDisplayModeKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDisplayModeKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDisplayModeKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ const VkDisplayModeCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDisplayModeKHR* pMode)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDisplayModeCreateInfoKHR));
+ unmarshal_VkDisplayModeCreateInfoKHR(vkStream, (VkDisplayModeCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDisplayModeKHR*)pMode, sizeof(VkDisplayModeKHR));
+ VkResult unmarshal_vkCreateDisplayModeKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDisplayModeKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayModeKHR mode,
+ uint32_t planeIndex,
+ VkDisplayPlaneCapabilitiesKHR* pCapabilities)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
+ vkStream->write((uint32_t*)&planeIndex, sizeof(uint32_t));
+ marshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
+ VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayModeKHR mode,
+ uint32_t planeIndex,
+ VkDisplayPlaneCapabilitiesKHR* pCapabilities)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkDisplayModeKHR*)&mode, sizeof(VkDisplayModeKHR));
+ vkStream->read((uint32_t*)&planeIndex, sizeof(uint32_t));
+ unmarshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
+ VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
+}
+
+VkResult marshal_vkCreateDisplayPlaneSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkDisplaySurfaceCreateInfoKHR(vkStream, (const VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDisplaySurfaceCreateInfoKHR));
+ unmarshal_VkDisplaySurfaceCreateInfoKHR(vkStream, (VkDisplaySurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void marshal_VkDisplayPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPresentInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->srcRect));
+ marshal_VkRect2D(vkStream, (VkRect2D*)(&forMarshaling->dstRect));
+ vkStream->write((VkBool32*)&forMarshaling->persistent, sizeof(VkBool32));
+}
+
+void unmarshal_VkDisplayPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplayPresentInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->srcRect));
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(&forUnmarshaling->dstRect));
+ vkStream->read((VkBool32*)&forUnmarshaling->persistent, sizeof(VkBool32));
+}
+
+VkResult marshal_vkCreateSharedSwapchainsKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchains)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+ {
+ marshal_VkSwapchainCreateInfoKHR(vkStream, (const VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
+ }
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+ VkResult marshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSharedSwapchainsKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchains)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&swapchainCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pCreateInfos, ((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
+ for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+ {
+ unmarshal_VkSwapchainCreateInfoKHR(vkStream, (VkSwapchainCreateInfoKHR*)(pCreateInfos + i));
+ }
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(VkSwapchainKHR));
+ VkResult unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSharedSwapchainsKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void marshal_VkXlibSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkXlibSurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkXlibSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
+ vkStream->write((Display**)&forMarshaling->dpy, sizeof(Display*));
+ if (forMarshaling->dpy)
+ {
+ vkStream->write((Display*)forMarshaling->dpy, sizeof(Display));
+ }
+ vkStream->write((Window*)&forMarshaling->window, sizeof(Window));
+}
+
+void unmarshal_VkXlibSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkXlibSurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkXlibSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXlibSurfaceCreateFlagsKHR));
+ vkStream->read((Display**)&forUnmarshaling->dpy, sizeof(Display*));
+ if (forUnmarshaling->dpy)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->dpy, sizeof(Display));
+ vkStream->read((Display*)forUnmarshaling->dpy, sizeof(Display));
+ }
+ vkStream->read((Window*)&forUnmarshaling->window, sizeof(Window));
+}
+
+VkResult marshal_vkCreateXlibSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkXlibSurfaceCreateInfoKHR(vkStream, (const VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateXlibSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateXlibSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateXlibSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkXlibSurfaceCreateInfoKHR));
+ unmarshal_VkXlibSurfaceCreateInfoKHR(vkStream, (VkXlibSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateXlibSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateXlibSurfaceKHR_VkResult_return;
+}
+
+VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((Display*)dpy, sizeof(Display));
+ vkStream->write((VisualID*)&visualID, sizeof(VisualID));
+ VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+}
+
+VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((Display*)dpy, sizeof(Display));
+ vkStream->read((VisualID*)&visualID, sizeof(VisualID));
+ VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void marshal_VkXcbSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkXcbSurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkXcbSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
+ vkStream->write((xcb_connection_t**)&forMarshaling->connection, sizeof(xcb_connection_t*));
+ if (forMarshaling->connection)
+ {
+ vkStream->write((xcb_connection_t*)forMarshaling->connection, sizeof(xcb_connection_t));
+ }
+ vkStream->write((xcb_window_t*)&forMarshaling->window, sizeof(xcb_window_t));
+}
+
+void unmarshal_VkXcbSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkXcbSurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkXcbSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkXcbSurfaceCreateFlagsKHR));
+ vkStream->read((xcb_connection_t**)&forUnmarshaling->connection, sizeof(xcb_connection_t*));
+ if (forUnmarshaling->connection)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(xcb_connection_t));
+ vkStream->read((xcb_connection_t*)forUnmarshaling->connection, sizeof(xcb_connection_t));
+ }
+ vkStream->read((xcb_window_t*)&forUnmarshaling->window, sizeof(xcb_window_t));
+}
+
+VkResult marshal_vkCreateXcbSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkXcbSurfaceCreateInfoKHR(vkStream, (const VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateXcbSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateXcbSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateXcbSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkXcbSurfaceCreateInfoKHR));
+ unmarshal_VkXcbSurfaceCreateInfoKHR(vkStream, (VkXcbSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateXcbSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateXcbSurfaceKHR_VkResult_return;
+}
+
+VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
+ vkStream->write((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
+ VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+}
+
+VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
+ vkStream->read((xcb_visualid_t*)&visual_id, sizeof(xcb_visualid_t));
+ VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void marshal_VkWaylandSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkWaylandSurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkWaylandSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
+ vkStream->write((wl_display**)&forMarshaling->display, sizeof(wl_display*));
+ if (forMarshaling->display)
+ {
+ vkStream->write((wl_display*)forMarshaling->display, sizeof(wl_display));
+ }
+ vkStream->write((wl_surface**)&forMarshaling->surface, sizeof(wl_surface*));
+ if (forMarshaling->surface)
+ {
+ vkStream->write((wl_surface*)forMarshaling->surface, sizeof(wl_surface));
+ }
+}
+
+void unmarshal_VkWaylandSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkWaylandSurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkWaylandSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWaylandSurfaceCreateFlagsKHR));
+ vkStream->read((wl_display**)&forUnmarshaling->display, sizeof(wl_display*));
+ if (forUnmarshaling->display)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->display, sizeof(wl_display));
+ vkStream->read((wl_display*)forUnmarshaling->display, sizeof(wl_display));
+ }
+ vkStream->read((wl_surface**)&forUnmarshaling->surface, sizeof(wl_surface*));
+ if (forUnmarshaling->surface)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->surface, sizeof(wl_surface));
+ vkStream->read((wl_surface*)forUnmarshaling->surface, sizeof(wl_surface));
+ }
+}
+
+VkResult marshal_vkCreateWaylandSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkWaylandSurfaceCreateInfoKHR(vkStream, (const VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateWaylandSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateWaylandSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateWaylandSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkWaylandSurfaceCreateInfoKHR));
+ unmarshal_VkWaylandSurfaceCreateInfoKHR(vkStream, (VkWaylandSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateWaylandSurfaceKHR_VkResult_return;
+}
+
+VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ wl_display* display)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((wl_display*)display, sizeof(wl_display));
+ VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
+}
+
+VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ wl_display* display)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((wl_display*)display, sizeof(wl_display));
+ VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_mir_surface
+void marshal_VkMirSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkMirSurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkMirSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
+ vkStream->write((MirConnection**)&forMarshaling->connection, sizeof(MirConnection*));
+ if (forMarshaling->connection)
+ {
+ vkStream->write((MirConnection*)forMarshaling->connection, sizeof(MirConnection));
+ }
+ vkStream->write((MirSurface**)&forMarshaling->mirSurface, sizeof(MirSurface*));
+ if (forMarshaling->mirSurface)
+ {
+ vkStream->write((MirSurface*)forMarshaling->mirSurface, sizeof(MirSurface));
+ }
+}
+
+void unmarshal_VkMirSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkMirSurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkMirSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkMirSurfaceCreateFlagsKHR));
+ vkStream->read((MirConnection**)&forUnmarshaling->connection, sizeof(MirConnection*));
+ if (forUnmarshaling->connection)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->connection, sizeof(MirConnection));
+ vkStream->read((MirConnection*)forUnmarshaling->connection, sizeof(MirConnection));
+ }
+ vkStream->read((MirSurface**)&forUnmarshaling->mirSurface, sizeof(MirSurface*));
+ if (forUnmarshaling->mirSurface)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->mirSurface, sizeof(MirSurface));
+ vkStream->read((MirSurface*)forUnmarshaling->mirSurface, sizeof(MirSurface));
+ }
+}
+
+VkResult marshal_vkCreateMirSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkMirSurfaceCreateInfoKHR(vkStream, (const VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateMirSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateMirSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateMirSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkMirSurfaceCreateInfoKHR));
+ unmarshal_VkMirSurfaceCreateInfoKHR(vkStream, (VkMirSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateMirSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateMirSurfaceKHR_VkResult_return;
+}
+
+VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->read((MirConnection*)connection, sizeof(MirConnection));
+ VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return marshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+}
+
+VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ vkStream->write((MirConnection*)connection, sizeof(MirConnection));
+ VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_android_surface
+void marshal_VkAndroidSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkAndroidSurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkAndroidSurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
+ vkStream->write((ANativeWindow**)&forMarshaling->window, sizeof(ANativeWindow*));
+ if (forMarshaling->window)
+ {
+ vkStream->write((ANativeWindow*)forMarshaling->window, sizeof(ANativeWindow));
+ }
+}
+
+void unmarshal_VkAndroidSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkAndroidSurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkAndroidSurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkAndroidSurfaceCreateFlagsKHR));
+ vkStream->read((ANativeWindow**)&forUnmarshaling->window, sizeof(ANativeWindow*));
+ if (forUnmarshaling->window)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->window, sizeof(ANativeWindow));
+ vkStream->read((ANativeWindow*)forUnmarshaling->window, sizeof(ANativeWindow));
+ }
+}
+
+VkResult marshal_vkCreateAndroidSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkAndroidSurfaceCreateInfoKHR(vkStream, (const VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateAndroidSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkAndroidSurfaceCreateInfoKHR));
+ unmarshal_VkAndroidSurfaceCreateInfoKHR(vkStream, (VkAndroidSurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateAndroidSurfaceKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_win32_surface
+void marshal_VkWin32SurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkWin32SurfaceCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkWin32SurfaceCreateFlagsKHR*)&forMarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
+ vkStream->write((HINSTANCE*)&forMarshaling->hinstance, sizeof(HINSTANCE));
+ vkStream->write((HWND*)&forMarshaling->hwnd, sizeof(HWND));
+}
+
+void unmarshal_VkWin32SurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkWin32SurfaceCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkWin32SurfaceCreateFlagsKHR*)&forUnmarshaling->flags, sizeof(VkWin32SurfaceCreateFlagsKHR));
+ vkStream->read((HINSTANCE*)&forUnmarshaling->hinstance, sizeof(HINSTANCE));
+ vkStream->read((HWND*)&forUnmarshaling->hwnd, sizeof(HWND));
+}
+
+VkResult marshal_vkCreateWin32SurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkWin32SurfaceCreateInfoKHR(vkStream, (const VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateWin32SurfaceKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateWin32SurfaceKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateWin32SurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkWin32SurfaceCreateInfoKHR));
+ unmarshal_VkWin32SurfaceCreateInfoKHR(vkStream, (VkWin32SurfaceCreateInfoKHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateWin32SurfaceKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateWin32SurfaceKHR_VkResult_return;
+}
+
+VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+}
+
+VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)&queueFamilyIndex, sizeof(uint32_t));
+ VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
+ return unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
+}
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+void marshal_vkGetPhysicalDeviceFeatures2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void unmarshal_vkGetPhysicalDeviceFeatures2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceFeatures2(vkStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
+}
+
+void marshal_vkGetPhysicalDeviceProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceProperties2(vkStream, (VkPhysicalDeviceProperties2*)(pProperties));
+}
+
+void marshal_vkGetPhysicalDeviceFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ marshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ unmarshal_VkFormatProperties2(vkStream, (VkFormatProperties2*)(pFormatProperties));
+}
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (const VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+ marshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+ VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pImageFormatInfo, sizeof(const VkPhysicalDeviceImageFormatInfo2));
+ unmarshal_VkPhysicalDeviceImageFormatInfo2(vkStream, (VkPhysicalDeviceImageFormatInfo2*)(pImageFormatInfo));
+ unmarshal_VkImageFormatProperties2(vkStream, (VkImageFormatProperties2*)(pImageFormatProperties));
+ VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
+}
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ marshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
+ {
+ unmarshal_VkQueueFamilyProperties2(vkStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
+ }
+}
+
+void marshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkPhysicalDeviceMemoryProperties2(vkStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
+}
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (const VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+ }
+}
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pFormatInfo, sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
+ unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(vkStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(pFormatInfo));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkSparseImageFormatProperties2(vkStream, (VkSparseImageFormatProperties2*)(pProperties + i));
+ }
+}
+
+#endif
+#ifdef VK_KHR_device_group
+void marshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&heapIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+ vkStream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void unmarshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&heapIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&localDeviceIndex, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&remoteDeviceIndex, sizeof(uint32_t));
+ vkStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
+}
+
+void marshal_vkCmdSetDeviceMaskKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdSetDeviceMaskKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&deviceMask, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDispatchBaseKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&baseGroupX, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&baseGroupY, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDispatchBaseKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&baseGroupX, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&baseGroupY, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&baseGroupZ, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountX, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountY, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&groupCountZ, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+void marshal_vkTrimCommandPoolKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->write((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+void unmarshal_vkTrimCommandPoolKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkCommandPool*)&commandPool, sizeof(VkCommandPool));
+ vkStream->read((VkCommandPoolTrimFlags*)&flags, sizeof(VkCommandPoolTrimFlags));
+}
+
+#endif
+#ifdef VK_KHR_device_group_creation
+VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+ {
+ marshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+ }
+ VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
+ vkStream->read(&marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
+ {
+ unmarshal_VkPhysicalDeviceGroupProperties(vkStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
+ }
+ VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+void marshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (const VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+ marshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalBufferInfo, sizeof(const VkPhysicalDeviceExternalBufferInfo));
+ unmarshal_VkPhysicalDeviceExternalBufferInfo(vkStream, (VkPhysicalDeviceExternalBufferInfo*)(pExternalBufferInfo));
+ unmarshal_VkExternalBufferProperties(vkStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportMemoryWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkImportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportMemoryWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkExportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportMemoryWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((const SECURITY_ATTRIBUTES**)&forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forMarshaling->pAttributes)
+ {
+ vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->write((DWORD*)&forMarshaling->dwAccess, sizeof(DWORD));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkExportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportMemoryWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((SECURITY_ATTRIBUTES**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forUnmarshaling->pAttributes)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ vkStream->read((SECURITY_ATTRIBUTES*)forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->read((DWORD*)&forUnmarshaling->dwAccess, sizeof(DWORD));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkMemoryWin32HandlePropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkMemoryWin32HandlePropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void marshal_VkMemoryGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkMemoryGetWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void unmarshal_VkMemoryGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkMemoryGetWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+VkResult marshal_vkGetMemoryWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkMemoryGetWin32HandleInfoKHR(vkStream, (const VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult marshal_vkGetMemoryWin32HandleKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryWin32HandleKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkMemoryGetWin32HandleInfoKHR));
+ unmarshal_VkMemoryGetWin32HandleInfoKHR(vkStream, (VkMemoryGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryWin32HandleKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ HANDLE handle,
+ VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((HANDLE*)&handle, sizeof(HANDLE));
+ marshal_VkMemoryWin32HandlePropertiesKHR(vkStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
+ VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ HANDLE handle,
+ VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((HANDLE*)&handle, sizeof(HANDLE));
+ unmarshal_VkMemoryWin32HandlePropertiesKHR(vkStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
+ VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void marshal_VkImportMemoryFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportMemoryFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((int*)&forMarshaling->fd, sizeof(int));
+}
+
+void unmarshal_VkImportMemoryFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportMemoryFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
+}
+
+void marshal_VkMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkMemoryFdPropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkMemoryFdPropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void marshal_VkMemoryGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkMemoryGetFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+void unmarshal_VkMemoryGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkMemoryGetFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+}
+
+VkResult marshal_vkGetMemoryFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkMemoryGetFdInfoKHR(vkStream, (const VkMemoryGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->read((int*)pFd, sizeof(int));
+ VkResult marshal_vkGetMemoryFdKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryFdKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkMemoryGetFdInfoKHR));
+ unmarshal_VkMemoryGetFdInfoKHR(vkStream, (VkMemoryGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->write((int*)pFd, sizeof(int));
+ VkResult unmarshal_vkGetMemoryFdKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryFdKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ int fd,
+ VkMemoryFdPropertiesKHR* pMemoryFdProperties)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((int*)&fd, sizeof(int));
+ marshal_VkMemoryFdPropertiesKHR(vkStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
+ VkResult marshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ int fd,
+ VkMemoryFdPropertiesKHR* pMemoryFdProperties)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((int*)&fd, sizeof(int));
+ unmarshal_VkMemoryFdPropertiesKHR(vkStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
+ VkResult unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryFdPropertiesKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanStream* vkStream,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->acquireCount, sizeof(uint32_t));
+ vkStream->write((const VkDeviceMemory*)forMarshaling->pAcquireSyncs, forMarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->write((const uint64_t*)forMarshaling->pAcquireKeys, forMarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->write((const uint32_t*)forMarshaling->pAcquireTimeouts, forMarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->releaseCount, sizeof(uint32_t));
+ vkStream->write((const VkDeviceMemory*)forMarshaling->pReleaseSyncs, forMarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->write((const uint64_t*)forMarshaling->pReleaseKeys, forMarshaling->releaseCount * sizeof(const uint64_t));
+}
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanStream* vkStream,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->acquireCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->read((VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireTimeouts, forUnmarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pAcquireTimeouts, forUnmarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->releaseCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->read((VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->alloc((void**)&forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+void marshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (const VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+ marshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalSemaphoreInfo, sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
+ unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(vkStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(pExternalSemaphoreInfo));
+ unmarshal_VkExternalSemaphoreProperties(vkStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void marshal_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportSemaphoreWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkSemaphoreImportFlags*)&forMarshaling->flags, sizeof(VkSemaphoreImportFlags));
+ vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+ vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportSemaphoreWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkSemaphoreImportFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreImportFlags));
+ vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+ vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((const SECURITY_ATTRIBUTES**)&forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forMarshaling->pAttributes)
+ {
+ vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->write((DWORD*)&forMarshaling->dwAccess, sizeof(DWORD));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportSemaphoreWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((SECURITY_ATTRIBUTES**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forUnmarshaling->pAttributes)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ vkStream->read((SECURITY_ATTRIBUTES*)forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->read((DWORD*)&forUnmarshaling->dwAccess, sizeof(DWORD));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkD3D12FenceSubmitInfoKHR(
+ VulkanStream* vkStream,
+ const VkD3D12FenceSubmitInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->waitSemaphoreValuesCount, sizeof(uint32_t));
+ vkStream->write((const uint64_t**)&forMarshaling->pWaitSemaphoreValues, sizeof(const uint64_t*));
+ if (forMarshaling->pWaitSemaphoreValues)
+ {
+ vkStream->write((const uint64_t*)forMarshaling->pWaitSemaphoreValues, forMarshaling->waitSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->signalSemaphoreValuesCount, sizeof(uint32_t));
+ vkStream->write((const uint64_t**)&forMarshaling->pSignalSemaphoreValues, sizeof(const uint64_t*));
+ if (forMarshaling->pSignalSemaphoreValues)
+ {
+ vkStream->write((const uint64_t*)forMarshaling->pSignalSemaphoreValues, forMarshaling->signalSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+}
+
+void unmarshal_VkD3D12FenceSubmitInfoKHR(
+ VulkanStream* vkStream,
+ VkD3D12FenceSubmitInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->waitSemaphoreValuesCount, sizeof(uint32_t));
+ vkStream->read((uint64_t**)&forUnmarshaling->pWaitSemaphoreValues, sizeof(const uint64_t*));
+ if (forUnmarshaling->pWaitSemaphoreValues)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pWaitSemaphoreValues, forUnmarshaling->waitSemaphoreValuesCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pWaitSemaphoreValues, forUnmarshaling->waitSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->signalSemaphoreValuesCount, sizeof(uint32_t));
+ vkStream->read((uint64_t**)&forUnmarshaling->pSignalSemaphoreValues, sizeof(const uint64_t*));
+ if (forUnmarshaling->pSignalSemaphoreValues)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pSignalSemaphoreValues, forUnmarshaling->signalSemaphoreValuesCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pSignalSemaphoreValues, forUnmarshaling->signalSemaphoreValuesCount * sizeof(const uint64_t));
+ }
+}
+
+void marshal_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkSemaphoreGetWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+VkResult marshal_vkImportSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImportSemaphoreWin32HandleInfoKHR(vkStream, (const VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
+ VkResult marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
+ vkStream->read(&marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkImportSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pImportSemaphoreWin32HandleInfo, sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
+ unmarshal_VkImportSemaphoreWin32HandleInfoKHR(vkStream, (VkImportSemaphoreWin32HandleInfoKHR*)(pImportSemaphoreWin32HandleInfo));
+ VkResult unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkImportSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSemaphoreGetWin32HandleInfoKHR(vkStream, (const VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
+ unmarshal_VkSemaphoreGetWin32HandleInfoKHR(vkStream, (VkSemaphoreGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetSemaphoreWin32HandleKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void marshal_VkImportSemaphoreFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportSemaphoreFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkSemaphoreImportFlags*)&forMarshaling->flags, sizeof(VkSemaphoreImportFlags));
+ vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+ vkStream->write((int*)&forMarshaling->fd, sizeof(int));
+}
+
+void unmarshal_VkImportSemaphoreFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportSemaphoreFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkSemaphoreImportFlags*)&forUnmarshaling->flags, sizeof(VkSemaphoreImportFlags));
+ vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+ vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
+}
+
+void marshal_VkSemaphoreGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkSemaphoreGetFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSemaphore*)&forMarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->write((VkExternalSemaphoreHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+void unmarshal_VkSemaphoreGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkSemaphoreGetFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSemaphore*)&forUnmarshaling->semaphore, sizeof(VkSemaphore));
+ vkStream->read((VkExternalSemaphoreHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalSemaphoreHandleTypeFlagBits));
+}
+
+VkResult marshal_vkImportSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImportSemaphoreFdInfoKHR(vkStream, (const VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
+ VkResult marshal_vkImportSemaphoreFdKHR_VkResult_return;
+ vkStream->read(&marshal_vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkImportSemaphoreFdKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkImportSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pImportSemaphoreFdInfo, sizeof(const VkImportSemaphoreFdInfoKHR));
+ unmarshal_VkImportSemaphoreFdInfoKHR(vkStream, (VkImportSemaphoreFdInfoKHR*)(pImportSemaphoreFdInfo));
+ VkResult unmarshal_vkImportSemaphoreFdKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkImportSemaphoreFdKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSemaphoreGetFdInfoKHR(vkStream, (const VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->read((int*)pFd, sizeof(int));
+ VkResult marshal_vkGetSemaphoreFdKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetSemaphoreFdKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkSemaphoreGetFdInfoKHR));
+ unmarshal_VkSemaphoreGetFdInfoKHR(vkStream, (VkSemaphoreGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->write((int*)pFd, sizeof(int));
+ VkResult unmarshal_vkGetSemaphoreFdKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetSemaphoreFdKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxPushDescriptors, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPushDescriptors, sizeof(uint32_t));
+}
+
+void marshal_vkCmdPushDescriptorSetKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t set,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->write((uint32_t*)&set, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+ {
+ marshal_VkWriteDescriptorSet(vkStream, (const VkWriteDescriptorSet*)(pDescriptorWrites + i));
+ }
+}
+
+void unmarshal_vkCmdPushDescriptorSetKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t set,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineBindPoint*)&pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->read((uint32_t*)&set, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&descriptorWriteCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDescriptorWrites, ((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
+ for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
+ {
+ unmarshal_VkWriteDescriptorSet(vkStream, (VkWriteDescriptorSet*)(pDescriptorWrites + i));
+ }
+}
+
+void marshal_vkCmdPushDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ VkPipelineLayout layout,
+ uint32_t set,
+ const void* pData)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->write((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->write((uint32_t*)&set, sizeof(uint32_t));
+ vkStream->write((const void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->write((const void*)pData, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_vkCmdPushDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ VkPipelineLayout layout,
+ uint32_t set,
+ const void* pData)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->read((VkPipelineLayout*)&layout, sizeof(VkPipelineLayout));
+ vkStream->read((uint32_t*)&set, sizeof(uint32_t));
+ vkStream->read((void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->alloc((void**)&pData, sizeof(const uint8_t));
+ vkStream->read((void*)pData, sizeof(const uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void marshal_VkRectLayerKHR(
+ VulkanStream* vkStream,
+ const VkRectLayerKHR* forMarshaling)
+{
+ marshal_VkOffset2D(vkStream, (VkOffset2D*)(&forMarshaling->offset));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->extent));
+ vkStream->write((uint32_t*)&forMarshaling->layer, sizeof(uint32_t));
+}
+
+void unmarshal_VkRectLayerKHR(
+ VulkanStream* vkStream,
+ VkRectLayerKHR* forUnmarshaling)
+{
+ unmarshal_VkOffset2D(vkStream, (VkOffset2D*)(&forUnmarshaling->offset));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->extent));
+ vkStream->read((uint32_t*)&forUnmarshaling->layer, sizeof(uint32_t));
+}
+
+void marshal_VkPresentRegionKHR(
+ VulkanStream* vkStream,
+ const VkPresentRegionKHR* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->rectangleCount, sizeof(uint32_t));
+ vkStream->write((const VkRectLayerKHR**)&forMarshaling->pRectangles, sizeof(const VkRectLayerKHR*));
+ if (forMarshaling->pRectangles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->rectangleCount; ++i)
+ {
+ marshal_VkRectLayerKHR(vkStream, (const VkRectLayerKHR*)(forMarshaling->pRectangles + i));
+ }
+ }
+}
+
+void unmarshal_VkPresentRegionKHR(
+ VulkanStream* vkStream,
+ VkPresentRegionKHR* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->rectangleCount, sizeof(uint32_t));
+ vkStream->read((VkRectLayerKHR**)&forUnmarshaling->pRectangles, sizeof(const VkRectLayerKHR*));
+ if (forUnmarshaling->pRectangles)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pRectangles, forUnmarshaling->rectangleCount * sizeof(const VkRectLayerKHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->rectangleCount; ++i)
+ {
+ unmarshal_VkRectLayerKHR(vkStream, (VkRectLayerKHR*)(forUnmarshaling->pRectangles + i));
+ }
+ }
+}
+
+void marshal_VkPresentRegionsKHR(
+ VulkanStream* vkStream,
+ const VkPresentRegionsKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->write((const VkPresentRegionKHR**)&forMarshaling->pRegions, sizeof(const VkPresentRegionKHR*));
+ if (forMarshaling->pRegions)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->swapchainCount; ++i)
+ {
+ marshal_VkPresentRegionKHR(vkStream, (const VkPresentRegionKHR*)(forMarshaling->pRegions + i));
+ }
+ }
+}
+
+void unmarshal_VkPresentRegionsKHR(
+ VulkanStream* vkStream,
+ VkPresentRegionsKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->read((VkPresentRegionKHR**)&forUnmarshaling->pRegions, sizeof(const VkPresentRegionKHR*));
+ if (forUnmarshaling->pRegions)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pRegions, forUnmarshaling->swapchainCount * sizeof(const VkPresentRegionKHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->swapchainCount; ++i)
+ {
+ unmarshal_VkPresentRegionKHR(vkStream, (VkPresentRegionKHR*)(forUnmarshaling->pRegions + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+VkResult marshal_vkCreateDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (const VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ VkResult marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorUpdateTemplateCreateInfo));
+ unmarshal_VkDescriptorUpdateTemplateCreateInfo(vkStream, (VkDescriptorUpdateTemplateCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
+}
+
+void marshal_vkDestroyDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_vkUpdateDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+ vkStream->write((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->write((const void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->write((const void*)pData, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_vkUpdateDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDescriptorSet*)&descriptorSet, sizeof(VkDescriptorSet));
+ vkStream->read((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate, sizeof(VkDescriptorUpdateTemplate));
+ vkStream->read((void**)&pData, sizeof(const void*));
+ if (pData)
+ {
+ vkStream->alloc((void**)&pData, sizeof(const uint8_t));
+ vkStream->read((void*)pData, sizeof(const uint8_t));
+ }
+}
+
+#endif
+#ifdef VK_KHR_create_renderpass2
+void marshal_VkAttachmentDescription2KHR(
+ VulkanStream* vkStream,
+ const VkAttachmentDescription2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkAttachmentDescriptionFlags*)&forMarshaling->flags, sizeof(VkAttachmentDescriptionFlags));
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->write((VkAttachmentLoadOp*)&forMarshaling->loadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->write((VkAttachmentStoreOp*)&forMarshaling->storeOp, sizeof(VkAttachmentStoreOp));
+ vkStream->write((VkAttachmentLoadOp*)&forMarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->write((VkAttachmentStoreOp*)&forMarshaling->stencilStoreOp, sizeof(VkAttachmentStoreOp));
+ vkStream->write((VkImageLayout*)&forMarshaling->initialLayout, sizeof(VkImageLayout));
+ vkStream->write((VkImageLayout*)&forMarshaling->finalLayout, sizeof(VkImageLayout));
+}
+
+void unmarshal_VkAttachmentDescription2KHR(
+ VulkanStream* vkStream,
+ VkAttachmentDescription2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkAttachmentDescriptionFlags*)&forUnmarshaling->flags, sizeof(VkAttachmentDescriptionFlags));
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->samples, sizeof(VkSampleCountFlagBits));
+ vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->loadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->storeOp, sizeof(VkAttachmentStoreOp));
+ vkStream->read((VkAttachmentLoadOp*)&forUnmarshaling->stencilLoadOp, sizeof(VkAttachmentLoadOp));
+ vkStream->read((VkAttachmentStoreOp*)&forUnmarshaling->stencilStoreOp, sizeof(VkAttachmentStoreOp));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->initialLayout, sizeof(VkImageLayout));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->finalLayout, sizeof(VkImageLayout));
+}
+
+void marshal_VkAttachmentReference2KHR(
+ VulkanStream* vkStream,
+ const VkAttachmentReference2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->attachment, sizeof(uint32_t));
+ vkStream->write((VkImageLayout*)&forMarshaling->layout, sizeof(VkImageLayout));
+ vkStream->write((VkImageAspectFlags*)&forMarshaling->aspectMask, sizeof(VkImageAspectFlags));
+}
+
+void unmarshal_VkAttachmentReference2KHR(
+ VulkanStream* vkStream,
+ VkAttachmentReference2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->attachment, sizeof(uint32_t));
+ vkStream->read((VkImageLayout*)&forUnmarshaling->layout, sizeof(VkImageLayout));
+ vkStream->read((VkImageAspectFlags*)&forUnmarshaling->aspectMask, sizeof(VkImageAspectFlags));
+}
+
+void marshal_VkSubpassDescription2KHR(
+ VulkanStream* vkStream,
+ const VkSubpassDescription2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSubpassDescriptionFlags*)&forMarshaling->flags, sizeof(VkSubpassDescriptionFlags));
+ vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((uint32_t*)&forMarshaling->viewMask, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->inputAttachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->inputAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pInputAttachments + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->colorAttachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pColorAttachments + i));
+ }
+ vkStream->write((const VkAttachmentReference2KHR**)&forMarshaling->pResolveAttachments, sizeof(const VkAttachmentReference2KHR*));
+ if (forMarshaling->pResolveAttachments)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->colorAttachmentCount; ++i)
+ {
+ marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pResolveAttachments + i));
+ }
+ }
+ vkStream->write((const VkAttachmentReference2KHR**)&forMarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference2KHR*));
+ if (forMarshaling->pDepthStencilAttachment)
+ {
+ marshal_VkAttachmentReference2KHR(vkStream, (const VkAttachmentReference2KHR*)(forMarshaling->pDepthStencilAttachment));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->preserveAttachmentCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pPreserveAttachments, forMarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkSubpassDescription2KHR(
+ VulkanStream* vkStream,
+ VkSubpassDescription2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSubpassDescriptionFlags*)&forUnmarshaling->flags, sizeof(VkSubpassDescriptionFlags));
+ vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((uint32_t*)&forUnmarshaling->viewMask, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->inputAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pInputAttachments, forUnmarshaling->inputAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->inputAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference2KHR(vkStream, (VkAttachmentReference2KHR*)(forUnmarshaling->pInputAttachments + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->colorAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pColorAttachments, forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference2KHR(vkStream, (VkAttachmentReference2KHR*)(forUnmarshaling->pColorAttachments + i));
+ }
+ vkStream->read((VkAttachmentReference2KHR**)&forUnmarshaling->pResolveAttachments, sizeof(const VkAttachmentReference2KHR*));
+ if (forUnmarshaling->pResolveAttachments)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pResolveAttachments, forUnmarshaling->colorAttachmentCount * sizeof(const VkAttachmentReference2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->colorAttachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentReference2KHR(vkStream, (VkAttachmentReference2KHR*)(forUnmarshaling->pResolveAttachments + i));
+ }
+ }
+ vkStream->read((VkAttachmentReference2KHR**)&forUnmarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference2KHR*));
+ if (forUnmarshaling->pDepthStencilAttachment)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pDepthStencilAttachment, sizeof(const VkAttachmentReference2KHR));
+ unmarshal_VkAttachmentReference2KHR(vkStream, (VkAttachmentReference2KHR*)(forUnmarshaling->pDepthStencilAttachment));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->preserveAttachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPreserveAttachments, forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pPreserveAttachments, forUnmarshaling->preserveAttachmentCount * sizeof(const uint32_t));
+}
+
+void marshal_VkSubpassDependency2KHR(
+ VulkanStream* vkStream,
+ const VkSubpassDependency2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->srcSubpass, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dstSubpass, sizeof(uint32_t));
+ vkStream->write((VkPipelineStageFlags*)&forMarshaling->srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkPipelineStageFlags*)&forMarshaling->dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkAccessFlags*)&forMarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->write((VkDependencyFlags*)&forMarshaling->dependencyFlags, sizeof(VkDependencyFlags));
+ vkStream->write((int32_t*)&forMarshaling->viewOffset, sizeof(int32_t));
+}
+
+void unmarshal_VkSubpassDependency2KHR(
+ VulkanStream* vkStream,
+ VkSubpassDependency2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->srcSubpass, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dstSubpass, sizeof(uint32_t));
+ vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->srcStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->dstStageMask, sizeof(VkPipelineStageFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->srcAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkAccessFlags*)&forUnmarshaling->dstAccessMask, sizeof(VkAccessFlags));
+ vkStream->read((VkDependencyFlags*)&forUnmarshaling->dependencyFlags, sizeof(VkDependencyFlags));
+ vkStream->read((int32_t*)&forUnmarshaling->viewOffset, sizeof(int32_t));
+}
+
+void marshal_VkRenderPassCreateInfo2KHR(
+ VulkanStream* vkStream,
+ const VkRenderPassCreateInfo2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkRenderPassCreateFlags*)&forMarshaling->flags, sizeof(VkRenderPassCreateFlags));
+ vkStream->write((uint32_t*)&forMarshaling->attachmentCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentCount; ++i)
+ {
+ marshal_VkAttachmentDescription2KHR(vkStream, (const VkAttachmentDescription2KHR*)(forMarshaling->pAttachments + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->subpassCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->subpassCount; ++i)
+ {
+ marshal_VkSubpassDescription2KHR(vkStream, (const VkSubpassDescription2KHR*)(forMarshaling->pSubpasses + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->dependencyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->dependencyCount; ++i)
+ {
+ marshal_VkSubpassDependency2KHR(vkStream, (const VkSubpassDependency2KHR*)(forMarshaling->pDependencies + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->correlatedViewMaskCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pCorrelatedViewMasks, forMarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkRenderPassCreateInfo2KHR(
+ VulkanStream* vkStream,
+ VkRenderPassCreateInfo2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkRenderPassCreateFlags*)&forUnmarshaling->flags, sizeof(VkRenderPassCreateFlags));
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAttachments, forUnmarshaling->attachmentCount * sizeof(const VkAttachmentDescription2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentCount; ++i)
+ {
+ unmarshal_VkAttachmentDescription2KHR(vkStream, (VkAttachmentDescription2KHR*)(forUnmarshaling->pAttachments + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->subpassCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSubpasses, forUnmarshaling->subpassCount * sizeof(const VkSubpassDescription2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->subpassCount; ++i)
+ {
+ unmarshal_VkSubpassDescription2KHR(vkStream, (VkSubpassDescription2KHR*)(forUnmarshaling->pSubpasses + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->dependencyCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDependencies, forUnmarshaling->dependencyCount * sizeof(const VkSubpassDependency2KHR));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->dependencyCount; ++i)
+ {
+ unmarshal_VkSubpassDependency2KHR(vkStream, (VkSubpassDependency2KHR*)(forUnmarshaling->pDependencies + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->correlatedViewMaskCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pCorrelatedViewMasks, forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pCorrelatedViewMasks, forUnmarshaling->correlatedViewMaskCount * sizeof(const uint32_t));
+}
+
+VkResult marshal_vkCreateRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkRenderPassCreateInfo2KHR(vkStream, (const VkRenderPassCreateInfo2KHR*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+ VkResult marshal_vkCreateRenderPass2KHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateRenderPass2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkRenderPassCreateInfo2KHR));
+ unmarshal_VkRenderPassCreateInfo2KHR(vkStream, (VkRenderPassCreateInfo2KHR*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkRenderPass*)pRenderPass, sizeof(VkRenderPass));
+ VkResult unmarshal_vkCreateRenderPass2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateRenderPass2KHR_VkResult_return;
+}
+
+void marshal_VkSubpassBeginInfoKHR(
+ VulkanStream* vkStream,
+ const VkSubpassBeginInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSubpassContents*)&forMarshaling->contents, sizeof(VkSubpassContents));
+}
+
+void unmarshal_VkSubpassBeginInfoKHR(
+ VulkanStream* vkStream,
+ VkSubpassBeginInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSubpassContents*)&forUnmarshaling->contents, sizeof(VkSubpassContents));
+}
+
+void marshal_vkCmdBeginRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkRenderPassBeginInfo(vkStream, (const VkRenderPassBeginInfo*)(pRenderPassBegin));
+ marshal_VkSubpassBeginInfoKHR(vkStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+}
+
+void unmarshal_vkCmdBeginRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pRenderPassBegin, sizeof(const VkRenderPassBeginInfo));
+ unmarshal_VkRenderPassBeginInfo(vkStream, (VkRenderPassBeginInfo*)(pRenderPassBegin));
+ vkStream->alloc((void**)&pSubpassBeginInfo, sizeof(const VkSubpassBeginInfoKHR));
+ unmarshal_VkSubpassBeginInfoKHR(vkStream, (VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+}
+
+void marshal_VkSubpassEndInfoKHR(
+ VulkanStream* vkStream,
+ const VkSubpassEndInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+}
+
+void unmarshal_VkSubpassEndInfoKHR(
+ VulkanStream* vkStream,
+ VkSubpassEndInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+}
+
+void marshal_vkCmdNextSubpass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkSubpassBeginInfoKHR(vkStream, (const VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+ marshal_VkSubpassEndInfoKHR(vkStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+void unmarshal_vkCmdNextSubpass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pSubpassBeginInfo, sizeof(const VkSubpassBeginInfoKHR));
+ unmarshal_VkSubpassBeginInfoKHR(vkStream, (VkSubpassBeginInfoKHR*)(pSubpassBeginInfo));
+ vkStream->alloc((void**)&pSubpassEndInfo, sizeof(const VkSubpassEndInfoKHR));
+ unmarshal_VkSubpassEndInfoKHR(vkStream, (VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+void marshal_vkCmdEndRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkSubpassEndInfoKHR(vkStream, (const VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+void unmarshal_vkCmdEndRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pSubpassEndInfo, sizeof(const VkSubpassEndInfoKHR));
+ unmarshal_VkSubpassEndInfoKHR(vkStream, (VkSubpassEndInfoKHR*)(pSubpassEndInfo));
+}
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->sharedPresentSupportedUsageFlags, sizeof(VkImageUsageFlags));
+}
+
+void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkSharedPresentSurfaceCapabilitiesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->sharedPresentSupportedUsageFlags, sizeof(VkImageUsageFlags));
+}
+
+VkResult marshal_vkGetSwapchainStatusKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ VkResult marshal_vkGetSwapchainStatusKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetSwapchainStatusKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetSwapchainStatusKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ VkResult unmarshal_vkGetSwapchainStatusKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetSwapchainStatusKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+void marshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (const VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+ marshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pExternalFenceInfo, sizeof(const VkPhysicalDeviceExternalFenceInfo));
+ unmarshal_VkPhysicalDeviceExternalFenceInfo(vkStream, (VkPhysicalDeviceExternalFenceInfo*)(pExternalFenceInfo));
+ unmarshal_VkExternalFenceProperties(vkStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
+}
+
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void marshal_VkImportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportFenceWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+ vkStream->write((VkFenceImportFlags*)&forMarshaling->flags, sizeof(VkFenceImportFlags));
+ vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+ vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkImportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportFenceWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+ vkStream->read((VkFenceImportFlags*)&forUnmarshaling->flags, sizeof(VkFenceImportFlags));
+ vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+ vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkExportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportFenceWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((const SECURITY_ATTRIBUTES**)&forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forMarshaling->pAttributes)
+ {
+ vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->write((DWORD*)&forMarshaling->dwAccess, sizeof(DWORD));
+ vkStream->write((LPCWSTR*)&forMarshaling->name, sizeof(LPCWSTR));
+}
+
+void unmarshal_VkExportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportFenceWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((SECURITY_ATTRIBUTES**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forUnmarshaling->pAttributes)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ vkStream->read((SECURITY_ATTRIBUTES*)forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->read((DWORD*)&forUnmarshaling->dwAccess, sizeof(DWORD));
+ vkStream->read((LPCWSTR*)&forUnmarshaling->name, sizeof(LPCWSTR));
+}
+
+void marshal_VkFenceGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkFenceGetWin32HandleInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+ vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+void unmarshal_VkFenceGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkFenceGetWin32HandleInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+ vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+VkResult marshal_vkImportFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImportFenceWin32HandleInfoKHR(vkStream, (const VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
+ VkResult marshal_vkImportFenceWin32HandleKHR_VkResult_return;
+ vkStream->read(&marshal_vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkImportFenceWin32HandleKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkImportFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pImportFenceWin32HandleInfo, sizeof(const VkImportFenceWin32HandleInfoKHR));
+ unmarshal_VkImportFenceWin32HandleInfoKHR(vkStream, (VkImportFenceWin32HandleInfoKHR*)(pImportFenceWin32HandleInfo));
+ VkResult unmarshal_vkImportFenceWin32HandleKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkImportFenceWin32HandleKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkFenceGetWin32HandleInfoKHR(vkStream, (const VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult marshal_vkGetFenceWin32HandleKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetFenceWin32HandleKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetWin32HandleInfo, sizeof(const VkFenceGetWin32HandleInfoKHR));
+ unmarshal_VkFenceGetWin32HandleInfoKHR(vkStream, (VkFenceGetWin32HandleInfoKHR*)(pGetWin32HandleInfo));
+ vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult unmarshal_vkGetFenceWin32HandleKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetFenceWin32HandleKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void marshal_VkImportFenceFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportFenceFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+ vkStream->write((VkFenceImportFlags*)&forMarshaling->flags, sizeof(VkFenceImportFlags));
+ vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+ vkStream->write((int*)&forMarshaling->fd, sizeof(int));
+}
+
+void unmarshal_VkImportFenceFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportFenceFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+ vkStream->read((VkFenceImportFlags*)&forUnmarshaling->flags, sizeof(VkFenceImportFlags));
+ vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+ vkStream->read((int*)&forUnmarshaling->fd, sizeof(int));
+}
+
+void marshal_VkFenceGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkFenceGetFdInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkFence*)&forMarshaling->fence, sizeof(VkFence));
+ vkStream->write((VkExternalFenceHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+void unmarshal_VkFenceGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkFenceGetFdInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkFence*)&forUnmarshaling->fence, sizeof(VkFence));
+ vkStream->read((VkExternalFenceHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalFenceHandleTypeFlagBits));
+}
+
+VkResult marshal_vkImportFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImportFenceFdInfoKHR(vkStream, (const VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
+ VkResult marshal_vkImportFenceFdKHR_VkResult_return;
+ vkStream->read(&marshal_vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkImportFenceFdKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkImportFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pImportFenceFdInfo, sizeof(const VkImportFenceFdInfoKHR));
+ unmarshal_VkImportFenceFdInfoKHR(vkStream, (VkImportFenceFdInfoKHR*)(pImportFenceFdInfo));
+ VkResult unmarshal_vkImportFenceFdKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkImportFenceFdKHR_VkResult_return;
+}
+
+VkResult marshal_vkGetFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkFenceGetFdInfoKHR(vkStream, (const VkFenceGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->read((int*)pFd, sizeof(int));
+ VkResult marshal_vkGetFenceFdKHR_VkResult_return;
+ vkStream->read(&marshal_vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetFenceFdKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetFdInfoKHR* pGetFdInfo,
+ int* pFd)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pGetFdInfo, sizeof(const VkFenceGetFdInfoKHR));
+ unmarshal_VkFenceGetFdInfoKHR(vkStream, (VkFenceGetFdInfoKHR*)(pGetFdInfo));
+ vkStream->write((int*)pFd, sizeof(int));
+ VkResult unmarshal_vkGetFenceFdKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetFenceFdKHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void marshal_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSurfaceInfo2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSurfaceKHR*)&forMarshaling->surface, sizeof(VkSurfaceKHR));
+}
+
+void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSurfaceInfo2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSurfaceKHR*)&forUnmarshaling->surface, sizeof(VkSurfaceKHR));
+}
+
+void marshal_VkSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilities2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(&forMarshaling->surfaceCapabilities));
+}
+
+void unmarshal_VkSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilities2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkSurfaceCapabilitiesKHR(vkStream, (VkSurfaceCapabilitiesKHR*)(&forUnmarshaling->surfaceCapabilities));
+}
+
+void marshal_VkSurfaceFormat2KHR(
+ VulkanStream* vkStream,
+ const VkSurfaceFormat2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(&forMarshaling->surfaceFormat));
+}
+
+void unmarshal_VkSurfaceFormat2KHR(
+ VulkanStream* vkStream,
+ VkSurfaceFormat2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkSurfaceFormatKHR(vkStream, (VkSurfaceFormatKHR*)(&forUnmarshaling->surfaceFormat));
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+ marshal_VkSurfaceCapabilities2KHR(vkStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
+ VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pSurfaceInfo, sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
+ unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+ unmarshal_VkSurfaceCapabilities2KHR(vkStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormat2KHR* pSurfaceFormats)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (const VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+ vkStream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+ {
+ marshal_VkSurfaceFormat2KHR(vkStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormat2KHR* pSurfaceFormats)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pSurfaceInfo, sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
+ unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(vkStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(pSurfaceInfo));
+ vkStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
+ {
+ unmarshal_VkSurfaceFormat2KHR(vkStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void marshal_VkDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayProperties2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(&forMarshaling->displayProperties));
+}
+
+void unmarshal_VkDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayProperties2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkDisplayPropertiesKHR(vkStream, (VkDisplayPropertiesKHR*)(&forUnmarshaling->displayProperties));
+}
+
+void marshal_VkDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneProperties2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(&forMarshaling->displayPlaneProperties));
+}
+
+void unmarshal_VkDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneProperties2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkDisplayPlanePropertiesKHR(vkStream, (VkDisplayPlanePropertiesKHR*)(&forUnmarshaling->displayPlaneProperties));
+}
+
+void marshal_VkDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeProperties2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(&forMarshaling->displayModeProperties));
+}
+
+void unmarshal_VkDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayModeProperties2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkDisplayModePropertiesKHR(vkStream, (VkDisplayModePropertiesKHR*)(&forUnmarshaling->displayModeProperties));
+}
+
+void marshal_VkDisplayPlaneInfo2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneInfo2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDisplayModeKHR*)&forMarshaling->mode, sizeof(VkDisplayModeKHR));
+ vkStream->write((uint32_t*)&forMarshaling->planeIndex, sizeof(uint32_t));
+}
+
+void unmarshal_VkDisplayPlaneInfo2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneInfo2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDisplayModeKHR*)&forUnmarshaling->mode, sizeof(VkDisplayModeKHR));
+ vkStream->read((uint32_t*)&forUnmarshaling->planeIndex, sizeof(uint32_t));
+}
+
+void marshal_VkDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneCapabilities2KHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(&forMarshaling->capabilities));
+}
+
+void unmarshal_VkDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneCapabilities2KHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkDisplayPlaneCapabilitiesKHR(vkStream, (VkDisplayPlaneCapabilitiesKHR*)(&forUnmarshaling->capabilities));
+}
+
+VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayProperties2KHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayProperties2KHR(vkStream, (VkDisplayProperties2KHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayProperties2KHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayProperties2KHR(vkStream, (VkDisplayProperties2KHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
+}
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlaneProperties2KHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayPlaneProperties2KHR(vkStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlaneProperties2KHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayPlaneProperties2KHR(vkStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModeProperties2KHR* pProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ marshal_VkDisplayModeProperties2KHR(vkStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
+ }
+ VkResult marshal_vkGetDisplayModeProperties2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDisplayModeProperties2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModeProperties2KHR* pProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
+ {
+ unmarshal_VkDisplayModeProperties2KHR(vkStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
+ }
+ VkResult unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDisplayModeProperties2KHR_VkResult_return;
+}
+
+VkResult marshal_vkGetDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+ VkDisplayPlaneCapabilities2KHR* pCapabilities)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkDisplayPlaneInfo2KHR(vkStream, (const VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
+ marshal_VkDisplayPlaneCapabilities2KHR(vkStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
+ VkResult marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
+ vkStream->read(&marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+ VkDisplayPlaneCapabilities2KHR* pCapabilities)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->alloc((void**)&pDisplayPlaneInfo, sizeof(const VkDisplayPlaneInfo2KHR));
+ unmarshal_VkDisplayPlaneInfo2KHR(vkStream, (VkDisplayPlaneInfo2KHR*)(pDisplayPlaneInfo));
+ unmarshal_VkDisplayPlaneCapabilities2KHR(vkStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
+ VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+void marshal_vkGetImageMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageMemoryRequirementsInfo2(vkStream, (const VkImageMemoryRequirementsInfo2*)(pInfo));
+ marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetImageMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkImageMemoryRequirementsInfo2));
+ unmarshal_VkImageMemoryRequirementsInfo2(vkStream, (VkImageMemoryRequirementsInfo2*)(pInfo));
+ unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void marshal_vkGetBufferMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkBufferMemoryRequirementsInfo2(vkStream, (const VkBufferMemoryRequirementsInfo2*)(pInfo));
+ marshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void unmarshal_vkGetBufferMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkBufferMemoryRequirementsInfo2));
+ unmarshal_VkBufferMemoryRequirementsInfo2(vkStream, (VkBufferMemoryRequirementsInfo2*)(pInfo));
+ unmarshal_VkMemoryRequirements2(vkStream, (VkMemoryRequirements2*)(pMemoryRequirements));
+}
+
+void marshal_vkGetImageSparseMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (const VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+ vkStream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ marshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+ }
+}
+
+void unmarshal_vkGetImageSparseMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkImageSparseMemoryRequirementsInfo2));
+ unmarshal_VkImageSparseMemoryRequirementsInfo2(vkStream, (VkImageSparseMemoryRequirementsInfo2*)(pInfo));
+ vkStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
+ {
+ unmarshal_VkSparseImageMemoryRequirements2(vkStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
+ }
+}
+
+#endif
+#ifdef VK_KHR_image_format_list
+void marshal_VkImageFormatListCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkImageFormatListCreateInfoKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->viewFormatCount, sizeof(uint32_t));
+ vkStream->write((const VkFormat*)forMarshaling->pViewFormats, forMarshaling->viewFormatCount * sizeof(const VkFormat));
+}
+
+void unmarshal_VkImageFormatListCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkImageFormatListCreateInfoKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->viewFormatCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pViewFormats, forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
+ vkStream->read((VkFormat*)forUnmarshaling->pViewFormats, forUnmarshaling->viewFormatCount * sizeof(const VkFormat));
+}
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+VkResult marshal_vkCreateSamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (const VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ VkResult marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
+ vkStream->read(&marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkSamplerYcbcrConversionCreateInfo));
+ unmarshal_VkSamplerYcbcrConversionCreateInfo(vkStream, (VkSamplerYcbcrConversionCreateInfo*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSamplerYcbcrConversion*)pYcbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateSamplerYcbcrConversionKHR_VkResult_return;
+}
+
+void marshal_vkDestroySamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroySamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSamplerYcbcrConversion*)&ycbcrConversion, sizeof(VkSamplerYcbcrConversion));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+#endif
+#ifdef VK_KHR_bind_memory2
+VkResult marshal_vkBindBufferMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ marshal_VkBindBufferMemoryInfo(vkStream, (const VkBindBufferMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult marshal_vkBindBufferMemory2KHR_VkResult_return;
+ vkStream->read(&marshal_vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindBufferMemory2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkBindBufferMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ unmarshal_VkBindBufferMemoryInfo(vkStream, (VkBindBufferMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult unmarshal_vkBindBufferMemory2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindBufferMemory2KHR_VkResult_return;
+}
+
+VkResult marshal_vkBindImageMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ marshal_VkBindImageMemoryInfo(vkStream, (const VkBindImageMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult marshal_vkBindImageMemory2KHR_VkResult_return;
+ vkStream->read(&marshal_vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
+ return marshal_vkBindImageMemory2KHR_VkResult_return;
+}
+
+VkResult unmarshal_vkBindImageMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&bindInfoCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pBindInfos, ((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
+ for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
+ {
+ unmarshal_VkBindImageMemoryInfo(vkStream, (VkBindImageMemoryInfo*)(pBindInfos + i));
+ }
+ VkResult unmarshal_vkBindImageMemory2KHR_VkResult_return;
+ vkStream->write(&unmarshal_vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkBindImageMemory2KHR_VkResult_return;
+}
+
+#endif
+#ifdef VK_KHR_maintenance3
+void marshal_vkGetDescriptorSetLayoutSupportKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDescriptorSetLayoutCreateInfo(vkStream, (const VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ marshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+void unmarshal_vkGetDescriptorSetLayoutSupportKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDescriptorSetLayoutCreateInfo));
+ unmarshal_VkDescriptorSetLayoutCreateInfo(vkStream, (VkDescriptorSetLayoutCreateInfo*)(pCreateInfo));
+ unmarshal_VkDescriptorSetLayoutSupport(vkStream, (VkDescriptorSetLayoutSupport*)(pSupport));
+}
+
+#endif
+#ifdef VK_KHR_draw_indirect_count
+void marshal_vkCmdDrawIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDrawIndexedIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndexedIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_KHR_8bit_storage
+void marshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->uniformAndStorageBuffer8BitAccess, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->storagePushConstant8, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice8BitStorageFeaturesKHR* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->storageBuffer8BitAccess, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->uniformAndStorageBuffer8BitAccess, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->storagePushConstant8, sizeof(VkBool32));
+}
+
+#endif
+#ifdef VK_EXT_debug_report
+void marshal_VkDebugReportCallbackCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugReportCallbackCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDebugReportFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugReportFlagsEXT));
+ vkStream->write((PFN_vkDebugReportCallbackEXT*)&forMarshaling->pfnCallback, sizeof(PFN_vkDebugReportCallbackEXT));
+ vkStream->write((void**)&forMarshaling->pUserData, sizeof(void*));
+ if (forMarshaling->pUserData)
+ {
+ vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
+ }
+}
+
+void unmarshal_VkDebugReportCallbackCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugReportCallbackCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDebugReportFlagsEXT*)&forUnmarshaling->flags, sizeof(VkDebugReportFlagsEXT));
+ vkStream->read((PFN_vkDebugReportCallbackEXT*)&forUnmarshaling->pfnCallback, sizeof(PFN_vkDebugReportCallbackEXT));
+ vkStream->read((void**)&forUnmarshaling->pUserData, sizeof(void*));
+ if (forUnmarshaling->pUserData)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
+ }
+}
+
+VkResult marshal_vkCreateDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugReportCallbackEXT* pCallback)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkDebugReportCallbackCreateInfoEXT(vkStream, (const VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+ VkResult marshal_vkCreateDebugReportCallbackEXT_VkResult_return;
+ vkStream->read(&marshal_vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDebugReportCallbackEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugReportCallbackEXT* pCallback)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDebugReportCallbackCreateInfoEXT));
+ unmarshal_VkDebugReportCallbackCreateInfoEXT(vkStream, (VkDebugReportCallbackCreateInfoEXT*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDebugReportCallbackEXT*)pCallback, sizeof(VkDebugReportCallbackEXT));
+ VkResult unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDebugReportCallbackEXT_VkResult_return;
+}
+
+void marshal_vkDestroyDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportCallbackEXT callback,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportCallbackEXT callback,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkDebugReportCallbackEXT*)&callback, sizeof(VkDebugReportCallbackEXT));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_vkDebugReportMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportFlagsEXT flags,
+ VkDebugReportObjectTypeEXT objectType,
+ uint64_t object,
+ size_t location,
+ int32_t messageCode,
+ const char* pLayerPrefix,
+ const char* pMessage)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
+ vkStream->write((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->write((uint64_t*)&object, sizeof(uint64_t));
+ vkStream->write((size_t*)&location, sizeof(size_t));
+ vkStream->write((int32_t*)&messageCode, sizeof(int32_t));
+ vkStream->putString(pLayerPrefix);
+ vkStream->putString(pMessage);
+}
+
+void unmarshal_vkDebugReportMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportFlagsEXT flags,
+ VkDebugReportObjectTypeEXT objectType,
+ uint64_t object,
+ size_t location,
+ int32_t messageCode,
+ const char* pLayerPrefix,
+ const char* pMessage)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkDebugReportFlagsEXT*)&flags, sizeof(VkDebugReportFlagsEXT));
+ vkStream->read((VkDebugReportObjectTypeEXT*)&objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->read((uint64_t*)&object, sizeof(uint64_t));
+ vkStream->read((size_t*)&location, sizeof(size_t));
+ vkStream->read((int32_t*)&messageCode, sizeof(int32_t));
+ vkStream->loadStringInPlace((char**)&pLayerPrefix);
+ vkStream->loadStringInPlace((char**)&pMessage);
+}
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void marshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkRasterizationOrderAMD*)&forMarshaling->rasterizationOrder, sizeof(VkRasterizationOrderAMD));
+}
+
+void unmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationStateRasterizationOrderAMD* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkRasterizationOrderAMD*)&forUnmarshaling->rasterizationOrder, sizeof(VkRasterizationOrderAMD));
+}
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void marshal_VkDebugMarkerObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerObjectNameInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDebugReportObjectTypeEXT*)&forMarshaling->objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->write((uint64_t*)&forMarshaling->object, sizeof(uint64_t));
+ vkStream->putString(forMarshaling->pObjectName);
+}
+
+void unmarshal_VkDebugMarkerObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerObjectNameInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDebugReportObjectTypeEXT*)&forUnmarshaling->objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->read((uint64_t*)&forUnmarshaling->object, sizeof(uint64_t));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pObjectName);
+}
+
+void marshal_VkDebugMarkerObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerObjectTagInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDebugReportObjectTypeEXT*)&forMarshaling->objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->write((uint64_t*)&forMarshaling->object, sizeof(uint64_t));
+ vkStream->write((uint64_t*)&forMarshaling->tagName, sizeof(uint64_t));
+ vkStream->write((size_t*)&forMarshaling->tagSize, sizeof(size_t));
+ vkStream->write((const void*)forMarshaling->pTag, forMarshaling->tagSize * sizeof(const uint8_t));
+}
+
+void unmarshal_VkDebugMarkerObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerObjectTagInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDebugReportObjectTypeEXT*)&forUnmarshaling->objectType, sizeof(VkDebugReportObjectTypeEXT));
+ vkStream->read((uint64_t*)&forUnmarshaling->object, sizeof(uint64_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->tagName, sizeof(uint64_t));
+ vkStream->read((size_t*)&forUnmarshaling->tagSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pTag, forUnmarshaling->tagSize * sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pTag, forUnmarshaling->tagSize * sizeof(const uint8_t));
+}
+
+void marshal_VkDebugMarkerMarkerInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerMarkerInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->putString(forMarshaling->pMarkerName);
+ vkStream->write((float*)forMarshaling->color, 4 * sizeof(float));
+}
+
+void unmarshal_VkDebugMarkerMarkerInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerMarkerInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pMarkerName);
+ vkStream->read((float*)forUnmarshaling->color, 4 * sizeof(float));
+}
+
+VkResult marshal_vkDebugMarkerSetObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDebugMarkerObjectTagInfoEXT(vkStream, (const VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
+ VkResult marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
+ vkStream->read(&marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkDebugMarkerSetObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pTagInfo, sizeof(const VkDebugMarkerObjectTagInfoEXT));
+ unmarshal_VkDebugMarkerObjectTagInfoEXT(vkStream, (VkDebugMarkerObjectTagInfoEXT*)(pTagInfo));
+ VkResult unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkDebugMarkerSetObjectTagEXT_VkResult_return;
+}
+
+VkResult marshal_vkDebugMarkerSetObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDebugMarkerObjectNameInfoEXT(vkStream, (const VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
+ VkResult marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
+ vkStream->read(&marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkDebugMarkerSetObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pNameInfo, sizeof(const VkDebugMarkerObjectNameInfoEXT));
+ unmarshal_VkDebugMarkerObjectNameInfoEXT(vkStream, (VkDebugMarkerObjectNameInfoEXT*)(pNameInfo));
+ VkResult unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkDebugMarkerSetObjectNameEXT_VkResult_return;
+}
+
+void marshal_vkCmdDebugMarkerBeginEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkDebugMarkerMarkerInfoEXT(vkStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+void unmarshal_vkCmdDebugMarkerBeginEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pMarkerInfo, sizeof(const VkDebugMarkerMarkerInfoEXT));
+ unmarshal_VkDebugMarkerMarkerInfoEXT(vkStream, (VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+void marshal_vkCmdDebugMarkerEndEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void unmarshal_vkCmdDebugMarkerEndEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void marshal_vkCmdDebugMarkerInsertEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkDebugMarkerMarkerInfoEXT(vkStream, (const VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+void unmarshal_vkCmdDebugMarkerInsertEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pMarkerInfo, sizeof(const VkDebugMarkerMarkerInfoEXT));
+ unmarshal_VkDebugMarkerMarkerInfoEXT(vkStream, (VkDebugMarkerMarkerInfoEXT*)(pMarkerInfo));
+}
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void marshal_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationImageCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->dedicatedAllocation, sizeof(VkBool32));
+}
+
+void unmarshal_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationImageCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->dedicatedAllocation, sizeof(VkBool32));
+}
+
+void marshal_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->dedicatedAllocation, sizeof(VkBool32));
+}
+
+void unmarshal_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationBufferCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->dedicatedAllocation, sizeof(VkBool32));
+}
+
+void marshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkImage*)&forMarshaling->image, sizeof(VkImage));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+}
+
+void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationMemoryAllocateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkImage*)&forUnmarshaling->image, sizeof(VkImage));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+}
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+void marshal_vkCmdDrawIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void marshal_vkCmdDrawIndexedIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->write((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdDrawIndexedIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&offset, sizeof(VkDeviceSize));
+ vkStream->read((VkBuffer*)&countBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&countBufferOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&maxDrawCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&stride, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void marshal_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanStream* vkStream,
+ const VkTextureLODGatherFormatPropertiesAMD* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->supportsTextureGatherLODBiasAMD, sizeof(VkBool32));
+}
+
+void unmarshal_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanStream* vkStream,
+ VkTextureLODGatherFormatPropertiesAMD* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->supportsTextureGatherLODBiasAMD, sizeof(VkBool32));
+}
+
+#endif
+#ifdef VK_AMD_shader_info
+void marshal_VkShaderResourceUsageAMD(
+ VulkanStream* vkStream,
+ const VkShaderResourceUsageAMD* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->numUsedVgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->numUsedSgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->ldsSizePerLocalWorkGroup, sizeof(uint32_t));
+ vkStream->write((size_t*)&forMarshaling->ldsUsageSizeInBytes, sizeof(size_t));
+ vkStream->write((size_t*)&forMarshaling->scratchMemUsageInBytes, sizeof(size_t));
+}
+
+void unmarshal_VkShaderResourceUsageAMD(
+ VulkanStream* vkStream,
+ VkShaderResourceUsageAMD* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->numUsedVgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->numUsedSgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->ldsSizePerLocalWorkGroup, sizeof(uint32_t));
+ vkStream->read((size_t*)&forUnmarshaling->ldsUsageSizeInBytes, sizeof(size_t));
+ vkStream->read((size_t*)&forUnmarshaling->scratchMemUsageInBytes, sizeof(size_t));
+}
+
+void marshal_VkShaderStatisticsInfoAMD(
+ VulkanStream* vkStream,
+ const VkShaderStatisticsInfoAMD* forMarshaling)
+{
+ vkStream->write((VkShaderStageFlags*)&forMarshaling->shaderStageMask, sizeof(VkShaderStageFlags));
+ marshal_VkShaderResourceUsageAMD(vkStream, (VkShaderResourceUsageAMD*)(&forMarshaling->resourceUsage));
+ vkStream->write((uint32_t*)&forMarshaling->numPhysicalVgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->numPhysicalSgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->numAvailableVgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->numAvailableSgprs, sizeof(uint32_t));
+ vkStream->write((uint32_t*)forMarshaling->computeWorkGroupSize, 3 * sizeof(uint32_t));
+}
+
+void unmarshal_VkShaderStatisticsInfoAMD(
+ VulkanStream* vkStream,
+ VkShaderStatisticsInfoAMD* forUnmarshaling)
+{
+ vkStream->read((VkShaderStageFlags*)&forUnmarshaling->shaderStageMask, sizeof(VkShaderStageFlags));
+ unmarshal_VkShaderResourceUsageAMD(vkStream, (VkShaderResourceUsageAMD*)(&forUnmarshaling->resourceUsage));
+ vkStream->read((uint32_t*)&forUnmarshaling->numPhysicalVgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->numPhysicalSgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->numAvailableVgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->numAvailableSgprs, sizeof(uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->computeWorkGroupSize, 3 * sizeof(uint32_t));
+}
+
+VkResult marshal_vkGetShaderInfoAMD(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkPipeline*)&pipeline, sizeof(VkPipeline));
+ vkStream->write((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
+ vkStream->write((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
+ vkStream->read((size_t*)pInfoSize, sizeof(size_t));
+ vkStream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
+ VkResult marshal_vkGetShaderInfoAMD_VkResult_return;
+ vkStream->read(&marshal_vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetShaderInfoAMD_VkResult_return;
+}
+
+VkResult unmarshal_vkGetShaderInfoAMD(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkPipeline*)&pipeline, sizeof(VkPipeline));
+ vkStream->read((VkShaderStageFlagBits*)&shaderStage, sizeof(VkShaderStageFlagBits));
+ vkStream->read((VkShaderInfoTypeAMD*)&infoType, sizeof(VkShaderInfoTypeAMD));
+ vkStream->write((size_t*)pInfoSize, sizeof(size_t));
+ vkStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
+ VkResult unmarshal_vkGetShaderInfoAMD_VkResult_return;
+ vkStream->write(&unmarshal_vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetShaderInfoAMD_VkResult_return;
+}
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void marshal_VkExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ const VkExternalImageFormatPropertiesNV* forMarshaling)
+{
+ marshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forMarshaling->imageFormatProperties));
+ vkStream->write((VkExternalMemoryFeatureFlagsNV*)&forMarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlagsNV));
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&forMarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&forMarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+void unmarshal_VkExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkExternalImageFormatPropertiesNV* forUnmarshaling)
+{
+ unmarshal_VkImageFormatProperties(vkStream, (VkImageFormatProperties*)(&forUnmarshaling->imageFormatProperties));
+ vkStream->read((VkExternalMemoryFeatureFlagsNV*)&forUnmarshaling->externalMemoryFeatures, sizeof(VkExternalMemoryFeatureFlagsNV));
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->exportFromImportedHandleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->compatibleHandleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->write((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->write((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->write((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->write((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ marshal_VkExternalImageFormatPropertiesNV(vkStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
+ VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkFormat*)&format, sizeof(VkFormat));
+ vkStream->read((VkImageType*)&type, sizeof(VkImageType));
+ vkStream->read((VkImageTiling*)&tiling, sizeof(VkImageTiling));
+ vkStream->read((VkImageUsageFlags*)&usage, sizeof(VkImageUsageFlags));
+ vkStream->read((VkImageCreateFlags*)&flags, sizeof(VkImageCreateFlags));
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ unmarshal_VkExternalImageFormatPropertiesNV(vkStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
+ VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
+}
+
+#endif
+#ifdef VK_NV_external_memory
+void marshal_VkExternalMemoryImageCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkExternalMemoryImageCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+void unmarshal_VkExternalMemoryImageCreateInfoNV(
+ VulkanStream* vkStream,
+ VkExternalMemoryImageCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+void marshal_VkExportMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ const VkExportMemoryAllocateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&forMarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+void unmarshal_VkExportMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ VkExportMemoryAllocateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->handleTypes, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+}
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ const VkImportMemoryWin32HandleInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->write((HANDLE*)&forMarshaling->handle, sizeof(HANDLE));
+}
+
+void unmarshal_VkImportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ VkImportMemoryWin32HandleInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->read((HANDLE*)&forUnmarshaling->handle, sizeof(HANDLE));
+}
+
+void marshal_VkExportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ const VkExportMemoryWin32HandleInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((const SECURITY_ATTRIBUTES**)&forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forMarshaling->pAttributes)
+ {
+ vkStream->write((const SECURITY_ATTRIBUTES*)forMarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->write((DWORD*)&forMarshaling->dwAccess, sizeof(DWORD));
+}
+
+void unmarshal_VkExportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ VkExportMemoryWin32HandleInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((SECURITY_ATTRIBUTES**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES*));
+ if (forUnmarshaling->pAttributes)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ vkStream->read((SECURITY_ATTRIBUTES*)forUnmarshaling->pAttributes, sizeof(const SECURITY_ATTRIBUTES));
+ }
+ vkStream->read((DWORD*)&forUnmarshaling->dwAccess, sizeof(DWORD));
+}
+
+VkResult marshal_vkGetMemoryWin32HandleNV(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkExternalMemoryHandleTypeFlagsNV handleType,
+ HANDLE* pHandle)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->write((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->read((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult marshal_vkGetMemoryWin32HandleNV_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryWin32HandleNV_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryWin32HandleNV(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkExternalMemoryHandleTypeFlagsNV handleType,
+ HANDLE* pHandle)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDeviceMemory*)&memory, sizeof(VkDeviceMemory));
+ vkStream->read((VkExternalMemoryHandleTypeFlagsNV*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
+ vkStream->write((HANDLE*)pHandle, sizeof(HANDLE));
+ VkResult unmarshal_vkGetMemoryWin32HandleNV_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryWin32HandleNV_VkResult_return;
+}
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanStream* vkStream,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->acquireCount, sizeof(uint32_t));
+ vkStream->write((const VkDeviceMemory*)forMarshaling->pAcquireSyncs, forMarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->write((const uint64_t*)forMarshaling->pAcquireKeys, forMarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->write((const uint32_t*)forMarshaling->pAcquireTimeoutMilliseconds, forMarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->releaseCount, sizeof(uint32_t));
+ vkStream->write((const VkDeviceMemory*)forMarshaling->pReleaseSyncs, forMarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->write((const uint64_t*)forMarshaling->pReleaseKeys, forMarshaling->releaseCount * sizeof(const uint64_t));
+}
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanStream* vkStream,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->acquireCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->read((VkDeviceMemory*)forUnmarshaling->pAcquireSyncs, forUnmarshaling->acquireCount * sizeof(const VkDeviceMemory));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pAcquireKeys, forUnmarshaling->acquireCount * sizeof(const uint64_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAcquireTimeoutMilliseconds, forUnmarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pAcquireTimeoutMilliseconds, forUnmarshaling->acquireCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->releaseCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->read((VkDeviceMemory*)forUnmarshaling->pReleaseSyncs, forUnmarshaling->releaseCount * sizeof(const VkDeviceMemory));
+ vkStream->alloc((void**)&forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
+ vkStream->read((uint64_t*)forUnmarshaling->pReleaseKeys, forUnmarshaling->releaseCount * sizeof(const uint64_t));
+}
+
+#endif
+#ifdef VK_EXT_validation_flags
+void marshal_VkValidationFlagsEXT(
+ VulkanStream* vkStream,
+ const VkValidationFlagsEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->disabledValidationCheckCount, sizeof(uint32_t));
+ vkStream->write((const VkValidationCheckEXT*)forMarshaling->pDisabledValidationChecks, forMarshaling->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
+}
+
+void unmarshal_VkValidationFlagsEXT(
+ VulkanStream* vkStream,
+ VkValidationFlagsEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->disabledValidationCheckCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDisabledValidationChecks, forUnmarshaling->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
+ vkStream->read((VkValidationCheckEXT*)forUnmarshaling->pDisabledValidationChecks, forUnmarshaling->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT));
+}
+
+#endif
+#ifdef VK_NN_vi_surface
+void marshal_VkViSurfaceCreateInfoNN(
+ VulkanStream* vkStream,
+ const VkViSurfaceCreateInfoNN* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkViSurfaceCreateFlagsNN*)&forMarshaling->flags, sizeof(VkViSurfaceCreateFlagsNN));
+ vkStream->write((void**)&forMarshaling->window, sizeof(void*));
+ if (forMarshaling->window)
+ {
+ vkStream->write((void*)forMarshaling->window, sizeof(uint8_t));
+ }
+}
+
+void unmarshal_VkViSurfaceCreateInfoNN(
+ VulkanStream* vkStream,
+ VkViSurfaceCreateInfoNN* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkViSurfaceCreateFlagsNN*)&forUnmarshaling->flags, sizeof(VkViSurfaceCreateFlagsNN));
+ vkStream->read((void**)&forUnmarshaling->window, sizeof(void*));
+ if (forUnmarshaling->window)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->window, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->window, sizeof(uint8_t));
+ }
+}
+
+VkResult marshal_vkCreateViSurfaceNN(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkViSurfaceCreateInfoNN* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkViSurfaceCreateInfoNN(vkStream, (const VkViSurfaceCreateInfoNN*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateViSurfaceNN_VkResult_return;
+ vkStream->read(&marshal_vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateViSurfaceNN_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateViSurfaceNN(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkViSurfaceCreateInfoNN* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkViSurfaceCreateInfoNN));
+ unmarshal_VkViSurfaceCreateInfoNN(vkStream, (VkViSurfaceCreateInfoNN*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateViSurfaceNN_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateViSurfaceNN_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void marshal_VkConditionalRenderingBeginInfoEXT(
+ VulkanStream* vkStream,
+ const VkConditionalRenderingBeginInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->write((VkConditionalRenderingFlagsEXT*)&forMarshaling->flags, sizeof(VkConditionalRenderingFlagsEXT));
+}
+
+void unmarshal_VkConditionalRenderingBeginInfoEXT(
+ VulkanStream* vkStream,
+ VkConditionalRenderingBeginInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+ vkStream->read((VkConditionalRenderingFlagsEXT*)&forUnmarshaling->flags, sizeof(VkConditionalRenderingFlagsEXT));
+}
+
+void marshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->conditionalRendering, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->inheritedConditionalRendering, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->conditionalRendering, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->inheritedConditionalRendering, sizeof(VkBool32));
+}
+
+void marshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanStream* vkStream,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->conditionalRenderingEnable, sizeof(VkBool32));
+}
+
+void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanStream* vkStream,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->conditionalRenderingEnable, sizeof(VkBool32));
+}
+
+void marshal_vkCmdBeginConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkConditionalRenderingBeginInfoEXT(vkStream, (const VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
+}
+
+void unmarshal_vkCmdBeginConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pConditionalRenderingBegin, sizeof(const VkConditionalRenderingBeginInfoEXT));
+ unmarshal_VkConditionalRenderingBeginInfoEXT(vkStream, (VkConditionalRenderingBeginInfoEXT*)(pConditionalRenderingBegin));
+}
+
+void marshal_vkCmdEndConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void unmarshal_vkCmdEndConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void marshal_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanStream* vkStream,
+ const VkDeviceGeneratedCommandsFeaturesNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->computeBindingPointSupport, sizeof(VkBool32));
+}
+
+void unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanStream* vkStream,
+ VkDeviceGeneratedCommandsFeaturesNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->computeBindingPointSupport, sizeof(VkBool32));
+}
+
+void marshal_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanStream* vkStream,
+ const VkDeviceGeneratedCommandsLimitsNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxIndirectCommandsLayoutTokenCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxObjectEntryCounts, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->minSequenceCountBufferOffsetAlignment, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->minSequenceIndexBufferOffsetAlignment, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->minCommandsTokenBufferOffsetAlignment, sizeof(uint32_t));
+}
+
+void unmarshal_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanStream* vkStream,
+ VkDeviceGeneratedCommandsLimitsNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxIndirectCommandsLayoutTokenCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxObjectEntryCounts, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->minSequenceCountBufferOffsetAlignment, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->minSequenceIndexBufferOffsetAlignment, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->minCommandsTokenBufferOffsetAlignment, sizeof(uint32_t));
+}
+
+void marshal_VkIndirectCommandsTokenNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsTokenNVX* forMarshaling)
+{
+ vkStream->write((VkIndirectCommandsTokenTypeNVX*)&forMarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->offset, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkIndirectCommandsTokenNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsTokenNVX* forUnmarshaling)
+{
+ vkStream->read((VkIndirectCommandsTokenTypeNVX*)&forUnmarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->offset, sizeof(VkDeviceSize));
+}
+
+void marshal_VkIndirectCommandsLayoutTokenNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsLayoutTokenNVX* forMarshaling)
+{
+ vkStream->write((VkIndirectCommandsTokenTypeNVX*)&forMarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
+ vkStream->write((uint32_t*)&forMarshaling->bindingUnit, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->dynamicCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->divisor, sizeof(uint32_t));
+}
+
+void unmarshal_VkIndirectCommandsLayoutTokenNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsLayoutTokenNVX* forUnmarshaling)
+{
+ vkStream->read((VkIndirectCommandsTokenTypeNVX*)&forUnmarshaling->tokenType, sizeof(VkIndirectCommandsTokenTypeNVX));
+ vkStream->read((uint32_t*)&forUnmarshaling->bindingUnit, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->dynamicCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->divisor, sizeof(uint32_t));
+}
+
+void marshal_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsLayoutCreateInfoNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineBindPoint*)&forMarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->write((VkIndirectCommandsLayoutUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkIndirectCommandsLayoutUsageFlagsNVX));
+ vkStream->write((uint32_t*)&forMarshaling->tokenCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->tokenCount; ++i)
+ {
+ marshal_VkIndirectCommandsLayoutTokenNVX(vkStream, (const VkIndirectCommandsLayoutTokenNVX*)(forMarshaling->pTokens + i));
+ }
+}
+
+void unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsLayoutCreateInfoNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineBindPoint*)&forUnmarshaling->pipelineBindPoint, sizeof(VkPipelineBindPoint));
+ vkStream->read((VkIndirectCommandsLayoutUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkIndirectCommandsLayoutUsageFlagsNVX));
+ vkStream->read((uint32_t*)&forUnmarshaling->tokenCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pTokens, forUnmarshaling->tokenCount * sizeof(const VkIndirectCommandsLayoutTokenNVX));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->tokenCount; ++i)
+ {
+ unmarshal_VkIndirectCommandsLayoutTokenNVX(vkStream, (VkIndirectCommandsLayoutTokenNVX*)(forUnmarshaling->pTokens + i));
+ }
+}
+
+void marshal_VkCmdProcessCommandsInfoNVX(
+ VulkanStream* vkStream,
+ const VkCmdProcessCommandsInfoNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkObjectTableNVX*)&forMarshaling->objectTable, sizeof(VkObjectTableNVX));
+ vkStream->write((VkIndirectCommandsLayoutNVX*)&forMarshaling->indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->write((uint32_t*)&forMarshaling->indirectCommandsTokenCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->indirectCommandsTokenCount; ++i)
+ {
+ marshal_VkIndirectCommandsTokenNVX(vkStream, (const VkIndirectCommandsTokenNVX*)(forMarshaling->pIndirectCommandsTokens + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->maxSequencesCount, sizeof(uint32_t));
+ vkStream->write((VkCommandBuffer*)&forMarshaling->targetCommandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkBuffer*)&forMarshaling->sequencesCountBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->sequencesCountOffset, sizeof(VkDeviceSize));
+ vkStream->write((VkBuffer*)&forMarshaling->sequencesIndexBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&forMarshaling->sequencesIndexOffset, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkCmdProcessCommandsInfoNVX(
+ VulkanStream* vkStream,
+ VkCmdProcessCommandsInfoNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkObjectTableNVX*)&forUnmarshaling->objectTable, sizeof(VkObjectTableNVX));
+ vkStream->read((VkIndirectCommandsLayoutNVX*)&forUnmarshaling->indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->read((uint32_t*)&forUnmarshaling->indirectCommandsTokenCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pIndirectCommandsTokens, forUnmarshaling->indirectCommandsTokenCount * sizeof(const VkIndirectCommandsTokenNVX));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->indirectCommandsTokenCount; ++i)
+ {
+ unmarshal_VkIndirectCommandsTokenNVX(vkStream, (VkIndirectCommandsTokenNVX*)(forUnmarshaling->pIndirectCommandsTokens + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSequencesCount, sizeof(uint32_t));
+ vkStream->read((VkCommandBuffer*)&forUnmarshaling->targetCommandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkBuffer*)&forUnmarshaling->sequencesCountBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->sequencesCountOffset, sizeof(VkDeviceSize));
+ vkStream->read((VkBuffer*)&forUnmarshaling->sequencesIndexBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->sequencesIndexOffset, sizeof(VkDeviceSize));
+}
+
+void marshal_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanStream* vkStream,
+ const VkCmdReserveSpaceForCommandsInfoNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkObjectTableNVX*)&forMarshaling->objectTable, sizeof(VkObjectTableNVX));
+ vkStream->write((VkIndirectCommandsLayoutNVX*)&forMarshaling->indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->write((uint32_t*)&forMarshaling->maxSequencesCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanStream* vkStream,
+ VkCmdReserveSpaceForCommandsInfoNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkObjectTableNVX*)&forUnmarshaling->objectTable, sizeof(VkObjectTableNVX));
+ vkStream->read((VkIndirectCommandsLayoutNVX*)&forUnmarshaling->indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSequencesCount, sizeof(uint32_t));
+}
+
+void marshal_VkObjectTableCreateInfoNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableCreateInfoNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->objectCount, sizeof(uint32_t));
+ vkStream->write((const VkObjectEntryTypeNVX*)forMarshaling->pObjectEntryTypes, forMarshaling->objectCount * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->write((const uint32_t*)forMarshaling->pObjectEntryCounts, forMarshaling->objectCount * sizeof(const uint32_t));
+ vkStream->write((const VkObjectEntryUsageFlagsNVX*)forMarshaling->pObjectEntryUsageFlags, forMarshaling->objectCount * sizeof(const VkObjectEntryUsageFlagsNVX));
+ vkStream->write((uint32_t*)&forMarshaling->maxUniformBuffersPerDescriptor, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxStorageBuffersPerDescriptor, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxStorageImagesPerDescriptor, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxSampledImagesPerDescriptor, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPipelineLayouts, sizeof(uint32_t));
+}
+
+void unmarshal_VkObjectTableCreateInfoNVX(
+ VulkanStream* vkStream,
+ VkObjectTableCreateInfoNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->objectCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pObjectEntryTypes, forUnmarshaling->objectCount * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryTypeNVX*)forUnmarshaling->pObjectEntryTypes, forUnmarshaling->objectCount * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->alloc((void**)&forUnmarshaling->pObjectEntryCounts, forUnmarshaling->objectCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pObjectEntryCounts, forUnmarshaling->objectCount * sizeof(const uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pObjectEntryUsageFlags, forUnmarshaling->objectCount * sizeof(const VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)forUnmarshaling->pObjectEntryUsageFlags, forUnmarshaling->objectCount * sizeof(const VkObjectEntryUsageFlagsNVX));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxUniformBuffersPerDescriptor, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxStorageBuffersPerDescriptor, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxStorageImagesPerDescriptor, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSampledImagesPerDescriptor, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPipelineLayouts, sizeof(uint32_t));
+}
+
+void marshal_VkObjectTableEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+}
+
+void unmarshal_VkObjectTableEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+}
+
+void marshal_VkObjectTablePipelineEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTablePipelineEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->write((VkPipeline*)&forMarshaling->pipeline, sizeof(VkPipeline));
+}
+
+void unmarshal_VkObjectTablePipelineEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTablePipelineEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkPipeline*)&forUnmarshaling->pipeline, sizeof(VkPipeline));
+}
+
+void marshal_VkObjectTableDescriptorSetEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableDescriptorSetEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->write((VkPipelineLayout*)&forMarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->write((VkDescriptorSet*)&forMarshaling->descriptorSet, sizeof(VkDescriptorSet));
+}
+
+void unmarshal_VkObjectTableDescriptorSetEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableDescriptorSetEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkPipelineLayout*)&forUnmarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->read((VkDescriptorSet*)&forUnmarshaling->descriptorSet, sizeof(VkDescriptorSet));
+}
+
+void marshal_VkObjectTableVertexBufferEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableVertexBufferEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+}
+
+void unmarshal_VkObjectTableVertexBufferEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableVertexBufferEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+}
+
+void marshal_VkObjectTableIndexBufferEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableIndexBufferEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->write((VkBuffer*)&forMarshaling->buffer, sizeof(VkBuffer));
+ vkStream->write((VkIndexType*)&forMarshaling->indexType, sizeof(VkIndexType));
+}
+
+void unmarshal_VkObjectTableIndexBufferEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableIndexBufferEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkBuffer*)&forUnmarshaling->buffer, sizeof(VkBuffer));
+ vkStream->read((VkIndexType*)&forUnmarshaling->indexType, sizeof(VkIndexType));
+}
+
+void marshal_VkObjectTablePushConstantEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTablePushConstantEntryNVX* forMarshaling)
+{
+ vkStream->write((VkObjectEntryTypeNVX*)&forMarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->write((VkObjectEntryUsageFlagsNVX*)&forMarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->write((VkPipelineLayout*)&forMarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->write((VkShaderStageFlags*)&forMarshaling->stageFlags, sizeof(VkShaderStageFlags));
+}
+
+void unmarshal_VkObjectTablePushConstantEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTablePushConstantEntryNVX* forUnmarshaling)
+{
+ vkStream->read((VkObjectEntryTypeNVX*)&forUnmarshaling->type, sizeof(VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryUsageFlagsNVX*)&forUnmarshaling->flags, sizeof(VkObjectEntryUsageFlagsNVX));
+ vkStream->read((VkPipelineLayout*)&forUnmarshaling->pipelineLayout, sizeof(VkPipelineLayout));
+ vkStream->read((VkShaderStageFlags*)&forUnmarshaling->stageFlags, sizeof(VkShaderStageFlags));
+}
+
+void marshal_vkCmdProcessCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkCmdProcessCommandsInfoNVX(vkStream, (const VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
+}
+
+void unmarshal_vkCmdProcessCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pProcessCommandsInfo, sizeof(const VkCmdProcessCommandsInfoNVX));
+ unmarshal_VkCmdProcessCommandsInfoNVX(vkStream, (VkCmdProcessCommandsInfoNVX*)(pProcessCommandsInfo));
+}
+
+void marshal_vkCmdReserveSpaceForCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkCmdReserveSpaceForCommandsInfoNVX(vkStream, (const VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
+}
+
+void unmarshal_vkCmdReserveSpaceForCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pReserveSpaceInfo, sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
+ unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(vkStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(pReserveSpaceInfo));
+}
+
+VkResult marshal_vkCreateIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkIndirectCommandsLayoutCreateInfoNVX(vkStream, (const VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ VkResult marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
+ vkStream->read(&marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
+ unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(vkStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateIndirectCommandsLayoutNVX_VkResult_return;
+}
+
+void marshal_vkDestroyIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout, sizeof(VkIndirectCommandsLayoutNVX));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkCreateObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkObjectTableCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkObjectTableNVX* pObjectTable)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkObjectTableCreateInfoNVX(vkStream, (const VkObjectTableCreateInfoNVX*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+ VkResult marshal_vkCreateObjectTableNVX_VkResult_return;
+ vkStream->read(&marshal_vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateObjectTableNVX_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkObjectTableCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkObjectTableNVX* pObjectTable)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkObjectTableCreateInfoNVX));
+ unmarshal_VkObjectTableCreateInfoNVX(vkStream, (VkObjectTableCreateInfoNVX*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkObjectTableNVX*)pObjectTable, sizeof(VkObjectTableNVX));
+ VkResult unmarshal_vkCreateObjectTableNVX_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateObjectTableNVX_VkResult_return;
+}
+
+void marshal_vkDestroyObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkRegisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const uint32_t* pObjectIndices)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ VkResult marshal_vkRegisterObjectsNVX_VkResult_return;
+ vkStream->read(&marshal_vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
+ return marshal_vkRegisterObjectsNVX_VkResult_return;
+}
+
+VkResult unmarshal_vkRegisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const uint32_t* pObjectIndices)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->read((uint32_t*)&objectCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ VkResult unmarshal_vkRegisterObjectsNVX_VkResult_return;
+ vkStream->write(&unmarshal_vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkRegisterObjectsNVX_VkResult_return;
+}
+
+VkResult marshal_vkUnregisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectEntryTypeNVX* pObjectEntryTypes,
+ const uint32_t* pObjectIndices)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->write((uint32_t*)&objectCount, sizeof(uint32_t));
+ vkStream->write((const VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->write((const uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ VkResult marshal_vkUnregisterObjectsNVX_VkResult_return;
+ vkStream->read(&marshal_vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
+ return marshal_vkUnregisterObjectsNVX_VkResult_return;
+}
+
+VkResult unmarshal_vkUnregisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectEntryTypeNVX* pObjectEntryTypes,
+ const uint32_t* pObjectIndices)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkObjectTableNVX*)&objectTable, sizeof(VkObjectTableNVX));
+ vkStream->read((uint32_t*)&objectCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->read((VkObjectEntryTypeNVX*)pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
+ vkStream->alloc((void**)&pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
+ VkResult unmarshal_vkUnregisterObjectsNVX_VkResult_return;
+ vkStream->write(&unmarshal_vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkUnregisterObjectsNVX_VkResult_return;
+}
+
+void marshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+ VkDeviceGeneratedCommandsLimitsNVX* pLimits)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ marshal_VkDeviceGeneratedCommandsFeaturesNVX(vkStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
+ marshal_VkDeviceGeneratedCommandsLimitsNVX(vkStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
+}
+
+void unmarshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+ VkDeviceGeneratedCommandsLimitsNVX* pLimits)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(vkStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
+ unmarshal_VkDeviceGeneratedCommandsLimitsNVX(vkStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
+}
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void marshal_VkViewportWScalingNV(
+ VulkanStream* vkStream,
+ const VkViewportWScalingNV* forMarshaling)
+{
+ vkStream->write((float*)&forMarshaling->xcoeff, sizeof(float));
+ vkStream->write((float*)&forMarshaling->ycoeff, sizeof(float));
+}
+
+void unmarshal_VkViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkViewportWScalingNV* forUnmarshaling)
+{
+ vkStream->read((float*)&forUnmarshaling->xcoeff, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->ycoeff, sizeof(float));
+}
+
+void marshal_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->viewportWScalingEnable, sizeof(VkBool32));
+ vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->write((const VkViewportWScalingNV**)&forMarshaling->pViewportWScalings, sizeof(const VkViewportWScalingNV*));
+ if (forMarshaling->pViewportWScalings)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
+ {
+ marshal_VkViewportWScalingNV(vkStream, (const VkViewportWScalingNV*)(forMarshaling->pViewportWScalings + i));
+ }
+ }
+}
+
+void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineViewportWScalingStateCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->viewportWScalingEnable, sizeof(VkBool32));
+ vkStream->read((uint32_t*)&forUnmarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->read((VkViewportWScalingNV**)&forUnmarshaling->pViewportWScalings, sizeof(const VkViewportWScalingNV*));
+ if (forUnmarshaling->pViewportWScalings)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pViewportWScalings, forUnmarshaling->viewportCount * sizeof(const VkViewportWScalingNV));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->viewportCount; ++i)
+ {
+ unmarshal_VkViewportWScalingNV(vkStream, (VkViewportWScalingNV*)(forUnmarshaling->pViewportWScalings + i));
+ }
+ }
+}
+
+void marshal_vkCmdSetViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewportWScalingNV* pViewportWScalings)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&firstViewport, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&viewportCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+ {
+ marshal_VkViewportWScalingNV(vkStream, (const VkViewportWScalingNV*)(pViewportWScalings + i));
+ }
+}
+
+void unmarshal_vkCmdSetViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewportWScalingNV* pViewportWScalings)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&firstViewport, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&viewportCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pViewportWScalings, ((viewportCount)) * sizeof(const VkViewportWScalingNV));
+ for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
+ {
+ unmarshal_VkViewportWScalingNV(vkStream, (VkViewportWScalingNV*)(pViewportWScalings + i));
+ }
+}
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+VkResult marshal_vkReleaseDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ VkResult marshal_vkReleaseDisplayEXT_VkResult_return;
+ vkStream->read(&marshal_vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkReleaseDisplayEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkReleaseDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ VkResult unmarshal_vkReleaseDisplayEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkReleaseDisplayEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+VkResult marshal_vkAcquireXlibDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ VkDisplayKHR display)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((Display*)dpy, sizeof(Display));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ VkResult marshal_vkAcquireXlibDisplayEXT_VkResult_return;
+ vkStream->read(&marshal_vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkAcquireXlibDisplayEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkAcquireXlibDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ VkDisplayKHR display)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((Display*)dpy, sizeof(Display));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ VkResult unmarshal_vkAcquireXlibDisplayEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkAcquireXlibDisplayEXT_VkResult_return;
+}
+
+VkResult marshal_vkGetRandROutputDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ RROutput rrOutput,
+ VkDisplayKHR* pDisplay)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((Display*)dpy, sizeof(Display));
+ vkStream->write((RROutput*)&rrOutput, sizeof(RROutput));
+ vkStream->read((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+ VkResult marshal_vkGetRandROutputDisplayEXT_VkResult_return;
+ vkStream->read(&marshal_vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetRandROutputDisplayEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkGetRandROutputDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ RROutput rrOutput,
+ VkDisplayKHR* pDisplay)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((Display*)dpy, sizeof(Display));
+ vkStream->read((RROutput*)&rrOutput, sizeof(RROutput));
+ vkStream->write((VkDisplayKHR*)pDisplay, sizeof(VkDisplayKHR));
+ VkResult unmarshal_vkGetRandROutputDisplayEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetRandROutputDisplayEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_display_surface_counter
+void marshal_VkSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilities2EXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageCount, sizeof(uint32_t));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->currentExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->minImageExtent));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxImageExtent));
+ vkStream->write((uint32_t*)&forMarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->write((VkSurfaceTransformFlagsKHR*)&forMarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->write((VkSurfaceTransformFlagBitsKHR*)&forMarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->write((VkCompositeAlphaFlagsKHR*)&forMarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+ vkStream->write((VkImageUsageFlags*)&forMarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+ vkStream->write((VkSurfaceCounterFlagsEXT*)&forMarshaling->supportedSurfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
+}
+
+void unmarshal_VkSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilities2EXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->minImageCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageCount, sizeof(uint32_t));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->currentExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->minImageExtent));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxImageExtent));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxImageArrayLayers, sizeof(uint32_t));
+ vkStream->read((VkSurfaceTransformFlagsKHR*)&forUnmarshaling->supportedTransforms, sizeof(VkSurfaceTransformFlagsKHR));
+ vkStream->read((VkSurfaceTransformFlagBitsKHR*)&forUnmarshaling->currentTransform, sizeof(VkSurfaceTransformFlagBitsKHR));
+ vkStream->read((VkCompositeAlphaFlagsKHR*)&forUnmarshaling->supportedCompositeAlpha, sizeof(VkCompositeAlphaFlagsKHR));
+ vkStream->read((VkImageUsageFlags*)&forUnmarshaling->supportedUsageFlags, sizeof(VkImageUsageFlags));
+ vkStream->read((VkSurfaceCounterFlagsEXT*)&forUnmarshaling->supportedSurfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
+}
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ marshal_VkSurfaceCapabilities2EXT(vkStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
+ VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
+ vkStream->read(&marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSurfaceKHR*)&surface, sizeof(VkSurfaceKHR));
+ unmarshal_VkSurfaceCapabilities2EXT(vkStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
+ VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_display_control
+void marshal_VkDisplayPowerInfoEXT(
+ VulkanStream* vkStream,
+ const VkDisplayPowerInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDisplayPowerStateEXT*)&forMarshaling->powerState, sizeof(VkDisplayPowerStateEXT));
+}
+
+void unmarshal_VkDisplayPowerInfoEXT(
+ VulkanStream* vkStream,
+ VkDisplayPowerInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDisplayPowerStateEXT*)&forUnmarshaling->powerState, sizeof(VkDisplayPowerStateEXT));
+}
+
+void marshal_VkDeviceEventInfoEXT(
+ VulkanStream* vkStream,
+ const VkDeviceEventInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceEventTypeEXT*)&forMarshaling->deviceEvent, sizeof(VkDeviceEventTypeEXT));
+}
+
+void unmarshal_VkDeviceEventInfoEXT(
+ VulkanStream* vkStream,
+ VkDeviceEventInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceEventTypeEXT*)&forUnmarshaling->deviceEvent, sizeof(VkDeviceEventTypeEXT));
+}
+
+void marshal_VkDisplayEventInfoEXT(
+ VulkanStream* vkStream,
+ const VkDisplayEventInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDisplayEventTypeEXT*)&forMarshaling->displayEvent, sizeof(VkDisplayEventTypeEXT));
+}
+
+void unmarshal_VkDisplayEventInfoEXT(
+ VulkanStream* vkStream,
+ VkDisplayEventInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDisplayEventTypeEXT*)&forUnmarshaling->displayEvent, sizeof(VkDisplayEventTypeEXT));
+}
+
+void marshal_VkSwapchainCounterCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkSwapchainCounterCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSurfaceCounterFlagsEXT*)&forMarshaling->surfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
+}
+
+void unmarshal_VkSwapchainCounterCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkSwapchainCounterCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSurfaceCounterFlagsEXT*)&forUnmarshaling->surfaceCounters, sizeof(VkSurfaceCounterFlagsEXT));
+}
+
+VkResult marshal_vkDisplayPowerControlEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ marshal_VkDisplayPowerInfoEXT(vkStream, (const VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
+ VkResult marshal_vkDisplayPowerControlEXT_VkResult_return;
+ vkStream->read(&marshal_vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkDisplayPowerControlEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkDisplayPowerControlEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->alloc((void**)&pDisplayPowerInfo, sizeof(const VkDisplayPowerInfoEXT));
+ unmarshal_VkDisplayPowerInfoEXT(vkStream, (VkDisplayPowerInfoEXT*)(pDisplayPowerInfo));
+ VkResult unmarshal_vkDisplayPowerControlEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkDisplayPowerControlEXT_VkResult_return;
+}
+
+VkResult marshal_vkRegisterDeviceEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceEventInfoEXT* pDeviceEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDeviceEventInfoEXT(vkStream, (const VkDeviceEventInfoEXT*)(pDeviceEventInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkFence*)pFence, sizeof(VkFence));
+ VkResult marshal_vkRegisterDeviceEventEXT_VkResult_return;
+ vkStream->read(&marshal_vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkRegisterDeviceEventEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkRegisterDeviceEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceEventInfoEXT* pDeviceEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pDeviceEventInfo, sizeof(const VkDeviceEventInfoEXT));
+ unmarshal_VkDeviceEventInfoEXT(vkStream, (VkDeviceEventInfoEXT*)(pDeviceEventInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkFence*)pFence, sizeof(VkFence));
+ VkResult unmarshal_vkRegisterDeviceEventEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkRegisterDeviceEventEXT_VkResult_return;
+}
+
+VkResult marshal_vkRegisterDisplayEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayEventInfoEXT* pDisplayEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ marshal_VkDisplayEventInfoEXT(vkStream, (const VkDisplayEventInfoEXT*)(pDisplayEventInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkFence*)pFence, sizeof(VkFence));
+ VkResult marshal_vkRegisterDisplayEventEXT_VkResult_return;
+ vkStream->read(&marshal_vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkRegisterDisplayEventEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkRegisterDisplayEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayEventInfoEXT* pDisplayEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkDisplayKHR*)&display, sizeof(VkDisplayKHR));
+ vkStream->alloc((void**)&pDisplayEventInfo, sizeof(const VkDisplayEventInfoEXT));
+ unmarshal_VkDisplayEventInfoEXT(vkStream, (VkDisplayEventInfoEXT*)(pDisplayEventInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkFence*)pFence, sizeof(VkFence));
+ VkResult unmarshal_vkRegisterDisplayEventEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkRegisterDisplayEventEXT_VkResult_return;
+}
+
+VkResult marshal_vkGetSwapchainCounterEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkSurfaceCounterFlagBitsEXT counter,
+ uint64_t* pCounterValue)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
+ vkStream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
+ VkResult marshal_vkGetSwapchainCounterEXT_VkResult_return;
+ vkStream->read(&marshal_vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetSwapchainCounterEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkGetSwapchainCounterEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkSurfaceCounterFlagBitsEXT counter,
+ uint64_t* pCounterValue)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((VkSurfaceCounterFlagBitsEXT*)&counter, sizeof(VkSurfaceCounterFlagBitsEXT));
+ vkStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
+ VkResult unmarshal_vkGetSwapchainCounterEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetSwapchainCounterEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void marshal_VkRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ const VkRefreshCycleDurationGOOGLE* forMarshaling)
+{
+ vkStream->write((uint64_t*)&forMarshaling->refreshDuration, sizeof(uint64_t));
+}
+
+void unmarshal_VkRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkRefreshCycleDurationGOOGLE* forUnmarshaling)
+{
+ vkStream->read((uint64_t*)&forUnmarshaling->refreshDuration, sizeof(uint64_t));
+}
+
+void marshal_VkPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ const VkPastPresentationTimingGOOGLE* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->presentID, sizeof(uint32_t));
+ vkStream->write((uint64_t*)&forMarshaling->desiredPresentTime, sizeof(uint64_t));
+ vkStream->write((uint64_t*)&forMarshaling->actualPresentTime, sizeof(uint64_t));
+ vkStream->write((uint64_t*)&forMarshaling->earliestPresentTime, sizeof(uint64_t));
+ vkStream->write((uint64_t*)&forMarshaling->presentMargin, sizeof(uint64_t));
+}
+
+void unmarshal_VkPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkPastPresentationTimingGOOGLE* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->presentID, sizeof(uint32_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->desiredPresentTime, sizeof(uint64_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->actualPresentTime, sizeof(uint64_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->earliestPresentTime, sizeof(uint64_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->presentMargin, sizeof(uint64_t));
+}
+
+void marshal_VkPresentTimeGOOGLE(
+ VulkanStream* vkStream,
+ const VkPresentTimeGOOGLE* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->presentID, sizeof(uint32_t));
+ vkStream->write((uint64_t*)&forMarshaling->desiredPresentTime, sizeof(uint64_t));
+}
+
+void unmarshal_VkPresentTimeGOOGLE(
+ VulkanStream* vkStream,
+ VkPresentTimeGOOGLE* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->presentID, sizeof(uint32_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->desiredPresentTime, sizeof(uint64_t));
+}
+
+void marshal_VkPresentTimesInfoGOOGLE(
+ VulkanStream* vkStream,
+ const VkPresentTimesInfoGOOGLE* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->write((const VkPresentTimeGOOGLE**)&forMarshaling->pTimes, sizeof(const VkPresentTimeGOOGLE*));
+ if (forMarshaling->pTimes)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->swapchainCount; ++i)
+ {
+ marshal_VkPresentTimeGOOGLE(vkStream, (const VkPresentTimeGOOGLE*)(forMarshaling->pTimes + i));
+ }
+ }
+}
+
+void unmarshal_VkPresentTimesInfoGOOGLE(
+ VulkanStream* vkStream,
+ VkPresentTimesInfoGOOGLE* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->swapchainCount, sizeof(uint32_t));
+ vkStream->read((VkPresentTimeGOOGLE**)&forUnmarshaling->pTimes, sizeof(const VkPresentTimeGOOGLE*));
+ if (forUnmarshaling->pTimes)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pTimes, forUnmarshaling->swapchainCount * sizeof(const VkPresentTimeGOOGLE));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->swapchainCount; ++i)
+ {
+ unmarshal_VkPresentTimeGOOGLE(vkStream, (VkPresentTimeGOOGLE*)(forUnmarshaling->pTimes + i));
+ }
+ }
+}
+
+VkResult marshal_vkGetRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ marshal_VkRefreshCycleDurationGOOGLE(vkStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
+ VkResult marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
+ vkStream->read(&marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
+}
+
+VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ unmarshal_VkRefreshCycleDurationGOOGLE(vkStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
+ VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
+ vkStream->write(&unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetRefreshCycleDurationGOOGLE_VkResult_return;
+}
+
+VkResult marshal_vkGetPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pPresentationTimingCount,
+ VkPastPresentationTimingGOOGLE* pPresentationTimings)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
+ {
+ marshal_VkPastPresentationTimingGOOGLE(vkStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
+ }
+ VkResult marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
+ vkStream->read(&marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
+}
+
+VkResult unmarshal_vkGetPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pPresentationTimingCount,
+ VkPastPresentationTimingGOOGLE* pPresentationTimings)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkSwapchainKHR*)&swapchain, sizeof(VkSwapchainKHR));
+ vkStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
+ {
+ unmarshal_VkPastPresentationTimingGOOGLE(vkStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
+ }
+ VkResult unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
+ vkStream->write(&unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetPastPresentationTimingGOOGLE_VkResult_return;
+}
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void marshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->perViewPositionAllComponents, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->perViewPositionAllComponents, sizeof(VkBool32));
+}
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void marshal_VkViewportSwizzleNV(
+ VulkanStream* vkStream,
+ const VkViewportSwizzleNV* forMarshaling)
+{
+ vkStream->write((VkViewportCoordinateSwizzleNV*)&forMarshaling->x, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->write((VkViewportCoordinateSwizzleNV*)&forMarshaling->y, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->write((VkViewportCoordinateSwizzleNV*)&forMarshaling->z, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->write((VkViewportCoordinateSwizzleNV*)&forMarshaling->w, sizeof(VkViewportCoordinateSwizzleNV));
+}
+
+void unmarshal_VkViewportSwizzleNV(
+ VulkanStream* vkStream,
+ VkViewportSwizzleNV* forUnmarshaling)
+{
+ vkStream->read((VkViewportCoordinateSwizzleNV*)&forUnmarshaling->x, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->read((VkViewportCoordinateSwizzleNV*)&forUnmarshaling->y, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->read((VkViewportCoordinateSwizzleNV*)&forUnmarshaling->z, sizeof(VkViewportCoordinateSwizzleNV));
+ vkStream->read((VkViewportCoordinateSwizzleNV*)&forUnmarshaling->w, sizeof(VkViewportCoordinateSwizzleNV));
+}
+
+void marshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineViewportSwizzleStateCreateFlagsNV*)&forMarshaling->flags, sizeof(VkPipelineViewportSwizzleStateCreateFlagsNV));
+ vkStream->write((uint32_t*)&forMarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->write((const VkViewportSwizzleNV**)&forMarshaling->pViewportSwizzles, sizeof(const VkViewportSwizzleNV*));
+ if (forMarshaling->pViewportSwizzles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->viewportCount; ++i)
+ {
+ marshal_VkViewportSwizzleNV(vkStream, (const VkViewportSwizzleNV*)(forMarshaling->pViewportSwizzles + i));
+ }
+ }
+}
+
+void unmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineViewportSwizzleStateCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineViewportSwizzleStateCreateFlagsNV*)&forUnmarshaling->flags, sizeof(VkPipelineViewportSwizzleStateCreateFlagsNV));
+ vkStream->read((uint32_t*)&forUnmarshaling->viewportCount, sizeof(uint32_t));
+ vkStream->read((VkViewportSwizzleNV**)&forUnmarshaling->pViewportSwizzles, sizeof(const VkViewportSwizzleNV*));
+ if (forUnmarshaling->pViewportSwizzles)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pViewportSwizzles, forUnmarshaling->viewportCount * sizeof(const VkViewportSwizzleNV));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->viewportCount; ++i)
+ {
+ unmarshal_VkViewportSwizzleNV(vkStream, (VkViewportSwizzleNV*)(forUnmarshaling->pViewportSwizzles + i));
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void marshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxDiscardRectangles, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDiscardRectangles, sizeof(uint32_t));
+}
+
+void marshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineDiscardRectangleStateCreateFlagsEXT*)&forMarshaling->flags, sizeof(VkPipelineDiscardRectangleStateCreateFlagsEXT));
+ vkStream->write((VkDiscardRectangleModeEXT*)&forMarshaling->discardRectangleMode, sizeof(VkDiscardRectangleModeEXT));
+ vkStream->write((uint32_t*)&forMarshaling->discardRectangleCount, sizeof(uint32_t));
+ vkStream->write((const VkRect2D**)&forMarshaling->pDiscardRectangles, sizeof(const VkRect2D*));
+ if (forMarshaling->pDiscardRectangles)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->discardRectangleCount; ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(forMarshaling->pDiscardRectangles + i));
+ }
+ }
+}
+
+void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineDiscardRectangleStateCreateFlagsEXT*)&forUnmarshaling->flags, sizeof(VkPipelineDiscardRectangleStateCreateFlagsEXT));
+ vkStream->read((VkDiscardRectangleModeEXT*)&forUnmarshaling->discardRectangleMode, sizeof(VkDiscardRectangleModeEXT));
+ vkStream->read((uint32_t*)&forUnmarshaling->discardRectangleCount, sizeof(uint32_t));
+ vkStream->read((VkRect2D**)&forUnmarshaling->pDiscardRectangles, sizeof(const VkRect2D*));
+ if (forUnmarshaling->pDiscardRectangles)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pDiscardRectangles, forUnmarshaling->discardRectangleCount * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->discardRectangleCount; ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(forUnmarshaling->pDiscardRectangles + i));
+ }
+ }
+}
+
+void marshal_vkCmdSetDiscardRectangleEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstDiscardRectangle,
+ uint32_t discardRectangleCount,
+ const VkRect2D* pDiscardRectangles)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
+ {
+ marshal_VkRect2D(vkStream, (const VkRect2D*)(pDiscardRectangles + i));
+ }
+}
+
+void unmarshal_vkCmdSetDiscardRectangleEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstDiscardRectangle,
+ uint32_t discardRectangleCount,
+ const VkRect2D* pDiscardRectangles)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((uint32_t*)&firstDiscardRectangle, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&discardRectangleCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pDiscardRectangles, ((discardRectangleCount)) * sizeof(const VkRect2D));
+ for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
+ {
+ unmarshal_VkRect2D(vkStream, (VkRect2D*)(pDiscardRectangles + i));
+ }
+}
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void marshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((float*)&forMarshaling->primitiveOverestimationSize, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxExtraPrimitiveOverestimationSize, sizeof(float));
+ vkStream->write((float*)&forMarshaling->extraPrimitiveOverestimationSizeGranularity, sizeof(float));
+ vkStream->write((VkBool32*)&forMarshaling->primitiveUnderestimation, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->conservativePointAndLineRasterization, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->degenerateTrianglesRasterized, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->degenerateLinesRasterized, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->fullyCoveredFragmentShaderInputVariable, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->conservativeRasterizationPostDepthCoverage, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((float*)&forUnmarshaling->primitiveOverestimationSize, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxExtraPrimitiveOverestimationSize, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->extraPrimitiveOverestimationSizeGranularity, sizeof(float));
+ vkStream->read((VkBool32*)&forUnmarshaling->primitiveUnderestimation, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->conservativePointAndLineRasterization, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->degenerateTrianglesRasterized, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->degenerateLinesRasterized, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->fullyCoveredFragmentShaderInputVariable, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->conservativeRasterizationPostDepthCoverage, sizeof(VkBool32));
+}
+
+void marshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineRasterizationConservativeStateCreateFlagsEXT*)&forMarshaling->flags, sizeof(VkPipelineRasterizationConservativeStateCreateFlagsEXT));
+ vkStream->write((VkConservativeRasterizationModeEXT*)&forMarshaling->conservativeRasterizationMode, sizeof(VkConservativeRasterizationModeEXT));
+ vkStream->write((float*)&forMarshaling->extraPrimitiveOverestimationSize, sizeof(float));
+}
+
+void unmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineRasterizationConservativeStateCreateFlagsEXT*)&forUnmarshaling->flags, sizeof(VkPipelineRasterizationConservativeStateCreateFlagsEXT));
+ vkStream->read((VkConservativeRasterizationModeEXT*)&forUnmarshaling->conservativeRasterizationMode, sizeof(VkConservativeRasterizationModeEXT));
+ vkStream->read((float*)&forUnmarshaling->extraPrimitiveOverestimationSize, sizeof(float));
+}
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void marshal_VkXYColorEXT(
+ VulkanStream* vkStream,
+ const VkXYColorEXT* forMarshaling)
+{
+ vkStream->write((float*)&forMarshaling->x, sizeof(float));
+ vkStream->write((float*)&forMarshaling->y, sizeof(float));
+}
+
+void unmarshal_VkXYColorEXT(
+ VulkanStream* vkStream,
+ VkXYColorEXT* forUnmarshaling)
+{
+ vkStream->read((float*)&forUnmarshaling->x, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->y, sizeof(float));
+}
+
+void marshal_VkHdrMetadataEXT(
+ VulkanStream* vkStream,
+ const VkHdrMetadataEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ marshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forMarshaling->displayPrimaryRed));
+ marshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forMarshaling->displayPrimaryGreen));
+ marshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forMarshaling->displayPrimaryBlue));
+ marshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forMarshaling->whitePoint));
+ vkStream->write((float*)&forMarshaling->maxLuminance, sizeof(float));
+ vkStream->write((float*)&forMarshaling->minLuminance, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxContentLightLevel, sizeof(float));
+ vkStream->write((float*)&forMarshaling->maxFrameAverageLightLevel, sizeof(float));
+}
+
+void unmarshal_VkHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkHdrMetadataEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ unmarshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forUnmarshaling->displayPrimaryRed));
+ unmarshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forUnmarshaling->displayPrimaryGreen));
+ unmarshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forUnmarshaling->displayPrimaryBlue));
+ unmarshal_VkXYColorEXT(vkStream, (VkXYColorEXT*)(&forUnmarshaling->whitePoint));
+ vkStream->read((float*)&forUnmarshaling->maxLuminance, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->minLuminance, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxContentLightLevel, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->maxFrameAverageLightLevel, sizeof(float));
+}
+
+void marshal_vkSetHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainKHR* pSwapchains,
+ const VkHdrMetadataEXT* pMetadata)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((uint32_t*)&swapchainCount, sizeof(uint32_t));
+ vkStream->write((const VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
+ for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+ {
+ marshal_VkHdrMetadataEXT(vkStream, (const VkHdrMetadataEXT*)(pMetadata + i));
+ }
+}
+
+void unmarshal_vkSetHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainKHR* pSwapchains,
+ const VkHdrMetadataEXT* pMetadata)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((uint32_t*)&swapchainCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
+ vkStream->read((VkSwapchainKHR*)pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
+ vkStream->alloc((void**)&pMetadata, ((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
+ for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
+ {
+ unmarshal_VkHdrMetadataEXT(vkStream, (VkHdrMetadataEXT*)(pMetadata + i));
+ }
+}
+
+#endif
+#ifdef VK_MVK_ios_surface
+void marshal_VkIOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ const VkIOSSurfaceCreateInfoMVK* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkIOSSurfaceCreateFlagsMVK*)&forMarshaling->flags, sizeof(VkIOSSurfaceCreateFlagsMVK));
+ vkStream->write((const void**)&forMarshaling->pView, sizeof(const void*));
+ if (forMarshaling->pView)
+ {
+ vkStream->write((const void*)forMarshaling->pView, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_VkIOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ VkIOSSurfaceCreateInfoMVK* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkIOSSurfaceCreateFlagsMVK*)&forUnmarshaling->flags, sizeof(VkIOSSurfaceCreateFlagsMVK));
+ vkStream->read((void**)&forUnmarshaling->pView, sizeof(const void*));
+ if (forUnmarshaling->pView)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pView, sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pView, sizeof(const uint8_t));
+ }
+}
+
+VkResult marshal_vkCreateIOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkIOSSurfaceCreateInfoMVK(vkStream, (const VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateIOSSurfaceMVK_VkResult_return;
+ vkStream->read(&marshal_vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateIOSSurfaceMVK_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateIOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkIOSSurfaceCreateInfoMVK));
+ unmarshal_VkIOSSurfaceCreateInfoMVK(vkStream, (VkIOSSurfaceCreateInfoMVK*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateIOSSurfaceMVK_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateIOSSurfaceMVK_VkResult_return;
+}
+
+#endif
+#ifdef VK_MVK_macos_surface
+void marshal_VkMacOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ const VkMacOSSurfaceCreateInfoMVK* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkMacOSSurfaceCreateFlagsMVK*)&forMarshaling->flags, sizeof(VkMacOSSurfaceCreateFlagsMVK));
+ vkStream->write((const void**)&forMarshaling->pView, sizeof(const void*));
+ if (forMarshaling->pView)
+ {
+ vkStream->write((const void*)forMarshaling->pView, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_VkMacOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ VkMacOSSurfaceCreateInfoMVK* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkMacOSSurfaceCreateFlagsMVK*)&forUnmarshaling->flags, sizeof(VkMacOSSurfaceCreateFlagsMVK));
+ vkStream->read((void**)&forUnmarshaling->pView, sizeof(const void*));
+ if (forUnmarshaling->pView)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pView, sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pView, sizeof(const uint8_t));
+ }
+}
+
+VkResult marshal_vkCreateMacOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkMacOSSurfaceCreateInfoMVK(vkStream, (const VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult marshal_vkCreateMacOSSurfaceMVK_VkResult_return;
+ vkStream->read(&marshal_vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateMacOSSurfaceMVK_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateMacOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkMacOSSurfaceCreateInfoMVK));
+ unmarshal_VkMacOSSurfaceCreateInfoMVK(vkStream, (VkMacOSSurfaceCreateInfoMVK*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkSurfaceKHR*)pSurface, sizeof(VkSurfaceKHR));
+ VkResult unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateMacOSSurfaceMVK_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void marshal_VkDebugUtilsObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsObjectNameInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkObjectType*)&forMarshaling->objectType, sizeof(VkObjectType));
+ vkStream->write((uint64_t*)&forMarshaling->objectHandle, sizeof(uint64_t));
+ vkStream->putString(forMarshaling->pObjectName);
+}
+
+void unmarshal_VkDebugUtilsObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsObjectNameInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkObjectType*)&forUnmarshaling->objectType, sizeof(VkObjectType));
+ vkStream->read((uint64_t*)&forUnmarshaling->objectHandle, sizeof(uint64_t));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pObjectName);
+}
+
+void marshal_VkDebugUtilsObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsObjectTagInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkObjectType*)&forMarshaling->objectType, sizeof(VkObjectType));
+ vkStream->write((uint64_t*)&forMarshaling->objectHandle, sizeof(uint64_t));
+ vkStream->write((uint64_t*)&forMarshaling->tagName, sizeof(uint64_t));
+ vkStream->write((size_t*)&forMarshaling->tagSize, sizeof(size_t));
+ vkStream->write((const void*)forMarshaling->pTag, forMarshaling->tagSize * sizeof(const uint8_t));
+}
+
+void unmarshal_VkDebugUtilsObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsObjectTagInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkObjectType*)&forUnmarshaling->objectType, sizeof(VkObjectType));
+ vkStream->read((uint64_t*)&forUnmarshaling->objectHandle, sizeof(uint64_t));
+ vkStream->read((uint64_t*)&forUnmarshaling->tagName, sizeof(uint64_t));
+ vkStream->read((size_t*)&forUnmarshaling->tagSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pTag, forUnmarshaling->tagSize * sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pTag, forUnmarshaling->tagSize * sizeof(const uint8_t));
+}
+
+void marshal_VkDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsLabelEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->putString(forMarshaling->pLabelName);
+ vkStream->write((float*)forMarshaling->color, 4 * sizeof(float));
+}
+
+void unmarshal_VkDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsLabelEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pLabelName);
+ vkStream->read((float*)forUnmarshaling->color, 4 * sizeof(float));
+}
+
+void marshal_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDebugUtilsMessengerCallbackDataFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT));
+ vkStream->putString(forMarshaling->pMessageIdName);
+ vkStream->write((int32_t*)&forMarshaling->messageIdNumber, sizeof(int32_t));
+ vkStream->putString(forMarshaling->pMessage);
+ vkStream->write((uint32_t*)&forMarshaling->queueLabelCount, sizeof(uint32_t));
+ vkStream->write((VkDebugUtilsLabelEXT**)&forMarshaling->pQueueLabels, sizeof(VkDebugUtilsLabelEXT*));
+ if (forMarshaling->pQueueLabels)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->queueLabelCount; ++i)
+ {
+ marshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(forMarshaling->pQueueLabels + i));
+ }
+ }
+ vkStream->write((uint32_t*)&forMarshaling->cmdBufLabelCount, sizeof(uint32_t));
+ vkStream->write((VkDebugUtilsLabelEXT**)&forMarshaling->pCmdBufLabels, sizeof(VkDebugUtilsLabelEXT*));
+ if (forMarshaling->pCmdBufLabels)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->cmdBufLabelCount; ++i)
+ {
+ marshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(forMarshaling->pCmdBufLabels + i));
+ }
+ }
+ vkStream->write((uint32_t*)&forMarshaling->objectCount, sizeof(uint32_t));
+ vkStream->write((VkDebugUtilsObjectNameInfoEXT**)&forMarshaling->pObjects, sizeof(VkDebugUtilsObjectNameInfoEXT*));
+ if (forMarshaling->pObjects)
+ {
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->objectCount; ++i)
+ {
+ marshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (VkDebugUtilsObjectNameInfoEXT*)(forMarshaling->pObjects + i));
+ }
+ }
+}
+
+void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDebugUtilsMessengerCallbackDataFlagsEXT*)&forUnmarshaling->flags, sizeof(VkDebugUtilsMessengerCallbackDataFlagsEXT));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pMessageIdName);
+ vkStream->read((int32_t*)&forUnmarshaling->messageIdNumber, sizeof(int32_t));
+ vkStream->loadStringInPlace((char**)&forUnmarshaling->pMessage);
+ vkStream->read((uint32_t*)&forUnmarshaling->queueLabelCount, sizeof(uint32_t));
+ vkStream->read((VkDebugUtilsLabelEXT**)&forUnmarshaling->pQueueLabels, sizeof(VkDebugUtilsLabelEXT*));
+ if (forUnmarshaling->pQueueLabels)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pQueueLabels, forUnmarshaling->queueLabelCount * sizeof(VkDebugUtilsLabelEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->queueLabelCount; ++i)
+ {
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pQueueLabels + i));
+ }
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->cmdBufLabelCount, sizeof(uint32_t));
+ vkStream->read((VkDebugUtilsLabelEXT**)&forUnmarshaling->pCmdBufLabels, sizeof(VkDebugUtilsLabelEXT*));
+ if (forUnmarshaling->pCmdBufLabels)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pCmdBufLabels, forUnmarshaling->cmdBufLabelCount * sizeof(VkDebugUtilsLabelEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->cmdBufLabelCount; ++i)
+ {
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(forUnmarshaling->pCmdBufLabels + i));
+ }
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->objectCount, sizeof(uint32_t));
+ vkStream->read((VkDebugUtilsObjectNameInfoEXT**)&forUnmarshaling->pObjects, sizeof(VkDebugUtilsObjectNameInfoEXT*));
+ if (forUnmarshaling->pObjects)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pObjects, forUnmarshaling->objectCount * sizeof(VkDebugUtilsObjectNameInfoEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->objectCount; ++i)
+ {
+ unmarshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (VkDebugUtilsObjectNameInfoEXT*)(forUnmarshaling->pObjects + i));
+ }
+ }
+}
+
+void marshal_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDebugUtilsMessengerCreateFlagsEXT*)&forMarshaling->flags, sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
+ vkStream->write((VkDebugUtilsMessageSeverityFlagsEXT*)&forMarshaling->messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
+ vkStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&forMarshaling->messageType, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+ vkStream->write((PFN_vkDebugUtilsMessengerCallbackEXT*)&forMarshaling->pfnUserCallback, sizeof(PFN_vkDebugUtilsMessengerCallbackEXT));
+ vkStream->write((void**)&forMarshaling->pUserData, sizeof(void*));
+ if (forMarshaling->pUserData)
+ {
+ vkStream->write((void*)forMarshaling->pUserData, sizeof(uint8_t));
+ }
+}
+
+void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDebugUtilsMessengerCreateFlagsEXT*)&forUnmarshaling->flags, sizeof(VkDebugUtilsMessengerCreateFlagsEXT));
+ vkStream->read((VkDebugUtilsMessageSeverityFlagsEXT*)&forUnmarshaling->messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagsEXT));
+ vkStream->read((VkDebugUtilsMessageTypeFlagsEXT*)&forUnmarshaling->messageType, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+ vkStream->read((PFN_vkDebugUtilsMessengerCallbackEXT*)&forUnmarshaling->pfnUserCallback, sizeof(PFN_vkDebugUtilsMessengerCallbackEXT));
+ vkStream->read((void**)&forUnmarshaling->pUserData, sizeof(void*));
+ if (forUnmarshaling->pUserData)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pUserData, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->pUserData, sizeof(uint8_t));
+ }
+}
+
+VkResult marshal_vkSetDebugUtilsObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (const VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
+ VkResult marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
+ vkStream->read(&marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkSetDebugUtilsObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pNameInfo, sizeof(const VkDebugUtilsObjectNameInfoEXT));
+ unmarshal_VkDebugUtilsObjectNameInfoEXT(vkStream, (VkDebugUtilsObjectNameInfoEXT*)(pNameInfo));
+ VkResult unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkSetDebugUtilsObjectNameEXT_VkResult_return;
+}
+
+VkResult marshal_vkSetDebugUtilsObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkDebugUtilsObjectTagInfoEXT(vkStream, (const VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
+ VkResult marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
+ vkStream->read(&marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkSetDebugUtilsObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pTagInfo, sizeof(const VkDebugUtilsObjectTagInfoEXT));
+ unmarshal_VkDebugUtilsObjectTagInfoEXT(vkStream, (VkDebugUtilsObjectTagInfoEXT*)(pTagInfo));
+ VkResult unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkSetDebugUtilsObjectTagEXT_VkResult_return;
+}
+
+void marshal_vkQueueBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void unmarshal_vkQueueBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void marshal_vkQueueEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+}
+
+void unmarshal_vkQueueEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+}
+
+void marshal_vkQueueInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void unmarshal_vkQueueInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void marshal_vkCmdBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void unmarshal_vkCmdBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void marshal_vkCmdEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void unmarshal_vkCmdEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+}
+
+void marshal_vkCmdInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkDebugUtilsLabelEXT(vkStream, (const VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+void unmarshal_vkCmdInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pLabelInfo, sizeof(const VkDebugUtilsLabelEXT));
+ unmarshal_VkDebugUtilsLabelEXT(vkStream, (VkDebugUtilsLabelEXT*)(pLabelInfo));
+}
+
+VkResult marshal_vkCreateDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugUtilsMessengerEXT* pMessenger)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ marshal_VkDebugUtilsMessengerCreateInfoEXT(vkStream, (const VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+ VkResult marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
+ vkStream->read(&marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugUtilsMessengerEXT* pMessenger)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
+ unmarshal_VkDebugUtilsMessengerCreateInfoEXT(vkStream, (VkDebugUtilsMessengerCreateInfoEXT*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkDebugUtilsMessengerEXT*)pMessenger, sizeof(VkDebugUtilsMessengerEXT));
+ VkResult unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateDebugUtilsMessengerEXT_VkResult_return;
+}
+
+void marshal_vkDestroyDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessengerEXT messenger,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessengerEXT messenger,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkDebugUtilsMessengerEXT*)&messenger, sizeof(VkDebugUtilsMessengerEXT));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void marshal_vkSubmitDebugUtilsMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+ VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
+{
+ vkStream->write((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
+ vkStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+ marshal_VkDebugUtilsMessengerCallbackDataEXT(vkStream, (const VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
+}
+
+void unmarshal_vkSubmitDebugUtilsMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+ VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
+{
+ vkStream->read((VkInstance*)&instance, sizeof(VkInstance));
+ vkStream->read((VkDebugUtilsMessageSeverityFlagBitsEXT*)&messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
+ vkStream->read((VkDebugUtilsMessageTypeFlagsEXT*)&messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
+ vkStream->alloc((void**)&pCallbackData, sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
+ unmarshal_VkDebugUtilsMessengerCallbackDataEXT(vkStream, (VkDebugUtilsMessengerCallbackDataEXT*)(pCallbackData));
+}
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void marshal_VkAndroidHardwareBufferUsageANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferUsageANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint64_t*)&forMarshaling->androidHardwareBufferUsage, sizeof(uint64_t));
+}
+
+void unmarshal_VkAndroidHardwareBufferUsageANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferUsageANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint64_t*)&forUnmarshaling->androidHardwareBufferUsage, sizeof(uint64_t));
+}
+
+void marshal_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkDeviceSize*)&forMarshaling->allocationSize, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void unmarshal_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferPropertiesANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->allocationSize, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void marshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkFormat*)&forMarshaling->format, sizeof(VkFormat));
+ vkStream->write((uint64_t*)&forMarshaling->externalFormat, sizeof(uint64_t));
+ vkStream->write((VkFormatFeatureFlags*)&forMarshaling->formatFeatures, sizeof(VkFormatFeatureFlags));
+ marshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forMarshaling->samplerYcbcrConversionComponents));
+ vkStream->write((VkSamplerYcbcrModelConversion*)&forMarshaling->suggestedYcbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+ vkStream->write((VkSamplerYcbcrRange*)&forMarshaling->suggestedYcbcrRange, sizeof(VkSamplerYcbcrRange));
+ vkStream->write((VkChromaLocation*)&forMarshaling->suggestedXChromaOffset, sizeof(VkChromaLocation));
+ vkStream->write((VkChromaLocation*)&forMarshaling->suggestedYChromaOffset, sizeof(VkChromaLocation));
+}
+
+void unmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkFormat*)&forUnmarshaling->format, sizeof(VkFormat));
+ vkStream->read((uint64_t*)&forUnmarshaling->externalFormat, sizeof(uint64_t));
+ vkStream->read((VkFormatFeatureFlags*)&forUnmarshaling->formatFeatures, sizeof(VkFormatFeatureFlags));
+ unmarshal_VkComponentMapping(vkStream, (VkComponentMapping*)(&forUnmarshaling->samplerYcbcrConversionComponents));
+ vkStream->read((VkSamplerYcbcrModelConversion*)&forUnmarshaling->suggestedYcbcrModel, sizeof(VkSamplerYcbcrModelConversion));
+ vkStream->read((VkSamplerYcbcrRange*)&forUnmarshaling->suggestedYcbcrRange, sizeof(VkSamplerYcbcrRange));
+ vkStream->read((VkChromaLocation*)&forUnmarshaling->suggestedXChromaOffset, sizeof(VkChromaLocation));
+ vkStream->read((VkChromaLocation*)&forUnmarshaling->suggestedYChromaOffset, sizeof(VkChromaLocation));
+}
+
+void marshal_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((AHardwareBuffer*)forMarshaling->buffer, sizeof(AHardwareBuffer));
+}
+
+void unmarshal_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ VkImportAndroidHardwareBufferInfoANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->alloc((void**)&forUnmarshaling->buffer, sizeof(AHardwareBuffer));
+ vkStream->read((AHardwareBuffer*)forUnmarshaling->buffer, sizeof(AHardwareBuffer));
+}
+
+void marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkDeviceMemory*)&forMarshaling->memory, sizeof(VkDeviceMemory));
+}
+
+void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkDeviceMemory*)&forUnmarshaling->memory, sizeof(VkDeviceMemory));
+}
+
+void marshal_VkExternalFormatANDROID(
+ VulkanStream* vkStream,
+ const VkExternalFormatANDROID* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint64_t*)&forMarshaling->externalFormat, sizeof(uint64_t));
+}
+
+void unmarshal_VkExternalFormatANDROID(
+ VulkanStream* vkStream,
+ VkExternalFormatANDROID* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint64_t*)&forUnmarshaling->externalFormat, sizeof(uint64_t));
+}
+
+VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((const AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
+ marshal_VkAndroidHardwareBufferPropertiesANDROID(vkStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
+ VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
+ vkStream->read(&marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
+}
+
+VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&buffer, sizeof(const AHardwareBuffer));
+ vkStream->read((AHardwareBuffer*)buffer, sizeof(const AHardwareBuffer));
+ unmarshal_VkAndroidHardwareBufferPropertiesANDROID(vkStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
+ VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
+ vkStream->write(&unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
+}
+
+VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ AHardwareBuffer** pBuffer)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(vkStream, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
+ vkStream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
+ VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ AHardwareBuffer** pBuffer)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pInfo, sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
+ unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(vkStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(pInfo));
+ vkStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
+ VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void marshal_VkSamplerReductionModeCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkSamplerReductionModeCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSamplerReductionModeEXT*)&forMarshaling->reductionMode, sizeof(VkSamplerReductionModeEXT));
+}
+
+void unmarshal_VkSamplerReductionModeCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkSamplerReductionModeCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSamplerReductionModeEXT*)&forUnmarshaling->reductionMode, sizeof(VkSamplerReductionModeEXT));
+}
+
+void marshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->filterMinmaxSingleComponentFormats, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->filterMinmaxImageComponentMapping, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxSingleComponentFormats, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->filterMinmaxImageComponentMapping, sizeof(VkBool32));
+}
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void marshal_VkSampleLocationEXT(
+ VulkanStream* vkStream,
+ const VkSampleLocationEXT* forMarshaling)
+{
+ vkStream->write((float*)&forMarshaling->x, sizeof(float));
+ vkStream->write((float*)&forMarshaling->y, sizeof(float));
+}
+
+void unmarshal_VkSampleLocationEXT(
+ VulkanStream* vkStream,
+ VkSampleLocationEXT* forUnmarshaling)
+{
+ vkStream->read((float*)&forUnmarshaling->x, sizeof(float));
+ vkStream->read((float*)&forUnmarshaling->y, sizeof(float));
+}
+
+void marshal_VkSampleLocationsInfoEXT(
+ VulkanStream* vkStream,
+ const VkSampleLocationsInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkSampleCountFlagBits*)&forMarshaling->sampleLocationsPerPixel, sizeof(VkSampleCountFlagBits));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->sampleLocationGridSize));
+ vkStream->write((uint32_t*)&forMarshaling->sampleLocationsCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->sampleLocationsCount; ++i)
+ {
+ marshal_VkSampleLocationEXT(vkStream, (const VkSampleLocationEXT*)(forMarshaling->pSampleLocations + i));
+ }
+}
+
+void unmarshal_VkSampleLocationsInfoEXT(
+ VulkanStream* vkStream,
+ VkSampleLocationsInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkSampleCountFlagBits*)&forUnmarshaling->sampleLocationsPerPixel, sizeof(VkSampleCountFlagBits));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->sampleLocationGridSize));
+ vkStream->read((uint32_t*)&forUnmarshaling->sampleLocationsCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pSampleLocations, forUnmarshaling->sampleLocationsCount * sizeof(const VkSampleLocationEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->sampleLocationsCount; ++i)
+ {
+ unmarshal_VkSampleLocationEXT(vkStream, (VkSampleLocationEXT*)(forUnmarshaling->pSampleLocations + i));
+ }
+}
+
+void marshal_VkAttachmentSampleLocationsEXT(
+ VulkanStream* vkStream,
+ const VkAttachmentSampleLocationsEXT* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->attachmentIndex, sizeof(uint32_t));
+ marshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forMarshaling->sampleLocationsInfo));
+}
+
+void unmarshal_VkAttachmentSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkAttachmentSampleLocationsEXT* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentIndex, sizeof(uint32_t));
+ unmarshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forUnmarshaling->sampleLocationsInfo));
+}
+
+void marshal_VkSubpassSampleLocationsEXT(
+ VulkanStream* vkStream,
+ const VkSubpassSampleLocationsEXT* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->subpassIndex, sizeof(uint32_t));
+ marshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forMarshaling->sampleLocationsInfo));
+}
+
+void unmarshal_VkSubpassSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkSubpassSampleLocationsEXT* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->subpassIndex, sizeof(uint32_t));
+ unmarshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forUnmarshaling->sampleLocationsInfo));
+}
+
+void marshal_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanStream* vkStream,
+ const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->attachmentInitialSampleLocationsCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->attachmentInitialSampleLocationsCount; ++i)
+ {
+ marshal_VkAttachmentSampleLocationsEXT(vkStream, (const VkAttachmentSampleLocationsEXT*)(forMarshaling->pAttachmentInitialSampleLocations + i));
+ }
+ vkStream->write((uint32_t*)&forMarshaling->postSubpassSampleLocationsCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->postSubpassSampleLocationsCount; ++i)
+ {
+ marshal_VkSubpassSampleLocationsEXT(vkStream, (const VkSubpassSampleLocationsEXT*)(forMarshaling->pPostSubpassSampleLocations + i));
+ }
+}
+
+void unmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanStream* vkStream,
+ VkRenderPassSampleLocationsBeginInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->attachmentInitialSampleLocationsCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pAttachmentInitialSampleLocations, forUnmarshaling->attachmentInitialSampleLocationsCount * sizeof(const VkAttachmentSampleLocationsEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->attachmentInitialSampleLocationsCount; ++i)
+ {
+ unmarshal_VkAttachmentSampleLocationsEXT(vkStream, (VkAttachmentSampleLocationsEXT*)(forUnmarshaling->pAttachmentInitialSampleLocations + i));
+ }
+ vkStream->read((uint32_t*)&forUnmarshaling->postSubpassSampleLocationsCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pPostSubpassSampleLocations, forUnmarshaling->postSubpassSampleLocationsCount * sizeof(const VkSubpassSampleLocationsEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->postSubpassSampleLocationsCount; ++i)
+ {
+ unmarshal_VkSubpassSampleLocationsEXT(vkStream, (VkSubpassSampleLocationsEXT*)(forUnmarshaling->pPostSubpassSampleLocations + i));
+ }
+}
+
+void marshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->sampleLocationsEnable, sizeof(VkBool32));
+ marshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forMarshaling->sampleLocationsInfo));
+}
+
+void unmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineSampleLocationsStateCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->sampleLocationsEnable, sizeof(VkBool32));
+ unmarshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(&forUnmarshaling->sampleLocationsInfo));
+}
+
+void marshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkSampleCountFlags*)&forMarshaling->sampleLocationSampleCounts, sizeof(VkSampleCountFlags));
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxSampleLocationGridSize));
+ vkStream->write((float*)forMarshaling->sampleLocationCoordinateRange, 2 * sizeof(float));
+ vkStream->write((uint32_t*)&forMarshaling->sampleLocationSubPixelBits, sizeof(uint32_t));
+ vkStream->write((VkBool32*)&forMarshaling->variableSampleLocations, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkSampleCountFlags*)&forUnmarshaling->sampleLocationSampleCounts, sizeof(VkSampleCountFlags));
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSampleLocationGridSize));
+ vkStream->read((float*)forUnmarshaling->sampleLocationCoordinateRange, 2 * sizeof(float));
+ vkStream->read((uint32_t*)&forUnmarshaling->sampleLocationSubPixelBits, sizeof(uint32_t));
+ vkStream->read((VkBool32*)&forUnmarshaling->variableSampleLocations, sizeof(VkBool32));
+}
+
+void marshal_VkMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ const VkMultisamplePropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ marshal_VkExtent2D(vkStream, (VkExtent2D*)(&forMarshaling->maxSampleLocationGridSize));
+}
+
+void unmarshal_VkMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkMultisamplePropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ unmarshal_VkExtent2D(vkStream, (VkExtent2D*)(&forUnmarshaling->maxSampleLocationGridSize));
+}
+
+void marshal_vkCmdSetSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ marshal_VkSampleLocationsInfoEXT(vkStream, (const VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
+}
+
+void unmarshal_vkCmdSetSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->alloc((void**)&pSampleLocationsInfo, sizeof(const VkSampleLocationsInfoEXT));
+ unmarshal_VkSampleLocationsInfoEXT(vkStream, (VkSampleLocationsInfoEXT*)(pSampleLocationsInfo));
+}
+
+void marshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties)
+{
+ vkStream->write((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->write((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+ marshal_VkMultisamplePropertiesEXT(vkStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
+}
+
+void unmarshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties)
+{
+ vkStream->read((VkPhysicalDevice*)&physicalDevice, sizeof(VkPhysicalDevice));
+ vkStream->read((VkSampleCountFlagBits*)&samples, sizeof(VkSampleCountFlagBits));
+ unmarshal_VkMultisamplePropertiesEXT(vkStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
+}
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendCoherentOperations, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendCoherentOperations, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->advancedBlendMaxColorAttachments, sizeof(uint32_t));
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendIndependentBlend, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendNonPremultipliedSrcColor, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendNonPremultipliedDstColor, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendCorrelatedOverlap, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->advancedBlendAllOperations, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->advancedBlendMaxColorAttachments, sizeof(uint32_t));
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendIndependentBlend, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendNonPremultipliedSrcColor, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendNonPremultipliedDstColor, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendCorrelatedOverlap, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->advancedBlendAllOperations, sizeof(VkBool32));
+}
+
+void marshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->srcPremultiplied, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->dstPremultiplied, sizeof(VkBool32));
+ vkStream->write((VkBlendOverlapEXT*)&forMarshaling->blendOverlap, sizeof(VkBlendOverlapEXT));
+}
+
+void unmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->srcPremultiplied, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->dstPremultiplied, sizeof(VkBool32));
+ vkStream->read((VkBlendOverlapEXT*)&forUnmarshaling->blendOverlap, sizeof(VkBlendOverlapEXT));
+}
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void marshal_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineCoverageToColorStateCreateFlagsNV*)&forMarshaling->flags, sizeof(VkPipelineCoverageToColorStateCreateFlagsNV));
+ vkStream->write((VkBool32*)&forMarshaling->coverageToColorEnable, sizeof(VkBool32));
+ vkStream->write((uint32_t*)&forMarshaling->coverageToColorLocation, sizeof(uint32_t));
+}
+
+void unmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineCoverageToColorStateCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineCoverageToColorStateCreateFlagsNV*)&forUnmarshaling->flags, sizeof(VkPipelineCoverageToColorStateCreateFlagsNV));
+ vkStream->read((VkBool32*)&forUnmarshaling->coverageToColorEnable, sizeof(VkBool32));
+ vkStream->read((uint32_t*)&forUnmarshaling->coverageToColorLocation, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void marshal_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkPipelineCoverageModulationStateCreateFlagsNV*)&forMarshaling->flags, sizeof(VkPipelineCoverageModulationStateCreateFlagsNV));
+ vkStream->write((VkCoverageModulationModeNV*)&forMarshaling->coverageModulationMode, sizeof(VkCoverageModulationModeNV));
+ vkStream->write((VkBool32*)&forMarshaling->coverageModulationTableEnable, sizeof(VkBool32));
+ vkStream->write((uint32_t*)&forMarshaling->coverageModulationTableCount, sizeof(uint32_t));
+ vkStream->write((const float**)&forMarshaling->pCoverageModulationTable, sizeof(const float*));
+ if (forMarshaling->pCoverageModulationTable)
+ {
+ vkStream->write((const float*)forMarshaling->pCoverageModulationTable, forMarshaling->coverageModulationTableCount * sizeof(const float));
+ }
+}
+
+void unmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineCoverageModulationStateCreateInfoNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkPipelineCoverageModulationStateCreateFlagsNV*)&forUnmarshaling->flags, sizeof(VkPipelineCoverageModulationStateCreateFlagsNV));
+ vkStream->read((VkCoverageModulationModeNV*)&forUnmarshaling->coverageModulationMode, sizeof(VkCoverageModulationModeNV));
+ vkStream->read((VkBool32*)&forUnmarshaling->coverageModulationTableEnable, sizeof(VkBool32));
+ vkStream->read((uint32_t*)&forUnmarshaling->coverageModulationTableCount, sizeof(uint32_t));
+ vkStream->read((float**)&forUnmarshaling->pCoverageModulationTable, sizeof(const float*));
+ if (forUnmarshaling->pCoverageModulationTable)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pCoverageModulationTable, forUnmarshaling->coverageModulationTableCount * sizeof(const float));
+ vkStream->read((float*)forUnmarshaling->pCoverageModulationTable, forUnmarshaling->coverageModulationTableCount * sizeof(const float));
+ }
+}
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void marshal_VkValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkValidationCacheCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkValidationCacheCreateFlagsEXT*)&forMarshaling->flags, sizeof(VkValidationCacheCreateFlagsEXT));
+ vkStream->write((size_t*)&forMarshaling->initialDataSize, sizeof(size_t));
+ vkStream->write((const void*)forMarshaling->pInitialData, forMarshaling->initialDataSize * sizeof(const uint8_t));
+}
+
+void unmarshal_VkValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkValidationCacheCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkValidationCacheCreateFlagsEXT*)&forUnmarshaling->flags, sizeof(VkValidationCacheCreateFlagsEXT));
+ vkStream->read((size_t*)&forUnmarshaling->initialDataSize, sizeof(size_t));
+ vkStream->alloc((void**)&forUnmarshaling->pInitialData, forUnmarshaling->initialDataSize * sizeof(const uint8_t));
+ vkStream->read((void*)forUnmarshaling->pInitialData, forUnmarshaling->initialDataSize * sizeof(const uint8_t));
+}
+
+void marshal_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkValidationCacheEXT*)&forMarshaling->validationCache, sizeof(VkValidationCacheEXT));
+}
+
+void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkShaderModuleValidationCacheCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkValidationCacheEXT*)&forUnmarshaling->validationCache, sizeof(VkValidationCacheEXT));
+}
+
+VkResult marshal_vkCreateValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ marshal_VkValidationCacheCreateInfoEXT(vkStream, (const VkValidationCacheCreateInfoEXT*)(pCreateInfo));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->read((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+ VkResult marshal_vkCreateValidationCacheEXT_VkResult_return;
+ vkStream->read(&marshal_vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkCreateValidationCacheEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkCreateValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->alloc((void**)&pCreateInfo, sizeof(const VkValidationCacheCreateInfoEXT));
+ unmarshal_VkValidationCacheCreateInfoEXT(vkStream, (VkValidationCacheCreateInfoEXT*)(pCreateInfo));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+ vkStream->write((VkValidationCacheEXT*)pValidationCache, sizeof(VkValidationCacheEXT));
+ VkResult unmarshal_vkCreateValidationCacheEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkCreateValidationCacheEXT_VkResult_return;
+}
+
+void marshal_vkDestroyValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+ vkStream->write((const VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ marshal_VkAllocationCallbacks(vkStream, (const VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+void unmarshal_vkDestroyValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+ vkStream->read((VkAllocationCallbacks**)&pAllocator, sizeof(const VkAllocationCallbacks*));
+ if (pAllocator)
+ {
+ vkStream->alloc((void**)&pAllocator, sizeof(const VkAllocationCallbacks));
+ unmarshal_VkAllocationCallbacks(vkStream, (VkAllocationCallbacks*)(pAllocator));
+ }
+}
+
+VkResult marshal_vkMergeValidationCachesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
+ vkStream->write((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+ vkStream->write((const VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
+ VkResult marshal_vkMergeValidationCachesEXT_VkResult_return;
+ vkStream->read(&marshal_vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkMergeValidationCachesEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkMergeValidationCachesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkValidationCacheEXT*)&dstCache, sizeof(VkValidationCacheEXT));
+ vkStream->read((uint32_t*)&srcCacheCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
+ vkStream->read((VkValidationCacheEXT*)pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
+ VkResult unmarshal_vkMergeValidationCachesEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkMergeValidationCachesEXT_VkResult_return;
+}
+
+VkResult marshal_vkGetValidationCacheDataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+ vkStream->read((size_t*)pDataSize, sizeof(size_t));
+ vkStream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+ VkResult marshal_vkGetValidationCacheDataEXT_VkResult_return;
+ vkStream->read(&marshal_vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetValidationCacheDataEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkGetValidationCacheDataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkValidationCacheEXT*)&validationCache, sizeof(VkValidationCacheEXT));
+ vkStream->write((size_t*)pDataSize, sizeof(size_t));
+ vkStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
+ VkResult unmarshal_vkGetValidationCacheDataEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetValidationCacheDataEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->bindingCount, sizeof(uint32_t));
+ vkStream->write((const VkDescriptorBindingFlagsEXT*)forMarshaling->pBindingFlags, forMarshaling->bindingCount * sizeof(const VkDescriptorBindingFlagsEXT));
+}
+
+void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->bindingCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pBindingFlags, forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlagsEXT));
+ vkStream->read((VkDescriptorBindingFlagsEXT*)forUnmarshaling->pBindingFlags, forUnmarshaling->bindingCount * sizeof(const VkDescriptorBindingFlagsEXT));
+}
+
+void marshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderUniformTexelBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageTexelBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingSampledImageUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageImageUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingUpdateUnusedWhilePending, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->descriptorBindingVariableDescriptorCount, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->runtimeDescriptorArray, sizeof(VkBool32));
+}
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayDynamicIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformTexelBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageTexelBufferArrayNonUniformIndexing, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingSampledImageUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageImageUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUniformTexelBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingStorageTexelBufferUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingUpdateUnusedWhilePending, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingPartiallyBound, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->descriptorBindingVariableDescriptorCount, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->runtimeDescriptorArray, sizeof(VkBool32));
+}
+
+void marshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxUpdateAfterBindDescriptorsInAllPools, sizeof(uint32_t));
+ vkStream->write((VkBool32*)&forMarshaling->shaderUniformBufferArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderSampledImageArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageBufferArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderStorageImageArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->shaderInputAttachmentArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->robustBufferAccessUpdateAfterBind, sizeof(VkBool32));
+ vkStream->write((VkBool32*)&forMarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSamplers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxPerStageUpdateAfterBindResources, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSamplers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindSampledImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindStorageImages, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxDescriptorSetUpdateAfterBindInputAttachments, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxUpdateAfterBindDescriptorsInAllPools, sizeof(uint32_t));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderUniformBufferArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderSampledImageArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageBufferArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderStorageImageArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->shaderInputAttachmentArrayNonUniformIndexingNative, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->robustBufferAccessUpdateAfterBind, sizeof(VkBool32));
+ vkStream->read((VkBool32*)&forUnmarshaling->quadDivergentImplicitLod, sizeof(VkBool32));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSamplers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindUniformBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindSampledImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindStorageImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageDescriptorUpdateAfterBindInputAttachments, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxPerStageUpdateAfterBindResources, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSamplers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffers, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindSampledImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindStorageImages, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxDescriptorSetUpdateAfterBindInputAttachments, sizeof(uint32_t));
+}
+
+void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->descriptorSetCount, sizeof(uint32_t));
+ vkStream->write((const uint32_t*)forMarshaling->pDescriptorCounts, forMarshaling->descriptorSetCount * sizeof(const uint32_t));
+}
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->descriptorSetCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pDescriptorCounts, forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
+ vkStream->read((uint32_t*)forUnmarshaling->pDescriptorCounts, forUnmarshaling->descriptorSetCount * sizeof(const uint32_t));
+}
+
+void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxVariableDescriptorCount, sizeof(uint32_t));
+}
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVariableDescriptorCount, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void marshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkQueueGlobalPriorityEXT*)&forMarshaling->globalPriority, sizeof(VkQueueGlobalPriorityEXT));
+}
+
+void unmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkQueueGlobalPriorityEXT*)&forUnmarshaling->globalPriority, sizeof(VkQueueGlobalPriorityEXT));
+}
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void marshal_VkImportMemoryHostPointerInfoEXT(
+ VulkanStream* vkStream,
+ const VkImportMemoryHostPointerInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&forMarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((void**)&forMarshaling->pHostPointer, sizeof(void*));
+ if (forMarshaling->pHostPointer)
+ {
+ vkStream->write((void*)forMarshaling->pHostPointer, sizeof(uint8_t));
+ }
+}
+
+void unmarshal_VkImportMemoryHostPointerInfoEXT(
+ VulkanStream* vkStream,
+ VkImportMemoryHostPointerInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&forUnmarshaling->handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((void**)&forUnmarshaling->pHostPointer, sizeof(void*));
+ if (forUnmarshaling->pHostPointer)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pHostPointer, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->pHostPointer, sizeof(uint8_t));
+ }
+}
+
+void marshal_VkMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkMemoryHostPointerPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void unmarshal_VkMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkMemoryHostPointerPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->memoryTypeBits, sizeof(uint32_t));
+}
+
+void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkDeviceSize*)&forMarshaling->minImportedHostPointerAlignment, sizeof(VkDeviceSize));
+}
+
+void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkDeviceSize*)&forUnmarshaling->minImportedHostPointerAlignment, sizeof(VkDeviceSize));
+}
+
+VkResult marshal_vkGetMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ const void* pHostPointer,
+ VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
+{
+ vkStream->write((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->write((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->write((const void**)&pHostPointer, sizeof(const void*));
+ if (pHostPointer)
+ {
+ vkStream->write((const void*)pHostPointer, sizeof(const uint8_t));
+ }
+ marshal_VkMemoryHostPointerPropertiesEXT(vkStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
+ VkResult marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
+ vkStream->read(&marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
+ return marshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
+}
+
+VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ const void* pHostPointer,
+ VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
+{
+ vkStream->read((VkDevice*)&device, sizeof(VkDevice));
+ vkStream->read((VkExternalMemoryHandleTypeFlagBits*)&handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
+ vkStream->read((void**)&pHostPointer, sizeof(const void*));
+ if (pHostPointer)
+ {
+ vkStream->alloc((void**)&pHostPointer, sizeof(const uint8_t));
+ vkStream->read((void*)pHostPointer, sizeof(const uint8_t));
+ }
+ unmarshal_VkMemoryHostPointerPropertiesEXT(vkStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
+ VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
+ vkStream->write(&unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
+ return unmarshal_vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
+}
+
+#endif
+#ifdef VK_AMD_buffer_marker
+void marshal_vkCmdWriteBufferMarkerAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ uint32_t marker)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+ vkStream->write((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->write((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->write((uint32_t*)&marker, sizeof(uint32_t));
+}
+
+void unmarshal_vkCmdWriteBufferMarkerAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ uint32_t marker)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((VkPipelineStageFlagBits*)&pipelineStage, sizeof(VkPipelineStageFlagBits));
+ vkStream->read((VkBuffer*)&dstBuffer, sizeof(VkBuffer));
+ vkStream->read((VkDeviceSize*)&dstOffset, sizeof(VkDeviceSize));
+ vkStream->read((uint32_t*)&marker, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_AMD_shader_core_properties
+void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->shaderEngineCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->shaderArraysPerEngineCount, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->computeUnitsPerShaderArray, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->simdPerComputeUnit, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->wavefrontsPerSimd, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->wavefrontSize, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->sgprsPerSimd, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->minSgprAllocation, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxSgprAllocation, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->sgprAllocationGranularity, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->vgprsPerSimd, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->minVgprAllocation, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->maxVgprAllocation, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->vgprAllocationGranularity, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceShaderCorePropertiesAMD* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->shaderEngineCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->shaderArraysPerEngineCount, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->computeUnitsPerShaderArray, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->simdPerComputeUnit, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->wavefrontsPerSimd, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->wavefrontSize, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->sgprsPerSimd, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->minSgprAllocation, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxSgprAllocation, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->sgprAllocationGranularity, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->vgprsPerSimd, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->minVgprAllocation, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVgprAllocation, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->vgprAllocationGranularity, sizeof(uint32_t));
+}
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->maxVertexAttribDivisor, sizeof(uint32_t));
+}
+
+void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->maxVertexAttribDivisor, sizeof(uint32_t));
+}
+
+void marshal_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanStream* vkStream,
+ const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling)
+{
+ vkStream->write((uint32_t*)&forMarshaling->binding, sizeof(uint32_t));
+ vkStream->write((uint32_t*)&forMarshaling->divisor, sizeof(uint32_t));
+}
+
+void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanStream* vkStream,
+ VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling)
+{
+ vkStream->read((uint32_t*)&forUnmarshaling->binding, sizeof(uint32_t));
+ vkStream->read((uint32_t*)&forUnmarshaling->divisor, sizeof(uint32_t));
+}
+
+void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((const void**)&forMarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->write((uint32_t*)&forMarshaling->vertexBindingDivisorCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)forMarshaling->vertexBindingDivisorCount; ++i)
+ {
+ marshal_VkVertexInputBindingDivisorDescriptionEXT(vkStream, (const VkVertexInputBindingDivisorDescriptionEXT*)(forMarshaling->pVertexBindingDivisors + i));
+ }
+}
+
+void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(const void*));
+ // TODO: Unsupported : const void* pNext
+ vkStream->read((uint32_t*)&forUnmarshaling->vertexBindingDivisorCount, sizeof(uint32_t));
+ vkStream->alloc((void**)&forUnmarshaling->pVertexBindingDivisors, forUnmarshaling->vertexBindingDivisorCount * sizeof(const VkVertexInputBindingDivisorDescriptionEXT));
+ for (uint32_t i = 0; i < (uint32_t)forUnmarshaling->vertexBindingDivisorCount; ++i)
+ {
+ unmarshal_VkVertexInputBindingDivisorDescriptionEXT(vkStream, (VkVertexInputBindingDivisorDescriptionEXT*)(forUnmarshaling->pVertexBindingDivisors + i));
+ }
+}
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void marshal_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanStream* vkStream,
+ const VkQueueFamilyCheckpointPropertiesNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkPipelineStageFlags*)&forMarshaling->checkpointExecutionStageMask, sizeof(VkPipelineStageFlags));
+}
+
+void unmarshal_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanStream* vkStream,
+ VkQueueFamilyCheckpointPropertiesNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkPipelineStageFlags*)&forUnmarshaling->checkpointExecutionStageMask, sizeof(VkPipelineStageFlags));
+}
+
+void marshal_VkCheckpointDataNV(
+ VulkanStream* vkStream,
+ const VkCheckpointDataNV* forMarshaling)
+{
+ vkStream->write((VkStructureType*)&forMarshaling->sType, sizeof(VkStructureType));
+ vkStream->write((void**)&forMarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->write((VkPipelineStageFlagBits*)&forMarshaling->stage, sizeof(VkPipelineStageFlagBits));
+ vkStream->write((void**)&forMarshaling->pCheckpointMarker, sizeof(void*));
+ if (forMarshaling->pCheckpointMarker)
+ {
+ vkStream->write((void*)forMarshaling->pCheckpointMarker, sizeof(uint8_t));
+ }
+}
+
+void unmarshal_VkCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkCheckpointDataNV* forUnmarshaling)
+{
+ vkStream->read((VkStructureType*)&forUnmarshaling->sType, sizeof(VkStructureType));
+ vkStream->read((void**)&forUnmarshaling->pNext, sizeof(void*));
+ // TODO: Unsupported : void* pNext
+ vkStream->read((VkPipelineStageFlagBits*)&forUnmarshaling->stage, sizeof(VkPipelineStageFlagBits));
+ vkStream->read((void**)&forUnmarshaling->pCheckpointMarker, sizeof(void*));
+ if (forUnmarshaling->pCheckpointMarker)
+ {
+ vkStream->alloc((void**)&forUnmarshaling->pCheckpointMarker, sizeof(uint8_t));
+ vkStream->read((void*)forUnmarshaling->pCheckpointMarker, sizeof(uint8_t));
+ }
+}
+
+void marshal_vkCmdSetCheckpointNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const void* pCheckpointMarker)
+{
+ vkStream->write((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->write((const void**)&pCheckpointMarker, sizeof(const void*));
+ if (pCheckpointMarker)
+ {
+ vkStream->write((const void*)pCheckpointMarker, sizeof(const uint8_t));
+ }
+}
+
+void unmarshal_vkCmdSetCheckpointNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const void* pCheckpointMarker)
+{
+ vkStream->read((VkCommandBuffer*)&commandBuffer, sizeof(VkCommandBuffer));
+ vkStream->read((void**)&pCheckpointMarker, sizeof(const void*));
+ if (pCheckpointMarker)
+ {
+ vkStream->alloc((void**)&pCheckpointMarker, sizeof(const uint8_t));
+ vkStream->read((void*)pCheckpointMarker, sizeof(const uint8_t));
+ }
+}
+
+void marshal_vkGetQueueCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t* pCheckpointDataCount,
+ VkCheckpointDataNV* pCheckpointData)
+{
+ vkStream->write((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
+ {
+ marshal_VkCheckpointDataNV(vkStream, (VkCheckpointDataNV*)(pCheckpointData + i));
+ }
+}
+
+void unmarshal_vkGetQueueCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t* pCheckpointDataCount,
+ VkCheckpointDataNV* pCheckpointData)
+{
+ vkStream->read((VkQueue*)&queue, sizeof(VkQueue));
+ vkStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
+ for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
+ {
+ unmarshal_VkCheckpointDataNV(vkStream, (VkCheckpointDataNV*)(pCheckpointData + i));
+ }
+}
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.h
new file mode 100644
index 0000000000..16cb8242a7
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_marshaling.h
@@ -0,0 +1,7159 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_marshaling
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
+
+#include <vulkan.h>
+
+
+#include "VulkanStream.h"
+#include "android/base/files/StreamSerializing.h"
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void marshal_VkApplicationInfo(
+ VulkanStream* vkStream,
+ const VkApplicationInfo* forMarshaling);
+
+void unmarshal_VkApplicationInfo(
+ VulkanStream* vkStream,
+ VkApplicationInfo* forUnmarshaling);
+
+void marshal_VkInstanceCreateInfo(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* forMarshaling);
+
+void unmarshal_VkInstanceCreateInfo(
+ VulkanStream* vkStream,
+ VkInstanceCreateInfo* forUnmarshaling);
+
+void marshal_VkAllocationCallbacks(
+ VulkanStream* vkStream,
+ const VkAllocationCallbacks* forMarshaling);
+
+void unmarshal_VkAllocationCallbacks(
+ VulkanStream* vkStream,
+ VkAllocationCallbacks* forUnmarshaling);
+
+VkResult marshal_vkCreateInstance(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkInstance* pInstance);
+
+VkResult unmarshal_vkCreateInstance(
+ VulkanStream* vkStream,
+ const VkInstanceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkInstance* pInstance);
+
+void marshal_vkDestroyInstance(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyInstance(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkEnumeratePhysicalDevices(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceCount,
+ VkPhysicalDevice* pPhysicalDevices);
+
+VkResult unmarshal_vkEnumeratePhysicalDevices(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceCount,
+ VkPhysicalDevice* pPhysicalDevices);
+
+void marshal_VkPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceFeatures* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures* pFeatures);
+
+void unmarshal_vkGetPhysicalDeviceFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures* pFeatures);
+
+void marshal_VkFormatProperties(
+ VulkanStream* vkStream,
+ const VkFormatProperties* forMarshaling);
+
+void unmarshal_VkFormatProperties(
+ VulkanStream* vkStream,
+ VkFormatProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties* pFormatProperties);
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties* pFormatProperties);
+
+void marshal_VkExtent3D(
+ VulkanStream* vkStream,
+ const VkExtent3D* forMarshaling);
+
+void unmarshal_VkExtent3D(
+ VulkanStream* vkStream,
+ VkExtent3D* forUnmarshaling);
+
+void marshal_VkImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkImageFormatProperties* forMarshaling);
+
+void unmarshal_VkImageFormatProperties(
+ VulkanStream* vkStream,
+ VkImageFormatProperties* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkImageFormatProperties* pImageFormatProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkImageFormatProperties* pImageFormatProperties);
+
+void marshal_VkPhysicalDeviceLimits(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceLimits* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceLimits(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceLimits* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSparseProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSparseProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSparseProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSparseProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties* pProperties);
+
+void marshal_VkQueueFamilyProperties(
+ VulkanStream* vkStream,
+ const VkQueueFamilyProperties* forMarshaling);
+
+void unmarshal_VkQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkQueueFamilyProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties* pQueueFamilyProperties);
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties* pQueueFamilyProperties);
+
+void marshal_VkMemoryType(
+ VulkanStream* vkStream,
+ const VkMemoryType* forMarshaling);
+
+void unmarshal_VkMemoryType(
+ VulkanStream* vkStream,
+ VkMemoryType* forUnmarshaling);
+
+void marshal_VkMemoryHeap(
+ VulkanStream* vkStream,
+ const VkMemoryHeap* forMarshaling);
+
+void unmarshal_VkMemoryHeap(
+ VulkanStream* vkStream,
+ VkMemoryHeap* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMemoryProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMemoryProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+
+PFN_vkVoidFunction marshal_vkGetInstanceProcAddr(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const char* pName);
+
+PFN_vkVoidFunction unmarshal_vkGetInstanceProcAddr(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const char* pName);
+
+PFN_vkVoidFunction marshal_vkGetDeviceProcAddr(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const char* pName);
+
+PFN_vkVoidFunction unmarshal_vkGetDeviceProcAddr(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const char* pName);
+
+void marshal_VkDeviceQueueCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceQueueCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceQueueCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceQueueCreateInfo* forUnmarshaling);
+
+void marshal_VkDeviceCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateDevice(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDeviceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDevice* pDevice);
+
+VkResult unmarshal_vkCreateDevice(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDeviceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDevice* pDevice);
+
+void marshal_vkDestroyDevice(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDevice(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkExtensionProperties(
+ VulkanStream* vkStream,
+ const VkExtensionProperties* forMarshaling);
+
+void unmarshal_VkExtensionProperties(
+ VulkanStream* vkStream,
+ VkExtensionProperties* forUnmarshaling);
+
+VkResult marshal_vkEnumerateInstanceExtensionProperties(
+ VulkanStream* vkStream,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties);
+
+VkResult unmarshal_vkEnumerateInstanceExtensionProperties(
+ VulkanStream* vkStream,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties);
+
+VkResult marshal_vkEnumerateDeviceExtensionProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties);
+
+VkResult unmarshal_vkEnumerateDeviceExtensionProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const char* pLayerName,
+ uint32_t* pPropertyCount,
+ VkExtensionProperties* pProperties);
+
+void marshal_VkLayerProperties(
+ VulkanStream* vkStream,
+ const VkLayerProperties* forMarshaling);
+
+void unmarshal_VkLayerProperties(
+ VulkanStream* vkStream,
+ VkLayerProperties* forUnmarshaling);
+
+VkResult marshal_vkEnumerateInstanceLayerProperties(
+ VulkanStream* vkStream,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties);
+
+VkResult unmarshal_vkEnumerateInstanceLayerProperties(
+ VulkanStream* vkStream,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties);
+
+VkResult marshal_vkEnumerateDeviceLayerProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties);
+
+VkResult unmarshal_vkEnumerateDeviceLayerProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkLayerProperties* pProperties);
+
+void marshal_vkGetDeviceQueue(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t queueFamilyIndex,
+ uint32_t queueIndex,
+ VkQueue* pQueue);
+
+void unmarshal_vkGetDeviceQueue(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t queueFamilyIndex,
+ uint32_t queueIndex,
+ VkQueue* pQueue);
+
+void marshal_VkSubmitInfo(
+ VulkanStream* vkStream,
+ const VkSubmitInfo* forMarshaling);
+
+void unmarshal_VkSubmitInfo(
+ VulkanStream* vkStream,
+ VkSubmitInfo* forUnmarshaling);
+
+VkResult marshal_vkQueueSubmit(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t submitCount,
+ const VkSubmitInfo* pSubmits,
+ VkFence fence);
+
+VkResult unmarshal_vkQueueSubmit(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t submitCount,
+ const VkSubmitInfo* pSubmits,
+ VkFence fence);
+
+VkResult marshal_vkQueueWaitIdle(
+ VulkanStream* vkStream,
+ VkQueue queue);
+
+VkResult unmarshal_vkQueueWaitIdle(
+ VulkanStream* vkStream,
+ VkQueue queue);
+
+VkResult marshal_vkDeviceWaitIdle(
+ VulkanStream* vkStream,
+ VkDevice device);
+
+VkResult unmarshal_vkDeviceWaitIdle(
+ VulkanStream* vkStream,
+ VkDevice device);
+
+void marshal_VkMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ const VkMemoryAllocateInfo* forMarshaling);
+
+void unmarshal_VkMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ VkMemoryAllocateInfo* forUnmarshaling);
+
+VkResult marshal_vkAllocateMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryAllocateInfo* pAllocateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDeviceMemory* pMemory);
+
+VkResult unmarshal_vkAllocateMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryAllocateInfo* pAllocateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDeviceMemory* pMemory);
+
+void marshal_vkFreeMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkFreeMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkMapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize offset,
+ VkDeviceSize size,
+ VkMemoryMapFlags flags,
+ void** ppData);
+
+VkResult unmarshal_vkMapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize offset,
+ VkDeviceSize size,
+ VkMemoryMapFlags flags,
+ void** ppData);
+
+void marshal_vkUnmapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory);
+
+void unmarshal_vkUnmapMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory);
+
+void marshal_VkMappedMemoryRange(
+ VulkanStream* vkStream,
+ const VkMappedMemoryRange* forMarshaling);
+
+void unmarshal_VkMappedMemoryRange(
+ VulkanStream* vkStream,
+ VkMappedMemoryRange* forUnmarshaling);
+
+VkResult marshal_vkFlushMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges);
+
+VkResult unmarshal_vkFlushMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges);
+
+VkResult marshal_vkInvalidateMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges);
+
+VkResult unmarshal_vkInvalidateMappedMemoryRanges(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t memoryRangeCount,
+ const VkMappedMemoryRange* pMemoryRanges);
+
+void marshal_vkGetDeviceMemoryCommitment(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize* pCommittedMemoryInBytes);
+
+void unmarshal_vkGetDeviceMemoryCommitment(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkDeviceSize* pCommittedMemoryInBytes);
+
+VkResult marshal_vkBindBufferMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset);
+
+VkResult unmarshal_vkBindBufferMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset);
+
+VkResult marshal_vkBindImageMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset);
+
+VkResult unmarshal_vkBindImageMemory(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkDeviceMemory memory,
+ VkDeviceSize memoryOffset);
+
+void marshal_VkMemoryRequirements(
+ VulkanStream* vkStream,
+ const VkMemoryRequirements* forMarshaling);
+
+void unmarshal_VkMemoryRequirements(
+ VulkanStream* vkStream,
+ VkMemoryRequirements* forUnmarshaling);
+
+void marshal_vkGetBufferMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkMemoryRequirements* pMemoryRequirements);
+
+void unmarshal_vkGetBufferMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ VkMemoryRequirements* pMemoryRequirements);
+
+void marshal_vkGetImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkMemoryRequirements* pMemoryRequirements);
+
+void unmarshal_vkGetImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ VkMemoryRequirements* pMemoryRequirements);
+
+void marshal_VkSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkSparseImageFormatProperties* forMarshaling);
+
+void unmarshal_VkSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkSparseImageFormatProperties* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryRequirements(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryRequirements* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryRequirements(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryRequirements* forUnmarshaling);
+
+void marshal_vkGetImageSparseMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+
+void unmarshal_vkGetImageSparseMemoryRequirements(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkSampleCountFlagBits samples,
+ VkImageUsageFlags usage,
+ VkImageTiling tiling,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkSampleCountFlagBits samples,
+ VkImageUsageFlags usage,
+ VkImageTiling tiling,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties* pProperties);
+
+void marshal_VkSparseMemoryBind(
+ VulkanStream* vkStream,
+ const VkSparseMemoryBind* forMarshaling);
+
+void unmarshal_VkSparseMemoryBind(
+ VulkanStream* vkStream,
+ VkSparseMemoryBind* forUnmarshaling);
+
+void marshal_VkSparseBufferMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseBufferMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseBufferMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseBufferMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseImageOpaqueMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseImageOpaqueMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseImageOpaqueMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkImageSubresource(
+ VulkanStream* vkStream,
+ const VkImageSubresource* forMarshaling);
+
+void unmarshal_VkImageSubresource(
+ VulkanStream* vkStream,
+ VkImageSubresource* forUnmarshaling);
+
+void marshal_VkOffset3D(
+ VulkanStream* vkStream,
+ const VkOffset3D* forMarshaling);
+
+void unmarshal_VkOffset3D(
+ VulkanStream* vkStream,
+ VkOffset3D* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryBind(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryBind* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryBind(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryBind* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryBindInfo(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryBindInfo* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryBindInfo(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryBindInfo* forUnmarshaling);
+
+void marshal_VkBindSparseInfo(
+ VulkanStream* vkStream,
+ const VkBindSparseInfo* forMarshaling);
+
+void unmarshal_VkBindSparseInfo(
+ VulkanStream* vkStream,
+ VkBindSparseInfo* forUnmarshaling);
+
+VkResult marshal_vkQueueBindSparse(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t bindInfoCount,
+ const VkBindSparseInfo* pBindInfo,
+ VkFence fence);
+
+VkResult unmarshal_vkQueueBindSparse(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t bindInfoCount,
+ const VkBindSparseInfo* pBindInfo,
+ VkFence fence);
+
+void marshal_VkFenceCreateInfo(
+ VulkanStream* vkStream,
+ const VkFenceCreateInfo* forMarshaling);
+
+void unmarshal_VkFenceCreateInfo(
+ VulkanStream* vkStream,
+ VkFenceCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+VkResult unmarshal_vkCreateFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+void marshal_vkDestroyFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyFence(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkResetFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences);
+
+VkResult unmarshal_vkResetFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences);
+
+VkResult marshal_vkGetFenceStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence);
+
+VkResult unmarshal_vkGetFenceStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFence fence);
+
+VkResult marshal_vkWaitForFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences,
+ VkBool32 waitAll,
+ uint64_t timeout);
+
+VkResult unmarshal_vkWaitForFences(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t fenceCount,
+ const VkFence* pFences,
+ VkBool32 waitAll,
+ uint64_t timeout);
+
+void marshal_VkSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ const VkSemaphoreCreateInfo* forMarshaling);
+
+void unmarshal_VkSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ VkSemaphoreCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateSemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSemaphore* pSemaphore);
+
+VkResult unmarshal_vkCreateSemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSemaphore* pSemaphore);
+
+void marshal_vkDestroySemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSemaphore semaphore,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySemaphore(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSemaphore semaphore,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkEventCreateInfo(
+ VulkanStream* vkStream,
+ const VkEventCreateInfo* forMarshaling);
+
+void unmarshal_VkEventCreateInfo(
+ VulkanStream* vkStream,
+ VkEventCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkEventCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkEvent* pEvent);
+
+VkResult unmarshal_vkCreateEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkEventCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkEvent* pEvent);
+
+void marshal_vkDestroyEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkGetEventStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+VkResult unmarshal_vkGetEventStatus(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+VkResult marshal_vkSetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+VkResult unmarshal_vkSetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+VkResult marshal_vkResetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+VkResult unmarshal_vkResetEvent(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkEvent event);
+
+void marshal_VkQueryPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkQueryPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkQueryPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkQueryPoolCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkQueryPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkQueryPool* pQueryPool);
+
+VkResult unmarshal_vkCreateQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkQueryPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkQueryPool* pQueryPool);
+
+void marshal_vkDestroyQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyQueryPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkGetQueryPoolResults(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ size_t dataSize,
+ void* pData,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags);
+
+VkResult unmarshal_vkGetQueryPoolResults(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ size_t dataSize,
+ void* pData,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags);
+
+void marshal_VkBufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkBufferCreateInfo* forMarshaling);
+
+void unmarshal_VkBufferCreateInfo(
+ VulkanStream* vkStream,
+ VkBufferCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBuffer* pBuffer);
+
+VkResult unmarshal_vkCreateBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBuffer* pBuffer);
+
+void marshal_vkDestroyBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyBuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBuffer buffer,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkBufferViewCreateInfo(
+ VulkanStream* vkStream,
+ const VkBufferViewCreateInfo* forMarshaling);
+
+void unmarshal_VkBufferViewCreateInfo(
+ VulkanStream* vkStream,
+ VkBufferViewCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBufferView* pView);
+
+VkResult unmarshal_vkCreateBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkBufferView* pView);
+
+void marshal_vkDestroyBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBufferView bufferView,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyBufferView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkBufferView bufferView,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkImageCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageCreateInfo* forMarshaling);
+
+void unmarshal_VkImageCreateInfo(
+ VulkanStream* vkStream,
+ VkImageCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImage* pImage);
+
+VkResult unmarshal_vkCreateImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImage* pImage);
+
+void marshal_vkDestroyImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyImage(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkSubresourceLayout(
+ VulkanStream* vkStream,
+ const VkSubresourceLayout* forMarshaling);
+
+void unmarshal_VkSubresourceLayout(
+ VulkanStream* vkStream,
+ VkSubresourceLayout* forUnmarshaling);
+
+void marshal_vkGetImageSubresourceLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkImageSubresource* pSubresource,
+ VkSubresourceLayout* pLayout);
+
+void unmarshal_vkGetImageSubresourceLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImage image,
+ const VkImageSubresource* pSubresource,
+ VkSubresourceLayout* pLayout);
+
+void marshal_VkComponentMapping(
+ VulkanStream* vkStream,
+ const VkComponentMapping* forMarshaling);
+
+void unmarshal_VkComponentMapping(
+ VulkanStream* vkStream,
+ VkComponentMapping* forUnmarshaling);
+
+void marshal_VkImageSubresourceRange(
+ VulkanStream* vkStream,
+ const VkImageSubresourceRange* forMarshaling);
+
+void unmarshal_VkImageSubresourceRange(
+ VulkanStream* vkStream,
+ VkImageSubresourceRange* forUnmarshaling);
+
+void marshal_VkImageViewCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageViewCreateInfo* forMarshaling);
+
+void unmarshal_VkImageViewCreateInfo(
+ VulkanStream* vkStream,
+ VkImageViewCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView);
+
+VkResult unmarshal_vkCreateImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageViewCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkImageView* pView);
+
+void marshal_vkDestroyImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImageView imageView,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyImageView(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkImageView imageView,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkShaderModuleCreateInfo(
+ VulkanStream* vkStream,
+ const VkShaderModuleCreateInfo* forMarshaling);
+
+void unmarshal_VkShaderModuleCreateInfo(
+ VulkanStream* vkStream,
+ VkShaderModuleCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkShaderModule* pShaderModule);
+
+VkResult unmarshal_vkCreateShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkShaderModuleCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkShaderModule* pShaderModule);
+
+void marshal_vkDestroyShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkShaderModule shaderModule,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyShaderModule(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkShaderModule shaderModule,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkPipelineCacheCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineCacheCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineCacheCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineCacheCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreatePipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineCacheCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineCache* pPipelineCache);
+
+VkResult unmarshal_vkCreatePipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineCacheCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineCache* pPipelineCache);
+
+void marshal_vkDestroyPipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyPipelineCache(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkGetPipelineCacheData(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ size_t* pDataSize,
+ void* pData);
+
+VkResult unmarshal_vkGetPipelineCacheData(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ size_t* pDataSize,
+ void* pData);
+
+VkResult marshal_vkMergePipelineCaches(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache dstCache,
+ uint32_t srcCacheCount,
+ const VkPipelineCache* pSrcCaches);
+
+VkResult unmarshal_vkMergePipelineCaches(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache dstCache,
+ uint32_t srcCacheCount,
+ const VkPipelineCache* pSrcCaches);
+
+void marshal_VkSpecializationMapEntry(
+ VulkanStream* vkStream,
+ const VkSpecializationMapEntry* forMarshaling);
+
+void unmarshal_VkSpecializationMapEntry(
+ VulkanStream* vkStream,
+ VkSpecializationMapEntry* forUnmarshaling);
+
+void marshal_VkSpecializationInfo(
+ VulkanStream* vkStream,
+ const VkSpecializationInfo* forMarshaling);
+
+void unmarshal_VkSpecializationInfo(
+ VulkanStream* vkStream,
+ VkSpecializationInfo* forUnmarshaling);
+
+void marshal_VkPipelineShaderStageCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineShaderStageCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineShaderStageCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineShaderStageCreateInfo* forUnmarshaling);
+
+void marshal_VkVertexInputBindingDescription(
+ VulkanStream* vkStream,
+ const VkVertexInputBindingDescription* forMarshaling);
+
+void unmarshal_VkVertexInputBindingDescription(
+ VulkanStream* vkStream,
+ VkVertexInputBindingDescription* forUnmarshaling);
+
+void marshal_VkVertexInputAttributeDescription(
+ VulkanStream* vkStream,
+ const VkVertexInputAttributeDescription* forMarshaling);
+
+void unmarshal_VkVertexInputAttributeDescription(
+ VulkanStream* vkStream,
+ VkVertexInputAttributeDescription* forUnmarshaling);
+
+void marshal_VkPipelineVertexInputStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineVertexInputStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineVertexInputStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineVertexInputStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineInputAssemblyStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineInputAssemblyStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineInputAssemblyStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineTessellationStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineTessellationStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineTessellationStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineTessellationStateCreateInfo* forUnmarshaling);
+
+void marshal_VkViewport(
+ VulkanStream* vkStream,
+ const VkViewport* forMarshaling);
+
+void unmarshal_VkViewport(
+ VulkanStream* vkStream,
+ VkViewport* forUnmarshaling);
+
+void marshal_VkOffset2D(
+ VulkanStream* vkStream,
+ const VkOffset2D* forMarshaling);
+
+void unmarshal_VkOffset2D(
+ VulkanStream* vkStream,
+ VkOffset2D* forUnmarshaling);
+
+void marshal_VkExtent2D(
+ VulkanStream* vkStream,
+ const VkExtent2D* forMarshaling);
+
+void unmarshal_VkExtent2D(
+ VulkanStream* vkStream,
+ VkExtent2D* forUnmarshaling);
+
+void marshal_VkRect2D(
+ VulkanStream* vkStream,
+ const VkRect2D* forMarshaling);
+
+void unmarshal_VkRect2D(
+ VulkanStream* vkStream,
+ VkRect2D* forUnmarshaling);
+
+void marshal_VkPipelineViewportStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineViewportStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineViewportStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineViewportStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineRasterizationStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineMultisampleStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineMultisampleStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineMultisampleStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineMultisampleStateCreateInfo* forUnmarshaling);
+
+void marshal_VkStencilOpState(
+ VulkanStream* vkStream,
+ const VkStencilOpState* forMarshaling);
+
+void unmarshal_VkStencilOpState(
+ VulkanStream* vkStream,
+ VkStencilOpState* forUnmarshaling);
+
+void marshal_VkPipelineDepthStencilStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineDepthStencilStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineDepthStencilStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineDepthStencilStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendAttachmentState(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendAttachmentState* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendAttachmentState(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendAttachmentState* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendStateCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineDynamicStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineDynamicStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineDynamicStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineDynamicStateCreateInfo* forUnmarshaling);
+
+void marshal_VkGraphicsPipelineCreateInfo(
+ VulkanStream* vkStream,
+ const VkGraphicsPipelineCreateInfo* forMarshaling);
+
+void unmarshal_VkGraphicsPipelineCreateInfo(
+ VulkanStream* vkStream,
+ VkGraphicsPipelineCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateGraphicsPipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkGraphicsPipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines);
+
+VkResult unmarshal_vkCreateGraphicsPipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkGraphicsPipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines);
+
+void marshal_VkComputePipelineCreateInfo(
+ VulkanStream* vkStream,
+ const VkComputePipelineCreateInfo* forMarshaling);
+
+void unmarshal_VkComputePipelineCreateInfo(
+ VulkanStream* vkStream,
+ VkComputePipelineCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateComputePipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkComputePipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines);
+
+VkResult unmarshal_vkCreateComputePipelines(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineCache pipelineCache,
+ uint32_t createInfoCount,
+ const VkComputePipelineCreateInfo* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipeline* pPipelines);
+
+void marshal_vkDestroyPipeline(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyPipeline(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkPushConstantRange(
+ VulkanStream* vkStream,
+ const VkPushConstantRange* forMarshaling);
+
+void unmarshal_VkPushConstantRange(
+ VulkanStream* vkStream,
+ VkPushConstantRange* forUnmarshaling);
+
+void marshal_VkPipelineLayoutCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineLayoutCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineLayoutCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineLayoutCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreatePipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineLayout* pPipelineLayout);
+
+VkResult unmarshal_vkCreatePipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkPipelineLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkPipelineLayout* pPipelineLayout);
+
+void marshal_vkDestroyPipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineLayout pipelineLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyPipelineLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipelineLayout pipelineLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkSamplerCreateInfo(
+ VulkanStream* vkStream,
+ const VkSamplerCreateInfo* forMarshaling);
+
+void unmarshal_VkSamplerCreateInfo(
+ VulkanStream* vkStream,
+ VkSamplerCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateSampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSampler* pSampler);
+
+VkResult unmarshal_vkCreateSampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSampler* pSampler);
+
+void marshal_vkDestroySampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSampler sampler,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySampler(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSampler sampler,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkDescriptorSetLayoutBinding(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutBinding* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutBinding(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutBinding* forUnmarshaling);
+
+void marshal_VkDescriptorSetLayoutCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorSetLayout* pSetLayout);
+
+VkResult unmarshal_vkCreateDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorSetLayout* pSetLayout);
+
+void marshal_vkDestroyDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSetLayout descriptorSetLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDescriptorSetLayout(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSetLayout descriptorSetLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkDescriptorPoolSize(
+ VulkanStream* vkStream,
+ const VkDescriptorPoolSize* forMarshaling);
+
+void unmarshal_VkDescriptorPoolSize(
+ VulkanStream* vkStream,
+ VkDescriptorPoolSize* forUnmarshaling);
+
+void marshal_VkDescriptorPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorPoolCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorPool* pDescriptorPool);
+
+VkResult unmarshal_vkCreateDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorPool* pDescriptorPool);
+
+void marshal_vkDestroyDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkResetDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ VkDescriptorPoolResetFlags flags);
+
+VkResult unmarshal_vkResetDescriptorPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ VkDescriptorPoolResetFlags flags);
+
+void marshal_VkDescriptorSetAllocateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorSetAllocateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorSetAllocateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorSetAllocateInfo* forUnmarshaling);
+
+VkResult marshal_vkAllocateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetAllocateInfo* pAllocateInfo,
+ VkDescriptorSet* pDescriptorSets);
+
+VkResult unmarshal_vkAllocateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetAllocateInfo* pAllocateInfo,
+ VkDescriptorSet* pDescriptorSets);
+
+VkResult marshal_vkFreeDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets);
+
+VkResult unmarshal_vkFreeDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorPool descriptorPool,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets);
+
+void marshal_VkDescriptorImageInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorImageInfo* forMarshaling);
+
+void unmarshal_VkDescriptorImageInfo(
+ VulkanStream* vkStream,
+ VkDescriptorImageInfo* forUnmarshaling);
+
+void marshal_VkDescriptorBufferInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorBufferInfo* forMarshaling);
+
+void unmarshal_VkDescriptorBufferInfo(
+ VulkanStream* vkStream,
+ VkDescriptorBufferInfo* forUnmarshaling);
+
+void marshal_VkWriteDescriptorSet(
+ VulkanStream* vkStream,
+ const VkWriteDescriptorSet* forMarshaling);
+
+void unmarshal_VkWriteDescriptorSet(
+ VulkanStream* vkStream,
+ VkWriteDescriptorSet* forUnmarshaling);
+
+void marshal_VkCopyDescriptorSet(
+ VulkanStream* vkStream,
+ const VkCopyDescriptorSet* forMarshaling);
+
+void unmarshal_VkCopyDescriptorSet(
+ VulkanStream* vkStream,
+ VkCopyDescriptorSet* forUnmarshaling);
+
+void marshal_vkUpdateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites,
+ uint32_t descriptorCopyCount,
+ const VkCopyDescriptorSet* pDescriptorCopies);
+
+void unmarshal_vkUpdateDescriptorSets(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites,
+ uint32_t descriptorCopyCount,
+ const VkCopyDescriptorSet* pDescriptorCopies);
+
+void marshal_VkFramebufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkFramebufferCreateInfo* forMarshaling);
+
+void unmarshal_VkFramebufferCreateInfo(
+ VulkanStream* vkStream,
+ VkFramebufferCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFramebufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFramebuffer* pFramebuffer);
+
+VkResult unmarshal_vkCreateFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFramebufferCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFramebuffer* pFramebuffer);
+
+void marshal_vkDestroyFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFramebuffer framebuffer,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyFramebuffer(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkFramebuffer framebuffer,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkAttachmentDescription(
+ VulkanStream* vkStream,
+ const VkAttachmentDescription* forMarshaling);
+
+void unmarshal_VkAttachmentDescription(
+ VulkanStream* vkStream,
+ VkAttachmentDescription* forUnmarshaling);
+
+void marshal_VkAttachmentReference(
+ VulkanStream* vkStream,
+ const VkAttachmentReference* forMarshaling);
+
+void unmarshal_VkAttachmentReference(
+ VulkanStream* vkStream,
+ VkAttachmentReference* forUnmarshaling);
+
+void marshal_VkSubpassDescription(
+ VulkanStream* vkStream,
+ const VkSubpassDescription* forMarshaling);
+
+void unmarshal_VkSubpassDescription(
+ VulkanStream* vkStream,
+ VkSubpassDescription* forUnmarshaling);
+
+void marshal_VkSubpassDependency(
+ VulkanStream* vkStream,
+ const VkSubpassDependency* forMarshaling);
+
+void unmarshal_VkSubpassDependency(
+ VulkanStream* vkStream,
+ VkSubpassDependency* forUnmarshaling);
+
+void marshal_VkRenderPassCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+VkResult unmarshal_vkCreateRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+void marshal_vkDestroyRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyRenderPass(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_vkGetRenderAreaGranularity(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ VkExtent2D* pGranularity);
+
+void unmarshal_vkGetRenderAreaGranularity(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkRenderPass renderPass,
+ VkExtent2D* pGranularity);
+
+void marshal_VkCommandPoolCreateInfo(
+ VulkanStream* vkStream,
+ const VkCommandPoolCreateInfo* forMarshaling);
+
+void unmarshal_VkCommandPoolCreateInfo(
+ VulkanStream* vkStream,
+ VkCommandPoolCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkCommandPool* pCommandPool);
+
+VkResult unmarshal_vkCreateCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandPoolCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkCommandPool* pCommandPool);
+
+void marshal_vkDestroyCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkResetCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolResetFlags flags);
+
+VkResult unmarshal_vkResetCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolResetFlags flags);
+
+void marshal_VkCommandBufferAllocateInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferAllocateInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferAllocateInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferAllocateInfo* forUnmarshaling);
+
+VkResult marshal_vkAllocateCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandBufferAllocateInfo* pAllocateInfo,
+ VkCommandBuffer* pCommandBuffers);
+
+VkResult unmarshal_vkAllocateCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkCommandBufferAllocateInfo* pAllocateInfo,
+ VkCommandBuffer* pCommandBuffers);
+
+void marshal_vkFreeCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers);
+
+void unmarshal_vkFreeCommandBuffers(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers);
+
+void marshal_VkCommandBufferInheritanceInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferInheritanceInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferInheritanceInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferInheritanceInfo* forUnmarshaling);
+
+void marshal_VkCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ const VkCommandBufferBeginInfo* forMarshaling);
+
+void unmarshal_VkCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ VkCommandBufferBeginInfo* forUnmarshaling);
+
+VkResult marshal_vkBeginCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCommandBufferBeginInfo* pBeginInfo);
+
+VkResult unmarshal_vkBeginCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCommandBufferBeginInfo* pBeginInfo);
+
+VkResult marshal_vkEndCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+VkResult unmarshal_vkEndCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+VkResult marshal_vkResetCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkCommandBufferResetFlags flags);
+
+VkResult unmarshal_vkResetCommandBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkCommandBufferResetFlags flags);
+
+void marshal_vkCmdBindPipeline(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipeline pipeline);
+
+void unmarshal_vkCmdBindPipeline(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipeline pipeline);
+
+void marshal_vkCmdSetViewport(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewport* pViewports);
+
+void unmarshal_vkCmdSetViewport(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewport* pViewports);
+
+void marshal_vkCmdSetScissor(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstScissor,
+ uint32_t scissorCount,
+ const VkRect2D* pScissors);
+
+void unmarshal_vkCmdSetScissor(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstScissor,
+ uint32_t scissorCount,
+ const VkRect2D* pScissors);
+
+void marshal_vkCmdSetLineWidth(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float lineWidth);
+
+void unmarshal_vkCmdSetLineWidth(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float lineWidth);
+
+void marshal_vkCmdSetDepthBias(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float depthBiasConstantFactor,
+ float depthBiasClamp,
+ float depthBiasSlopeFactor);
+
+void unmarshal_vkCmdSetDepthBias(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float depthBiasConstantFactor,
+ float depthBiasClamp,
+ float depthBiasSlopeFactor);
+
+void marshal_vkCmdSetBlendConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const float blendConstants);
+
+void unmarshal_vkCmdSetBlendConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const float blendConstants);
+
+void marshal_vkCmdSetDepthBounds(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float minDepthBounds,
+ float maxDepthBounds);
+
+void unmarshal_vkCmdSetDepthBounds(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ float minDepthBounds,
+ float maxDepthBounds);
+
+void marshal_vkCmdSetStencilCompareMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t compareMask);
+
+void unmarshal_vkCmdSetStencilCompareMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t compareMask);
+
+void marshal_vkCmdSetStencilWriteMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t writeMask);
+
+void unmarshal_vkCmdSetStencilWriteMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t writeMask);
+
+void marshal_vkCmdSetStencilReference(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t reference);
+
+void unmarshal_vkCmdSetStencilReference(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkStencilFaceFlags faceMask,
+ uint32_t reference);
+
+void marshal_vkCmdBindDescriptorSets(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t firstSet,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets,
+ uint32_t dynamicOffsetCount,
+ const uint32_t* pDynamicOffsets);
+
+void unmarshal_vkCmdBindDescriptorSets(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t firstSet,
+ uint32_t descriptorSetCount,
+ const VkDescriptorSet* pDescriptorSets,
+ uint32_t dynamicOffsetCount,
+ const uint32_t* pDynamicOffsets);
+
+void marshal_vkCmdBindIndexBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkIndexType indexType);
+
+void unmarshal_vkCmdBindIndexBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkIndexType indexType);
+
+void marshal_vkCmdBindVertexBuffers(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstBinding,
+ uint32_t bindingCount,
+ const VkBuffer* pBuffers,
+ const VkDeviceSize* pOffsets);
+
+void unmarshal_vkCmdBindVertexBuffers(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstBinding,
+ uint32_t bindingCount,
+ const VkBuffer* pBuffers,
+ const VkDeviceSize* pOffsets);
+
+void marshal_vkCmdDraw(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t vertexCount,
+ uint32_t instanceCount,
+ uint32_t firstVertex,
+ uint32_t firstInstance);
+
+void unmarshal_vkCmdDraw(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t vertexCount,
+ uint32_t instanceCount,
+ uint32_t firstVertex,
+ uint32_t firstInstance);
+
+void marshal_vkCmdDrawIndexed(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t indexCount,
+ uint32_t instanceCount,
+ uint32_t firstIndex,
+ int32_t vertexOffset,
+ uint32_t firstInstance);
+
+void unmarshal_vkCmdDrawIndexed(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t indexCount,
+ uint32_t instanceCount,
+ uint32_t firstIndex,
+ int32_t vertexOffset,
+ uint32_t firstInstance);
+
+void marshal_vkCmdDrawIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride);
+
+void marshal_vkCmdDrawIndexedIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndexedIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ uint32_t drawCount,
+ uint32_t stride);
+
+void marshal_vkCmdDispatch(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+void unmarshal_vkCmdDispatch(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+void marshal_vkCmdDispatchIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset);
+
+void unmarshal_vkCmdDispatchIndirect(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset);
+
+void marshal_VkBufferCopy(
+ VulkanStream* vkStream,
+ const VkBufferCopy* forMarshaling);
+
+void unmarshal_VkBufferCopy(
+ VulkanStream* vkStream,
+ VkBufferCopy* forUnmarshaling);
+
+void marshal_vkCmdCopyBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferCopy* pRegions);
+
+void unmarshal_vkCmdCopyBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferCopy* pRegions);
+
+void marshal_VkImageSubresourceLayers(
+ VulkanStream* vkStream,
+ const VkImageSubresourceLayers* forMarshaling);
+
+void unmarshal_VkImageSubresourceLayers(
+ VulkanStream* vkStream,
+ VkImageSubresourceLayers* forUnmarshaling);
+
+void marshal_VkImageCopy(
+ VulkanStream* vkStream,
+ const VkImageCopy* forMarshaling);
+
+void unmarshal_VkImageCopy(
+ VulkanStream* vkStream,
+ VkImageCopy* forUnmarshaling);
+
+void marshal_vkCmdCopyImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageCopy* pRegions);
+
+void unmarshal_vkCmdCopyImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageCopy* pRegions);
+
+void marshal_VkImageBlit(
+ VulkanStream* vkStream,
+ const VkImageBlit* forMarshaling);
+
+void unmarshal_VkImageBlit(
+ VulkanStream* vkStream,
+ VkImageBlit* forUnmarshaling);
+
+void marshal_vkCmdBlitImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageBlit* pRegions,
+ VkFilter filter);
+
+void unmarshal_vkCmdBlitImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageBlit* pRegions,
+ VkFilter filter);
+
+void marshal_VkBufferImageCopy(
+ VulkanStream* vkStream,
+ const VkBufferImageCopy* forMarshaling);
+
+void unmarshal_VkBufferImageCopy(
+ VulkanStream* vkStream,
+ VkBufferImageCopy* forUnmarshaling);
+
+void marshal_vkCmdCopyBufferToImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions);
+
+void unmarshal_vkCmdCopyBufferToImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer srcBuffer,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions);
+
+void marshal_vkCmdCopyImageToBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions);
+
+void unmarshal_vkCmdCopyImageToBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkBuffer dstBuffer,
+ uint32_t regionCount,
+ const VkBufferImageCopy* pRegions);
+
+void marshal_vkCmdUpdateBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize dataSize,
+ const void* pData);
+
+void unmarshal_vkCmdUpdateBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize dataSize,
+ const void* pData);
+
+void marshal_vkCmdFillBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize size,
+ uint32_t data);
+
+void unmarshal_vkCmdFillBuffer(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize size,
+ uint32_t data);
+
+void marshal_VkClearColorValue(
+ VulkanStream* vkStream,
+ const VkClearColorValue* forMarshaling);
+
+void unmarshal_VkClearColorValue(
+ VulkanStream* vkStream,
+ VkClearColorValue* forUnmarshaling);
+
+void marshal_vkCmdClearColorImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearColorValue* pColor,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges);
+
+void unmarshal_vkCmdClearColorImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearColorValue* pColor,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges);
+
+void marshal_VkClearDepthStencilValue(
+ VulkanStream* vkStream,
+ const VkClearDepthStencilValue* forMarshaling);
+
+void unmarshal_VkClearDepthStencilValue(
+ VulkanStream* vkStream,
+ VkClearDepthStencilValue* forUnmarshaling);
+
+void marshal_vkCmdClearDepthStencilImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearDepthStencilValue* pDepthStencil,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges);
+
+void unmarshal_vkCmdClearDepthStencilImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage image,
+ VkImageLayout imageLayout,
+ const VkClearDepthStencilValue* pDepthStencil,
+ uint32_t rangeCount,
+ const VkImageSubresourceRange* pRanges);
+
+void marshal_VkClearValue(
+ VulkanStream* vkStream,
+ const VkClearValue* forMarshaling);
+
+void unmarshal_VkClearValue(
+ VulkanStream* vkStream,
+ VkClearValue* forUnmarshaling);
+
+void marshal_VkClearAttachment(
+ VulkanStream* vkStream,
+ const VkClearAttachment* forMarshaling);
+
+void unmarshal_VkClearAttachment(
+ VulkanStream* vkStream,
+ VkClearAttachment* forUnmarshaling);
+
+void marshal_VkClearRect(
+ VulkanStream* vkStream,
+ const VkClearRect* forMarshaling);
+
+void unmarshal_VkClearRect(
+ VulkanStream* vkStream,
+ VkClearRect* forUnmarshaling);
+
+void marshal_vkCmdClearAttachments(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t attachmentCount,
+ const VkClearAttachment* pAttachments,
+ uint32_t rectCount,
+ const VkClearRect* pRects);
+
+void unmarshal_vkCmdClearAttachments(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t attachmentCount,
+ const VkClearAttachment* pAttachments,
+ uint32_t rectCount,
+ const VkClearRect* pRects);
+
+void marshal_VkImageResolve(
+ VulkanStream* vkStream,
+ const VkImageResolve* forMarshaling);
+
+void unmarshal_VkImageResolve(
+ VulkanStream* vkStream,
+ VkImageResolve* forUnmarshaling);
+
+void marshal_vkCmdResolveImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageResolve* pRegions);
+
+void unmarshal_vkCmdResolveImage(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkImage srcImage,
+ VkImageLayout srcImageLayout,
+ VkImage dstImage,
+ VkImageLayout dstImageLayout,
+ uint32_t regionCount,
+ const VkImageResolve* pRegions);
+
+void marshal_vkCmdSetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask);
+
+void unmarshal_vkCmdSetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask);
+
+void marshal_vkCmdResetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask);
+
+void unmarshal_vkCmdResetEvent(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkEvent event,
+ VkPipelineStageFlags stageMask);
+
+void marshal_VkMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkMemoryBarrier* forMarshaling);
+
+void unmarshal_VkMemoryBarrier(
+ VulkanStream* vkStream,
+ VkMemoryBarrier* forUnmarshaling);
+
+void marshal_VkBufferMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkBufferMemoryBarrier* forMarshaling);
+
+void unmarshal_VkBufferMemoryBarrier(
+ VulkanStream* vkStream,
+ VkBufferMemoryBarrier* forUnmarshaling);
+
+void marshal_VkImageMemoryBarrier(
+ VulkanStream* vkStream,
+ const VkImageMemoryBarrier* forMarshaling);
+
+void unmarshal_VkImageMemoryBarrier(
+ VulkanStream* vkStream,
+ VkImageMemoryBarrier* forUnmarshaling);
+
+void marshal_vkCmdWaitEvents(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t eventCount,
+ const VkEvent* pEvents,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+void unmarshal_vkCmdWaitEvents(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t eventCount,
+ const VkEvent* pEvents,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+void marshal_vkCmdPipelineBarrier(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ VkDependencyFlags dependencyFlags,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+void unmarshal_vkCmdPipelineBarrier(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlags srcStageMask,
+ VkPipelineStageFlags dstStageMask,
+ VkDependencyFlags dependencyFlags,
+ uint32_t memoryBarrierCount,
+ const VkMemoryBarrier* pMemoryBarriers,
+ uint32_t bufferMemoryBarrierCount,
+ const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+ uint32_t imageMemoryBarrierCount,
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+void marshal_vkCmdBeginQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query,
+ VkQueryControlFlags flags);
+
+void unmarshal_vkCmdBeginQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query,
+ VkQueryControlFlags flags);
+
+void marshal_vkCmdEndQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query);
+
+void unmarshal_vkCmdEndQuery(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t query);
+
+void marshal_vkCmdResetQueryPool(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount);
+
+void unmarshal_vkCmdResetQueryPool(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount);
+
+void marshal_vkCmdWriteTimestamp(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkQueryPool queryPool,
+ uint32_t query);
+
+void unmarshal_vkCmdWriteTimestamp(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkQueryPool queryPool,
+ uint32_t query);
+
+void marshal_vkCmdCopyQueryPoolResults(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags);
+
+void unmarshal_vkCmdCopyQueryPoolResults(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkQueryPool queryPool,
+ uint32_t firstQuery,
+ uint32_t queryCount,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ VkDeviceSize stride,
+ VkQueryResultFlags flags);
+
+void marshal_vkCmdPushConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineLayout layout,
+ VkShaderStageFlags stageFlags,
+ uint32_t offset,
+ uint32_t size,
+ const void* pValues);
+
+void unmarshal_vkCmdPushConstants(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineLayout layout,
+ VkShaderStageFlags stageFlags,
+ uint32_t offset,
+ uint32_t size,
+ const void* pValues);
+
+void marshal_VkRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassBeginInfo* forMarshaling);
+
+void unmarshal_VkRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ VkRenderPassBeginInfo* forUnmarshaling);
+
+void marshal_vkCmdBeginRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ VkSubpassContents contents);
+
+void unmarshal_vkCmdBeginRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ VkSubpassContents contents);
+
+void marshal_vkCmdNextSubpass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkSubpassContents contents);
+
+void unmarshal_vkCmdNextSubpass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkSubpassContents contents);
+
+void marshal_vkCmdEndRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void unmarshal_vkCmdEndRenderPass(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void marshal_vkCmdExecuteCommands(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers);
+
+void unmarshal_vkCmdExecuteCommands(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t commandBufferCount,
+ const VkCommandBuffer* pCommandBuffers);
+
+void marshal_VkDispatchIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDispatchIndirectCommand* forMarshaling);
+
+void unmarshal_VkDispatchIndirectCommand(
+ VulkanStream* vkStream,
+ VkDispatchIndirectCommand* forUnmarshaling);
+
+void marshal_VkDrawIndexedIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDrawIndexedIndirectCommand* forMarshaling);
+
+void unmarshal_VkDrawIndexedIndirectCommand(
+ VulkanStream* vkStream,
+ VkDrawIndexedIndirectCommand* forUnmarshaling);
+
+void marshal_VkDrawIndirectCommand(
+ VulkanStream* vkStream,
+ const VkDrawIndirectCommand* forMarshaling);
+
+void unmarshal_VkDrawIndirectCommand(
+ VulkanStream* vkStream,
+ VkDrawIndirectCommand* forUnmarshaling);
+
+void marshal_VkBaseOutStructure(
+ VulkanStream* vkStream,
+ const VkBaseOutStructure* forMarshaling);
+
+void unmarshal_VkBaseOutStructure(
+ VulkanStream* vkStream,
+ VkBaseOutStructure* forUnmarshaling);
+
+void marshal_VkBaseInStructure(
+ VulkanStream* vkStream,
+ const VkBaseInStructure* forMarshaling);
+
+void unmarshal_VkBaseInStructure(
+ VulkanStream* vkStream,
+ VkBaseInStructure* forUnmarshaling);
+
+#endif
+#ifdef VK_VERSION_1_1
+VkResult marshal_vkEnumerateInstanceVersion(
+ VulkanStream* vkStream,
+ uint32_t* pApiVersion);
+
+VkResult unmarshal_vkEnumerateInstanceVersion(
+ VulkanStream* vkStream,
+ uint32_t* pApiVersion);
+
+void marshal_VkPhysicalDeviceSubgroupProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSubgroupProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSubgroupProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSubgroupProperties* forUnmarshaling);
+
+void marshal_VkBindBufferMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindBufferMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindBufferMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindBufferMemoryInfo* forUnmarshaling);
+
+void marshal_VkBindImageMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindImageMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindImageMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindImageMemoryInfo* forUnmarshaling);
+
+VkResult marshal_vkBindBufferMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos);
+
+VkResult unmarshal_vkBindBufferMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos);
+
+VkResult marshal_vkBindImageMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos);
+
+VkResult unmarshal_vkBindImageMemory2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos);
+
+void marshal_VkPhysicalDevice16BitStorageFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDevice16BitStorageFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDevice16BitStorageFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDevice16BitStorageFeatures* forUnmarshaling);
+
+void marshal_VkMemoryDedicatedRequirements(
+ VulkanStream* vkStream,
+ const VkMemoryDedicatedRequirements* forMarshaling);
+
+void unmarshal_VkMemoryDedicatedRequirements(
+ VulkanStream* vkStream,
+ VkMemoryDedicatedRequirements* forUnmarshaling);
+
+void marshal_VkMemoryDedicatedAllocateInfo(
+ VulkanStream* vkStream,
+ const VkMemoryDedicatedAllocateInfo* forMarshaling);
+
+void unmarshal_VkMemoryDedicatedAllocateInfo(
+ VulkanStream* vkStream,
+ VkMemoryDedicatedAllocateInfo* forUnmarshaling);
+
+void marshal_VkMemoryAllocateFlagsInfo(
+ VulkanStream* vkStream,
+ const VkMemoryAllocateFlagsInfo* forMarshaling);
+
+void unmarshal_VkMemoryAllocateFlagsInfo(
+ VulkanStream* vkStream,
+ VkMemoryAllocateFlagsInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupRenderPassBeginInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupRenderPassBeginInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupRenderPassBeginInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupCommandBufferBeginInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupCommandBufferBeginInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupCommandBufferBeginInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupSubmitInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupSubmitInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupSubmitInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupSubmitInfo* forUnmarshaling);
+
+void marshal_VkDeviceGroupBindSparseInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupBindSparseInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupBindSparseInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupBindSparseInfo* forUnmarshaling);
+
+void marshal_vkGetDeviceGroupPeerMemoryFeatures(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+
+void unmarshal_vkGetDeviceGroupPeerMemoryFeatures(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+
+void marshal_vkCmdSetDeviceMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask);
+
+void unmarshal_vkCmdSetDeviceMask(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask);
+
+void marshal_vkCmdDispatchBase(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+void unmarshal_vkCmdDispatchBase(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+void marshal_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ const VkBindBufferMemoryDeviceGroupInfo* forMarshaling);
+
+void unmarshal_VkBindBufferMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ VkBindBufferMemoryDeviceGroupInfo* forUnmarshaling);
+
+void marshal_VkBindImageMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ const VkBindImageMemoryDeviceGroupInfo* forMarshaling);
+
+void unmarshal_VkBindImageMemoryDeviceGroupInfo(
+ VulkanStream* vkStream,
+ VkBindImageMemoryDeviceGroupInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceGroupProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceGroupProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceGroupProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceGroupProperties* forUnmarshaling);
+
+void marshal_VkDeviceGroupDeviceCreateInfo(
+ VulkanStream* vkStream,
+ const VkDeviceGroupDeviceCreateInfo* forMarshaling);
+
+void unmarshal_VkDeviceGroupDeviceCreateInfo(
+ VulkanStream* vkStream,
+ VkDeviceGroupDeviceCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkEnumeratePhysicalDeviceGroups(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+VkResult unmarshal_vkEnumeratePhysicalDeviceGroups(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+void marshal_VkBufferMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkBufferMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkBufferMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkBufferMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkImageMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkImageMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkImageMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkImageMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkImageSparseMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ const VkImageSparseMemoryRequirementsInfo2* forMarshaling);
+
+void unmarshal_VkImageSparseMemoryRequirementsInfo2(
+ VulkanStream* vkStream,
+ VkImageSparseMemoryRequirementsInfo2* forUnmarshaling);
+
+void marshal_VkMemoryRequirements2(
+ VulkanStream* vkStream,
+ const VkMemoryRequirements2* forMarshaling);
+
+void unmarshal_VkMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkMemoryRequirements2* forUnmarshaling);
+
+void marshal_VkSparseImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ const VkSparseImageMemoryRequirements2* forMarshaling);
+
+void unmarshal_VkSparseImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkSparseImageMemoryRequirements2* forUnmarshaling);
+
+void marshal_vkGetImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void unmarshal_vkGetImageMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void marshal_vkGetBufferMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void unmarshal_vkGetBufferMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void marshal_vkGetImageSparseMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+void unmarshal_vkGetImageSparseMemoryRequirements2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+void marshal_VkPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceFeatures2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceFeatures2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProperties2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProperties2* forUnmarshaling);
+
+void marshal_VkFormatProperties2(
+ VulkanStream* vkStream,
+ const VkFormatProperties2* forMarshaling);
+
+void unmarshal_VkFormatProperties2(
+ VulkanStream* vkStream,
+ VkFormatProperties2* forUnmarshaling);
+
+void marshal_VkImageFormatProperties2(
+ VulkanStream* vkStream,
+ const VkImageFormatProperties2* forMarshaling);
+
+void unmarshal_VkImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkImageFormatProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceImageFormatInfo2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceImageFormatInfo2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceImageFormatInfo2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceImageFormatInfo2* forUnmarshaling);
+
+void marshal_VkQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ const VkQueueFamilyProperties2* forMarshaling);
+
+void unmarshal_VkQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkQueueFamilyProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMemoryProperties2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMemoryProperties2* forUnmarshaling);
+
+void marshal_VkSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ const VkSparseImageFormatProperties2* forMarshaling);
+
+void unmarshal_VkSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkSparseImageFormatProperties2* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSparseImageFormatInfo2* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSparseImageFormatInfo2(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSparseImageFormatInfo2* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures);
+
+void unmarshal_vkGetPhysicalDeviceFeatures2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures);
+
+void marshal_vkGetPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties);
+
+void marshal_vkGetPhysicalDeviceFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties);
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties);
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties);
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
+
+void marshal_vkGetPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties);
+
+void marshal_vkTrimCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags);
+
+void unmarshal_vkTrimCommandPool(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags);
+
+void marshal_VkPhysicalDevicePointClippingProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDevicePointClippingProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDevicePointClippingProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevicePointClippingProperties* forUnmarshaling);
+
+void marshal_VkInputAttachmentAspectReference(
+ VulkanStream* vkStream,
+ const VkInputAttachmentAspectReference* forMarshaling);
+
+void unmarshal_VkInputAttachmentAspectReference(
+ VulkanStream* vkStream,
+ VkInputAttachmentAspectReference* forUnmarshaling);
+
+void marshal_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassInputAttachmentAspectCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassInputAttachmentAspectCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassInputAttachmentAspectCreateInfo* forUnmarshaling);
+
+void marshal_VkImageViewUsageCreateInfo(
+ VulkanStream* vkStream,
+ const VkImageViewUsageCreateInfo* forMarshaling);
+
+void unmarshal_VkImageViewUsageCreateInfo(
+ VulkanStream* vkStream,
+ VkImageViewUsageCreateInfo* forUnmarshaling);
+
+void marshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanStream* vkStream,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* forMarshaling);
+
+void unmarshal_VkPipelineTessellationDomainOriginStateCreateInfo(
+ VulkanStream* vkStream,
+ VkPipelineTessellationDomainOriginStateCreateInfo* forUnmarshaling);
+
+void marshal_VkRenderPassMultiviewCreateInfo(
+ VulkanStream* vkStream,
+ const VkRenderPassMultiviewCreateInfo* forMarshaling);
+
+void unmarshal_VkRenderPassMultiviewCreateInfo(
+ VulkanStream* vkStream,
+ VkRenderPassMultiviewCreateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMultiviewFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceMultiviewProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceVariablePointerFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceVariablePointerFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceVariablePointerFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProtectedMemoryFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProtectedMemoryFeatures* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceProtectedMemoryProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceProtectedMemoryProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceProtectedMemoryProperties* forUnmarshaling);
+
+void marshal_VkDeviceQueueInfo2(
+ VulkanStream* vkStream,
+ const VkDeviceQueueInfo2* forMarshaling);
+
+void unmarshal_VkDeviceQueueInfo2(
+ VulkanStream* vkStream,
+ VkDeviceQueueInfo2* forUnmarshaling);
+
+void marshal_VkProtectedSubmitInfo(
+ VulkanStream* vkStream,
+ const VkProtectedSubmitInfo* forMarshaling);
+
+void unmarshal_VkProtectedSubmitInfo(
+ VulkanStream* vkStream,
+ VkProtectedSubmitInfo* forUnmarshaling);
+
+void marshal_vkGetDeviceQueue2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceQueueInfo2* pQueueInfo,
+ VkQueue* pQueue);
+
+void unmarshal_vkGetDeviceQueue2(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceQueueInfo2* pQueueInfo,
+ VkQueue* pQueue);
+
+void marshal_VkSamplerYcbcrConversionCreateInfo(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionCreateInfo* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionCreateInfo(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionCreateInfo* forUnmarshaling);
+
+void marshal_VkSamplerYcbcrConversionInfo(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionInfo* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionInfo(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionInfo* forUnmarshaling);
+
+void marshal_VkBindImagePlaneMemoryInfo(
+ VulkanStream* vkStream,
+ const VkBindImagePlaneMemoryInfo* forMarshaling);
+
+void unmarshal_VkBindImagePlaneMemoryInfo(
+ VulkanStream* vkStream,
+ VkBindImagePlaneMemoryInfo* forUnmarshaling);
+
+void marshal_VkImagePlaneMemoryRequirementsInfo(
+ VulkanStream* vkStream,
+ const VkImagePlaneMemoryRequirementsInfo* forMarshaling);
+
+void unmarshal_VkImagePlaneMemoryRequirementsInfo(
+ VulkanStream* vkStream,
+ VkImagePlaneMemoryRequirementsInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures* forUnmarshaling);
+
+void marshal_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkSamplerYcbcrConversionImageFormatProperties* forMarshaling);
+
+void unmarshal_VkSamplerYcbcrConversionImageFormatProperties(
+ VulkanStream* vkStream,
+ VkSamplerYcbcrConversionImageFormatProperties* forUnmarshaling);
+
+VkResult marshal_vkCreateSamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion);
+
+VkResult unmarshal_vkCreateSamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion);
+
+void marshal_vkDestroySamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySamplerYcbcrConversion(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_VkDescriptorUpdateTemplateEntry(
+ VulkanStream* vkStream,
+ const VkDescriptorUpdateTemplateEntry* forMarshaling);
+
+void unmarshal_VkDescriptorUpdateTemplateEntry(
+ VulkanStream* vkStream,
+ VkDescriptorUpdateTemplateEntry* forUnmarshaling);
+
+void marshal_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanStream* vkStream,
+ const VkDescriptorUpdateTemplateCreateInfo* forMarshaling);
+
+void unmarshal_VkDescriptorUpdateTemplateCreateInfo(
+ VulkanStream* vkStream,
+ VkDescriptorUpdateTemplateCreateInfo* forUnmarshaling);
+
+VkResult marshal_vkCreateDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+
+VkResult unmarshal_vkCreateDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+
+void marshal_vkDestroyDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDescriptorUpdateTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_vkUpdateDescriptorSetWithTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData);
+
+void unmarshal_vkUpdateDescriptorSetWithTemplate(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData);
+
+void marshal_VkExternalMemoryProperties(
+ VulkanStream* vkStream,
+ const VkExternalMemoryProperties* forMarshaling);
+
+void unmarshal_VkExternalMemoryProperties(
+ VulkanStream* vkStream,
+ VkExternalMemoryProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalImageFormatInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalImageFormatInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalImageFormatInfo* forUnmarshaling);
+
+void marshal_VkExternalImageFormatProperties(
+ VulkanStream* vkStream,
+ const VkExternalImageFormatProperties* forMarshaling);
+
+void unmarshal_VkExternalImageFormatProperties(
+ VulkanStream* vkStream,
+ VkExternalImageFormatProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalBufferInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalBufferInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalBufferInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalBufferInfo* forUnmarshaling);
+
+void marshal_VkExternalBufferProperties(
+ VulkanStream* vkStream,
+ const VkExternalBufferProperties* forMarshaling);
+
+void unmarshal_VkExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkExternalBufferProperties* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceIDProperties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceIDProperties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceIDProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceIDProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalBufferProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties);
+
+void marshal_VkExternalMemoryImageCreateInfo(
+ VulkanStream* vkStream,
+ const VkExternalMemoryImageCreateInfo* forMarshaling);
+
+void unmarshal_VkExternalMemoryImageCreateInfo(
+ VulkanStream* vkStream,
+ VkExternalMemoryImageCreateInfo* forUnmarshaling);
+
+void marshal_VkExternalMemoryBufferCreateInfo(
+ VulkanStream* vkStream,
+ const VkExternalMemoryBufferCreateInfo* forMarshaling);
+
+void unmarshal_VkExternalMemoryBufferCreateInfo(
+ VulkanStream* vkStream,
+ VkExternalMemoryBufferCreateInfo* forUnmarshaling);
+
+void marshal_VkExportMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ const VkExportMemoryAllocateInfo* forMarshaling);
+
+void unmarshal_VkExportMemoryAllocateInfo(
+ VulkanStream* vkStream,
+ VkExportMemoryAllocateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalFenceInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalFenceInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalFenceInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalFenceInfo* forUnmarshaling);
+
+void marshal_VkExternalFenceProperties(
+ VulkanStream* vkStream,
+ const VkExternalFenceProperties* forMarshaling);
+
+void unmarshal_VkExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkExternalFenceProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalFenceProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties);
+
+void marshal_VkExportFenceCreateInfo(
+ VulkanStream* vkStream,
+ const VkExportFenceCreateInfo* forMarshaling);
+
+void unmarshal_VkExportFenceCreateInfo(
+ VulkanStream* vkStream,
+ VkExportFenceCreateInfo* forUnmarshaling);
+
+void marshal_VkExportSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ const VkExportSemaphoreCreateInfo* forMarshaling);
+
+void unmarshal_VkExportSemaphoreCreateInfo(
+ VulkanStream* vkStream,
+ VkExportSemaphoreCreateInfo* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalSemaphoreInfo* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalSemaphoreInfo(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalSemaphoreInfo* forUnmarshaling);
+
+void marshal_VkExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ const VkExternalSemaphoreProperties* forMarshaling);
+
+void unmarshal_VkExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkExternalSemaphoreProperties* forUnmarshaling);
+
+void marshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalSemaphoreProperties(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+void marshal_VkPhysicalDeviceMaintenance3Properties(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMaintenance3Properties* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMaintenance3Properties(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMaintenance3Properties* forUnmarshaling);
+
+void marshal_VkDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutSupport* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutSupport* forUnmarshaling);
+
+void marshal_vkGetDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport);
+
+void unmarshal_vkGetDescriptorSetLayoutSupport(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport);
+
+void marshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceShaderDrawParameterFeatures(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceShaderDrawParameterFeatures* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_surface
+void marshal_vkDestroySurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkSurfaceKHR surface,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkSurfaceKHR surface,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ VkSurfaceKHR surface,
+ VkBool32* pSupported);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ VkSurfaceKHR surface,
+ VkBool32* pSupported);
+
+void marshal_VkSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilitiesKHR* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+
+void marshal_VkSurfaceFormatKHR(
+ VulkanStream* vkStream,
+ const VkSurfaceFormatKHR* forMarshaling);
+
+void unmarshal_VkSurfaceFormatKHR(
+ VulkanStream* vkStream,
+ VkSurfaceFormatKHR* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormatsKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormatKHR* pSurfaceFormats);
+
+VkResult marshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pPresentModeCount,
+ VkPresentModeKHR* pPresentModes);
+
+#endif
+#ifdef VK_KHR_swapchain
+void marshal_VkSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkSwapchainCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateSwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSwapchainCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchain);
+
+VkResult unmarshal_vkCreateSwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSwapchainCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchain);
+
+void marshal_vkDestroySwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySwapchainKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkGetSwapchainImagesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pSwapchainImageCount,
+ VkImage* pSwapchainImages);
+
+VkResult unmarshal_vkGetSwapchainImagesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pSwapchainImageCount,
+ VkImage* pSwapchainImages);
+
+VkResult marshal_vkAcquireNextImageKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint64_t timeout,
+ VkSemaphore semaphore,
+ VkFence fence,
+ uint32_t* pImageIndex);
+
+VkResult unmarshal_vkAcquireNextImageKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint64_t timeout,
+ VkSemaphore semaphore,
+ VkFence fence,
+ uint32_t* pImageIndex);
+
+void marshal_VkPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkPresentInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkQueuePresentKHR(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkPresentInfoKHR* pPresentInfo);
+
+VkResult unmarshal_vkQueuePresentKHR(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkPresentInfoKHR* pPresentInfo);
+
+void marshal_VkImageSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkImageSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkImageSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkImageSwapchainCreateInfoKHR* forUnmarshaling);
+
+void marshal_VkBindImageMemorySwapchainInfoKHR(
+ VulkanStream* vkStream,
+ const VkBindImageMemorySwapchainInfoKHR* forMarshaling);
+
+void unmarshal_VkBindImageMemorySwapchainInfoKHR(
+ VulkanStream* vkStream,
+ VkBindImageMemorySwapchainInfoKHR* forUnmarshaling);
+
+void marshal_VkAcquireNextImageInfoKHR(
+ VulkanStream* vkStream,
+ const VkAcquireNextImageInfoKHR* forMarshaling);
+
+void unmarshal_VkAcquireNextImageInfoKHR(
+ VulkanStream* vkStream,
+ VkAcquireNextImageInfoKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupPresentCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupPresentCapabilitiesKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupPresentInfoKHR* forUnmarshaling);
+
+void marshal_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDeviceGroupSwapchainCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDeviceGroupSwapchainCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDeviceGroupSwapchainCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
+
+VkResult unmarshal_vkGetDeviceGroupPresentCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
+
+VkResult marshal_vkGetDeviceGroupSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSurfaceKHR surface,
+ VkDeviceGroupPresentModeFlagsKHR* pModes);
+
+VkResult unmarshal_vkGetDeviceGroupSurfacePresentModesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSurfaceKHR surface,
+ VkDeviceGroupPresentModeFlagsKHR* pModes);
+
+VkResult marshal_vkGetPhysicalDevicePresentRectanglesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pRectCount,
+ VkRect2D* pRects);
+
+VkResult unmarshal_vkGetPhysicalDevicePresentRectanglesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ uint32_t* pRectCount,
+ VkRect2D* pRects);
+
+VkResult marshal_vkAcquireNextImage2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAcquireNextImageInfoKHR* pAcquireInfo,
+ uint32_t* pImageIndex);
+
+VkResult unmarshal_vkAcquireNextImage2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkAcquireNextImageInfoKHR* pAcquireInfo,
+ uint32_t* pImageIndex);
+
+#endif
+#ifdef VK_KHR_display
+void marshal_VkDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayModeParametersKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeParametersKHR* forMarshaling);
+
+void unmarshal_VkDisplayModeParametersKHR(
+ VulkanStream* vkStream,
+ VkDisplayModeParametersKHR* forUnmarshaling);
+
+void marshal_VkDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModePropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayModePropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayModeCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplayModeCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplayModeCreateInfoKHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneCapabilitiesKHR* forUnmarshaling);
+
+void marshal_VkDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlanePropertiesKHR* forMarshaling);
+
+void unmarshal_VkDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDisplayPlanePropertiesKHR* forUnmarshaling);
+
+void marshal_VkDisplaySurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplaySurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplaySurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplaySurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPropertiesKHR* pProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPropertiesKHR* pProperties);
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlanePropertiesKHR* pProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlanePropertiesKHR* pProperties);
+
+VkResult marshal_vkGetDisplayPlaneSupportedDisplaysKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t planeIndex,
+ uint32_t* pDisplayCount,
+ VkDisplayKHR* pDisplays);
+
+VkResult unmarshal_vkGetDisplayPlaneSupportedDisplaysKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t planeIndex,
+ uint32_t* pDisplayCount,
+ VkDisplayKHR* pDisplays);
+
+VkResult marshal_vkGetDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModePropertiesKHR* pProperties);
+
+VkResult unmarshal_vkGetDisplayModePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModePropertiesKHR* pProperties);
+
+VkResult marshal_vkCreateDisplayModeKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ const VkDisplayModeCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDisplayModeKHR* pMode);
+
+VkResult unmarshal_vkCreateDisplayModeKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ const VkDisplayModeCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDisplayModeKHR* pMode);
+
+VkResult marshal_vkGetDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayModeKHR mode,
+ uint32_t planeIndex,
+ VkDisplayPlaneCapabilitiesKHR* pCapabilities);
+
+VkResult unmarshal_vkGetDisplayPlaneCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayModeKHR mode,
+ uint32_t planeIndex,
+ VkDisplayPlaneCapabilitiesKHR* pCapabilities);
+
+VkResult marshal_vkCreateDisplayPlaneSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateDisplayPlaneSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void marshal_VkDisplayPresentInfoKHR(
+ VulkanStream* vkStream,
+ const VkDisplayPresentInfoKHR* forMarshaling);
+
+void unmarshal_VkDisplayPresentInfoKHR(
+ VulkanStream* vkStream,
+ VkDisplayPresentInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateSharedSwapchainsKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchains);
+
+VkResult unmarshal_vkCreateSharedSwapchainsKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainCreateInfoKHR* pCreateInfos,
+ const VkAllocationCallbacks* pAllocator,
+ VkSwapchainKHR* pSwapchains);
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void marshal_VkXlibSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkXlibSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkXlibSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkXlibSurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateXlibSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateXlibSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkBool32 marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID);
+
+VkBool32 unmarshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ Display* dpy,
+ VisualID visualID);
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void marshal_VkXcbSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkXcbSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkXcbSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkXcbSurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateXcbSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateXcbSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkBool32 marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id);
+
+VkBool32 unmarshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ xcb_connection_t* connection,
+ xcb_visualid_t visual_id);
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void marshal_VkWaylandSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkWaylandSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkWaylandSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkWaylandSurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateWaylandSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateWaylandSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkBool32 marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ wl_display* display);
+
+VkBool32 unmarshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ wl_display* display);
+
+#endif
+#ifdef VK_KHR_mir_surface
+void marshal_VkMirSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkMirSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkMirSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkMirSurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateMirSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateMirSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMirSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkBool32 marshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection);
+
+VkBool32 unmarshal_vkGetPhysicalDeviceMirPresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ MirConnection* connection);
+
+#endif
+#ifdef VK_KHR_android_surface
+void marshal_VkAndroidSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkAndroidSurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkAndroidSurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkAndroidSurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateAndroidSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateAndroidSurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+#endif
+#ifdef VK_KHR_win32_surface
+void marshal_VkWin32SurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkWin32SurfaceCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkWin32SurfaceCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkWin32SurfaceCreateInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkCreateWin32SurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateWin32SurfaceKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkBool32 marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex);
+
+VkBool32 unmarshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex);
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+void marshal_vkGetPhysicalDeviceFeatures2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures);
+
+void unmarshal_vkGetPhysicalDeviceFeatures2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceFeatures2* pFeatures);
+
+void marshal_vkGetPhysicalDeviceProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceProperties2* pProperties);
+
+void marshal_vkGetPhysicalDeviceFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties);
+
+void unmarshal_vkGetPhysicalDeviceFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkFormatProperties2* pFormatProperties);
+
+VkResult marshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
+ VkImageFormatProperties2* pImageFormatProperties);
+
+void marshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
+
+void unmarshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pQueueFamilyPropertyCount,
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
+
+void marshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+
+void unmarshal_vkGetPhysicalDeviceMemoryProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+
+void marshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties);
+
+void unmarshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
+ uint32_t* pPropertyCount,
+ VkSparseImageFormatProperties2* pProperties);
+
+#endif
+#ifdef VK_KHR_device_group
+void marshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+
+void unmarshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t heapIndex,
+ uint32_t localDeviceIndex,
+ uint32_t remoteDeviceIndex,
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+
+void marshal_vkCmdSetDeviceMaskKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask);
+
+void unmarshal_vkCmdSetDeviceMaskKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t deviceMask);
+
+void marshal_vkCmdDispatchBaseKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+void unmarshal_vkCmdDispatchBaseKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t baseGroupX,
+ uint32_t baseGroupY,
+ uint32_t baseGroupZ,
+ uint32_t groupCountX,
+ uint32_t groupCountY,
+ uint32_t groupCountZ);
+
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+void marshal_vkTrimCommandPoolKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags);
+
+void unmarshal_vkTrimCommandPoolKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkCommandPool commandPool,
+ VkCommandPoolTrimFlags flags);
+
+#endif
+#ifdef VK_KHR_device_group_creation
+VkResult marshal_vkEnumeratePhysicalDeviceGroupsKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+VkResult unmarshal_vkEnumeratePhysicalDeviceGroupsKHR(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ uint32_t* pPhysicalDeviceGroupCount,
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+void marshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
+ VkExternalBufferProperties* pExternalBufferProperties);
+
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportMemoryWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportMemoryWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportMemoryWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportMemoryWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportMemoryWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ const VkMemoryWin32HandlePropertiesKHR* forMarshaling);
+
+void unmarshal_VkMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkMemoryWin32HandlePropertiesKHR* forUnmarshaling);
+
+void marshal_VkMemoryGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkMemoryGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkMemoryGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkMemoryGetWin32HandleInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkGetMemoryWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+VkResult unmarshal_vkGetMemoryWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+VkResult marshal_vkGetMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ HANDLE handle,
+ VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+
+VkResult unmarshal_vkGetMemoryWin32HandlePropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ HANDLE handle,
+ VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void marshal_VkImportMemoryFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportMemoryFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportMemoryFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportMemoryFdInfoKHR* forUnmarshaling);
+
+void marshal_VkMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkMemoryFdPropertiesKHR* forMarshaling);
+
+void unmarshal_VkMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkMemoryFdPropertiesKHR* forUnmarshaling);
+
+void marshal_VkMemoryGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkMemoryGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkMemoryGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkMemoryGetFdInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkGetMemoryFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+VkResult unmarshal_vkGetMemoryFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+VkResult marshal_vkGetMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ int fd,
+ VkMemoryFdPropertiesKHR* pMemoryFdProperties);
+
+VkResult unmarshal_vkGetMemoryFdPropertiesKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ int fd,
+ VkMemoryFdPropertiesKHR* pMemoryFdProperties);
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanStream* vkStream,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* forMarshaling);
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ VulkanStream* vkStream,
+ VkWin32KeyedMutexAcquireReleaseInfoKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+void marshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void marshal_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportSemaphoreWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportSemaphoreWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportSemaphoreWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportSemaphoreWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkD3D12FenceSubmitInfoKHR(
+ VulkanStream* vkStream,
+ const VkD3D12FenceSubmitInfoKHR* forMarshaling);
+
+void unmarshal_VkD3D12FenceSubmitInfoKHR(
+ VulkanStream* vkStream,
+ VkD3D12FenceSubmitInfoKHR* forUnmarshaling);
+
+void marshal_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkSemaphoreGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkSemaphoreGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkSemaphoreGetWin32HandleInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkImportSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+
+VkResult unmarshal_vkImportSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+
+VkResult marshal_vkGetSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+VkResult unmarshal_vkGetSemaphoreWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void marshal_VkImportSemaphoreFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportSemaphoreFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportSemaphoreFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportSemaphoreFdInfoKHR* forUnmarshaling);
+
+void marshal_VkSemaphoreGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkSemaphoreGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkSemaphoreGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkSemaphoreGetFdInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkImportSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
+
+VkResult unmarshal_vkImportSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
+
+VkResult marshal_vkGetSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+VkResult unmarshal_vkGetSemaphoreFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void marshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* forMarshaling);
+
+void unmarshal_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevicePushDescriptorPropertiesKHR* forUnmarshaling);
+
+void marshal_vkCmdPushDescriptorSetKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t set,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites);
+
+void unmarshal_vkCmdPushDescriptorSetKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineBindPoint pipelineBindPoint,
+ VkPipelineLayout layout,
+ uint32_t set,
+ uint32_t descriptorWriteCount,
+ const VkWriteDescriptorSet* pDescriptorWrites);
+
+void marshal_vkCmdPushDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ VkPipelineLayout layout,
+ uint32_t set,
+ const void* pData);
+
+void unmarshal_vkCmdPushDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ VkPipelineLayout layout,
+ uint32_t set,
+ const void* pData);
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void marshal_VkRectLayerKHR(
+ VulkanStream* vkStream,
+ const VkRectLayerKHR* forMarshaling);
+
+void unmarshal_VkRectLayerKHR(
+ VulkanStream* vkStream,
+ VkRectLayerKHR* forUnmarshaling);
+
+void marshal_VkPresentRegionKHR(
+ VulkanStream* vkStream,
+ const VkPresentRegionKHR* forMarshaling);
+
+void unmarshal_VkPresentRegionKHR(
+ VulkanStream* vkStream,
+ VkPresentRegionKHR* forUnmarshaling);
+
+void marshal_VkPresentRegionsKHR(
+ VulkanStream* vkStream,
+ const VkPresentRegionsKHR* forMarshaling);
+
+void unmarshal_VkPresentRegionsKHR(
+ VulkanStream* vkStream,
+ VkPresentRegionsKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+VkResult marshal_vkCreateDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+
+VkResult unmarshal_vkCreateDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+
+void marshal_vkDestroyDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDescriptorUpdateTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_vkUpdateDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData);
+
+void unmarshal_vkUpdateDescriptorSetWithTemplateKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDescriptorSet descriptorSet,
+ VkDescriptorUpdateTemplate descriptorUpdateTemplate,
+ const void* pData);
+
+#endif
+#ifdef VK_KHR_create_renderpass2
+void marshal_VkAttachmentDescription2KHR(
+ VulkanStream* vkStream,
+ const VkAttachmentDescription2KHR* forMarshaling);
+
+void unmarshal_VkAttachmentDescription2KHR(
+ VulkanStream* vkStream,
+ VkAttachmentDescription2KHR* forUnmarshaling);
+
+void marshal_VkAttachmentReference2KHR(
+ VulkanStream* vkStream,
+ const VkAttachmentReference2KHR* forMarshaling);
+
+void unmarshal_VkAttachmentReference2KHR(
+ VulkanStream* vkStream,
+ VkAttachmentReference2KHR* forUnmarshaling);
+
+void marshal_VkSubpassDescription2KHR(
+ VulkanStream* vkStream,
+ const VkSubpassDescription2KHR* forMarshaling);
+
+void unmarshal_VkSubpassDescription2KHR(
+ VulkanStream* vkStream,
+ VkSubpassDescription2KHR* forUnmarshaling);
+
+void marshal_VkSubpassDependency2KHR(
+ VulkanStream* vkStream,
+ const VkSubpassDependency2KHR* forMarshaling);
+
+void unmarshal_VkSubpassDependency2KHR(
+ VulkanStream* vkStream,
+ VkSubpassDependency2KHR* forUnmarshaling);
+
+void marshal_VkRenderPassCreateInfo2KHR(
+ VulkanStream* vkStream,
+ const VkRenderPassCreateInfo2KHR* forMarshaling);
+
+void unmarshal_VkRenderPassCreateInfo2KHR(
+ VulkanStream* vkStream,
+ VkRenderPassCreateInfo2KHR* forUnmarshaling);
+
+VkResult marshal_vkCreateRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+VkResult unmarshal_vkCreateRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkRenderPassCreateInfo2KHR* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkRenderPass* pRenderPass);
+
+void marshal_VkSubpassBeginInfoKHR(
+ VulkanStream* vkStream,
+ const VkSubpassBeginInfoKHR* forMarshaling);
+
+void unmarshal_VkSubpassBeginInfoKHR(
+ VulkanStream* vkStream,
+ VkSubpassBeginInfoKHR* forUnmarshaling);
+
+void marshal_vkCmdBeginRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+
+void unmarshal_vkCmdBeginRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+
+void marshal_VkSubpassEndInfoKHR(
+ VulkanStream* vkStream,
+ const VkSubpassEndInfoKHR* forMarshaling);
+
+void unmarshal_VkSubpassEndInfoKHR(
+ VulkanStream* vkStream,
+ VkSubpassEndInfoKHR* forUnmarshaling);
+
+void marshal_vkCmdNextSubpass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
+
+void unmarshal_vkCmdNextSubpass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
+
+void marshal_vkCmdEndRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
+
+void unmarshal_vkCmdEndRenderPass2KHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void marshal_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ const VkSharedPresentSurfaceCapabilitiesKHR* forMarshaling);
+
+void unmarshal_VkSharedPresentSurfaceCapabilitiesKHR(
+ VulkanStream* vkStream,
+ VkSharedPresentSurfaceCapabilitiesKHR* forUnmarshaling);
+
+VkResult marshal_vkGetSwapchainStatusKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain);
+
+VkResult unmarshal_vkGetSwapchainStatusKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain);
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+void marshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties);
+
+void unmarshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
+ VkExternalFenceProperties* pExternalFenceProperties);
+
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void marshal_VkImportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportFenceWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkImportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkImportFenceWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkExportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkExportFenceWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkExportFenceWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkExportFenceWin32HandleInfoKHR* forUnmarshaling);
+
+void marshal_VkFenceGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ const VkFenceGetWin32HandleInfoKHR* forMarshaling);
+
+void unmarshal_VkFenceGetWin32HandleInfoKHR(
+ VulkanStream* vkStream,
+ VkFenceGetWin32HandleInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkImportFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+
+VkResult unmarshal_vkImportFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+
+VkResult marshal_vkGetFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+VkResult unmarshal_vkGetFenceWin32HandleKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
+ HANDLE* pHandle);
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void marshal_VkImportFenceFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkImportFenceFdInfoKHR* forMarshaling);
+
+void unmarshal_VkImportFenceFdInfoKHR(
+ VulkanStream* vkStream,
+ VkImportFenceFdInfoKHR* forUnmarshaling);
+
+void marshal_VkFenceGetFdInfoKHR(
+ VulkanStream* vkStream,
+ const VkFenceGetFdInfoKHR* forMarshaling);
+
+void unmarshal_VkFenceGetFdInfoKHR(
+ VulkanStream* vkStream,
+ VkFenceGetFdInfoKHR* forUnmarshaling);
+
+VkResult marshal_vkImportFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+
+VkResult unmarshal_vkImportFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+
+VkResult marshal_vkGetFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+VkResult unmarshal_vkGetFenceFdKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkFenceGetFdInfoKHR* pGetFdInfo,
+ int* pFd);
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void marshal_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSurfaceInfo2KHR* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSurfaceInfo2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSurfaceInfo2KHR* forUnmarshaling);
+
+void marshal_VkSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilities2KHR* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilities2KHR* forUnmarshaling);
+
+void marshal_VkSurfaceFormat2KHR(
+ VulkanStream* vkStream,
+ const VkSurfaceFormat2KHR* forMarshaling);
+
+void unmarshal_VkSurfaceFormat2KHR(
+ VulkanStream* vkStream,
+ VkSurfaceFormat2KHR* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormat2KHR* pSurfaceFormats);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceFormats2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
+ uint32_t* pSurfaceFormatCount,
+ VkSurfaceFormat2KHR* pSurfaceFormats);
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void marshal_VkDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayModeProperties2KHR* forMarshaling);
+
+void unmarshal_VkDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkDisplayModeProperties2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneInfo2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneInfo2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneInfo2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneInfo2KHR* forUnmarshaling);
+
+void marshal_VkDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ const VkDisplayPlaneCapabilities2KHR* forMarshaling);
+
+void unmarshal_VkDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkDisplayPlaneCapabilities2KHR* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayProperties2KHR* pProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayProperties2KHR* pProperties);
+
+VkResult marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlaneProperties2KHR* pProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ uint32_t* pPropertyCount,
+ VkDisplayPlaneProperties2KHR* pProperties);
+
+VkResult marshal_vkGetDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModeProperties2KHR* pProperties);
+
+VkResult unmarshal_vkGetDisplayModeProperties2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display,
+ uint32_t* pPropertyCount,
+ VkDisplayModeProperties2KHR* pProperties);
+
+VkResult marshal_vkGetDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+ VkDisplayPlaneCapabilities2KHR* pCapabilities);
+
+VkResult unmarshal_vkGetDisplayPlaneCapabilities2KHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
+ VkDisplayPlaneCapabilities2KHR* pCapabilities);
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+void marshal_vkGetImageMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void unmarshal_vkGetImageMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void marshal_vkGetBufferMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void unmarshal_vkGetBufferMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkBufferMemoryRequirementsInfo2* pInfo,
+ VkMemoryRequirements2* pMemoryRequirements);
+
+void marshal_vkGetImageSparseMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+void unmarshal_vkGetImageSparseMemoryRequirements2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkImageSparseMemoryRequirementsInfo2* pInfo,
+ uint32_t* pSparseMemoryRequirementCount,
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+
+#endif
+#ifdef VK_KHR_image_format_list
+void marshal_VkImageFormatListCreateInfoKHR(
+ VulkanStream* vkStream,
+ const VkImageFormatListCreateInfoKHR* forMarshaling);
+
+void unmarshal_VkImageFormatListCreateInfoKHR(
+ VulkanStream* vkStream,
+ VkImageFormatListCreateInfoKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+VkResult marshal_vkCreateSamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion);
+
+VkResult unmarshal_vkCreateSamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSamplerYcbcrConversion* pYcbcrConversion);
+
+void marshal_vkDestroySamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroySamplerYcbcrConversionKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSamplerYcbcrConversion ycbcrConversion,
+ const VkAllocationCallbacks* pAllocator);
+
+#endif
+#ifdef VK_KHR_bind_memory2
+VkResult marshal_vkBindBufferMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos);
+
+VkResult unmarshal_vkBindBufferMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindBufferMemoryInfo* pBindInfos);
+
+VkResult marshal_vkBindImageMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos);
+
+VkResult unmarshal_vkBindImageMemory2KHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t bindInfoCount,
+ const VkBindImageMemoryInfo* pBindInfos);
+
+#endif
+#ifdef VK_KHR_maintenance3
+void marshal_vkGetDescriptorSetLayoutSupportKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport);
+
+void unmarshal_vkGetDescriptorSetLayoutSupportKHR(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
+ VkDescriptorSetLayoutSupport* pSupport);
+
+#endif
+#ifdef VK_KHR_draw_indirect_count
+void marshal_vkCmdDrawIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void marshal_vkCmdDrawIndexedIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndexedIndirectCountKHR(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+#endif
+#ifdef VK_KHR_8bit_storage
+void marshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanStream* vkStream,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* forMarshaling);
+
+void unmarshal_VkPhysicalDevice8BitStorageFeaturesKHR(
+ VulkanStream* vkStream,
+ VkPhysicalDevice8BitStorageFeaturesKHR* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_debug_report
+void marshal_VkDebugReportCallbackCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugReportCallbackCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugReportCallbackCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugReportCallbackCreateInfoEXT* forUnmarshaling);
+
+VkResult marshal_vkCreateDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugReportCallbackEXT* pCallback);
+
+VkResult unmarshal_vkCreateDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugReportCallbackEXT* pCallback);
+
+void marshal_vkDestroyDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportCallbackEXT callback,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDebugReportCallbackEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportCallbackEXT callback,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_vkDebugReportMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportFlagsEXT flags,
+ VkDebugReportObjectTypeEXT objectType,
+ uint64_t object,
+ size_t location,
+ int32_t messageCode,
+ const char* pLayerPrefix,
+ const char* pMessage);
+
+void unmarshal_vkDebugReportMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugReportFlagsEXT flags,
+ VkDebugReportObjectTypeEXT objectType,
+ uint64_t object,
+ size_t location,
+ int32_t messageCode,
+ const char* pLayerPrefix,
+ const char* pMessage);
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void marshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationStateRasterizationOrderAMD(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationStateRasterizationOrderAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void marshal_VkDebugMarkerObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerObjectNameInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerObjectNameInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugMarkerObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerObjectTagInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerObjectTagInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugMarkerMarkerInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugMarkerMarkerInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugMarkerMarkerInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugMarkerMarkerInfoEXT* forUnmarshaling);
+
+VkResult marshal_vkDebugMarkerSetObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+
+VkResult unmarshal_vkDebugMarkerSetObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+
+VkResult marshal_vkDebugMarkerSetObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+
+VkResult unmarshal_vkDebugMarkerSetObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+
+void marshal_vkCmdDebugMarkerBeginEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+void unmarshal_vkCmdDebugMarkerBeginEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+void marshal_vkCmdDebugMarkerEndEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void unmarshal_vkCmdDebugMarkerEndEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void marshal_vkCmdDebugMarkerInsertEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+void unmarshal_vkCmdDebugMarkerInsertEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void marshal_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationImageCreateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationImageCreateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationImageCreateInfoNV* forUnmarshaling);
+
+void marshal_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationBufferCreateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationBufferCreateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationBufferCreateInfoNV* forUnmarshaling);
+
+void marshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* forMarshaling);
+
+void unmarshal_VkDedicatedAllocationMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ VkDedicatedAllocationMemoryAllocateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+void marshal_vkCmdDrawIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void marshal_vkCmdDrawIndexedIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+void unmarshal_vkCmdDrawIndexedIndirectCountAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkBuffer buffer,
+ VkDeviceSize offset,
+ VkBuffer countBuffer,
+ VkDeviceSize countBufferOffset,
+ uint32_t maxDrawCount,
+ uint32_t stride);
+
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void marshal_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanStream* vkStream,
+ const VkTextureLODGatherFormatPropertiesAMD* forMarshaling);
+
+void unmarshal_VkTextureLODGatherFormatPropertiesAMD(
+ VulkanStream* vkStream,
+ VkTextureLODGatherFormatPropertiesAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_shader_info
+void marshal_VkShaderResourceUsageAMD(
+ VulkanStream* vkStream,
+ const VkShaderResourceUsageAMD* forMarshaling);
+
+void unmarshal_VkShaderResourceUsageAMD(
+ VulkanStream* vkStream,
+ VkShaderResourceUsageAMD* forUnmarshaling);
+
+void marshal_VkShaderStatisticsInfoAMD(
+ VulkanStream* vkStream,
+ const VkShaderStatisticsInfoAMD* forMarshaling);
+
+void unmarshal_VkShaderStatisticsInfoAMD(
+ VulkanStream* vkStream,
+ VkShaderStatisticsInfoAMD* forUnmarshaling);
+
+VkResult marshal_vkGetShaderInfoAMD(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo);
+
+VkResult unmarshal_vkGetShaderInfoAMD(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo);
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void marshal_VkExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ const VkExternalImageFormatPropertiesNV* forMarshaling);
+
+void unmarshal_VkExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkExternalImageFormatPropertiesNV* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+
+VkResult unmarshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkFormat format,
+ VkImageType type,
+ VkImageTiling tiling,
+ VkImageUsageFlags usage,
+ VkImageCreateFlags flags,
+ VkExternalMemoryHandleTypeFlagsNV externalHandleType,
+ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+
+#endif
+#ifdef VK_NV_external_memory
+void marshal_VkExternalMemoryImageCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkExternalMemoryImageCreateInfoNV* forMarshaling);
+
+void unmarshal_VkExternalMemoryImageCreateInfoNV(
+ VulkanStream* vkStream,
+ VkExternalMemoryImageCreateInfoNV* forUnmarshaling);
+
+void marshal_VkExportMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ const VkExportMemoryAllocateInfoNV* forMarshaling);
+
+void unmarshal_VkExportMemoryAllocateInfoNV(
+ VulkanStream* vkStream,
+ VkExportMemoryAllocateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void marshal_VkImportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ const VkImportMemoryWin32HandleInfoNV* forMarshaling);
+
+void unmarshal_VkImportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ VkImportMemoryWin32HandleInfoNV* forUnmarshaling);
+
+void marshal_VkExportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ const VkExportMemoryWin32HandleInfoNV* forMarshaling);
+
+void unmarshal_VkExportMemoryWin32HandleInfoNV(
+ VulkanStream* vkStream,
+ VkExportMemoryWin32HandleInfoNV* forUnmarshaling);
+
+VkResult marshal_vkGetMemoryWin32HandleNV(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkExternalMemoryHandleTypeFlagsNV handleType,
+ HANDLE* pHandle);
+
+VkResult unmarshal_vkGetMemoryWin32HandleNV(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDeviceMemory memory,
+ VkExternalMemoryHandleTypeFlagsNV handleType,
+ HANDLE* pHandle);
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void marshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanStream* vkStream,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* forMarshaling);
+
+void unmarshal_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ VulkanStream* vkStream,
+ VkWin32KeyedMutexAcquireReleaseInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_validation_flags
+void marshal_VkValidationFlagsEXT(
+ VulkanStream* vkStream,
+ const VkValidationFlagsEXT* forMarshaling);
+
+void unmarshal_VkValidationFlagsEXT(
+ VulkanStream* vkStream,
+ VkValidationFlagsEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NN_vi_surface
+void marshal_VkViSurfaceCreateInfoNN(
+ VulkanStream* vkStream,
+ const VkViSurfaceCreateInfoNN* forMarshaling);
+
+void unmarshal_VkViSurfaceCreateInfoNN(
+ VulkanStream* vkStream,
+ VkViSurfaceCreateInfoNN* forUnmarshaling);
+
+VkResult marshal_vkCreateViSurfaceNN(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkViSurfaceCreateInfoNN* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateViSurfaceNN(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkViSurfaceCreateInfoNN* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void marshal_VkConditionalRenderingBeginInfoEXT(
+ VulkanStream* vkStream,
+ const VkConditionalRenderingBeginInfoEXT* forMarshaling);
+
+void unmarshal_VkConditionalRenderingBeginInfoEXT(
+ VulkanStream* vkStream,
+ VkConditionalRenderingBeginInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT* forUnmarshaling);
+
+void marshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanStream* vkStream,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* forMarshaling);
+
+void unmarshal_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ VulkanStream* vkStream,
+ VkCommandBufferInheritanceConditionalRenderingInfoEXT* forUnmarshaling);
+
+void marshal_vkCmdBeginConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+
+void unmarshal_vkCmdBeginConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+
+void marshal_vkCmdEndConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void unmarshal_vkCmdEndConditionalRenderingEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void marshal_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanStream* vkStream,
+ const VkDeviceGeneratedCommandsFeaturesNVX* forMarshaling);
+
+void unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(
+ VulkanStream* vkStream,
+ VkDeviceGeneratedCommandsFeaturesNVX* forUnmarshaling);
+
+void marshal_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanStream* vkStream,
+ const VkDeviceGeneratedCommandsLimitsNVX* forMarshaling);
+
+void unmarshal_VkDeviceGeneratedCommandsLimitsNVX(
+ VulkanStream* vkStream,
+ VkDeviceGeneratedCommandsLimitsNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsTokenNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsTokenNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsTokenNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsTokenNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsLayoutTokenNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsLayoutTokenNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsLayoutTokenNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsLayoutTokenNVX* forUnmarshaling);
+
+void marshal_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanStream* vkStream,
+ const VkIndirectCommandsLayoutCreateInfoNVX* forMarshaling);
+
+void unmarshal_VkIndirectCommandsLayoutCreateInfoNVX(
+ VulkanStream* vkStream,
+ VkIndirectCommandsLayoutCreateInfoNVX* forUnmarshaling);
+
+void marshal_VkCmdProcessCommandsInfoNVX(
+ VulkanStream* vkStream,
+ const VkCmdProcessCommandsInfoNVX* forMarshaling);
+
+void unmarshal_VkCmdProcessCommandsInfoNVX(
+ VulkanStream* vkStream,
+ VkCmdProcessCommandsInfoNVX* forUnmarshaling);
+
+void marshal_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanStream* vkStream,
+ const VkCmdReserveSpaceForCommandsInfoNVX* forMarshaling);
+
+void unmarshal_VkCmdReserveSpaceForCommandsInfoNVX(
+ VulkanStream* vkStream,
+ VkCmdReserveSpaceForCommandsInfoNVX* forUnmarshaling);
+
+void marshal_VkObjectTableCreateInfoNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableCreateInfoNVX* forMarshaling);
+
+void unmarshal_VkObjectTableCreateInfoNVX(
+ VulkanStream* vkStream,
+ VkObjectTableCreateInfoNVX* forUnmarshaling);
+
+void marshal_VkObjectTableEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTablePipelineEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTablePipelineEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTablePipelineEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTablePipelineEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableDescriptorSetEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableDescriptorSetEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableDescriptorSetEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableDescriptorSetEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableVertexBufferEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableVertexBufferEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableVertexBufferEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableVertexBufferEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTableIndexBufferEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTableIndexBufferEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTableIndexBufferEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTableIndexBufferEntryNVX* forUnmarshaling);
+
+void marshal_VkObjectTablePushConstantEntryNVX(
+ VulkanStream* vkStream,
+ const VkObjectTablePushConstantEntryNVX* forMarshaling);
+
+void unmarshal_VkObjectTablePushConstantEntryNVX(
+ VulkanStream* vkStream,
+ VkObjectTablePushConstantEntryNVX* forUnmarshaling);
+
+void marshal_vkCmdProcessCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
+
+void unmarshal_vkCmdProcessCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
+
+void marshal_vkCmdReserveSpaceForCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
+
+void unmarshal_vkCmdReserveSpaceForCommandsNVX(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
+
+VkResult marshal_vkCreateIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
+
+VkResult unmarshal_vkCreateIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
+
+void marshal_vkDestroyIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyIndirectCommandsLayoutNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkIndirectCommandsLayoutNVX indirectCommandsLayout,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkCreateObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkObjectTableCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkObjectTableNVX* pObjectTable);
+
+VkResult unmarshal_vkCreateObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkObjectTableCreateInfoNVX* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkObjectTableNVX* pObjectTable);
+
+void marshal_vkDestroyObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyObjectTableNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkRegisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const uint32_t* pObjectIndices);
+
+VkResult unmarshal_vkRegisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const uint32_t* pObjectIndices);
+
+VkResult marshal_vkUnregisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectEntryTypeNVX* pObjectEntryTypes,
+ const uint32_t* pObjectIndices);
+
+VkResult unmarshal_vkUnregisterObjectsNVX(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkObjectTableNVX objectTable,
+ uint32_t objectCount,
+ const VkObjectEntryTypeNVX* pObjectEntryTypes,
+ const uint32_t* pObjectIndices);
+
+void marshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+ VkDeviceGeneratedCommandsLimitsNVX* pLimits);
+
+void unmarshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
+ VkDeviceGeneratedCommandsLimitsNVX* pLimits);
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void marshal_VkViewportWScalingNV(
+ VulkanStream* vkStream,
+ const VkViewportWScalingNV* forMarshaling);
+
+void unmarshal_VkViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkViewportWScalingNV* forUnmarshaling);
+
+void marshal_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineViewportWScalingStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineViewportWScalingStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineViewportWScalingStateCreateInfoNV* forUnmarshaling);
+
+void marshal_vkCmdSetViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewportWScalingNV* pViewportWScalings);
+
+void unmarshal_vkCmdSetViewportWScalingNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstViewport,
+ uint32_t viewportCount,
+ const VkViewportWScalingNV* pViewportWScalings);
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+VkResult marshal_vkReleaseDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display);
+
+VkResult unmarshal_vkReleaseDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkDisplayKHR display);
+
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+VkResult marshal_vkAcquireXlibDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ VkDisplayKHR display);
+
+VkResult unmarshal_vkAcquireXlibDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ VkDisplayKHR display);
+
+VkResult marshal_vkGetRandROutputDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ RROutput rrOutput,
+ VkDisplayKHR* pDisplay);
+
+VkResult unmarshal_vkGetRandROutputDisplayEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ Display* dpy,
+ RROutput rrOutput,
+ VkDisplayKHR* pDisplay);
+
+#endif
+#ifdef VK_EXT_display_surface_counter
+void marshal_VkSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ const VkSurfaceCapabilities2EXT* forMarshaling);
+
+void unmarshal_VkSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkSurfaceCapabilities2EXT* forUnmarshaling);
+
+VkResult marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
+
+VkResult unmarshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSurfaceKHR surface,
+ VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
+
+#endif
+#ifdef VK_EXT_display_control
+void marshal_VkDisplayPowerInfoEXT(
+ VulkanStream* vkStream,
+ const VkDisplayPowerInfoEXT* forMarshaling);
+
+void unmarshal_VkDisplayPowerInfoEXT(
+ VulkanStream* vkStream,
+ VkDisplayPowerInfoEXT* forUnmarshaling);
+
+void marshal_VkDeviceEventInfoEXT(
+ VulkanStream* vkStream,
+ const VkDeviceEventInfoEXT* forMarshaling);
+
+void unmarshal_VkDeviceEventInfoEXT(
+ VulkanStream* vkStream,
+ VkDeviceEventInfoEXT* forUnmarshaling);
+
+void marshal_VkDisplayEventInfoEXT(
+ VulkanStream* vkStream,
+ const VkDisplayEventInfoEXT* forMarshaling);
+
+void unmarshal_VkDisplayEventInfoEXT(
+ VulkanStream* vkStream,
+ VkDisplayEventInfoEXT* forUnmarshaling);
+
+void marshal_VkSwapchainCounterCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkSwapchainCounterCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkSwapchainCounterCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkSwapchainCounterCreateInfoEXT* forUnmarshaling);
+
+VkResult marshal_vkDisplayPowerControlEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
+
+VkResult unmarshal_vkDisplayPowerControlEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
+
+VkResult marshal_vkRegisterDeviceEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceEventInfoEXT* pDeviceEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+VkResult unmarshal_vkRegisterDeviceEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDeviceEventInfoEXT* pDeviceEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+VkResult marshal_vkRegisterDisplayEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayEventInfoEXT* pDisplayEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+VkResult unmarshal_vkRegisterDisplayEventEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkDisplayKHR display,
+ const VkDisplayEventInfoEXT* pDisplayEventInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkFence* pFence);
+
+VkResult marshal_vkGetSwapchainCounterEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkSurfaceCounterFlagBitsEXT counter,
+ uint64_t* pCounterValue);
+
+VkResult unmarshal_vkGetSwapchainCounterEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkSurfaceCounterFlagBitsEXT counter,
+ uint64_t* pCounterValue);
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void marshal_VkRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ const VkRefreshCycleDurationGOOGLE* forMarshaling);
+
+void unmarshal_VkRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkRefreshCycleDurationGOOGLE* forUnmarshaling);
+
+void marshal_VkPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ const VkPastPresentationTimingGOOGLE* forMarshaling);
+
+void unmarshal_VkPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkPastPresentationTimingGOOGLE* forUnmarshaling);
+
+void marshal_VkPresentTimeGOOGLE(
+ VulkanStream* vkStream,
+ const VkPresentTimeGOOGLE* forMarshaling);
+
+void unmarshal_VkPresentTimeGOOGLE(
+ VulkanStream* vkStream,
+ VkPresentTimeGOOGLE* forUnmarshaling);
+
+void marshal_VkPresentTimesInfoGOOGLE(
+ VulkanStream* vkStream,
+ const VkPresentTimesInfoGOOGLE* forMarshaling);
+
+void unmarshal_VkPresentTimesInfoGOOGLE(
+ VulkanStream* vkStream,
+ VkPresentTimesInfoGOOGLE* forUnmarshaling);
+
+VkResult marshal_vkGetRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+
+VkResult unmarshal_vkGetRefreshCycleDurationGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+
+VkResult marshal_vkGetPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pPresentationTimingCount,
+ VkPastPresentationTimingGOOGLE* pPresentationTimings);
+
+VkResult unmarshal_vkGetPastPresentationTimingGOOGLE(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkSwapchainKHR swapchain,
+ uint32_t* pPresentationTimingCount,
+ VkPastPresentationTimingGOOGLE* pPresentationTimings);
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void marshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void marshal_VkViewportSwizzleNV(
+ VulkanStream* vkStream,
+ const VkViewportSwizzleNV* forMarshaling);
+
+void unmarshal_VkViewportSwizzleNV(
+ VulkanStream* vkStream,
+ VkViewportSwizzleNV* forUnmarshaling);
+
+void marshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineViewportSwizzleStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineViewportSwizzleStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void marshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineDiscardRectangleStateCreateInfoEXT* forUnmarshaling);
+
+void marshal_vkCmdSetDiscardRectangleEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstDiscardRectangle,
+ uint32_t discardRectangleCount,
+ const VkRect2D* pDiscardRectangles);
+
+void unmarshal_vkCmdSetDiscardRectangleEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ uint32_t firstDiscardRectangle,
+ uint32_t discardRectangleCount,
+ const VkRect2D* pDiscardRectangles);
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void marshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineRasterizationConservativeStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void marshal_VkXYColorEXT(
+ VulkanStream* vkStream,
+ const VkXYColorEXT* forMarshaling);
+
+void unmarshal_VkXYColorEXT(
+ VulkanStream* vkStream,
+ VkXYColorEXT* forUnmarshaling);
+
+void marshal_VkHdrMetadataEXT(
+ VulkanStream* vkStream,
+ const VkHdrMetadataEXT* forMarshaling);
+
+void unmarshal_VkHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkHdrMetadataEXT* forUnmarshaling);
+
+void marshal_vkSetHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainKHR* pSwapchains,
+ const VkHdrMetadataEXT* pMetadata);
+
+void unmarshal_vkSetHdrMetadataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ uint32_t swapchainCount,
+ const VkSwapchainKHR* pSwapchains,
+ const VkHdrMetadataEXT* pMetadata);
+
+#endif
+#ifdef VK_MVK_ios_surface
+void marshal_VkIOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ const VkIOSSurfaceCreateInfoMVK* forMarshaling);
+
+void unmarshal_VkIOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ VkIOSSurfaceCreateInfoMVK* forUnmarshaling);
+
+VkResult marshal_vkCreateIOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateIOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+#endif
+#ifdef VK_MVK_macos_surface
+void marshal_VkMacOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ const VkMacOSSurfaceCreateInfoMVK* forMarshaling);
+
+void unmarshal_VkMacOSSurfaceCreateInfoMVK(
+ VulkanStream* vkStream,
+ VkMacOSSurfaceCreateInfoMVK* forUnmarshaling);
+
+VkResult marshal_vkCreateMacOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+VkResult unmarshal_vkCreateMacOSSurfaceMVK(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkSurfaceKHR* pSurface);
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void marshal_VkDebugUtilsObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsObjectNameInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsObjectNameInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsObjectNameInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsObjectTagInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsObjectTagInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsObjectTagInfoEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsLabelEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsLabelEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsMessengerCallbackDataEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsMessengerCallbackDataEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsMessengerCallbackDataEXT* forUnmarshaling);
+
+void marshal_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDebugUtilsMessengerCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDebugUtilsMessengerCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDebugUtilsMessengerCreateInfoEXT* forUnmarshaling);
+
+VkResult marshal_vkSetDebugUtilsObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
+
+VkResult unmarshal_vkSetDebugUtilsObjectNameEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
+
+VkResult marshal_vkSetDebugUtilsObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
+
+VkResult unmarshal_vkSetDebugUtilsObjectTagEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
+
+void marshal_vkQueueBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void unmarshal_vkQueueBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void marshal_vkQueueEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue);
+
+void unmarshal_vkQueueEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue);
+
+void marshal_vkQueueInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void unmarshal_vkQueueInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void marshal_vkCmdBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void unmarshal_vkCmdBeginDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void marshal_vkCmdEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void unmarshal_vkCmdEndDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer);
+
+void marshal_vkCmdInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+void unmarshal_vkCmdInsertDebugUtilsLabelEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkDebugUtilsLabelEXT* pLabelInfo);
+
+VkResult marshal_vkCreateDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugUtilsMessengerEXT* pMessenger);
+
+VkResult unmarshal_vkCreateDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkDebugUtilsMessengerEXT* pMessenger);
+
+void marshal_vkDestroyDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessengerEXT messenger,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyDebugUtilsMessengerEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessengerEXT messenger,
+ const VkAllocationCallbacks* pAllocator);
+
+void marshal_vkSubmitDebugUtilsMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+ VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
+
+void unmarshal_vkSubmitDebugUtilsMessageEXT(
+ VulkanStream* vkStream,
+ VkInstance instance,
+ VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
+ VkDebugUtilsMessageTypeFlagsEXT messageTypes,
+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void marshal_VkAndroidHardwareBufferUsageANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferUsageANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferUsageANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferUsageANDROID* forUnmarshaling);
+
+void marshal_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferPropertiesANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferPropertiesANDROID* forUnmarshaling);
+
+void marshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanStream* vkStream,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* forMarshaling);
+
+void unmarshal_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkAndroidHardwareBufferFormatPropertiesANDROID* forUnmarshaling);
+
+void marshal_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ const VkImportAndroidHardwareBufferInfoANDROID* forMarshaling);
+
+void unmarshal_VkImportAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ VkImportAndroidHardwareBufferInfoANDROID* forUnmarshaling);
+
+void marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* forMarshaling);
+
+void unmarshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ VulkanStream* vkStream,
+ VkMemoryGetAndroidHardwareBufferInfoANDROID* forUnmarshaling);
+
+void marshal_VkExternalFormatANDROID(
+ VulkanStream* vkStream,
+ const VkExternalFormatANDROID* forMarshaling);
+
+void unmarshal_VkExternalFormatANDROID(
+ VulkanStream* vkStream,
+ VkExternalFormatANDROID* forUnmarshaling);
+
+VkResult marshal_vkGetAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+
+VkResult unmarshal_vkGetAndroidHardwareBufferPropertiesANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+
+VkResult marshal_vkGetMemoryAndroidHardwareBufferANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ AHardwareBuffer** pBuffer);
+
+VkResult unmarshal_vkGetMemoryAndroidHardwareBufferANDROID(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
+ AHardwareBuffer** pBuffer);
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void marshal_VkSamplerReductionModeCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkSamplerReductionModeCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkSamplerReductionModeCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkSamplerReductionModeCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void marshal_VkSampleLocationEXT(
+ VulkanStream* vkStream,
+ const VkSampleLocationEXT* forMarshaling);
+
+void unmarshal_VkSampleLocationEXT(
+ VulkanStream* vkStream,
+ VkSampleLocationEXT* forUnmarshaling);
+
+void marshal_VkSampleLocationsInfoEXT(
+ VulkanStream* vkStream,
+ const VkSampleLocationsInfoEXT* forMarshaling);
+
+void unmarshal_VkSampleLocationsInfoEXT(
+ VulkanStream* vkStream,
+ VkSampleLocationsInfoEXT* forUnmarshaling);
+
+void marshal_VkAttachmentSampleLocationsEXT(
+ VulkanStream* vkStream,
+ const VkAttachmentSampleLocationsEXT* forMarshaling);
+
+void unmarshal_VkAttachmentSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkAttachmentSampleLocationsEXT* forUnmarshaling);
+
+void marshal_VkSubpassSampleLocationsEXT(
+ VulkanStream* vkStream,
+ const VkSubpassSampleLocationsEXT* forMarshaling);
+
+void unmarshal_VkSubpassSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkSubpassSampleLocationsEXT* forUnmarshaling);
+
+void marshal_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanStream* vkStream,
+ const VkRenderPassSampleLocationsBeginInfoEXT* forMarshaling);
+
+void unmarshal_VkRenderPassSampleLocationsBeginInfoEXT(
+ VulkanStream* vkStream,
+ VkRenderPassSampleLocationsBeginInfoEXT* forUnmarshaling);
+
+void marshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineSampleLocationsStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineSampleLocationsStateCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceSampleLocationsPropertiesEXT* forUnmarshaling);
+
+void marshal_VkMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ const VkMultisamplePropertiesEXT* forMarshaling);
+
+void unmarshal_VkMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkMultisamplePropertiesEXT* forUnmarshaling);
+
+void marshal_vkCmdSetSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+
+void unmarshal_vkCmdSetSampleLocationsEXT(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+
+void marshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties);
+
+void unmarshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDevice physicalDevice,
+ VkSampleCountFlagBits samples,
+ VkMultisamplePropertiesEXT* pMultisampleProperties);
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void marshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineColorBlendAdvancedStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void marshal_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineCoverageToColorStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineCoverageToColorStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineCoverageToColorStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void marshal_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanStream* vkStream,
+ const VkPipelineCoverageModulationStateCreateInfoNV* forMarshaling);
+
+void unmarshal_VkPipelineCoverageModulationStateCreateInfoNV(
+ VulkanStream* vkStream,
+ VkPipelineCoverageModulationStateCreateInfoNV* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void marshal_VkValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkValidationCacheCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkValidationCacheCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkShaderModuleValidationCacheCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkShaderModuleValidationCacheCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkShaderModuleValidationCacheCreateInfoEXT* forUnmarshaling);
+
+VkResult marshal_vkCreateValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache);
+
+VkResult unmarshal_vkCreateValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ const VkValidationCacheCreateInfoEXT* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator,
+ VkValidationCacheEXT* pValidationCache);
+
+void marshal_vkDestroyValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator);
+
+void unmarshal_vkDestroyValidationCacheEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ const VkAllocationCallbacks* pAllocator);
+
+VkResult marshal_vkMergeValidationCachesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches);
+
+VkResult unmarshal_vkMergeValidationCachesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT dstCache,
+ uint32_t srcCacheCount,
+ const VkValidationCacheEXT* pSrcCaches);
+
+VkResult marshal_vkGetValidationCacheDataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData);
+
+VkResult unmarshal_vkGetValidationCacheDataEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkValidationCacheEXT validationCache,
+ size_t* pDataSize,
+ void* pData);
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void marshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDescriptorIndexingFeaturesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceDescriptorIndexingPropertiesEXT* forUnmarshaling);
+
+void marshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* forUnmarshaling);
+
+void marshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanStream* vkStream,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forMarshaling);
+
+void unmarshal_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ VulkanStream* vkStream,
+ VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void marshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkDeviceQueueGlobalPriorityCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void marshal_VkImportMemoryHostPointerInfoEXT(
+ VulkanStream* vkStream,
+ const VkImportMemoryHostPointerInfoEXT* forMarshaling);
+
+void unmarshal_VkImportMemoryHostPointerInfoEXT(
+ VulkanStream* vkStream,
+ VkImportMemoryHostPointerInfoEXT* forUnmarshaling);
+
+void marshal_VkMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkMemoryHostPointerPropertiesEXT* forMarshaling);
+
+void unmarshal_VkMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkMemoryHostPointerPropertiesEXT* forUnmarshaling);
+
+void marshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT* forUnmarshaling);
+
+VkResult marshal_vkGetMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ const void* pHostPointer,
+ VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+
+VkResult unmarshal_vkGetMemoryHostPointerPropertiesEXT(
+ VulkanStream* vkStream,
+ VkDevice device,
+ VkExternalMemoryHandleTypeFlagBits handleType,
+ const void* pHostPointer,
+ VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+
+#endif
+#ifdef VK_AMD_buffer_marker
+void marshal_vkCmdWriteBufferMarkerAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ uint32_t marker);
+
+void unmarshal_vkCmdWriteBufferMarkerAMD(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ VkPipelineStageFlagBits pipelineStage,
+ VkBuffer dstBuffer,
+ VkDeviceSize dstOffset,
+ uint32_t marker);
+
+#endif
+#ifdef VK_AMD_shader_core_properties
+void marshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceShaderCorePropertiesAMD(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceShaderCorePropertiesAMD* forUnmarshaling);
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void marshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanStream* vkStream,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forMarshaling);
+
+void unmarshal_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ VulkanStream* vkStream,
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* forUnmarshaling);
+
+void marshal_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanStream* vkStream,
+ const VkVertexInputBindingDivisorDescriptionEXT* forMarshaling);
+
+void unmarshal_VkVertexInputBindingDivisorDescriptionEXT(
+ VulkanStream* vkStream,
+ VkVertexInputBindingDivisorDescriptionEXT* forUnmarshaling);
+
+void marshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* forMarshaling);
+
+void unmarshal_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ VulkanStream* vkStream,
+ VkPipelineVertexInputDivisorStateCreateInfoEXT* forUnmarshaling);
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void marshal_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanStream* vkStream,
+ const VkQueueFamilyCheckpointPropertiesNV* forMarshaling);
+
+void unmarshal_VkQueueFamilyCheckpointPropertiesNV(
+ VulkanStream* vkStream,
+ VkQueueFamilyCheckpointPropertiesNV* forUnmarshaling);
+
+void marshal_VkCheckpointDataNV(
+ VulkanStream* vkStream,
+ const VkCheckpointDataNV* forMarshaling);
+
+void unmarshal_VkCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkCheckpointDataNV* forUnmarshaling);
+
+void marshal_vkCmdSetCheckpointNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const void* pCheckpointMarker);
+
+void unmarshal_vkCmdSetCheckpointNV(
+ VulkanStream* vkStream,
+ VkCommandBuffer commandBuffer,
+ const void* pCheckpointMarker);
+
+void marshal_vkGetQueueCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t* pCheckpointDataCount,
+ VkCheckpointDataNV* pCheckpointData);
+
+void unmarshal_vkGetQueueCheckpointDataNV(
+ VulkanStream* vkStream,
+ VkQueue queue,
+ uint32_t* pCheckpointDataCount,
+ VkCheckpointDataNV* pCheckpointData);
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.cpp
new file mode 100644
index 0000000000..fdb921fd55
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.cpp
@@ -0,0 +1,5462 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_testing
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#include "goldfish_vk_testing.h"
+
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void checkEqual_VkApplicationInfo(
+ const VkApplicationInfo* a,
+ const VkApplicationInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pApplicationName) && !(b->pApplicationName)) || ((a->pApplicationName) && (b->pApplicationName)))) { onFail("a->pApplicationName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pApplicationName) && (b->pApplicationName))
+ {
+ if (!((strcmp(a->pApplicationName, b->pApplicationName) == 0))) { onFail("a->pApplicationName (Error: Unequal strings)"); };
+ }
+ if (!((a->applicationVersion) == (b->applicationVersion))) { onFail("a->applicationVersion (Error: Value not equal)"); };
+ if (!((!(a->pEngineName) && !(b->pEngineName)) || ((a->pEngineName) && (b->pEngineName)))) { onFail("a->pEngineName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pEngineName) && (b->pEngineName))
+ {
+ if (!((strcmp(a->pEngineName, b->pEngineName) == 0))) { onFail("a->pEngineName (Error: Unequal strings)"); };
+ }
+ if (!((a->engineVersion) == (b->engineVersion))) { onFail("a->engineVersion (Error: Value not equal)"); };
+ if (!((a->apiVersion) == (b->apiVersion))) { onFail("a->apiVersion (Error: Value not equal)"); };
+}
+
+void checkEqual_VkInstanceCreateInfo(
+ const VkInstanceCreateInfo* a,
+ const VkInstanceCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->pApplicationInfo) && !(b->pApplicationInfo)) || ((a->pApplicationInfo) && (b->pApplicationInfo)))) { onFail("a->pApplicationInfo (Error: Mismatch in optional field)"); };
+ if (a->pApplicationInfo && b->pApplicationInfo)
+ {
+ if ((a->pApplicationInfo) && (b->pApplicationInfo))
+ {
+ checkEqual_VkApplicationInfo(a->pApplicationInfo, b->pApplicationInfo, onFail);
+ }
+ }
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->enabledLayerCount (Error: Value not equal)"); };
+ if (!((!(a->ppEnabledLayerNames) && !(b->ppEnabledLayerNames)) || ((a->ppEnabledLayerNames) && (b->ppEnabledLayerNames)))) { onFail("a->ppEnabledLayerNames (Error: Mismatch in string array pointer nullness)"); };
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->ppEnabledLayerNames (Error: Lengths not equal in string array)"); };
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->ppEnabledLayerNames (Error: Lengths not equal in string array)"); };
+ if ((a->enabledLayerCount) == (b->enabledLayerCount) && (a->ppEnabledLayerNames) && (b->ppEnabledLayerNames))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->enabledLayerCount; ++i)
+ {
+ if (!((strcmp(*(a->ppEnabledLayerNames + i), *(b->ppEnabledLayerNames + i)) == 0))) { onFail("a->ppEnabledLayerNames (Error: Unequal string in string array)"); };
+ }
+ }
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->enabledExtensionCount (Error: Value not equal)"); };
+ if (!((!(a->ppEnabledExtensionNames) && !(b->ppEnabledExtensionNames)) || ((a->ppEnabledExtensionNames) && (b->ppEnabledExtensionNames)))) { onFail("a->ppEnabledExtensionNames (Error: Mismatch in string array pointer nullness)"); };
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->ppEnabledExtensionNames (Error: Lengths not equal in string array)"); };
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->ppEnabledExtensionNames (Error: Lengths not equal in string array)"); };
+ if ((a->enabledExtensionCount) == (b->enabledExtensionCount) && (a->ppEnabledExtensionNames) && (b->ppEnabledExtensionNames))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->enabledExtensionCount; ++i)
+ {
+ if (!((strcmp(*(a->ppEnabledExtensionNames + i), *(b->ppEnabledExtensionNames + i)) == 0))) { onFail("a->ppEnabledExtensionNames (Error: Unequal string in string array)"); };
+ }
+ }
+}
+
+void checkEqual_VkAllocationCallbacks(
+ const VkAllocationCallbacks* a,
+ const VkAllocationCallbacks* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((!(a->pUserData) && !(b->pUserData)) || ((a->pUserData) && (b->pUserData)))) { onFail("a->pUserData (Error: Mismatch in optional field)"); };
+ if (!((a->pfnAllocation) == (b->pfnAllocation))) { onFail("a->pfnAllocation (Error: Value not equal)"); };
+ if (!((a->pfnReallocation) == (b->pfnReallocation))) { onFail("a->pfnReallocation (Error: Value not equal)"); };
+ if (!((a->pfnFree) == (b->pfnFree))) { onFail("a->pfnFree (Error: Value not equal)"); };
+ if (!((a->pfnInternalAllocation) == (b->pfnInternalAllocation))) { onFail("a->pfnInternalAllocation (Error: Value not equal)"); };
+ if (!((a->pfnInternalFree) == (b->pfnInternalFree))) { onFail("a->pfnInternalFree (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceFeatures(
+ const VkPhysicalDeviceFeatures* a,
+ const VkPhysicalDeviceFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->robustBufferAccess) == (b->robustBufferAccess))) { onFail("a->robustBufferAccess (Error: Value not equal)"); };
+ if (!((a->fullDrawIndexUint32) == (b->fullDrawIndexUint32))) { onFail("a->fullDrawIndexUint32 (Error: Value not equal)"); };
+ if (!((a->imageCubeArray) == (b->imageCubeArray))) { onFail("a->imageCubeArray (Error: Value not equal)"); };
+ if (!((a->independentBlend) == (b->independentBlend))) { onFail("a->independentBlend (Error: Value not equal)"); };
+ if (!((a->geometryShader) == (b->geometryShader))) { onFail("a->geometryShader (Error: Value not equal)"); };
+ if (!((a->tessellationShader) == (b->tessellationShader))) { onFail("a->tessellationShader (Error: Value not equal)"); };
+ if (!((a->sampleRateShading) == (b->sampleRateShading))) { onFail("a->sampleRateShading (Error: Value not equal)"); };
+ if (!((a->dualSrcBlend) == (b->dualSrcBlend))) { onFail("a->dualSrcBlend (Error: Value not equal)"); };
+ if (!((a->logicOp) == (b->logicOp))) { onFail("a->logicOp (Error: Value not equal)"); };
+ if (!((a->multiDrawIndirect) == (b->multiDrawIndirect))) { onFail("a->multiDrawIndirect (Error: Value not equal)"); };
+ if (!((a->drawIndirectFirstInstance) == (b->drawIndirectFirstInstance))) { onFail("a->drawIndirectFirstInstance (Error: Value not equal)"); };
+ if (!((a->depthClamp) == (b->depthClamp))) { onFail("a->depthClamp (Error: Value not equal)"); };
+ if (!((a->depthBiasClamp) == (b->depthBiasClamp))) { onFail("a->depthBiasClamp (Error: Value not equal)"); };
+ if (!((a->fillModeNonSolid) == (b->fillModeNonSolid))) { onFail("a->fillModeNonSolid (Error: Value not equal)"); };
+ if (!((a->depthBounds) == (b->depthBounds))) { onFail("a->depthBounds (Error: Value not equal)"); };
+ if (!((a->wideLines) == (b->wideLines))) { onFail("a->wideLines (Error: Value not equal)"); };
+ if (!((a->largePoints) == (b->largePoints))) { onFail("a->largePoints (Error: Value not equal)"); };
+ if (!((a->alphaToOne) == (b->alphaToOne))) { onFail("a->alphaToOne (Error: Value not equal)"); };
+ if (!((a->multiViewport) == (b->multiViewport))) { onFail("a->multiViewport (Error: Value not equal)"); };
+ if (!((a->samplerAnisotropy) == (b->samplerAnisotropy))) { onFail("a->samplerAnisotropy (Error: Value not equal)"); };
+ if (!((a->textureCompressionETC2) == (b->textureCompressionETC2))) { onFail("a->textureCompressionETC2 (Error: Value not equal)"); };
+ if (!((a->textureCompressionASTC_LDR) == (b->textureCompressionASTC_LDR))) { onFail("a->textureCompressionASTC_LDR (Error: Value not equal)"); };
+ if (!((a->textureCompressionBC) == (b->textureCompressionBC))) { onFail("a->textureCompressionBC (Error: Value not equal)"); };
+ if (!((a->occlusionQueryPrecise) == (b->occlusionQueryPrecise))) { onFail("a->occlusionQueryPrecise (Error: Value not equal)"); };
+ if (!((a->pipelineStatisticsQuery) == (b->pipelineStatisticsQuery))) { onFail("a->pipelineStatisticsQuery (Error: Value not equal)"); };
+ if (!((a->vertexPipelineStoresAndAtomics) == (b->vertexPipelineStoresAndAtomics))) { onFail("a->vertexPipelineStoresAndAtomics (Error: Value not equal)"); };
+ if (!((a->fragmentStoresAndAtomics) == (b->fragmentStoresAndAtomics))) { onFail("a->fragmentStoresAndAtomics (Error: Value not equal)"); };
+ if (!((a->shaderTessellationAndGeometryPointSize) == (b->shaderTessellationAndGeometryPointSize))) { onFail("a->shaderTessellationAndGeometryPointSize (Error: Value not equal)"); };
+ if (!((a->shaderImageGatherExtended) == (b->shaderImageGatherExtended))) { onFail("a->shaderImageGatherExtended (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageExtendedFormats) == (b->shaderStorageImageExtendedFormats))) { onFail("a->shaderStorageImageExtendedFormats (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageMultisample) == (b->shaderStorageImageMultisample))) { onFail("a->shaderStorageImageMultisample (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageReadWithoutFormat) == (b->shaderStorageImageReadWithoutFormat))) { onFail("a->shaderStorageImageReadWithoutFormat (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageWriteWithoutFormat) == (b->shaderStorageImageWriteWithoutFormat))) { onFail("a->shaderStorageImageWriteWithoutFormat (Error: Value not equal)"); };
+ if (!((a->shaderUniformBufferArrayDynamicIndexing) == (b->shaderUniformBufferArrayDynamicIndexing))) { onFail("a->shaderUniformBufferArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderSampledImageArrayDynamicIndexing) == (b->shaderSampledImageArrayDynamicIndexing))) { onFail("a->shaderSampledImageArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageBufferArrayDynamicIndexing) == (b->shaderStorageBufferArrayDynamicIndexing))) { onFail("a->shaderStorageBufferArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageArrayDynamicIndexing) == (b->shaderStorageImageArrayDynamicIndexing))) { onFail("a->shaderStorageImageArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderClipDistance) == (b->shaderClipDistance))) { onFail("a->shaderClipDistance (Error: Value not equal)"); };
+ if (!((a->shaderCullDistance) == (b->shaderCullDistance))) { onFail("a->shaderCullDistance (Error: Value not equal)"); };
+ if (!((a->shaderFloat64) == (b->shaderFloat64))) { onFail("a->shaderFloat64 (Error: Value not equal)"); };
+ if (!((a->shaderInt64) == (b->shaderInt64))) { onFail("a->shaderInt64 (Error: Value not equal)"); };
+ if (!((a->shaderInt16) == (b->shaderInt16))) { onFail("a->shaderInt16 (Error: Value not equal)"); };
+ if (!((a->shaderResourceResidency) == (b->shaderResourceResidency))) { onFail("a->shaderResourceResidency (Error: Value not equal)"); };
+ if (!((a->shaderResourceMinLod) == (b->shaderResourceMinLod))) { onFail("a->shaderResourceMinLod (Error: Value not equal)"); };
+ if (!((a->sparseBinding) == (b->sparseBinding))) { onFail("a->sparseBinding (Error: Value not equal)"); };
+ if (!((a->sparseResidencyBuffer) == (b->sparseResidencyBuffer))) { onFail("a->sparseResidencyBuffer (Error: Value not equal)"); };
+ if (!((a->sparseResidencyImage2D) == (b->sparseResidencyImage2D))) { onFail("a->sparseResidencyImage2D (Error: Value not equal)"); };
+ if (!((a->sparseResidencyImage3D) == (b->sparseResidencyImage3D))) { onFail("a->sparseResidencyImage3D (Error: Value not equal)"); };
+ if (!((a->sparseResidency2Samples) == (b->sparseResidency2Samples))) { onFail("a->sparseResidency2Samples (Error: Value not equal)"); };
+ if (!((a->sparseResidency4Samples) == (b->sparseResidency4Samples))) { onFail("a->sparseResidency4Samples (Error: Value not equal)"); };
+ if (!((a->sparseResidency8Samples) == (b->sparseResidency8Samples))) { onFail("a->sparseResidency8Samples (Error: Value not equal)"); };
+ if (!((a->sparseResidency16Samples) == (b->sparseResidency16Samples))) { onFail("a->sparseResidency16Samples (Error: Value not equal)"); };
+ if (!((a->sparseResidencyAliased) == (b->sparseResidencyAliased))) { onFail("a->sparseResidencyAliased (Error: Value not equal)"); };
+ if (!((a->variableMultisampleRate) == (b->variableMultisampleRate))) { onFail("a->variableMultisampleRate (Error: Value not equal)"); };
+ if (!((a->inheritedQueries) == (b->inheritedQueries))) { onFail("a->inheritedQueries (Error: Value not equal)"); };
+}
+
+void checkEqual_VkFormatProperties(
+ const VkFormatProperties* a,
+ const VkFormatProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->linearTilingFeatures) == (b->linearTilingFeatures))) { onFail("a->linearTilingFeatures (Error: Value not equal)"); };
+ if (!((a->optimalTilingFeatures) == (b->optimalTilingFeatures))) { onFail("a->optimalTilingFeatures (Error: Value not equal)"); };
+ if (!((a->bufferFeatures) == (b->bufferFeatures))) { onFail("a->bufferFeatures (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExtent3D(
+ const VkExtent3D* a,
+ const VkExtent3D* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->width) == (b->width))) { onFail("a->width (Error: Value not equal)"); };
+ if (!((a->height) == (b->height))) { onFail("a->height (Error: Value not equal)"); };
+ if (!((a->depth) == (b->depth))) { onFail("a->depth (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageFormatProperties(
+ const VkImageFormatProperties* a,
+ const VkImageFormatProperties* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkExtent3D(&a->maxExtent, &b->maxExtent, onFail);
+ if (!((a->maxMipLevels) == (b->maxMipLevels))) { onFail("a->maxMipLevels (Error: Value not equal)"); };
+ if (!((a->maxArrayLayers) == (b->maxArrayLayers))) { onFail("a->maxArrayLayers (Error: Value not equal)"); };
+ if (!((a->sampleCounts) == (b->sampleCounts))) { onFail("a->sampleCounts (Error: Value not equal)"); };
+ if (!((a->maxResourceSize) == (b->maxResourceSize))) { onFail("a->maxResourceSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceLimits(
+ const VkPhysicalDeviceLimits* a,
+ const VkPhysicalDeviceLimits* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->maxImageDimension1D) == (b->maxImageDimension1D))) { onFail("a->maxImageDimension1D (Error: Value not equal)"); };
+ if (!((a->maxImageDimension2D) == (b->maxImageDimension2D))) { onFail("a->maxImageDimension2D (Error: Value not equal)"); };
+ if (!((a->maxImageDimension3D) == (b->maxImageDimension3D))) { onFail("a->maxImageDimension3D (Error: Value not equal)"); };
+ if (!((a->maxImageDimensionCube) == (b->maxImageDimensionCube))) { onFail("a->maxImageDimensionCube (Error: Value not equal)"); };
+ if (!((a->maxImageArrayLayers) == (b->maxImageArrayLayers))) { onFail("a->maxImageArrayLayers (Error: Value not equal)"); };
+ if (!((a->maxTexelBufferElements) == (b->maxTexelBufferElements))) { onFail("a->maxTexelBufferElements (Error: Value not equal)"); };
+ if (!((a->maxUniformBufferRange) == (b->maxUniformBufferRange))) { onFail("a->maxUniformBufferRange (Error: Value not equal)"); };
+ if (!((a->maxStorageBufferRange) == (b->maxStorageBufferRange))) { onFail("a->maxStorageBufferRange (Error: Value not equal)"); };
+ if (!((a->maxPushConstantsSize) == (b->maxPushConstantsSize))) { onFail("a->maxPushConstantsSize (Error: Value not equal)"); };
+ if (!((a->maxMemoryAllocationCount) == (b->maxMemoryAllocationCount))) { onFail("a->maxMemoryAllocationCount (Error: Value not equal)"); };
+ if (!((a->maxSamplerAllocationCount) == (b->maxSamplerAllocationCount))) { onFail("a->maxSamplerAllocationCount (Error: Value not equal)"); };
+ if (!((a->bufferImageGranularity) == (b->bufferImageGranularity))) { onFail("a->bufferImageGranularity (Error: Value not equal)"); };
+ if (!((a->sparseAddressSpaceSize) == (b->sparseAddressSpaceSize))) { onFail("a->sparseAddressSpaceSize (Error: Value not equal)"); };
+ if (!((a->maxBoundDescriptorSets) == (b->maxBoundDescriptorSets))) { onFail("a->maxBoundDescriptorSets (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorSamplers) == (b->maxPerStageDescriptorSamplers))) { onFail("a->maxPerStageDescriptorSamplers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUniformBuffers) == (b->maxPerStageDescriptorUniformBuffers))) { onFail("a->maxPerStageDescriptorUniformBuffers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorStorageBuffers) == (b->maxPerStageDescriptorStorageBuffers))) { onFail("a->maxPerStageDescriptorStorageBuffers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorSampledImages) == (b->maxPerStageDescriptorSampledImages))) { onFail("a->maxPerStageDescriptorSampledImages (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorStorageImages) == (b->maxPerStageDescriptorStorageImages))) { onFail("a->maxPerStageDescriptorStorageImages (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorInputAttachments) == (b->maxPerStageDescriptorInputAttachments))) { onFail("a->maxPerStageDescriptorInputAttachments (Error: Value not equal)"); };
+ if (!((a->maxPerStageResources) == (b->maxPerStageResources))) { onFail("a->maxPerStageResources (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetSamplers) == (b->maxDescriptorSetSamplers))) { onFail("a->maxDescriptorSetSamplers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUniformBuffers) == (b->maxDescriptorSetUniformBuffers))) { onFail("a->maxDescriptorSetUniformBuffers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUniformBuffersDynamic) == (b->maxDescriptorSetUniformBuffersDynamic))) { onFail("a->maxDescriptorSetUniformBuffersDynamic (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetStorageBuffers) == (b->maxDescriptorSetStorageBuffers))) { onFail("a->maxDescriptorSetStorageBuffers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetStorageBuffersDynamic) == (b->maxDescriptorSetStorageBuffersDynamic))) { onFail("a->maxDescriptorSetStorageBuffersDynamic (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetSampledImages) == (b->maxDescriptorSetSampledImages))) { onFail("a->maxDescriptorSetSampledImages (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetStorageImages) == (b->maxDescriptorSetStorageImages))) { onFail("a->maxDescriptorSetStorageImages (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetInputAttachments) == (b->maxDescriptorSetInputAttachments))) { onFail("a->maxDescriptorSetInputAttachments (Error: Value not equal)"); };
+ if (!((a->maxVertexInputAttributes) == (b->maxVertexInputAttributes))) { onFail("a->maxVertexInputAttributes (Error: Value not equal)"); };
+ if (!((a->maxVertexInputBindings) == (b->maxVertexInputBindings))) { onFail("a->maxVertexInputBindings (Error: Value not equal)"); };
+ if (!((a->maxVertexInputAttributeOffset) == (b->maxVertexInputAttributeOffset))) { onFail("a->maxVertexInputAttributeOffset (Error: Value not equal)"); };
+ if (!((a->maxVertexInputBindingStride) == (b->maxVertexInputBindingStride))) { onFail("a->maxVertexInputBindingStride (Error: Value not equal)"); };
+ if (!((a->maxVertexOutputComponents) == (b->maxVertexOutputComponents))) { onFail("a->maxVertexOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationGenerationLevel) == (b->maxTessellationGenerationLevel))) { onFail("a->maxTessellationGenerationLevel (Error: Value not equal)"); };
+ if (!((a->maxTessellationPatchSize) == (b->maxTessellationPatchSize))) { onFail("a->maxTessellationPatchSize (Error: Value not equal)"); };
+ if (!((a->maxTessellationControlPerVertexInputComponents) == (b->maxTessellationControlPerVertexInputComponents))) { onFail("a->maxTessellationControlPerVertexInputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationControlPerVertexOutputComponents) == (b->maxTessellationControlPerVertexOutputComponents))) { onFail("a->maxTessellationControlPerVertexOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationControlPerPatchOutputComponents) == (b->maxTessellationControlPerPatchOutputComponents))) { onFail("a->maxTessellationControlPerPatchOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationControlTotalOutputComponents) == (b->maxTessellationControlTotalOutputComponents))) { onFail("a->maxTessellationControlTotalOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationEvaluationInputComponents) == (b->maxTessellationEvaluationInputComponents))) { onFail("a->maxTessellationEvaluationInputComponents (Error: Value not equal)"); };
+ if (!((a->maxTessellationEvaluationOutputComponents) == (b->maxTessellationEvaluationOutputComponents))) { onFail("a->maxTessellationEvaluationOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxGeometryShaderInvocations) == (b->maxGeometryShaderInvocations))) { onFail("a->maxGeometryShaderInvocations (Error: Value not equal)"); };
+ if (!((a->maxGeometryInputComponents) == (b->maxGeometryInputComponents))) { onFail("a->maxGeometryInputComponents (Error: Value not equal)"); };
+ if (!((a->maxGeometryOutputComponents) == (b->maxGeometryOutputComponents))) { onFail("a->maxGeometryOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxGeometryOutputVertices) == (b->maxGeometryOutputVertices))) { onFail("a->maxGeometryOutputVertices (Error: Value not equal)"); };
+ if (!((a->maxGeometryTotalOutputComponents) == (b->maxGeometryTotalOutputComponents))) { onFail("a->maxGeometryTotalOutputComponents (Error: Value not equal)"); };
+ if (!((a->maxFragmentInputComponents) == (b->maxFragmentInputComponents))) { onFail("a->maxFragmentInputComponents (Error: Value not equal)"); };
+ if (!((a->maxFragmentOutputAttachments) == (b->maxFragmentOutputAttachments))) { onFail("a->maxFragmentOutputAttachments (Error: Value not equal)"); };
+ if (!((a->maxFragmentDualSrcAttachments) == (b->maxFragmentDualSrcAttachments))) { onFail("a->maxFragmentDualSrcAttachments (Error: Value not equal)"); };
+ if (!((a->maxFragmentCombinedOutputResources) == (b->maxFragmentCombinedOutputResources))) { onFail("a->maxFragmentCombinedOutputResources (Error: Value not equal)"); };
+ if (!((a->maxComputeSharedMemorySize) == (b->maxComputeSharedMemorySize))) { onFail("a->maxComputeSharedMemorySize (Error: Value not equal)"); };
+ if (!((memcmp(a->maxComputeWorkGroupCount, b->maxComputeWorkGroupCount, 3 * sizeof(uint32_t)) == 0))) { onFail("a->maxComputeWorkGroupCount (Error: Unequal static array)"); };
+ if (!((a->maxComputeWorkGroupInvocations) == (b->maxComputeWorkGroupInvocations))) { onFail("a->maxComputeWorkGroupInvocations (Error: Value not equal)"); };
+ if (!((memcmp(a->maxComputeWorkGroupSize, b->maxComputeWorkGroupSize, 3 * sizeof(uint32_t)) == 0))) { onFail("a->maxComputeWorkGroupSize (Error: Unequal static array)"); };
+ if (!((a->subPixelPrecisionBits) == (b->subPixelPrecisionBits))) { onFail("a->subPixelPrecisionBits (Error: Value not equal)"); };
+ if (!((a->subTexelPrecisionBits) == (b->subTexelPrecisionBits))) { onFail("a->subTexelPrecisionBits (Error: Value not equal)"); };
+ if (!((a->mipmapPrecisionBits) == (b->mipmapPrecisionBits))) { onFail("a->mipmapPrecisionBits (Error: Value not equal)"); };
+ if (!((a->maxDrawIndexedIndexValue) == (b->maxDrawIndexedIndexValue))) { onFail("a->maxDrawIndexedIndexValue (Error: Value not equal)"); };
+ if (!((a->maxDrawIndirectCount) == (b->maxDrawIndirectCount))) { onFail("a->maxDrawIndirectCount (Error: Value not equal)"); };
+ if (!((a->maxSamplerLodBias) == (b->maxSamplerLodBias))) { onFail("a->maxSamplerLodBias (Error: Value not equal)"); };
+ if (!((a->maxSamplerAnisotropy) == (b->maxSamplerAnisotropy))) { onFail("a->maxSamplerAnisotropy (Error: Value not equal)"); };
+ if (!((a->maxViewports) == (b->maxViewports))) { onFail("a->maxViewports (Error: Value not equal)"); };
+ if (!((memcmp(a->maxViewportDimensions, b->maxViewportDimensions, 2 * sizeof(uint32_t)) == 0))) { onFail("a->maxViewportDimensions (Error: Unequal static array)"); };
+ if (!((memcmp(a->viewportBoundsRange, b->viewportBoundsRange, 2 * sizeof(float)) == 0))) { onFail("a->viewportBoundsRange (Error: Unequal static array)"); };
+ if (!((a->viewportSubPixelBits) == (b->viewportSubPixelBits))) { onFail("a->viewportSubPixelBits (Error: Value not equal)"); };
+ if (!((a->minMemoryMapAlignment) == (b->minMemoryMapAlignment))) { onFail("a->minMemoryMapAlignment (Error: Value not equal)"); };
+ if (!((a->minTexelBufferOffsetAlignment) == (b->minTexelBufferOffsetAlignment))) { onFail("a->minTexelBufferOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->minUniformBufferOffsetAlignment) == (b->minUniformBufferOffsetAlignment))) { onFail("a->minUniformBufferOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->minStorageBufferOffsetAlignment) == (b->minStorageBufferOffsetAlignment))) { onFail("a->minStorageBufferOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->minTexelOffset) == (b->minTexelOffset))) { onFail("a->minTexelOffset (Error: Value not equal)"); };
+ if (!((a->maxTexelOffset) == (b->maxTexelOffset))) { onFail("a->maxTexelOffset (Error: Value not equal)"); };
+ if (!((a->minTexelGatherOffset) == (b->minTexelGatherOffset))) { onFail("a->minTexelGatherOffset (Error: Value not equal)"); };
+ if (!((a->maxTexelGatherOffset) == (b->maxTexelGatherOffset))) { onFail("a->maxTexelGatherOffset (Error: Value not equal)"); };
+ if (!((a->minInterpolationOffset) == (b->minInterpolationOffset))) { onFail("a->minInterpolationOffset (Error: Value not equal)"); };
+ if (!((a->maxInterpolationOffset) == (b->maxInterpolationOffset))) { onFail("a->maxInterpolationOffset (Error: Value not equal)"); };
+ if (!((a->subPixelInterpolationOffsetBits) == (b->subPixelInterpolationOffsetBits))) { onFail("a->subPixelInterpolationOffsetBits (Error: Value not equal)"); };
+ if (!((a->maxFramebufferWidth) == (b->maxFramebufferWidth))) { onFail("a->maxFramebufferWidth (Error: Value not equal)"); };
+ if (!((a->maxFramebufferHeight) == (b->maxFramebufferHeight))) { onFail("a->maxFramebufferHeight (Error: Value not equal)"); };
+ if (!((a->maxFramebufferLayers) == (b->maxFramebufferLayers))) { onFail("a->maxFramebufferLayers (Error: Value not equal)"); };
+ if (!((a->framebufferColorSampleCounts) == (b->framebufferColorSampleCounts))) { onFail("a->framebufferColorSampleCounts (Error: Value not equal)"); };
+ if (!((a->framebufferDepthSampleCounts) == (b->framebufferDepthSampleCounts))) { onFail("a->framebufferDepthSampleCounts (Error: Value not equal)"); };
+ if (!((a->framebufferStencilSampleCounts) == (b->framebufferStencilSampleCounts))) { onFail("a->framebufferStencilSampleCounts (Error: Value not equal)"); };
+ if (!((a->framebufferNoAttachmentsSampleCounts) == (b->framebufferNoAttachmentsSampleCounts))) { onFail("a->framebufferNoAttachmentsSampleCounts (Error: Value not equal)"); };
+ if (!((a->maxColorAttachments) == (b->maxColorAttachments))) { onFail("a->maxColorAttachments (Error: Value not equal)"); };
+ if (!((a->sampledImageColorSampleCounts) == (b->sampledImageColorSampleCounts))) { onFail("a->sampledImageColorSampleCounts (Error: Value not equal)"); };
+ if (!((a->sampledImageIntegerSampleCounts) == (b->sampledImageIntegerSampleCounts))) { onFail("a->sampledImageIntegerSampleCounts (Error: Value not equal)"); };
+ if (!((a->sampledImageDepthSampleCounts) == (b->sampledImageDepthSampleCounts))) { onFail("a->sampledImageDepthSampleCounts (Error: Value not equal)"); };
+ if (!((a->sampledImageStencilSampleCounts) == (b->sampledImageStencilSampleCounts))) { onFail("a->sampledImageStencilSampleCounts (Error: Value not equal)"); };
+ if (!((a->storageImageSampleCounts) == (b->storageImageSampleCounts))) { onFail("a->storageImageSampleCounts (Error: Value not equal)"); };
+ if (!((a->maxSampleMaskWords) == (b->maxSampleMaskWords))) { onFail("a->maxSampleMaskWords (Error: Value not equal)"); };
+ if (!((a->timestampComputeAndGraphics) == (b->timestampComputeAndGraphics))) { onFail("a->timestampComputeAndGraphics (Error: Value not equal)"); };
+ if (!((a->timestampPeriod) == (b->timestampPeriod))) { onFail("a->timestampPeriod (Error: Value not equal)"); };
+ if (!((a->maxClipDistances) == (b->maxClipDistances))) { onFail("a->maxClipDistances (Error: Value not equal)"); };
+ if (!((a->maxCullDistances) == (b->maxCullDistances))) { onFail("a->maxCullDistances (Error: Value not equal)"); };
+ if (!((a->maxCombinedClipAndCullDistances) == (b->maxCombinedClipAndCullDistances))) { onFail("a->maxCombinedClipAndCullDistances (Error: Value not equal)"); };
+ if (!((a->discreteQueuePriorities) == (b->discreteQueuePriorities))) { onFail("a->discreteQueuePriorities (Error: Value not equal)"); };
+ if (!((memcmp(a->pointSizeRange, b->pointSizeRange, 2 * sizeof(float)) == 0))) { onFail("a->pointSizeRange (Error: Unequal static array)"); };
+ if (!((memcmp(a->lineWidthRange, b->lineWidthRange, 2 * sizeof(float)) == 0))) { onFail("a->lineWidthRange (Error: Unequal static array)"); };
+ if (!((a->pointSizeGranularity) == (b->pointSizeGranularity))) { onFail("a->pointSizeGranularity (Error: Value not equal)"); };
+ if (!((a->lineWidthGranularity) == (b->lineWidthGranularity))) { onFail("a->lineWidthGranularity (Error: Value not equal)"); };
+ if (!((a->strictLines) == (b->strictLines))) { onFail("a->strictLines (Error: Value not equal)"); };
+ if (!((a->standardSampleLocations) == (b->standardSampleLocations))) { onFail("a->standardSampleLocations (Error: Value not equal)"); };
+ if (!((a->optimalBufferCopyOffsetAlignment) == (b->optimalBufferCopyOffsetAlignment))) { onFail("a->optimalBufferCopyOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->optimalBufferCopyRowPitchAlignment) == (b->optimalBufferCopyRowPitchAlignment))) { onFail("a->optimalBufferCopyRowPitchAlignment (Error: Value not equal)"); };
+ if (!((a->nonCoherentAtomSize) == (b->nonCoherentAtomSize))) { onFail("a->nonCoherentAtomSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceSparseProperties(
+ const VkPhysicalDeviceSparseProperties* a,
+ const VkPhysicalDeviceSparseProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->residencyStandard2DBlockShape) == (b->residencyStandard2DBlockShape))) { onFail("a->residencyStandard2DBlockShape (Error: Value not equal)"); };
+ if (!((a->residencyStandard2DMultisampleBlockShape) == (b->residencyStandard2DMultisampleBlockShape))) { onFail("a->residencyStandard2DMultisampleBlockShape (Error: Value not equal)"); };
+ if (!((a->residencyStandard3DBlockShape) == (b->residencyStandard3DBlockShape))) { onFail("a->residencyStandard3DBlockShape (Error: Value not equal)"); };
+ if (!((a->residencyAlignedMipSize) == (b->residencyAlignedMipSize))) { onFail("a->residencyAlignedMipSize (Error: Value not equal)"); };
+ if (!((a->residencyNonResidentStrict) == (b->residencyNonResidentStrict))) { onFail("a->residencyNonResidentStrict (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceProperties(
+ const VkPhysicalDeviceProperties* a,
+ const VkPhysicalDeviceProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->apiVersion) == (b->apiVersion))) { onFail("a->apiVersion (Error: Value not equal)"); };
+ if (!((a->driverVersion) == (b->driverVersion))) { onFail("a->driverVersion (Error: Value not equal)"); };
+ if (!((a->vendorID) == (b->vendorID))) { onFail("a->vendorID (Error: Value not equal)"); };
+ if (!((a->deviceID) == (b->deviceID))) { onFail("a->deviceID (Error: Value not equal)"); };
+ if (!((a->deviceType) == (b->deviceType))) { onFail("a->deviceType (Error: Value not equal)"); };
+ if (!((memcmp(a->deviceName, b->deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof(char)) == 0))) { onFail("a->deviceName (Error: Unequal static array)"); };
+ if (!((memcmp(a->pipelineCacheUUID, b->pipelineCacheUUID, VK_UUID_SIZE * sizeof(uint8_t)) == 0))) { onFail("a->pipelineCacheUUID (Error: Unequal static array)"); };
+ checkEqual_VkPhysicalDeviceLimits(&a->limits, &b->limits, onFail);
+ checkEqual_VkPhysicalDeviceSparseProperties(&a->sparseProperties, &b->sparseProperties, onFail);
+}
+
+void checkEqual_VkQueueFamilyProperties(
+ const VkQueueFamilyProperties* a,
+ const VkQueueFamilyProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->queueFlags) == (b->queueFlags))) { onFail("a->queueFlags (Error: Value not equal)"); };
+ if (!((a->queueCount) == (b->queueCount))) { onFail("a->queueCount (Error: Value not equal)"); };
+ if (!((a->timestampValidBits) == (b->timestampValidBits))) { onFail("a->timestampValidBits (Error: Value not equal)"); };
+ checkEqual_VkExtent3D(&a->minImageTransferGranularity, &b->minImageTransferGranularity, onFail);
+}
+
+void checkEqual_VkMemoryType(
+ const VkMemoryType* a,
+ const VkMemoryType* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->propertyFlags) == (b->propertyFlags))) { onFail("a->propertyFlags (Error: Value not equal)"); };
+ if (!((a->heapIndex) == (b->heapIndex))) { onFail("a->heapIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryHeap(
+ const VkMemoryHeap* a,
+ const VkMemoryHeap* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceMemoryProperties(
+ const VkPhysicalDeviceMemoryProperties* a,
+ const VkPhysicalDeviceMemoryProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->memoryTypeCount) == (b->memoryTypeCount))) { onFail("a->memoryTypeCount (Error: Value not equal)"); };
+ if (!((VK_MAX_MEMORY_TYPES) == (VK_MAX_MEMORY_TYPES))) { onFail("a->memoryTypes (Error: Lengths not equal)"); };
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_TYPES; ++i)
+ {
+ checkEqual_VkMemoryType(a->memoryTypes + i, b->memoryTypes + i, onFail);
+ }
+ if (!((a->memoryHeapCount) == (b->memoryHeapCount))) { onFail("a->memoryHeapCount (Error: Value not equal)"); };
+ if (!((VK_MAX_MEMORY_HEAPS) == (VK_MAX_MEMORY_HEAPS))) { onFail("a->memoryHeaps (Error: Lengths not equal)"); };
+ for (uint32_t i = 0; i < (uint32_t)VK_MAX_MEMORY_HEAPS; ++i)
+ {
+ checkEqual_VkMemoryHeap(a->memoryHeaps + i, b->memoryHeaps + i, onFail);
+ }
+}
+
+void checkEqual_VkDeviceQueueCreateInfo(
+ const VkDeviceQueueCreateInfo* a,
+ const VkDeviceQueueCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndex) == (b->queueFamilyIndex))) { onFail("a->queueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->queueCount) == (b->queueCount))) { onFail("a->queueCount (Error: Value not equal)"); };
+ if (!((a->queueCount) == (b->queueCount))) { onFail("a->pQueuePriorities (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pQueuePriorities, b->pQueuePriorities, a->queueCount * sizeof(const float)) == 0))) { onFail("a->pQueuePriorities (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkDeviceCreateInfo(
+ const VkDeviceCreateInfo* a,
+ const VkDeviceCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->queueCreateInfoCount) == (b->queueCreateInfoCount))) { onFail("a->queueCreateInfoCount (Error: Value not equal)"); };
+ if ((a->pQueueCreateInfos) && (b->pQueueCreateInfos))
+ {
+ if (!((a->queueCreateInfoCount) == (b->queueCreateInfoCount))) { onFail("a->pQueueCreateInfos (Error: Lengths not equal)"); };
+ if ((a->queueCreateInfoCount) == (b->queueCreateInfoCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->queueCreateInfoCount; ++i)
+ {
+ checkEqual_VkDeviceQueueCreateInfo(a->pQueueCreateInfos + i, b->pQueueCreateInfos + i, onFail);
+ }
+ }
+ }
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->enabledLayerCount (Error: Value not equal)"); };
+ if (!((!(a->ppEnabledLayerNames) && !(b->ppEnabledLayerNames)) || ((a->ppEnabledLayerNames) && (b->ppEnabledLayerNames)))) { onFail("a->ppEnabledLayerNames (Error: Mismatch in string array pointer nullness)"); };
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->ppEnabledLayerNames (Error: Lengths not equal in string array)"); };
+ if (!((a->enabledLayerCount) == (b->enabledLayerCount))) { onFail("a->ppEnabledLayerNames (Error: Lengths not equal in string array)"); };
+ if ((a->enabledLayerCount) == (b->enabledLayerCount) && (a->ppEnabledLayerNames) && (b->ppEnabledLayerNames))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->enabledLayerCount; ++i)
+ {
+ if (!((strcmp(*(a->ppEnabledLayerNames + i), *(b->ppEnabledLayerNames + i)) == 0))) { onFail("a->ppEnabledLayerNames (Error: Unequal string in string array)"); };
+ }
+ }
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->enabledExtensionCount (Error: Value not equal)"); };
+ if (!((!(a->ppEnabledExtensionNames) && !(b->ppEnabledExtensionNames)) || ((a->ppEnabledExtensionNames) && (b->ppEnabledExtensionNames)))) { onFail("a->ppEnabledExtensionNames (Error: Mismatch in string array pointer nullness)"); };
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->ppEnabledExtensionNames (Error: Lengths not equal in string array)"); };
+ if (!((a->enabledExtensionCount) == (b->enabledExtensionCount))) { onFail("a->ppEnabledExtensionNames (Error: Lengths not equal in string array)"); };
+ if ((a->enabledExtensionCount) == (b->enabledExtensionCount) && (a->ppEnabledExtensionNames) && (b->ppEnabledExtensionNames))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->enabledExtensionCount; ++i)
+ {
+ if (!((strcmp(*(a->ppEnabledExtensionNames + i), *(b->ppEnabledExtensionNames + i)) == 0))) { onFail("a->ppEnabledExtensionNames (Error: Unequal string in string array)"); };
+ }
+ }
+ if (!((!(a->pEnabledFeatures) && !(b->pEnabledFeatures)) || ((a->pEnabledFeatures) && (b->pEnabledFeatures)))) { onFail("a->pEnabledFeatures (Error: Mismatch in optional field)"); };
+ if (a->pEnabledFeatures && b->pEnabledFeatures)
+ {
+ if ((a->pEnabledFeatures) && (b->pEnabledFeatures))
+ {
+ checkEqual_VkPhysicalDeviceFeatures(a->pEnabledFeatures, b->pEnabledFeatures, onFail);
+ }
+ }
+}
+
+void checkEqual_VkExtensionProperties(
+ const VkExtensionProperties* a,
+ const VkExtensionProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((memcmp(a->extensionName, b->extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char)) == 0))) { onFail("a->extensionName (Error: Unequal static array)"); };
+ if (!((a->specVersion) == (b->specVersion))) { onFail("a->specVersion (Error: Value not equal)"); };
+}
+
+void checkEqual_VkLayerProperties(
+ const VkLayerProperties* a,
+ const VkLayerProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((memcmp(a->layerName, b->layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof(char)) == 0))) { onFail("a->layerName (Error: Unequal static array)"); };
+ if (!((a->specVersion) == (b->specVersion))) { onFail("a->specVersion (Error: Value not equal)"); };
+ if (!((a->implementationVersion) == (b->implementationVersion))) { onFail("a->implementationVersion (Error: Value not equal)"); };
+ if (!((memcmp(a->description, b->description, VK_MAX_DESCRIPTION_SIZE * sizeof(char)) == 0))) { onFail("a->description (Error: Unequal static array)"); };
+}
+
+void checkEqual_VkSubmitInfo(
+ const VkSubmitInfo* a,
+ const VkSubmitInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->waitSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->pWaitSemaphores (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitSemaphores, b->pWaitSemaphores, a->waitSemaphoreCount * sizeof(const VkSemaphore)) == 0))) { onFail("a->pWaitSemaphores (Error: Unequal dyn array)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->pWaitDstStageMask (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitDstStageMask, b->pWaitDstStageMask, a->waitSemaphoreCount * sizeof(const VkPipelineStageFlags)) == 0))) { onFail("a->pWaitDstStageMask (Error: Unequal dyn array)"); };
+ if (!((a->commandBufferCount) == (b->commandBufferCount))) { onFail("a->commandBufferCount (Error: Value not equal)"); };
+ if (!((a->commandBufferCount) == (b->commandBufferCount))) { onFail("a->pCommandBuffers (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCommandBuffers, b->pCommandBuffers, a->commandBufferCount * sizeof(const VkCommandBuffer)) == 0))) { onFail("a->pCommandBuffers (Error: Unequal dyn array)"); };
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->signalSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->pSignalSemaphores (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSignalSemaphores, b->pSignalSemaphores, a->signalSemaphoreCount * sizeof(const VkSemaphore)) == 0))) { onFail("a->pSignalSemaphores (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkMemoryAllocateInfo(
+ const VkMemoryAllocateInfo* a,
+ const VkMemoryAllocateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->allocationSize) == (b->allocationSize))) { onFail("a->allocationSize (Error: Value not equal)"); };
+ if (!((a->memoryTypeIndex) == (b->memoryTypeIndex))) { onFail("a->memoryTypeIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMappedMemoryRange(
+ const VkMappedMemoryRange* a,
+ const VkMappedMemoryRange* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryRequirements(
+ const VkMemoryRequirements* a,
+ const VkMemoryRequirements* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+ if (!((a->alignment) == (b->alignment))) { onFail("a->alignment (Error: Value not equal)"); };
+ if (!((a->memoryTypeBits) == (b->memoryTypeBits))) { onFail("a->memoryTypeBits (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseImageFormatProperties(
+ const VkSparseImageFormatProperties* a,
+ const VkSparseImageFormatProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+ checkEqual_VkExtent3D(&a->imageGranularity, &b->imageGranularity, onFail);
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseImageMemoryRequirements(
+ const VkSparseImageMemoryRequirements* a,
+ const VkSparseImageMemoryRequirements* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkSparseImageFormatProperties(&a->formatProperties, &b->formatProperties, onFail);
+ if (!((a->imageMipTailFirstLod) == (b->imageMipTailFirstLod))) { onFail("a->imageMipTailFirstLod (Error: Value not equal)"); };
+ if (!((a->imageMipTailSize) == (b->imageMipTailSize))) { onFail("a->imageMipTailSize (Error: Value not equal)"); };
+ if (!((a->imageMipTailOffset) == (b->imageMipTailOffset))) { onFail("a->imageMipTailOffset (Error: Value not equal)"); };
+ if (!((a->imageMipTailStride) == (b->imageMipTailStride))) { onFail("a->imageMipTailStride (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseMemoryBind(
+ const VkSparseMemoryBind* a,
+ const VkSparseMemoryBind* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->resourceOffset) == (b->resourceOffset))) { onFail("a->resourceOffset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->memoryOffset) == (b->memoryOffset))) { onFail("a->memoryOffset (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseBufferMemoryBindInfo(
+ const VkSparseBufferMemoryBindInfo* a,
+ const VkSparseBufferMemoryBindInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->bindCount (Error: Value not equal)"); };
+ if ((a->pBinds) && (b->pBinds))
+ {
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->pBinds (Error: Lengths not equal)"); };
+ if ((a->bindCount) == (b->bindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->bindCount; ++i)
+ {
+ checkEqual_VkSparseMemoryBind(a->pBinds + i, b->pBinds + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkSparseImageOpaqueMemoryBindInfo(
+ const VkSparseImageOpaqueMemoryBindInfo* a,
+ const VkSparseImageOpaqueMemoryBindInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->bindCount (Error: Value not equal)"); };
+ if ((a->pBinds) && (b->pBinds))
+ {
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->pBinds (Error: Lengths not equal)"); };
+ if ((a->bindCount) == (b->bindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->bindCount; ++i)
+ {
+ checkEqual_VkSparseMemoryBind(a->pBinds + i, b->pBinds + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkImageSubresource(
+ const VkImageSubresource* a,
+ const VkImageSubresource* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+ if (!((a->mipLevel) == (b->mipLevel))) { onFail("a->mipLevel (Error: Value not equal)"); };
+ if (!((a->arrayLayer) == (b->arrayLayer))) { onFail("a->arrayLayer (Error: Value not equal)"); };
+}
+
+void checkEqual_VkOffset3D(
+ const VkOffset3D* a,
+ const VkOffset3D* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+ if (!((a->z) == (b->z))) { onFail("a->z (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseImageMemoryBind(
+ const VkSparseImageMemoryBind* a,
+ const VkSparseImageMemoryBind* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkImageSubresource(&a->subresource, &b->subresource, onFail);
+ checkEqual_VkOffset3D(&a->offset, &b->offset, onFail);
+ checkEqual_VkExtent3D(&a->extent, &b->extent, onFail);
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->memoryOffset) == (b->memoryOffset))) { onFail("a->memoryOffset (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSparseImageMemoryBindInfo(
+ const VkSparseImageMemoryBindInfo* a,
+ const VkSparseImageMemoryBindInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->bindCount (Error: Value not equal)"); };
+ if ((a->pBinds) && (b->pBinds))
+ {
+ if (!((a->bindCount) == (b->bindCount))) { onFail("a->pBinds (Error: Lengths not equal)"); };
+ if ((a->bindCount) == (b->bindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->bindCount; ++i)
+ {
+ checkEqual_VkSparseImageMemoryBind(a->pBinds + i, b->pBinds + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkBindSparseInfo(
+ const VkBindSparseInfo* a,
+ const VkBindSparseInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->waitSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->pWaitSemaphores (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitSemaphores, b->pWaitSemaphores, a->waitSemaphoreCount * sizeof(const VkSemaphore)) == 0))) { onFail("a->pWaitSemaphores (Error: Unequal dyn array)"); };
+ if (!((a->bufferBindCount) == (b->bufferBindCount))) { onFail("a->bufferBindCount (Error: Value not equal)"); };
+ if ((a->pBufferBinds) && (b->pBufferBinds))
+ {
+ if (!((a->bufferBindCount) == (b->bufferBindCount))) { onFail("a->pBufferBinds (Error: Lengths not equal)"); };
+ if ((a->bufferBindCount) == (b->bufferBindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->bufferBindCount; ++i)
+ {
+ checkEqual_VkSparseBufferMemoryBindInfo(a->pBufferBinds + i, b->pBufferBinds + i, onFail);
+ }
+ }
+ }
+ if (!((a->imageOpaqueBindCount) == (b->imageOpaqueBindCount))) { onFail("a->imageOpaqueBindCount (Error: Value not equal)"); };
+ if ((a->pImageOpaqueBinds) && (b->pImageOpaqueBinds))
+ {
+ if (!((a->imageOpaqueBindCount) == (b->imageOpaqueBindCount))) { onFail("a->pImageOpaqueBinds (Error: Lengths not equal)"); };
+ if ((a->imageOpaqueBindCount) == (b->imageOpaqueBindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->imageOpaqueBindCount; ++i)
+ {
+ checkEqual_VkSparseImageOpaqueMemoryBindInfo(a->pImageOpaqueBinds + i, b->pImageOpaqueBinds + i, onFail);
+ }
+ }
+ }
+ if (!((a->imageBindCount) == (b->imageBindCount))) { onFail("a->imageBindCount (Error: Value not equal)"); };
+ if ((a->pImageBinds) && (b->pImageBinds))
+ {
+ if (!((a->imageBindCount) == (b->imageBindCount))) { onFail("a->pImageBinds (Error: Lengths not equal)"); };
+ if ((a->imageBindCount) == (b->imageBindCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->imageBindCount; ++i)
+ {
+ checkEqual_VkSparseImageMemoryBindInfo(a->pImageBinds + i, b->pImageBinds + i, onFail);
+ }
+ }
+ }
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->signalSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->pSignalSemaphores (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSignalSemaphores, b->pSignalSemaphores, a->signalSemaphoreCount * sizeof(const VkSemaphore)) == 0))) { onFail("a->pSignalSemaphores (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkFenceCreateInfo(
+ const VkFenceCreateInfo* a,
+ const VkFenceCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSemaphoreCreateInfo(
+ const VkSemaphoreCreateInfo* a,
+ const VkSemaphoreCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkEventCreateInfo(
+ const VkEventCreateInfo* a,
+ const VkEventCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkQueryPoolCreateInfo(
+ const VkQueryPoolCreateInfo* a,
+ const VkQueryPoolCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->queryType) == (b->queryType))) { onFail("a->queryType (Error: Value not equal)"); };
+ if (!((a->queryCount) == (b->queryCount))) { onFail("a->queryCount (Error: Value not equal)"); };
+ if (!((a->pipelineStatistics) == (b->pipelineStatistics))) { onFail("a->pipelineStatistics (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBufferCreateInfo(
+ const VkBufferCreateInfo* a,
+ const VkBufferCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+ if (!((a->sharingMode) == (b->sharingMode))) { onFail("a->sharingMode (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->queueFamilyIndexCount (Error: Value not equal)"); };
+ if (!((!(a->pQueueFamilyIndices) && !(b->pQueueFamilyIndices)) || ((a->pQueueFamilyIndices) && (b->pQueueFamilyIndices)))) { onFail("a->pQueueFamilyIndices (Error: Mismatch in optional field)"); };
+ if (a->pQueueFamilyIndices && b->pQueueFamilyIndices)
+ {
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->pQueueFamilyIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pQueueFamilyIndices, b->pQueueFamilyIndices, a->queueFamilyIndexCount * sizeof(const uint32_t)) == 0))) { onFail("a->pQueueFamilyIndices (Error: Unequal dyn array)"); };
+ }
+}
+
+void checkEqual_VkBufferViewCreateInfo(
+ const VkBufferViewCreateInfo* a,
+ const VkBufferViewCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->range) == (b->range))) { onFail("a->range (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageCreateInfo(
+ const VkImageCreateInfo* a,
+ const VkImageCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->imageType) == (b->imageType))) { onFail("a->imageType (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ checkEqual_VkExtent3D(&a->extent, &b->extent, onFail);
+ if (!((a->mipLevels) == (b->mipLevels))) { onFail("a->mipLevels (Error: Value not equal)"); };
+ if (!((a->arrayLayers) == (b->arrayLayers))) { onFail("a->arrayLayers (Error: Value not equal)"); };
+ if (!((a->samples) == (b->samples))) { onFail("a->samples (Error: Value not equal)"); };
+ if (!((a->tiling) == (b->tiling))) { onFail("a->tiling (Error: Value not equal)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+ if (!((a->sharingMode) == (b->sharingMode))) { onFail("a->sharingMode (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->queueFamilyIndexCount (Error: Value not equal)"); };
+ if (!((!(a->pQueueFamilyIndices) && !(b->pQueueFamilyIndices)) || ((a->pQueueFamilyIndices) && (b->pQueueFamilyIndices)))) { onFail("a->pQueueFamilyIndices (Error: Mismatch in optional field)"); };
+ if (a->pQueueFamilyIndices && b->pQueueFamilyIndices)
+ {
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->pQueueFamilyIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pQueueFamilyIndices, b->pQueueFamilyIndices, a->queueFamilyIndexCount * sizeof(const uint32_t)) == 0))) { onFail("a->pQueueFamilyIndices (Error: Unequal dyn array)"); };
+ }
+ if (!((a->initialLayout) == (b->initialLayout))) { onFail("a->initialLayout (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSubresourceLayout(
+ const VkSubresourceLayout* a,
+ const VkSubresourceLayout* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+ if (!((a->rowPitch) == (b->rowPitch))) { onFail("a->rowPitch (Error: Value not equal)"); };
+ if (!((a->arrayPitch) == (b->arrayPitch))) { onFail("a->arrayPitch (Error: Value not equal)"); };
+ if (!((a->depthPitch) == (b->depthPitch))) { onFail("a->depthPitch (Error: Value not equal)"); };
+}
+
+void checkEqual_VkComponentMapping(
+ const VkComponentMapping* a,
+ const VkComponentMapping* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->r) == (b->r))) { onFail("a->r (Error: Value not equal)"); };
+ if (!((a->g) == (b->g))) { onFail("a->g (Error: Value not equal)"); };
+ if (!((a->b) == (b->b))) { onFail("a->b (Error: Value not equal)"); };
+ if (!((a->a) == (b->a))) { onFail("a->a (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageSubresourceRange(
+ const VkImageSubresourceRange* a,
+ const VkImageSubresourceRange* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+ if (!((a->baseMipLevel) == (b->baseMipLevel))) { onFail("a->baseMipLevel (Error: Value not equal)"); };
+ if (!((a->levelCount) == (b->levelCount))) { onFail("a->levelCount (Error: Value not equal)"); };
+ if (!((a->baseArrayLayer) == (b->baseArrayLayer))) { onFail("a->baseArrayLayer (Error: Value not equal)"); };
+ if (!((a->layerCount) == (b->layerCount))) { onFail("a->layerCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageViewCreateInfo(
+ const VkImageViewCreateInfo* a,
+ const VkImageViewCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->viewType) == (b->viewType))) { onFail("a->viewType (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ checkEqual_VkComponentMapping(&a->components, &b->components, onFail);
+ checkEqual_VkImageSubresourceRange(&a->subresourceRange, &b->subresourceRange, onFail);
+}
+
+void checkEqual_VkShaderModuleCreateInfo(
+ const VkShaderModuleCreateInfo* a,
+ const VkShaderModuleCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->codeSize) == (b->codeSize))) { onFail("a->codeSize (Error: Value not equal)"); };
+ if (!(((a->codeSize / 4)) == ((b->codeSize / 4)))) { onFail("a->pCode (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCode, b->pCode, (a->codeSize / 4) * sizeof(const uint32_t)) == 0))) { onFail("a->pCode (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkPipelineCacheCreateInfo(
+ const VkPipelineCacheCreateInfo* a,
+ const VkPipelineCacheCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->initialDataSize) == (b->initialDataSize))) { onFail("a->initialDataSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSpecializationMapEntry(
+ const VkSpecializationMapEntry* a,
+ const VkSpecializationMapEntry* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->constantID) == (b->constantID))) { onFail("a->constantID (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSpecializationInfo(
+ const VkSpecializationInfo* a,
+ const VkSpecializationInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->mapEntryCount) == (b->mapEntryCount))) { onFail("a->mapEntryCount (Error: Value not equal)"); };
+ if ((a->pMapEntries) && (b->pMapEntries))
+ {
+ if (!((a->mapEntryCount) == (b->mapEntryCount))) { onFail("a->pMapEntries (Error: Lengths not equal)"); };
+ if ((a->mapEntryCount) == (b->mapEntryCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->mapEntryCount; ++i)
+ {
+ checkEqual_VkSpecializationMapEntry(a->pMapEntries + i, b->pMapEntries + i, onFail);
+ }
+ }
+ }
+ if (!((a->dataSize) == (b->dataSize))) { onFail("a->dataSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineShaderStageCreateInfo(
+ const VkPipelineShaderStageCreateInfo* a,
+ const VkPipelineShaderStageCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->stage) == (b->stage))) { onFail("a->stage (Error: Value not equal)"); };
+ if (!((a->module) == (b->module))) { onFail("a->module (Error: Value not equal)"); };
+ if (!((!(a->pName) && !(b->pName)) || ((a->pName) && (b->pName)))) { onFail("a->pName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pName) && (b->pName))
+ {
+ if (!((strcmp(a->pName, b->pName) == 0))) { onFail("a->pName (Error: Unequal strings)"); };
+ }
+ if (!((!(a->pSpecializationInfo) && !(b->pSpecializationInfo)) || ((a->pSpecializationInfo) && (b->pSpecializationInfo)))) { onFail("a->pSpecializationInfo (Error: Mismatch in optional field)"); };
+ if (a->pSpecializationInfo && b->pSpecializationInfo)
+ {
+ if ((a->pSpecializationInfo) && (b->pSpecializationInfo))
+ {
+ checkEqual_VkSpecializationInfo(a->pSpecializationInfo, b->pSpecializationInfo, onFail);
+ }
+ }
+}
+
+void checkEqual_VkVertexInputBindingDescription(
+ const VkVertexInputBindingDescription* a,
+ const VkVertexInputBindingDescription* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->binding) == (b->binding))) { onFail("a->binding (Error: Value not equal)"); };
+ if (!((a->stride) == (b->stride))) { onFail("a->stride (Error: Value not equal)"); };
+ if (!((a->inputRate) == (b->inputRate))) { onFail("a->inputRate (Error: Value not equal)"); };
+}
+
+void checkEqual_VkVertexInputAttributeDescription(
+ const VkVertexInputAttributeDescription* a,
+ const VkVertexInputAttributeDescription* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->location) == (b->location))) { onFail("a->location (Error: Value not equal)"); };
+ if (!((a->binding) == (b->binding))) { onFail("a->binding (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineVertexInputStateCreateInfo(
+ const VkPipelineVertexInputStateCreateInfo* a,
+ const VkPipelineVertexInputStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->vertexBindingDescriptionCount) == (b->vertexBindingDescriptionCount))) { onFail("a->vertexBindingDescriptionCount (Error: Value not equal)"); };
+ if ((a->pVertexBindingDescriptions) && (b->pVertexBindingDescriptions))
+ {
+ if (!((a->vertexBindingDescriptionCount) == (b->vertexBindingDescriptionCount))) { onFail("a->pVertexBindingDescriptions (Error: Lengths not equal)"); };
+ if ((a->vertexBindingDescriptionCount) == (b->vertexBindingDescriptionCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->vertexBindingDescriptionCount; ++i)
+ {
+ checkEqual_VkVertexInputBindingDescription(a->pVertexBindingDescriptions + i, b->pVertexBindingDescriptions + i, onFail);
+ }
+ }
+ }
+ if (!((a->vertexAttributeDescriptionCount) == (b->vertexAttributeDescriptionCount))) { onFail("a->vertexAttributeDescriptionCount (Error: Value not equal)"); };
+ if ((a->pVertexAttributeDescriptions) && (b->pVertexAttributeDescriptions))
+ {
+ if (!((a->vertexAttributeDescriptionCount) == (b->vertexAttributeDescriptionCount))) { onFail("a->pVertexAttributeDescriptions (Error: Lengths not equal)"); };
+ if ((a->vertexAttributeDescriptionCount) == (b->vertexAttributeDescriptionCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->vertexAttributeDescriptionCount; ++i)
+ {
+ checkEqual_VkVertexInputAttributeDescription(a->pVertexAttributeDescriptions + i, b->pVertexAttributeDescriptions + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkPipelineInputAssemblyStateCreateInfo(
+ const VkPipelineInputAssemblyStateCreateInfo* a,
+ const VkPipelineInputAssemblyStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->topology) == (b->topology))) { onFail("a->topology (Error: Value not equal)"); };
+ if (!((a->primitiveRestartEnable) == (b->primitiveRestartEnable))) { onFail("a->primitiveRestartEnable (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineTessellationStateCreateInfo(
+ const VkPipelineTessellationStateCreateInfo* a,
+ const VkPipelineTessellationStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->patchControlPoints) == (b->patchControlPoints))) { onFail("a->patchControlPoints (Error: Value not equal)"); };
+}
+
+void checkEqual_VkViewport(
+ const VkViewport* a,
+ const VkViewport* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+ if (!((a->width) == (b->width))) { onFail("a->width (Error: Value not equal)"); };
+ if (!((a->height) == (b->height))) { onFail("a->height (Error: Value not equal)"); };
+ if (!((a->minDepth) == (b->minDepth))) { onFail("a->minDepth (Error: Value not equal)"); };
+ if (!((a->maxDepth) == (b->maxDepth))) { onFail("a->maxDepth (Error: Value not equal)"); };
+}
+
+void checkEqual_VkOffset2D(
+ const VkOffset2D* a,
+ const VkOffset2D* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExtent2D(
+ const VkExtent2D* a,
+ const VkExtent2D* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->width) == (b->width))) { onFail("a->width (Error: Value not equal)"); };
+ if (!((a->height) == (b->height))) { onFail("a->height (Error: Value not equal)"); };
+}
+
+void checkEqual_VkRect2D(
+ const VkRect2D* a,
+ const VkRect2D* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkOffset2D(&a->offset, &b->offset, onFail);
+ checkEqual_VkExtent2D(&a->extent, &b->extent, onFail);
+}
+
+void checkEqual_VkPipelineViewportStateCreateInfo(
+ const VkPipelineViewportStateCreateInfo* a,
+ const VkPipelineViewportStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->viewportCount (Error: Value not equal)"); };
+ if (!((!(a->pViewports) && !(b->pViewports)) || ((a->pViewports) && (b->pViewports)))) { onFail("a->pViewports (Error: Mismatch in optional field)"); };
+ if (a->pViewports && b->pViewports)
+ {
+ if ((a->pViewports) && (b->pViewports))
+ {
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->pViewports (Error: Lengths not equal)"); };
+ if ((a->viewportCount) == (b->viewportCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->viewportCount; ++i)
+ {
+ checkEqual_VkViewport(a->pViewports + i, b->pViewports + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((a->scissorCount) == (b->scissorCount))) { onFail("a->scissorCount (Error: Value not equal)"); };
+ if (!((!(a->pScissors) && !(b->pScissors)) || ((a->pScissors) && (b->pScissors)))) { onFail("a->pScissors (Error: Mismatch in optional field)"); };
+ if (a->pScissors && b->pScissors)
+ {
+ if ((a->pScissors) && (b->pScissors))
+ {
+ if (!((a->scissorCount) == (b->scissorCount))) { onFail("a->pScissors (Error: Lengths not equal)"); };
+ if ((a->scissorCount) == (b->scissorCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->scissorCount; ++i)
+ {
+ checkEqual_VkRect2D(a->pScissors + i, b->pScissors + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+void checkEqual_VkPipelineRasterizationStateCreateInfo(
+ const VkPipelineRasterizationStateCreateInfo* a,
+ const VkPipelineRasterizationStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->depthClampEnable) == (b->depthClampEnable))) { onFail("a->depthClampEnable (Error: Value not equal)"); };
+ if (!((a->rasterizerDiscardEnable) == (b->rasterizerDiscardEnable))) { onFail("a->rasterizerDiscardEnable (Error: Value not equal)"); };
+ if (!((a->polygonMode) == (b->polygonMode))) { onFail("a->polygonMode (Error: Value not equal)"); };
+ if (!((a->cullMode) == (b->cullMode))) { onFail("a->cullMode (Error: Value not equal)"); };
+ if (!((a->frontFace) == (b->frontFace))) { onFail("a->frontFace (Error: Value not equal)"); };
+ if (!((a->depthBiasEnable) == (b->depthBiasEnable))) { onFail("a->depthBiasEnable (Error: Value not equal)"); };
+ if (!((a->depthBiasConstantFactor) == (b->depthBiasConstantFactor))) { onFail("a->depthBiasConstantFactor (Error: Value not equal)"); };
+ if (!((a->depthBiasClamp) == (b->depthBiasClamp))) { onFail("a->depthBiasClamp (Error: Value not equal)"); };
+ if (!((a->depthBiasSlopeFactor) == (b->depthBiasSlopeFactor))) { onFail("a->depthBiasSlopeFactor (Error: Value not equal)"); };
+ if (!((a->lineWidth) == (b->lineWidth))) { onFail("a->lineWidth (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineMultisampleStateCreateInfo(
+ const VkPipelineMultisampleStateCreateInfo* a,
+ const VkPipelineMultisampleStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->rasterizationSamples) == (b->rasterizationSamples))) { onFail("a->rasterizationSamples (Error: Value not equal)"); };
+ if (!((a->sampleShadingEnable) == (b->sampleShadingEnable))) { onFail("a->sampleShadingEnable (Error: Value not equal)"); };
+ if (!((a->minSampleShading) == (b->minSampleShading))) { onFail("a->minSampleShading (Error: Value not equal)"); };
+ if (!((!(a->pSampleMask) && !(b->pSampleMask)) || ((a->pSampleMask) && (b->pSampleMask)))) { onFail("a->pSampleMask (Error: Mismatch in optional field)"); };
+ if (a->pSampleMask && b->pSampleMask)
+ {
+ if (!(((((a->rasterizationSamples) + 31) / 32)) == ((((b->rasterizationSamples) + 31) / 32)))) { onFail("a->pSampleMask (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSampleMask, b->pSampleMask, (((a->rasterizationSamples) + 31) / 32) * sizeof(const VkSampleMask)) == 0))) { onFail("a->pSampleMask (Error: Unequal dyn array)"); };
+ }
+ if (!((a->alphaToCoverageEnable) == (b->alphaToCoverageEnable))) { onFail("a->alphaToCoverageEnable (Error: Value not equal)"); };
+ if (!((a->alphaToOneEnable) == (b->alphaToOneEnable))) { onFail("a->alphaToOneEnable (Error: Value not equal)"); };
+}
+
+void checkEqual_VkStencilOpState(
+ const VkStencilOpState* a,
+ const VkStencilOpState* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->failOp) == (b->failOp))) { onFail("a->failOp (Error: Value not equal)"); };
+ if (!((a->passOp) == (b->passOp))) { onFail("a->passOp (Error: Value not equal)"); };
+ if (!((a->depthFailOp) == (b->depthFailOp))) { onFail("a->depthFailOp (Error: Value not equal)"); };
+ if (!((a->compareOp) == (b->compareOp))) { onFail("a->compareOp (Error: Value not equal)"); };
+ if (!((a->compareMask) == (b->compareMask))) { onFail("a->compareMask (Error: Value not equal)"); };
+ if (!((a->writeMask) == (b->writeMask))) { onFail("a->writeMask (Error: Value not equal)"); };
+ if (!((a->reference) == (b->reference))) { onFail("a->reference (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineDepthStencilStateCreateInfo(
+ const VkPipelineDepthStencilStateCreateInfo* a,
+ const VkPipelineDepthStencilStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->depthTestEnable) == (b->depthTestEnable))) { onFail("a->depthTestEnable (Error: Value not equal)"); };
+ if (!((a->depthWriteEnable) == (b->depthWriteEnable))) { onFail("a->depthWriteEnable (Error: Value not equal)"); };
+ if (!((a->depthCompareOp) == (b->depthCompareOp))) { onFail("a->depthCompareOp (Error: Value not equal)"); };
+ if (!((a->depthBoundsTestEnable) == (b->depthBoundsTestEnable))) { onFail("a->depthBoundsTestEnable (Error: Value not equal)"); };
+ if (!((a->stencilTestEnable) == (b->stencilTestEnable))) { onFail("a->stencilTestEnable (Error: Value not equal)"); };
+ checkEqual_VkStencilOpState(&a->front, &b->front, onFail);
+ checkEqual_VkStencilOpState(&a->back, &b->back, onFail);
+ if (!((a->minDepthBounds) == (b->minDepthBounds))) { onFail("a->minDepthBounds (Error: Value not equal)"); };
+ if (!((a->maxDepthBounds) == (b->maxDepthBounds))) { onFail("a->maxDepthBounds (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineColorBlendAttachmentState(
+ const VkPipelineColorBlendAttachmentState* a,
+ const VkPipelineColorBlendAttachmentState* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->blendEnable) == (b->blendEnable))) { onFail("a->blendEnable (Error: Value not equal)"); };
+ if (!((a->srcColorBlendFactor) == (b->srcColorBlendFactor))) { onFail("a->srcColorBlendFactor (Error: Value not equal)"); };
+ if (!((a->dstColorBlendFactor) == (b->dstColorBlendFactor))) { onFail("a->dstColorBlendFactor (Error: Value not equal)"); };
+ if (!((a->colorBlendOp) == (b->colorBlendOp))) { onFail("a->colorBlendOp (Error: Value not equal)"); };
+ if (!((a->srcAlphaBlendFactor) == (b->srcAlphaBlendFactor))) { onFail("a->srcAlphaBlendFactor (Error: Value not equal)"); };
+ if (!((a->dstAlphaBlendFactor) == (b->dstAlphaBlendFactor))) { onFail("a->dstAlphaBlendFactor (Error: Value not equal)"); };
+ if (!((a->alphaBlendOp) == (b->alphaBlendOp))) { onFail("a->alphaBlendOp (Error: Value not equal)"); };
+ if (!((a->colorWriteMask) == (b->colorWriteMask))) { onFail("a->colorWriteMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineColorBlendStateCreateInfo(
+ const VkPipelineColorBlendStateCreateInfo* a,
+ const VkPipelineColorBlendStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->logicOpEnable) == (b->logicOpEnable))) { onFail("a->logicOpEnable (Error: Value not equal)"); };
+ if (!((a->logicOp) == (b->logicOp))) { onFail("a->logicOp (Error: Value not equal)"); };
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->attachmentCount (Error: Value not equal)"); };
+ if ((a->pAttachments) && (b->pAttachments))
+ {
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->pAttachments (Error: Lengths not equal)"); };
+ if ((a->attachmentCount) == (b->attachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->attachmentCount; ++i)
+ {
+ checkEqual_VkPipelineColorBlendAttachmentState(a->pAttachments + i, b->pAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((memcmp(a->blendConstants, b->blendConstants, 4 * sizeof(float)) == 0))) { onFail("a->blendConstants (Error: Unequal static array)"); };
+}
+
+void checkEqual_VkPipelineDynamicStateCreateInfo(
+ const VkPipelineDynamicStateCreateInfo* a,
+ const VkPipelineDynamicStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->dynamicStateCount) == (b->dynamicStateCount))) { onFail("a->dynamicStateCount (Error: Value not equal)"); };
+ if (!((a->dynamicStateCount) == (b->dynamicStateCount))) { onFail("a->pDynamicStates (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDynamicStates, b->pDynamicStates, a->dynamicStateCount * sizeof(const VkDynamicState)) == 0))) { onFail("a->pDynamicStates (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkGraphicsPipelineCreateInfo(
+ const VkGraphicsPipelineCreateInfo* a,
+ const VkGraphicsPipelineCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->stageCount) == (b->stageCount))) { onFail("a->stageCount (Error: Value not equal)"); };
+ if ((a->pStages) && (b->pStages))
+ {
+ if (!((a->stageCount) == (b->stageCount))) { onFail("a->pStages (Error: Lengths not equal)"); };
+ if ((a->stageCount) == (b->stageCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->stageCount; ++i)
+ {
+ checkEqual_VkPipelineShaderStageCreateInfo(a->pStages + i, b->pStages + i, onFail);
+ }
+ }
+ }
+ if ((a->pVertexInputState) && (b->pVertexInputState))
+ {
+ checkEqual_VkPipelineVertexInputStateCreateInfo(a->pVertexInputState, b->pVertexInputState, onFail);
+ }
+ if ((a->pInputAssemblyState) && (b->pInputAssemblyState))
+ {
+ checkEqual_VkPipelineInputAssemblyStateCreateInfo(a->pInputAssemblyState, b->pInputAssemblyState, onFail);
+ }
+ if (!((!(a->pTessellationState) && !(b->pTessellationState)) || ((a->pTessellationState) && (b->pTessellationState)))) { onFail("a->pTessellationState (Error: Mismatch in optional field)"); };
+ if (a->pTessellationState && b->pTessellationState)
+ {
+ if ((a->pTessellationState) && (b->pTessellationState))
+ {
+ checkEqual_VkPipelineTessellationStateCreateInfo(a->pTessellationState, b->pTessellationState, onFail);
+ }
+ }
+ if (!((!(a->pViewportState) && !(b->pViewportState)) || ((a->pViewportState) && (b->pViewportState)))) { onFail("a->pViewportState (Error: Mismatch in optional field)"); };
+ if (a->pViewportState && b->pViewportState)
+ {
+ if ((a->pViewportState) && (b->pViewportState))
+ {
+ checkEqual_VkPipelineViewportStateCreateInfo(a->pViewportState, b->pViewportState, onFail);
+ }
+ }
+ if ((a->pRasterizationState) && (b->pRasterizationState))
+ {
+ checkEqual_VkPipelineRasterizationStateCreateInfo(a->pRasterizationState, b->pRasterizationState, onFail);
+ }
+ if (!((!(a->pMultisampleState) && !(b->pMultisampleState)) || ((a->pMultisampleState) && (b->pMultisampleState)))) { onFail("a->pMultisampleState (Error: Mismatch in optional field)"); };
+ if (a->pMultisampleState && b->pMultisampleState)
+ {
+ if ((a->pMultisampleState) && (b->pMultisampleState))
+ {
+ checkEqual_VkPipelineMultisampleStateCreateInfo(a->pMultisampleState, b->pMultisampleState, onFail);
+ }
+ }
+ if (!((!(a->pDepthStencilState) && !(b->pDepthStencilState)) || ((a->pDepthStencilState) && (b->pDepthStencilState)))) { onFail("a->pDepthStencilState (Error: Mismatch in optional field)"); };
+ if (a->pDepthStencilState && b->pDepthStencilState)
+ {
+ if ((a->pDepthStencilState) && (b->pDepthStencilState))
+ {
+ checkEqual_VkPipelineDepthStencilStateCreateInfo(a->pDepthStencilState, b->pDepthStencilState, onFail);
+ }
+ }
+ if (!((!(a->pColorBlendState) && !(b->pColorBlendState)) || ((a->pColorBlendState) && (b->pColorBlendState)))) { onFail("a->pColorBlendState (Error: Mismatch in optional field)"); };
+ if (a->pColorBlendState && b->pColorBlendState)
+ {
+ if ((a->pColorBlendState) && (b->pColorBlendState))
+ {
+ checkEqual_VkPipelineColorBlendStateCreateInfo(a->pColorBlendState, b->pColorBlendState, onFail);
+ }
+ }
+ if (!((!(a->pDynamicState) && !(b->pDynamicState)) || ((a->pDynamicState) && (b->pDynamicState)))) { onFail("a->pDynamicState (Error: Mismatch in optional field)"); };
+ if (a->pDynamicState && b->pDynamicState)
+ {
+ if ((a->pDynamicState) && (b->pDynamicState))
+ {
+ checkEqual_VkPipelineDynamicStateCreateInfo(a->pDynamicState, b->pDynamicState, onFail);
+ }
+ }
+ if (!((a->layout) == (b->layout))) { onFail("a->layout (Error: Value not equal)"); };
+ if (!((a->renderPass) == (b->renderPass))) { onFail("a->renderPass (Error: Value not equal)"); };
+ if (!((a->subpass) == (b->subpass))) { onFail("a->subpass (Error: Value not equal)"); };
+ if (!((a->basePipelineHandle) == (b->basePipelineHandle))) { onFail("a->basePipelineHandle (Error: Value not equal)"); };
+ if (!((a->basePipelineIndex) == (b->basePipelineIndex))) { onFail("a->basePipelineIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkComputePipelineCreateInfo(
+ const VkComputePipelineCreateInfo* a,
+ const VkComputePipelineCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ checkEqual_VkPipelineShaderStageCreateInfo(&a->stage, &b->stage, onFail);
+ if (!((a->layout) == (b->layout))) { onFail("a->layout (Error: Value not equal)"); };
+ if (!((a->basePipelineHandle) == (b->basePipelineHandle))) { onFail("a->basePipelineHandle (Error: Value not equal)"); };
+ if (!((a->basePipelineIndex) == (b->basePipelineIndex))) { onFail("a->basePipelineIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPushConstantRange(
+ const VkPushConstantRange* a,
+ const VkPushConstantRange* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->stageFlags) == (b->stageFlags))) { onFail("a->stageFlags (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineLayoutCreateInfo(
+ const VkPipelineLayoutCreateInfo* a,
+ const VkPipelineLayoutCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->setLayoutCount) == (b->setLayoutCount))) { onFail("a->setLayoutCount (Error: Value not equal)"); };
+ if (!((a->setLayoutCount) == (b->setLayoutCount))) { onFail("a->pSetLayouts (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSetLayouts, b->pSetLayouts, a->setLayoutCount * sizeof(const VkDescriptorSetLayout)) == 0))) { onFail("a->pSetLayouts (Error: Unequal dyn array)"); };
+ if (!((a->pushConstantRangeCount) == (b->pushConstantRangeCount))) { onFail("a->pushConstantRangeCount (Error: Value not equal)"); };
+ if ((a->pPushConstantRanges) && (b->pPushConstantRanges))
+ {
+ if (!((a->pushConstantRangeCount) == (b->pushConstantRangeCount))) { onFail("a->pPushConstantRanges (Error: Lengths not equal)"); };
+ if ((a->pushConstantRangeCount) == (b->pushConstantRangeCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->pushConstantRangeCount; ++i)
+ {
+ checkEqual_VkPushConstantRange(a->pPushConstantRanges + i, b->pPushConstantRanges + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkSamplerCreateInfo(
+ const VkSamplerCreateInfo* a,
+ const VkSamplerCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->magFilter) == (b->magFilter))) { onFail("a->magFilter (Error: Value not equal)"); };
+ if (!((a->minFilter) == (b->minFilter))) { onFail("a->minFilter (Error: Value not equal)"); };
+ if (!((a->mipmapMode) == (b->mipmapMode))) { onFail("a->mipmapMode (Error: Value not equal)"); };
+ if (!((a->addressModeU) == (b->addressModeU))) { onFail("a->addressModeU (Error: Value not equal)"); };
+ if (!((a->addressModeV) == (b->addressModeV))) { onFail("a->addressModeV (Error: Value not equal)"); };
+ if (!((a->addressModeW) == (b->addressModeW))) { onFail("a->addressModeW (Error: Value not equal)"); };
+ if (!((a->mipLodBias) == (b->mipLodBias))) { onFail("a->mipLodBias (Error: Value not equal)"); };
+ if (!((a->anisotropyEnable) == (b->anisotropyEnable))) { onFail("a->anisotropyEnable (Error: Value not equal)"); };
+ if (!((a->maxAnisotropy) == (b->maxAnisotropy))) { onFail("a->maxAnisotropy (Error: Value not equal)"); };
+ if (!((a->compareEnable) == (b->compareEnable))) { onFail("a->compareEnable (Error: Value not equal)"); };
+ if (!((a->compareOp) == (b->compareOp))) { onFail("a->compareOp (Error: Value not equal)"); };
+ if (!((a->minLod) == (b->minLod))) { onFail("a->minLod (Error: Value not equal)"); };
+ if (!((a->maxLod) == (b->maxLod))) { onFail("a->maxLod (Error: Value not equal)"); };
+ if (!((a->borderColor) == (b->borderColor))) { onFail("a->borderColor (Error: Value not equal)"); };
+ if (!((a->unnormalizedCoordinates) == (b->unnormalizedCoordinates))) { onFail("a->unnormalizedCoordinates (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorSetLayoutBinding(
+ const VkDescriptorSetLayoutBinding* a,
+ const VkDescriptorSetLayoutBinding* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->binding) == (b->binding))) { onFail("a->binding (Error: Value not equal)"); };
+ if (!((a->descriptorType) == (b->descriptorType))) { onFail("a->descriptorType (Error: Value not equal)"); };
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->descriptorCount (Error: Value not equal)"); };
+ if (!((a->stageFlags) == (b->stageFlags))) { onFail("a->stageFlags (Error: Value not equal)"); };
+ if (!((!(a->pImmutableSamplers) && !(b->pImmutableSamplers)) || ((a->pImmutableSamplers) && (b->pImmutableSamplers)))) { onFail("a->pImmutableSamplers (Error: Mismatch in optional field)"); };
+ if (a->pImmutableSamplers && b->pImmutableSamplers)
+ {
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->pImmutableSamplers (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pImmutableSamplers, b->pImmutableSamplers, a->descriptorCount * sizeof(const VkSampler)) == 0))) { onFail("a->pImmutableSamplers (Error: Unequal dyn array)"); };
+ }
+}
+
+void checkEqual_VkDescriptorSetLayoutCreateInfo(
+ const VkDescriptorSetLayoutCreateInfo* a,
+ const VkDescriptorSetLayoutCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->bindingCount) == (b->bindingCount))) { onFail("a->bindingCount (Error: Value not equal)"); };
+ if ((a->pBindings) && (b->pBindings))
+ {
+ if (!((a->bindingCount) == (b->bindingCount))) { onFail("a->pBindings (Error: Lengths not equal)"); };
+ if ((a->bindingCount) == (b->bindingCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->bindingCount; ++i)
+ {
+ checkEqual_VkDescriptorSetLayoutBinding(a->pBindings + i, b->pBindings + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkDescriptorPoolSize(
+ const VkDescriptorPoolSize* a,
+ const VkDescriptorPoolSize* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->descriptorCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorPoolCreateInfo(
+ const VkDescriptorPoolCreateInfo* a,
+ const VkDescriptorPoolCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->maxSets) == (b->maxSets))) { onFail("a->maxSets (Error: Value not equal)"); };
+ if (!((a->poolSizeCount) == (b->poolSizeCount))) { onFail("a->poolSizeCount (Error: Value not equal)"); };
+ if ((a->pPoolSizes) && (b->pPoolSizes))
+ {
+ if (!((a->poolSizeCount) == (b->poolSizeCount))) { onFail("a->pPoolSizes (Error: Lengths not equal)"); };
+ if ((a->poolSizeCount) == (b->poolSizeCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->poolSizeCount; ++i)
+ {
+ checkEqual_VkDescriptorPoolSize(a->pPoolSizes + i, b->pPoolSizes + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkDescriptorSetAllocateInfo(
+ const VkDescriptorSetAllocateInfo* a,
+ const VkDescriptorSetAllocateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->descriptorPool) == (b->descriptorPool))) { onFail("a->descriptorPool (Error: Value not equal)"); };
+ if (!((a->descriptorSetCount) == (b->descriptorSetCount))) { onFail("a->descriptorSetCount (Error: Value not equal)"); };
+ if (!((a->descriptorSetCount) == (b->descriptorSetCount))) { onFail("a->pSetLayouts (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSetLayouts, b->pSetLayouts, a->descriptorSetCount * sizeof(const VkDescriptorSetLayout)) == 0))) { onFail("a->pSetLayouts (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkDescriptorImageInfo(
+ const VkDescriptorImageInfo* a,
+ const VkDescriptorImageInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sampler) == (b->sampler))) { onFail("a->sampler (Error: Value not equal)"); };
+ if (!((a->imageView) == (b->imageView))) { onFail("a->imageView (Error: Value not equal)"); };
+ if (!((a->imageLayout) == (b->imageLayout))) { onFail("a->imageLayout (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorBufferInfo(
+ const VkDescriptorBufferInfo* a,
+ const VkDescriptorBufferInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->range) == (b->range))) { onFail("a->range (Error: Value not equal)"); };
+}
+
+void checkEqual_VkWriteDescriptorSet(
+ const VkWriteDescriptorSet* a,
+ const VkWriteDescriptorSet* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->dstSet) == (b->dstSet))) { onFail("a->dstSet (Error: Value not equal)"); };
+ if (!((a->dstBinding) == (b->dstBinding))) { onFail("a->dstBinding (Error: Value not equal)"); };
+ if (!((a->dstArrayElement) == (b->dstArrayElement))) { onFail("a->dstArrayElement (Error: Value not equal)"); };
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->descriptorCount (Error: Value not equal)"); };
+ if (!((a->descriptorType) == (b->descriptorType))) { onFail("a->descriptorType (Error: Value not equal)"); };
+ if (!((!(a->pImageInfo) && !(b->pImageInfo)) || ((a->pImageInfo) && (b->pImageInfo)))) { onFail("a->pImageInfo (Error: Mismatch in optional field)"); };
+ if (a->pImageInfo && b->pImageInfo)
+ {
+ if ((a->pImageInfo) && (b->pImageInfo))
+ {
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->pImageInfo (Error: Lengths not equal)"); };
+ if ((a->descriptorCount) == (b->descriptorCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->descriptorCount; ++i)
+ {
+ checkEqual_VkDescriptorImageInfo(a->pImageInfo + i, b->pImageInfo + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((!(a->pBufferInfo) && !(b->pBufferInfo)) || ((a->pBufferInfo) && (b->pBufferInfo)))) { onFail("a->pBufferInfo (Error: Mismatch in optional field)"); };
+ if (a->pBufferInfo && b->pBufferInfo)
+ {
+ if ((a->pBufferInfo) && (b->pBufferInfo))
+ {
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->pBufferInfo (Error: Lengths not equal)"); };
+ if ((a->descriptorCount) == (b->descriptorCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->descriptorCount; ++i)
+ {
+ checkEqual_VkDescriptorBufferInfo(a->pBufferInfo + i, b->pBufferInfo + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((!(a->pTexelBufferView) && !(b->pTexelBufferView)) || ((a->pTexelBufferView) && (b->pTexelBufferView)))) { onFail("a->pTexelBufferView (Error: Mismatch in optional field)"); };
+ if (a->pTexelBufferView && b->pTexelBufferView)
+ {
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->pTexelBufferView (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pTexelBufferView, b->pTexelBufferView, a->descriptorCount * sizeof(const VkBufferView)) == 0))) { onFail("a->pTexelBufferView (Error: Unequal dyn array)"); };
+ }
+}
+
+void checkEqual_VkCopyDescriptorSet(
+ const VkCopyDescriptorSet* a,
+ const VkCopyDescriptorSet* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcSet) == (b->srcSet))) { onFail("a->srcSet (Error: Value not equal)"); };
+ if (!((a->srcBinding) == (b->srcBinding))) { onFail("a->srcBinding (Error: Value not equal)"); };
+ if (!((a->srcArrayElement) == (b->srcArrayElement))) { onFail("a->srcArrayElement (Error: Value not equal)"); };
+ if (!((a->dstSet) == (b->dstSet))) { onFail("a->dstSet (Error: Value not equal)"); };
+ if (!((a->dstBinding) == (b->dstBinding))) { onFail("a->dstBinding (Error: Value not equal)"); };
+ if (!((a->dstArrayElement) == (b->dstArrayElement))) { onFail("a->dstArrayElement (Error: Value not equal)"); };
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->descriptorCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkFramebufferCreateInfo(
+ const VkFramebufferCreateInfo* a,
+ const VkFramebufferCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->renderPass) == (b->renderPass))) { onFail("a->renderPass (Error: Value not equal)"); };
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->attachmentCount (Error: Value not equal)"); };
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->pAttachments (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAttachments, b->pAttachments, a->attachmentCount * sizeof(const VkImageView)) == 0))) { onFail("a->pAttachments (Error: Unequal dyn array)"); };
+ if (!((a->width) == (b->width))) { onFail("a->width (Error: Value not equal)"); };
+ if (!((a->height) == (b->height))) { onFail("a->height (Error: Value not equal)"); };
+ if (!((a->layers) == (b->layers))) { onFail("a->layers (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAttachmentDescription(
+ const VkAttachmentDescription* a,
+ const VkAttachmentDescription* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->samples) == (b->samples))) { onFail("a->samples (Error: Value not equal)"); };
+ if (!((a->loadOp) == (b->loadOp))) { onFail("a->loadOp (Error: Value not equal)"); };
+ if (!((a->storeOp) == (b->storeOp))) { onFail("a->storeOp (Error: Value not equal)"); };
+ if (!((a->stencilLoadOp) == (b->stencilLoadOp))) { onFail("a->stencilLoadOp (Error: Value not equal)"); };
+ if (!((a->stencilStoreOp) == (b->stencilStoreOp))) { onFail("a->stencilStoreOp (Error: Value not equal)"); };
+ if (!((a->initialLayout) == (b->initialLayout))) { onFail("a->initialLayout (Error: Value not equal)"); };
+ if (!((a->finalLayout) == (b->finalLayout))) { onFail("a->finalLayout (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAttachmentReference(
+ const VkAttachmentReference* a,
+ const VkAttachmentReference* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->attachment) == (b->attachment))) { onFail("a->attachment (Error: Value not equal)"); };
+ if (!((a->layout) == (b->layout))) { onFail("a->layout (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSubpassDescription(
+ const VkSubpassDescription* a,
+ const VkSubpassDescription* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pipelineBindPoint) == (b->pipelineBindPoint))) { onFail("a->pipelineBindPoint (Error: Value not equal)"); };
+ if (!((a->inputAttachmentCount) == (b->inputAttachmentCount))) { onFail("a->inputAttachmentCount (Error: Value not equal)"); };
+ if ((a->pInputAttachments) && (b->pInputAttachments))
+ {
+ if (!((a->inputAttachmentCount) == (b->inputAttachmentCount))) { onFail("a->pInputAttachments (Error: Lengths not equal)"); };
+ if ((a->inputAttachmentCount) == (b->inputAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->inputAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference(a->pInputAttachments + i, b->pInputAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->colorAttachmentCount (Error: Value not equal)"); };
+ if ((a->pColorAttachments) && (b->pColorAttachments))
+ {
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->pColorAttachments (Error: Lengths not equal)"); };
+ if ((a->colorAttachmentCount) == (b->colorAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->colorAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference(a->pColorAttachments + i, b->pColorAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((!(a->pResolveAttachments) && !(b->pResolveAttachments)) || ((a->pResolveAttachments) && (b->pResolveAttachments)))) { onFail("a->pResolveAttachments (Error: Mismatch in optional field)"); };
+ if (a->pResolveAttachments && b->pResolveAttachments)
+ {
+ if ((a->pResolveAttachments) && (b->pResolveAttachments))
+ {
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->pResolveAttachments (Error: Lengths not equal)"); };
+ if ((a->colorAttachmentCount) == (b->colorAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->colorAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference(a->pResolveAttachments + i, b->pResolveAttachments + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((!(a->pDepthStencilAttachment) && !(b->pDepthStencilAttachment)) || ((a->pDepthStencilAttachment) && (b->pDepthStencilAttachment)))) { onFail("a->pDepthStencilAttachment (Error: Mismatch in optional field)"); };
+ if (a->pDepthStencilAttachment && b->pDepthStencilAttachment)
+ {
+ if ((a->pDepthStencilAttachment) && (b->pDepthStencilAttachment))
+ {
+ checkEqual_VkAttachmentReference(a->pDepthStencilAttachment, b->pDepthStencilAttachment, onFail);
+ }
+ }
+ if (!((a->preserveAttachmentCount) == (b->preserveAttachmentCount))) { onFail("a->preserveAttachmentCount (Error: Value not equal)"); };
+ if (!((a->preserveAttachmentCount) == (b->preserveAttachmentCount))) { onFail("a->pPreserveAttachments (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pPreserveAttachments, b->pPreserveAttachments, a->preserveAttachmentCount * sizeof(const uint32_t)) == 0))) { onFail("a->pPreserveAttachments (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkSubpassDependency(
+ const VkSubpassDependency* a,
+ const VkSubpassDependency* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->srcSubpass) == (b->srcSubpass))) { onFail("a->srcSubpass (Error: Value not equal)"); };
+ if (!((a->dstSubpass) == (b->dstSubpass))) { onFail("a->dstSubpass (Error: Value not equal)"); };
+ if (!((a->srcStageMask) == (b->srcStageMask))) { onFail("a->srcStageMask (Error: Value not equal)"); };
+ if (!((a->dstStageMask) == (b->dstStageMask))) { onFail("a->dstStageMask (Error: Value not equal)"); };
+ if (!((a->srcAccessMask) == (b->srcAccessMask))) { onFail("a->srcAccessMask (Error: Value not equal)"); };
+ if (!((a->dstAccessMask) == (b->dstAccessMask))) { onFail("a->dstAccessMask (Error: Value not equal)"); };
+ if (!((a->dependencyFlags) == (b->dependencyFlags))) { onFail("a->dependencyFlags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkRenderPassCreateInfo(
+ const VkRenderPassCreateInfo* a,
+ const VkRenderPassCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->attachmentCount (Error: Value not equal)"); };
+ if ((a->pAttachments) && (b->pAttachments))
+ {
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->pAttachments (Error: Lengths not equal)"); };
+ if ((a->attachmentCount) == (b->attachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->attachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentDescription(a->pAttachments + i, b->pAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->subpassCount (Error: Value not equal)"); };
+ if ((a->pSubpasses) && (b->pSubpasses))
+ {
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->pSubpasses (Error: Lengths not equal)"); };
+ if ((a->subpassCount) == (b->subpassCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->subpassCount; ++i)
+ {
+ checkEqual_VkSubpassDescription(a->pSubpasses + i, b->pSubpasses + i, onFail);
+ }
+ }
+ }
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->dependencyCount (Error: Value not equal)"); };
+ if ((a->pDependencies) && (b->pDependencies))
+ {
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->pDependencies (Error: Lengths not equal)"); };
+ if ((a->dependencyCount) == (b->dependencyCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->dependencyCount; ++i)
+ {
+ checkEqual_VkSubpassDependency(a->pDependencies + i, b->pDependencies + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkCommandPoolCreateInfo(
+ const VkCommandPoolCreateInfo* a,
+ const VkCommandPoolCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndex) == (b->queueFamilyIndex))) { onFail("a->queueFamilyIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCommandBufferAllocateInfo(
+ const VkCommandBufferAllocateInfo* a,
+ const VkCommandBufferAllocateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->commandPool) == (b->commandPool))) { onFail("a->commandPool (Error: Value not equal)"); };
+ if (!((a->level) == (b->level))) { onFail("a->level (Error: Value not equal)"); };
+ if (!((a->commandBufferCount) == (b->commandBufferCount))) { onFail("a->commandBufferCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCommandBufferInheritanceInfo(
+ const VkCommandBufferInheritanceInfo* a,
+ const VkCommandBufferInheritanceInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->renderPass) == (b->renderPass))) { onFail("a->renderPass (Error: Value not equal)"); };
+ if (!((a->subpass) == (b->subpass))) { onFail("a->subpass (Error: Value not equal)"); };
+ if (!((a->framebuffer) == (b->framebuffer))) { onFail("a->framebuffer (Error: Value not equal)"); };
+ if (!((a->occlusionQueryEnable) == (b->occlusionQueryEnable))) { onFail("a->occlusionQueryEnable (Error: Value not equal)"); };
+ if (!((a->queryFlags) == (b->queryFlags))) { onFail("a->queryFlags (Error: Value not equal)"); };
+ if (!((a->pipelineStatistics) == (b->pipelineStatistics))) { onFail("a->pipelineStatistics (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCommandBufferBeginInfo(
+ const VkCommandBufferBeginInfo* a,
+ const VkCommandBufferBeginInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->pInheritanceInfo) && !(b->pInheritanceInfo)) || ((a->pInheritanceInfo) && (b->pInheritanceInfo)))) { onFail("a->pInheritanceInfo (Error: Mismatch in optional field)"); };
+ if (a->pInheritanceInfo && b->pInheritanceInfo)
+ {
+ if ((a->pInheritanceInfo) && (b->pInheritanceInfo))
+ {
+ checkEqual_VkCommandBufferInheritanceInfo(a->pInheritanceInfo, b->pInheritanceInfo, onFail);
+ }
+ }
+}
+
+void checkEqual_VkBufferCopy(
+ const VkBufferCopy* a,
+ const VkBufferCopy* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->srcOffset) == (b->srcOffset))) { onFail("a->srcOffset (Error: Value not equal)"); };
+ if (!((a->dstOffset) == (b->dstOffset))) { onFail("a->dstOffset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageSubresourceLayers(
+ const VkImageSubresourceLayers* a,
+ const VkImageSubresourceLayers* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+ if (!((a->mipLevel) == (b->mipLevel))) { onFail("a->mipLevel (Error: Value not equal)"); };
+ if (!((a->baseArrayLayer) == (b->baseArrayLayer))) { onFail("a->baseArrayLayer (Error: Value not equal)"); };
+ if (!((a->layerCount) == (b->layerCount))) { onFail("a->layerCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageCopy(
+ const VkImageCopy* a,
+ const VkImageCopy* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkImageSubresourceLayers(&a->srcSubresource, &b->srcSubresource, onFail);
+ checkEqual_VkOffset3D(&a->srcOffset, &b->srcOffset, onFail);
+ checkEqual_VkImageSubresourceLayers(&a->dstSubresource, &b->dstSubresource, onFail);
+ checkEqual_VkOffset3D(&a->dstOffset, &b->dstOffset, onFail);
+ checkEqual_VkExtent3D(&a->extent, &b->extent, onFail);
+}
+
+void checkEqual_VkImageBlit(
+ const VkImageBlit* a,
+ const VkImageBlit* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkImageSubresourceLayers(&a->srcSubresource, &b->srcSubresource, onFail);
+ if (!((2) == (2))) { onFail("a->srcOffsets (Error: Lengths not equal)"); };
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ checkEqual_VkOffset3D(a->srcOffsets + i, b->srcOffsets + i, onFail);
+ }
+ checkEqual_VkImageSubresourceLayers(&a->dstSubresource, &b->dstSubresource, onFail);
+ if (!((2) == (2))) { onFail("a->dstOffsets (Error: Lengths not equal)"); };
+ for (uint32_t i = 0; i < (uint32_t)2; ++i)
+ {
+ checkEqual_VkOffset3D(a->dstOffsets + i, b->dstOffsets + i, onFail);
+ }
+}
+
+void checkEqual_VkBufferImageCopy(
+ const VkBufferImageCopy* a,
+ const VkBufferImageCopy* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->bufferOffset) == (b->bufferOffset))) { onFail("a->bufferOffset (Error: Value not equal)"); };
+ if (!((a->bufferRowLength) == (b->bufferRowLength))) { onFail("a->bufferRowLength (Error: Value not equal)"); };
+ if (!((a->bufferImageHeight) == (b->bufferImageHeight))) { onFail("a->bufferImageHeight (Error: Value not equal)"); };
+ checkEqual_VkImageSubresourceLayers(&a->imageSubresource, &b->imageSubresource, onFail);
+ checkEqual_VkOffset3D(&a->imageOffset, &b->imageOffset, onFail);
+ checkEqual_VkExtent3D(&a->imageExtent, &b->imageExtent, onFail);
+}
+
+void checkEqual_VkClearColorValue(
+ const VkClearColorValue* a,
+ const VkClearColorValue* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((memcmp(a->float32, b->float32, 4 * sizeof(float)) == 0))) { onFail("a->float32 (Error: Unequal static array)"); };
+ if (!((memcmp(a->int32, b->int32, 4 * sizeof(int32_t)) == 0))) { onFail("a->int32 (Error: Unequal static array)"); };
+ if (!((memcmp(a->uint32, b->uint32, 4 * sizeof(uint32_t)) == 0))) { onFail("a->uint32 (Error: Unequal static array)"); };
+}
+
+void checkEqual_VkClearDepthStencilValue(
+ const VkClearDepthStencilValue* a,
+ const VkClearDepthStencilValue* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->depth) == (b->depth))) { onFail("a->depth (Error: Value not equal)"); };
+ if (!((a->stencil) == (b->stencil))) { onFail("a->stencil (Error: Value not equal)"); };
+}
+
+void checkEqual_VkClearValue(
+ const VkClearValue* a,
+ const VkClearValue* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkClearColorValue(&a->color, &b->color, onFail);
+ checkEqual_VkClearDepthStencilValue(&a->depthStencil, &b->depthStencil, onFail);
+}
+
+void checkEqual_VkClearAttachment(
+ const VkClearAttachment* a,
+ const VkClearAttachment* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+ if (!((a->colorAttachment) == (b->colorAttachment))) { onFail("a->colorAttachment (Error: Value not equal)"); };
+ checkEqual_VkClearValue(&a->clearValue, &b->clearValue, onFail);
+}
+
+void checkEqual_VkClearRect(
+ const VkClearRect* a,
+ const VkClearRect* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkRect2D(&a->rect, &b->rect, onFail);
+ if (!((a->baseArrayLayer) == (b->baseArrayLayer))) { onFail("a->baseArrayLayer (Error: Value not equal)"); };
+ if (!((a->layerCount) == (b->layerCount))) { onFail("a->layerCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageResolve(
+ const VkImageResolve* a,
+ const VkImageResolve* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkImageSubresourceLayers(&a->srcSubresource, &b->srcSubresource, onFail);
+ checkEqual_VkOffset3D(&a->srcOffset, &b->srcOffset, onFail);
+ checkEqual_VkImageSubresourceLayers(&a->dstSubresource, &b->dstSubresource, onFail);
+ checkEqual_VkOffset3D(&a->dstOffset, &b->dstOffset, onFail);
+ checkEqual_VkExtent3D(&a->extent, &b->extent, onFail);
+}
+
+void checkEqual_VkMemoryBarrier(
+ const VkMemoryBarrier* a,
+ const VkMemoryBarrier* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcAccessMask) == (b->srcAccessMask))) { onFail("a->srcAccessMask (Error: Value not equal)"); };
+ if (!((a->dstAccessMask) == (b->dstAccessMask))) { onFail("a->dstAccessMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBufferMemoryBarrier(
+ const VkBufferMemoryBarrier* a,
+ const VkBufferMemoryBarrier* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcAccessMask) == (b->srcAccessMask))) { onFail("a->srcAccessMask (Error: Value not equal)"); };
+ if (!((a->dstAccessMask) == (b->dstAccessMask))) { onFail("a->dstAccessMask (Error: Value not equal)"); };
+ if (!((a->srcQueueFamilyIndex) == (b->srcQueueFamilyIndex))) { onFail("a->srcQueueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->dstQueueFamilyIndex) == (b->dstQueueFamilyIndex))) { onFail("a->dstQueueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->size) == (b->size))) { onFail("a->size (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageMemoryBarrier(
+ const VkImageMemoryBarrier* a,
+ const VkImageMemoryBarrier* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcAccessMask) == (b->srcAccessMask))) { onFail("a->srcAccessMask (Error: Value not equal)"); };
+ if (!((a->dstAccessMask) == (b->dstAccessMask))) { onFail("a->dstAccessMask (Error: Value not equal)"); };
+ if (!((a->oldLayout) == (b->oldLayout))) { onFail("a->oldLayout (Error: Value not equal)"); };
+ if (!((a->newLayout) == (b->newLayout))) { onFail("a->newLayout (Error: Value not equal)"); };
+ if (!((a->srcQueueFamilyIndex) == (b->srcQueueFamilyIndex))) { onFail("a->srcQueueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->dstQueueFamilyIndex) == (b->dstQueueFamilyIndex))) { onFail("a->dstQueueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ checkEqual_VkImageSubresourceRange(&a->subresourceRange, &b->subresourceRange, onFail);
+}
+
+void checkEqual_VkRenderPassBeginInfo(
+ const VkRenderPassBeginInfo* a,
+ const VkRenderPassBeginInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->renderPass) == (b->renderPass))) { onFail("a->renderPass (Error: Value not equal)"); };
+ if (!((a->framebuffer) == (b->framebuffer))) { onFail("a->framebuffer (Error: Value not equal)"); };
+ checkEqual_VkRect2D(&a->renderArea, &b->renderArea, onFail);
+ if (!((a->clearValueCount) == (b->clearValueCount))) { onFail("a->clearValueCount (Error: Value not equal)"); };
+ if (!((!(a->pClearValues) && !(b->pClearValues)) || ((a->pClearValues) && (b->pClearValues)))) { onFail("a->pClearValues (Error: Mismatch in optional field)"); };
+ if (a->pClearValues && b->pClearValues)
+ {
+ if ((a->pClearValues) && (b->pClearValues))
+ {
+ if (!((a->clearValueCount) == (b->clearValueCount))) { onFail("a->pClearValues (Error: Lengths not equal)"); };
+ if ((a->clearValueCount) == (b->clearValueCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->clearValueCount; ++i)
+ {
+ checkEqual_VkClearValue(a->pClearValues + i, b->pClearValues + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+void checkEqual_VkDispatchIndirectCommand(
+ const VkDispatchIndirectCommand* a,
+ const VkDispatchIndirectCommand* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+ if (!((a->z) == (b->z))) { onFail("a->z (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDrawIndexedIndirectCommand(
+ const VkDrawIndexedIndirectCommand* a,
+ const VkDrawIndexedIndirectCommand* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->indexCount) == (b->indexCount))) { onFail("a->indexCount (Error: Value not equal)"); };
+ if (!((a->instanceCount) == (b->instanceCount))) { onFail("a->instanceCount (Error: Value not equal)"); };
+ if (!((a->firstIndex) == (b->firstIndex))) { onFail("a->firstIndex (Error: Value not equal)"); };
+ if (!((a->vertexOffset) == (b->vertexOffset))) { onFail("a->vertexOffset (Error: Value not equal)"); };
+ if (!((a->firstInstance) == (b->firstInstance))) { onFail("a->firstInstance (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDrawIndirectCommand(
+ const VkDrawIndirectCommand* a,
+ const VkDrawIndirectCommand* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->vertexCount) == (b->vertexCount))) { onFail("a->vertexCount (Error: Value not equal)"); };
+ if (!((a->instanceCount) == (b->instanceCount))) { onFail("a->instanceCount (Error: Value not equal)"); };
+ if (!((a->firstVertex) == (b->firstVertex))) { onFail("a->firstVertex (Error: Value not equal)"); };
+ if (!((a->firstInstance) == (b->firstInstance))) { onFail("a->firstInstance (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBaseOutStructure(
+ const VkBaseOutStructure* a,
+ const VkBaseOutStructure* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (a->pNext && b->pNext)
+ {
+ if ((a->pNext) && (b->pNext))
+ {
+ checkEqual_VkBaseOutStructure(a->pNext, b->pNext, onFail);
+ }
+ }
+}
+
+void checkEqual_VkBaseInStructure(
+ const VkBaseInStructure* a,
+ const VkBaseInStructure* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (a->pNext && b->pNext)
+ {
+ if ((a->pNext) && (b->pNext))
+ {
+ checkEqual_VkBaseInStructure(a->pNext, b->pNext, onFail);
+ }
+ }
+}
+
+#endif
+#ifdef VK_VERSION_1_1
+void checkEqual_VkPhysicalDeviceSubgroupProperties(
+ const VkPhysicalDeviceSubgroupProperties* a,
+ const VkPhysicalDeviceSubgroupProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->subgroupSize) == (b->subgroupSize))) { onFail("a->subgroupSize (Error: Value not equal)"); };
+ if (!((a->supportedStages) == (b->supportedStages))) { onFail("a->supportedStages (Error: Value not equal)"); };
+ if (!((a->supportedOperations) == (b->supportedOperations))) { onFail("a->supportedOperations (Error: Value not equal)"); };
+ if (!((a->quadOperationsInAllStages) == (b->quadOperationsInAllStages))) { onFail("a->quadOperationsInAllStages (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBindBufferMemoryInfo(
+ const VkBindBufferMemoryInfo* a,
+ const VkBindBufferMemoryInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->memoryOffset) == (b->memoryOffset))) { onFail("a->memoryOffset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBindImageMemoryInfo(
+ const VkBindImageMemoryInfo* a,
+ const VkBindImageMemoryInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->memoryOffset) == (b->memoryOffset))) { onFail("a->memoryOffset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDevice16BitStorageFeatures(
+ const VkPhysicalDevice16BitStorageFeatures* a,
+ const VkPhysicalDevice16BitStorageFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->storageBuffer16BitAccess) == (b->storageBuffer16BitAccess))) { onFail("a->storageBuffer16BitAccess (Error: Value not equal)"); };
+ if (!((a->uniformAndStorageBuffer16BitAccess) == (b->uniformAndStorageBuffer16BitAccess))) { onFail("a->uniformAndStorageBuffer16BitAccess (Error: Value not equal)"); };
+ if (!((a->storagePushConstant16) == (b->storagePushConstant16))) { onFail("a->storagePushConstant16 (Error: Value not equal)"); };
+ if (!((a->storageInputOutput16) == (b->storageInputOutput16))) { onFail("a->storageInputOutput16 (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryDedicatedRequirements(
+ const VkMemoryDedicatedRequirements* a,
+ const VkMemoryDedicatedRequirements* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->prefersDedicatedAllocation) == (b->prefersDedicatedAllocation))) { onFail("a->prefersDedicatedAllocation (Error: Value not equal)"); };
+ if (!((a->requiresDedicatedAllocation) == (b->requiresDedicatedAllocation))) { onFail("a->requiresDedicatedAllocation (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryDedicatedAllocateInfo(
+ const VkMemoryDedicatedAllocateInfo* a,
+ const VkMemoryDedicatedAllocateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryAllocateFlagsInfo(
+ const VkMemoryAllocateFlagsInfo* a,
+ const VkMemoryAllocateFlagsInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->deviceMask) == (b->deviceMask))) { onFail("a->deviceMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupRenderPassBeginInfo(
+ const VkDeviceGroupRenderPassBeginInfo* a,
+ const VkDeviceGroupRenderPassBeginInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->deviceMask) == (b->deviceMask))) { onFail("a->deviceMask (Error: Value not equal)"); };
+ if (!((a->deviceRenderAreaCount) == (b->deviceRenderAreaCount))) { onFail("a->deviceRenderAreaCount (Error: Value not equal)"); };
+ if ((a->pDeviceRenderAreas) && (b->pDeviceRenderAreas))
+ {
+ if (!((a->deviceRenderAreaCount) == (b->deviceRenderAreaCount))) { onFail("a->pDeviceRenderAreas (Error: Lengths not equal)"); };
+ if ((a->deviceRenderAreaCount) == (b->deviceRenderAreaCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->deviceRenderAreaCount; ++i)
+ {
+ checkEqual_VkRect2D(a->pDeviceRenderAreas + i, b->pDeviceRenderAreas + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkDeviceGroupCommandBufferBeginInfo(
+ const VkDeviceGroupCommandBufferBeginInfo* a,
+ const VkDeviceGroupCommandBufferBeginInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->deviceMask) == (b->deviceMask))) { onFail("a->deviceMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupSubmitInfo(
+ const VkDeviceGroupSubmitInfo* a,
+ const VkDeviceGroupSubmitInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->waitSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->pWaitSemaphoreDeviceIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitSemaphoreDeviceIndices, b->pWaitSemaphoreDeviceIndices, a->waitSemaphoreCount * sizeof(const uint32_t)) == 0))) { onFail("a->pWaitSemaphoreDeviceIndices (Error: Unequal dyn array)"); };
+ if (!((a->commandBufferCount) == (b->commandBufferCount))) { onFail("a->commandBufferCount (Error: Value not equal)"); };
+ if (!((a->commandBufferCount) == (b->commandBufferCount))) { onFail("a->pCommandBufferDeviceMasks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCommandBufferDeviceMasks, b->pCommandBufferDeviceMasks, a->commandBufferCount * sizeof(const uint32_t)) == 0))) { onFail("a->pCommandBufferDeviceMasks (Error: Unequal dyn array)"); };
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->signalSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->signalSemaphoreCount) == (b->signalSemaphoreCount))) { onFail("a->pSignalSemaphoreDeviceIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSignalSemaphoreDeviceIndices, b->pSignalSemaphoreDeviceIndices, a->signalSemaphoreCount * sizeof(const uint32_t)) == 0))) { onFail("a->pSignalSemaphoreDeviceIndices (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkDeviceGroupBindSparseInfo(
+ const VkDeviceGroupBindSparseInfo* a,
+ const VkDeviceGroupBindSparseInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->resourceDeviceIndex) == (b->resourceDeviceIndex))) { onFail("a->resourceDeviceIndex (Error: Value not equal)"); };
+ if (!((a->memoryDeviceIndex) == (b->memoryDeviceIndex))) { onFail("a->memoryDeviceIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBindBufferMemoryDeviceGroupInfo(
+ const VkBindBufferMemoryDeviceGroupInfo* a,
+ const VkBindBufferMemoryDeviceGroupInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->deviceIndexCount) == (b->deviceIndexCount))) { onFail("a->deviceIndexCount (Error: Value not equal)"); };
+ if (!((a->deviceIndexCount) == (b->deviceIndexCount))) { onFail("a->pDeviceIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDeviceIndices, b->pDeviceIndices, a->deviceIndexCount * sizeof(const uint32_t)) == 0))) { onFail("a->pDeviceIndices (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkBindImageMemoryDeviceGroupInfo(
+ const VkBindImageMemoryDeviceGroupInfo* a,
+ const VkBindImageMemoryDeviceGroupInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->deviceIndexCount) == (b->deviceIndexCount))) { onFail("a->deviceIndexCount (Error: Value not equal)"); };
+ if (!((a->deviceIndexCount) == (b->deviceIndexCount))) { onFail("a->pDeviceIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDeviceIndices, b->pDeviceIndices, a->deviceIndexCount * sizeof(const uint32_t)) == 0))) { onFail("a->pDeviceIndices (Error: Unequal dyn array)"); };
+ if (!((a->splitInstanceBindRegionCount) == (b->splitInstanceBindRegionCount))) { onFail("a->splitInstanceBindRegionCount (Error: Value not equal)"); };
+ if ((a->pSplitInstanceBindRegions) && (b->pSplitInstanceBindRegions))
+ {
+ if (!((a->splitInstanceBindRegionCount) == (b->splitInstanceBindRegionCount))) { onFail("a->pSplitInstanceBindRegions (Error: Lengths not equal)"); };
+ if ((a->splitInstanceBindRegionCount) == (b->splitInstanceBindRegionCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->splitInstanceBindRegionCount; ++i)
+ {
+ checkEqual_VkRect2D(a->pSplitInstanceBindRegions + i, b->pSplitInstanceBindRegions + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkPhysicalDeviceGroupProperties(
+ const VkPhysicalDeviceGroupProperties* a,
+ const VkPhysicalDeviceGroupProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->physicalDeviceCount) == (b->physicalDeviceCount))) { onFail("a->physicalDeviceCount (Error: Value not equal)"); };
+ if (!((memcmp(a->physicalDevices, b->physicalDevices, VK_MAX_DEVICE_GROUP_SIZE * sizeof(VkPhysicalDevice)) == 0))) { onFail("a->physicalDevices (Error: Unequal static array)"); };
+ if (!((a->subsetAllocation) == (b->subsetAllocation))) { onFail("a->subsetAllocation (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupDeviceCreateInfo(
+ const VkDeviceGroupDeviceCreateInfo* a,
+ const VkDeviceGroupDeviceCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->physicalDeviceCount) == (b->physicalDeviceCount))) { onFail("a->physicalDeviceCount (Error: Value not equal)"); };
+ if (!((a->physicalDeviceCount) == (b->physicalDeviceCount))) { onFail("a->pPhysicalDevices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pPhysicalDevices, b->pPhysicalDevices, a->physicalDeviceCount * sizeof(const VkPhysicalDevice)) == 0))) { onFail("a->pPhysicalDevices (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkBufferMemoryRequirementsInfo2(
+ const VkBufferMemoryRequirementsInfo2* a,
+ const VkBufferMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageMemoryRequirementsInfo2(
+ const VkImageMemoryRequirementsInfo2* a,
+ const VkImageMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImageSparseMemoryRequirementsInfo2(
+ const VkImageSparseMemoryRequirementsInfo2* a,
+ const VkImageSparseMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryRequirements2(
+ const VkMemoryRequirements2* a,
+ const VkMemoryRequirements2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkMemoryRequirements(&a->memoryRequirements, &b->memoryRequirements, onFail);
+}
+
+void checkEqual_VkSparseImageMemoryRequirements2(
+ const VkSparseImageMemoryRequirements2* a,
+ const VkSparseImageMemoryRequirements2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkSparseImageMemoryRequirements(&a->memoryRequirements, &b->memoryRequirements, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceFeatures2(
+ const VkPhysicalDeviceFeatures2* a,
+ const VkPhysicalDeviceFeatures2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkPhysicalDeviceFeatures(&a->features, &b->features, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceProperties2(
+ const VkPhysicalDeviceProperties2* a,
+ const VkPhysicalDeviceProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkPhysicalDeviceProperties(&a->properties, &b->properties, onFail);
+}
+
+void checkEqual_VkFormatProperties2(
+ const VkFormatProperties2* a,
+ const VkFormatProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkFormatProperties(&a->formatProperties, &b->formatProperties, onFail);
+}
+
+void checkEqual_VkImageFormatProperties2(
+ const VkImageFormatProperties2* a,
+ const VkImageFormatProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkImageFormatProperties(&a->imageFormatProperties, &b->imageFormatProperties, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceImageFormatInfo2(
+ const VkPhysicalDeviceImageFormatInfo2* a,
+ const VkPhysicalDeviceImageFormatInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->tiling) == (b->tiling))) { onFail("a->tiling (Error: Value not equal)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkQueueFamilyProperties2(
+ const VkQueueFamilyProperties2* a,
+ const VkQueueFamilyProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkQueueFamilyProperties(&a->queueFamilyProperties, &b->queueFamilyProperties, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceMemoryProperties2(
+ const VkPhysicalDeviceMemoryProperties2* a,
+ const VkPhysicalDeviceMemoryProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkPhysicalDeviceMemoryProperties(&a->memoryProperties, &b->memoryProperties, onFail);
+}
+
+void checkEqual_VkSparseImageFormatProperties2(
+ const VkSparseImageFormatProperties2* a,
+ const VkSparseImageFormatProperties2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkSparseImageFormatProperties(&a->properties, &b->properties, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceSparseImageFormatInfo2(
+ const VkPhysicalDeviceSparseImageFormatInfo2* a,
+ const VkPhysicalDeviceSparseImageFormatInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->samples) == (b->samples))) { onFail("a->samples (Error: Value not equal)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+ if (!((a->tiling) == (b->tiling))) { onFail("a->tiling (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDevicePointClippingProperties(
+ const VkPhysicalDevicePointClippingProperties* a,
+ const VkPhysicalDevicePointClippingProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->pointClippingBehavior) == (b->pointClippingBehavior))) { onFail("a->pointClippingBehavior (Error: Value not equal)"); };
+}
+
+void checkEqual_VkInputAttachmentAspectReference(
+ const VkInputAttachmentAspectReference* a,
+ const VkInputAttachmentAspectReference* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->subpass) == (b->subpass))) { onFail("a->subpass (Error: Value not equal)"); };
+ if (!((a->inputAttachmentIndex) == (b->inputAttachmentIndex))) { onFail("a->inputAttachmentIndex (Error: Value not equal)"); };
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkRenderPassInputAttachmentAspectCreateInfo(
+ const VkRenderPassInputAttachmentAspectCreateInfo* a,
+ const VkRenderPassInputAttachmentAspectCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->aspectReferenceCount) == (b->aspectReferenceCount))) { onFail("a->aspectReferenceCount (Error: Value not equal)"); };
+ if ((a->pAspectReferences) && (b->pAspectReferences))
+ {
+ if (!((a->aspectReferenceCount) == (b->aspectReferenceCount))) { onFail("a->pAspectReferences (Error: Lengths not equal)"); };
+ if ((a->aspectReferenceCount) == (b->aspectReferenceCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->aspectReferenceCount; ++i)
+ {
+ checkEqual_VkInputAttachmentAspectReference(a->pAspectReferences + i, b->pAspectReferences + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkImageViewUsageCreateInfo(
+ const VkImageViewUsageCreateInfo* a,
+ const VkImageViewUsageCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineTessellationDomainOriginStateCreateInfo(
+ const VkPipelineTessellationDomainOriginStateCreateInfo* a,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->domainOrigin) == (b->domainOrigin))) { onFail("a->domainOrigin (Error: Value not equal)"); };
+}
+
+void checkEqual_VkRenderPassMultiviewCreateInfo(
+ const VkRenderPassMultiviewCreateInfo* a,
+ const VkRenderPassMultiviewCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->subpassCount (Error: Value not equal)"); };
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->pViewMasks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pViewMasks, b->pViewMasks, a->subpassCount * sizeof(const uint32_t)) == 0))) { onFail("a->pViewMasks (Error: Unequal dyn array)"); };
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->dependencyCount (Error: Value not equal)"); };
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->pViewOffsets (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pViewOffsets, b->pViewOffsets, a->dependencyCount * sizeof(const int32_t)) == 0))) { onFail("a->pViewOffsets (Error: Unequal dyn array)"); };
+ if (!((a->correlationMaskCount) == (b->correlationMaskCount))) { onFail("a->correlationMaskCount (Error: Value not equal)"); };
+ if (!((a->correlationMaskCount) == (b->correlationMaskCount))) { onFail("a->pCorrelationMasks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCorrelationMasks, b->pCorrelationMasks, a->correlationMaskCount * sizeof(const uint32_t)) == 0))) { onFail("a->pCorrelationMasks (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkPhysicalDeviceMultiviewFeatures(
+ const VkPhysicalDeviceMultiviewFeatures* a,
+ const VkPhysicalDeviceMultiviewFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->multiview) == (b->multiview))) { onFail("a->multiview (Error: Value not equal)"); };
+ if (!((a->multiviewGeometryShader) == (b->multiviewGeometryShader))) { onFail("a->multiviewGeometryShader (Error: Value not equal)"); };
+ if (!((a->multiviewTessellationShader) == (b->multiviewTessellationShader))) { onFail("a->multiviewTessellationShader (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceMultiviewProperties(
+ const VkPhysicalDeviceMultiviewProperties* a,
+ const VkPhysicalDeviceMultiviewProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxMultiviewViewCount) == (b->maxMultiviewViewCount))) { onFail("a->maxMultiviewViewCount (Error: Value not equal)"); };
+ if (!((a->maxMultiviewInstanceIndex) == (b->maxMultiviewInstanceIndex))) { onFail("a->maxMultiviewInstanceIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceVariablePointerFeatures(
+ const VkPhysicalDeviceVariablePointerFeatures* a,
+ const VkPhysicalDeviceVariablePointerFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->variablePointersStorageBuffer) == (b->variablePointersStorageBuffer))) { onFail("a->variablePointersStorageBuffer (Error: Value not equal)"); };
+ if (!((a->variablePointers) == (b->variablePointers))) { onFail("a->variablePointers (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceProtectedMemoryFeatures(
+ const VkPhysicalDeviceProtectedMemoryFeatures* a,
+ const VkPhysicalDeviceProtectedMemoryFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->protectedMemory) == (b->protectedMemory))) { onFail("a->protectedMemory (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceProtectedMemoryProperties(
+ const VkPhysicalDeviceProtectedMemoryProperties* a,
+ const VkPhysicalDeviceProtectedMemoryProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->protectedNoFault) == (b->protectedNoFault))) { onFail("a->protectedNoFault (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceQueueInfo2(
+ const VkDeviceQueueInfo2* a,
+ const VkDeviceQueueInfo2* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndex) == (b->queueFamilyIndex))) { onFail("a->queueFamilyIndex (Error: Value not equal)"); };
+ if (!((a->queueIndex) == (b->queueIndex))) { onFail("a->queueIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkProtectedSubmitInfo(
+ const VkProtectedSubmitInfo* a,
+ const VkProtectedSubmitInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->protectedSubmit) == (b->protectedSubmit))) { onFail("a->protectedSubmit (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSamplerYcbcrConversionCreateInfo(
+ const VkSamplerYcbcrConversionCreateInfo* a,
+ const VkSamplerYcbcrConversionCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->ycbcrModel) == (b->ycbcrModel))) { onFail("a->ycbcrModel (Error: Value not equal)"); };
+ if (!((a->ycbcrRange) == (b->ycbcrRange))) { onFail("a->ycbcrRange (Error: Value not equal)"); };
+ checkEqual_VkComponentMapping(&a->components, &b->components, onFail);
+ if (!((a->xChromaOffset) == (b->xChromaOffset))) { onFail("a->xChromaOffset (Error: Value not equal)"); };
+ if (!((a->yChromaOffset) == (b->yChromaOffset))) { onFail("a->yChromaOffset (Error: Value not equal)"); };
+ if (!((a->chromaFilter) == (b->chromaFilter))) { onFail("a->chromaFilter (Error: Value not equal)"); };
+ if (!((a->forceExplicitReconstruction) == (b->forceExplicitReconstruction))) { onFail("a->forceExplicitReconstruction (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSamplerYcbcrConversionInfo(
+ const VkSamplerYcbcrConversionInfo* a,
+ const VkSamplerYcbcrConversionInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->conversion) == (b->conversion))) { onFail("a->conversion (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBindImagePlaneMemoryInfo(
+ const VkBindImagePlaneMemoryInfo* a,
+ const VkBindImagePlaneMemoryInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->planeAspect) == (b->planeAspect))) { onFail("a->planeAspect (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImagePlaneMemoryRequirementsInfo(
+ const VkImagePlaneMemoryRequirementsInfo* a,
+ const VkImagePlaneMemoryRequirementsInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->planeAspect) == (b->planeAspect))) { onFail("a->planeAspect (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* a,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->samplerYcbcrConversion) == (b->samplerYcbcrConversion))) { onFail("a->samplerYcbcrConversion (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSamplerYcbcrConversionImageFormatProperties(
+ const VkSamplerYcbcrConversionImageFormatProperties* a,
+ const VkSamplerYcbcrConversionImageFormatProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->combinedImageSamplerDescriptorCount) == (b->combinedImageSamplerDescriptorCount))) { onFail("a->combinedImageSamplerDescriptorCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorUpdateTemplateEntry(
+ const VkDescriptorUpdateTemplateEntry* a,
+ const VkDescriptorUpdateTemplateEntry* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->dstBinding) == (b->dstBinding))) { onFail("a->dstBinding (Error: Value not equal)"); };
+ if (!((a->dstArrayElement) == (b->dstArrayElement))) { onFail("a->dstArrayElement (Error: Value not equal)"); };
+ if (!((a->descriptorCount) == (b->descriptorCount))) { onFail("a->descriptorCount (Error: Value not equal)"); };
+ if (!((a->descriptorType) == (b->descriptorType))) { onFail("a->descriptorType (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->stride) == (b->stride))) { onFail("a->stride (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorUpdateTemplateCreateInfo(
+ const VkDescriptorUpdateTemplateCreateInfo* a,
+ const VkDescriptorUpdateTemplateCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->descriptorUpdateEntryCount) == (b->descriptorUpdateEntryCount))) { onFail("a->descriptorUpdateEntryCount (Error: Value not equal)"); };
+ if ((a->pDescriptorUpdateEntries) && (b->pDescriptorUpdateEntries))
+ {
+ if (!((a->descriptorUpdateEntryCount) == (b->descriptorUpdateEntryCount))) { onFail("a->pDescriptorUpdateEntries (Error: Lengths not equal)"); };
+ if ((a->descriptorUpdateEntryCount) == (b->descriptorUpdateEntryCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->descriptorUpdateEntryCount; ++i)
+ {
+ checkEqual_VkDescriptorUpdateTemplateEntry(a->pDescriptorUpdateEntries + i, b->pDescriptorUpdateEntries + i, onFail);
+ }
+ }
+ }
+ if (!((a->templateType) == (b->templateType))) { onFail("a->templateType (Error: Value not equal)"); };
+ if (!((a->descriptorSetLayout) == (b->descriptorSetLayout))) { onFail("a->descriptorSetLayout (Error: Value not equal)"); };
+ if (!((a->pipelineBindPoint) == (b->pipelineBindPoint))) { onFail("a->pipelineBindPoint (Error: Value not equal)"); };
+ if (!((a->pipelineLayout) == (b->pipelineLayout))) { onFail("a->pipelineLayout (Error: Value not equal)"); };
+ if (!((a->set) == (b->set))) { onFail("a->set (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalMemoryProperties(
+ const VkExternalMemoryProperties* a,
+ const VkExternalMemoryProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->externalMemoryFeatures) == (b->externalMemoryFeatures))) { onFail("a->externalMemoryFeatures (Error: Value not equal)"); };
+ if (!((a->exportFromImportedHandleTypes) == (b->exportFromImportedHandleTypes))) { onFail("a->exportFromImportedHandleTypes (Error: Value not equal)"); };
+ if (!((a->compatibleHandleTypes) == (b->compatibleHandleTypes))) { onFail("a->compatibleHandleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceExternalImageFormatInfo(
+ const VkPhysicalDeviceExternalImageFormatInfo* a,
+ const VkPhysicalDeviceExternalImageFormatInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalImageFormatProperties(
+ const VkExternalImageFormatProperties* a,
+ const VkExternalImageFormatProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkExternalMemoryProperties(&a->externalMemoryProperties, &b->externalMemoryProperties, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceExternalBufferInfo(
+ const VkPhysicalDeviceExternalBufferInfo* a,
+ const VkPhysicalDeviceExternalBufferInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->usage) == (b->usage))) { onFail("a->usage (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalBufferProperties(
+ const VkExternalBufferProperties* a,
+ const VkExternalBufferProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkExternalMemoryProperties(&a->externalMemoryProperties, &b->externalMemoryProperties, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceIDProperties(
+ const VkPhysicalDeviceIDProperties* a,
+ const VkPhysicalDeviceIDProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((memcmp(a->deviceUUID, b->deviceUUID, VK_UUID_SIZE * sizeof(uint8_t)) == 0))) { onFail("a->deviceUUID (Error: Unequal static array)"); };
+ if (!((memcmp(a->driverUUID, b->driverUUID, VK_UUID_SIZE * sizeof(uint8_t)) == 0))) { onFail("a->driverUUID (Error: Unequal static array)"); };
+ if (!((memcmp(a->deviceLUID, b->deviceLUID, VK_LUID_SIZE * sizeof(uint8_t)) == 0))) { onFail("a->deviceLUID (Error: Unequal static array)"); };
+ if (!((a->deviceNodeMask) == (b->deviceNodeMask))) { onFail("a->deviceNodeMask (Error: Value not equal)"); };
+ if (!((a->deviceLUIDValid) == (b->deviceLUIDValid))) { onFail("a->deviceLUIDValid (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalMemoryImageCreateInfo(
+ const VkExternalMemoryImageCreateInfo* a,
+ const VkExternalMemoryImageCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalMemoryBufferCreateInfo(
+ const VkExternalMemoryBufferCreateInfo* a,
+ const VkExternalMemoryBufferCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportMemoryAllocateInfo(
+ const VkExportMemoryAllocateInfo* a,
+ const VkExportMemoryAllocateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceExternalFenceInfo(
+ const VkPhysicalDeviceExternalFenceInfo* a,
+ const VkPhysicalDeviceExternalFenceInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalFenceProperties(
+ const VkExternalFenceProperties* a,
+ const VkExternalFenceProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->exportFromImportedHandleTypes) == (b->exportFromImportedHandleTypes))) { onFail("a->exportFromImportedHandleTypes (Error: Value not equal)"); };
+ if (!((a->compatibleHandleTypes) == (b->compatibleHandleTypes))) { onFail("a->compatibleHandleTypes (Error: Value not equal)"); };
+ if (!((a->externalFenceFeatures) == (b->externalFenceFeatures))) { onFail("a->externalFenceFeatures (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportFenceCreateInfo(
+ const VkExportFenceCreateInfo* a,
+ const VkExportFenceCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportSemaphoreCreateInfo(
+ const VkExportSemaphoreCreateInfo* a,
+ const VkExportSemaphoreCreateInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceExternalSemaphoreInfo(
+ const VkPhysicalDeviceExternalSemaphoreInfo* a,
+ const VkPhysicalDeviceExternalSemaphoreInfo* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalSemaphoreProperties(
+ const VkExternalSemaphoreProperties* a,
+ const VkExternalSemaphoreProperties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->exportFromImportedHandleTypes) == (b->exportFromImportedHandleTypes))) { onFail("a->exportFromImportedHandleTypes (Error: Value not equal)"); };
+ if (!((a->compatibleHandleTypes) == (b->compatibleHandleTypes))) { onFail("a->compatibleHandleTypes (Error: Value not equal)"); };
+ if (!((a->externalSemaphoreFeatures) == (b->externalSemaphoreFeatures))) { onFail("a->externalSemaphoreFeatures (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceMaintenance3Properties(
+ const VkPhysicalDeviceMaintenance3Properties* a,
+ const VkPhysicalDeviceMaintenance3Properties* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxPerSetDescriptors) == (b->maxPerSetDescriptors))) { onFail("a->maxPerSetDescriptors (Error: Value not equal)"); };
+ if (!((a->maxMemoryAllocationSize) == (b->maxMemoryAllocationSize))) { onFail("a->maxMemoryAllocationSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorSetLayoutSupport(
+ const VkDescriptorSetLayoutSupport* a,
+ const VkDescriptorSetLayoutSupport* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->supported) == (b->supported))) { onFail("a->supported (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceShaderDrawParameterFeatures(
+ const VkPhysicalDeviceShaderDrawParameterFeatures* a,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->shaderDrawParameters) == (b->shaderDrawParameters))) { onFail("a->shaderDrawParameters (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_surface
+void checkEqual_VkSurfaceCapabilitiesKHR(
+ const VkSurfaceCapabilitiesKHR* a,
+ const VkSurfaceCapabilitiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->minImageCount) == (b->minImageCount))) { onFail("a->minImageCount (Error: Value not equal)"); };
+ if (!((a->maxImageCount) == (b->maxImageCount))) { onFail("a->maxImageCount (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->currentExtent, &b->currentExtent, onFail);
+ checkEqual_VkExtent2D(&a->minImageExtent, &b->minImageExtent, onFail);
+ checkEqual_VkExtent2D(&a->maxImageExtent, &b->maxImageExtent, onFail);
+ if (!((a->maxImageArrayLayers) == (b->maxImageArrayLayers))) { onFail("a->maxImageArrayLayers (Error: Value not equal)"); };
+ if (!((a->supportedTransforms) == (b->supportedTransforms))) { onFail("a->supportedTransforms (Error: Value not equal)"); };
+ if (!((a->currentTransform) == (b->currentTransform))) { onFail("a->currentTransform (Error: Value not equal)"); };
+ if (!((a->supportedCompositeAlpha) == (b->supportedCompositeAlpha))) { onFail("a->supportedCompositeAlpha (Error: Value not equal)"); };
+ if (!((a->supportedUsageFlags) == (b->supportedUsageFlags))) { onFail("a->supportedUsageFlags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSurfaceFormatKHR(
+ const VkSurfaceFormatKHR* a,
+ const VkSurfaceFormatKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->colorSpace) == (b->colorSpace))) { onFail("a->colorSpace (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_swapchain
+void checkEqual_VkSwapchainCreateInfoKHR(
+ const VkSwapchainCreateInfoKHR* a,
+ const VkSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->surface) == (b->surface))) { onFail("a->surface (Error: Value not equal)"); };
+ if (!((a->minImageCount) == (b->minImageCount))) { onFail("a->minImageCount (Error: Value not equal)"); };
+ if (!((a->imageFormat) == (b->imageFormat))) { onFail("a->imageFormat (Error: Value not equal)"); };
+ if (!((a->imageColorSpace) == (b->imageColorSpace))) { onFail("a->imageColorSpace (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->imageExtent, &b->imageExtent, onFail);
+ if (!((a->imageArrayLayers) == (b->imageArrayLayers))) { onFail("a->imageArrayLayers (Error: Value not equal)"); };
+ if (!((a->imageUsage) == (b->imageUsage))) { onFail("a->imageUsage (Error: Value not equal)"); };
+ if (!((a->imageSharingMode) == (b->imageSharingMode))) { onFail("a->imageSharingMode (Error: Value not equal)"); };
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->queueFamilyIndexCount (Error: Value not equal)"); };
+ if (!((!(a->pQueueFamilyIndices) && !(b->pQueueFamilyIndices)) || ((a->pQueueFamilyIndices) && (b->pQueueFamilyIndices)))) { onFail("a->pQueueFamilyIndices (Error: Mismatch in optional field)"); };
+ if (a->pQueueFamilyIndices && b->pQueueFamilyIndices)
+ {
+ if (!((a->queueFamilyIndexCount) == (b->queueFamilyIndexCount))) { onFail("a->pQueueFamilyIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pQueueFamilyIndices, b->pQueueFamilyIndices, a->queueFamilyIndexCount * sizeof(const uint32_t)) == 0))) { onFail("a->pQueueFamilyIndices (Error: Unequal dyn array)"); };
+ }
+ if (!((a->preTransform) == (b->preTransform))) { onFail("a->preTransform (Error: Value not equal)"); };
+ if (!((a->compositeAlpha) == (b->compositeAlpha))) { onFail("a->compositeAlpha (Error: Value not equal)"); };
+ if (!((a->presentMode) == (b->presentMode))) { onFail("a->presentMode (Error: Value not equal)"); };
+ if (!((a->clipped) == (b->clipped))) { onFail("a->clipped (Error: Value not equal)"); };
+ if (!((a->oldSwapchain) == (b->oldSwapchain))) { onFail("a->oldSwapchain (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPresentInfoKHR(
+ const VkPresentInfoKHR* a,
+ const VkPresentInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->waitSemaphoreCount (Error: Value not equal)"); };
+ if (!((a->waitSemaphoreCount) == (b->waitSemaphoreCount))) { onFail("a->pWaitSemaphores (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitSemaphores, b->pWaitSemaphores, a->waitSemaphoreCount * sizeof(const VkSemaphore)) == 0))) { onFail("a->pWaitSemaphores (Error: Unequal dyn array)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->swapchainCount (Error: Value not equal)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pSwapchains (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSwapchains, b->pSwapchains, a->swapchainCount * sizeof(const VkSwapchainKHR)) == 0))) { onFail("a->pSwapchains (Error: Unequal dyn array)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pImageIndices (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pImageIndices, b->pImageIndices, a->swapchainCount * sizeof(const uint32_t)) == 0))) { onFail("a->pImageIndices (Error: Unequal dyn array)"); };
+ if (!((!(a->pResults) && !(b->pResults)) || ((a->pResults) && (b->pResults)))) { onFail("a->pResults (Error: Mismatch in optional field)"); };
+ if (a->pResults && b->pResults)
+ {
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pResults (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pResults, b->pResults, a->swapchainCount * sizeof(VkResult)) == 0))) { onFail("a->pResults (Error: Unequal dyn array)"); };
+ }
+}
+
+void checkEqual_VkImageSwapchainCreateInfoKHR(
+ const VkImageSwapchainCreateInfoKHR* a,
+ const VkImageSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchain) == (b->swapchain))) { onFail("a->swapchain (Error: Value not equal)"); };
+}
+
+void checkEqual_VkBindImageMemorySwapchainInfoKHR(
+ const VkBindImageMemorySwapchainInfoKHR* a,
+ const VkBindImageMemorySwapchainInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchain) == (b->swapchain))) { onFail("a->swapchain (Error: Value not equal)"); };
+ if (!((a->imageIndex) == (b->imageIndex))) { onFail("a->imageIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAcquireNextImageInfoKHR(
+ const VkAcquireNextImageInfoKHR* a,
+ const VkAcquireNextImageInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchain) == (b->swapchain))) { onFail("a->swapchain (Error: Value not equal)"); };
+ if (!((a->timeout) == (b->timeout))) { onFail("a->timeout (Error: Value not equal)"); };
+ if (!((a->semaphore) == (b->semaphore))) { onFail("a->semaphore (Error: Value not equal)"); };
+ if (!((a->fence) == (b->fence))) { onFail("a->fence (Error: Value not equal)"); };
+ if (!((a->deviceMask) == (b->deviceMask))) { onFail("a->deviceMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupPresentCapabilitiesKHR(
+ const VkDeviceGroupPresentCapabilitiesKHR* a,
+ const VkDeviceGroupPresentCapabilitiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((memcmp(a->presentMask, b->presentMask, VK_MAX_DEVICE_GROUP_SIZE * sizeof(uint32_t)) == 0))) { onFail("a->presentMask (Error: Unequal static array)"); };
+ if (!((a->modes) == (b->modes))) { onFail("a->modes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupPresentInfoKHR(
+ const VkDeviceGroupPresentInfoKHR* a,
+ const VkDeviceGroupPresentInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->swapchainCount (Error: Value not equal)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pDeviceMasks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDeviceMasks, b->pDeviceMasks, a->swapchainCount * sizeof(const uint32_t)) == 0))) { onFail("a->pDeviceMasks (Error: Unequal dyn array)"); };
+ if (!((a->mode) == (b->mode))) { onFail("a->mode (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGroupSwapchainCreateInfoKHR(
+ const VkDeviceGroupSwapchainCreateInfoKHR* a,
+ const VkDeviceGroupSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->modes) == (b->modes))) { onFail("a->modes (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_display
+void checkEqual_VkDisplayPropertiesKHR(
+ const VkDisplayPropertiesKHR* a,
+ const VkDisplayPropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->display) == (b->display))) { onFail("a->display (Error: Value not equal)"); };
+ if (!((!(a->displayName) && !(b->displayName)) || ((a->displayName) && (b->displayName)))) { onFail("a->displayName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->displayName) && (b->displayName))
+ {
+ if (!((strcmp(a->displayName, b->displayName) == 0))) { onFail("a->displayName (Error: Unequal strings)"); };
+ }
+ checkEqual_VkExtent2D(&a->physicalDimensions, &b->physicalDimensions, onFail);
+ checkEqual_VkExtent2D(&a->physicalResolution, &b->physicalResolution, onFail);
+ if (!((a->supportedTransforms) == (b->supportedTransforms))) { onFail("a->supportedTransforms (Error: Value not equal)"); };
+ if (!((a->planeReorderPossible) == (b->planeReorderPossible))) { onFail("a->planeReorderPossible (Error: Value not equal)"); };
+ if (!((a->persistentContent) == (b->persistentContent))) { onFail("a->persistentContent (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDisplayModeParametersKHR(
+ const VkDisplayModeParametersKHR* a,
+ const VkDisplayModeParametersKHR* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkExtent2D(&a->visibleRegion, &b->visibleRegion, onFail);
+ if (!((a->refreshRate) == (b->refreshRate))) { onFail("a->refreshRate (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDisplayModePropertiesKHR(
+ const VkDisplayModePropertiesKHR* a,
+ const VkDisplayModePropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->displayMode) == (b->displayMode))) { onFail("a->displayMode (Error: Value not equal)"); };
+ checkEqual_VkDisplayModeParametersKHR(&a->parameters, &b->parameters, onFail);
+}
+
+void checkEqual_VkDisplayModeCreateInfoKHR(
+ const VkDisplayModeCreateInfoKHR* a,
+ const VkDisplayModeCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ checkEqual_VkDisplayModeParametersKHR(&a->parameters, &b->parameters, onFail);
+}
+
+void checkEqual_VkDisplayPlaneCapabilitiesKHR(
+ const VkDisplayPlaneCapabilitiesKHR* a,
+ const VkDisplayPlaneCapabilitiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->supportedAlpha) == (b->supportedAlpha))) { onFail("a->supportedAlpha (Error: Value not equal)"); };
+ checkEqual_VkOffset2D(&a->minSrcPosition, &b->minSrcPosition, onFail);
+ checkEqual_VkOffset2D(&a->maxSrcPosition, &b->maxSrcPosition, onFail);
+ checkEqual_VkExtent2D(&a->minSrcExtent, &b->minSrcExtent, onFail);
+ checkEqual_VkExtent2D(&a->maxSrcExtent, &b->maxSrcExtent, onFail);
+ checkEqual_VkOffset2D(&a->minDstPosition, &b->minDstPosition, onFail);
+ checkEqual_VkOffset2D(&a->maxDstPosition, &b->maxDstPosition, onFail);
+ checkEqual_VkExtent2D(&a->minDstExtent, &b->minDstExtent, onFail);
+ checkEqual_VkExtent2D(&a->maxDstExtent, &b->maxDstExtent, onFail);
+}
+
+void checkEqual_VkDisplayPlanePropertiesKHR(
+ const VkDisplayPlanePropertiesKHR* a,
+ const VkDisplayPlanePropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->currentDisplay) == (b->currentDisplay))) { onFail("a->currentDisplay (Error: Value not equal)"); };
+ if (!((a->currentStackIndex) == (b->currentStackIndex))) { onFail("a->currentStackIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDisplaySurfaceCreateInfoKHR(
+ const VkDisplaySurfaceCreateInfoKHR* a,
+ const VkDisplaySurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->displayMode) == (b->displayMode))) { onFail("a->displayMode (Error: Value not equal)"); };
+ if (!((a->planeIndex) == (b->planeIndex))) { onFail("a->planeIndex (Error: Value not equal)"); };
+ if (!((a->planeStackIndex) == (b->planeStackIndex))) { onFail("a->planeStackIndex (Error: Value not equal)"); };
+ if (!((a->transform) == (b->transform))) { onFail("a->transform (Error: Value not equal)"); };
+ if (!((a->globalAlpha) == (b->globalAlpha))) { onFail("a->globalAlpha (Error: Value not equal)"); };
+ if (!((a->alphaMode) == (b->alphaMode))) { onFail("a->alphaMode (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->imageExtent, &b->imageExtent, onFail);
+}
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void checkEqual_VkDisplayPresentInfoKHR(
+ const VkDisplayPresentInfoKHR* a,
+ const VkDisplayPresentInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkRect2D(&a->srcRect, &b->srcRect, onFail);
+ checkEqual_VkRect2D(&a->dstRect, &b->dstRect, onFail);
+ if (!((a->persistent) == (b->persistent))) { onFail("a->persistent (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void checkEqual_VkXlibSurfaceCreateInfoKHR(
+ const VkXlibSurfaceCreateInfoKHR* a,
+ const VkXlibSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->dpy) && !(b->dpy)) || ((a->dpy) && (b->dpy)))) { onFail("a->dpy (Error: Mismatch in optional field)"); };
+ if (a->dpy && b->dpy)
+ {
+ if (!((memcmp(a->dpy, b->dpy, sizeof(Display)) == 0))) { onFail("a->dpy (Error: Unequal dyn array)"); };
+ }
+ if (!((a->window) == (b->window))) { onFail("a->window (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void checkEqual_VkXcbSurfaceCreateInfoKHR(
+ const VkXcbSurfaceCreateInfoKHR* a,
+ const VkXcbSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->connection) && !(b->connection)) || ((a->connection) && (b->connection)))) { onFail("a->connection (Error: Mismatch in optional field)"); };
+ if (a->connection && b->connection)
+ {
+ if (!((memcmp(a->connection, b->connection, sizeof(xcb_connection_t)) == 0))) { onFail("a->connection (Error: Unequal dyn array)"); };
+ }
+ if (!((a->window) == (b->window))) { onFail("a->window (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void checkEqual_VkWaylandSurfaceCreateInfoKHR(
+ const VkWaylandSurfaceCreateInfoKHR* a,
+ const VkWaylandSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->display) && !(b->display)) || ((a->display) && (b->display)))) { onFail("a->display (Error: Mismatch in optional field)"); };
+ if (a->display && b->display)
+ {
+ if (!((memcmp(a->display, b->display, sizeof(wl_display)) == 0))) { onFail("a->display (Error: Unequal dyn array)"); };
+ }
+ if (!((!(a->surface) && !(b->surface)) || ((a->surface) && (b->surface)))) { onFail("a->surface (Error: Mismatch in optional field)"); };
+ if (a->surface && b->surface)
+ {
+ if (!((memcmp(a->surface, b->surface, sizeof(wl_surface)) == 0))) { onFail("a->surface (Error: Unequal dyn array)"); };
+ }
+}
+
+#endif
+#ifdef VK_KHR_mir_surface
+void checkEqual_VkMirSurfaceCreateInfoKHR(
+ const VkMirSurfaceCreateInfoKHR* a,
+ const VkMirSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->connection) && !(b->connection)) || ((a->connection) && (b->connection)))) { onFail("a->connection (Error: Mismatch in optional field)"); };
+ if (a->connection && b->connection)
+ {
+ if (!((memcmp(a->connection, b->connection, sizeof(MirConnection)) == 0))) { onFail("a->connection (Error: Unequal dyn array)"); };
+ }
+ if (!((!(a->mirSurface) && !(b->mirSurface)) || ((a->mirSurface) && (b->mirSurface)))) { onFail("a->mirSurface (Error: Mismatch in optional field)"); };
+ if (a->mirSurface && b->mirSurface)
+ {
+ if (!((memcmp(a->mirSurface, b->mirSurface, sizeof(MirSurface)) == 0))) { onFail("a->mirSurface (Error: Unequal dyn array)"); };
+ }
+}
+
+#endif
+#ifdef VK_KHR_android_surface
+void checkEqual_VkAndroidSurfaceCreateInfoKHR(
+ const VkAndroidSurfaceCreateInfoKHR* a,
+ const VkAndroidSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->window) && !(b->window)) || ((a->window) && (b->window)))) { onFail("a->window (Error: Mismatch in optional field)"); };
+ if (a->window && b->window)
+ {
+ if (!((memcmp(a->window, b->window, sizeof(ANativeWindow)) == 0))) { onFail("a->window (Error: Unequal dyn array)"); };
+ }
+}
+
+#endif
+#ifdef VK_KHR_win32_surface
+void checkEqual_VkWin32SurfaceCreateInfoKHR(
+ const VkWin32SurfaceCreateInfoKHR* a,
+ const VkWin32SurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->hinstance) == (b->hinstance))) { onFail("a->hinstance (Error: Value not equal)"); };
+ if (!((a->hwnd) == (b->hwnd))) { onFail("a->hwnd (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void checkEqual_VkImportMemoryWin32HandleInfoKHR(
+ const VkImportMemoryWin32HandleInfoKHR* a,
+ const VkImportMemoryWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->handle) == (b->handle))) { onFail("a->handle (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportMemoryWin32HandleInfoKHR(
+ const VkExportMemoryWin32HandleInfoKHR* a,
+ const VkExportMemoryWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pAttributes) && !(b->pAttributes)) || ((a->pAttributes) && (b->pAttributes)))) { onFail("a->pAttributes (Error: Mismatch in optional field)"); };
+ if (a->pAttributes && b->pAttributes)
+ {
+ if (!((memcmp(a->pAttributes, b->pAttributes, sizeof(const SECURITY_ATTRIBUTES)) == 0))) { onFail("a->pAttributes (Error: Unequal dyn array)"); };
+ }
+ if (!((a->dwAccess) == (b->dwAccess))) { onFail("a->dwAccess (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryWin32HandlePropertiesKHR(
+ const VkMemoryWin32HandlePropertiesKHR* a,
+ const VkMemoryWin32HandlePropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memoryTypeBits) == (b->memoryTypeBits))) { onFail("a->memoryTypeBits (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryGetWin32HandleInfoKHR(
+ const VkMemoryGetWin32HandleInfoKHR* a,
+ const VkMemoryGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void checkEqual_VkImportMemoryFdInfoKHR(
+ const VkImportMemoryFdInfoKHR* a,
+ const VkImportMemoryFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->fd) == (b->fd))) { onFail("a->fd (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryFdPropertiesKHR(
+ const VkMemoryFdPropertiesKHR* a,
+ const VkMemoryFdPropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memoryTypeBits) == (b->memoryTypeBits))) { onFail("a->memoryTypeBits (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMemoryGetFdInfoKHR(
+ const VkMemoryGetFdInfoKHR* a,
+ const VkMemoryGetFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void checkEqual_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* a,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->acquireCount (Error: Value not equal)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireSyncs (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireSyncs, b->pAcquireSyncs, a->acquireCount * sizeof(const VkDeviceMemory)) == 0))) { onFail("a->pAcquireSyncs (Error: Unequal dyn array)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireKeys (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireKeys, b->pAcquireKeys, a->acquireCount * sizeof(const uint64_t)) == 0))) { onFail("a->pAcquireKeys (Error: Unequal dyn array)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireTimeouts (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireTimeouts, b->pAcquireTimeouts, a->acquireCount * sizeof(const uint32_t)) == 0))) { onFail("a->pAcquireTimeouts (Error: Unequal dyn array)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->releaseCount (Error: Value not equal)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->pReleaseSyncs (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pReleaseSyncs, b->pReleaseSyncs, a->releaseCount * sizeof(const VkDeviceMemory)) == 0))) { onFail("a->pReleaseSyncs (Error: Unequal dyn array)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->pReleaseKeys (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pReleaseKeys, b->pReleaseKeys, a->releaseCount * sizeof(const uint64_t)) == 0))) { onFail("a->pReleaseKeys (Error: Unequal dyn array)"); };
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void checkEqual_VkImportSemaphoreWin32HandleInfoKHR(
+ const VkImportSemaphoreWin32HandleInfoKHR* a,
+ const VkImportSemaphoreWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->semaphore) == (b->semaphore))) { onFail("a->semaphore (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->handle) == (b->handle))) { onFail("a->handle (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportSemaphoreWin32HandleInfoKHR(
+ const VkExportSemaphoreWin32HandleInfoKHR* a,
+ const VkExportSemaphoreWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pAttributes) && !(b->pAttributes)) || ((a->pAttributes) && (b->pAttributes)))) { onFail("a->pAttributes (Error: Mismatch in optional field)"); };
+ if (a->pAttributes && b->pAttributes)
+ {
+ if (!((memcmp(a->pAttributes, b->pAttributes, sizeof(const SECURITY_ATTRIBUTES)) == 0))) { onFail("a->pAttributes (Error: Unequal dyn array)"); };
+ }
+ if (!((a->dwAccess) == (b->dwAccess))) { onFail("a->dwAccess (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkD3D12FenceSubmitInfoKHR(
+ const VkD3D12FenceSubmitInfoKHR* a,
+ const VkD3D12FenceSubmitInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->waitSemaphoreValuesCount) == (b->waitSemaphoreValuesCount))) { onFail("a->waitSemaphoreValuesCount (Error: Value not equal)"); };
+ if (!((!(a->pWaitSemaphoreValues) && !(b->pWaitSemaphoreValues)) || ((a->pWaitSemaphoreValues) && (b->pWaitSemaphoreValues)))) { onFail("a->pWaitSemaphoreValues (Error: Mismatch in optional field)"); };
+ if (a->pWaitSemaphoreValues && b->pWaitSemaphoreValues)
+ {
+ if (!((a->waitSemaphoreValuesCount) == (b->waitSemaphoreValuesCount))) { onFail("a->pWaitSemaphoreValues (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pWaitSemaphoreValues, b->pWaitSemaphoreValues, a->waitSemaphoreValuesCount * sizeof(const uint64_t)) == 0))) { onFail("a->pWaitSemaphoreValues (Error: Unequal dyn array)"); };
+ }
+ if (!((a->signalSemaphoreValuesCount) == (b->signalSemaphoreValuesCount))) { onFail("a->signalSemaphoreValuesCount (Error: Value not equal)"); };
+ if (!((!(a->pSignalSemaphoreValues) && !(b->pSignalSemaphoreValues)) || ((a->pSignalSemaphoreValues) && (b->pSignalSemaphoreValues)))) { onFail("a->pSignalSemaphoreValues (Error: Mismatch in optional field)"); };
+ if (a->pSignalSemaphoreValues && b->pSignalSemaphoreValues)
+ {
+ if (!((a->signalSemaphoreValuesCount) == (b->signalSemaphoreValuesCount))) { onFail("a->pSignalSemaphoreValues (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pSignalSemaphoreValues, b->pSignalSemaphoreValues, a->signalSemaphoreValuesCount * sizeof(const uint64_t)) == 0))) { onFail("a->pSignalSemaphoreValues (Error: Unequal dyn array)"); };
+ }
+}
+
+void checkEqual_VkSemaphoreGetWin32HandleInfoKHR(
+ const VkSemaphoreGetWin32HandleInfoKHR* a,
+ const VkSemaphoreGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->semaphore) == (b->semaphore))) { onFail("a->semaphore (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void checkEqual_VkImportSemaphoreFdInfoKHR(
+ const VkImportSemaphoreFdInfoKHR* a,
+ const VkImportSemaphoreFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->semaphore) == (b->semaphore))) { onFail("a->semaphore (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->fd) == (b->fd))) { onFail("a->fd (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSemaphoreGetFdInfoKHR(
+ const VkSemaphoreGetFdInfoKHR* a,
+ const VkSemaphoreGetFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->semaphore) == (b->semaphore))) { onFail("a->semaphore (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void checkEqual_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* a,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxPushDescriptors) == (b->maxPushDescriptors))) { onFail("a->maxPushDescriptors (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void checkEqual_VkRectLayerKHR(
+ const VkRectLayerKHR* a,
+ const VkRectLayerKHR* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkOffset2D(&a->offset, &b->offset, onFail);
+ checkEqual_VkExtent2D(&a->extent, &b->extent, onFail);
+ if (!((a->layer) == (b->layer))) { onFail("a->layer (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPresentRegionKHR(
+ const VkPresentRegionKHR* a,
+ const VkPresentRegionKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->rectangleCount) == (b->rectangleCount))) { onFail("a->rectangleCount (Error: Value not equal)"); };
+ if (!((!(a->pRectangles) && !(b->pRectangles)) || ((a->pRectangles) && (b->pRectangles)))) { onFail("a->pRectangles (Error: Mismatch in optional field)"); };
+ if (a->pRectangles && b->pRectangles)
+ {
+ if ((a->pRectangles) && (b->pRectangles))
+ {
+ if (!((a->rectangleCount) == (b->rectangleCount))) { onFail("a->pRectangles (Error: Lengths not equal)"); };
+ if ((a->rectangleCount) == (b->rectangleCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->rectangleCount; ++i)
+ {
+ checkEqual_VkRectLayerKHR(a->pRectangles + i, b->pRectangles + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+void checkEqual_VkPresentRegionsKHR(
+ const VkPresentRegionsKHR* a,
+ const VkPresentRegionsKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->swapchainCount (Error: Value not equal)"); };
+ if (!((!(a->pRegions) && !(b->pRegions)) || ((a->pRegions) && (b->pRegions)))) { onFail("a->pRegions (Error: Mismatch in optional field)"); };
+ if (a->pRegions && b->pRegions)
+ {
+ if ((a->pRegions) && (b->pRegions))
+ {
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pRegions (Error: Lengths not equal)"); };
+ if ((a->swapchainCount) == (b->swapchainCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->swapchainCount; ++i)
+ {
+ checkEqual_VkPresentRegionKHR(a->pRegions + i, b->pRegions + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void checkEqual_VkAttachmentDescription2KHR(
+ const VkAttachmentDescription2KHR* a,
+ const VkAttachmentDescription2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->samples) == (b->samples))) { onFail("a->samples (Error: Value not equal)"); };
+ if (!((a->loadOp) == (b->loadOp))) { onFail("a->loadOp (Error: Value not equal)"); };
+ if (!((a->storeOp) == (b->storeOp))) { onFail("a->storeOp (Error: Value not equal)"); };
+ if (!((a->stencilLoadOp) == (b->stencilLoadOp))) { onFail("a->stencilLoadOp (Error: Value not equal)"); };
+ if (!((a->stencilStoreOp) == (b->stencilStoreOp))) { onFail("a->stencilStoreOp (Error: Value not equal)"); };
+ if (!((a->initialLayout) == (b->initialLayout))) { onFail("a->initialLayout (Error: Value not equal)"); };
+ if (!((a->finalLayout) == (b->finalLayout))) { onFail("a->finalLayout (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAttachmentReference2KHR(
+ const VkAttachmentReference2KHR* a,
+ const VkAttachmentReference2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->attachment) == (b->attachment))) { onFail("a->attachment (Error: Value not equal)"); };
+ if (!((a->layout) == (b->layout))) { onFail("a->layout (Error: Value not equal)"); };
+ if (!((a->aspectMask) == (b->aspectMask))) { onFail("a->aspectMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSubpassDescription2KHR(
+ const VkSubpassDescription2KHR* a,
+ const VkSubpassDescription2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pipelineBindPoint) == (b->pipelineBindPoint))) { onFail("a->pipelineBindPoint (Error: Value not equal)"); };
+ if (!((a->viewMask) == (b->viewMask))) { onFail("a->viewMask (Error: Value not equal)"); };
+ if (!((a->inputAttachmentCount) == (b->inputAttachmentCount))) { onFail("a->inputAttachmentCount (Error: Value not equal)"); };
+ if ((a->pInputAttachments) && (b->pInputAttachments))
+ {
+ if (!((a->inputAttachmentCount) == (b->inputAttachmentCount))) { onFail("a->pInputAttachments (Error: Lengths not equal)"); };
+ if ((a->inputAttachmentCount) == (b->inputAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->inputAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference2KHR(a->pInputAttachments + i, b->pInputAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->colorAttachmentCount (Error: Value not equal)"); };
+ if ((a->pColorAttachments) && (b->pColorAttachments))
+ {
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->pColorAttachments (Error: Lengths not equal)"); };
+ if ((a->colorAttachmentCount) == (b->colorAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->colorAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference2KHR(a->pColorAttachments + i, b->pColorAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((!(a->pResolveAttachments) && !(b->pResolveAttachments)) || ((a->pResolveAttachments) && (b->pResolveAttachments)))) { onFail("a->pResolveAttachments (Error: Mismatch in optional field)"); };
+ if (a->pResolveAttachments && b->pResolveAttachments)
+ {
+ if ((a->pResolveAttachments) && (b->pResolveAttachments))
+ {
+ if (!((a->colorAttachmentCount) == (b->colorAttachmentCount))) { onFail("a->pResolveAttachments (Error: Lengths not equal)"); };
+ if ((a->colorAttachmentCount) == (b->colorAttachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->colorAttachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentReference2KHR(a->pResolveAttachments + i, b->pResolveAttachments + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((!(a->pDepthStencilAttachment) && !(b->pDepthStencilAttachment)) || ((a->pDepthStencilAttachment) && (b->pDepthStencilAttachment)))) { onFail("a->pDepthStencilAttachment (Error: Mismatch in optional field)"); };
+ if (a->pDepthStencilAttachment && b->pDepthStencilAttachment)
+ {
+ if ((a->pDepthStencilAttachment) && (b->pDepthStencilAttachment))
+ {
+ checkEqual_VkAttachmentReference2KHR(a->pDepthStencilAttachment, b->pDepthStencilAttachment, onFail);
+ }
+ }
+ if (!((a->preserveAttachmentCount) == (b->preserveAttachmentCount))) { onFail("a->preserveAttachmentCount (Error: Value not equal)"); };
+ if (!((a->preserveAttachmentCount) == (b->preserveAttachmentCount))) { onFail("a->pPreserveAttachments (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pPreserveAttachments, b->pPreserveAttachments, a->preserveAttachmentCount * sizeof(const uint32_t)) == 0))) { onFail("a->pPreserveAttachments (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkSubpassDependency2KHR(
+ const VkSubpassDependency2KHR* a,
+ const VkSubpassDependency2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcSubpass) == (b->srcSubpass))) { onFail("a->srcSubpass (Error: Value not equal)"); };
+ if (!((a->dstSubpass) == (b->dstSubpass))) { onFail("a->dstSubpass (Error: Value not equal)"); };
+ if (!((a->srcStageMask) == (b->srcStageMask))) { onFail("a->srcStageMask (Error: Value not equal)"); };
+ if (!((a->dstStageMask) == (b->dstStageMask))) { onFail("a->dstStageMask (Error: Value not equal)"); };
+ if (!((a->srcAccessMask) == (b->srcAccessMask))) { onFail("a->srcAccessMask (Error: Value not equal)"); };
+ if (!((a->dstAccessMask) == (b->dstAccessMask))) { onFail("a->dstAccessMask (Error: Value not equal)"); };
+ if (!((a->dependencyFlags) == (b->dependencyFlags))) { onFail("a->dependencyFlags (Error: Value not equal)"); };
+ if (!((a->viewOffset) == (b->viewOffset))) { onFail("a->viewOffset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkRenderPassCreateInfo2KHR(
+ const VkRenderPassCreateInfo2KHR* a,
+ const VkRenderPassCreateInfo2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->attachmentCount (Error: Value not equal)"); };
+ if ((a->pAttachments) && (b->pAttachments))
+ {
+ if (!((a->attachmentCount) == (b->attachmentCount))) { onFail("a->pAttachments (Error: Lengths not equal)"); };
+ if ((a->attachmentCount) == (b->attachmentCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->attachmentCount; ++i)
+ {
+ checkEqual_VkAttachmentDescription2KHR(a->pAttachments + i, b->pAttachments + i, onFail);
+ }
+ }
+ }
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->subpassCount (Error: Value not equal)"); };
+ if ((a->pSubpasses) && (b->pSubpasses))
+ {
+ if (!((a->subpassCount) == (b->subpassCount))) { onFail("a->pSubpasses (Error: Lengths not equal)"); };
+ if ((a->subpassCount) == (b->subpassCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->subpassCount; ++i)
+ {
+ checkEqual_VkSubpassDescription2KHR(a->pSubpasses + i, b->pSubpasses + i, onFail);
+ }
+ }
+ }
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->dependencyCount (Error: Value not equal)"); };
+ if ((a->pDependencies) && (b->pDependencies))
+ {
+ if (!((a->dependencyCount) == (b->dependencyCount))) { onFail("a->pDependencies (Error: Lengths not equal)"); };
+ if ((a->dependencyCount) == (b->dependencyCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->dependencyCount; ++i)
+ {
+ checkEqual_VkSubpassDependency2KHR(a->pDependencies + i, b->pDependencies + i, onFail);
+ }
+ }
+ }
+ if (!((a->correlatedViewMaskCount) == (b->correlatedViewMaskCount))) { onFail("a->correlatedViewMaskCount (Error: Value not equal)"); };
+ if (!((a->correlatedViewMaskCount) == (b->correlatedViewMaskCount))) { onFail("a->pCorrelatedViewMasks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCorrelatedViewMasks, b->pCorrelatedViewMasks, a->correlatedViewMaskCount * sizeof(const uint32_t)) == 0))) { onFail("a->pCorrelatedViewMasks (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkSubpassBeginInfoKHR(
+ const VkSubpassBeginInfoKHR* a,
+ const VkSubpassBeginInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->contents) == (b->contents))) { onFail("a->contents (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSubpassEndInfoKHR(
+ const VkSubpassEndInfoKHR* a,
+ const VkSubpassEndInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void checkEqual_VkSharedPresentSurfaceCapabilitiesKHR(
+ const VkSharedPresentSurfaceCapabilitiesKHR* a,
+ const VkSharedPresentSurfaceCapabilitiesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->sharedPresentSupportedUsageFlags) == (b->sharedPresentSupportedUsageFlags))) { onFail("a->sharedPresentSupportedUsageFlags (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void checkEqual_VkImportFenceWin32HandleInfoKHR(
+ const VkImportFenceWin32HandleInfoKHR* a,
+ const VkImportFenceWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->fence) == (b->fence))) { onFail("a->fence (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->handle) == (b->handle))) { onFail("a->handle (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportFenceWin32HandleInfoKHR(
+ const VkExportFenceWin32HandleInfoKHR* a,
+ const VkExportFenceWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pAttributes) && !(b->pAttributes)) || ((a->pAttributes) && (b->pAttributes)))) { onFail("a->pAttributes (Error: Mismatch in optional field)"); };
+ if (a->pAttributes && b->pAttributes)
+ {
+ if (!((memcmp(a->pAttributes, b->pAttributes, sizeof(const SECURITY_ATTRIBUTES)) == 0))) { onFail("a->pAttributes (Error: Unequal dyn array)"); };
+ }
+ if (!((a->dwAccess) == (b->dwAccess))) { onFail("a->dwAccess (Error: Value not equal)"); };
+ if (!((a->name) == (b->name))) { onFail("a->name (Error: Value not equal)"); };
+}
+
+void checkEqual_VkFenceGetWin32HandleInfoKHR(
+ const VkFenceGetWin32HandleInfoKHR* a,
+ const VkFenceGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->fence) == (b->fence))) { onFail("a->fence (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void checkEqual_VkImportFenceFdInfoKHR(
+ const VkImportFenceFdInfoKHR* a,
+ const VkImportFenceFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->fence) == (b->fence))) { onFail("a->fence (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->fd) == (b->fd))) { onFail("a->fd (Error: Value not equal)"); };
+}
+
+void checkEqual_VkFenceGetFdInfoKHR(
+ const VkFenceGetFdInfoKHR* a,
+ const VkFenceGetFdInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->fence) == (b->fence))) { onFail("a->fence (Error: Value not equal)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void checkEqual_VkPhysicalDeviceSurfaceInfo2KHR(
+ const VkPhysicalDeviceSurfaceInfo2KHR* a,
+ const VkPhysicalDeviceSurfaceInfo2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->surface) == (b->surface))) { onFail("a->surface (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSurfaceCapabilities2KHR(
+ const VkSurfaceCapabilities2KHR* a,
+ const VkSurfaceCapabilities2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkSurfaceCapabilitiesKHR(&a->surfaceCapabilities, &b->surfaceCapabilities, onFail);
+}
+
+void checkEqual_VkSurfaceFormat2KHR(
+ const VkSurfaceFormat2KHR* a,
+ const VkSurfaceFormat2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkSurfaceFormatKHR(&a->surfaceFormat, &b->surfaceFormat, onFail);
+}
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void checkEqual_VkDisplayProperties2KHR(
+ const VkDisplayProperties2KHR* a,
+ const VkDisplayProperties2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkDisplayPropertiesKHR(&a->displayProperties, &b->displayProperties, onFail);
+}
+
+void checkEqual_VkDisplayPlaneProperties2KHR(
+ const VkDisplayPlaneProperties2KHR* a,
+ const VkDisplayPlaneProperties2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkDisplayPlanePropertiesKHR(&a->displayPlaneProperties, &b->displayPlaneProperties, onFail);
+}
+
+void checkEqual_VkDisplayModeProperties2KHR(
+ const VkDisplayModeProperties2KHR* a,
+ const VkDisplayModeProperties2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkDisplayModePropertiesKHR(&a->displayModeProperties, &b->displayModeProperties, onFail);
+}
+
+void checkEqual_VkDisplayPlaneInfo2KHR(
+ const VkDisplayPlaneInfo2KHR* a,
+ const VkDisplayPlaneInfo2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->mode) == (b->mode))) { onFail("a->mode (Error: Value not equal)"); };
+ if (!((a->planeIndex) == (b->planeIndex))) { onFail("a->planeIndex (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDisplayPlaneCapabilities2KHR(
+ const VkDisplayPlaneCapabilities2KHR* a,
+ const VkDisplayPlaneCapabilities2KHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkDisplayPlaneCapabilitiesKHR(&a->capabilities, &b->capabilities, onFail);
+}
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void checkEqual_VkImageFormatListCreateInfoKHR(
+ const VkImageFormatListCreateInfoKHR* a,
+ const VkImageFormatListCreateInfoKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->viewFormatCount) == (b->viewFormatCount))) { onFail("a->viewFormatCount (Error: Value not equal)"); };
+ if (!((a->viewFormatCount) == (b->viewFormatCount))) { onFail("a->pViewFormats (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pViewFormats, b->pViewFormats, a->viewFormatCount * sizeof(const VkFormat)) == 0))) { onFail("a->pViewFormats (Error: Unequal dyn array)"); };
+}
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void checkEqual_VkPhysicalDevice8BitStorageFeaturesKHR(
+ const VkPhysicalDevice8BitStorageFeaturesKHR* a,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->storageBuffer8BitAccess) == (b->storageBuffer8BitAccess))) { onFail("a->storageBuffer8BitAccess (Error: Value not equal)"); };
+ if (!((a->uniformAndStorageBuffer8BitAccess) == (b->uniformAndStorageBuffer8BitAccess))) { onFail("a->uniformAndStorageBuffer8BitAccess (Error: Value not equal)"); };
+ if (!((a->storagePushConstant8) == (b->storagePushConstant8))) { onFail("a->storagePushConstant8 (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_debug_report
+void checkEqual_VkDebugReportCallbackCreateInfoEXT(
+ const VkDebugReportCallbackCreateInfoEXT* a,
+ const VkDebugReportCallbackCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pfnCallback) == (b->pfnCallback))) { onFail("a->pfnCallback (Error: Value not equal)"); };
+ if (!((!(a->pUserData) && !(b->pUserData)) || ((a->pUserData) && (b->pUserData)))) { onFail("a->pUserData (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void checkEqual_VkPipelineRasterizationStateRasterizationOrderAMD(
+ const VkPipelineRasterizationStateRasterizationOrderAMD* a,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->rasterizationOrder) == (b->rasterizationOrder))) { onFail("a->rasterizationOrder (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void checkEqual_VkDebugMarkerObjectNameInfoEXT(
+ const VkDebugMarkerObjectNameInfoEXT* a,
+ const VkDebugMarkerObjectNameInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectType) == (b->objectType))) { onFail("a->objectType (Error: Value not equal)"); };
+ if (!((a->object) == (b->object))) { onFail("a->object (Error: Value not equal)"); };
+ if (!((!(a->pObjectName) && !(b->pObjectName)) || ((a->pObjectName) && (b->pObjectName)))) { onFail("a->pObjectName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pObjectName) && (b->pObjectName))
+ {
+ if (!((strcmp(a->pObjectName, b->pObjectName) == 0))) { onFail("a->pObjectName (Error: Unequal strings)"); };
+ }
+}
+
+void checkEqual_VkDebugMarkerObjectTagInfoEXT(
+ const VkDebugMarkerObjectTagInfoEXT* a,
+ const VkDebugMarkerObjectTagInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectType) == (b->objectType))) { onFail("a->objectType (Error: Value not equal)"); };
+ if (!((a->object) == (b->object))) { onFail("a->object (Error: Value not equal)"); };
+ if (!((a->tagName) == (b->tagName))) { onFail("a->tagName (Error: Value not equal)"); };
+ if (!((a->tagSize) == (b->tagSize))) { onFail("a->tagSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDebugMarkerMarkerInfoEXT(
+ const VkDebugMarkerMarkerInfoEXT* a,
+ const VkDebugMarkerMarkerInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pMarkerName) && !(b->pMarkerName)) || ((a->pMarkerName) && (b->pMarkerName)))) { onFail("a->pMarkerName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pMarkerName) && (b->pMarkerName))
+ {
+ if (!((strcmp(a->pMarkerName, b->pMarkerName) == 0))) { onFail("a->pMarkerName (Error: Unequal strings)"); };
+ }
+ if (!((memcmp(a->color, b->color, 4 * sizeof(float)) == 0))) { onFail("a->color (Error: Unequal static array)"); };
+}
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void checkEqual_VkDedicatedAllocationImageCreateInfoNV(
+ const VkDedicatedAllocationImageCreateInfoNV* a,
+ const VkDedicatedAllocationImageCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->dedicatedAllocation) == (b->dedicatedAllocation))) { onFail("a->dedicatedAllocation (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDedicatedAllocationBufferCreateInfoNV(
+ const VkDedicatedAllocationBufferCreateInfoNV* a,
+ const VkDedicatedAllocationBufferCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->dedicatedAllocation) == (b->dedicatedAllocation))) { onFail("a->dedicatedAllocation (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDedicatedAllocationMemoryAllocateInfoNV(
+ const VkDedicatedAllocationMemoryAllocateInfoNV* a,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->image) == (b->image))) { onFail("a->image (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void checkEqual_VkTextureLODGatherFormatPropertiesAMD(
+ const VkTextureLODGatherFormatPropertiesAMD* a,
+ const VkTextureLODGatherFormatPropertiesAMD* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->supportsTextureGatherLODBiasAMD) == (b->supportsTextureGatherLODBiasAMD))) { onFail("a->supportsTextureGatherLODBiasAMD (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_AMD_shader_info
+void checkEqual_VkShaderResourceUsageAMD(
+ const VkShaderResourceUsageAMD* a,
+ const VkShaderResourceUsageAMD* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->numUsedVgprs) == (b->numUsedVgprs))) { onFail("a->numUsedVgprs (Error: Value not equal)"); };
+ if (!((a->numUsedSgprs) == (b->numUsedSgprs))) { onFail("a->numUsedSgprs (Error: Value not equal)"); };
+ if (!((a->ldsSizePerLocalWorkGroup) == (b->ldsSizePerLocalWorkGroup))) { onFail("a->ldsSizePerLocalWorkGroup (Error: Value not equal)"); };
+ if (!((a->ldsUsageSizeInBytes) == (b->ldsUsageSizeInBytes))) { onFail("a->ldsUsageSizeInBytes (Error: Value not equal)"); };
+ if (!((a->scratchMemUsageInBytes) == (b->scratchMemUsageInBytes))) { onFail("a->scratchMemUsageInBytes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkShaderStatisticsInfoAMD(
+ const VkShaderStatisticsInfoAMD* a,
+ const VkShaderStatisticsInfoAMD* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->shaderStageMask) == (b->shaderStageMask))) { onFail("a->shaderStageMask (Error: Value not equal)"); };
+ checkEqual_VkShaderResourceUsageAMD(&a->resourceUsage, &b->resourceUsage, onFail);
+ if (!((a->numPhysicalVgprs) == (b->numPhysicalVgprs))) { onFail("a->numPhysicalVgprs (Error: Value not equal)"); };
+ if (!((a->numPhysicalSgprs) == (b->numPhysicalSgprs))) { onFail("a->numPhysicalSgprs (Error: Value not equal)"); };
+ if (!((a->numAvailableVgprs) == (b->numAvailableVgprs))) { onFail("a->numAvailableVgprs (Error: Value not equal)"); };
+ if (!((a->numAvailableSgprs) == (b->numAvailableSgprs))) { onFail("a->numAvailableSgprs (Error: Value not equal)"); };
+ if (!((memcmp(a->computeWorkGroupSize, b->computeWorkGroupSize, 3 * sizeof(uint32_t)) == 0))) { onFail("a->computeWorkGroupSize (Error: Unequal static array)"); };
+}
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void checkEqual_VkExternalImageFormatPropertiesNV(
+ const VkExternalImageFormatPropertiesNV* a,
+ const VkExternalImageFormatPropertiesNV* b,
+ OnFailCompareFunc onFail)
+{
+ checkEqual_VkImageFormatProperties(&a->imageFormatProperties, &b->imageFormatProperties, onFail);
+ if (!((a->externalMemoryFeatures) == (b->externalMemoryFeatures))) { onFail("a->externalMemoryFeatures (Error: Value not equal)"); };
+ if (!((a->exportFromImportedHandleTypes) == (b->exportFromImportedHandleTypes))) { onFail("a->exportFromImportedHandleTypes (Error: Value not equal)"); };
+ if (!((a->compatibleHandleTypes) == (b->compatibleHandleTypes))) { onFail("a->compatibleHandleTypes (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_external_memory
+void checkEqual_VkExternalMemoryImageCreateInfoNV(
+ const VkExternalMemoryImageCreateInfoNV* a,
+ const VkExternalMemoryImageCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportMemoryAllocateInfoNV(
+ const VkExportMemoryAllocateInfoNV* a,
+ const VkExportMemoryAllocateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleTypes) == (b->handleTypes))) { onFail("a->handleTypes (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void checkEqual_VkImportMemoryWin32HandleInfoNV(
+ const VkImportMemoryWin32HandleInfoNV* a,
+ const VkImportMemoryWin32HandleInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((a->handle) == (b->handle))) { onFail("a->handle (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExportMemoryWin32HandleInfoNV(
+ const VkExportMemoryWin32HandleInfoNV* a,
+ const VkExportMemoryWin32HandleInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pAttributes) && !(b->pAttributes)) || ((a->pAttributes) && (b->pAttributes)))) { onFail("a->pAttributes (Error: Mismatch in optional field)"); };
+ if (a->pAttributes && b->pAttributes)
+ {
+ if (!((memcmp(a->pAttributes, b->pAttributes, sizeof(const SECURITY_ATTRIBUTES)) == 0))) { onFail("a->pAttributes (Error: Unequal dyn array)"); };
+ }
+ if (!((a->dwAccess) == (b->dwAccess))) { onFail("a->dwAccess (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void checkEqual_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* a,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->acquireCount (Error: Value not equal)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireSyncs (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireSyncs, b->pAcquireSyncs, a->acquireCount * sizeof(const VkDeviceMemory)) == 0))) { onFail("a->pAcquireSyncs (Error: Unequal dyn array)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireKeys (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireKeys, b->pAcquireKeys, a->acquireCount * sizeof(const uint64_t)) == 0))) { onFail("a->pAcquireKeys (Error: Unequal dyn array)"); };
+ if (!((a->acquireCount) == (b->acquireCount))) { onFail("a->pAcquireTimeoutMilliseconds (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pAcquireTimeoutMilliseconds, b->pAcquireTimeoutMilliseconds, a->acquireCount * sizeof(const uint32_t)) == 0))) { onFail("a->pAcquireTimeoutMilliseconds (Error: Unequal dyn array)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->releaseCount (Error: Value not equal)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->pReleaseSyncs (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pReleaseSyncs, b->pReleaseSyncs, a->releaseCount * sizeof(const VkDeviceMemory)) == 0))) { onFail("a->pReleaseSyncs (Error: Unequal dyn array)"); };
+ if (!((a->releaseCount) == (b->releaseCount))) { onFail("a->pReleaseKeys (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pReleaseKeys, b->pReleaseKeys, a->releaseCount * sizeof(const uint64_t)) == 0))) { onFail("a->pReleaseKeys (Error: Unequal dyn array)"); };
+}
+
+#endif
+#ifdef VK_EXT_validation_flags
+void checkEqual_VkValidationFlagsEXT(
+ const VkValidationFlagsEXT* a,
+ const VkValidationFlagsEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->disabledValidationCheckCount) == (b->disabledValidationCheckCount))) { onFail("a->disabledValidationCheckCount (Error: Value not equal)"); };
+ if (!((a->disabledValidationCheckCount) == (b->disabledValidationCheckCount))) { onFail("a->pDisabledValidationChecks (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDisabledValidationChecks, b->pDisabledValidationChecks, a->disabledValidationCheckCount * sizeof(const VkValidationCheckEXT)) == 0))) { onFail("a->pDisabledValidationChecks (Error: Unequal dyn array)"); };
+}
+
+#endif
+#ifdef VK_NN_vi_surface
+void checkEqual_VkViSurfaceCreateInfoNN(
+ const VkViSurfaceCreateInfoNN* a,
+ const VkViSurfaceCreateInfoNN* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->window) && !(b->window)) || ((a->window) && (b->window)))) { onFail("a->window (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void checkEqual_VkConditionalRenderingBeginInfoEXT(
+ const VkConditionalRenderingBeginInfoEXT* a,
+ const VkConditionalRenderingBeginInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* a,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->conditionalRendering) == (b->conditionalRendering))) { onFail("a->conditionalRendering (Error: Value not equal)"); };
+ if (!((a->inheritedConditionalRendering) == (b->inheritedConditionalRendering))) { onFail("a->inheritedConditionalRendering (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* a,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->conditionalRenderingEnable) == (b->conditionalRenderingEnable))) { onFail("a->conditionalRenderingEnable (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void checkEqual_VkDeviceGeneratedCommandsFeaturesNVX(
+ const VkDeviceGeneratedCommandsFeaturesNVX* a,
+ const VkDeviceGeneratedCommandsFeaturesNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->computeBindingPointSupport) == (b->computeBindingPointSupport))) { onFail("a->computeBindingPointSupport (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceGeneratedCommandsLimitsNVX(
+ const VkDeviceGeneratedCommandsLimitsNVX* a,
+ const VkDeviceGeneratedCommandsLimitsNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxIndirectCommandsLayoutTokenCount) == (b->maxIndirectCommandsLayoutTokenCount))) { onFail("a->maxIndirectCommandsLayoutTokenCount (Error: Value not equal)"); };
+ if (!((a->maxObjectEntryCounts) == (b->maxObjectEntryCounts))) { onFail("a->maxObjectEntryCounts (Error: Value not equal)"); };
+ if (!((a->minSequenceCountBufferOffsetAlignment) == (b->minSequenceCountBufferOffsetAlignment))) { onFail("a->minSequenceCountBufferOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->minSequenceIndexBufferOffsetAlignment) == (b->minSequenceIndexBufferOffsetAlignment))) { onFail("a->minSequenceIndexBufferOffsetAlignment (Error: Value not equal)"); };
+ if (!((a->minCommandsTokenBufferOffsetAlignment) == (b->minCommandsTokenBufferOffsetAlignment))) { onFail("a->minCommandsTokenBufferOffsetAlignment (Error: Value not equal)"); };
+}
+
+void checkEqual_VkIndirectCommandsTokenNVX(
+ const VkIndirectCommandsTokenNVX* a,
+ const VkIndirectCommandsTokenNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->tokenType) == (b->tokenType))) { onFail("a->tokenType (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->offset) == (b->offset))) { onFail("a->offset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkIndirectCommandsLayoutTokenNVX(
+ const VkIndirectCommandsLayoutTokenNVX* a,
+ const VkIndirectCommandsLayoutTokenNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->tokenType) == (b->tokenType))) { onFail("a->tokenType (Error: Value not equal)"); };
+ if (!((a->bindingUnit) == (b->bindingUnit))) { onFail("a->bindingUnit (Error: Value not equal)"); };
+ if (!((a->dynamicCount) == (b->dynamicCount))) { onFail("a->dynamicCount (Error: Value not equal)"); };
+ if (!((a->divisor) == (b->divisor))) { onFail("a->divisor (Error: Value not equal)"); };
+}
+
+void checkEqual_VkIndirectCommandsLayoutCreateInfoNVX(
+ const VkIndirectCommandsLayoutCreateInfoNVX* a,
+ const VkIndirectCommandsLayoutCreateInfoNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->pipelineBindPoint) == (b->pipelineBindPoint))) { onFail("a->pipelineBindPoint (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->tokenCount) == (b->tokenCount))) { onFail("a->tokenCount (Error: Value not equal)"); };
+ if ((a->pTokens) && (b->pTokens))
+ {
+ if (!((a->tokenCount) == (b->tokenCount))) { onFail("a->pTokens (Error: Lengths not equal)"); };
+ if ((a->tokenCount) == (b->tokenCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->tokenCount; ++i)
+ {
+ checkEqual_VkIndirectCommandsLayoutTokenNVX(a->pTokens + i, b->pTokens + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkCmdProcessCommandsInfoNVX(
+ const VkCmdProcessCommandsInfoNVX* a,
+ const VkCmdProcessCommandsInfoNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectTable) == (b->objectTable))) { onFail("a->objectTable (Error: Value not equal)"); };
+ if (!((a->indirectCommandsLayout) == (b->indirectCommandsLayout))) { onFail("a->indirectCommandsLayout (Error: Value not equal)"); };
+ if (!((a->indirectCommandsTokenCount) == (b->indirectCommandsTokenCount))) { onFail("a->indirectCommandsTokenCount (Error: Value not equal)"); };
+ if ((a->pIndirectCommandsTokens) && (b->pIndirectCommandsTokens))
+ {
+ if (!((a->indirectCommandsTokenCount) == (b->indirectCommandsTokenCount))) { onFail("a->pIndirectCommandsTokens (Error: Lengths not equal)"); };
+ if ((a->indirectCommandsTokenCount) == (b->indirectCommandsTokenCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->indirectCommandsTokenCount; ++i)
+ {
+ checkEqual_VkIndirectCommandsTokenNVX(a->pIndirectCommandsTokens + i, b->pIndirectCommandsTokens + i, onFail);
+ }
+ }
+ }
+ if (!((a->maxSequencesCount) == (b->maxSequencesCount))) { onFail("a->maxSequencesCount (Error: Value not equal)"); };
+ if (!((a->targetCommandBuffer) == (b->targetCommandBuffer))) { onFail("a->targetCommandBuffer (Error: Value not equal)"); };
+ if (!((a->sequencesCountBuffer) == (b->sequencesCountBuffer))) { onFail("a->sequencesCountBuffer (Error: Value not equal)"); };
+ if (!((a->sequencesCountOffset) == (b->sequencesCountOffset))) { onFail("a->sequencesCountOffset (Error: Value not equal)"); };
+ if (!((a->sequencesIndexBuffer) == (b->sequencesIndexBuffer))) { onFail("a->sequencesIndexBuffer (Error: Value not equal)"); };
+ if (!((a->sequencesIndexOffset) == (b->sequencesIndexOffset))) { onFail("a->sequencesIndexOffset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCmdReserveSpaceForCommandsInfoNVX(
+ const VkCmdReserveSpaceForCommandsInfoNVX* a,
+ const VkCmdReserveSpaceForCommandsInfoNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectTable) == (b->objectTable))) { onFail("a->objectTable (Error: Value not equal)"); };
+ if (!((a->indirectCommandsLayout) == (b->indirectCommandsLayout))) { onFail("a->indirectCommandsLayout (Error: Value not equal)"); };
+ if (!((a->maxSequencesCount) == (b->maxSequencesCount))) { onFail("a->maxSequencesCount (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTableCreateInfoNVX(
+ const VkObjectTableCreateInfoNVX* a,
+ const VkObjectTableCreateInfoNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->objectCount (Error: Value not equal)"); };
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->pObjectEntryTypes (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pObjectEntryTypes, b->pObjectEntryTypes, a->objectCount * sizeof(const VkObjectEntryTypeNVX)) == 0))) { onFail("a->pObjectEntryTypes (Error: Unequal dyn array)"); };
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->pObjectEntryCounts (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pObjectEntryCounts, b->pObjectEntryCounts, a->objectCount * sizeof(const uint32_t)) == 0))) { onFail("a->pObjectEntryCounts (Error: Unequal dyn array)"); };
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->pObjectEntryUsageFlags (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pObjectEntryUsageFlags, b->pObjectEntryUsageFlags, a->objectCount * sizeof(const VkObjectEntryUsageFlagsNVX)) == 0))) { onFail("a->pObjectEntryUsageFlags (Error: Unequal dyn array)"); };
+ if (!((a->maxUniformBuffersPerDescriptor) == (b->maxUniformBuffersPerDescriptor))) { onFail("a->maxUniformBuffersPerDescriptor (Error: Value not equal)"); };
+ if (!((a->maxStorageBuffersPerDescriptor) == (b->maxStorageBuffersPerDescriptor))) { onFail("a->maxStorageBuffersPerDescriptor (Error: Value not equal)"); };
+ if (!((a->maxStorageImagesPerDescriptor) == (b->maxStorageImagesPerDescriptor))) { onFail("a->maxStorageImagesPerDescriptor (Error: Value not equal)"); };
+ if (!((a->maxSampledImagesPerDescriptor) == (b->maxSampledImagesPerDescriptor))) { onFail("a->maxSampledImagesPerDescriptor (Error: Value not equal)"); };
+ if (!((a->maxPipelineLayouts) == (b->maxPipelineLayouts))) { onFail("a->maxPipelineLayouts (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTableEntryNVX(
+ const VkObjectTableEntryNVX* a,
+ const VkObjectTableEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTablePipelineEntryNVX(
+ const VkObjectTablePipelineEntryNVX* a,
+ const VkObjectTablePipelineEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pipeline) == (b->pipeline))) { onFail("a->pipeline (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTableDescriptorSetEntryNVX(
+ const VkObjectTableDescriptorSetEntryNVX* a,
+ const VkObjectTableDescriptorSetEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pipelineLayout) == (b->pipelineLayout))) { onFail("a->pipelineLayout (Error: Value not equal)"); };
+ if (!((a->descriptorSet) == (b->descriptorSet))) { onFail("a->descriptorSet (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTableVertexBufferEntryNVX(
+ const VkObjectTableVertexBufferEntryNVX* a,
+ const VkObjectTableVertexBufferEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTableIndexBufferEntryNVX(
+ const VkObjectTableIndexBufferEntryNVX* a,
+ const VkObjectTableIndexBufferEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->buffer) == (b->buffer))) { onFail("a->buffer (Error: Value not equal)"); };
+ if (!((a->indexType) == (b->indexType))) { onFail("a->indexType (Error: Value not equal)"); };
+}
+
+void checkEqual_VkObjectTablePushConstantEntryNVX(
+ const VkObjectTablePushConstantEntryNVX* a,
+ const VkObjectTablePushConstantEntryNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->type) == (b->type))) { onFail("a->type (Error: Value not equal)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->pipelineLayout) == (b->pipelineLayout))) { onFail("a->pipelineLayout (Error: Value not equal)"); };
+ if (!((a->stageFlags) == (b->stageFlags))) { onFail("a->stageFlags (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void checkEqual_VkViewportWScalingNV(
+ const VkViewportWScalingNV* a,
+ const VkViewportWScalingNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->xcoeff) == (b->xcoeff))) { onFail("a->xcoeff (Error: Value not equal)"); };
+ if (!((a->ycoeff) == (b->ycoeff))) { onFail("a->ycoeff (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineViewportWScalingStateCreateInfoNV(
+ const VkPipelineViewportWScalingStateCreateInfoNV* a,
+ const VkPipelineViewportWScalingStateCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->viewportWScalingEnable) == (b->viewportWScalingEnable))) { onFail("a->viewportWScalingEnable (Error: Value not equal)"); };
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->viewportCount (Error: Value not equal)"); };
+ if (!((!(a->pViewportWScalings) && !(b->pViewportWScalings)) || ((a->pViewportWScalings) && (b->pViewportWScalings)))) { onFail("a->pViewportWScalings (Error: Mismatch in optional field)"); };
+ if (a->pViewportWScalings && b->pViewportWScalings)
+ {
+ if ((a->pViewportWScalings) && (b->pViewportWScalings))
+ {
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->pViewportWScalings (Error: Lengths not equal)"); };
+ if ((a->viewportCount) == (b->viewportCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->viewportCount; ++i)
+ {
+ checkEqual_VkViewportWScalingNV(a->pViewportWScalings + i, b->pViewportWScalings + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void checkEqual_VkSurfaceCapabilities2EXT(
+ const VkSurfaceCapabilities2EXT* a,
+ const VkSurfaceCapabilities2EXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->minImageCount) == (b->minImageCount))) { onFail("a->minImageCount (Error: Value not equal)"); };
+ if (!((a->maxImageCount) == (b->maxImageCount))) { onFail("a->maxImageCount (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->currentExtent, &b->currentExtent, onFail);
+ checkEqual_VkExtent2D(&a->minImageExtent, &b->minImageExtent, onFail);
+ checkEqual_VkExtent2D(&a->maxImageExtent, &b->maxImageExtent, onFail);
+ if (!((a->maxImageArrayLayers) == (b->maxImageArrayLayers))) { onFail("a->maxImageArrayLayers (Error: Value not equal)"); };
+ if (!((a->supportedTransforms) == (b->supportedTransforms))) { onFail("a->supportedTransforms (Error: Value not equal)"); };
+ if (!((a->currentTransform) == (b->currentTransform))) { onFail("a->currentTransform (Error: Value not equal)"); };
+ if (!((a->supportedCompositeAlpha) == (b->supportedCompositeAlpha))) { onFail("a->supportedCompositeAlpha (Error: Value not equal)"); };
+ if (!((a->supportedUsageFlags) == (b->supportedUsageFlags))) { onFail("a->supportedUsageFlags (Error: Value not equal)"); };
+ if (!((a->supportedSurfaceCounters) == (b->supportedSurfaceCounters))) { onFail("a->supportedSurfaceCounters (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_display_control
+void checkEqual_VkDisplayPowerInfoEXT(
+ const VkDisplayPowerInfoEXT* a,
+ const VkDisplayPowerInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->powerState) == (b->powerState))) { onFail("a->powerState (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDeviceEventInfoEXT(
+ const VkDeviceEventInfoEXT* a,
+ const VkDeviceEventInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->deviceEvent) == (b->deviceEvent))) { onFail("a->deviceEvent (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDisplayEventInfoEXT(
+ const VkDisplayEventInfoEXT* a,
+ const VkDisplayEventInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->displayEvent) == (b->displayEvent))) { onFail("a->displayEvent (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSwapchainCounterCreateInfoEXT(
+ const VkSwapchainCounterCreateInfoEXT* a,
+ const VkSwapchainCounterCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->surfaceCounters) == (b->surfaceCounters))) { onFail("a->surfaceCounters (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void checkEqual_VkRefreshCycleDurationGOOGLE(
+ const VkRefreshCycleDurationGOOGLE* a,
+ const VkRefreshCycleDurationGOOGLE* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->refreshDuration) == (b->refreshDuration))) { onFail("a->refreshDuration (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPastPresentationTimingGOOGLE(
+ const VkPastPresentationTimingGOOGLE* a,
+ const VkPastPresentationTimingGOOGLE* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->presentID) == (b->presentID))) { onFail("a->presentID (Error: Value not equal)"); };
+ if (!((a->desiredPresentTime) == (b->desiredPresentTime))) { onFail("a->desiredPresentTime (Error: Value not equal)"); };
+ if (!((a->actualPresentTime) == (b->actualPresentTime))) { onFail("a->actualPresentTime (Error: Value not equal)"); };
+ if (!((a->earliestPresentTime) == (b->earliestPresentTime))) { onFail("a->earliestPresentTime (Error: Value not equal)"); };
+ if (!((a->presentMargin) == (b->presentMargin))) { onFail("a->presentMargin (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPresentTimeGOOGLE(
+ const VkPresentTimeGOOGLE* a,
+ const VkPresentTimeGOOGLE* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->presentID) == (b->presentID))) { onFail("a->presentID (Error: Value not equal)"); };
+ if (!((a->desiredPresentTime) == (b->desiredPresentTime))) { onFail("a->desiredPresentTime (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPresentTimesInfoGOOGLE(
+ const VkPresentTimesInfoGOOGLE* a,
+ const VkPresentTimesInfoGOOGLE* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->swapchainCount (Error: Value not equal)"); };
+ if (!((!(a->pTimes) && !(b->pTimes)) || ((a->pTimes) && (b->pTimes)))) { onFail("a->pTimes (Error: Mismatch in optional field)"); };
+ if (a->pTimes && b->pTimes)
+ {
+ if ((a->pTimes) && (b->pTimes))
+ {
+ if (!((a->swapchainCount) == (b->swapchainCount))) { onFail("a->pTimes (Error: Lengths not equal)"); };
+ if ((a->swapchainCount) == (b->swapchainCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->swapchainCount; ++i)
+ {
+ checkEqual_VkPresentTimeGOOGLE(a->pTimes + i, b->pTimes + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void checkEqual_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* a,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->perViewPositionAllComponents) == (b->perViewPositionAllComponents))) { onFail("a->perViewPositionAllComponents (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void checkEqual_VkViewportSwizzleNV(
+ const VkViewportSwizzleNV* a,
+ const VkViewportSwizzleNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+ if (!((a->z) == (b->z))) { onFail("a->z (Error: Value not equal)"); };
+ if (!((a->w) == (b->w))) { onFail("a->w (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineViewportSwizzleStateCreateInfoNV(
+ const VkPipelineViewportSwizzleStateCreateInfoNV* a,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->viewportCount (Error: Value not equal)"); };
+ if (!((!(a->pViewportSwizzles) && !(b->pViewportSwizzles)) || ((a->pViewportSwizzles) && (b->pViewportSwizzles)))) { onFail("a->pViewportSwizzles (Error: Mismatch in optional field)"); };
+ if (a->pViewportSwizzles && b->pViewportSwizzles)
+ {
+ if ((a->pViewportSwizzles) && (b->pViewportSwizzles))
+ {
+ if (!((a->viewportCount) == (b->viewportCount))) { onFail("a->pViewportSwizzles (Error: Lengths not equal)"); };
+ if ((a->viewportCount) == (b->viewportCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->viewportCount; ++i)
+ {
+ checkEqual_VkViewportSwizzleNV(a->pViewportSwizzles + i, b->pViewportSwizzles + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void checkEqual_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* a,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxDiscardRectangles) == (b->maxDiscardRectangles))) { onFail("a->maxDiscardRectangles (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* a,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->discardRectangleMode) == (b->discardRectangleMode))) { onFail("a->discardRectangleMode (Error: Value not equal)"); };
+ if (!((a->discardRectangleCount) == (b->discardRectangleCount))) { onFail("a->discardRectangleCount (Error: Value not equal)"); };
+ if (!((!(a->pDiscardRectangles) && !(b->pDiscardRectangles)) || ((a->pDiscardRectangles) && (b->pDiscardRectangles)))) { onFail("a->pDiscardRectangles (Error: Mismatch in optional field)"); };
+ if (a->pDiscardRectangles && b->pDiscardRectangles)
+ {
+ if ((a->pDiscardRectangles) && (b->pDiscardRectangles))
+ {
+ if (!((a->discardRectangleCount) == (b->discardRectangleCount))) { onFail("a->pDiscardRectangles (Error: Lengths not equal)"); };
+ if ((a->discardRectangleCount) == (b->discardRectangleCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->discardRectangleCount; ++i)
+ {
+ checkEqual_VkRect2D(a->pDiscardRectangles + i, b->pDiscardRectangles + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void checkEqual_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* a,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->primitiveOverestimationSize) == (b->primitiveOverestimationSize))) { onFail("a->primitiveOverestimationSize (Error: Value not equal)"); };
+ if (!((a->maxExtraPrimitiveOverestimationSize) == (b->maxExtraPrimitiveOverestimationSize))) { onFail("a->maxExtraPrimitiveOverestimationSize (Error: Value not equal)"); };
+ if (!((a->extraPrimitiveOverestimationSizeGranularity) == (b->extraPrimitiveOverestimationSizeGranularity))) { onFail("a->extraPrimitiveOverestimationSizeGranularity (Error: Value not equal)"); };
+ if (!((a->primitiveUnderestimation) == (b->primitiveUnderestimation))) { onFail("a->primitiveUnderestimation (Error: Value not equal)"); };
+ if (!((a->conservativePointAndLineRasterization) == (b->conservativePointAndLineRasterization))) { onFail("a->conservativePointAndLineRasterization (Error: Value not equal)"); };
+ if (!((a->degenerateTrianglesRasterized) == (b->degenerateTrianglesRasterized))) { onFail("a->degenerateTrianglesRasterized (Error: Value not equal)"); };
+ if (!((a->degenerateLinesRasterized) == (b->degenerateLinesRasterized))) { onFail("a->degenerateLinesRasterized (Error: Value not equal)"); };
+ if (!((a->fullyCoveredFragmentShaderInputVariable) == (b->fullyCoveredFragmentShaderInputVariable))) { onFail("a->fullyCoveredFragmentShaderInputVariable (Error: Value not equal)"); };
+ if (!((a->conservativeRasterizationPostDepthCoverage) == (b->conservativeRasterizationPostDepthCoverage))) { onFail("a->conservativeRasterizationPostDepthCoverage (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* a,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->conservativeRasterizationMode) == (b->conservativeRasterizationMode))) { onFail("a->conservativeRasterizationMode (Error: Value not equal)"); };
+ if (!((a->extraPrimitiveOverestimationSize) == (b->extraPrimitiveOverestimationSize))) { onFail("a->extraPrimitiveOverestimationSize (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void checkEqual_VkXYColorEXT(
+ const VkXYColorEXT* a,
+ const VkXYColorEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+}
+
+void checkEqual_VkHdrMetadataEXT(
+ const VkHdrMetadataEXT* a,
+ const VkHdrMetadataEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkXYColorEXT(&a->displayPrimaryRed, &b->displayPrimaryRed, onFail);
+ checkEqual_VkXYColorEXT(&a->displayPrimaryGreen, &b->displayPrimaryGreen, onFail);
+ checkEqual_VkXYColorEXT(&a->displayPrimaryBlue, &b->displayPrimaryBlue, onFail);
+ checkEqual_VkXYColorEXT(&a->whitePoint, &b->whitePoint, onFail);
+ if (!((a->maxLuminance) == (b->maxLuminance))) { onFail("a->maxLuminance (Error: Value not equal)"); };
+ if (!((a->minLuminance) == (b->minLuminance))) { onFail("a->minLuminance (Error: Value not equal)"); };
+ if (!((a->maxContentLightLevel) == (b->maxContentLightLevel))) { onFail("a->maxContentLightLevel (Error: Value not equal)"); };
+ if (!((a->maxFrameAverageLightLevel) == (b->maxFrameAverageLightLevel))) { onFail("a->maxFrameAverageLightLevel (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_MVK_ios_surface
+void checkEqual_VkIOSSurfaceCreateInfoMVK(
+ const VkIOSSurfaceCreateInfoMVK* a,
+ const VkIOSSurfaceCreateInfoMVK* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->pView) && !(b->pView)) || ((a->pView) && (b->pView)))) { onFail("a->pView (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_MVK_macos_surface
+void checkEqual_VkMacOSSurfaceCreateInfoMVK(
+ const VkMacOSSurfaceCreateInfoMVK* a,
+ const VkMacOSSurfaceCreateInfoMVK* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->pView) && !(b->pView)) || ((a->pView) && (b->pView)))) { onFail("a->pView (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void checkEqual_VkDebugUtilsObjectNameInfoEXT(
+ const VkDebugUtilsObjectNameInfoEXT* a,
+ const VkDebugUtilsObjectNameInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectType) == (b->objectType))) { onFail("a->objectType (Error: Value not equal)"); };
+ if (!((a->objectHandle) == (b->objectHandle))) { onFail("a->objectHandle (Error: Value not equal)"); };
+ if (!((!(a->pObjectName) && !(b->pObjectName)) || ((a->pObjectName) && (b->pObjectName)))) { onFail("a->pObjectName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pObjectName) && (b->pObjectName))
+ {
+ if (!((strcmp(a->pObjectName, b->pObjectName) == 0))) { onFail("a->pObjectName (Error: Unequal strings)"); };
+ }
+}
+
+void checkEqual_VkDebugUtilsObjectTagInfoEXT(
+ const VkDebugUtilsObjectTagInfoEXT* a,
+ const VkDebugUtilsObjectTagInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->objectType) == (b->objectType))) { onFail("a->objectType (Error: Value not equal)"); };
+ if (!((a->objectHandle) == (b->objectHandle))) { onFail("a->objectHandle (Error: Value not equal)"); };
+ if (!((a->tagName) == (b->tagName))) { onFail("a->tagName (Error: Value not equal)"); };
+ if (!((a->tagSize) == (b->tagSize))) { onFail("a->tagSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDebugUtilsLabelEXT(
+ const VkDebugUtilsLabelEXT* a,
+ const VkDebugUtilsLabelEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((!(a->pLabelName) && !(b->pLabelName)) || ((a->pLabelName) && (b->pLabelName)))) { onFail("a->pLabelName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pLabelName) && (b->pLabelName))
+ {
+ if (!((strcmp(a->pLabelName, b->pLabelName) == 0))) { onFail("a->pLabelName (Error: Unequal strings)"); };
+ }
+ if (!((memcmp(a->color, b->color, 4 * sizeof(float)) == 0))) { onFail("a->color (Error: Unequal static array)"); };
+}
+
+void checkEqual_VkDebugUtilsMessengerCallbackDataEXT(
+ const VkDebugUtilsMessengerCallbackDataEXT* a,
+ const VkDebugUtilsMessengerCallbackDataEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((!(a->pMessageIdName) && !(b->pMessageIdName)) || ((a->pMessageIdName) && (b->pMessageIdName)))) { onFail("a->pMessageIdName (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pMessageIdName) && (b->pMessageIdName))
+ {
+ if (!((strcmp(a->pMessageIdName, b->pMessageIdName) == 0))) { onFail("a->pMessageIdName (Error: Unequal strings)"); };
+ }
+ if (!((a->messageIdNumber) == (b->messageIdNumber))) { onFail("a->messageIdNumber (Error: Value not equal)"); };
+ if (!((!(a->pMessage) && !(b->pMessage)) || ((a->pMessage) && (b->pMessage)))) { onFail("a->pMessage (Error: Mismatch in string pointer nullness)"); };
+ if ((a->pMessage) && (b->pMessage))
+ {
+ if (!((strcmp(a->pMessage, b->pMessage) == 0))) { onFail("a->pMessage (Error: Unequal strings)"); };
+ }
+ if (!((a->queueLabelCount) == (b->queueLabelCount))) { onFail("a->queueLabelCount (Error: Value not equal)"); };
+ if (!((!(a->pQueueLabels) && !(b->pQueueLabels)) || ((a->pQueueLabels) && (b->pQueueLabels)))) { onFail("a->pQueueLabels (Error: Mismatch in optional field)"); };
+ if (a->pQueueLabels && b->pQueueLabels)
+ {
+ if ((a->pQueueLabels) && (b->pQueueLabels))
+ {
+ if (!((a->queueLabelCount) == (b->queueLabelCount))) { onFail("a->pQueueLabels (Error: Lengths not equal)"); };
+ if ((a->queueLabelCount) == (b->queueLabelCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->queueLabelCount; ++i)
+ {
+ checkEqual_VkDebugUtilsLabelEXT(a->pQueueLabels + i, b->pQueueLabels + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((a->cmdBufLabelCount) == (b->cmdBufLabelCount))) { onFail("a->cmdBufLabelCount (Error: Value not equal)"); };
+ if (!((!(a->pCmdBufLabels) && !(b->pCmdBufLabels)) || ((a->pCmdBufLabels) && (b->pCmdBufLabels)))) { onFail("a->pCmdBufLabels (Error: Mismatch in optional field)"); };
+ if (a->pCmdBufLabels && b->pCmdBufLabels)
+ {
+ if ((a->pCmdBufLabels) && (b->pCmdBufLabels))
+ {
+ if (!((a->cmdBufLabelCount) == (b->cmdBufLabelCount))) { onFail("a->pCmdBufLabels (Error: Lengths not equal)"); };
+ if ((a->cmdBufLabelCount) == (b->cmdBufLabelCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->cmdBufLabelCount; ++i)
+ {
+ checkEqual_VkDebugUtilsLabelEXT(a->pCmdBufLabels + i, b->pCmdBufLabels + i, onFail);
+ }
+ }
+ }
+ }
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->objectCount (Error: Value not equal)"); };
+ if (!((!(a->pObjects) && !(b->pObjects)) || ((a->pObjects) && (b->pObjects)))) { onFail("a->pObjects (Error: Mismatch in optional field)"); };
+ if (a->pObjects && b->pObjects)
+ {
+ if ((a->pObjects) && (b->pObjects))
+ {
+ if (!((a->objectCount) == (b->objectCount))) { onFail("a->pObjects (Error: Lengths not equal)"); };
+ if ((a->objectCount) == (b->objectCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->objectCount; ++i)
+ {
+ checkEqual_VkDebugUtilsObjectNameInfoEXT(a->pObjects + i, b->pObjects + i, onFail);
+ }
+ }
+ }
+ }
+}
+
+void checkEqual_VkDebugUtilsMessengerCreateInfoEXT(
+ const VkDebugUtilsMessengerCreateInfoEXT* a,
+ const VkDebugUtilsMessengerCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->messageSeverity) == (b->messageSeverity))) { onFail("a->messageSeverity (Error: Value not equal)"); };
+ if (!((a->messageType) == (b->messageType))) { onFail("a->messageType (Error: Value not equal)"); };
+ if (!((a->pfnUserCallback) == (b->pfnUserCallback))) { onFail("a->pfnUserCallback (Error: Value not equal)"); };
+ if (!((!(a->pUserData) && !(b->pUserData)) || ((a->pUserData) && (b->pUserData)))) { onFail("a->pUserData (Error: Mismatch in optional field)"); };
+}
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void checkEqual_VkAndroidHardwareBufferUsageANDROID(
+ const VkAndroidHardwareBufferUsageANDROID* a,
+ const VkAndroidHardwareBufferUsageANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->androidHardwareBufferUsage) == (b->androidHardwareBufferUsage))) { onFail("a->androidHardwareBufferUsage (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAndroidHardwareBufferPropertiesANDROID(
+ const VkAndroidHardwareBufferPropertiesANDROID* a,
+ const VkAndroidHardwareBufferPropertiesANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->allocationSize) == (b->allocationSize))) { onFail("a->allocationSize (Error: Value not equal)"); };
+ if (!((a->memoryTypeBits) == (b->memoryTypeBits))) { onFail("a->memoryTypeBits (Error: Value not equal)"); };
+}
+
+void checkEqual_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* a,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->format) == (b->format))) { onFail("a->format (Error: Value not equal)"); };
+ if (!((a->externalFormat) == (b->externalFormat))) { onFail("a->externalFormat (Error: Value not equal)"); };
+ if (!((a->formatFeatures) == (b->formatFeatures))) { onFail("a->formatFeatures (Error: Value not equal)"); };
+ checkEqual_VkComponentMapping(&a->samplerYcbcrConversionComponents, &b->samplerYcbcrConversionComponents, onFail);
+ if (!((a->suggestedYcbcrModel) == (b->suggestedYcbcrModel))) { onFail("a->suggestedYcbcrModel (Error: Value not equal)"); };
+ if (!((a->suggestedYcbcrRange) == (b->suggestedYcbcrRange))) { onFail("a->suggestedYcbcrRange (Error: Value not equal)"); };
+ if (!((a->suggestedXChromaOffset) == (b->suggestedXChromaOffset))) { onFail("a->suggestedXChromaOffset (Error: Value not equal)"); };
+ if (!((a->suggestedYChromaOffset) == (b->suggestedYChromaOffset))) { onFail("a->suggestedYChromaOffset (Error: Value not equal)"); };
+}
+
+void checkEqual_VkImportAndroidHardwareBufferInfoANDROID(
+ const VkImportAndroidHardwareBufferInfoANDROID* a,
+ const VkImportAndroidHardwareBufferInfoANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((memcmp(a->buffer, b->buffer, sizeof(AHardwareBuffer)) == 0))) { onFail("a->buffer (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* a,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memory) == (b->memory))) { onFail("a->memory (Error: Value not equal)"); };
+}
+
+void checkEqual_VkExternalFormatANDROID(
+ const VkExternalFormatANDROID* a,
+ const VkExternalFormatANDROID* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->externalFormat) == (b->externalFormat))) { onFail("a->externalFormat (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void checkEqual_VkSamplerReductionModeCreateInfoEXT(
+ const VkSamplerReductionModeCreateInfoEXT* a,
+ const VkSamplerReductionModeCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->reductionMode) == (b->reductionMode))) { onFail("a->reductionMode (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* a,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->filterMinmaxSingleComponentFormats) == (b->filterMinmaxSingleComponentFormats))) { onFail("a->filterMinmaxSingleComponentFormats (Error: Value not equal)"); };
+ if (!((a->filterMinmaxImageComponentMapping) == (b->filterMinmaxImageComponentMapping))) { onFail("a->filterMinmaxImageComponentMapping (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void checkEqual_VkSampleLocationEXT(
+ const VkSampleLocationEXT* a,
+ const VkSampleLocationEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->x) == (b->x))) { onFail("a->x (Error: Value not equal)"); };
+ if (!((a->y) == (b->y))) { onFail("a->y (Error: Value not equal)"); };
+}
+
+void checkEqual_VkSampleLocationsInfoEXT(
+ const VkSampleLocationsInfoEXT* a,
+ const VkSampleLocationsInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->sampleLocationsPerPixel) == (b->sampleLocationsPerPixel))) { onFail("a->sampleLocationsPerPixel (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->sampleLocationGridSize, &b->sampleLocationGridSize, onFail);
+ if (!((a->sampleLocationsCount) == (b->sampleLocationsCount))) { onFail("a->sampleLocationsCount (Error: Value not equal)"); };
+ if ((a->pSampleLocations) && (b->pSampleLocations))
+ {
+ if (!((a->sampleLocationsCount) == (b->sampleLocationsCount))) { onFail("a->pSampleLocations (Error: Lengths not equal)"); };
+ if ((a->sampleLocationsCount) == (b->sampleLocationsCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->sampleLocationsCount; ++i)
+ {
+ checkEqual_VkSampleLocationEXT(a->pSampleLocations + i, b->pSampleLocations + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkAttachmentSampleLocationsEXT(
+ const VkAttachmentSampleLocationsEXT* a,
+ const VkAttachmentSampleLocationsEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->attachmentIndex) == (b->attachmentIndex))) { onFail("a->attachmentIndex (Error: Value not equal)"); };
+ checkEqual_VkSampleLocationsInfoEXT(&a->sampleLocationsInfo, &b->sampleLocationsInfo, onFail);
+}
+
+void checkEqual_VkSubpassSampleLocationsEXT(
+ const VkSubpassSampleLocationsEXT* a,
+ const VkSubpassSampleLocationsEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->subpassIndex) == (b->subpassIndex))) { onFail("a->subpassIndex (Error: Value not equal)"); };
+ checkEqual_VkSampleLocationsInfoEXT(&a->sampleLocationsInfo, &b->sampleLocationsInfo, onFail);
+}
+
+void checkEqual_VkRenderPassSampleLocationsBeginInfoEXT(
+ const VkRenderPassSampleLocationsBeginInfoEXT* a,
+ const VkRenderPassSampleLocationsBeginInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->attachmentInitialSampleLocationsCount) == (b->attachmentInitialSampleLocationsCount))) { onFail("a->attachmentInitialSampleLocationsCount (Error: Value not equal)"); };
+ if ((a->pAttachmentInitialSampleLocations) && (b->pAttachmentInitialSampleLocations))
+ {
+ if (!((a->attachmentInitialSampleLocationsCount) == (b->attachmentInitialSampleLocationsCount))) { onFail("a->pAttachmentInitialSampleLocations (Error: Lengths not equal)"); };
+ if ((a->attachmentInitialSampleLocationsCount) == (b->attachmentInitialSampleLocationsCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->attachmentInitialSampleLocationsCount; ++i)
+ {
+ checkEqual_VkAttachmentSampleLocationsEXT(a->pAttachmentInitialSampleLocations + i, b->pAttachmentInitialSampleLocations + i, onFail);
+ }
+ }
+ }
+ if (!((a->postSubpassSampleLocationsCount) == (b->postSubpassSampleLocationsCount))) { onFail("a->postSubpassSampleLocationsCount (Error: Value not equal)"); };
+ if ((a->pPostSubpassSampleLocations) && (b->pPostSubpassSampleLocations))
+ {
+ if (!((a->postSubpassSampleLocationsCount) == (b->postSubpassSampleLocationsCount))) { onFail("a->pPostSubpassSampleLocations (Error: Lengths not equal)"); };
+ if ((a->postSubpassSampleLocationsCount) == (b->postSubpassSampleLocationsCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->postSubpassSampleLocationsCount; ++i)
+ {
+ checkEqual_VkSubpassSampleLocationsEXT(a->pPostSubpassSampleLocations + i, b->pPostSubpassSampleLocations + i, onFail);
+ }
+ }
+ }
+}
+
+void checkEqual_VkPipelineSampleLocationsStateCreateInfoEXT(
+ const VkPipelineSampleLocationsStateCreateInfoEXT* a,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->sampleLocationsEnable) == (b->sampleLocationsEnable))) { onFail("a->sampleLocationsEnable (Error: Value not equal)"); };
+ checkEqual_VkSampleLocationsInfoEXT(&a->sampleLocationsInfo, &b->sampleLocationsInfo, onFail);
+}
+
+void checkEqual_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* a,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->sampleLocationSampleCounts) == (b->sampleLocationSampleCounts))) { onFail("a->sampleLocationSampleCounts (Error: Value not equal)"); };
+ checkEqual_VkExtent2D(&a->maxSampleLocationGridSize, &b->maxSampleLocationGridSize, onFail);
+ if (!((memcmp(a->sampleLocationCoordinateRange, b->sampleLocationCoordinateRange, 2 * sizeof(float)) == 0))) { onFail("a->sampleLocationCoordinateRange (Error: Unequal static array)"); };
+ if (!((a->sampleLocationSubPixelBits) == (b->sampleLocationSubPixelBits))) { onFail("a->sampleLocationSubPixelBits (Error: Value not equal)"); };
+ if (!((a->variableSampleLocations) == (b->variableSampleLocations))) { onFail("a->variableSampleLocations (Error: Value not equal)"); };
+}
+
+void checkEqual_VkMultisamplePropertiesEXT(
+ const VkMultisamplePropertiesEXT* a,
+ const VkMultisamplePropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ checkEqual_VkExtent2D(&a->maxSampleLocationGridSize, &b->maxSampleLocationGridSize, onFail);
+}
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void checkEqual_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* a,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->advancedBlendCoherentOperations) == (b->advancedBlendCoherentOperations))) { onFail("a->advancedBlendCoherentOperations (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* a,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->advancedBlendMaxColorAttachments) == (b->advancedBlendMaxColorAttachments))) { onFail("a->advancedBlendMaxColorAttachments (Error: Value not equal)"); };
+ if (!((a->advancedBlendIndependentBlend) == (b->advancedBlendIndependentBlend))) { onFail("a->advancedBlendIndependentBlend (Error: Value not equal)"); };
+ if (!((a->advancedBlendNonPremultipliedSrcColor) == (b->advancedBlendNonPremultipliedSrcColor))) { onFail("a->advancedBlendNonPremultipliedSrcColor (Error: Value not equal)"); };
+ if (!((a->advancedBlendNonPremultipliedDstColor) == (b->advancedBlendNonPremultipliedDstColor))) { onFail("a->advancedBlendNonPremultipliedDstColor (Error: Value not equal)"); };
+ if (!((a->advancedBlendCorrelatedOverlap) == (b->advancedBlendCorrelatedOverlap))) { onFail("a->advancedBlendCorrelatedOverlap (Error: Value not equal)"); };
+ if (!((a->advancedBlendAllOperations) == (b->advancedBlendAllOperations))) { onFail("a->advancedBlendAllOperations (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* a,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->srcPremultiplied) == (b->srcPremultiplied))) { onFail("a->srcPremultiplied (Error: Value not equal)"); };
+ if (!((a->dstPremultiplied) == (b->dstPremultiplied))) { onFail("a->dstPremultiplied (Error: Value not equal)"); };
+ if (!((a->blendOverlap) == (b->blendOverlap))) { onFail("a->blendOverlap (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void checkEqual_VkPipelineCoverageToColorStateCreateInfoNV(
+ const VkPipelineCoverageToColorStateCreateInfoNV* a,
+ const VkPipelineCoverageToColorStateCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->coverageToColorEnable) == (b->coverageToColorEnable))) { onFail("a->coverageToColorEnable (Error: Value not equal)"); };
+ if (!((a->coverageToColorLocation) == (b->coverageToColorLocation))) { onFail("a->coverageToColorLocation (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void checkEqual_VkPipelineCoverageModulationStateCreateInfoNV(
+ const VkPipelineCoverageModulationStateCreateInfoNV* a,
+ const VkPipelineCoverageModulationStateCreateInfoNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->coverageModulationMode) == (b->coverageModulationMode))) { onFail("a->coverageModulationMode (Error: Value not equal)"); };
+ if (!((a->coverageModulationTableEnable) == (b->coverageModulationTableEnable))) { onFail("a->coverageModulationTableEnable (Error: Value not equal)"); };
+ if (!((a->coverageModulationTableCount) == (b->coverageModulationTableCount))) { onFail("a->coverageModulationTableCount (Error: Value not equal)"); };
+ if (!((!(a->pCoverageModulationTable) && !(b->pCoverageModulationTable)) || ((a->pCoverageModulationTable) && (b->pCoverageModulationTable)))) { onFail("a->pCoverageModulationTable (Error: Mismatch in optional field)"); };
+ if (a->pCoverageModulationTable && b->pCoverageModulationTable)
+ {
+ if (!((a->coverageModulationTableCount) == (b->coverageModulationTableCount))) { onFail("a->pCoverageModulationTable (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pCoverageModulationTable, b->pCoverageModulationTable, a->coverageModulationTableCount * sizeof(const float)) == 0))) { onFail("a->pCoverageModulationTable (Error: Unequal dyn array)"); };
+ }
+}
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void checkEqual_VkValidationCacheCreateInfoEXT(
+ const VkValidationCacheCreateInfoEXT* a,
+ const VkValidationCacheCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->flags) == (b->flags))) { onFail("a->flags (Error: Value not equal)"); };
+ if (!((a->initialDataSize) == (b->initialDataSize))) { onFail("a->initialDataSize (Error: Value not equal)"); };
+}
+
+void checkEqual_VkShaderModuleValidationCacheCreateInfoEXT(
+ const VkShaderModuleValidationCacheCreateInfoEXT* a,
+ const VkShaderModuleValidationCacheCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->validationCache) == (b->validationCache))) { onFail("a->validationCache (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void checkEqual_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* a,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->bindingCount) == (b->bindingCount))) { onFail("a->bindingCount (Error: Value not equal)"); };
+ if (!((a->bindingCount) == (b->bindingCount))) { onFail("a->pBindingFlags (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pBindingFlags, b->pBindingFlags, a->bindingCount * sizeof(const VkDescriptorBindingFlagsEXT)) == 0))) { onFail("a->pBindingFlags (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* a,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->shaderInputAttachmentArrayDynamicIndexing) == (b->shaderInputAttachmentArrayDynamicIndexing))) { onFail("a->shaderInputAttachmentArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderUniformTexelBufferArrayDynamicIndexing) == (b->shaderUniformTexelBufferArrayDynamicIndexing))) { onFail("a->shaderUniformTexelBufferArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageTexelBufferArrayDynamicIndexing) == (b->shaderStorageTexelBufferArrayDynamicIndexing))) { onFail("a->shaderStorageTexelBufferArrayDynamicIndexing (Error: Value not equal)"); };
+ if (!((a->shaderUniformBufferArrayNonUniformIndexing) == (b->shaderUniformBufferArrayNonUniformIndexing))) { onFail("a->shaderUniformBufferArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderSampledImageArrayNonUniformIndexing) == (b->shaderSampledImageArrayNonUniformIndexing))) { onFail("a->shaderSampledImageArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageBufferArrayNonUniformIndexing) == (b->shaderStorageBufferArrayNonUniformIndexing))) { onFail("a->shaderStorageBufferArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageArrayNonUniformIndexing) == (b->shaderStorageImageArrayNonUniformIndexing))) { onFail("a->shaderStorageImageArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderInputAttachmentArrayNonUniformIndexing) == (b->shaderInputAttachmentArrayNonUniformIndexing))) { onFail("a->shaderInputAttachmentArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderUniformTexelBufferArrayNonUniformIndexing) == (b->shaderUniformTexelBufferArrayNonUniformIndexing))) { onFail("a->shaderUniformTexelBufferArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->shaderStorageTexelBufferArrayNonUniformIndexing) == (b->shaderStorageTexelBufferArrayNonUniformIndexing))) { onFail("a->shaderStorageTexelBufferArrayNonUniformIndexing (Error: Value not equal)"); };
+ if (!((a->descriptorBindingUniformBufferUpdateAfterBind) == (b->descriptorBindingUniformBufferUpdateAfterBind))) { onFail("a->descriptorBindingUniformBufferUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingSampledImageUpdateAfterBind) == (b->descriptorBindingSampledImageUpdateAfterBind))) { onFail("a->descriptorBindingSampledImageUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingStorageImageUpdateAfterBind) == (b->descriptorBindingStorageImageUpdateAfterBind))) { onFail("a->descriptorBindingStorageImageUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingStorageBufferUpdateAfterBind) == (b->descriptorBindingStorageBufferUpdateAfterBind))) { onFail("a->descriptorBindingStorageBufferUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingUniformTexelBufferUpdateAfterBind) == (b->descriptorBindingUniformTexelBufferUpdateAfterBind))) { onFail("a->descriptorBindingUniformTexelBufferUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingStorageTexelBufferUpdateAfterBind) == (b->descriptorBindingStorageTexelBufferUpdateAfterBind))) { onFail("a->descriptorBindingStorageTexelBufferUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->descriptorBindingUpdateUnusedWhilePending) == (b->descriptorBindingUpdateUnusedWhilePending))) { onFail("a->descriptorBindingUpdateUnusedWhilePending (Error: Value not equal)"); };
+ if (!((a->descriptorBindingPartiallyBound) == (b->descriptorBindingPartiallyBound))) { onFail("a->descriptorBindingPartiallyBound (Error: Value not equal)"); };
+ if (!((a->descriptorBindingVariableDescriptorCount) == (b->descriptorBindingVariableDescriptorCount))) { onFail("a->descriptorBindingVariableDescriptorCount (Error: Value not equal)"); };
+ if (!((a->runtimeDescriptorArray) == (b->runtimeDescriptorArray))) { onFail("a->runtimeDescriptorArray (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* a,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxUpdateAfterBindDescriptorsInAllPools) == (b->maxUpdateAfterBindDescriptorsInAllPools))) { onFail("a->maxUpdateAfterBindDescriptorsInAllPools (Error: Value not equal)"); };
+ if (!((a->shaderUniformBufferArrayNonUniformIndexingNative) == (b->shaderUniformBufferArrayNonUniformIndexingNative))) { onFail("a->shaderUniformBufferArrayNonUniformIndexingNative (Error: Value not equal)"); };
+ if (!((a->shaderSampledImageArrayNonUniformIndexingNative) == (b->shaderSampledImageArrayNonUniformIndexingNative))) { onFail("a->shaderSampledImageArrayNonUniformIndexingNative (Error: Value not equal)"); };
+ if (!((a->shaderStorageBufferArrayNonUniformIndexingNative) == (b->shaderStorageBufferArrayNonUniformIndexingNative))) { onFail("a->shaderStorageBufferArrayNonUniformIndexingNative (Error: Value not equal)"); };
+ if (!((a->shaderStorageImageArrayNonUniformIndexingNative) == (b->shaderStorageImageArrayNonUniformIndexingNative))) { onFail("a->shaderStorageImageArrayNonUniformIndexingNative (Error: Value not equal)"); };
+ if (!((a->shaderInputAttachmentArrayNonUniformIndexingNative) == (b->shaderInputAttachmentArrayNonUniformIndexingNative))) { onFail("a->shaderInputAttachmentArrayNonUniformIndexingNative (Error: Value not equal)"); };
+ if (!((a->robustBufferAccessUpdateAfterBind) == (b->robustBufferAccessUpdateAfterBind))) { onFail("a->robustBufferAccessUpdateAfterBind (Error: Value not equal)"); };
+ if (!((a->quadDivergentImplicitLod) == (b->quadDivergentImplicitLod))) { onFail("a->quadDivergentImplicitLod (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindSamplers) == (b->maxPerStageDescriptorUpdateAfterBindSamplers))) { onFail("a->maxPerStageDescriptorUpdateAfterBindSamplers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindUniformBuffers) == (b->maxPerStageDescriptorUpdateAfterBindUniformBuffers))) { onFail("a->maxPerStageDescriptorUpdateAfterBindUniformBuffers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindStorageBuffers) == (b->maxPerStageDescriptorUpdateAfterBindStorageBuffers))) { onFail("a->maxPerStageDescriptorUpdateAfterBindStorageBuffers (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindSampledImages) == (b->maxPerStageDescriptorUpdateAfterBindSampledImages))) { onFail("a->maxPerStageDescriptorUpdateAfterBindSampledImages (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindStorageImages) == (b->maxPerStageDescriptorUpdateAfterBindStorageImages))) { onFail("a->maxPerStageDescriptorUpdateAfterBindStorageImages (Error: Value not equal)"); };
+ if (!((a->maxPerStageDescriptorUpdateAfterBindInputAttachments) == (b->maxPerStageDescriptorUpdateAfterBindInputAttachments))) { onFail("a->maxPerStageDescriptorUpdateAfterBindInputAttachments (Error: Value not equal)"); };
+ if (!((a->maxPerStageUpdateAfterBindResources) == (b->maxPerStageUpdateAfterBindResources))) { onFail("a->maxPerStageUpdateAfterBindResources (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindSamplers) == (b->maxDescriptorSetUpdateAfterBindSamplers))) { onFail("a->maxDescriptorSetUpdateAfterBindSamplers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindUniformBuffers) == (b->maxDescriptorSetUpdateAfterBindUniformBuffers))) { onFail("a->maxDescriptorSetUpdateAfterBindUniformBuffers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic) == (b->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic))) { onFail("a->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindStorageBuffers) == (b->maxDescriptorSetUpdateAfterBindStorageBuffers))) { onFail("a->maxDescriptorSetUpdateAfterBindStorageBuffers (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic) == (b->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic))) { onFail("a->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindSampledImages) == (b->maxDescriptorSetUpdateAfterBindSampledImages))) { onFail("a->maxDescriptorSetUpdateAfterBindSampledImages (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindStorageImages) == (b->maxDescriptorSetUpdateAfterBindStorageImages))) { onFail("a->maxDescriptorSetUpdateAfterBindStorageImages (Error: Value not equal)"); };
+ if (!((a->maxDescriptorSetUpdateAfterBindInputAttachments) == (b->maxDescriptorSetUpdateAfterBindInputAttachments))) { onFail("a->maxDescriptorSetUpdateAfterBindInputAttachments (Error: Value not equal)"); };
+}
+
+void checkEqual_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* a,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->descriptorSetCount) == (b->descriptorSetCount))) { onFail("a->descriptorSetCount (Error: Value not equal)"); };
+ if (!((a->descriptorSetCount) == (b->descriptorSetCount))) { onFail("a->pDescriptorCounts (Error: Lengths not equal)"); };
+ if (!((memcmp(a->pDescriptorCounts, b->pDescriptorCounts, a->descriptorSetCount * sizeof(const uint32_t)) == 0))) { onFail("a->pDescriptorCounts (Error: Unequal dyn array)"); };
+}
+
+void checkEqual_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* a,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxVariableDescriptorCount) == (b->maxVariableDescriptorCount))) { onFail("a->maxVariableDescriptorCount (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void checkEqual_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* a,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->globalPriority) == (b->globalPriority))) { onFail("a->globalPriority (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void checkEqual_VkImportMemoryHostPointerInfoEXT(
+ const VkImportMemoryHostPointerInfoEXT* a,
+ const VkImportMemoryHostPointerInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->handleType) == (b->handleType))) { onFail("a->handleType (Error: Value not equal)"); };
+ if (!((!(a->pHostPointer) && !(b->pHostPointer)) || ((a->pHostPointer) && (b->pHostPointer)))) { onFail("a->pHostPointer (Error: Mismatch in optional field)"); };
+}
+
+void checkEqual_VkMemoryHostPointerPropertiesEXT(
+ const VkMemoryHostPointerPropertiesEXT* a,
+ const VkMemoryHostPointerPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->memoryTypeBits) == (b->memoryTypeBits))) { onFail("a->memoryTypeBits (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* a,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->minImportedHostPointerAlignment) == (b->minImportedHostPointerAlignment))) { onFail("a->minImportedHostPointerAlignment (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void checkEqual_VkPhysicalDeviceShaderCorePropertiesAMD(
+ const VkPhysicalDeviceShaderCorePropertiesAMD* a,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->shaderEngineCount) == (b->shaderEngineCount))) { onFail("a->shaderEngineCount (Error: Value not equal)"); };
+ if (!((a->shaderArraysPerEngineCount) == (b->shaderArraysPerEngineCount))) { onFail("a->shaderArraysPerEngineCount (Error: Value not equal)"); };
+ if (!((a->computeUnitsPerShaderArray) == (b->computeUnitsPerShaderArray))) { onFail("a->computeUnitsPerShaderArray (Error: Value not equal)"); };
+ if (!((a->simdPerComputeUnit) == (b->simdPerComputeUnit))) { onFail("a->simdPerComputeUnit (Error: Value not equal)"); };
+ if (!((a->wavefrontsPerSimd) == (b->wavefrontsPerSimd))) { onFail("a->wavefrontsPerSimd (Error: Value not equal)"); };
+ if (!((a->wavefrontSize) == (b->wavefrontSize))) { onFail("a->wavefrontSize (Error: Value not equal)"); };
+ if (!((a->sgprsPerSimd) == (b->sgprsPerSimd))) { onFail("a->sgprsPerSimd (Error: Value not equal)"); };
+ if (!((a->minSgprAllocation) == (b->minSgprAllocation))) { onFail("a->minSgprAllocation (Error: Value not equal)"); };
+ if (!((a->maxSgprAllocation) == (b->maxSgprAllocation))) { onFail("a->maxSgprAllocation (Error: Value not equal)"); };
+ if (!((a->sgprAllocationGranularity) == (b->sgprAllocationGranularity))) { onFail("a->sgprAllocationGranularity (Error: Value not equal)"); };
+ if (!((a->vgprsPerSimd) == (b->vgprsPerSimd))) { onFail("a->vgprsPerSimd (Error: Value not equal)"); };
+ if (!((a->minVgprAllocation) == (b->minVgprAllocation))) { onFail("a->minVgprAllocation (Error: Value not equal)"); };
+ if (!((a->maxVgprAllocation) == (b->maxVgprAllocation))) { onFail("a->maxVgprAllocation (Error: Value not equal)"); };
+ if (!((a->vgprAllocationGranularity) == (b->vgprAllocationGranularity))) { onFail("a->vgprAllocationGranularity (Error: Value not equal)"); };
+}
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void checkEqual_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* a,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->maxVertexAttribDivisor) == (b->maxVertexAttribDivisor))) { onFail("a->maxVertexAttribDivisor (Error: Value not equal)"); };
+}
+
+void checkEqual_VkVertexInputBindingDivisorDescriptionEXT(
+ const VkVertexInputBindingDivisorDescriptionEXT* a,
+ const VkVertexInputBindingDivisorDescriptionEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->binding) == (b->binding))) { onFail("a->binding (Error: Value not equal)"); };
+ if (!((a->divisor) == (b->divisor))) { onFail("a->divisor (Error: Value not equal)"); };
+}
+
+void checkEqual_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* a,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->vertexBindingDivisorCount) == (b->vertexBindingDivisorCount))) { onFail("a->vertexBindingDivisorCount (Error: Value not equal)"); };
+ if ((a->pVertexBindingDivisors) && (b->pVertexBindingDivisors))
+ {
+ if (!((a->vertexBindingDivisorCount) == (b->vertexBindingDivisorCount))) { onFail("a->pVertexBindingDivisors (Error: Lengths not equal)"); };
+ if ((a->vertexBindingDivisorCount) == (b->vertexBindingDivisorCount))
+ {
+ for (uint32_t i = 0; i < (uint32_t)a->vertexBindingDivisorCount; ++i)
+ {
+ checkEqual_VkVertexInputBindingDivisorDescriptionEXT(a->pVertexBindingDivisors + i, b->pVertexBindingDivisors + i, onFail);
+ }
+ }
+ }
+}
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void checkEqual_VkQueueFamilyCheckpointPropertiesNV(
+ const VkQueueFamilyCheckpointPropertiesNV* a,
+ const VkQueueFamilyCheckpointPropertiesNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->checkpointExecutionStageMask) == (b->checkpointExecutionStageMask))) { onFail("a->checkpointExecutionStageMask (Error: Value not equal)"); };
+}
+
+void checkEqual_VkCheckpointDataNV(
+ const VkCheckpointDataNV* a,
+ const VkCheckpointDataNV* b,
+ OnFailCompareFunc onFail)
+{
+ if (!((a->sType) == (b->sType))) { onFail("a->sType (Error: Value not equal)"); };
+ if (!((!(a->pNext) && !(b->pNext)) || ((a->pNext) && (b->pNext)))) { onFail("a->pNext (Error: Mismatch in optional field)"); };
+ if (!((a->stage) == (b->stage))) { onFail("a->stage (Error: Value not equal)"); };
+ if (!((!(a->pCheckpointMarker) && !(b->pCheckpointMarker)) || ((a->pCheckpointMarker) && (b->pCheckpointMarker)))) { onFail("a->pCheckpointMarker (Error: Mismatch in optional field)"); };
+}
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.h
new file mode 100644
index 0000000000..784102320c
--- /dev/null
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/common/goldfish_vk_testing.h
@@ -0,0 +1,1997 @@
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_testing
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
+
+#include <vulkan.h>
+
+
+#include <string.h>
+#include <functional>
+using OnFailCompareFunc = std::function<void(const char*)>;
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
+void checkEqual_VkApplicationInfo(
+ const VkApplicationInfo* a,
+ const VkApplicationInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkInstanceCreateInfo(
+ const VkInstanceCreateInfo* a,
+ const VkInstanceCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAllocationCallbacks(
+ const VkAllocationCallbacks* a,
+ const VkAllocationCallbacks* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceFeatures(
+ const VkPhysicalDeviceFeatures* a,
+ const VkPhysicalDeviceFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFormatProperties(
+ const VkFormatProperties* a,
+ const VkFormatProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExtent3D(
+ const VkExtent3D* a,
+ const VkExtent3D* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageFormatProperties(
+ const VkImageFormatProperties* a,
+ const VkImageFormatProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceLimits(
+ const VkPhysicalDeviceLimits* a,
+ const VkPhysicalDeviceLimits* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceSparseProperties(
+ const VkPhysicalDeviceSparseProperties* a,
+ const VkPhysicalDeviceSparseProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceProperties(
+ const VkPhysicalDeviceProperties* a,
+ const VkPhysicalDeviceProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkQueueFamilyProperties(
+ const VkQueueFamilyProperties* a,
+ const VkQueueFamilyProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryType(
+ const VkMemoryType* a,
+ const VkMemoryType* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryHeap(
+ const VkMemoryHeap* a,
+ const VkMemoryHeap* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceMemoryProperties(
+ const VkPhysicalDeviceMemoryProperties* a,
+ const VkPhysicalDeviceMemoryProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceQueueCreateInfo(
+ const VkDeviceQueueCreateInfo* a,
+ const VkDeviceQueueCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceCreateInfo(
+ const VkDeviceCreateInfo* a,
+ const VkDeviceCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExtensionProperties(
+ const VkExtensionProperties* a,
+ const VkExtensionProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkLayerProperties(
+ const VkLayerProperties* a,
+ const VkLayerProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubmitInfo(
+ const VkSubmitInfo* a,
+ const VkSubmitInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryAllocateInfo(
+ const VkMemoryAllocateInfo* a,
+ const VkMemoryAllocateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMappedMemoryRange(
+ const VkMappedMemoryRange* a,
+ const VkMappedMemoryRange* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryRequirements(
+ const VkMemoryRequirements* a,
+ const VkMemoryRequirements* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageFormatProperties(
+ const VkSparseImageFormatProperties* a,
+ const VkSparseImageFormatProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageMemoryRequirements(
+ const VkSparseImageMemoryRequirements* a,
+ const VkSparseImageMemoryRequirements* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseMemoryBind(
+ const VkSparseMemoryBind* a,
+ const VkSparseMemoryBind* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseBufferMemoryBindInfo(
+ const VkSparseBufferMemoryBindInfo* a,
+ const VkSparseBufferMemoryBindInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageOpaqueMemoryBindInfo(
+ const VkSparseImageOpaqueMemoryBindInfo* a,
+ const VkSparseImageOpaqueMemoryBindInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageSubresource(
+ const VkImageSubresource* a,
+ const VkImageSubresource* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkOffset3D(
+ const VkOffset3D* a,
+ const VkOffset3D* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageMemoryBind(
+ const VkSparseImageMemoryBind* a,
+ const VkSparseImageMemoryBind* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageMemoryBindInfo(
+ const VkSparseImageMemoryBindInfo* a,
+ const VkSparseImageMemoryBindInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindSparseInfo(
+ const VkBindSparseInfo* a,
+ const VkBindSparseInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFenceCreateInfo(
+ const VkFenceCreateInfo* a,
+ const VkFenceCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSemaphoreCreateInfo(
+ const VkSemaphoreCreateInfo* a,
+ const VkSemaphoreCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkEventCreateInfo(
+ const VkEventCreateInfo* a,
+ const VkEventCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkQueryPoolCreateInfo(
+ const VkQueryPoolCreateInfo* a,
+ const VkQueryPoolCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferCreateInfo(
+ const VkBufferCreateInfo* a,
+ const VkBufferCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferViewCreateInfo(
+ const VkBufferViewCreateInfo* a,
+ const VkBufferViewCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageCreateInfo(
+ const VkImageCreateInfo* a,
+ const VkImageCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubresourceLayout(
+ const VkSubresourceLayout* a,
+ const VkSubresourceLayout* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkComponentMapping(
+ const VkComponentMapping* a,
+ const VkComponentMapping* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageSubresourceRange(
+ const VkImageSubresourceRange* a,
+ const VkImageSubresourceRange* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageViewCreateInfo(
+ const VkImageViewCreateInfo* a,
+ const VkImageViewCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkShaderModuleCreateInfo(
+ const VkShaderModuleCreateInfo* a,
+ const VkShaderModuleCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineCacheCreateInfo(
+ const VkPipelineCacheCreateInfo* a,
+ const VkPipelineCacheCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSpecializationMapEntry(
+ const VkSpecializationMapEntry* a,
+ const VkSpecializationMapEntry* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSpecializationInfo(
+ const VkSpecializationInfo* a,
+ const VkSpecializationInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineShaderStageCreateInfo(
+ const VkPipelineShaderStageCreateInfo* a,
+ const VkPipelineShaderStageCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkVertexInputBindingDescription(
+ const VkVertexInputBindingDescription* a,
+ const VkVertexInputBindingDescription* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkVertexInputAttributeDescription(
+ const VkVertexInputAttributeDescription* a,
+ const VkVertexInputAttributeDescription* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineVertexInputStateCreateInfo(
+ const VkPipelineVertexInputStateCreateInfo* a,
+ const VkPipelineVertexInputStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineInputAssemblyStateCreateInfo(
+ const VkPipelineInputAssemblyStateCreateInfo* a,
+ const VkPipelineInputAssemblyStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineTessellationStateCreateInfo(
+ const VkPipelineTessellationStateCreateInfo* a,
+ const VkPipelineTessellationStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkViewport(
+ const VkViewport* a,
+ const VkViewport* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkOffset2D(
+ const VkOffset2D* a,
+ const VkOffset2D* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExtent2D(
+ const VkExtent2D* a,
+ const VkExtent2D* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRect2D(
+ const VkRect2D* a,
+ const VkRect2D* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineViewportStateCreateInfo(
+ const VkPipelineViewportStateCreateInfo* a,
+ const VkPipelineViewportStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineRasterizationStateCreateInfo(
+ const VkPipelineRasterizationStateCreateInfo* a,
+ const VkPipelineRasterizationStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineMultisampleStateCreateInfo(
+ const VkPipelineMultisampleStateCreateInfo* a,
+ const VkPipelineMultisampleStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkStencilOpState(
+ const VkStencilOpState* a,
+ const VkStencilOpState* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineDepthStencilStateCreateInfo(
+ const VkPipelineDepthStencilStateCreateInfo* a,
+ const VkPipelineDepthStencilStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineColorBlendAttachmentState(
+ const VkPipelineColorBlendAttachmentState* a,
+ const VkPipelineColorBlendAttachmentState* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineColorBlendStateCreateInfo(
+ const VkPipelineColorBlendStateCreateInfo* a,
+ const VkPipelineColorBlendStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineDynamicStateCreateInfo(
+ const VkPipelineDynamicStateCreateInfo* a,
+ const VkPipelineDynamicStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkGraphicsPipelineCreateInfo(
+ const VkGraphicsPipelineCreateInfo* a,
+ const VkGraphicsPipelineCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkComputePipelineCreateInfo(
+ const VkComputePipelineCreateInfo* a,
+ const VkComputePipelineCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPushConstantRange(
+ const VkPushConstantRange* a,
+ const VkPushConstantRange* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineLayoutCreateInfo(
+ const VkPipelineLayoutCreateInfo* a,
+ const VkPipelineLayoutCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSamplerCreateInfo(
+ const VkSamplerCreateInfo* a,
+ const VkSamplerCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetLayoutBinding(
+ const VkDescriptorSetLayoutBinding* a,
+ const VkDescriptorSetLayoutBinding* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetLayoutCreateInfo(
+ const VkDescriptorSetLayoutCreateInfo* a,
+ const VkDescriptorSetLayoutCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorPoolSize(
+ const VkDescriptorPoolSize* a,
+ const VkDescriptorPoolSize* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorPoolCreateInfo(
+ const VkDescriptorPoolCreateInfo* a,
+ const VkDescriptorPoolCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetAllocateInfo(
+ const VkDescriptorSetAllocateInfo* a,
+ const VkDescriptorSetAllocateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorImageInfo(
+ const VkDescriptorImageInfo* a,
+ const VkDescriptorImageInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorBufferInfo(
+ const VkDescriptorBufferInfo* a,
+ const VkDescriptorBufferInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkWriteDescriptorSet(
+ const VkWriteDescriptorSet* a,
+ const VkWriteDescriptorSet* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCopyDescriptorSet(
+ const VkCopyDescriptorSet* a,
+ const VkCopyDescriptorSet* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFramebufferCreateInfo(
+ const VkFramebufferCreateInfo* a,
+ const VkFramebufferCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAttachmentDescription(
+ const VkAttachmentDescription* a,
+ const VkAttachmentDescription* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAttachmentReference(
+ const VkAttachmentReference* a,
+ const VkAttachmentReference* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassDescription(
+ const VkSubpassDescription* a,
+ const VkSubpassDescription* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassDependency(
+ const VkSubpassDependency* a,
+ const VkSubpassDependency* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassCreateInfo(
+ const VkRenderPassCreateInfo* a,
+ const VkRenderPassCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCommandPoolCreateInfo(
+ const VkCommandPoolCreateInfo* a,
+ const VkCommandPoolCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCommandBufferAllocateInfo(
+ const VkCommandBufferAllocateInfo* a,
+ const VkCommandBufferAllocateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCommandBufferInheritanceInfo(
+ const VkCommandBufferInheritanceInfo* a,
+ const VkCommandBufferInheritanceInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCommandBufferBeginInfo(
+ const VkCommandBufferBeginInfo* a,
+ const VkCommandBufferBeginInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferCopy(
+ const VkBufferCopy* a,
+ const VkBufferCopy* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageSubresourceLayers(
+ const VkImageSubresourceLayers* a,
+ const VkImageSubresourceLayers* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageCopy(
+ const VkImageCopy* a,
+ const VkImageCopy* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageBlit(
+ const VkImageBlit* a,
+ const VkImageBlit* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferImageCopy(
+ const VkBufferImageCopy* a,
+ const VkBufferImageCopy* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkClearColorValue(
+ const VkClearColorValue* a,
+ const VkClearColorValue* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkClearDepthStencilValue(
+ const VkClearDepthStencilValue* a,
+ const VkClearDepthStencilValue* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkClearValue(
+ const VkClearValue* a,
+ const VkClearValue* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkClearAttachment(
+ const VkClearAttachment* a,
+ const VkClearAttachment* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkClearRect(
+ const VkClearRect* a,
+ const VkClearRect* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageResolve(
+ const VkImageResolve* a,
+ const VkImageResolve* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryBarrier(
+ const VkMemoryBarrier* a,
+ const VkMemoryBarrier* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferMemoryBarrier(
+ const VkBufferMemoryBarrier* a,
+ const VkBufferMemoryBarrier* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageMemoryBarrier(
+ const VkImageMemoryBarrier* a,
+ const VkImageMemoryBarrier* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassBeginInfo(
+ const VkRenderPassBeginInfo* a,
+ const VkRenderPassBeginInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDispatchIndirectCommand(
+ const VkDispatchIndirectCommand* a,
+ const VkDispatchIndirectCommand* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDrawIndexedIndirectCommand(
+ const VkDrawIndexedIndirectCommand* a,
+ const VkDrawIndexedIndirectCommand* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDrawIndirectCommand(
+ const VkDrawIndirectCommand* a,
+ const VkDrawIndirectCommand* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBaseOutStructure(
+ const VkBaseOutStructure* a,
+ const VkBaseOutStructure* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBaseInStructure(
+ const VkBaseInStructure* a,
+ const VkBaseInStructure* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_VERSION_1_1
+void checkEqual_VkPhysicalDeviceSubgroupProperties(
+ const VkPhysicalDeviceSubgroupProperties* a,
+ const VkPhysicalDeviceSubgroupProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindBufferMemoryInfo(
+ const VkBindBufferMemoryInfo* a,
+ const VkBindBufferMemoryInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindImageMemoryInfo(
+ const VkBindImageMemoryInfo* a,
+ const VkBindImageMemoryInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDevice16BitStorageFeatures(
+ const VkPhysicalDevice16BitStorageFeatures* a,
+ const VkPhysicalDevice16BitStorageFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryDedicatedRequirements(
+ const VkMemoryDedicatedRequirements* a,
+ const VkMemoryDedicatedRequirements* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryDedicatedAllocateInfo(
+ const VkMemoryDedicatedAllocateInfo* a,
+ const VkMemoryDedicatedAllocateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryAllocateFlagsInfo(
+ const VkMemoryAllocateFlagsInfo* a,
+ const VkMemoryAllocateFlagsInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupRenderPassBeginInfo(
+ const VkDeviceGroupRenderPassBeginInfo* a,
+ const VkDeviceGroupRenderPassBeginInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupCommandBufferBeginInfo(
+ const VkDeviceGroupCommandBufferBeginInfo* a,
+ const VkDeviceGroupCommandBufferBeginInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupSubmitInfo(
+ const VkDeviceGroupSubmitInfo* a,
+ const VkDeviceGroupSubmitInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupBindSparseInfo(
+ const VkDeviceGroupBindSparseInfo* a,
+ const VkDeviceGroupBindSparseInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindBufferMemoryDeviceGroupInfo(
+ const VkBindBufferMemoryDeviceGroupInfo* a,
+ const VkBindBufferMemoryDeviceGroupInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindImageMemoryDeviceGroupInfo(
+ const VkBindImageMemoryDeviceGroupInfo* a,
+ const VkBindImageMemoryDeviceGroupInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceGroupProperties(
+ const VkPhysicalDeviceGroupProperties* a,
+ const VkPhysicalDeviceGroupProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupDeviceCreateInfo(
+ const VkDeviceGroupDeviceCreateInfo* a,
+ const VkDeviceGroupDeviceCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBufferMemoryRequirementsInfo2(
+ const VkBufferMemoryRequirementsInfo2* a,
+ const VkBufferMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageMemoryRequirementsInfo2(
+ const VkImageMemoryRequirementsInfo2* a,
+ const VkImageMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageSparseMemoryRequirementsInfo2(
+ const VkImageSparseMemoryRequirementsInfo2* a,
+ const VkImageSparseMemoryRequirementsInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryRequirements2(
+ const VkMemoryRequirements2* a,
+ const VkMemoryRequirements2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageMemoryRequirements2(
+ const VkSparseImageMemoryRequirements2* a,
+ const VkSparseImageMemoryRequirements2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceFeatures2(
+ const VkPhysicalDeviceFeatures2* a,
+ const VkPhysicalDeviceFeatures2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceProperties2(
+ const VkPhysicalDeviceProperties2* a,
+ const VkPhysicalDeviceProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFormatProperties2(
+ const VkFormatProperties2* a,
+ const VkFormatProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageFormatProperties2(
+ const VkImageFormatProperties2* a,
+ const VkImageFormatProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceImageFormatInfo2(
+ const VkPhysicalDeviceImageFormatInfo2* a,
+ const VkPhysicalDeviceImageFormatInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkQueueFamilyProperties2(
+ const VkQueueFamilyProperties2* a,
+ const VkQueueFamilyProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceMemoryProperties2(
+ const VkPhysicalDeviceMemoryProperties2* a,
+ const VkPhysicalDeviceMemoryProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSparseImageFormatProperties2(
+ const VkSparseImageFormatProperties2* a,
+ const VkSparseImageFormatProperties2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceSparseImageFormatInfo2(
+ const VkPhysicalDeviceSparseImageFormatInfo2* a,
+ const VkPhysicalDeviceSparseImageFormatInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDevicePointClippingProperties(
+ const VkPhysicalDevicePointClippingProperties* a,
+ const VkPhysicalDevicePointClippingProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkInputAttachmentAspectReference(
+ const VkInputAttachmentAspectReference* a,
+ const VkInputAttachmentAspectReference* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassInputAttachmentAspectCreateInfo(
+ const VkRenderPassInputAttachmentAspectCreateInfo* a,
+ const VkRenderPassInputAttachmentAspectCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageViewUsageCreateInfo(
+ const VkImageViewUsageCreateInfo* a,
+ const VkImageViewUsageCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineTessellationDomainOriginStateCreateInfo(
+ const VkPipelineTessellationDomainOriginStateCreateInfo* a,
+ const VkPipelineTessellationDomainOriginStateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassMultiviewCreateInfo(
+ const VkRenderPassMultiviewCreateInfo* a,
+ const VkRenderPassMultiviewCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceMultiviewFeatures(
+ const VkPhysicalDeviceMultiviewFeatures* a,
+ const VkPhysicalDeviceMultiviewFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceMultiviewProperties(
+ const VkPhysicalDeviceMultiviewProperties* a,
+ const VkPhysicalDeviceMultiviewProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceVariablePointerFeatures(
+ const VkPhysicalDeviceVariablePointerFeatures* a,
+ const VkPhysicalDeviceVariablePointerFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceProtectedMemoryFeatures(
+ const VkPhysicalDeviceProtectedMemoryFeatures* a,
+ const VkPhysicalDeviceProtectedMemoryFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceProtectedMemoryProperties(
+ const VkPhysicalDeviceProtectedMemoryProperties* a,
+ const VkPhysicalDeviceProtectedMemoryProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceQueueInfo2(
+ const VkDeviceQueueInfo2* a,
+ const VkDeviceQueueInfo2* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkProtectedSubmitInfo(
+ const VkProtectedSubmitInfo* a,
+ const VkProtectedSubmitInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSamplerYcbcrConversionCreateInfo(
+ const VkSamplerYcbcrConversionCreateInfo* a,
+ const VkSamplerYcbcrConversionCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSamplerYcbcrConversionInfo(
+ const VkSamplerYcbcrConversionInfo* a,
+ const VkSamplerYcbcrConversionInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindImagePlaneMemoryInfo(
+ const VkBindImagePlaneMemoryInfo* a,
+ const VkBindImagePlaneMemoryInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImagePlaneMemoryRequirementsInfo(
+ const VkImagePlaneMemoryRequirementsInfo* a,
+ const VkImagePlaneMemoryRequirementsInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceSamplerYcbcrConversionFeatures(
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* a,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSamplerYcbcrConversionImageFormatProperties(
+ const VkSamplerYcbcrConversionImageFormatProperties* a,
+ const VkSamplerYcbcrConversionImageFormatProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorUpdateTemplateEntry(
+ const VkDescriptorUpdateTemplateEntry* a,
+ const VkDescriptorUpdateTemplateEntry* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorUpdateTemplateCreateInfo(
+ const VkDescriptorUpdateTemplateCreateInfo* a,
+ const VkDescriptorUpdateTemplateCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalMemoryProperties(
+ const VkExternalMemoryProperties* a,
+ const VkExternalMemoryProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceExternalImageFormatInfo(
+ const VkPhysicalDeviceExternalImageFormatInfo* a,
+ const VkPhysicalDeviceExternalImageFormatInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalImageFormatProperties(
+ const VkExternalImageFormatProperties* a,
+ const VkExternalImageFormatProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceExternalBufferInfo(
+ const VkPhysicalDeviceExternalBufferInfo* a,
+ const VkPhysicalDeviceExternalBufferInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalBufferProperties(
+ const VkExternalBufferProperties* a,
+ const VkExternalBufferProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceIDProperties(
+ const VkPhysicalDeviceIDProperties* a,
+ const VkPhysicalDeviceIDProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalMemoryImageCreateInfo(
+ const VkExternalMemoryImageCreateInfo* a,
+ const VkExternalMemoryImageCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalMemoryBufferCreateInfo(
+ const VkExternalMemoryBufferCreateInfo* a,
+ const VkExternalMemoryBufferCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportMemoryAllocateInfo(
+ const VkExportMemoryAllocateInfo* a,
+ const VkExportMemoryAllocateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceExternalFenceInfo(
+ const VkPhysicalDeviceExternalFenceInfo* a,
+ const VkPhysicalDeviceExternalFenceInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalFenceProperties(
+ const VkExternalFenceProperties* a,
+ const VkExternalFenceProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportFenceCreateInfo(
+ const VkExportFenceCreateInfo* a,
+ const VkExportFenceCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportSemaphoreCreateInfo(
+ const VkExportSemaphoreCreateInfo* a,
+ const VkExportSemaphoreCreateInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceExternalSemaphoreInfo(
+ const VkPhysicalDeviceExternalSemaphoreInfo* a,
+ const VkPhysicalDeviceExternalSemaphoreInfo* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalSemaphoreProperties(
+ const VkExternalSemaphoreProperties* a,
+ const VkExternalSemaphoreProperties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceMaintenance3Properties(
+ const VkPhysicalDeviceMaintenance3Properties* a,
+ const VkPhysicalDeviceMaintenance3Properties* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetLayoutSupport(
+ const VkDescriptorSetLayoutSupport* a,
+ const VkDescriptorSetLayoutSupport* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceShaderDrawParameterFeatures(
+ const VkPhysicalDeviceShaderDrawParameterFeatures* a,
+ const VkPhysicalDeviceShaderDrawParameterFeatures* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_surface
+void checkEqual_VkSurfaceCapabilitiesKHR(
+ const VkSurfaceCapabilitiesKHR* a,
+ const VkSurfaceCapabilitiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSurfaceFormatKHR(
+ const VkSurfaceFormatKHR* a,
+ const VkSurfaceFormatKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_swapchain
+void checkEqual_VkSwapchainCreateInfoKHR(
+ const VkSwapchainCreateInfoKHR* a,
+ const VkSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPresentInfoKHR(
+ const VkPresentInfoKHR* a,
+ const VkPresentInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImageSwapchainCreateInfoKHR(
+ const VkImageSwapchainCreateInfoKHR* a,
+ const VkImageSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkBindImageMemorySwapchainInfoKHR(
+ const VkBindImageMemorySwapchainInfoKHR* a,
+ const VkBindImageMemorySwapchainInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAcquireNextImageInfoKHR(
+ const VkAcquireNextImageInfoKHR* a,
+ const VkAcquireNextImageInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupPresentCapabilitiesKHR(
+ const VkDeviceGroupPresentCapabilitiesKHR* a,
+ const VkDeviceGroupPresentCapabilitiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupPresentInfoKHR(
+ const VkDeviceGroupPresentInfoKHR* a,
+ const VkDeviceGroupPresentInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGroupSwapchainCreateInfoKHR(
+ const VkDeviceGroupSwapchainCreateInfoKHR* a,
+ const VkDeviceGroupSwapchainCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_display
+void checkEqual_VkDisplayPropertiesKHR(
+ const VkDisplayPropertiesKHR* a,
+ const VkDisplayPropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayModeParametersKHR(
+ const VkDisplayModeParametersKHR* a,
+ const VkDisplayModeParametersKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayModePropertiesKHR(
+ const VkDisplayModePropertiesKHR* a,
+ const VkDisplayModePropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayModeCreateInfoKHR(
+ const VkDisplayModeCreateInfoKHR* a,
+ const VkDisplayModeCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayPlaneCapabilitiesKHR(
+ const VkDisplayPlaneCapabilitiesKHR* a,
+ const VkDisplayPlaneCapabilitiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayPlanePropertiesKHR(
+ const VkDisplayPlanePropertiesKHR* a,
+ const VkDisplayPlanePropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplaySurfaceCreateInfoKHR(
+ const VkDisplaySurfaceCreateInfoKHR* a,
+ const VkDisplaySurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_display_swapchain
+void checkEqual_VkDisplayPresentInfoKHR(
+ const VkDisplayPresentInfoKHR* a,
+ const VkDisplayPresentInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_xlib_surface
+void checkEqual_VkXlibSurfaceCreateInfoKHR(
+ const VkXlibSurfaceCreateInfoKHR* a,
+ const VkXlibSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_xcb_surface
+void checkEqual_VkXcbSurfaceCreateInfoKHR(
+ const VkXcbSurfaceCreateInfoKHR* a,
+ const VkXcbSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_wayland_surface
+void checkEqual_VkWaylandSurfaceCreateInfoKHR(
+ const VkWaylandSurfaceCreateInfoKHR* a,
+ const VkWaylandSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_mir_surface
+void checkEqual_VkMirSurfaceCreateInfoKHR(
+ const VkMirSurfaceCreateInfoKHR* a,
+ const VkMirSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_android_surface
+void checkEqual_VkAndroidSurfaceCreateInfoKHR(
+ const VkAndroidSurfaceCreateInfoKHR* a,
+ const VkAndroidSurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_win32_surface
+void checkEqual_VkWin32SurfaceCreateInfoKHR(
+ const VkWin32SurfaceCreateInfoKHR* a,
+ const VkWin32SurfaceCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_sampler_mirror_clamp_to_edge
+#endif
+#ifdef VK_KHR_multiview
+#endif
+#ifdef VK_KHR_get_physical_device_properties2
+#endif
+#ifdef VK_KHR_device_group
+#endif
+#ifdef VK_KHR_shader_draw_parameters
+#endif
+#ifdef VK_KHR_maintenance1
+#endif
+#ifdef VK_KHR_device_group_creation
+#endif
+#ifdef VK_KHR_external_memory_capabilities
+#endif
+#ifdef VK_KHR_external_memory
+#endif
+#ifdef VK_KHR_external_memory_win32
+void checkEqual_VkImportMemoryWin32HandleInfoKHR(
+ const VkImportMemoryWin32HandleInfoKHR* a,
+ const VkImportMemoryWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportMemoryWin32HandleInfoKHR(
+ const VkExportMemoryWin32HandleInfoKHR* a,
+ const VkExportMemoryWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryWin32HandlePropertiesKHR(
+ const VkMemoryWin32HandlePropertiesKHR* a,
+ const VkMemoryWin32HandlePropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryGetWin32HandleInfoKHR(
+ const VkMemoryGetWin32HandleInfoKHR* a,
+ const VkMemoryGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_external_memory_fd
+void checkEqual_VkImportMemoryFdInfoKHR(
+ const VkImportMemoryFdInfoKHR* a,
+ const VkImportMemoryFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryFdPropertiesKHR(
+ const VkMemoryFdPropertiesKHR* a,
+ const VkMemoryFdPropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryGetFdInfoKHR(
+ const VkMemoryGetFdInfoKHR* a,
+ const VkMemoryGetFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_win32_keyed_mutex
+void checkEqual_VkWin32KeyedMutexAcquireReleaseInfoKHR(
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* a,
+ const VkWin32KeyedMutexAcquireReleaseInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_external_semaphore_capabilities
+#endif
+#ifdef VK_KHR_external_semaphore
+#endif
+#ifdef VK_KHR_external_semaphore_win32
+void checkEqual_VkImportSemaphoreWin32HandleInfoKHR(
+ const VkImportSemaphoreWin32HandleInfoKHR* a,
+ const VkImportSemaphoreWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportSemaphoreWin32HandleInfoKHR(
+ const VkExportSemaphoreWin32HandleInfoKHR* a,
+ const VkExportSemaphoreWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkD3D12FenceSubmitInfoKHR(
+ const VkD3D12FenceSubmitInfoKHR* a,
+ const VkD3D12FenceSubmitInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSemaphoreGetWin32HandleInfoKHR(
+ const VkSemaphoreGetWin32HandleInfoKHR* a,
+ const VkSemaphoreGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_external_semaphore_fd
+void checkEqual_VkImportSemaphoreFdInfoKHR(
+ const VkImportSemaphoreFdInfoKHR* a,
+ const VkImportSemaphoreFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSemaphoreGetFdInfoKHR(
+ const VkSemaphoreGetFdInfoKHR* a,
+ const VkSemaphoreGetFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_push_descriptor
+void checkEqual_VkPhysicalDevicePushDescriptorPropertiesKHR(
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* a,
+ const VkPhysicalDevicePushDescriptorPropertiesKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_16bit_storage
+#endif
+#ifdef VK_KHR_incremental_present
+void checkEqual_VkRectLayerKHR(
+ const VkRectLayerKHR* a,
+ const VkRectLayerKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPresentRegionKHR(
+ const VkPresentRegionKHR* a,
+ const VkPresentRegionKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPresentRegionsKHR(
+ const VkPresentRegionsKHR* a,
+ const VkPresentRegionsKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_descriptor_update_template
+#endif
+#ifdef VK_KHR_create_renderpass2
+void checkEqual_VkAttachmentDescription2KHR(
+ const VkAttachmentDescription2KHR* a,
+ const VkAttachmentDescription2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAttachmentReference2KHR(
+ const VkAttachmentReference2KHR* a,
+ const VkAttachmentReference2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassDescription2KHR(
+ const VkSubpassDescription2KHR* a,
+ const VkSubpassDescription2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassDependency2KHR(
+ const VkSubpassDependency2KHR* a,
+ const VkSubpassDependency2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassCreateInfo2KHR(
+ const VkRenderPassCreateInfo2KHR* a,
+ const VkRenderPassCreateInfo2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassBeginInfoKHR(
+ const VkSubpassBeginInfoKHR* a,
+ const VkSubpassBeginInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassEndInfoKHR(
+ const VkSubpassEndInfoKHR* a,
+ const VkSubpassEndInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_shared_presentable_image
+void checkEqual_VkSharedPresentSurfaceCapabilitiesKHR(
+ const VkSharedPresentSurfaceCapabilitiesKHR* a,
+ const VkSharedPresentSurfaceCapabilitiesKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_external_fence_capabilities
+#endif
+#ifdef VK_KHR_external_fence
+#endif
+#ifdef VK_KHR_external_fence_win32
+void checkEqual_VkImportFenceWin32HandleInfoKHR(
+ const VkImportFenceWin32HandleInfoKHR* a,
+ const VkImportFenceWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportFenceWin32HandleInfoKHR(
+ const VkExportFenceWin32HandleInfoKHR* a,
+ const VkExportFenceWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFenceGetWin32HandleInfoKHR(
+ const VkFenceGetWin32HandleInfoKHR* a,
+ const VkFenceGetWin32HandleInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_external_fence_fd
+void checkEqual_VkImportFenceFdInfoKHR(
+ const VkImportFenceFdInfoKHR* a,
+ const VkImportFenceFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkFenceGetFdInfoKHR(
+ const VkFenceGetFdInfoKHR* a,
+ const VkFenceGetFdInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_maintenance2
+#endif
+#ifdef VK_KHR_get_surface_capabilities2
+void checkEqual_VkPhysicalDeviceSurfaceInfo2KHR(
+ const VkPhysicalDeviceSurfaceInfo2KHR* a,
+ const VkPhysicalDeviceSurfaceInfo2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSurfaceCapabilities2KHR(
+ const VkSurfaceCapabilities2KHR* a,
+ const VkSurfaceCapabilities2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSurfaceFormat2KHR(
+ const VkSurfaceFormat2KHR* a,
+ const VkSurfaceFormat2KHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_variable_pointers
+#endif
+#ifdef VK_KHR_get_display_properties2
+void checkEqual_VkDisplayProperties2KHR(
+ const VkDisplayProperties2KHR* a,
+ const VkDisplayProperties2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayPlaneProperties2KHR(
+ const VkDisplayPlaneProperties2KHR* a,
+ const VkDisplayPlaneProperties2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayModeProperties2KHR(
+ const VkDisplayModeProperties2KHR* a,
+ const VkDisplayModeProperties2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayPlaneInfo2KHR(
+ const VkDisplayPlaneInfo2KHR* a,
+ const VkDisplayPlaneInfo2KHR* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayPlaneCapabilities2KHR(
+ const VkDisplayPlaneCapabilities2KHR* a,
+ const VkDisplayPlaneCapabilities2KHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_dedicated_allocation
+#endif
+#ifdef VK_KHR_storage_buffer_storage_class
+#endif
+#ifdef VK_KHR_relaxed_block_layout
+#endif
+#ifdef VK_KHR_get_memory_requirements2
+#endif
+#ifdef VK_KHR_image_format_list
+void checkEqual_VkImageFormatListCreateInfoKHR(
+ const VkImageFormatListCreateInfoKHR* a,
+ const VkImageFormatListCreateInfoKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_KHR_sampler_ycbcr_conversion
+#endif
+#ifdef VK_KHR_bind_memory2
+#endif
+#ifdef VK_KHR_maintenance3
+#endif
+#ifdef VK_KHR_draw_indirect_count
+#endif
+#ifdef VK_KHR_8bit_storage
+void checkEqual_VkPhysicalDevice8BitStorageFeaturesKHR(
+ const VkPhysicalDevice8BitStorageFeaturesKHR* a,
+ const VkPhysicalDevice8BitStorageFeaturesKHR* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_debug_report
+void checkEqual_VkDebugReportCallbackCreateInfoEXT(
+ const VkDebugReportCallbackCreateInfoEXT* a,
+ const VkDebugReportCallbackCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_glsl_shader
+#endif
+#ifdef VK_EXT_depth_range_unrestricted
+#endif
+#ifdef VK_IMG_filter_cubic
+#endif
+#ifdef VK_AMD_rasterization_order
+void checkEqual_VkPipelineRasterizationStateRasterizationOrderAMD(
+ const VkPipelineRasterizationStateRasterizationOrderAMD* a,
+ const VkPipelineRasterizationStateRasterizationOrderAMD* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_shader_trinary_minmax
+#endif
+#ifdef VK_AMD_shader_explicit_vertex_parameter
+#endif
+#ifdef VK_EXT_debug_marker
+void checkEqual_VkDebugMarkerObjectNameInfoEXT(
+ const VkDebugMarkerObjectNameInfoEXT* a,
+ const VkDebugMarkerObjectNameInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugMarkerObjectTagInfoEXT(
+ const VkDebugMarkerObjectTagInfoEXT* a,
+ const VkDebugMarkerObjectTagInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugMarkerMarkerInfoEXT(
+ const VkDebugMarkerMarkerInfoEXT* a,
+ const VkDebugMarkerMarkerInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_gcn_shader
+#endif
+#ifdef VK_NV_dedicated_allocation
+void checkEqual_VkDedicatedAllocationImageCreateInfoNV(
+ const VkDedicatedAllocationImageCreateInfoNV* a,
+ const VkDedicatedAllocationImageCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDedicatedAllocationBufferCreateInfoNV(
+ const VkDedicatedAllocationBufferCreateInfoNV* a,
+ const VkDedicatedAllocationBufferCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDedicatedAllocationMemoryAllocateInfoNV(
+ const VkDedicatedAllocationMemoryAllocateInfoNV* a,
+ const VkDedicatedAllocationMemoryAllocateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_draw_indirect_count
+#endif
+#ifdef VK_AMD_negative_viewport_height
+#endif
+#ifdef VK_AMD_gpu_shader_half_float
+#endif
+#ifdef VK_AMD_shader_ballot
+#endif
+#ifdef VK_AMD_texture_gather_bias_lod
+void checkEqual_VkTextureLODGatherFormatPropertiesAMD(
+ const VkTextureLODGatherFormatPropertiesAMD* a,
+ const VkTextureLODGatherFormatPropertiesAMD* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_shader_info
+void checkEqual_VkShaderResourceUsageAMD(
+ const VkShaderResourceUsageAMD* a,
+ const VkShaderResourceUsageAMD* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkShaderStatisticsInfoAMD(
+ const VkShaderStatisticsInfoAMD* a,
+ const VkShaderStatisticsInfoAMD* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_shader_image_load_store_lod
+#endif
+#ifdef VK_IMG_format_pvrtc
+#endif
+#ifdef VK_NV_external_memory_capabilities
+void checkEqual_VkExternalImageFormatPropertiesNV(
+ const VkExternalImageFormatPropertiesNV* a,
+ const VkExternalImageFormatPropertiesNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_external_memory
+void checkEqual_VkExternalMemoryImageCreateInfoNV(
+ const VkExternalMemoryImageCreateInfoNV* a,
+ const VkExternalMemoryImageCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportMemoryAllocateInfoNV(
+ const VkExportMemoryAllocateInfoNV* a,
+ const VkExportMemoryAllocateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_external_memory_win32
+void checkEqual_VkImportMemoryWin32HandleInfoNV(
+ const VkImportMemoryWin32HandleInfoNV* a,
+ const VkImportMemoryWin32HandleInfoNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExportMemoryWin32HandleInfoNV(
+ const VkExportMemoryWin32HandleInfoNV* a,
+ const VkExportMemoryWin32HandleInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_win32_keyed_mutex
+void checkEqual_VkWin32KeyedMutexAcquireReleaseInfoNV(
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* a,
+ const VkWin32KeyedMutexAcquireReleaseInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_validation_flags
+void checkEqual_VkValidationFlagsEXT(
+ const VkValidationFlagsEXT* a,
+ const VkValidationFlagsEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NN_vi_surface
+void checkEqual_VkViSurfaceCreateInfoNN(
+ const VkViSurfaceCreateInfoNN* a,
+ const VkViSurfaceCreateInfoNN* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_shader_subgroup_ballot
+#endif
+#ifdef VK_EXT_shader_subgroup_vote
+#endif
+#ifdef VK_EXT_conditional_rendering
+void checkEqual_VkConditionalRenderingBeginInfoEXT(
+ const VkConditionalRenderingBeginInfoEXT* a,
+ const VkConditionalRenderingBeginInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceConditionalRenderingFeaturesEXT(
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* a,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCommandBufferInheritanceConditionalRenderingInfoEXT(
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* a,
+ const VkCommandBufferInheritanceConditionalRenderingInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NVX_device_generated_commands
+void checkEqual_VkDeviceGeneratedCommandsFeaturesNVX(
+ const VkDeviceGeneratedCommandsFeaturesNVX* a,
+ const VkDeviceGeneratedCommandsFeaturesNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceGeneratedCommandsLimitsNVX(
+ const VkDeviceGeneratedCommandsLimitsNVX* a,
+ const VkDeviceGeneratedCommandsLimitsNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkIndirectCommandsTokenNVX(
+ const VkIndirectCommandsTokenNVX* a,
+ const VkIndirectCommandsTokenNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkIndirectCommandsLayoutTokenNVX(
+ const VkIndirectCommandsLayoutTokenNVX* a,
+ const VkIndirectCommandsLayoutTokenNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkIndirectCommandsLayoutCreateInfoNVX(
+ const VkIndirectCommandsLayoutCreateInfoNVX* a,
+ const VkIndirectCommandsLayoutCreateInfoNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCmdProcessCommandsInfoNVX(
+ const VkCmdProcessCommandsInfoNVX* a,
+ const VkCmdProcessCommandsInfoNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCmdReserveSpaceForCommandsInfoNVX(
+ const VkCmdReserveSpaceForCommandsInfoNVX* a,
+ const VkCmdReserveSpaceForCommandsInfoNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTableCreateInfoNVX(
+ const VkObjectTableCreateInfoNVX* a,
+ const VkObjectTableCreateInfoNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTableEntryNVX(
+ const VkObjectTableEntryNVX* a,
+ const VkObjectTableEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTablePipelineEntryNVX(
+ const VkObjectTablePipelineEntryNVX* a,
+ const VkObjectTablePipelineEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTableDescriptorSetEntryNVX(
+ const VkObjectTableDescriptorSetEntryNVX* a,
+ const VkObjectTableDescriptorSetEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTableVertexBufferEntryNVX(
+ const VkObjectTableVertexBufferEntryNVX* a,
+ const VkObjectTableVertexBufferEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTableIndexBufferEntryNVX(
+ const VkObjectTableIndexBufferEntryNVX* a,
+ const VkObjectTableIndexBufferEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkObjectTablePushConstantEntryNVX(
+ const VkObjectTablePushConstantEntryNVX* a,
+ const VkObjectTablePushConstantEntryNVX* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_clip_space_w_scaling
+void checkEqual_VkViewportWScalingNV(
+ const VkViewportWScalingNV* a,
+ const VkViewportWScalingNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineViewportWScalingStateCreateInfoNV(
+ const VkPipelineViewportWScalingStateCreateInfoNV* a,
+ const VkPipelineViewportWScalingStateCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_direct_mode_display
+#endif
+#ifdef VK_EXT_acquire_xlib_display
+#endif
+#ifdef VK_EXT_display_surface_counter
+void checkEqual_VkSurfaceCapabilities2EXT(
+ const VkSurfaceCapabilities2EXT* a,
+ const VkSurfaceCapabilities2EXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_display_control
+void checkEqual_VkDisplayPowerInfoEXT(
+ const VkDisplayPowerInfoEXT* a,
+ const VkDisplayPowerInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDeviceEventInfoEXT(
+ const VkDeviceEventInfoEXT* a,
+ const VkDeviceEventInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDisplayEventInfoEXT(
+ const VkDisplayEventInfoEXT* a,
+ const VkDisplayEventInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSwapchainCounterCreateInfoEXT(
+ const VkSwapchainCounterCreateInfoEXT* a,
+ const VkSwapchainCounterCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_GOOGLE_display_timing
+void checkEqual_VkRefreshCycleDurationGOOGLE(
+ const VkRefreshCycleDurationGOOGLE* a,
+ const VkRefreshCycleDurationGOOGLE* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPastPresentationTimingGOOGLE(
+ const VkPastPresentationTimingGOOGLE* a,
+ const VkPastPresentationTimingGOOGLE* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPresentTimeGOOGLE(
+ const VkPresentTimeGOOGLE* a,
+ const VkPresentTimeGOOGLE* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPresentTimesInfoGOOGLE(
+ const VkPresentTimesInfoGOOGLE* a,
+ const VkPresentTimesInfoGOOGLE* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_sample_mask_override_coverage
+#endif
+#ifdef VK_NV_geometry_shader_passthrough
+#endif
+#ifdef VK_NV_viewport_array2
+#endif
+#ifdef VK_NVX_multiview_per_view_attributes
+void checkEqual_VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* a,
+ const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_viewport_swizzle
+void checkEqual_VkViewportSwizzleNV(
+ const VkViewportSwizzleNV* a,
+ const VkViewportSwizzleNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineViewportSwizzleStateCreateInfoNV(
+ const VkPipelineViewportSwizzleStateCreateInfoNV* a,
+ const VkPipelineViewportSwizzleStateCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_discard_rectangles
+void checkEqual_VkPhysicalDeviceDiscardRectanglePropertiesEXT(
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* a,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineDiscardRectangleStateCreateInfoEXT(
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* a,
+ const VkPipelineDiscardRectangleStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_conservative_rasterization
+void checkEqual_VkPhysicalDeviceConservativeRasterizationPropertiesEXT(
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* a,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineRasterizationConservativeStateCreateInfoEXT(
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* a,
+ const VkPipelineRasterizationConservativeStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_swapchain_colorspace
+#endif
+#ifdef VK_EXT_hdr_metadata
+void checkEqual_VkXYColorEXT(
+ const VkXYColorEXT* a,
+ const VkXYColorEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkHdrMetadataEXT(
+ const VkHdrMetadataEXT* a,
+ const VkHdrMetadataEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_MVK_ios_surface
+void checkEqual_VkIOSSurfaceCreateInfoMVK(
+ const VkIOSSurfaceCreateInfoMVK* a,
+ const VkIOSSurfaceCreateInfoMVK* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_MVK_macos_surface
+void checkEqual_VkMacOSSurfaceCreateInfoMVK(
+ const VkMacOSSurfaceCreateInfoMVK* a,
+ const VkMacOSSurfaceCreateInfoMVK* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_external_memory_dma_buf
+#endif
+#ifdef VK_EXT_queue_family_foreign
+#endif
+#ifdef VK_EXT_debug_utils
+void checkEqual_VkDebugUtilsObjectNameInfoEXT(
+ const VkDebugUtilsObjectNameInfoEXT* a,
+ const VkDebugUtilsObjectNameInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugUtilsObjectTagInfoEXT(
+ const VkDebugUtilsObjectTagInfoEXT* a,
+ const VkDebugUtilsObjectTagInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugUtilsLabelEXT(
+ const VkDebugUtilsLabelEXT* a,
+ const VkDebugUtilsLabelEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugUtilsMessengerCallbackDataEXT(
+ const VkDebugUtilsMessengerCallbackDataEXT* a,
+ const VkDebugUtilsMessengerCallbackDataEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDebugUtilsMessengerCreateInfoEXT(
+ const VkDebugUtilsMessengerCreateInfoEXT* a,
+ const VkDebugUtilsMessengerCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_ANDROID_external_memory_android_hardware_buffer
+void checkEqual_VkAndroidHardwareBufferUsageANDROID(
+ const VkAndroidHardwareBufferUsageANDROID* a,
+ const VkAndroidHardwareBufferUsageANDROID* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAndroidHardwareBufferPropertiesANDROID(
+ const VkAndroidHardwareBufferPropertiesANDROID* a,
+ const VkAndroidHardwareBufferPropertiesANDROID* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAndroidHardwareBufferFormatPropertiesANDROID(
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* a,
+ const VkAndroidHardwareBufferFormatPropertiesANDROID* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkImportAndroidHardwareBufferInfoANDROID(
+ const VkImportAndroidHardwareBufferInfoANDROID* a,
+ const VkImportAndroidHardwareBufferInfoANDROID* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryGetAndroidHardwareBufferInfoANDROID(
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* a,
+ const VkMemoryGetAndroidHardwareBufferInfoANDROID* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkExternalFormatANDROID(
+ const VkExternalFormatANDROID* a,
+ const VkExternalFormatANDROID* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_sampler_filter_minmax
+void checkEqual_VkSamplerReductionModeCreateInfoEXT(
+ const VkSamplerReductionModeCreateInfoEXT* a,
+ const VkSamplerReductionModeCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* a,
+ const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_gpu_shader_int16
+#endif
+#ifdef VK_AMD_mixed_attachment_samples
+#endif
+#ifdef VK_AMD_shader_fragment_mask
+#endif
+#ifdef VK_EXT_shader_stencil_export
+#endif
+#ifdef VK_EXT_sample_locations
+void checkEqual_VkSampleLocationEXT(
+ const VkSampleLocationEXT* a,
+ const VkSampleLocationEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSampleLocationsInfoEXT(
+ const VkSampleLocationsInfoEXT* a,
+ const VkSampleLocationsInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkAttachmentSampleLocationsEXT(
+ const VkAttachmentSampleLocationsEXT* a,
+ const VkAttachmentSampleLocationsEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkSubpassSampleLocationsEXT(
+ const VkSubpassSampleLocationsEXT* a,
+ const VkSubpassSampleLocationsEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkRenderPassSampleLocationsBeginInfoEXT(
+ const VkRenderPassSampleLocationsBeginInfoEXT* a,
+ const VkRenderPassSampleLocationsBeginInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineSampleLocationsStateCreateInfoEXT(
+ const VkPipelineSampleLocationsStateCreateInfoEXT* a,
+ const VkPipelineSampleLocationsStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceSampleLocationsPropertiesEXT(
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* a,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMultisamplePropertiesEXT(
+ const VkMultisamplePropertiesEXT* a,
+ const VkMultisamplePropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_blend_operation_advanced
+void checkEqual_VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* a,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* a,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineColorBlendAdvancedStateCreateInfoEXT(
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* a,
+ const VkPipelineColorBlendAdvancedStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_fragment_coverage_to_color
+void checkEqual_VkPipelineCoverageToColorStateCreateInfoNV(
+ const VkPipelineCoverageToColorStateCreateInfoNV* a,
+ const VkPipelineCoverageToColorStateCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_framebuffer_mixed_samples
+void checkEqual_VkPipelineCoverageModulationStateCreateInfoNV(
+ const VkPipelineCoverageModulationStateCreateInfoNV* a,
+ const VkPipelineCoverageModulationStateCreateInfoNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_fill_rectangle
+#endif
+#ifdef VK_EXT_post_depth_coverage
+#endif
+#ifdef VK_EXT_validation_cache
+void checkEqual_VkValidationCacheCreateInfoEXT(
+ const VkValidationCacheCreateInfoEXT* a,
+ const VkValidationCacheCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkShaderModuleValidationCacheCreateInfoEXT(
+ const VkShaderModuleValidationCacheCreateInfoEXT* a,
+ const VkShaderModuleValidationCacheCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_descriptor_indexing
+void checkEqual_VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* a,
+ const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceDescriptorIndexingFeaturesEXT(
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* a,
+ const VkPhysicalDeviceDescriptorIndexingFeaturesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceDescriptorIndexingPropertiesEXT(
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* a,
+ const VkPhysicalDeviceDescriptorIndexingPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* a,
+ const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* a,
+ const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_shader_viewport_index_layer
+#endif
+#ifdef VK_EXT_global_priority
+void checkEqual_VkDeviceQueueGlobalPriorityCreateInfoEXT(
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* a,
+ const VkDeviceQueueGlobalPriorityCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_external_memory_host
+void checkEqual_VkImportMemoryHostPointerInfoEXT(
+ const VkImportMemoryHostPointerInfoEXT* a,
+ const VkImportMemoryHostPointerInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkMemoryHostPointerPropertiesEXT(
+ const VkMemoryHostPointerPropertiesEXT* a,
+ const VkMemoryHostPointerPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPhysicalDeviceExternalMemoryHostPropertiesEXT(
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* a,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_AMD_buffer_marker
+#endif
+#ifdef VK_AMD_shader_core_properties
+void checkEqual_VkPhysicalDeviceShaderCorePropertiesAMD(
+ const VkPhysicalDeviceShaderCorePropertiesAMD* a,
+ const VkPhysicalDeviceShaderCorePropertiesAMD* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_EXT_vertex_attribute_divisor
+void checkEqual_VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* a,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkVertexInputBindingDivisorDescriptionEXT(
+ const VkVertexInputBindingDivisorDescriptionEXT* a,
+ const VkVertexInputBindingDivisorDescriptionEXT* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkPipelineVertexInputDivisorStateCreateInfoEXT(
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* a,
+ const VkPipelineVertexInputDivisorStateCreateInfoEXT* b,
+ OnFailCompareFunc onFail);
+
+#endif
+#ifdef VK_NV_shader_subgroup_partitioned
+#endif
+#ifdef VK_NV_device_diagnostic_checkpoints
+void checkEqual_VkQueueFamilyCheckpointPropertiesNV(
+ const VkQueueFamilyCheckpointPropertiesNV* a,
+ const VkQueueFamilyCheckpointPropertiesNV* b,
+ OnFailCompareFunc onFail);
+
+void checkEqual_VkCheckpointDataNV(
+ const VkCheckpointDataNV* a,
+ const VkCheckpointDataNV* b,
+ OnFailCompareFunc onFail);
+
+#endif
+
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.cpp
deleted file mode 100644
index 44a3c0a21c..0000000000
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.cpp
+++ /dev/null
@@ -1,3337 +0,0 @@
-// Module: goldfish_vk_encoder (impl) Autogenerated by CerealGenerator
-
-#ifdef VK_VERSION_1_0
-
-VkResult encode_vkCreateInstance(
- void* vkStream,
- const VkInstanceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkInstance* pInstance)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyInstance(
- void* vkStream,
- VkInstance instance,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkEnumeratePhysicalDevices(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceCount,
- VkPhysicalDevice* pPhysicalDevices)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetPhysicalDeviceFeatures(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures* pFeatures)
-{
-}
-
-void encode_vkGetPhysicalDeviceFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties* pFormatProperties)
-{
-}
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetPhysicalDeviceProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties* pProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties* pQueueFamilyProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceMemoryProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-{
-}
-
-PFN_vkVoidFunction encode_vkGetInstanceProcAddr(
- void* vkStream,
- VkInstance instance,
- const char* pName)
-{
- return (PFN_vkVoidFunction)0;
-}
-
-PFN_vkVoidFunction encode_vkGetDeviceProcAddr(
- void* vkStream,
- VkDevice device,
- const char* pName)
-{
- return (PFN_vkVoidFunction)0;
-}
-
-VkResult encode_vkCreateDevice(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkDeviceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDevice* pDevice)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDevice(
- void* vkStream,
- VkDevice device,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkEnumerateInstanceExtensionProperties(
- void* vkStream,
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkEnumerateDeviceExtensionProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkEnumerateInstanceLayerProperties(
- void* vkStream,
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkEnumerateDeviceLayerProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetDeviceQueue(
- void* vkStream,
- VkDevice device,
- uint32_t queueFamilyIndex,
- uint32_t queueIndex,
- VkQueue* pQueue)
-{
-}
-
-VkResult encode_vkQueueSubmit(
- void* vkStream,
- VkQueue queue,
- uint32_t submitCount,
- const VkSubmitInfo* pSubmits,
- VkFence fence)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkQueueWaitIdle(
- void* vkStream,
- VkQueue queue)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkDeviceWaitIdle(
- void* vkStream,
- VkDevice device)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkAllocateMemory(
- void* vkStream,
- VkDevice device,
- const VkMemoryAllocateInfo* pAllocateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDeviceMemory* pMemory)
-{
- return (VkResult)0;
-}
-
-void encode_vkFreeMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkMapMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize offset,
- VkDeviceSize size,
- VkMemoryMapFlags flags,
- void** ppData)
-{
- return (VkResult)0;
-}
-
-void encode_vkUnmapMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory)
-{
-}
-
-VkResult encode_vkFlushMappedMemoryRanges(
- void* vkStream,
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkInvalidateMappedMemoryRanges(
- void* vkStream,
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetDeviceMemoryCommitment(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize* pCommittedMemoryInBytes)
-{
-}
-
-VkResult encode_vkBindBufferMemory(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkBindImageMemory(
- void* vkStream,
- VkDevice device,
- VkImage image,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetBufferMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- VkMemoryRequirements* pMemoryRequirements)
-{
-}
-
-void encode_vkGetImageMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkImage image,
- VkMemoryRequirements* pMemoryRequirements)
-{
-}
-
-void encode_vkGetImageSparseMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkImage image,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-{
-}
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkSampleCountFlagBits samples,
- VkImageUsageFlags usage,
- VkImageTiling tiling,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties* pProperties)
-{
-}
-
-VkResult encode_vkQueueBindSparse(
- void* vkStream,
- VkQueue queue,
- uint32_t bindInfoCount,
- const VkBindSparseInfo* pBindInfo,
- VkFence fence)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateFence(
- void* vkStream,
- VkDevice device,
- const VkFenceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyFence(
- void* vkStream,
- VkDevice device,
- VkFence fence,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkResetFences(
- void* vkStream,
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetFenceStatus(
- void* vkStream,
- VkDevice device,
- VkFence fence)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkWaitForFences(
- void* vkStream,
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences,
- VkBool32 waitAll,
- uint64_t timeout)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateSemaphore(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSemaphore* pSemaphore)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroySemaphore(
- void* vkStream,
- VkDevice device,
- VkSemaphore semaphore,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateEvent(
- void* vkStream,
- VkDevice device,
- const VkEventCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkEvent* pEvent)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkGetEventStatus(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkSetEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkResetEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateQueryPool(
- void* vkStream,
- VkDevice device,
- const VkQueryPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkQueryPool* pQueryPool)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyQueryPool(
- void* vkStream,
- VkDevice device,
- VkQueryPool queryPool,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkGetQueryPoolResults(
- void* vkStream,
- VkDevice device,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- size_t dataSize,
- void* pData,
- VkDeviceSize stride,
- VkQueryResultFlags flags)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateBuffer(
- void* vkStream,
- VkDevice device,
- const VkBufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBuffer* pBuffer)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyBuffer(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateBufferView(
- void* vkStream,
- VkDevice device,
- const VkBufferViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBufferView* pView)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyBufferView(
- void* vkStream,
- VkDevice device,
- VkBufferView bufferView,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateImage(
- void* vkStream,
- VkDevice device,
- const VkImageCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImage* pImage)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyImage(
- void* vkStream,
- VkDevice device,
- VkImage image,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkGetImageSubresourceLayout(
- void* vkStream,
- VkDevice device,
- VkImage image,
- const VkImageSubresource* pSubresource,
- VkSubresourceLayout* pLayout)
-{
-}
-
-VkResult encode_vkCreateImageView(
- void* vkStream,
- VkDevice device,
- const VkImageViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImageView* pView)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyImageView(
- void* vkStream,
- VkDevice device,
- VkImageView imageView,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateShaderModule(
- void* vkStream,
- VkDevice device,
- const VkShaderModuleCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkShaderModule* pShaderModule)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyShaderModule(
- void* vkStream,
- VkDevice device,
- VkShaderModule shaderModule,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreatePipelineCache(
- void* vkStream,
- VkDevice device,
- const VkPipelineCacheCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineCache* pPipelineCache)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyPipelineCache(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkGetPipelineCacheData(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- size_t* pDataSize,
- void* pData)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkMergePipelineCaches(
- void* vkStream,
- VkDevice device,
- VkPipelineCache dstCache,
- uint32_t srcCacheCount,
- const VkPipelineCache* pSrcCaches)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateGraphicsPipelines(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkGraphicsPipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateComputePipelines(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkComputePipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyPipeline(
- void* vkStream,
- VkDevice device,
- VkPipeline pipeline,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreatePipelineLayout(
- void* vkStream,
- VkDevice device,
- const VkPipelineLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineLayout* pPipelineLayout)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyPipelineLayout(
- void* vkStream,
- VkDevice device,
- VkPipelineLayout pipelineLayout,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateSampler(
- void* vkStream,
- VkDevice device,
- const VkSamplerCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSampler* pSampler)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroySampler(
- void* vkStream,
- VkDevice device,
- VkSampler sampler,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateDescriptorSetLayout(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorSetLayout* pSetLayout)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDescriptorSetLayout(
- void* vkStream,
- VkDevice device,
- VkDescriptorSetLayout descriptorSetLayout,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateDescriptorPool(
- void* vkStream,
- VkDevice device,
- const VkDescriptorPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorPool* pDescriptorPool)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDescriptorPool(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkResetDescriptorPool(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- VkDescriptorPoolResetFlags flags)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkAllocateDescriptorSets(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetAllocateInfo* pAllocateInfo,
- VkDescriptorSet* pDescriptorSets)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkFreeDescriptorSets(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets)
-{
- return (VkResult)0;
-}
-
-void encode_vkUpdateDescriptorSets(
- void* vkStream,
- VkDevice device,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites,
- uint32_t descriptorCopyCount,
- const VkCopyDescriptorSet* pDescriptorCopies)
-{
-}
-
-VkResult encode_vkCreateFramebuffer(
- void* vkStream,
- VkDevice device,
- const VkFramebufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFramebuffer* pFramebuffer)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyFramebuffer(
- void* vkStream,
- VkDevice device,
- VkFramebuffer framebuffer,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateRenderPass(
- void* vkStream,
- VkDevice device,
- const VkRenderPassCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyRenderPass(
- void* vkStream,
- VkDevice device,
- VkRenderPass renderPass,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkGetRenderAreaGranularity(
- void* vkStream,
- VkDevice device,
- VkRenderPass renderPass,
- VkExtent2D* pGranularity)
-{
-}
-
-VkResult encode_vkCreateCommandPool(
- void* vkStream,
- VkDevice device,
- const VkCommandPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkCommandPool* pCommandPool)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkResetCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolResetFlags flags)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkAllocateCommandBuffers(
- void* vkStream,
- VkDevice device,
- const VkCommandBufferAllocateInfo* pAllocateInfo,
- VkCommandBuffer* pCommandBuffers)
-{
- return (VkResult)0;
-}
-
-void encode_vkFreeCommandBuffers(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-{
-}
-
-VkResult encode_vkBeginCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCommandBufferBeginInfo* pBeginInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkEndCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkResetCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkCommandBufferResetFlags flags)
-{
- return (VkResult)0;
-}
-
-void encode_vkCmdBindPipeline(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline)
-{
-}
-
-void encode_vkCmdSetViewport(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewport* pViewports)
-{
-}
-
-void encode_vkCmdSetScissor(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstScissor,
- uint32_t scissorCount,
- const VkRect2D* pScissors)
-{
-}
-
-void encode_vkCmdSetLineWidth(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float lineWidth)
-{
-}
-
-void encode_vkCmdSetDepthBias(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float depthBiasConstantFactor,
- float depthBiasClamp,
- float depthBiasSlopeFactor)
-{
-}
-
-void encode_vkCmdSetBlendConstants(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const float blendConstants[4])
-{
-}
-
-void encode_vkCmdSetDepthBounds(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float minDepthBounds,
- float maxDepthBounds)
-{
-}
-
-void encode_vkCmdSetStencilCompareMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t compareMask)
-{
-}
-
-void encode_vkCmdSetStencilWriteMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t writeMask)
-{
-}
-
-void encode_vkCmdSetStencilReference(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t reference)
-{
-}
-
-void encode_vkCmdBindDescriptorSets(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t firstSet,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets,
- uint32_t dynamicOffsetCount,
- const uint32_t* pDynamicOffsets)
-{
-}
-
-void encode_vkCmdBindIndexBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkIndexType indexType)
-{
-}
-
-void encode_vkCmdBindVertexBuffers(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstBinding,
- uint32_t bindingCount,
- const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets)
-{
-}
-
-void encode_vkCmdDraw(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t vertexCount,
- uint32_t instanceCount,
- uint32_t firstVertex,
- uint32_t firstInstance)
-{
-}
-
-void encode_vkCmdDrawIndexed(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t indexCount,
- uint32_t instanceCount,
- uint32_t firstIndex,
- int32_t vertexOffset,
- uint32_t firstInstance)
-{
-}
-
-void encode_vkCmdDrawIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride)
-{
-}
-
-void encode_vkCmdDrawIndexedIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride)
-{
-}
-
-void encode_vkCmdDispatch(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-{
-}
-
-void encode_vkCmdDispatchIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset)
-{
-}
-
-void encode_vkCmdCopyBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferCopy* pRegions)
-{
-}
-
-void encode_vkCmdCopyImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageCopy* pRegions)
-{
-}
-
-void encode_vkCmdBlitImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageBlit* pRegions,
- VkFilter filter)
-{
-}
-
-void encode_vkCmdCopyBufferToImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-{
-}
-
-void encode_vkCmdCopyImageToBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-{
-}
-
-void encode_vkCmdUpdateBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize dataSize,
- const void* pData)
-{
-}
-
-void encode_vkCmdFillBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize size,
- uint32_t data)
-{
-}
-
-void encode_vkCmdClearColorImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearColorValue* pColor,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-{
-}
-
-void encode_vkCmdClearDepthStencilImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearDepthStencilValue* pDepthStencil,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-{
-}
-
-void encode_vkCmdClearAttachments(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t attachmentCount,
- const VkClearAttachment* pAttachments,
- uint32_t rectCount,
- const VkClearRect* pRects)
-{
-}
-
-void encode_vkCmdResolveImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageResolve* pRegions)
-{
-}
-
-void encode_vkCmdSetEvent(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask)
-{
-}
-
-void encode_vkCmdResetEvent(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask)
-{
-}
-
-void encode_vkCmdWaitEvents(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t eventCount,
- const VkEvent* pEvents,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-}
-
-void encode_vkCmdPipelineBarrier(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- VkDependencyFlags dependencyFlags,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-{
-}
-
-void encode_vkCmdBeginQuery(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query,
- VkQueryControlFlags flags)
-{
-}
-
-void encode_vkCmdEndQuery(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query)
-{
-}
-
-void encode_vkCmdResetQueryPool(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount)
-{
-}
-
-void encode_vkCmdWriteTimestamp(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkQueryPool queryPool,
- uint32_t query)
-{
-}
-
-void encode_vkCmdCopyQueryPoolResults(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize stride,
- VkQueryResultFlags flags)
-{
-}
-
-void encode_vkCmdPushConstants(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineLayout layout,
- VkShaderStageFlags stageFlags,
- uint32_t offset,
- uint32_t size,
- const void* pValues)
-{
-}
-
-void encode_vkCmdBeginRenderPass(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- VkSubpassContents contents)
-{
-}
-
-void encode_vkCmdNextSubpass(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkSubpassContents contents)
-{
-}
-
-void encode_vkCmdEndRenderPass(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-{
-}
-
-void encode_vkCmdExecuteCommands(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-{
-}
-
-#endif
-
-#ifdef VK_VERSION_1_1
-
-VkResult encode_vkEnumerateInstanceVersion(
- void* vkStream,
- uint32_t* pApiVersion)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkBindBufferMemory2(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkBindImageMemory2(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetDeviceGroupPeerMemoryFeatures(
- void* vkStream,
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-}
-
-void encode_vkCmdSetDeviceMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-{
-}
-
-void encode_vkCmdDispatchBase(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-{
-}
-
-VkResult encode_vkEnumeratePhysicalDeviceGroups(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetImageMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
-}
-
-void encode_vkGetBufferMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
-}
-
-void encode_vkGetImageSparseMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-}
-
-void encode_vkGetPhysicalDeviceFeatures2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-{
-}
-
-void encode_vkGetPhysicalDeviceProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties)
-{
-}
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceMemoryProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-{
-}
-
-void encode_vkTrimCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-{
-}
-
-void encode_vkGetDeviceQueue2(
- void* vkStream,
- VkDevice device,
- const VkDeviceQueueInfo2* pQueueInfo,
- VkQueue* pQueue)
-{
-}
-
-VkResult encode_vkCreateSamplerYcbcrConversion(
- void* vkStream,
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroySamplerYcbcrConversion(
- void* vkStream,
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateDescriptorUpdateTemplate(
- void* vkStream,
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDescriptorUpdateTemplate(
- void* vkStream,
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkUpdateDescriptorSetWithTemplate(
- void* vkStream,
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-{
-}
-
-void encode_vkGetPhysicalDeviceExternalBufferProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceExternalFenceProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceExternalSemaphoreProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-}
-
-void encode_vkGetDescriptorSetLayoutSupport(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_surface
-
-void encode_vkDestroySurfaceKHR(
- void* vkStream,
- VkInstance instance,
- VkSurfaceKHR surface,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkGetPhysicalDeviceSurfaceSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- VkSurfaceKHR surface,
- VkBool32* pSupported)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceSurfaceFormatsKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormatKHR* pSurfaceFormats)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceSurfacePresentModesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pPresentModeCount,
- VkPresentModeKHR* pPresentModes)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_swapchain
-
-VkResult encode_vkCreateSwapchainKHR(
- void* vkStream,
- VkDevice device,
- const VkSwapchainCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchain)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroySwapchainKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkGetSwapchainImagesKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pSwapchainImageCount,
- VkImage* pSwapchainImages)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkAcquireNextImageKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint64_t timeout,
- VkSemaphore semaphore,
- VkFence fence,
- uint32_t* pImageIndex)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkQueuePresentKHR(
- void* vkStream,
- VkQueue queue,
- const VkPresentInfoKHR* pPresentInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDeviceGroupPresentCapabilitiesKHR(
- void* vkStream,
- VkDevice device,
- VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDeviceGroupSurfacePresentModesKHR(
- void* vkStream,
- VkDevice device,
- VkSurfaceKHR surface,
- VkDeviceGroupPresentModeFlagsKHR* pModes)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDevicePresentRectanglesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pRectCount,
- VkRect2D* pRects)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkAcquireNextImage2KHR(
- void* vkStream,
- VkDevice device,
- const VkAcquireNextImageInfoKHR* pAcquireInfo,
- uint32_t* pImageIndex)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_display
-
-VkResult encode_vkGetPhysicalDeviceDisplayPropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPropertiesKHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlanePropertiesKHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDisplayPlaneSupportedDisplaysKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t planeIndex,
- uint32_t* pDisplayCount,
- VkDisplayKHR* pDisplays)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDisplayModePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModePropertiesKHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateDisplayModeKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- const VkDisplayModeCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDisplayModeKHR* pMode)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDisplayPlaneCapabilitiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayModeKHR mode,
- uint32_t planeIndex,
- VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkCreateDisplayPlaneSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_display_swapchain
-
-VkResult encode_vkCreateSharedSwapchainsKHR(
- void* vkStream,
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_xlib_surface
-
-VkResult encode_vkCreateXlibSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-VkBool32 encode_vkGetPhysicalDeviceXlibPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- Display* dpy,
- VisualID visualID)
-{
- return (VkBool32)0;
-}
-
-#endif
-
-#ifdef VK_KHR_xcb_surface
-
-VkResult encode_vkCreateXcbSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-VkBool32 encode_vkGetPhysicalDeviceXcbPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- xcb_connection_t* connection,
- xcb_visualid_t visual_id)
-{
- return (VkBool32)0;
-}
-
-#endif
-
-#ifdef VK_KHR_wayland_surface
-
-VkResult encode_vkCreateWaylandSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-VkBool32 encode_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct wl_display* display)
-{
- return (VkBool32)0;
-}
-
-#endif
-
-#ifdef VK_KHR_mir_surface
-
-VkResult encode_vkCreateMirSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkMirSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-VkBool32 encode_vkGetPhysicalDeviceMirPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- MirConnection* connection)
-{
- return (VkBool32)0;
-}
-
-#endif
-
-#ifdef VK_KHR_android_surface
-
-VkResult encode_vkCreateAndroidSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_win32_surface
-
-VkResult encode_vkCreateWin32SurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-VkBool32 encode_vkGetPhysicalDeviceWin32PresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex)
-{
- return (VkBool32)0;
-}
-
-#endif
-
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-
-#endif
-
-#ifdef VK_KHR_multiview
-
-#endif
-
-#ifdef VK_KHR_get_physical_device_properties2
-
-void encode_vkGetPhysicalDeviceFeatures2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-{
-}
-
-void encode_vkGetPhysicalDeviceProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties)
-{
-}
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceMemoryProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-{
-}
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_device_group
-
-void encode_vkGetDeviceGroupPeerMemoryFeaturesKHR(
- void* vkStream,
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-{
-}
-
-void encode_vkCmdSetDeviceMaskKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-{
-}
-
-void encode_vkCmdDispatchBaseKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_shader_draw_parameters
-
-#endif
-
-#ifdef VK_KHR_maintenance1
-
-void encode_vkTrimCommandPoolKHR(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_device_group_creation
-
-VkResult encode_vkEnumeratePhysicalDeviceGroupsKHR(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_external_memory_capabilities
-
-void encode_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_external_memory
-
-#endif
-
-#ifdef VK_KHR_external_memory_win32
-
-VkResult encode_vkGetMemoryWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetMemoryWin32HandlePropertiesKHR(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- HANDLE handle,
- VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_external_memory_fd
-
-VkResult encode_vkGetMemoryFdKHR(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetMemoryFdPropertiesKHR(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- int fd,
- VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_win32_keyed_mutex
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_capabilities
-
-void encode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_external_semaphore
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_win32
-
-VkResult encode_vkImportSemaphoreWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetSemaphoreWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_fd
-
-VkResult encode_vkImportSemaphoreFdKHR(
- void* vkStream,
- VkDevice device,
- const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetSemaphoreFdKHR(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_push_descriptor
-
-void encode_vkCmdPushDescriptorSetKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t set,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites)
-{
-}
-
-void encode_vkCmdPushDescriptorSetWithTemplateKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- VkPipelineLayout layout,
- uint32_t set,
- const void* pData)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_16bit_storage
-
-#endif
-
-#ifdef VK_KHR_incremental_present
-
-#endif
-
-#ifdef VK_KHR_descriptor_update_template
-
-VkResult encode_vkCreateDescriptorUpdateTemplateKHR(
- void* vkStream,
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDescriptorUpdateTemplateKHR(
- void* vkStream,
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkUpdateDescriptorSetWithTemplateKHR(
- void* vkStream,
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_create_renderpass2
-
-VkResult encode_vkCreateRenderPass2KHR(
- void* vkStream,
- VkDevice device,
- const VkRenderPassCreateInfo2KHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-{
- return (VkResult)0;
-}
-
-void encode_vkCmdBeginRenderPass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-{
-}
-
-void encode_vkCmdNextSubpass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-}
-
-void encode_vkCmdEndRenderPass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_shared_presentable_image
-
-VkResult encode_vkGetSwapchainStatusKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_external_fence_capabilities
-
-void encode_vkGetPhysicalDeviceExternalFencePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_external_fence
-
-#endif
-
-#ifdef VK_KHR_external_fence_win32
-
-VkResult encode_vkImportFenceWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetFenceWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_external_fence_fd
-
-VkResult encode_vkImportFenceFdKHR(
- void* vkStream,
- VkDevice device,
- const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetFenceFdKHR(
- void* vkStream,
- VkDevice device,
- const VkFenceGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_maintenance2
-
-#endif
-
-#ifdef VK_KHR_get_surface_capabilities2
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceSurfaceFormats2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormat2KHR* pSurfaceFormats)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_variable_pointers
-
-#endif
-
-#ifdef VK_KHR_get_display_properties2
-
-VkResult encode_vkGetPhysicalDeviceDisplayProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayProperties2KHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlaneProperties2KHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDisplayModeProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModeProperties2KHR* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetDisplayPlaneCapabilities2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
- VkDisplayPlaneCapabilities2KHR* pCapabilities)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_dedicated_allocation
-
-#endif
-
-#ifdef VK_KHR_storage_buffer_storage_class
-
-#endif
-
-#ifdef VK_KHR_relaxed_block_layout
-
-#endif
-
-#ifdef VK_KHR_get_memory_requirements2
-
-void encode_vkGetImageMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
-}
-
-void encode_vkGetBufferMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-{
-}
-
-void encode_vkGetImageSparseMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_image_format_list
-
-#endif
-
-#ifdef VK_KHR_sampler_ycbcr_conversion
-
-VkResult encode_vkCreateSamplerYcbcrConversionKHR(
- void* vkStream,
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroySamplerYcbcrConversionKHR(
- void* vkStream,
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_bind_memory2
-
-VkResult encode_vkBindBufferMemory2KHR(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkBindImageMemory2KHR(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_KHR_maintenance3
-
-void encode_vkGetDescriptorSetLayoutSupportKHR(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_draw_indirect_count
-
-void encode_vkCmdDrawIndirectCountKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-{
-}
-
-void encode_vkCmdDrawIndexedIndirectCountKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-{
-}
-
-#endif
-
-#ifdef VK_KHR_8bit_storage
-
-#endif
-
-#ifdef VK_EXT_debug_report
-
-VkResult encode_vkCreateDebugReportCallbackEXT(
- void* vkStream,
- VkInstance instance,
- const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugReportCallbackEXT* pCallback)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDebugReportCallbackEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugReportCallbackEXT callback,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkDebugReportMessageEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugReportFlagsEXT flags,
- VkDebugReportObjectTypeEXT objectType,
- uint64_t object,
- size_t location,
- int32_t messageCode,
- const char* pLayerPrefix,
- const char* pMessage)
-{
-}
-
-#endif
-
-#ifdef VK_NV_glsl_shader
-
-#endif
-
-#ifdef VK_EXT_depth_range_unrestricted
-
-#endif
-
-#ifdef VK_IMG_filter_cubic
-
-#endif
-
-#ifdef VK_AMD_rasterization_order
-
-#endif
-
-#ifdef VK_AMD_shader_trinary_minmax
-
-#endif
-
-#ifdef VK_AMD_shader_explicit_vertex_parameter
-
-#endif
-
-#ifdef VK_EXT_debug_marker
-
-VkResult encode_vkDebugMarkerSetObjectTagEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkDebugMarkerSetObjectNameEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-{
- return (VkResult)0;
-}
-
-void encode_vkCmdDebugMarkerBeginEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-{
-}
-
-void encode_vkCmdDebugMarkerEndEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-{
-}
-
-void encode_vkCmdDebugMarkerInsertEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-{
-}
-
-#endif
-
-#ifdef VK_AMD_gcn_shader
-
-#endif
-
-#ifdef VK_NV_dedicated_allocation
-
-#endif
-
-#ifdef VK_AMD_draw_indirect_count
-
-void encode_vkCmdDrawIndirectCountAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-{
-}
-
-void encode_vkCmdDrawIndexedIndirectCountAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-{
-}
-
-#endif
-
-#ifdef VK_AMD_negative_viewport_height
-
-#endif
-
-#ifdef VK_AMD_gpu_shader_half_float
-
-#endif
-
-#ifdef VK_AMD_shader_ballot
-
-#endif
-
-#ifdef VK_AMD_texture_gather_bias_lod
-
-#endif
-
-#ifdef VK_AMD_shader_info
-
-VkResult encode_vkGetShaderInfoAMD(
- void* vkStream,
- VkDevice device,
- VkPipeline pipeline,
- VkShaderStageFlagBits shaderStage,
- VkShaderInfoTypeAMD infoType,
- size_t* pInfoSize,
- void* pInfo)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_AMD_shader_image_load_store_lod
-
-#endif
-
-#ifdef VK_IMG_format_pvrtc
-
-#endif
-
-#ifdef VK_NV_external_memory_capabilities
-
-VkResult encode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkExternalMemoryHandleTypeFlagsNV externalHandleType,
- VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_NV_external_memory
-
-#endif
-
-#ifdef VK_NV_external_memory_win32
-
-VkResult encode_vkGetMemoryWin32HandleNV(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkExternalMemoryHandleTypeFlagsNV handleType,
- HANDLE* pHandle)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_NV_win32_keyed_mutex
-
-#endif
-
-#ifdef VK_EXT_validation_flags
-
-#endif
-
-#ifdef VK_NN_vi_surface
-
-VkResult encode_vkCreateViSurfaceNN(
- void* vkStream,
- VkInstance instance,
- const VkViSurfaceCreateInfoNN* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_shader_subgroup_ballot
-
-#endif
-
-#ifdef VK_EXT_shader_subgroup_vote
-
-#endif
-
-#ifdef VK_EXT_conditional_rendering
-
-void encode_vkCmdBeginConditionalRenderingEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-{
-}
-
-void encode_vkCmdEndConditionalRenderingEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-{
-}
-
-#endif
-
-#ifdef VK_NVX_device_generated_commands
-
-void encode_vkCmdProcessCommandsNVX(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-{
-}
-
-void encode_vkCmdReserveSpaceForCommandsNVX(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-{
-}
-
-VkResult encode_vkCreateIndirectCommandsLayoutNVX(
- void* vkStream,
- VkDevice device,
- const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyIndirectCommandsLayoutNVX(
- void* vkStream,
- VkDevice device,
- VkIndirectCommandsLayoutNVX indirectCommandsLayout,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkCreateObjectTableNVX(
- void* vkStream,
- VkDevice device,
- const VkObjectTableCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkObjectTableNVX* pObjectTable)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyObjectTableNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkRegisterObjectsNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- uint32_t objectCount,
- const VkObjectTableEntryNVX* const* ppObjectTableEntries,
- const uint32_t* pObjectIndices)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkUnregisterObjectsNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- uint32_t objectCount,
- const VkObjectEntryTypeNVX* pObjectEntryTypes,
- const uint32_t* pObjectIndices)
-{
- return (VkResult)0;
-}
-
-void encode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
- VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-{
-}
-
-#endif
-
-#ifdef VK_NV_clip_space_w_scaling
-
-void encode_vkCmdSetViewportWScalingNV(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewportWScalingNV* pViewportWScalings)
-{
-}
-
-#endif
-
-#ifdef VK_EXT_direct_mode_display
-
-VkResult encode_vkReleaseDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_acquire_xlib_display
-
-VkResult encode_vkAcquireXlibDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- VkDisplayKHR display)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetRandROutputDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- RROutput rrOutput,
- VkDisplayKHR* pDisplay)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_display_surface_counter
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_display_control
-
-VkResult encode_vkDisplayPowerControlEXT(
- void* vkStream,
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkRegisterDeviceEventEXT(
- void* vkStream,
- VkDevice device,
- const VkDeviceEventInfoEXT* pDeviceEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkRegisterDisplayEventEXT(
- void* vkStream,
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayEventInfoEXT* pDisplayEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetSwapchainCounterEXT(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkSurfaceCounterFlagBitsEXT counter,
- uint64_t* pCounterValue)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_GOOGLE_display_timing
-
-VkResult encode_vkGetRefreshCycleDurationGOOGLE(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetPastPresentationTimingGOOGLE(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pPresentationTimingCount,
- VkPastPresentationTimingGOOGLE* pPresentationTimings)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_NV_sample_mask_override_coverage
-
-#endif
-
-#ifdef VK_NV_geometry_shader_passthrough
-
-#endif
-
-#ifdef VK_NV_viewport_array2
-
-#endif
-
-#ifdef VK_NVX_multiview_per_view_attributes
-
-#endif
-
-#ifdef VK_NV_viewport_swizzle
-
-#endif
-
-#ifdef VK_EXT_discard_rectangles
-
-void encode_vkCmdSetDiscardRectangleEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstDiscardRectangle,
- uint32_t discardRectangleCount,
- const VkRect2D* pDiscardRectangles)
-{
-}
-
-#endif
-
-#ifdef VK_EXT_conservative_rasterization
-
-#endif
-
-#ifdef VK_EXT_swapchain_colorspace
-
-#endif
-
-#ifdef VK_EXT_hdr_metadata
-
-void encode_vkSetHdrMetadataEXT(
- void* vkStream,
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainKHR* pSwapchains,
- const VkHdrMetadataEXT* pMetadata)
-{
-}
-
-#endif
-
-#ifdef VK_MVK_ios_surface
-
-VkResult encode_vkCreateIOSSurfaceMVK(
- void* vkStream,
- VkInstance instance,
- const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_MVK_macos_surface
-
-VkResult encode_vkCreateMacOSSurfaceMVK(
- void* vkStream,
- VkInstance instance,
- const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_external_memory_dma_buf
-
-#endif
-
-#ifdef VK_EXT_queue_family_foreign
-
-#endif
-
-#ifdef VK_EXT_debug_utils
-
-VkResult encode_vkSetDebugUtilsObjectNameEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkSetDebugUtilsObjectTagEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-{
- return (VkResult)0;
-}
-
-void encode_vkQueueBeginDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-}
-
-void encode_vkQueueEndDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue)
-{
-}
-
-void encode_vkQueueInsertDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-}
-
-void encode_vkCmdBeginDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-}
-
-void encode_vkCmdEndDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-{
-}
-
-void encode_vkCmdInsertDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-{
-}
-
-VkResult encode_vkCreateDebugUtilsMessengerEXT(
- void* vkStream,
- VkInstance instance,
- const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugUtilsMessengerEXT* pMessenger)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyDebugUtilsMessengerEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugUtilsMessengerEXT messenger,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-void encode_vkSubmitDebugUtilsMessageEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
- VkDebugUtilsMessageTypeFlagsEXT messageTypes,
- const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-{
-}
-
-#endif
-
-#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-
-VkResult encode_vkGetAndroidHardwareBufferPropertiesANDROID(
- void* vkStream,
- VkDevice device,
- const struct AHardwareBuffer* buffer,
- VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetMemoryAndroidHardwareBufferANDROID(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_sampler_filter_minmax
-
-#endif
-
-#ifdef VK_AMD_gpu_shader_int16
-
-#endif
-
-#ifdef VK_AMD_mixed_attachment_samples
-
-#endif
-
-#ifdef VK_AMD_shader_fragment_mask
-
-#endif
-
-#ifdef VK_EXT_shader_stencil_export
-
-#endif
-
-#ifdef VK_EXT_sample_locations
-
-void encode_vkCmdSetSampleLocationsEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-{
-}
-
-void encode_vkGetPhysicalDeviceMultisamplePropertiesEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSampleCountFlagBits samples,
- VkMultisamplePropertiesEXT* pMultisampleProperties)
-{
-}
-
-#endif
-
-#ifdef VK_EXT_blend_operation_advanced
-
-#endif
-
-#ifdef VK_NV_fragment_coverage_to_color
-
-#endif
-
-#ifdef VK_NV_framebuffer_mixed_samples
-
-#endif
-
-#ifdef VK_NV_fill_rectangle
-
-#endif
-
-#ifdef VK_EXT_post_depth_coverage
-
-#endif
-
-#ifdef VK_EXT_validation_cache
-
-VkResult encode_vkCreateValidationCacheEXT(
- void* vkStream,
- VkDevice device,
- const VkValidationCacheCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkValidationCacheEXT* pValidationCache)
-{
- return (VkResult)0;
-}
-
-void encode_vkDestroyValidationCacheEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT validationCache,
- const VkAllocationCallbacks* pAllocator)
-{
-}
-
-VkResult encode_vkMergeValidationCachesEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT dstCache,
- uint32_t srcCacheCount,
- const VkValidationCacheEXT* pSrcCaches)
-{
- return (VkResult)0;
-}
-
-VkResult encode_vkGetValidationCacheDataEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT validationCache,
- size_t* pDataSize,
- void* pData)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_EXT_descriptor_indexing
-
-#endif
-
-#ifdef VK_EXT_shader_viewport_index_layer
-
-#endif
-
-#ifdef VK_EXT_global_priority
-
-#endif
-
-#ifdef VK_EXT_external_memory_host
-
-VkResult encode_vkGetMemoryHostPointerPropertiesEXT(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- const void* pHostPointer,
- VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-{
- return (VkResult)0;
-}
-
-#endif
-
-#ifdef VK_AMD_buffer_marker
-
-void encode_vkCmdWriteBufferMarkerAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- uint32_t marker)
-{
-}
-
-#endif
-
-#ifdef VK_AMD_shader_core_properties
-
-#endif
-
-#ifdef VK_EXT_vertex_attribute_divisor
-
-#endif
-
-#ifdef VK_NV_shader_subgroup_partitioned
-
-#endif
-
-#ifdef VK_NV_device_diagnostic_checkpoints
-
-void encode_vkCmdSetCheckpointNV(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const void* pCheckpointMarker)
-{
-}
-
-void encode_vkGetQueueCheckpointDataNV(
- void* vkStream,
- VkQueue queue,
- uint32_t* pCheckpointDataCount,
- VkCheckpointDataNV* pCheckpointData)
-{
-}
-
-#endif
-
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.h
deleted file mode 100644
index c22eaf92e0..0000000000
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_encoder.h
+++ /dev/null
@@ -1,2871 +0,0 @@
-// Module: goldfish_vk_encoder (header) Autogenerated by CerealGenerator
-
-#ifdef VK_VERSION_1_0
-
-VkResult encode_vkCreateInstance(
- void* vkStream,
- const VkInstanceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkInstance* pInstance)
-;
-
-void encode_vkDestroyInstance(
- void* vkStream,
- VkInstance instance,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkEnumeratePhysicalDevices(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceCount,
- VkPhysicalDevice* pPhysicalDevices)
-;
-
-void encode_vkGetPhysicalDeviceFeatures(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures* pFeatures)
-;
-
-void encode_vkGetPhysicalDeviceFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties* pFormatProperties)
-;
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties)
-;
-
-void encode_vkGetPhysicalDeviceProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties* pProperties)
-;
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties* pQueueFamilyProperties)
-;
-
-void encode_vkGetPhysicalDeviceMemoryProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-;
-
-PFN_vkVoidFunction encode_vkGetInstanceProcAddr(
- void* vkStream,
- VkInstance instance,
- const char* pName)
-;
-
-PFN_vkVoidFunction encode_vkGetDeviceProcAddr(
- void* vkStream,
- VkDevice device,
- const char* pName)
-;
-
-VkResult encode_vkCreateDevice(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkDeviceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDevice* pDevice)
-;
-
-void encode_vkDestroyDevice(
- void* vkStream,
- VkDevice device,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkEnumerateInstanceExtensionProperties(
- void* vkStream,
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-;
-
-VkResult encode_vkEnumerateDeviceExtensionProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const char* pLayerName,
- uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-;
-
-VkResult encode_vkEnumerateInstanceLayerProperties(
- void* vkStream,
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-;
-
-VkResult encode_vkEnumerateDeviceLayerProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-;
-
-void encode_vkGetDeviceQueue(
- void* vkStream,
- VkDevice device,
- uint32_t queueFamilyIndex,
- uint32_t queueIndex,
- VkQueue* pQueue)
-;
-
-VkResult encode_vkQueueSubmit(
- void* vkStream,
- VkQueue queue,
- uint32_t submitCount,
- const VkSubmitInfo* pSubmits,
- VkFence fence)
-;
-
-VkResult encode_vkQueueWaitIdle(
- void* vkStream,
- VkQueue queue)
-;
-
-VkResult encode_vkDeviceWaitIdle(
- void* vkStream,
- VkDevice device)
-;
-
-VkResult encode_vkAllocateMemory(
- void* vkStream,
- VkDevice device,
- const VkMemoryAllocateInfo* pAllocateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDeviceMemory* pMemory)
-;
-
-void encode_vkFreeMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkMapMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize offset,
- VkDeviceSize size,
- VkMemoryMapFlags flags,
- void** ppData)
-;
-
-void encode_vkUnmapMemory(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory)
-;
-
-VkResult encode_vkFlushMappedMemoryRanges(
- void* vkStream,
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-;
-
-VkResult encode_vkInvalidateMappedMemoryRanges(
- void* vkStream,
- VkDevice device,
- uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-;
-
-void encode_vkGetDeviceMemoryCommitment(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkDeviceSize* pCommittedMemoryInBytes)
-;
-
-VkResult encode_vkBindBufferMemory(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-;
-
-VkResult encode_vkBindImageMemory(
- void* vkStream,
- VkDevice device,
- VkImage image,
- VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-;
-
-void encode_vkGetBufferMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- VkMemoryRequirements* pMemoryRequirements)
-;
-
-void encode_vkGetImageMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkImage image,
- VkMemoryRequirements* pMemoryRequirements)
-;
-
-void encode_vkGetImageSparseMemoryRequirements(
- void* vkStream,
- VkDevice device,
- VkImage image,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-;
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkSampleCountFlagBits samples,
- VkImageUsageFlags usage,
- VkImageTiling tiling,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties* pProperties)
-;
-
-VkResult encode_vkQueueBindSparse(
- void* vkStream,
- VkQueue queue,
- uint32_t bindInfoCount,
- const VkBindSparseInfo* pBindInfo,
- VkFence fence)
-;
-
-VkResult encode_vkCreateFence(
- void* vkStream,
- VkDevice device,
- const VkFenceCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
-
-void encode_vkDestroyFence(
- void* vkStream,
- VkDevice device,
- VkFence fence,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkResetFences(
- void* vkStream,
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences)
-;
-
-VkResult encode_vkGetFenceStatus(
- void* vkStream,
- VkDevice device,
- VkFence fence)
-;
-
-VkResult encode_vkWaitForFences(
- void* vkStream,
- VkDevice device,
- uint32_t fenceCount,
- const VkFence* pFences,
- VkBool32 waitAll,
- uint64_t timeout)
-;
-
-VkResult encode_vkCreateSemaphore(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSemaphore* pSemaphore)
-;
-
-void encode_vkDestroySemaphore(
- void* vkStream,
- VkDevice device,
- VkSemaphore semaphore,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateEvent(
- void* vkStream,
- VkDevice device,
- const VkEventCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkEvent* pEvent)
-;
-
-void encode_vkDestroyEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkGetEventStatus(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-;
-
-VkResult encode_vkSetEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-;
-
-VkResult encode_vkResetEvent(
- void* vkStream,
- VkDevice device,
- VkEvent event)
-;
-
-VkResult encode_vkCreateQueryPool(
- void* vkStream,
- VkDevice device,
- const VkQueryPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkQueryPool* pQueryPool)
-;
-
-void encode_vkDestroyQueryPool(
- void* vkStream,
- VkDevice device,
- VkQueryPool queryPool,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkGetQueryPoolResults(
- void* vkStream,
- VkDevice device,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- size_t dataSize,
- void* pData,
- VkDeviceSize stride,
- VkQueryResultFlags flags)
-;
-
-VkResult encode_vkCreateBuffer(
- void* vkStream,
- VkDevice device,
- const VkBufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBuffer* pBuffer)
-;
-
-void encode_vkDestroyBuffer(
- void* vkStream,
- VkDevice device,
- VkBuffer buffer,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateBufferView(
- void* vkStream,
- VkDevice device,
- const VkBufferViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkBufferView* pView)
-;
-
-void encode_vkDestroyBufferView(
- void* vkStream,
- VkDevice device,
- VkBufferView bufferView,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateImage(
- void* vkStream,
- VkDevice device,
- const VkImageCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImage* pImage)
-;
-
-void encode_vkDestroyImage(
- void* vkStream,
- VkDevice device,
- VkImage image,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkGetImageSubresourceLayout(
- void* vkStream,
- VkDevice device,
- VkImage image,
- const VkImageSubresource* pSubresource,
- VkSubresourceLayout* pLayout)
-;
-
-VkResult encode_vkCreateImageView(
- void* vkStream,
- VkDevice device,
- const VkImageViewCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkImageView* pView)
-;
-
-void encode_vkDestroyImageView(
- void* vkStream,
- VkDevice device,
- VkImageView imageView,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateShaderModule(
- void* vkStream,
- VkDevice device,
- const VkShaderModuleCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkShaderModule* pShaderModule)
-;
-
-void encode_vkDestroyShaderModule(
- void* vkStream,
- VkDevice device,
- VkShaderModule shaderModule,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreatePipelineCache(
- void* vkStream,
- VkDevice device,
- const VkPipelineCacheCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineCache* pPipelineCache)
-;
-
-void encode_vkDestroyPipelineCache(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkGetPipelineCacheData(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- size_t* pDataSize,
- void* pData)
-;
-
-VkResult encode_vkMergePipelineCaches(
- void* vkStream,
- VkDevice device,
- VkPipelineCache dstCache,
- uint32_t srcCacheCount,
- const VkPipelineCache* pSrcCaches)
-;
-
-VkResult encode_vkCreateGraphicsPipelines(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkGraphicsPipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-;
-
-VkResult encode_vkCreateComputePipelines(
- void* vkStream,
- VkDevice device,
- VkPipelineCache pipelineCache,
- uint32_t createInfoCount,
- const VkComputePipelineCreateInfo* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-;
-
-void encode_vkDestroyPipeline(
- void* vkStream,
- VkDevice device,
- VkPipeline pipeline,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreatePipelineLayout(
- void* vkStream,
- VkDevice device,
- const VkPipelineLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkPipelineLayout* pPipelineLayout)
-;
-
-void encode_vkDestroyPipelineLayout(
- void* vkStream,
- VkDevice device,
- VkPipelineLayout pipelineLayout,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateSampler(
- void* vkStream,
- VkDevice device,
- const VkSamplerCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSampler* pSampler)
-;
-
-void encode_vkDestroySampler(
- void* vkStream,
- VkDevice device,
- VkSampler sampler,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateDescriptorSetLayout(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorSetLayout* pSetLayout)
-;
-
-void encode_vkDestroyDescriptorSetLayout(
- void* vkStream,
- VkDevice device,
- VkDescriptorSetLayout descriptorSetLayout,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateDescriptorPool(
- void* vkStream,
- VkDevice device,
- const VkDescriptorPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorPool* pDescriptorPool)
-;
-
-void encode_vkDestroyDescriptorPool(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkResetDescriptorPool(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- VkDescriptorPoolResetFlags flags)
-;
-
-VkResult encode_vkAllocateDescriptorSets(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetAllocateInfo* pAllocateInfo,
- VkDescriptorSet* pDescriptorSets)
-;
-
-VkResult encode_vkFreeDescriptorSets(
- void* vkStream,
- VkDevice device,
- VkDescriptorPool descriptorPool,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets)
-;
-
-void encode_vkUpdateDescriptorSets(
- void* vkStream,
- VkDevice device,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites,
- uint32_t descriptorCopyCount,
- const VkCopyDescriptorSet* pDescriptorCopies)
-;
-
-VkResult encode_vkCreateFramebuffer(
- void* vkStream,
- VkDevice device,
- const VkFramebufferCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFramebuffer* pFramebuffer)
-;
-
-void encode_vkDestroyFramebuffer(
- void* vkStream,
- VkDevice device,
- VkFramebuffer framebuffer,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateRenderPass(
- void* vkStream,
- VkDevice device,
- const VkRenderPassCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-;
-
-void encode_vkDestroyRenderPass(
- void* vkStream,
- VkDevice device,
- VkRenderPass renderPass,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkGetRenderAreaGranularity(
- void* vkStream,
- VkDevice device,
- VkRenderPass renderPass,
- VkExtent2D* pGranularity)
-;
-
-VkResult encode_vkCreateCommandPool(
- void* vkStream,
- VkDevice device,
- const VkCommandPoolCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkCommandPool* pCommandPool)
-;
-
-void encode_vkDestroyCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkResetCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolResetFlags flags)
-;
-
-VkResult encode_vkAllocateCommandBuffers(
- void* vkStream,
- VkDevice device,
- const VkCommandBufferAllocateInfo* pAllocateInfo,
- VkCommandBuffer* pCommandBuffers)
-;
-
-void encode_vkFreeCommandBuffers(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-;
-
-VkResult encode_vkBeginCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCommandBufferBeginInfo* pBeginInfo)
-;
-
-VkResult encode_vkEndCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-;
-
-VkResult encode_vkResetCommandBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkCommandBufferResetFlags flags)
-;
-
-void encode_vkCmdBindPipeline(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline)
-;
-
-void encode_vkCmdSetViewport(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewport* pViewports)
-;
-
-void encode_vkCmdSetScissor(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstScissor,
- uint32_t scissorCount,
- const VkRect2D* pScissors)
-;
-
-void encode_vkCmdSetLineWidth(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float lineWidth)
-;
-
-void encode_vkCmdSetDepthBias(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float depthBiasConstantFactor,
- float depthBiasClamp,
- float depthBiasSlopeFactor)
-;
-
-void encode_vkCmdSetBlendConstants(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const float blendConstants[4])
-;
-
-void encode_vkCmdSetDepthBounds(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- float minDepthBounds,
- float maxDepthBounds)
-;
-
-void encode_vkCmdSetStencilCompareMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t compareMask)
-;
-
-void encode_vkCmdSetStencilWriteMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t writeMask)
-;
-
-void encode_vkCmdSetStencilReference(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkStencilFaceFlags faceMask,
- uint32_t reference)
-;
-
-void encode_vkCmdBindDescriptorSets(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t firstSet,
- uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets,
- uint32_t dynamicOffsetCount,
- const uint32_t* pDynamicOffsets)
-;
-
-void encode_vkCmdBindIndexBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkIndexType indexType)
-;
-
-void encode_vkCmdBindVertexBuffers(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstBinding,
- uint32_t bindingCount,
- const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets)
-;
-
-void encode_vkCmdDraw(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t vertexCount,
- uint32_t instanceCount,
- uint32_t firstVertex,
- uint32_t firstInstance)
-;
-
-void encode_vkCmdDrawIndexed(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t indexCount,
- uint32_t instanceCount,
- uint32_t firstIndex,
- int32_t vertexOffset,
- uint32_t firstInstance)
-;
-
-void encode_vkCmdDrawIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride)
-;
-
-void encode_vkCmdDrawIndexedIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- uint32_t drawCount,
- uint32_t stride)
-;
-
-void encode_vkCmdDispatch(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-;
-
-void encode_vkCmdDispatchIndirect(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset)
-;
-
-void encode_vkCmdCopyBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferCopy* pRegions)
-;
-
-void encode_vkCmdCopyImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageCopy* pRegions)
-;
-
-void encode_vkCmdBlitImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageBlit* pRegions,
- VkFilter filter)
-;
-
-void encode_vkCmdCopyBufferToImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer srcBuffer,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-;
-
-void encode_vkCmdCopyImageToBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkBuffer dstBuffer,
- uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-;
-
-void encode_vkCmdUpdateBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize dataSize,
- const void* pData)
-;
-
-void encode_vkCmdFillBuffer(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize size,
- uint32_t data)
-;
-
-void encode_vkCmdClearColorImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearColorValue* pColor,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-;
-
-void encode_vkCmdClearDepthStencilImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage image,
- VkImageLayout imageLayout,
- const VkClearDepthStencilValue* pDepthStencil,
- uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-;
-
-void encode_vkCmdClearAttachments(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t attachmentCount,
- const VkClearAttachment* pAttachments,
- uint32_t rectCount,
- const VkClearRect* pRects)
-;
-
-void encode_vkCmdResolveImage(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkImage srcImage,
- VkImageLayout srcImageLayout,
- VkImage dstImage,
- VkImageLayout dstImageLayout,
- uint32_t regionCount,
- const VkImageResolve* pRegions)
-;
-
-void encode_vkCmdSetEvent(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask)
-;
-
-void encode_vkCmdResetEvent(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkEvent event,
- VkPipelineStageFlags stageMask)
-;
-
-void encode_vkCmdWaitEvents(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t eventCount,
- const VkEvent* pEvents,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-;
-
-void encode_vkCmdPipelineBarrier(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlags srcStageMask,
- VkPipelineStageFlags dstStageMask,
- VkDependencyFlags dependencyFlags,
- uint32_t memoryBarrierCount,
- const VkMemoryBarrier* pMemoryBarriers,
- uint32_t bufferMemoryBarrierCount,
- const VkBufferMemoryBarrier* pBufferMemoryBarriers,
- uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-;
-
-void encode_vkCmdBeginQuery(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query,
- VkQueryControlFlags flags)
-;
-
-void encode_vkCmdEndQuery(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t query)
-;
-
-void encode_vkCmdResetQueryPool(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount)
-;
-
-void encode_vkCmdWriteTimestamp(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkQueryPool queryPool,
- uint32_t query)
-;
-
-void encode_vkCmdCopyQueryPoolResults(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkQueryPool queryPool,
- uint32_t firstQuery,
- uint32_t queryCount,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- VkDeviceSize stride,
- VkQueryResultFlags flags)
-;
-
-void encode_vkCmdPushConstants(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineLayout layout,
- VkShaderStageFlags stageFlags,
- uint32_t offset,
- uint32_t size,
- const void* pValues)
-;
-
-void encode_vkCmdBeginRenderPass(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- VkSubpassContents contents)
-;
-
-void encode_vkCmdNextSubpass(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkSubpassContents contents)
-;
-
-void encode_vkCmdEndRenderPass(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-;
-
-void encode_vkCmdExecuteCommands(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-;
-
-#endif
-
-#ifdef VK_VERSION_1_1
-
-VkResult encode_vkEnumerateInstanceVersion(
- void* vkStream,
- uint32_t* pApiVersion)
-;
-
-VkResult encode_vkBindBufferMemory2(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-;
-
-VkResult encode_vkBindImageMemory2(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-;
-
-void encode_vkGetDeviceGroupPeerMemoryFeatures(
- void* vkStream,
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-;
-
-void encode_vkCmdSetDeviceMask(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-;
-
-void encode_vkCmdDispatchBase(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-;
-
-VkResult encode_vkEnumeratePhysicalDeviceGroups(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-;
-
-void encode_vkGetImageMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
-
-void encode_vkGetBufferMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
-
-void encode_vkGetImageSparseMemoryRequirements2(
- void* vkStream,
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-;
-
-void encode_vkGetPhysicalDeviceFeatures2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-;
-
-void encode_vkGetPhysicalDeviceProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-;
-
-void encode_vkGetPhysicalDeviceFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties)
-;
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-;
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-;
-
-void encode_vkGetPhysicalDeviceMemoryProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-;
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties2(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-;
-
-void encode_vkTrimCommandPool(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-;
-
-void encode_vkGetDeviceQueue2(
- void* vkStream,
- VkDevice device,
- const VkDeviceQueueInfo2* pQueueInfo,
- VkQueue* pQueue)
-;
-
-VkResult encode_vkCreateSamplerYcbcrConversion(
- void* vkStream,
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-;
-
-void encode_vkDestroySamplerYcbcrConversion(
- void* vkStream,
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateDescriptorUpdateTemplate(
- void* vkStream,
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-;
-
-void encode_vkDestroyDescriptorUpdateTemplate(
- void* vkStream,
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkUpdateDescriptorSetWithTemplate(
- void* vkStream,
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-;
-
-void encode_vkGetPhysicalDeviceExternalBufferProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-;
-
-void encode_vkGetPhysicalDeviceExternalFenceProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-;
-
-void encode_vkGetPhysicalDeviceExternalSemaphoreProperties(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-;
-
-void encode_vkGetDescriptorSetLayoutSupport(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-;
-
-#endif
-
-#ifdef VK_KHR_surface
-
-void encode_vkDestroySurfaceKHR(
- void* vkStream,
- VkInstance instance,
- VkSurfaceKHR surface,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkGetPhysicalDeviceSurfaceSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- VkSurfaceKHR surface,
- VkBool32* pSupported)
-;
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
-;
-
-VkResult encode_vkGetPhysicalDeviceSurfaceFormatsKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormatKHR* pSurfaceFormats)
-;
-
-VkResult encode_vkGetPhysicalDeviceSurfacePresentModesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pPresentModeCount,
- VkPresentModeKHR* pPresentModes)
-;
-
-#endif
-
-#ifdef VK_KHR_swapchain
-
-VkResult encode_vkCreateSwapchainKHR(
- void* vkStream,
- VkDevice device,
- const VkSwapchainCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchain)
-;
-
-void encode_vkDestroySwapchainKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkGetSwapchainImagesKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pSwapchainImageCount,
- VkImage* pSwapchainImages)
-;
-
-VkResult encode_vkAcquireNextImageKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint64_t timeout,
- VkSemaphore semaphore,
- VkFence fence,
- uint32_t* pImageIndex)
-;
-
-VkResult encode_vkQueuePresentKHR(
- void* vkStream,
- VkQueue queue,
- const VkPresentInfoKHR* pPresentInfo)
-;
-
-VkResult encode_vkGetDeviceGroupPresentCapabilitiesKHR(
- void* vkStream,
- VkDevice device,
- VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
-;
-
-VkResult encode_vkGetDeviceGroupSurfacePresentModesKHR(
- void* vkStream,
- VkDevice device,
- VkSurfaceKHR surface,
- VkDeviceGroupPresentModeFlagsKHR* pModes)
-;
-
-VkResult encode_vkGetPhysicalDevicePresentRectanglesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- uint32_t* pRectCount,
- VkRect2D* pRects)
-;
-
-VkResult encode_vkAcquireNextImage2KHR(
- void* vkStream,
- VkDevice device,
- const VkAcquireNextImageInfoKHR* pAcquireInfo,
- uint32_t* pImageIndex)
-;
-
-#endif
-
-#ifdef VK_KHR_display
-
-VkResult encode_vkGetPhysicalDeviceDisplayPropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPropertiesKHR* pProperties)
-;
-
-VkResult encode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlanePropertiesKHR* pProperties)
-;
-
-VkResult encode_vkGetDisplayPlaneSupportedDisplaysKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t planeIndex,
- uint32_t* pDisplayCount,
- VkDisplayKHR* pDisplays)
-;
-
-VkResult encode_vkGetDisplayModePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModePropertiesKHR* pProperties)
-;
-
-VkResult encode_vkCreateDisplayModeKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- const VkDisplayModeCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDisplayModeKHR* pMode)
-;
-
-VkResult encode_vkGetDisplayPlaneCapabilitiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayModeKHR mode,
- uint32_t planeIndex,
- VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-;
-
-VkResult encode_vkCreateDisplayPlaneSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-#endif
-
-#ifdef VK_KHR_display_swapchain
-
-VkResult encode_vkCreateSharedSwapchainsKHR(
- void* vkStream,
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainCreateInfoKHR* pCreateInfos,
- const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains)
-;
-
-#endif
-
-#ifdef VK_KHR_xlib_surface
-
-VkResult encode_vkCreateXlibSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-VkBool32 encode_vkGetPhysicalDeviceXlibPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- Display* dpy,
- VisualID visualID)
-;
-
-#endif
-
-#ifdef VK_KHR_xcb_surface
-
-VkResult encode_vkCreateXcbSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-VkBool32 encode_vkGetPhysicalDeviceXcbPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- xcb_connection_t* connection,
- xcb_visualid_t visual_id)
-;
-
-#endif
-
-#ifdef VK_KHR_wayland_surface
-
-VkResult encode_vkCreateWaylandSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-VkBool32 encode_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- struct wl_display* display)
-;
-
-#endif
-
-#ifdef VK_KHR_mir_surface
-
-VkResult encode_vkCreateMirSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkMirSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-VkBool32 encode_vkGetPhysicalDeviceMirPresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex,
- MirConnection* connection)
-;
-
-#endif
-
-#ifdef VK_KHR_android_surface
-
-VkResult encode_vkCreateAndroidSurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-#endif
-
-#ifdef VK_KHR_win32_surface
-
-VkResult encode_vkCreateWin32SurfaceKHR(
- void* vkStream,
- VkInstance instance,
- const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-VkBool32 encode_vkGetPhysicalDeviceWin32PresentationSupportKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex)
-;
-
-#endif
-
-#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-
-#endif
-
-#ifdef VK_KHR_multiview
-
-#endif
-
-#ifdef VK_KHR_get_physical_device_properties2
-
-void encode_vkGetPhysicalDeviceFeatures2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-;
-
-void encode_vkGetPhysicalDeviceProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-;
-
-void encode_vkGetPhysicalDeviceFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkFormatProperties2* pFormatProperties)
-;
-
-VkResult encode_vkGetPhysicalDeviceImageFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-;
-
-void encode_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-;
-
-void encode_vkGetPhysicalDeviceMemoryProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-;
-
-void encode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
- uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_device_group
-
-void encode_vkGetDeviceGroupPeerMemoryFeaturesKHR(
- void* vkStream,
- VkDevice device,
- uint32_t heapIndex,
- uint32_t localDeviceIndex,
- uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-;
-
-void encode_vkCmdSetDeviceMaskKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-;
-
-void encode_vkCmdDispatchBaseKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t baseGroupX,
- uint32_t baseGroupY,
- uint32_t baseGroupZ,
- uint32_t groupCountX,
- uint32_t groupCountY,
- uint32_t groupCountZ)
-;
-
-#endif
-
-#ifdef VK_KHR_shader_draw_parameters
-
-#endif
-
-#ifdef VK_KHR_maintenance1
-
-void encode_vkTrimCommandPoolKHR(
- void* vkStream,
- VkDevice device,
- VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-;
-
-#endif
-
-#ifdef VK_KHR_device_group_creation
-
-VkResult encode_vkEnumeratePhysicalDeviceGroupsKHR(
- void* vkStream,
- VkInstance instance,
- uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_external_memory_capabilities
-
-void encode_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_external_memory
-
-#endif
-
-#ifdef VK_KHR_external_memory_win32
-
-VkResult encode_vkGetMemoryWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
-
-VkResult encode_vkGetMemoryWin32HandlePropertiesKHR(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- HANDLE handle,
- VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_external_memory_fd
-
-VkResult encode_vkGetMemoryFdKHR(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
-
-VkResult encode_vkGetMemoryFdPropertiesKHR(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- int fd,
- VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_win32_keyed_mutex
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_capabilities
-
-void encode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_external_semaphore
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_win32
-
-VkResult encode_vkImportSemaphoreWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-;
-
-VkResult encode_vkGetSemaphoreWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
-
-#endif
-
-#ifdef VK_KHR_external_semaphore_fd
-
-VkResult encode_vkImportSemaphoreFdKHR(
- void* vkStream,
- VkDevice device,
- const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-;
-
-VkResult encode_vkGetSemaphoreFdKHR(
- void* vkStream,
- VkDevice device,
- const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
-
-#endif
-
-#ifdef VK_KHR_push_descriptor
-
-void encode_vkCmdPushDescriptorSetKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineBindPoint pipelineBindPoint,
- VkPipelineLayout layout,
- uint32_t set,
- uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites)
-;
-
-void encode_vkCmdPushDescriptorSetWithTemplateKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- VkPipelineLayout layout,
- uint32_t set,
- const void* pData)
-;
-
-#endif
-
-#ifdef VK_KHR_16bit_storage
-
-#endif
-
-#ifdef VK_KHR_incremental_present
-
-#endif
-
-#ifdef VK_KHR_descriptor_update_template
-
-VkResult encode_vkCreateDescriptorUpdateTemplateKHR(
- void* vkStream,
- VkDevice device,
- const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-;
-
-void encode_vkDestroyDescriptorUpdateTemplateKHR(
- void* vkStream,
- VkDevice device,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkUpdateDescriptorSetWithTemplateKHR(
- void* vkStream,
- VkDevice device,
- VkDescriptorSet descriptorSet,
- VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-;
-
-#endif
-
-#ifdef VK_KHR_create_renderpass2
-
-VkResult encode_vkCreateRenderPass2KHR(
- void* vkStream,
- VkDevice device,
- const VkRenderPassCreateInfo2KHR* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-;
-
-void encode_vkCmdBeginRenderPass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-;
-
-void encode_vkCmdNextSubpass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-;
-
-void encode_vkCmdEndRenderPass2KHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-;
-
-#endif
-
-#ifdef VK_KHR_shared_presentable_image
-
-VkResult encode_vkGetSwapchainStatusKHR(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain)
-;
-
-#endif
-
-#ifdef VK_KHR_external_fence_capabilities
-
-void encode_vkGetPhysicalDeviceExternalFencePropertiesKHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-;
-
-#endif
-
-#ifdef VK_KHR_external_fence
-
-#endif
-
-#ifdef VK_KHR_external_fence_win32
-
-VkResult encode_vkImportFenceWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-;
-
-VkResult encode_vkGetFenceWin32HandleKHR(
- void* vkStream,
- VkDevice device,
- const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
-
-#endif
-
-#ifdef VK_KHR_external_fence_fd
-
-VkResult encode_vkImportFenceFdKHR(
- void* vkStream,
- VkDevice device,
- const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-;
-
-VkResult encode_vkGetFenceFdKHR(
- void* vkStream,
- VkDevice device,
- const VkFenceGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
-
-#endif
-
-#ifdef VK_KHR_maintenance2
-
-#endif
-
-#ifdef VK_KHR_get_surface_capabilities2
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-;
-
-VkResult encode_vkGetPhysicalDeviceSurfaceFormats2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- uint32_t* pSurfaceFormatCount,
- VkSurfaceFormat2KHR* pSurfaceFormats)
-;
-
-#endif
-
-#ifdef VK_KHR_variable_pointers
-
-#endif
-
-#ifdef VK_KHR_get_display_properties2
-
-VkResult encode_vkGetPhysicalDeviceDisplayProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayProperties2KHR* pProperties)
-;
-
-VkResult encode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- uint32_t* pPropertyCount,
- VkDisplayPlaneProperties2KHR* pProperties)
-;
-
-VkResult encode_vkGetDisplayModeProperties2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display,
- uint32_t* pPropertyCount,
- VkDisplayModeProperties2KHR* pProperties)
-;
-
-VkResult encode_vkGetDisplayPlaneCapabilities2KHR(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
- VkDisplayPlaneCapabilities2KHR* pCapabilities)
-;
-
-#endif
-
-#ifdef VK_KHR_dedicated_allocation
-
-#endif
-
-#ifdef VK_KHR_storage_buffer_storage_class
-
-#endif
-
-#ifdef VK_KHR_relaxed_block_layout
-
-#endif
-
-#ifdef VK_KHR_get_memory_requirements2
-
-void encode_vkGetImageMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
-
-void encode_vkGetBufferMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
-
-void encode_vkGetImageSparseMemoryRequirements2KHR(
- void* vkStream,
- VkDevice device,
- const VkImageSparseMemoryRequirementsInfo2* pInfo,
- uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-;
-
-#endif
-
-#ifdef VK_KHR_image_format_list
-
-#endif
-
-#ifdef VK_KHR_sampler_ycbcr_conversion
-
-VkResult encode_vkCreateSamplerYcbcrConversionKHR(
- void* vkStream,
- VkDevice device,
- const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-;
-
-void encode_vkDestroySamplerYcbcrConversionKHR(
- void* vkStream,
- VkDevice device,
- VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-;
-
-#endif
-
-#ifdef VK_KHR_bind_memory2
-
-VkResult encode_vkBindBufferMemory2KHR(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-;
-
-VkResult encode_vkBindImageMemory2KHR(
- void* vkStream,
- VkDevice device,
- uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-;
-
-#endif
-
-#ifdef VK_KHR_maintenance3
-
-void encode_vkGetDescriptorSetLayoutSupportKHR(
- void* vkStream,
- VkDevice device,
- const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-;
-
-#endif
-
-#ifdef VK_KHR_draw_indirect_count
-
-void encode_vkCmdDrawIndirectCountKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-;
-
-void encode_vkCmdDrawIndexedIndirectCountKHR(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-;
-
-#endif
-
-#ifdef VK_KHR_8bit_storage
-
-#endif
-
-#ifdef VK_EXT_debug_report
-
-VkResult encode_vkCreateDebugReportCallbackEXT(
- void* vkStream,
- VkInstance instance,
- const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugReportCallbackEXT* pCallback)
-;
-
-void encode_vkDestroyDebugReportCallbackEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugReportCallbackEXT callback,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkDebugReportMessageEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugReportFlagsEXT flags,
- VkDebugReportObjectTypeEXT objectType,
- uint64_t object,
- size_t location,
- int32_t messageCode,
- const char* pLayerPrefix,
- const char* pMessage)
-;
-
-#endif
-
-#ifdef VK_NV_glsl_shader
-
-#endif
-
-#ifdef VK_EXT_depth_range_unrestricted
-
-#endif
-
-#ifdef VK_IMG_filter_cubic
-
-#endif
-
-#ifdef VK_AMD_rasterization_order
-
-#endif
-
-#ifdef VK_AMD_shader_trinary_minmax
-
-#endif
-
-#ifdef VK_AMD_shader_explicit_vertex_parameter
-
-#endif
-
-#ifdef VK_EXT_debug_marker
-
-VkResult encode_vkDebugMarkerSetObjectTagEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-;
-
-VkResult encode_vkDebugMarkerSetObjectNameEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-;
-
-void encode_vkCmdDebugMarkerBeginEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-;
-
-void encode_vkCmdDebugMarkerEndEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-;
-
-void encode_vkCmdDebugMarkerInsertEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-;
-
-#endif
-
-#ifdef VK_AMD_gcn_shader
-
-#endif
-
-#ifdef VK_NV_dedicated_allocation
-
-#endif
-
-#ifdef VK_AMD_draw_indirect_count
-
-void encode_vkCmdDrawIndirectCountAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-;
-
-void encode_vkCmdDrawIndexedIndirectCountAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkBuffer buffer,
- VkDeviceSize offset,
- VkBuffer countBuffer,
- VkDeviceSize countBufferOffset,
- uint32_t maxDrawCount,
- uint32_t stride)
-;
-
-#endif
-
-#ifdef VK_AMD_negative_viewport_height
-
-#endif
-
-#ifdef VK_AMD_gpu_shader_half_float
-
-#endif
-
-#ifdef VK_AMD_shader_ballot
-
-#endif
-
-#ifdef VK_AMD_texture_gather_bias_lod
-
-#endif
-
-#ifdef VK_AMD_shader_info
-
-VkResult encode_vkGetShaderInfoAMD(
- void* vkStream,
- VkDevice device,
- VkPipeline pipeline,
- VkShaderStageFlagBits shaderStage,
- VkShaderInfoTypeAMD infoType,
- size_t* pInfoSize,
- void* pInfo)
-;
-
-#endif
-
-#ifdef VK_AMD_shader_image_load_store_lod
-
-#endif
-
-#ifdef VK_IMG_format_pvrtc
-
-#endif
-
-#ifdef VK_NV_external_memory_capabilities
-
-VkResult encode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkFormat format,
- VkImageType type,
- VkImageTiling tiling,
- VkImageUsageFlags usage,
- VkImageCreateFlags flags,
- VkExternalMemoryHandleTypeFlagsNV externalHandleType,
- VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-;
-
-#endif
-
-#ifdef VK_NV_external_memory
-
-#endif
-
-#ifdef VK_NV_external_memory_win32
-
-VkResult encode_vkGetMemoryWin32HandleNV(
- void* vkStream,
- VkDevice device,
- VkDeviceMemory memory,
- VkExternalMemoryHandleTypeFlagsNV handleType,
- HANDLE* pHandle)
-;
-
-#endif
-
-#ifdef VK_NV_win32_keyed_mutex
-
-#endif
-
-#ifdef VK_EXT_validation_flags
-
-#endif
-
-#ifdef VK_NN_vi_surface
-
-VkResult encode_vkCreateViSurfaceNN(
- void* vkStream,
- VkInstance instance,
- const VkViSurfaceCreateInfoNN* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-#endif
-
-#ifdef VK_EXT_shader_subgroup_ballot
-
-#endif
-
-#ifdef VK_EXT_shader_subgroup_vote
-
-#endif
-
-#ifdef VK_EXT_conditional_rendering
-
-void encode_vkCmdBeginConditionalRenderingEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-;
-
-void encode_vkCmdEndConditionalRenderingEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-;
-
-#endif
-
-#ifdef VK_NVX_device_generated_commands
-
-void encode_vkCmdProcessCommandsNVX(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-;
-
-void encode_vkCmdReserveSpaceForCommandsNVX(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-;
-
-VkResult encode_vkCreateIndirectCommandsLayoutNVX(
- void* vkStream,
- VkDevice device,
- const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-;
-
-void encode_vkDestroyIndirectCommandsLayoutNVX(
- void* vkStream,
- VkDevice device,
- VkIndirectCommandsLayoutNVX indirectCommandsLayout,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkCreateObjectTableNVX(
- void* vkStream,
- VkDevice device,
- const VkObjectTableCreateInfoNVX* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkObjectTableNVX* pObjectTable)
-;
-
-void encode_vkDestroyObjectTableNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkRegisterObjectsNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- uint32_t objectCount,
- const VkObjectTableEntryNVX* const* ppObjectTableEntries,
- const uint32_t* pObjectIndices)
-;
-
-VkResult encode_vkUnregisterObjectsNVX(
- void* vkStream,
- VkDevice device,
- VkObjectTableNVX objectTable,
- uint32_t objectCount,
- const VkObjectEntryTypeNVX* pObjectEntryTypes,
- const uint32_t* pObjectIndices)
-;
-
-void encode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
- VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-;
-
-#endif
-
-#ifdef VK_NV_clip_space_w_scaling
-
-void encode_vkCmdSetViewportWScalingNV(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstViewport,
- uint32_t viewportCount,
- const VkViewportWScalingNV* pViewportWScalings)
-;
-
-#endif
-
-#ifdef VK_EXT_direct_mode_display
-
-VkResult encode_vkReleaseDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkDisplayKHR display)
-;
-
-#endif
-
-#ifdef VK_EXT_acquire_xlib_display
-
-VkResult encode_vkAcquireXlibDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- VkDisplayKHR display)
-;
-
-VkResult encode_vkGetRandROutputDisplayEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- Display* dpy,
- RROutput rrOutput,
- VkDisplayKHR* pDisplay)
-;
-
-#endif
-
-#ifdef VK_EXT_display_surface_counter
-
-VkResult encode_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSurfaceKHR surface,
- VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-;
-
-#endif
-
-#ifdef VK_EXT_display_control
-
-VkResult encode_vkDisplayPowerControlEXT(
- void* vkStream,
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-;
-
-VkResult encode_vkRegisterDeviceEventEXT(
- void* vkStream,
- VkDevice device,
- const VkDeviceEventInfoEXT* pDeviceEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
-
-VkResult encode_vkRegisterDisplayEventEXT(
- void* vkStream,
- VkDevice device,
- VkDisplayKHR display,
- const VkDisplayEventInfoEXT* pDisplayEventInfo,
- const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
-
-VkResult encode_vkGetSwapchainCounterEXT(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkSurfaceCounterFlagBitsEXT counter,
- uint64_t* pCounterValue)
-;
-
-#endif
-
-#ifdef VK_GOOGLE_display_timing
-
-VkResult encode_vkGetRefreshCycleDurationGOOGLE(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-;
-
-VkResult encode_vkGetPastPresentationTimingGOOGLE(
- void* vkStream,
- VkDevice device,
- VkSwapchainKHR swapchain,
- uint32_t* pPresentationTimingCount,
- VkPastPresentationTimingGOOGLE* pPresentationTimings)
-;
-
-#endif
-
-#ifdef VK_NV_sample_mask_override_coverage
-
-#endif
-
-#ifdef VK_NV_geometry_shader_passthrough
-
-#endif
-
-#ifdef VK_NV_viewport_array2
-
-#endif
-
-#ifdef VK_NVX_multiview_per_view_attributes
-
-#endif
-
-#ifdef VK_NV_viewport_swizzle
-
-#endif
-
-#ifdef VK_EXT_discard_rectangles
-
-void encode_vkCmdSetDiscardRectangleEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- uint32_t firstDiscardRectangle,
- uint32_t discardRectangleCount,
- const VkRect2D* pDiscardRectangles)
-;
-
-#endif
-
-#ifdef VK_EXT_conservative_rasterization
-
-#endif
-
-#ifdef VK_EXT_swapchain_colorspace
-
-#endif
-
-#ifdef VK_EXT_hdr_metadata
-
-void encode_vkSetHdrMetadataEXT(
- void* vkStream,
- VkDevice device,
- uint32_t swapchainCount,
- const VkSwapchainKHR* pSwapchains,
- const VkHdrMetadataEXT* pMetadata)
-;
-
-#endif
-
-#ifdef VK_MVK_ios_surface
-
-VkResult encode_vkCreateIOSSurfaceMVK(
- void* vkStream,
- VkInstance instance,
- const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-#endif
-
-#ifdef VK_MVK_macos_surface
-
-VkResult encode_vkCreateMacOSSurfaceMVK(
- void* vkStream,
- VkInstance instance,
- const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
-
-#endif
-
-#ifdef VK_EXT_external_memory_dma_buf
-
-#endif
-
-#ifdef VK_EXT_queue_family_foreign
-
-#endif
-
-#ifdef VK_EXT_debug_utils
-
-VkResult encode_vkSetDebugUtilsObjectNameEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-;
-
-VkResult encode_vkSetDebugUtilsObjectTagEXT(
- void* vkStream,
- VkDevice device,
- const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-;
-
-void encode_vkQueueBeginDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
-
-void encode_vkQueueEndDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue)
-;
-
-void encode_vkQueueInsertDebugUtilsLabelEXT(
- void* vkStream,
- VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
-
-void encode_vkCmdBeginDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
-
-void encode_vkCmdEndDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer)
-;
-
-void encode_vkCmdInsertDebugUtilsLabelEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
-
-VkResult encode_vkCreateDebugUtilsMessengerEXT(
- void* vkStream,
- VkInstance instance,
- const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkDebugUtilsMessengerEXT* pMessenger)
-;
-
-void encode_vkDestroyDebugUtilsMessengerEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugUtilsMessengerEXT messenger,
- const VkAllocationCallbacks* pAllocator)
-;
-
-void encode_vkSubmitDebugUtilsMessageEXT(
- void* vkStream,
- VkInstance instance,
- VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
- VkDebugUtilsMessageTypeFlagsEXT messageTypes,
- const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-;
-
-#endif
-
-#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-
-VkResult encode_vkGetAndroidHardwareBufferPropertiesANDROID(
- void* vkStream,
- VkDevice device,
- const struct AHardwareBuffer* buffer,
- VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-;
-
-VkResult encode_vkGetMemoryAndroidHardwareBufferANDROID(
- void* vkStream,
- VkDevice device,
- const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer)
-;
-
-#endif
-
-#ifdef VK_EXT_sampler_filter_minmax
-
-#endif
-
-#ifdef VK_AMD_gpu_shader_int16
-
-#endif
-
-#ifdef VK_AMD_mixed_attachment_samples
-
-#endif
-
-#ifdef VK_AMD_shader_fragment_mask
-
-#endif
-
-#ifdef VK_EXT_shader_stencil_export
-
-#endif
-
-#ifdef VK_EXT_sample_locations
-
-void encode_vkCmdSetSampleLocationsEXT(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-;
-
-void encode_vkGetPhysicalDeviceMultisamplePropertiesEXT(
- void* vkStream,
- VkPhysicalDevice physicalDevice,
- VkSampleCountFlagBits samples,
- VkMultisamplePropertiesEXT* pMultisampleProperties)
-;
-
-#endif
-
-#ifdef VK_EXT_blend_operation_advanced
-
-#endif
-
-#ifdef VK_NV_fragment_coverage_to_color
-
-#endif
-
-#ifdef VK_NV_framebuffer_mixed_samples
-
-#endif
-
-#ifdef VK_NV_fill_rectangle
-
-#endif
-
-#ifdef VK_EXT_post_depth_coverage
-
-#endif
-
-#ifdef VK_EXT_validation_cache
-
-VkResult encode_vkCreateValidationCacheEXT(
- void* vkStream,
- VkDevice device,
- const VkValidationCacheCreateInfoEXT* pCreateInfo,
- const VkAllocationCallbacks* pAllocator,
- VkValidationCacheEXT* pValidationCache)
-;
-
-void encode_vkDestroyValidationCacheEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT validationCache,
- const VkAllocationCallbacks* pAllocator)
-;
-
-VkResult encode_vkMergeValidationCachesEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT dstCache,
- uint32_t srcCacheCount,
- const VkValidationCacheEXT* pSrcCaches)
-;
-
-VkResult encode_vkGetValidationCacheDataEXT(
- void* vkStream,
- VkDevice device,
- VkValidationCacheEXT validationCache,
- size_t* pDataSize,
- void* pData)
-;
-
-#endif
-
-#ifdef VK_EXT_descriptor_indexing
-
-#endif
-
-#ifdef VK_EXT_shader_viewport_index_layer
-
-#endif
-
-#ifdef VK_EXT_global_priority
-
-#endif
-
-#ifdef VK_EXT_external_memory_host
-
-VkResult encode_vkGetMemoryHostPointerPropertiesEXT(
- void* vkStream,
- VkDevice device,
- VkExternalMemoryHandleTypeFlagBits handleType,
- const void* pHostPointer,
- VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-;
-
-#endif
-
-#ifdef VK_AMD_buffer_marker
-
-void encode_vkCmdWriteBufferMarkerAMD(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- VkPipelineStageFlagBits pipelineStage,
- VkBuffer dstBuffer,
- VkDeviceSize dstOffset,
- uint32_t marker)
-;
-
-#endif
-
-#ifdef VK_AMD_shader_core_properties
-
-#endif
-
-#ifdef VK_EXT_vertex_attribute_divisor
-
-#endif
-
-#ifdef VK_NV_shader_subgroup_partitioned
-
-#endif
-
-#ifdef VK_NV_device_diagnostic_checkpoints
-
-void encode_vkCmdSetCheckpointNV(
- void* vkStream,
- VkCommandBuffer commandBuffer,
- const void* pCheckpointMarker)
-;
-
-void encode_vkGetQueueCheckpointDataNV(
- void* vkStream,
- VkQueue queue,
- uint32_t* pCheckpointDataCount,
- VkCheckpointDataNV* pCheckpointData)
-;
-
-#endif
-
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.cpp b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.cpp
index f4f653a489..8fd35a621d 100644
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.cpp
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.cpp
@@ -1,12 +1,34 @@
-// Module: goldfish_vk_frontend (impl) Autogenerated by CerealGenerator
-
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_frontend
+// (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
#include "goldfish_vk_frontend.h"
-#include "goldfish_vk_encoder.h"
-#ifdef VK_VERSION_1_0
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
static void validate_vkCreateInstance(
VkResult* validateResult,
const VkInstanceCreateInfo* pCreateInfo,
@@ -19,7 +41,6 @@ VkResult goldfish_frontend_vkCreateInstance(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateInstance(&validateResult, pCreateInfo, pAllocator, pInstance);
@@ -28,8 +49,8 @@ VkResult goldfish_frontend_vkCreateInstance(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateInstance(vkStream, pCreateInfo, pAllocator, pInstance);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateInstance(vkStream, pCreateInfo, pAllocator, pInstance);
return res;
}
@@ -43,7 +64,6 @@ static void validate_vkDestroyInstance(
void goldfish_frontend_vkDestroyInstance(
VkInstance instance,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyInstance(&validateResult, instance, pAllocator);
@@ -52,8 +72,8 @@ void goldfish_frontend_vkDestroyInstance(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyInstance(vkStream, instance, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyInstance(vkStream, instance, pAllocator);
}
static void validate_vkEnumeratePhysicalDevices(
@@ -68,7 +88,6 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDevices(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumeratePhysicalDevices(&validateResult, instance, pPhysicalDeviceCount, pPhysicalDevices);
@@ -77,8 +96,8 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDevices(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumeratePhysicalDevices(vkStream, instance, pPhysicalDeviceCount, pPhysicalDevices);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumeratePhysicalDevices(vkStream, instance, pPhysicalDeviceCount, pPhysicalDevices);
return res;
}
@@ -92,7 +111,6 @@ static void validate_vkGetPhysicalDeviceFeatures(
void goldfish_frontend_vkGetPhysicalDeviceFeatures(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures* pFeatures)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFeatures(&validateResult, physicalDevice, pFeatures);
@@ -101,8 +119,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFeatures(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFeatures(vkStream, physicalDevice, pFeatures);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFeatures(vkStream, physicalDevice, pFeatures);
}
static void validate_vkGetPhysicalDeviceFormatProperties(
@@ -117,7 +135,6 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties* pFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFormatProperties(&validateResult, physicalDevice, format, pFormatProperties);
@@ -126,8 +143,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFormatProperties(vkStream, physicalDevice, format, pFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFormatProperties(vkStream, physicalDevice, format, pFormatProperties);
}
static void validate_vkGetPhysicalDeviceImageFormatProperties(
@@ -150,7 +167,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties(
VkImageUsageFlags usage,
VkImageCreateFlags flags,
VkImageFormatProperties* pImageFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceImageFormatProperties(&validateResult, physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
@@ -159,8 +175,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceImageFormatProperties(vkStream, physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceImageFormatProperties(vkStream, physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
return res;
}
@@ -174,7 +190,6 @@ static void validate_vkGetPhysicalDeviceProperties(
void goldfish_frontend_vkGetPhysicalDeviceProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceProperties(&validateResult, physicalDevice, pProperties);
@@ -183,8 +198,8 @@ void goldfish_frontend_vkGetPhysicalDeviceProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceProperties(vkStream, physicalDevice, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceProperties(vkStream, physicalDevice, pProperties);
}
static void validate_vkGetPhysicalDeviceQueueFamilyProperties(
@@ -199,7 +214,6 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties* pQueueFamilyProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceQueueFamilyProperties(&validateResult, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
@@ -208,8 +222,8 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceQueueFamilyProperties(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceQueueFamilyProperties(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
}
static void validate_vkGetPhysicalDeviceMemoryProperties(
@@ -222,7 +236,6 @@ static void validate_vkGetPhysicalDeviceMemoryProperties(
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceMemoryProperties(&validateResult, physicalDevice, pMemoryProperties);
@@ -231,8 +244,8 @@ void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceMemoryProperties(vkStream, physicalDevice, pMemoryProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceMemoryProperties(vkStream, physicalDevice, pMemoryProperties);
}
static void validate_vkGetInstanceProcAddr(
@@ -245,7 +258,6 @@ static void validate_vkGetInstanceProcAddr(
PFN_vkVoidFunction goldfish_frontend_vkGetInstanceProcAddr(
VkInstance instance,
const char* pName)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetInstanceProcAddr(&validateResult, instance, pName);
@@ -254,8 +266,8 @@ PFN_vkVoidFunction goldfish_frontend_vkGetInstanceProcAddr(
return (PFN_vkVoidFunction)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- PFN_vkVoidFunction res = encode_vkGetInstanceProcAddr(vkStream, instance, pName);
+ VulkanStream* vkStream = nullptr;
+ PFN_vkVoidFunction res = marshal_vkGetInstanceProcAddr(vkStream, instance, pName);
return res;
}
@@ -269,7 +281,6 @@ static void validate_vkGetDeviceProcAddr(
PFN_vkVoidFunction goldfish_frontend_vkGetDeviceProcAddr(
VkDevice device,
const char* pName)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceProcAddr(&validateResult, device, pName);
@@ -278,8 +289,8 @@ PFN_vkVoidFunction goldfish_frontend_vkGetDeviceProcAddr(
return (PFN_vkVoidFunction)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- PFN_vkVoidFunction res = encode_vkGetDeviceProcAddr(vkStream, device, pName);
+ VulkanStream* vkStream = nullptr;
+ PFN_vkVoidFunction res = marshal_vkGetDeviceProcAddr(vkStream, device, pName);
return res;
}
@@ -297,7 +308,6 @@ VkResult goldfish_frontend_vkCreateDevice(
const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDevice* pDevice)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDevice(&validateResult, physicalDevice, pCreateInfo, pAllocator, pDevice);
@@ -306,8 +316,8 @@ VkResult goldfish_frontend_vkCreateDevice(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDevice(vkStream, physicalDevice, pCreateInfo, pAllocator, pDevice);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDevice(vkStream, physicalDevice, pCreateInfo, pAllocator, pDevice);
return res;
}
@@ -321,7 +331,6 @@ static void validate_vkDestroyDevice(
void goldfish_frontend_vkDestroyDevice(
VkDevice device,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDevice(&validateResult, device, pAllocator);
@@ -330,8 +339,8 @@ void goldfish_frontend_vkDestroyDevice(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDevice(vkStream, device, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDevice(vkStream, device, pAllocator);
}
static void validate_vkEnumerateInstanceExtensionProperties(
@@ -346,7 +355,6 @@ VkResult goldfish_frontend_vkEnumerateInstanceExtensionProperties(
const char* pLayerName,
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumerateInstanceExtensionProperties(&validateResult, pLayerName, pPropertyCount, pProperties);
@@ -355,8 +363,8 @@ VkResult goldfish_frontend_vkEnumerateInstanceExtensionProperties(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumerateInstanceExtensionProperties(vkStream, pLayerName, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumerateInstanceExtensionProperties(vkStream, pLayerName, pPropertyCount, pProperties);
return res;
}
@@ -374,7 +382,6 @@ VkResult goldfish_frontend_vkEnumerateDeviceExtensionProperties(
const char* pLayerName,
uint32_t* pPropertyCount,
VkExtensionProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumerateDeviceExtensionProperties(&validateResult, physicalDevice, pLayerName, pPropertyCount, pProperties);
@@ -383,8 +390,8 @@ VkResult goldfish_frontend_vkEnumerateDeviceExtensionProperties(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumerateDeviceExtensionProperties(vkStream, physicalDevice, pLayerName, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumerateDeviceExtensionProperties(vkStream, physicalDevice, pLayerName, pPropertyCount, pProperties);
return res;
}
@@ -398,7 +405,6 @@ static void validate_vkEnumerateInstanceLayerProperties(
VkResult goldfish_frontend_vkEnumerateInstanceLayerProperties(
uint32_t* pPropertyCount,
VkLayerProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumerateInstanceLayerProperties(&validateResult, pPropertyCount, pProperties);
@@ -407,8 +413,8 @@ VkResult goldfish_frontend_vkEnumerateInstanceLayerProperties(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumerateInstanceLayerProperties(vkStream, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumerateInstanceLayerProperties(vkStream, pPropertyCount, pProperties);
return res;
}
@@ -424,7 +430,6 @@ VkResult goldfish_frontend_vkEnumerateDeviceLayerProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkLayerProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumerateDeviceLayerProperties(&validateResult, physicalDevice, pPropertyCount, pProperties);
@@ -433,8 +438,8 @@ VkResult goldfish_frontend_vkEnumerateDeviceLayerProperties(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumerateDeviceLayerProperties(vkStream, physicalDevice, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumerateDeviceLayerProperties(vkStream, physicalDevice, pPropertyCount, pProperties);
return res;
}
@@ -452,7 +457,6 @@ void goldfish_frontend_vkGetDeviceQueue(
uint32_t queueFamilyIndex,
uint32_t queueIndex,
VkQueue* pQueue)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceQueue(&validateResult, device, queueFamilyIndex, queueIndex, pQueue);
@@ -461,8 +465,8 @@ void goldfish_frontend_vkGetDeviceQueue(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDeviceQueue(vkStream, device, queueFamilyIndex, queueIndex, pQueue);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDeviceQueue(vkStream, device, queueFamilyIndex, queueIndex, pQueue);
}
static void validate_vkQueueSubmit(
@@ -479,7 +483,6 @@ VkResult goldfish_frontend_vkQueueSubmit(
uint32_t submitCount,
const VkSubmitInfo* pSubmits,
VkFence fence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueSubmit(&validateResult, queue, submitCount, pSubmits, fence);
@@ -488,8 +491,8 @@ VkResult goldfish_frontend_vkQueueSubmit(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkQueueSubmit(vkStream, queue, submitCount, pSubmits, fence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkQueueSubmit(vkStream, queue, submitCount, pSubmits, fence);
return res;
}
@@ -501,7 +504,6 @@ static void validate_vkQueueWaitIdle(
VkResult goldfish_frontend_vkQueueWaitIdle(
VkQueue queue)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueWaitIdle(&validateResult, queue);
@@ -510,8 +512,8 @@ VkResult goldfish_frontend_vkQueueWaitIdle(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkQueueWaitIdle(vkStream, queue);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkQueueWaitIdle(vkStream, queue);
return res;
}
@@ -523,7 +525,6 @@ static void validate_vkDeviceWaitIdle(
VkResult goldfish_frontend_vkDeviceWaitIdle(
VkDevice device)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDeviceWaitIdle(&validateResult, device);
@@ -532,8 +533,8 @@ VkResult goldfish_frontend_vkDeviceWaitIdle(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkDeviceWaitIdle(vkStream, device);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkDeviceWaitIdle(vkStream, device);
return res;
}
@@ -551,7 +552,6 @@ VkResult goldfish_frontend_vkAllocateMemory(
const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator,
VkDeviceMemory* pMemory)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAllocateMemory(&validateResult, device, pAllocateInfo, pAllocator, pMemory);
@@ -560,8 +560,8 @@ VkResult goldfish_frontend_vkAllocateMemory(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAllocateMemory(vkStream, device, pAllocateInfo, pAllocator, pMemory);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAllocateMemory(vkStream, device, pAllocateInfo, pAllocator, pMemory);
return res;
}
@@ -577,7 +577,6 @@ void goldfish_frontend_vkFreeMemory(
VkDevice device,
VkDeviceMemory memory,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkFreeMemory(&validateResult, device, memory, pAllocator);
@@ -586,8 +585,8 @@ void goldfish_frontend_vkFreeMemory(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkFreeMemory(vkStream, device, memory, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkFreeMemory(vkStream, device, memory, pAllocator);
}
static void validate_vkMapMemory(
@@ -608,7 +607,6 @@ VkResult goldfish_frontend_vkMapMemory(
VkDeviceSize size,
VkMemoryMapFlags flags,
void** ppData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkMapMemory(&validateResult, device, memory, offset, size, flags, ppData);
@@ -617,8 +615,8 @@ VkResult goldfish_frontend_vkMapMemory(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkMapMemory(vkStream, device, memory, offset, size, flags, ppData);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkMapMemory(vkStream, device, memory, offset, size, flags, ppData);
return res;
}
@@ -632,7 +630,6 @@ static void validate_vkUnmapMemory(
void goldfish_frontend_vkUnmapMemory(
VkDevice device,
VkDeviceMemory memory)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkUnmapMemory(&validateResult, device, memory);
@@ -641,8 +638,8 @@ void goldfish_frontend_vkUnmapMemory(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkUnmapMemory(vkStream, device, memory);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkUnmapMemory(vkStream, device, memory);
}
static void validate_vkFlushMappedMemoryRanges(
@@ -657,7 +654,6 @@ VkResult goldfish_frontend_vkFlushMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkFlushMappedMemoryRanges(&validateResult, device, memoryRangeCount, pMemoryRanges);
@@ -666,8 +662,8 @@ VkResult goldfish_frontend_vkFlushMappedMemoryRanges(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkFlushMappedMemoryRanges(vkStream, device, memoryRangeCount, pMemoryRanges);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkFlushMappedMemoryRanges(vkStream, device, memoryRangeCount, pMemoryRanges);
return res;
}
@@ -683,7 +679,6 @@ VkResult goldfish_frontend_vkInvalidateMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkInvalidateMappedMemoryRanges(&validateResult, device, memoryRangeCount, pMemoryRanges);
@@ -692,8 +687,8 @@ VkResult goldfish_frontend_vkInvalidateMappedMemoryRanges(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkInvalidateMappedMemoryRanges(vkStream, device, memoryRangeCount, pMemoryRanges);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkInvalidateMappedMemoryRanges(vkStream, device, memoryRangeCount, pMemoryRanges);
return res;
}
@@ -709,7 +704,6 @@ void goldfish_frontend_vkGetDeviceMemoryCommitment(
VkDevice device,
VkDeviceMemory memory,
VkDeviceSize* pCommittedMemoryInBytes)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceMemoryCommitment(&validateResult, device, memory, pCommittedMemoryInBytes);
@@ -718,8 +712,8 @@ void goldfish_frontend_vkGetDeviceMemoryCommitment(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDeviceMemoryCommitment(vkStream, device, memory, pCommittedMemoryInBytes);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDeviceMemoryCommitment(vkStream, device, memory, pCommittedMemoryInBytes);
}
static void validate_vkBindBufferMemory(
@@ -736,7 +730,6 @@ VkResult goldfish_frontend_vkBindBufferMemory(
VkBuffer buffer,
VkDeviceMemory memory,
VkDeviceSize memoryOffset)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindBufferMemory(&validateResult, device, buffer, memory, memoryOffset);
@@ -745,8 +738,8 @@ VkResult goldfish_frontend_vkBindBufferMemory(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindBufferMemory(vkStream, device, buffer, memory, memoryOffset);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindBufferMemory(vkStream, device, buffer, memory, memoryOffset);
return res;
}
@@ -764,7 +757,6 @@ VkResult goldfish_frontend_vkBindImageMemory(
VkImage image,
VkDeviceMemory memory,
VkDeviceSize memoryOffset)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindImageMemory(&validateResult, device, image, memory, memoryOffset);
@@ -773,8 +765,8 @@ VkResult goldfish_frontend_vkBindImageMemory(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindImageMemory(vkStream, device, image, memory, memoryOffset);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindImageMemory(vkStream, device, image, memory, memoryOffset);
return res;
}
@@ -790,7 +782,6 @@ void goldfish_frontend_vkGetBufferMemoryRequirements(
VkDevice device,
VkBuffer buffer,
VkMemoryRequirements* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetBufferMemoryRequirements(&validateResult, device, buffer, pMemoryRequirements);
@@ -799,8 +790,8 @@ void goldfish_frontend_vkGetBufferMemoryRequirements(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetBufferMemoryRequirements(vkStream, device, buffer, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetBufferMemoryRequirements(vkStream, device, buffer, pMemoryRequirements);
}
static void validate_vkGetImageMemoryRequirements(
@@ -815,7 +806,6 @@ void goldfish_frontend_vkGetImageMemoryRequirements(
VkDevice device,
VkImage image,
VkMemoryRequirements* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageMemoryRequirements(&validateResult, device, image, pMemoryRequirements);
@@ -824,8 +814,8 @@ void goldfish_frontend_vkGetImageMemoryRequirements(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageMemoryRequirements(vkStream, device, image, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageMemoryRequirements(vkStream, device, image, pMemoryRequirements);
}
static void validate_vkGetImageSparseMemoryRequirements(
@@ -842,7 +832,6 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements(
VkImage image,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageSparseMemoryRequirements(&validateResult, device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
@@ -851,8 +840,8 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageSparseMemoryRequirements(vkStream, device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageSparseMemoryRequirements(vkStream, device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
}
static void validate_vkGetPhysicalDeviceSparseImageFormatProperties(
@@ -877,7 +866,6 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties(
VkImageTiling tiling,
uint32_t* pPropertyCount,
VkSparseImageFormatProperties* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSparseImageFormatProperties(&validateResult, physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
@@ -886,8 +874,8 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceSparseImageFormatProperties(vkStream, physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceSparseImageFormatProperties(vkStream, physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
}
static void validate_vkQueueBindSparse(
@@ -904,7 +892,6 @@ VkResult goldfish_frontend_vkQueueBindSparse(
uint32_t bindInfoCount,
const VkBindSparseInfo* pBindInfo,
VkFence fence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueBindSparse(&validateResult, queue, bindInfoCount, pBindInfo, fence);
@@ -913,8 +900,8 @@ VkResult goldfish_frontend_vkQueueBindSparse(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkQueueBindSparse(vkStream, queue, bindInfoCount, pBindInfo, fence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkQueueBindSparse(vkStream, queue, bindInfoCount, pBindInfo, fence);
return res;
}
@@ -932,7 +919,6 @@ VkResult goldfish_frontend_vkCreateFence(
const VkFenceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkFence* pFence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateFence(&validateResult, device, pCreateInfo, pAllocator, pFence);
@@ -941,8 +927,8 @@ VkResult goldfish_frontend_vkCreateFence(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateFence(vkStream, device, pCreateInfo, pAllocator, pFence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateFence(vkStream, device, pCreateInfo, pAllocator, pFence);
return res;
}
@@ -958,7 +944,6 @@ void goldfish_frontend_vkDestroyFence(
VkDevice device,
VkFence fence,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyFence(&validateResult, device, fence, pAllocator);
@@ -967,8 +952,8 @@ void goldfish_frontend_vkDestroyFence(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyFence(vkStream, device, fence, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyFence(vkStream, device, fence, pAllocator);
}
static void validate_vkResetFences(
@@ -983,7 +968,6 @@ VkResult goldfish_frontend_vkResetFences(
VkDevice device,
uint32_t fenceCount,
const VkFence* pFences)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkResetFences(&validateResult, device, fenceCount, pFences);
@@ -992,8 +976,8 @@ VkResult goldfish_frontend_vkResetFences(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkResetFences(vkStream, device, fenceCount, pFences);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkResetFences(vkStream, device, fenceCount, pFences);
return res;
}
@@ -1007,7 +991,6 @@ static void validate_vkGetFenceStatus(
VkResult goldfish_frontend_vkGetFenceStatus(
VkDevice device,
VkFence fence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetFenceStatus(&validateResult, device, fence);
@@ -1016,8 +999,8 @@ VkResult goldfish_frontend_vkGetFenceStatus(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetFenceStatus(vkStream, device, fence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetFenceStatus(vkStream, device, fence);
return res;
}
@@ -1037,7 +1020,6 @@ VkResult goldfish_frontend_vkWaitForFences(
const VkFence* pFences,
VkBool32 waitAll,
uint64_t timeout)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkWaitForFences(&validateResult, device, fenceCount, pFences, waitAll, timeout);
@@ -1046,8 +1028,8 @@ VkResult goldfish_frontend_vkWaitForFences(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkWaitForFences(vkStream, device, fenceCount, pFences, waitAll, timeout);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkWaitForFences(vkStream, device, fenceCount, pFences, waitAll, timeout);
return res;
}
@@ -1065,7 +1047,6 @@ VkResult goldfish_frontend_vkCreateSemaphore(
const VkSemaphoreCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSemaphore* pSemaphore)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSemaphore(&validateResult, device, pCreateInfo, pAllocator, pSemaphore);
@@ -1074,8 +1055,8 @@ VkResult goldfish_frontend_vkCreateSemaphore(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSemaphore(vkStream, device, pCreateInfo, pAllocator, pSemaphore);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSemaphore(vkStream, device, pCreateInfo, pAllocator, pSemaphore);
return res;
}
@@ -1091,7 +1072,6 @@ void goldfish_frontend_vkDestroySemaphore(
VkDevice device,
VkSemaphore semaphore,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySemaphore(&validateResult, device, semaphore, pAllocator);
@@ -1100,8 +1080,8 @@ void goldfish_frontend_vkDestroySemaphore(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySemaphore(vkStream, device, semaphore, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySemaphore(vkStream, device, semaphore, pAllocator);
}
static void validate_vkCreateEvent(
@@ -1118,7 +1098,6 @@ VkResult goldfish_frontend_vkCreateEvent(
const VkEventCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkEvent* pEvent)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateEvent(&validateResult, device, pCreateInfo, pAllocator, pEvent);
@@ -1127,8 +1106,8 @@ VkResult goldfish_frontend_vkCreateEvent(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateEvent(vkStream, device, pCreateInfo, pAllocator, pEvent);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateEvent(vkStream, device, pCreateInfo, pAllocator, pEvent);
return res;
}
@@ -1144,7 +1123,6 @@ void goldfish_frontend_vkDestroyEvent(
VkDevice device,
VkEvent event,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyEvent(&validateResult, device, event, pAllocator);
@@ -1153,8 +1131,8 @@ void goldfish_frontend_vkDestroyEvent(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyEvent(vkStream, device, event, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyEvent(vkStream, device, event, pAllocator);
}
static void validate_vkGetEventStatus(
@@ -1167,7 +1145,6 @@ static void validate_vkGetEventStatus(
VkResult goldfish_frontend_vkGetEventStatus(
VkDevice device,
VkEvent event)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetEventStatus(&validateResult, device, event);
@@ -1176,8 +1153,8 @@ VkResult goldfish_frontend_vkGetEventStatus(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetEventStatus(vkStream, device, event);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetEventStatus(vkStream, device, event);
return res;
}
@@ -1191,7 +1168,6 @@ static void validate_vkSetEvent(
VkResult goldfish_frontend_vkSetEvent(
VkDevice device,
VkEvent event)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkSetEvent(&validateResult, device, event);
@@ -1200,8 +1176,8 @@ VkResult goldfish_frontend_vkSetEvent(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkSetEvent(vkStream, device, event);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkSetEvent(vkStream, device, event);
return res;
}
@@ -1215,7 +1191,6 @@ static void validate_vkResetEvent(
VkResult goldfish_frontend_vkResetEvent(
VkDevice device,
VkEvent event)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkResetEvent(&validateResult, device, event);
@@ -1224,8 +1199,8 @@ VkResult goldfish_frontend_vkResetEvent(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkResetEvent(vkStream, device, event);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkResetEvent(vkStream, device, event);
return res;
}
@@ -1243,7 +1218,6 @@ VkResult goldfish_frontend_vkCreateQueryPool(
const VkQueryPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkQueryPool* pQueryPool)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateQueryPool(&validateResult, device, pCreateInfo, pAllocator, pQueryPool);
@@ -1252,8 +1226,8 @@ VkResult goldfish_frontend_vkCreateQueryPool(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateQueryPool(vkStream, device, pCreateInfo, pAllocator, pQueryPool);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateQueryPool(vkStream, device, pCreateInfo, pAllocator, pQueryPool);
return res;
}
@@ -1269,7 +1243,6 @@ void goldfish_frontend_vkDestroyQueryPool(
VkDevice device,
VkQueryPool queryPool,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyQueryPool(&validateResult, device, queryPool, pAllocator);
@@ -1278,8 +1251,8 @@ void goldfish_frontend_vkDestroyQueryPool(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyQueryPool(vkStream, device, queryPool, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyQueryPool(vkStream, device, queryPool, pAllocator);
}
static void validate_vkGetQueryPoolResults(
@@ -1304,7 +1277,6 @@ VkResult goldfish_frontend_vkGetQueryPoolResults(
void* pData,
VkDeviceSize stride,
VkQueryResultFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetQueryPoolResults(&validateResult, device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
@@ -1313,8 +1285,8 @@ VkResult goldfish_frontend_vkGetQueryPoolResults(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetQueryPoolResults(vkStream, device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetQueryPoolResults(vkStream, device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
return res;
}
@@ -1332,7 +1304,6 @@ VkResult goldfish_frontend_vkCreateBuffer(
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBuffer* pBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateBuffer(&validateResult, device, pCreateInfo, pAllocator, pBuffer);
@@ -1341,8 +1312,8 @@ VkResult goldfish_frontend_vkCreateBuffer(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateBuffer(vkStream, device, pCreateInfo, pAllocator, pBuffer);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateBuffer(vkStream, device, pCreateInfo, pAllocator, pBuffer);
return res;
}
@@ -1358,7 +1329,6 @@ void goldfish_frontend_vkDestroyBuffer(
VkDevice device,
VkBuffer buffer,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyBuffer(&validateResult, device, buffer, pAllocator);
@@ -1367,8 +1337,8 @@ void goldfish_frontend_vkDestroyBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyBuffer(vkStream, device, buffer, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyBuffer(vkStream, device, buffer, pAllocator);
}
static void validate_vkCreateBufferView(
@@ -1385,7 +1355,6 @@ VkResult goldfish_frontend_vkCreateBufferView(
const VkBufferViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkBufferView* pView)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateBufferView(&validateResult, device, pCreateInfo, pAllocator, pView);
@@ -1394,8 +1363,8 @@ VkResult goldfish_frontend_vkCreateBufferView(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateBufferView(vkStream, device, pCreateInfo, pAllocator, pView);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateBufferView(vkStream, device, pCreateInfo, pAllocator, pView);
return res;
}
@@ -1411,7 +1380,6 @@ void goldfish_frontend_vkDestroyBufferView(
VkDevice device,
VkBufferView bufferView,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyBufferView(&validateResult, device, bufferView, pAllocator);
@@ -1420,8 +1388,8 @@ void goldfish_frontend_vkDestroyBufferView(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyBufferView(vkStream, device, bufferView, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyBufferView(vkStream, device, bufferView, pAllocator);
}
static void validate_vkCreateImage(
@@ -1438,7 +1406,6 @@ VkResult goldfish_frontend_vkCreateImage(
const VkImageCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkImage* pImage)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateImage(&validateResult, device, pCreateInfo, pAllocator, pImage);
@@ -1447,8 +1414,8 @@ VkResult goldfish_frontend_vkCreateImage(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateImage(vkStream, device, pCreateInfo, pAllocator, pImage);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateImage(vkStream, device, pCreateInfo, pAllocator, pImage);
return res;
}
@@ -1464,7 +1431,6 @@ void goldfish_frontend_vkDestroyImage(
VkDevice device,
VkImage image,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyImage(&validateResult, device, image, pAllocator);
@@ -1473,8 +1439,8 @@ void goldfish_frontend_vkDestroyImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyImage(vkStream, device, image, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyImage(vkStream, device, image, pAllocator);
}
static void validate_vkGetImageSubresourceLayout(
@@ -1491,7 +1457,6 @@ void goldfish_frontend_vkGetImageSubresourceLayout(
VkImage image,
const VkImageSubresource* pSubresource,
VkSubresourceLayout* pLayout)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageSubresourceLayout(&validateResult, device, image, pSubresource, pLayout);
@@ -1500,8 +1465,8 @@ void goldfish_frontend_vkGetImageSubresourceLayout(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageSubresourceLayout(vkStream, device, image, pSubresource, pLayout);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageSubresourceLayout(vkStream, device, image, pSubresource, pLayout);
}
static void validate_vkCreateImageView(
@@ -1518,7 +1483,6 @@ VkResult goldfish_frontend_vkCreateImageView(
const VkImageViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkImageView* pView)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateImageView(&validateResult, device, pCreateInfo, pAllocator, pView);
@@ -1527,8 +1491,8 @@ VkResult goldfish_frontend_vkCreateImageView(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateImageView(vkStream, device, pCreateInfo, pAllocator, pView);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateImageView(vkStream, device, pCreateInfo, pAllocator, pView);
return res;
}
@@ -1544,7 +1508,6 @@ void goldfish_frontend_vkDestroyImageView(
VkDevice device,
VkImageView imageView,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyImageView(&validateResult, device, imageView, pAllocator);
@@ -1553,8 +1516,8 @@ void goldfish_frontend_vkDestroyImageView(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyImageView(vkStream, device, imageView, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyImageView(vkStream, device, imageView, pAllocator);
}
static void validate_vkCreateShaderModule(
@@ -1571,7 +1534,6 @@ VkResult goldfish_frontend_vkCreateShaderModule(
const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkShaderModule* pShaderModule)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateShaderModule(&validateResult, device, pCreateInfo, pAllocator, pShaderModule);
@@ -1580,8 +1542,8 @@ VkResult goldfish_frontend_vkCreateShaderModule(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateShaderModule(vkStream, device, pCreateInfo, pAllocator, pShaderModule);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateShaderModule(vkStream, device, pCreateInfo, pAllocator, pShaderModule);
return res;
}
@@ -1597,7 +1559,6 @@ void goldfish_frontend_vkDestroyShaderModule(
VkDevice device,
VkShaderModule shaderModule,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyShaderModule(&validateResult, device, shaderModule, pAllocator);
@@ -1606,8 +1567,8 @@ void goldfish_frontend_vkDestroyShaderModule(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyShaderModule(vkStream, device, shaderModule, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyShaderModule(vkStream, device, shaderModule, pAllocator);
}
static void validate_vkCreatePipelineCache(
@@ -1624,7 +1585,6 @@ VkResult goldfish_frontend_vkCreatePipelineCache(
const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPipelineCache* pPipelineCache)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreatePipelineCache(&validateResult, device, pCreateInfo, pAllocator, pPipelineCache);
@@ -1633,8 +1593,8 @@ VkResult goldfish_frontend_vkCreatePipelineCache(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreatePipelineCache(vkStream, device, pCreateInfo, pAllocator, pPipelineCache);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreatePipelineCache(vkStream, device, pCreateInfo, pAllocator, pPipelineCache);
return res;
}
@@ -1650,7 +1610,6 @@ void goldfish_frontend_vkDestroyPipelineCache(
VkDevice device,
VkPipelineCache pipelineCache,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyPipelineCache(&validateResult, device, pipelineCache, pAllocator);
@@ -1659,8 +1618,8 @@ void goldfish_frontend_vkDestroyPipelineCache(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyPipelineCache(vkStream, device, pipelineCache, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyPipelineCache(vkStream, device, pipelineCache, pAllocator);
}
static void validate_vkGetPipelineCacheData(
@@ -1677,7 +1636,6 @@ VkResult goldfish_frontend_vkGetPipelineCacheData(
VkPipelineCache pipelineCache,
size_t* pDataSize,
void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPipelineCacheData(&validateResult, device, pipelineCache, pDataSize, pData);
@@ -1686,8 +1644,8 @@ VkResult goldfish_frontend_vkGetPipelineCacheData(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPipelineCacheData(vkStream, device, pipelineCache, pDataSize, pData);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPipelineCacheData(vkStream, device, pipelineCache, pDataSize, pData);
return res;
}
@@ -1705,7 +1663,6 @@ VkResult goldfish_frontend_vkMergePipelineCaches(
VkPipelineCache dstCache,
uint32_t srcCacheCount,
const VkPipelineCache* pSrcCaches)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkMergePipelineCaches(&validateResult, device, dstCache, srcCacheCount, pSrcCaches);
@@ -1714,8 +1671,8 @@ VkResult goldfish_frontend_vkMergePipelineCaches(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkMergePipelineCaches(vkStream, device, dstCache, srcCacheCount, pSrcCaches);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkMergePipelineCaches(vkStream, device, dstCache, srcCacheCount, pSrcCaches);
return res;
}
@@ -1737,7 +1694,6 @@ VkResult goldfish_frontend_vkCreateGraphicsPipelines(
const VkGraphicsPipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
VkPipeline* pPipelines)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateGraphicsPipelines(&validateResult, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
@@ -1746,8 +1702,8 @@ VkResult goldfish_frontend_vkCreateGraphicsPipelines(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateGraphicsPipelines(vkStream, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateGraphicsPipelines(vkStream, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
return res;
}
@@ -1769,7 +1725,6 @@ VkResult goldfish_frontend_vkCreateComputePipelines(
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
VkPipeline* pPipelines)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateComputePipelines(&validateResult, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
@@ -1778,8 +1733,8 @@ VkResult goldfish_frontend_vkCreateComputePipelines(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateComputePipelines(vkStream, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateComputePipelines(vkStream, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
return res;
}
@@ -1795,7 +1750,6 @@ void goldfish_frontend_vkDestroyPipeline(
VkDevice device,
VkPipeline pipeline,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyPipeline(&validateResult, device, pipeline, pAllocator);
@@ -1804,8 +1758,8 @@ void goldfish_frontend_vkDestroyPipeline(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyPipeline(vkStream, device, pipeline, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyPipeline(vkStream, device, pipeline, pAllocator);
}
static void validate_vkCreatePipelineLayout(
@@ -1822,7 +1776,6 @@ VkResult goldfish_frontend_vkCreatePipelineLayout(
const VkPipelineLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkPipelineLayout* pPipelineLayout)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreatePipelineLayout(&validateResult, device, pCreateInfo, pAllocator, pPipelineLayout);
@@ -1831,8 +1784,8 @@ VkResult goldfish_frontend_vkCreatePipelineLayout(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreatePipelineLayout(vkStream, device, pCreateInfo, pAllocator, pPipelineLayout);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreatePipelineLayout(vkStream, device, pCreateInfo, pAllocator, pPipelineLayout);
return res;
}
@@ -1848,7 +1801,6 @@ void goldfish_frontend_vkDestroyPipelineLayout(
VkDevice device,
VkPipelineLayout pipelineLayout,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyPipelineLayout(&validateResult, device, pipelineLayout, pAllocator);
@@ -1857,8 +1809,8 @@ void goldfish_frontend_vkDestroyPipelineLayout(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyPipelineLayout(vkStream, device, pipelineLayout, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyPipelineLayout(vkStream, device, pipelineLayout, pAllocator);
}
static void validate_vkCreateSampler(
@@ -1875,7 +1827,6 @@ VkResult goldfish_frontend_vkCreateSampler(
const VkSamplerCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSampler* pSampler)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSampler(&validateResult, device, pCreateInfo, pAllocator, pSampler);
@@ -1884,8 +1835,8 @@ VkResult goldfish_frontend_vkCreateSampler(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSampler(vkStream, device, pCreateInfo, pAllocator, pSampler);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSampler(vkStream, device, pCreateInfo, pAllocator, pSampler);
return res;
}
@@ -1901,7 +1852,6 @@ void goldfish_frontend_vkDestroySampler(
VkDevice device,
VkSampler sampler,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySampler(&validateResult, device, sampler, pAllocator);
@@ -1910,8 +1860,8 @@ void goldfish_frontend_vkDestroySampler(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySampler(vkStream, device, sampler, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySampler(vkStream, device, sampler, pAllocator);
}
static void validate_vkCreateDescriptorSetLayout(
@@ -1928,7 +1878,6 @@ VkResult goldfish_frontend_vkCreateDescriptorSetLayout(
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorSetLayout* pSetLayout)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDescriptorSetLayout(&validateResult, device, pCreateInfo, pAllocator, pSetLayout);
@@ -1937,8 +1886,8 @@ VkResult goldfish_frontend_vkCreateDescriptorSetLayout(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDescriptorSetLayout(vkStream, device, pCreateInfo, pAllocator, pSetLayout);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDescriptorSetLayout(vkStream, device, pCreateInfo, pAllocator, pSetLayout);
return res;
}
@@ -1954,7 +1903,6 @@ void goldfish_frontend_vkDestroyDescriptorSetLayout(
VkDevice device,
VkDescriptorSetLayout descriptorSetLayout,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDescriptorSetLayout(&validateResult, device, descriptorSetLayout, pAllocator);
@@ -1963,8 +1911,8 @@ void goldfish_frontend_vkDestroyDescriptorSetLayout(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDescriptorSetLayout(vkStream, device, descriptorSetLayout, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDescriptorSetLayout(vkStream, device, descriptorSetLayout, pAllocator);
}
static void validate_vkCreateDescriptorPool(
@@ -1981,7 +1929,6 @@ VkResult goldfish_frontend_vkCreateDescriptorPool(
const VkDescriptorPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorPool* pDescriptorPool)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDescriptorPool(&validateResult, device, pCreateInfo, pAllocator, pDescriptorPool);
@@ -1990,8 +1937,8 @@ VkResult goldfish_frontend_vkCreateDescriptorPool(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDescriptorPool(vkStream, device, pCreateInfo, pAllocator, pDescriptorPool);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDescriptorPool(vkStream, device, pCreateInfo, pAllocator, pDescriptorPool);
return res;
}
@@ -2007,7 +1954,6 @@ void goldfish_frontend_vkDestroyDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDescriptorPool(&validateResult, device, descriptorPool, pAllocator);
@@ -2016,8 +1962,8 @@ void goldfish_frontend_vkDestroyDescriptorPool(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDescriptorPool(vkStream, device, descriptorPool, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDescriptorPool(vkStream, device, descriptorPool, pAllocator);
}
static void validate_vkResetDescriptorPool(
@@ -2032,7 +1978,6 @@ VkResult goldfish_frontend_vkResetDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
VkDescriptorPoolResetFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkResetDescriptorPool(&validateResult, device, descriptorPool, flags);
@@ -2041,8 +1986,8 @@ VkResult goldfish_frontend_vkResetDescriptorPool(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkResetDescriptorPool(vkStream, device, descriptorPool, flags);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkResetDescriptorPool(vkStream, device, descriptorPool, flags);
return res;
}
@@ -2058,7 +2003,6 @@ VkResult goldfish_frontend_vkAllocateDescriptorSets(
VkDevice device,
const VkDescriptorSetAllocateInfo* pAllocateInfo,
VkDescriptorSet* pDescriptorSets)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAllocateDescriptorSets(&validateResult, device, pAllocateInfo, pDescriptorSets);
@@ -2067,8 +2011,8 @@ VkResult goldfish_frontend_vkAllocateDescriptorSets(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAllocateDescriptorSets(vkStream, device, pAllocateInfo, pDescriptorSets);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAllocateDescriptorSets(vkStream, device, pAllocateInfo, pDescriptorSets);
return res;
}
@@ -2086,7 +2030,6 @@ VkResult goldfish_frontend_vkFreeDescriptorSets(
VkDescriptorPool descriptorPool,
uint32_t descriptorSetCount,
const VkDescriptorSet* pDescriptorSets)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkFreeDescriptorSets(&validateResult, device, descriptorPool, descriptorSetCount, pDescriptorSets);
@@ -2095,8 +2038,8 @@ VkResult goldfish_frontend_vkFreeDescriptorSets(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkFreeDescriptorSets(vkStream, device, descriptorPool, descriptorSetCount, pDescriptorSets);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkFreeDescriptorSets(vkStream, device, descriptorPool, descriptorSetCount, pDescriptorSets);
return res;
}
@@ -2116,7 +2059,6 @@ void goldfish_frontend_vkUpdateDescriptorSets(
const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount,
const VkCopyDescriptorSet* pDescriptorCopies)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkUpdateDescriptorSets(&validateResult, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
@@ -2125,8 +2067,8 @@ void goldfish_frontend_vkUpdateDescriptorSets(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkUpdateDescriptorSets(vkStream, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkUpdateDescriptorSets(vkStream, device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
}
static void validate_vkCreateFramebuffer(
@@ -2143,7 +2085,6 @@ VkResult goldfish_frontend_vkCreateFramebuffer(
const VkFramebufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkFramebuffer* pFramebuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateFramebuffer(&validateResult, device, pCreateInfo, pAllocator, pFramebuffer);
@@ -2152,8 +2093,8 @@ VkResult goldfish_frontend_vkCreateFramebuffer(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateFramebuffer(vkStream, device, pCreateInfo, pAllocator, pFramebuffer);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateFramebuffer(vkStream, device, pCreateInfo, pAllocator, pFramebuffer);
return res;
}
@@ -2169,7 +2110,6 @@ void goldfish_frontend_vkDestroyFramebuffer(
VkDevice device,
VkFramebuffer framebuffer,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyFramebuffer(&validateResult, device, framebuffer, pAllocator);
@@ -2178,8 +2118,8 @@ void goldfish_frontend_vkDestroyFramebuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyFramebuffer(vkStream, device, framebuffer, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyFramebuffer(vkStream, device, framebuffer, pAllocator);
}
static void validate_vkCreateRenderPass(
@@ -2196,7 +2136,6 @@ VkResult goldfish_frontend_vkCreateRenderPass(
const VkRenderPassCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateRenderPass(&validateResult, device, pCreateInfo, pAllocator, pRenderPass);
@@ -2205,8 +2144,8 @@ VkResult goldfish_frontend_vkCreateRenderPass(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateRenderPass(vkStream, device, pCreateInfo, pAllocator, pRenderPass);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateRenderPass(vkStream, device, pCreateInfo, pAllocator, pRenderPass);
return res;
}
@@ -2222,7 +2161,6 @@ void goldfish_frontend_vkDestroyRenderPass(
VkDevice device,
VkRenderPass renderPass,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyRenderPass(&validateResult, device, renderPass, pAllocator);
@@ -2231,8 +2169,8 @@ void goldfish_frontend_vkDestroyRenderPass(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyRenderPass(vkStream, device, renderPass, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyRenderPass(vkStream, device, renderPass, pAllocator);
}
static void validate_vkGetRenderAreaGranularity(
@@ -2247,7 +2185,6 @@ void goldfish_frontend_vkGetRenderAreaGranularity(
VkDevice device,
VkRenderPass renderPass,
VkExtent2D* pGranularity)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetRenderAreaGranularity(&validateResult, device, renderPass, pGranularity);
@@ -2256,8 +2193,8 @@ void goldfish_frontend_vkGetRenderAreaGranularity(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetRenderAreaGranularity(vkStream, device, renderPass, pGranularity);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetRenderAreaGranularity(vkStream, device, renderPass, pGranularity);
}
static void validate_vkCreateCommandPool(
@@ -2274,7 +2211,6 @@ VkResult goldfish_frontend_vkCreateCommandPool(
const VkCommandPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkCommandPool* pCommandPool)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateCommandPool(&validateResult, device, pCreateInfo, pAllocator, pCommandPool);
@@ -2283,8 +2219,8 @@ VkResult goldfish_frontend_vkCreateCommandPool(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateCommandPool(vkStream, device, pCreateInfo, pAllocator, pCommandPool);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateCommandPool(vkStream, device, pCreateInfo, pAllocator, pCommandPool);
return res;
}
@@ -2300,7 +2236,6 @@ void goldfish_frontend_vkDestroyCommandPool(
VkDevice device,
VkCommandPool commandPool,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyCommandPool(&validateResult, device, commandPool, pAllocator);
@@ -2309,8 +2244,8 @@ void goldfish_frontend_vkDestroyCommandPool(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyCommandPool(vkStream, device, commandPool, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyCommandPool(vkStream, device, commandPool, pAllocator);
}
static void validate_vkResetCommandPool(
@@ -2325,7 +2260,6 @@ VkResult goldfish_frontend_vkResetCommandPool(
VkDevice device,
VkCommandPool commandPool,
VkCommandPoolResetFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkResetCommandPool(&validateResult, device, commandPool, flags);
@@ -2334,8 +2268,8 @@ VkResult goldfish_frontend_vkResetCommandPool(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkResetCommandPool(vkStream, device, commandPool, flags);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkResetCommandPool(vkStream, device, commandPool, flags);
return res;
}
@@ -2351,7 +2285,6 @@ VkResult goldfish_frontend_vkAllocateCommandBuffers(
VkDevice device,
const VkCommandBufferAllocateInfo* pAllocateInfo,
VkCommandBuffer* pCommandBuffers)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAllocateCommandBuffers(&validateResult, device, pAllocateInfo, pCommandBuffers);
@@ -2360,8 +2293,8 @@ VkResult goldfish_frontend_vkAllocateCommandBuffers(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAllocateCommandBuffers(vkStream, device, pAllocateInfo, pCommandBuffers);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAllocateCommandBuffers(vkStream, device, pAllocateInfo, pCommandBuffers);
return res;
}
@@ -2379,7 +2312,6 @@ void goldfish_frontend_vkFreeCommandBuffers(
VkCommandPool commandPool,
uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkFreeCommandBuffers(&validateResult, device, commandPool, commandBufferCount, pCommandBuffers);
@@ -2388,8 +2320,8 @@ void goldfish_frontend_vkFreeCommandBuffers(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkFreeCommandBuffers(vkStream, device, commandPool, commandBufferCount, pCommandBuffers);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkFreeCommandBuffers(vkStream, device, commandPool, commandBufferCount, pCommandBuffers);
}
static void validate_vkBeginCommandBuffer(
@@ -2402,7 +2334,6 @@ static void validate_vkBeginCommandBuffer(
VkResult goldfish_frontend_vkBeginCommandBuffer(
VkCommandBuffer commandBuffer,
const VkCommandBufferBeginInfo* pBeginInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBeginCommandBuffer(&validateResult, commandBuffer, pBeginInfo);
@@ -2411,8 +2342,8 @@ VkResult goldfish_frontend_vkBeginCommandBuffer(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBeginCommandBuffer(vkStream, commandBuffer, pBeginInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBeginCommandBuffer(vkStream, commandBuffer, pBeginInfo);
return res;
}
@@ -2424,7 +2355,6 @@ static void validate_vkEndCommandBuffer(
VkResult goldfish_frontend_vkEndCommandBuffer(
VkCommandBuffer commandBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEndCommandBuffer(&validateResult, commandBuffer);
@@ -2433,8 +2363,8 @@ VkResult goldfish_frontend_vkEndCommandBuffer(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEndCommandBuffer(vkStream, commandBuffer);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEndCommandBuffer(vkStream, commandBuffer);
return res;
}
@@ -2448,7 +2378,6 @@ static void validate_vkResetCommandBuffer(
VkResult goldfish_frontend_vkResetCommandBuffer(
VkCommandBuffer commandBuffer,
VkCommandBufferResetFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkResetCommandBuffer(&validateResult, commandBuffer, flags);
@@ -2457,8 +2386,8 @@ VkResult goldfish_frontend_vkResetCommandBuffer(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkResetCommandBuffer(vkStream, commandBuffer, flags);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkResetCommandBuffer(vkStream, commandBuffer, flags);
return res;
}
@@ -2474,7 +2403,6 @@ void goldfish_frontend_vkCmdBindPipeline(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipeline pipeline)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBindPipeline(&validateResult, commandBuffer, pipelineBindPoint, pipeline);
@@ -2483,8 +2411,8 @@ void goldfish_frontend_vkCmdBindPipeline(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBindPipeline(vkStream, commandBuffer, pipelineBindPoint, pipeline);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBindPipeline(vkStream, commandBuffer, pipelineBindPoint, pipeline);
}
static void validate_vkCmdSetViewport(
@@ -2501,7 +2429,6 @@ void goldfish_frontend_vkCmdSetViewport(
uint32_t firstViewport,
uint32_t viewportCount,
const VkViewport* pViewports)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetViewport(&validateResult, commandBuffer, firstViewport, viewportCount, pViewports);
@@ -2510,8 +2437,8 @@ void goldfish_frontend_vkCmdSetViewport(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetViewport(vkStream, commandBuffer, firstViewport, viewportCount, pViewports);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetViewport(vkStream, commandBuffer, firstViewport, viewportCount, pViewports);
}
static void validate_vkCmdSetScissor(
@@ -2528,7 +2455,6 @@ void goldfish_frontend_vkCmdSetScissor(
uint32_t firstScissor,
uint32_t scissorCount,
const VkRect2D* pScissors)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetScissor(&validateResult, commandBuffer, firstScissor, scissorCount, pScissors);
@@ -2537,8 +2463,8 @@ void goldfish_frontend_vkCmdSetScissor(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetScissor(vkStream, commandBuffer, firstScissor, scissorCount, pScissors);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetScissor(vkStream, commandBuffer, firstScissor, scissorCount, pScissors);
}
static void validate_vkCmdSetLineWidth(
@@ -2551,7 +2477,6 @@ static void validate_vkCmdSetLineWidth(
void goldfish_frontend_vkCmdSetLineWidth(
VkCommandBuffer commandBuffer,
float lineWidth)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetLineWidth(&validateResult, commandBuffer, lineWidth);
@@ -2560,8 +2485,8 @@ void goldfish_frontend_vkCmdSetLineWidth(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetLineWidth(vkStream, commandBuffer, lineWidth);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetLineWidth(vkStream, commandBuffer, lineWidth);
}
static void validate_vkCmdSetDepthBias(
@@ -2578,7 +2503,6 @@ void goldfish_frontend_vkCmdSetDepthBias(
float depthBiasConstantFactor,
float depthBiasClamp,
float depthBiasSlopeFactor)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetDepthBias(&validateResult, commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
@@ -2587,21 +2511,20 @@ void goldfish_frontend_vkCmdSetDepthBias(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetDepthBias(vkStream, commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetDepthBias(vkStream, commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
}
static void validate_vkCmdSetBlendConstants(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
- const float blendConstants[4])
+ const float blendConstants)
{
}
void goldfish_frontend_vkCmdSetBlendConstants(
VkCommandBuffer commandBuffer,
- const float blendConstants[4])
-
+ const float blendConstants)
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetBlendConstants(&validateResult, commandBuffer, blendConstants);
@@ -2610,8 +2533,8 @@ void goldfish_frontend_vkCmdSetBlendConstants(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetBlendConstants(vkStream, commandBuffer, blendConstants);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetBlendConstants(vkStream, commandBuffer, blendConstants);
}
static void validate_vkCmdSetDepthBounds(
@@ -2626,7 +2549,6 @@ void goldfish_frontend_vkCmdSetDepthBounds(
VkCommandBuffer commandBuffer,
float minDepthBounds,
float maxDepthBounds)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetDepthBounds(&validateResult, commandBuffer, minDepthBounds, maxDepthBounds);
@@ -2635,8 +2557,8 @@ void goldfish_frontend_vkCmdSetDepthBounds(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetDepthBounds(vkStream, commandBuffer, minDepthBounds, maxDepthBounds);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetDepthBounds(vkStream, commandBuffer, minDepthBounds, maxDepthBounds);
}
static void validate_vkCmdSetStencilCompareMask(
@@ -2651,7 +2573,6 @@ void goldfish_frontend_vkCmdSetStencilCompareMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t compareMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetStencilCompareMask(&validateResult, commandBuffer, faceMask, compareMask);
@@ -2660,8 +2581,8 @@ void goldfish_frontend_vkCmdSetStencilCompareMask(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetStencilCompareMask(vkStream, commandBuffer, faceMask, compareMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetStencilCompareMask(vkStream, commandBuffer, faceMask, compareMask);
}
static void validate_vkCmdSetStencilWriteMask(
@@ -2676,7 +2597,6 @@ void goldfish_frontend_vkCmdSetStencilWriteMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t writeMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetStencilWriteMask(&validateResult, commandBuffer, faceMask, writeMask);
@@ -2685,8 +2605,8 @@ void goldfish_frontend_vkCmdSetStencilWriteMask(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetStencilWriteMask(vkStream, commandBuffer, faceMask, writeMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetStencilWriteMask(vkStream, commandBuffer, faceMask, writeMask);
}
static void validate_vkCmdSetStencilReference(
@@ -2701,7 +2621,6 @@ void goldfish_frontend_vkCmdSetStencilReference(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
uint32_t reference)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetStencilReference(&validateResult, commandBuffer, faceMask, reference);
@@ -2710,8 +2629,8 @@ void goldfish_frontend_vkCmdSetStencilReference(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetStencilReference(vkStream, commandBuffer, faceMask, reference);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetStencilReference(vkStream, commandBuffer, faceMask, reference);
}
static void validate_vkCmdBindDescriptorSets(
@@ -2736,7 +2655,6 @@ void goldfish_frontend_vkCmdBindDescriptorSets(
const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount,
const uint32_t* pDynamicOffsets)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBindDescriptorSets(&validateResult, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
@@ -2745,8 +2663,8 @@ void goldfish_frontend_vkCmdBindDescriptorSets(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBindDescriptorSets(vkStream, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBindDescriptorSets(vkStream, commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
}
static void validate_vkCmdBindIndexBuffer(
@@ -2763,7 +2681,6 @@ void goldfish_frontend_vkCmdBindIndexBuffer(
VkBuffer buffer,
VkDeviceSize offset,
VkIndexType indexType)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBindIndexBuffer(&validateResult, commandBuffer, buffer, offset, indexType);
@@ -2772,8 +2689,8 @@ void goldfish_frontend_vkCmdBindIndexBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBindIndexBuffer(vkStream, commandBuffer, buffer, offset, indexType);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBindIndexBuffer(vkStream, commandBuffer, buffer, offset, indexType);
}
static void validate_vkCmdBindVertexBuffers(
@@ -2792,7 +2709,6 @@ void goldfish_frontend_vkCmdBindVertexBuffers(
uint32_t bindingCount,
const VkBuffer* pBuffers,
const VkDeviceSize* pOffsets)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBindVertexBuffers(&validateResult, commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
@@ -2801,8 +2717,8 @@ void goldfish_frontend_vkCmdBindVertexBuffers(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBindVertexBuffers(vkStream, commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBindVertexBuffers(vkStream, commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
}
static void validate_vkCmdDraw(
@@ -2821,7 +2737,6 @@ void goldfish_frontend_vkCmdDraw(
uint32_t instanceCount,
uint32_t firstVertex,
uint32_t firstInstance)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDraw(&validateResult, commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
@@ -2830,8 +2745,8 @@ void goldfish_frontend_vkCmdDraw(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDraw(vkStream, commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDraw(vkStream, commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
}
static void validate_vkCmdDrawIndexed(
@@ -2852,7 +2767,6 @@ void goldfish_frontend_vkCmdDrawIndexed(
uint32_t firstIndex,
int32_t vertexOffset,
uint32_t firstInstance)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndexed(&validateResult, commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
@@ -2861,8 +2775,8 @@ void goldfish_frontend_vkCmdDrawIndexed(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndexed(vkStream, commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndexed(vkStream, commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
}
static void validate_vkCmdDrawIndirect(
@@ -2881,7 +2795,6 @@ void goldfish_frontend_vkCmdDrawIndirect(
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndirect(&validateResult, commandBuffer, buffer, offset, drawCount, stride);
@@ -2890,8 +2803,8 @@ void goldfish_frontend_vkCmdDrawIndirect(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndirect(vkStream, commandBuffer, buffer, offset, drawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndirect(vkStream, commandBuffer, buffer, offset, drawCount, stride);
}
static void validate_vkCmdDrawIndexedIndirect(
@@ -2910,7 +2823,6 @@ void goldfish_frontend_vkCmdDrawIndexedIndirect(
VkDeviceSize offset,
uint32_t drawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndexedIndirect(&validateResult, commandBuffer, buffer, offset, drawCount, stride);
@@ -2919,8 +2831,8 @@ void goldfish_frontend_vkCmdDrawIndexedIndirect(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndexedIndirect(vkStream, commandBuffer, buffer, offset, drawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndexedIndirect(vkStream, commandBuffer, buffer, offset, drawCount, stride);
}
static void validate_vkCmdDispatch(
@@ -2937,7 +2849,6 @@ void goldfish_frontend_vkCmdDispatch(
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDispatch(&validateResult, commandBuffer, groupCountX, groupCountY, groupCountZ);
@@ -2946,8 +2857,8 @@ void goldfish_frontend_vkCmdDispatch(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDispatch(vkStream, commandBuffer, groupCountX, groupCountY, groupCountZ);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDispatch(vkStream, commandBuffer, groupCountX, groupCountY, groupCountZ);
}
static void validate_vkCmdDispatchIndirect(
@@ -2962,7 +2873,6 @@ void goldfish_frontend_vkCmdDispatchIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDispatchIndirect(&validateResult, commandBuffer, buffer, offset);
@@ -2971,8 +2881,8 @@ void goldfish_frontend_vkCmdDispatchIndirect(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDispatchIndirect(vkStream, commandBuffer, buffer, offset);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDispatchIndirect(vkStream, commandBuffer, buffer, offset);
}
static void validate_vkCmdCopyBuffer(
@@ -2991,7 +2901,6 @@ void goldfish_frontend_vkCmdCopyBuffer(
VkBuffer dstBuffer,
uint32_t regionCount,
const VkBufferCopy* pRegions)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdCopyBuffer(&validateResult, commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
@@ -3000,8 +2909,8 @@ void goldfish_frontend_vkCmdCopyBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdCopyBuffer(vkStream, commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdCopyBuffer(vkStream, commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
}
static void validate_vkCmdCopyImage(
@@ -3024,7 +2933,6 @@ void goldfish_frontend_vkCmdCopyImage(
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageCopy* pRegions)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdCopyImage(&validateResult, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
@@ -3033,8 +2941,8 @@ void goldfish_frontend_vkCmdCopyImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdCopyImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdCopyImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
}
static void validate_vkCmdBlitImage(
@@ -3059,7 +2967,6 @@ void goldfish_frontend_vkCmdBlitImage(
uint32_t regionCount,
const VkImageBlit* pRegions,
VkFilter filter)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBlitImage(&validateResult, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
@@ -3068,8 +2975,8 @@ void goldfish_frontend_vkCmdBlitImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBlitImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBlitImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
}
static void validate_vkCmdCopyBufferToImage(
@@ -3090,7 +2997,6 @@ void goldfish_frontend_vkCmdCopyBufferToImage(
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkBufferImageCopy* pRegions)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdCopyBufferToImage(&validateResult, commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
@@ -3099,8 +3005,8 @@ void goldfish_frontend_vkCmdCopyBufferToImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdCopyBufferToImage(vkStream, commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdCopyBufferToImage(vkStream, commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
}
static void validate_vkCmdCopyImageToBuffer(
@@ -3121,7 +3027,6 @@ void goldfish_frontend_vkCmdCopyImageToBuffer(
VkBuffer dstBuffer,
uint32_t regionCount,
const VkBufferImageCopy* pRegions)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdCopyImageToBuffer(&validateResult, commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
@@ -3130,8 +3035,8 @@ void goldfish_frontend_vkCmdCopyImageToBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdCopyImageToBuffer(vkStream, commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdCopyImageToBuffer(vkStream, commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
}
static void validate_vkCmdUpdateBuffer(
@@ -3150,7 +3055,6 @@ void goldfish_frontend_vkCmdUpdateBuffer(
VkDeviceSize dstOffset,
VkDeviceSize dataSize,
const void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdUpdateBuffer(&validateResult, commandBuffer, dstBuffer, dstOffset, dataSize, pData);
@@ -3159,8 +3063,8 @@ void goldfish_frontend_vkCmdUpdateBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdUpdateBuffer(vkStream, commandBuffer, dstBuffer, dstOffset, dataSize, pData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdUpdateBuffer(vkStream, commandBuffer, dstBuffer, dstOffset, dataSize, pData);
}
static void validate_vkCmdFillBuffer(
@@ -3179,7 +3083,6 @@ void goldfish_frontend_vkCmdFillBuffer(
VkDeviceSize dstOffset,
VkDeviceSize size,
uint32_t data)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdFillBuffer(&validateResult, commandBuffer, dstBuffer, dstOffset, size, data);
@@ -3188,8 +3091,8 @@ void goldfish_frontend_vkCmdFillBuffer(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdFillBuffer(vkStream, commandBuffer, dstBuffer, dstOffset, size, data);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdFillBuffer(vkStream, commandBuffer, dstBuffer, dstOffset, size, data);
}
static void validate_vkCmdClearColorImage(
@@ -3210,7 +3113,6 @@ void goldfish_frontend_vkCmdClearColorImage(
const VkClearColorValue* pColor,
uint32_t rangeCount,
const VkImageSubresourceRange* pRanges)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdClearColorImage(&validateResult, commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
@@ -3219,8 +3121,8 @@ void goldfish_frontend_vkCmdClearColorImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdClearColorImage(vkStream, commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdClearColorImage(vkStream, commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
}
static void validate_vkCmdClearDepthStencilImage(
@@ -3241,7 +3143,6 @@ void goldfish_frontend_vkCmdClearDepthStencilImage(
const VkClearDepthStencilValue* pDepthStencil,
uint32_t rangeCount,
const VkImageSubresourceRange* pRanges)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdClearDepthStencilImage(&validateResult, commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
@@ -3250,8 +3151,8 @@ void goldfish_frontend_vkCmdClearDepthStencilImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdClearDepthStencilImage(vkStream, commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdClearDepthStencilImage(vkStream, commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
}
static void validate_vkCmdClearAttachments(
@@ -3270,7 +3171,6 @@ void goldfish_frontend_vkCmdClearAttachments(
const VkClearAttachment* pAttachments,
uint32_t rectCount,
const VkClearRect* pRects)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdClearAttachments(&validateResult, commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
@@ -3279,8 +3179,8 @@ void goldfish_frontend_vkCmdClearAttachments(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdClearAttachments(vkStream, commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdClearAttachments(vkStream, commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
}
static void validate_vkCmdResolveImage(
@@ -3303,7 +3203,6 @@ void goldfish_frontend_vkCmdResolveImage(
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageResolve* pRegions)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdResolveImage(&validateResult, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
@@ -3312,8 +3211,8 @@ void goldfish_frontend_vkCmdResolveImage(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdResolveImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdResolveImage(vkStream, commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
}
static void validate_vkCmdSetEvent(
@@ -3328,7 +3227,6 @@ void goldfish_frontend_vkCmdSetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
VkPipelineStageFlags stageMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetEvent(&validateResult, commandBuffer, event, stageMask);
@@ -3337,8 +3235,8 @@ void goldfish_frontend_vkCmdSetEvent(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetEvent(vkStream, commandBuffer, event, stageMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetEvent(vkStream, commandBuffer, event, stageMask);
}
static void validate_vkCmdResetEvent(
@@ -3353,7 +3251,6 @@ void goldfish_frontend_vkCmdResetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
VkPipelineStageFlags stageMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdResetEvent(&validateResult, commandBuffer, event, stageMask);
@@ -3362,8 +3259,8 @@ void goldfish_frontend_vkCmdResetEvent(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdResetEvent(vkStream, commandBuffer, event, stageMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdResetEvent(vkStream, commandBuffer, event, stageMask);
}
static void validate_vkCmdWaitEvents(
@@ -3394,7 +3291,6 @@ void goldfish_frontend_vkCmdWaitEvents(
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier* pImageMemoryBarriers)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdWaitEvents(&validateResult, commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
@@ -3403,8 +3299,8 @@ void goldfish_frontend_vkCmdWaitEvents(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdWaitEvents(vkStream, commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdWaitEvents(vkStream, commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
}
static void validate_vkCmdPipelineBarrier(
@@ -3433,7 +3329,6 @@ void goldfish_frontend_vkCmdPipelineBarrier(
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
const VkImageMemoryBarrier* pImageMemoryBarriers)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdPipelineBarrier(&validateResult, commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
@@ -3442,8 +3337,8 @@ void goldfish_frontend_vkCmdPipelineBarrier(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdPipelineBarrier(vkStream, commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdPipelineBarrier(vkStream, commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
}
static void validate_vkCmdBeginQuery(
@@ -3460,7 +3355,6 @@ void goldfish_frontend_vkCmdBeginQuery(
VkQueryPool queryPool,
uint32_t query,
VkQueryControlFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBeginQuery(&validateResult, commandBuffer, queryPool, query, flags);
@@ -3469,8 +3363,8 @@ void goldfish_frontend_vkCmdBeginQuery(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBeginQuery(vkStream, commandBuffer, queryPool, query, flags);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBeginQuery(vkStream, commandBuffer, queryPool, query, flags);
}
static void validate_vkCmdEndQuery(
@@ -3485,7 +3379,6 @@ void goldfish_frontend_vkCmdEndQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdEndQuery(&validateResult, commandBuffer, queryPool, query);
@@ -3494,8 +3387,8 @@ void goldfish_frontend_vkCmdEndQuery(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdEndQuery(vkStream, commandBuffer, queryPool, query);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdEndQuery(vkStream, commandBuffer, queryPool, query);
}
static void validate_vkCmdResetQueryPool(
@@ -3512,7 +3405,6 @@ void goldfish_frontend_vkCmdResetQueryPool(
VkQueryPool queryPool,
uint32_t firstQuery,
uint32_t queryCount)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdResetQueryPool(&validateResult, commandBuffer, queryPool, firstQuery, queryCount);
@@ -3521,8 +3413,8 @@ void goldfish_frontend_vkCmdResetQueryPool(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdResetQueryPool(vkStream, commandBuffer, queryPool, firstQuery, queryCount);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdResetQueryPool(vkStream, commandBuffer, queryPool, firstQuery, queryCount);
}
static void validate_vkCmdWriteTimestamp(
@@ -3539,7 +3431,6 @@ void goldfish_frontend_vkCmdWriteTimestamp(
VkPipelineStageFlagBits pipelineStage,
VkQueryPool queryPool,
uint32_t query)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdWriteTimestamp(&validateResult, commandBuffer, pipelineStage, queryPool, query);
@@ -3548,8 +3439,8 @@ void goldfish_frontend_vkCmdWriteTimestamp(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdWriteTimestamp(vkStream, commandBuffer, pipelineStage, queryPool, query);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdWriteTimestamp(vkStream, commandBuffer, pipelineStage, queryPool, query);
}
static void validate_vkCmdCopyQueryPoolResults(
@@ -3574,7 +3465,6 @@ void goldfish_frontend_vkCmdCopyQueryPoolResults(
VkDeviceSize dstOffset,
VkDeviceSize stride,
VkQueryResultFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdCopyQueryPoolResults(&validateResult, commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
@@ -3583,8 +3473,8 @@ void goldfish_frontend_vkCmdCopyQueryPoolResults(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdCopyQueryPoolResults(vkStream, commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdCopyQueryPoolResults(vkStream, commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
}
static void validate_vkCmdPushConstants(
@@ -3605,7 +3495,6 @@ void goldfish_frontend_vkCmdPushConstants(
uint32_t offset,
uint32_t size,
const void* pValues)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdPushConstants(&validateResult, commandBuffer, layout, stageFlags, offset, size, pValues);
@@ -3614,8 +3503,8 @@ void goldfish_frontend_vkCmdPushConstants(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdPushConstants(vkStream, commandBuffer, layout, stageFlags, offset, size, pValues);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdPushConstants(vkStream, commandBuffer, layout, stageFlags, offset, size, pValues);
}
static void validate_vkCmdBeginRenderPass(
@@ -3630,7 +3519,6 @@ void goldfish_frontend_vkCmdBeginRenderPass(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
VkSubpassContents contents)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBeginRenderPass(&validateResult, commandBuffer, pRenderPassBegin, contents);
@@ -3639,8 +3527,8 @@ void goldfish_frontend_vkCmdBeginRenderPass(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBeginRenderPass(vkStream, commandBuffer, pRenderPassBegin, contents);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBeginRenderPass(vkStream, commandBuffer, pRenderPassBegin, contents);
}
static void validate_vkCmdNextSubpass(
@@ -3653,7 +3541,6 @@ static void validate_vkCmdNextSubpass(
void goldfish_frontend_vkCmdNextSubpass(
VkCommandBuffer commandBuffer,
VkSubpassContents contents)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdNextSubpass(&validateResult, commandBuffer, contents);
@@ -3662,8 +3549,8 @@ void goldfish_frontend_vkCmdNextSubpass(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdNextSubpass(vkStream, commandBuffer, contents);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdNextSubpass(vkStream, commandBuffer, contents);
}
static void validate_vkCmdEndRenderPass(
@@ -3674,7 +3561,6 @@ static void validate_vkCmdEndRenderPass(
void goldfish_frontend_vkCmdEndRenderPass(
VkCommandBuffer commandBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdEndRenderPass(&validateResult, commandBuffer);
@@ -3683,8 +3569,8 @@ void goldfish_frontend_vkCmdEndRenderPass(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdEndRenderPass(vkStream, commandBuffer);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdEndRenderPass(vkStream, commandBuffer);
}
static void validate_vkCmdExecuteCommands(
@@ -3699,7 +3585,6 @@ void goldfish_frontend_vkCmdExecuteCommands(
VkCommandBuffer commandBuffer,
uint32_t commandBufferCount,
const VkCommandBuffer* pCommandBuffers)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdExecuteCommands(&validateResult, commandBuffer, commandBufferCount, pCommandBuffers);
@@ -3708,14 +3593,12 @@ void goldfish_frontend_vkCmdExecuteCommands(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdExecuteCommands(vkStream, commandBuffer, commandBufferCount, pCommandBuffers);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdExecuteCommands(vkStream, commandBuffer, commandBufferCount, pCommandBuffers);
}
#endif
-
#ifdef VK_VERSION_1_1
-
static void validate_vkEnumerateInstanceVersion(
VkResult* validateResult,
uint32_t* pApiVersion)
@@ -3724,7 +3607,6 @@ static void validate_vkEnumerateInstanceVersion(
VkResult goldfish_frontend_vkEnumerateInstanceVersion(
uint32_t* pApiVersion)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumerateInstanceVersion(&validateResult, pApiVersion);
@@ -3733,8 +3615,8 @@ VkResult goldfish_frontend_vkEnumerateInstanceVersion(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumerateInstanceVersion(vkStream, pApiVersion);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumerateInstanceVersion(vkStream, pApiVersion);
return res;
}
@@ -3750,7 +3632,6 @@ VkResult goldfish_frontend_vkBindBufferMemory2(
VkDevice device,
uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindBufferMemory2(&validateResult, device, bindInfoCount, pBindInfos);
@@ -3759,8 +3640,8 @@ VkResult goldfish_frontend_vkBindBufferMemory2(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindBufferMemory2(vkStream, device, bindInfoCount, pBindInfos);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindBufferMemory2(vkStream, device, bindInfoCount, pBindInfos);
return res;
}
@@ -3776,7 +3657,6 @@ VkResult goldfish_frontend_vkBindImageMemory2(
VkDevice device,
uint32_t bindInfoCount,
const VkBindImageMemoryInfo* pBindInfos)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindImageMemory2(&validateResult, device, bindInfoCount, pBindInfos);
@@ -3785,8 +3665,8 @@ VkResult goldfish_frontend_vkBindImageMemory2(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindImageMemory2(vkStream, device, bindInfoCount, pBindInfos);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindImageMemory2(vkStream, device, bindInfoCount, pBindInfos);
return res;
}
@@ -3806,7 +3686,6 @@ void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeatures(
uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceGroupPeerMemoryFeatures(&validateResult, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
@@ -3815,8 +3694,8 @@ void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeatures(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDeviceGroupPeerMemoryFeatures(vkStream, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDeviceGroupPeerMemoryFeatures(vkStream, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
}
static void validate_vkCmdSetDeviceMask(
@@ -3829,7 +3708,6 @@ static void validate_vkCmdSetDeviceMask(
void goldfish_frontend_vkCmdSetDeviceMask(
VkCommandBuffer commandBuffer,
uint32_t deviceMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetDeviceMask(&validateResult, commandBuffer, deviceMask);
@@ -3838,8 +3716,8 @@ void goldfish_frontend_vkCmdSetDeviceMask(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetDeviceMask(vkStream, commandBuffer, deviceMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetDeviceMask(vkStream, commandBuffer, deviceMask);
}
static void validate_vkCmdDispatchBase(
@@ -3862,7 +3740,6 @@ void goldfish_frontend_vkCmdDispatchBase(
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDispatchBase(&validateResult, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
@@ -3871,8 +3748,8 @@ void goldfish_frontend_vkCmdDispatchBase(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDispatchBase(vkStream, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDispatchBase(vkStream, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
}
static void validate_vkEnumeratePhysicalDeviceGroups(
@@ -3887,7 +3764,6 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroups(
VkInstance instance,
uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumeratePhysicalDeviceGroups(&validateResult, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
@@ -3896,8 +3772,8 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroups(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumeratePhysicalDeviceGroups(vkStream, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumeratePhysicalDeviceGroups(vkStream, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
return res;
}
@@ -3913,7 +3789,6 @@ void goldfish_frontend_vkGetImageMemoryRequirements2(
VkDevice device,
const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageMemoryRequirements2(&validateResult, device, pInfo, pMemoryRequirements);
@@ -3922,8 +3797,8 @@ void goldfish_frontend_vkGetImageMemoryRequirements2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageMemoryRequirements2(vkStream, device, pInfo, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageMemoryRequirements2(vkStream, device, pInfo, pMemoryRequirements);
}
static void validate_vkGetBufferMemoryRequirements2(
@@ -3938,7 +3813,6 @@ void goldfish_frontend_vkGetBufferMemoryRequirements2(
VkDevice device,
const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetBufferMemoryRequirements2(&validateResult, device, pInfo, pMemoryRequirements);
@@ -3947,8 +3821,8 @@ void goldfish_frontend_vkGetBufferMemoryRequirements2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetBufferMemoryRequirements2(vkStream, device, pInfo, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetBufferMemoryRequirements2(vkStream, device, pInfo, pMemoryRequirements);
}
static void validate_vkGetImageSparseMemoryRequirements2(
@@ -3965,7 +3839,6 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements2(
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageSparseMemoryRequirements2(&validateResult, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
@@ -3974,8 +3847,8 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageSparseMemoryRequirements2(vkStream, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageSparseMemoryRequirements2(vkStream, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
}
static void validate_vkGetPhysicalDeviceFeatures2(
@@ -3988,7 +3861,6 @@ static void validate_vkGetPhysicalDeviceFeatures2(
void goldfish_frontend_vkGetPhysicalDeviceFeatures2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFeatures2(&validateResult, physicalDevice, pFeatures);
@@ -3997,8 +3869,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFeatures2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFeatures2(vkStream, physicalDevice, pFeatures);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFeatures2(vkStream, physicalDevice, pFeatures);
}
static void validate_vkGetPhysicalDeviceProperties2(
@@ -4011,7 +3883,6 @@ static void validate_vkGetPhysicalDeviceProperties2(
void goldfish_frontend_vkGetPhysicalDeviceProperties2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties2* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceProperties2(&validateResult, physicalDevice, pProperties);
@@ -4020,8 +3891,8 @@ void goldfish_frontend_vkGetPhysicalDeviceProperties2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceProperties2(vkStream, physicalDevice, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceProperties2(vkStream, physicalDevice, pProperties);
}
static void validate_vkGetPhysicalDeviceFormatProperties2(
@@ -4036,7 +3907,6 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties2* pFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFormatProperties2(&validateResult, physicalDevice, format, pFormatProperties);
@@ -4045,8 +3915,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFormatProperties2(vkStream, physicalDevice, format, pFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFormatProperties2(vkStream, physicalDevice, format, pFormatProperties);
}
static void validate_vkGetPhysicalDeviceImageFormatProperties2(
@@ -4061,7 +3931,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
VkImageFormatProperties2* pImageFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceImageFormatProperties2(&validateResult, physicalDevice, pImageFormatInfo, pImageFormatProperties);
@@ -4070,8 +3939,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceImageFormatProperties2(vkStream, physicalDevice, pImageFormatInfo, pImageFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceImageFormatProperties2(vkStream, physicalDevice, pImageFormatInfo, pImageFormatProperties);
return res;
}
@@ -4087,7 +3956,6 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties2* pQueueFamilyProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceQueueFamilyProperties2(&validateResult, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
@@ -4096,8 +3964,8 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceQueueFamilyProperties2(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceQueueFamilyProperties2(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
}
static void validate_vkGetPhysicalDeviceMemoryProperties2(
@@ -4110,7 +3978,6 @@ static void validate_vkGetPhysicalDeviceMemoryProperties2(
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceMemoryProperties2(&validateResult, physicalDevice, pMemoryProperties);
@@ -4119,8 +3986,8 @@ void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceMemoryProperties2(vkStream, physicalDevice, pMemoryProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceMemoryProperties2(vkStream, physicalDevice, pMemoryProperties);
}
static void validate_vkGetPhysicalDeviceSparseImageFormatProperties2(
@@ -4137,7 +4004,6 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2(
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
uint32_t* pPropertyCount,
VkSparseImageFormatProperties2* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSparseImageFormatProperties2(&validateResult, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
@@ -4146,8 +4012,8 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceSparseImageFormatProperties2(vkStream, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceSparseImageFormatProperties2(vkStream, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
}
static void validate_vkTrimCommandPool(
@@ -4162,7 +4028,6 @@ void goldfish_frontend_vkTrimCommandPool(
VkDevice device,
VkCommandPool commandPool,
VkCommandPoolTrimFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkTrimCommandPool(&validateResult, device, commandPool, flags);
@@ -4171,8 +4036,8 @@ void goldfish_frontend_vkTrimCommandPool(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkTrimCommandPool(vkStream, device, commandPool, flags);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkTrimCommandPool(vkStream, device, commandPool, flags);
}
static void validate_vkGetDeviceQueue2(
@@ -4187,7 +4052,6 @@ void goldfish_frontend_vkGetDeviceQueue2(
VkDevice device,
const VkDeviceQueueInfo2* pQueueInfo,
VkQueue* pQueue)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceQueue2(&validateResult, device, pQueueInfo, pQueue);
@@ -4196,8 +4060,8 @@ void goldfish_frontend_vkGetDeviceQueue2(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDeviceQueue2(vkStream, device, pQueueInfo, pQueue);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDeviceQueue2(vkStream, device, pQueueInfo, pQueue);
}
static void validate_vkCreateSamplerYcbcrConversion(
@@ -4214,7 +4078,6 @@ VkResult goldfish_frontend_vkCreateSamplerYcbcrConversion(
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSamplerYcbcrConversion(&validateResult, device, pCreateInfo, pAllocator, pYcbcrConversion);
@@ -4223,8 +4086,8 @@ VkResult goldfish_frontend_vkCreateSamplerYcbcrConversion(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSamplerYcbcrConversion(vkStream, device, pCreateInfo, pAllocator, pYcbcrConversion);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSamplerYcbcrConversion(vkStream, device, pCreateInfo, pAllocator, pYcbcrConversion);
return res;
}
@@ -4240,7 +4103,6 @@ void goldfish_frontend_vkDestroySamplerYcbcrConversion(
VkDevice device,
VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySamplerYcbcrConversion(&validateResult, device, ycbcrConversion, pAllocator);
@@ -4249,8 +4111,8 @@ void goldfish_frontend_vkDestroySamplerYcbcrConversion(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySamplerYcbcrConversion(vkStream, device, ycbcrConversion, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySamplerYcbcrConversion(vkStream, device, ycbcrConversion, pAllocator);
}
static void validate_vkCreateDescriptorUpdateTemplate(
@@ -4267,7 +4129,6 @@ VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplate(
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDescriptorUpdateTemplate(&validateResult, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
@@ -4276,8 +4137,8 @@ VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplate(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDescriptorUpdateTemplate(vkStream, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDescriptorUpdateTemplate(vkStream, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
return res;
}
@@ -4293,7 +4154,6 @@ void goldfish_frontend_vkDestroyDescriptorUpdateTemplate(
VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDescriptorUpdateTemplate(&validateResult, device, descriptorUpdateTemplate, pAllocator);
@@ -4302,8 +4162,8 @@ void goldfish_frontend_vkDestroyDescriptorUpdateTemplate(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDescriptorUpdateTemplate(vkStream, device, descriptorUpdateTemplate, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDescriptorUpdateTemplate(vkStream, device, descriptorUpdateTemplate, pAllocator);
}
static void validate_vkUpdateDescriptorSetWithTemplate(
@@ -4320,7 +4180,6 @@ void goldfish_frontend_vkUpdateDescriptorSetWithTemplate(
VkDescriptorSet descriptorSet,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkUpdateDescriptorSetWithTemplate(&validateResult, device, descriptorSet, descriptorUpdateTemplate, pData);
@@ -4329,8 +4188,8 @@ void goldfish_frontend_vkUpdateDescriptorSetWithTemplate(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkUpdateDescriptorSetWithTemplate(vkStream, device, descriptorSet, descriptorUpdateTemplate, pData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkUpdateDescriptorSetWithTemplate(vkStream, device, descriptorSet, descriptorUpdateTemplate, pData);
}
static void validate_vkGetPhysicalDeviceExternalBufferProperties(
@@ -4345,7 +4204,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalBufferProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
VkExternalBufferProperties* pExternalBufferProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalBufferProperties(&validateResult, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
@@ -4354,8 +4212,8 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalBufferProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalBufferProperties(vkStream, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalBufferProperties(vkStream, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
}
static void validate_vkGetPhysicalDeviceExternalFenceProperties(
@@ -4370,7 +4228,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalFenceProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
VkExternalFenceProperties* pExternalFenceProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalFenceProperties(&validateResult, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
@@ -4379,8 +4236,8 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalFenceProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalFenceProperties(vkStream, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalFenceProperties(vkStream, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
}
static void validate_vkGetPhysicalDeviceExternalSemaphoreProperties(
@@ -4395,7 +4252,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphoreProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalSemaphoreProperties(&validateResult, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
@@ -4404,8 +4260,8 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphoreProperties(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalSemaphoreProperties(vkStream, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalSemaphoreProperties(vkStream, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
}
static void validate_vkGetDescriptorSetLayoutSupport(
@@ -4420,7 +4276,6 @@ void goldfish_frontend_vkGetDescriptorSetLayoutSupport(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDescriptorSetLayoutSupport(&validateResult, device, pCreateInfo, pSupport);
@@ -4429,14 +4284,12 @@ void goldfish_frontend_vkGetDescriptorSetLayoutSupport(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDescriptorSetLayoutSupport(vkStream, device, pCreateInfo, pSupport);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDescriptorSetLayoutSupport(vkStream, device, pCreateInfo, pSupport);
}
#endif
-
#ifdef VK_KHR_surface
-
static void validate_vkDestroySurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -4449,7 +4302,6 @@ void goldfish_frontend_vkDestroySurfaceKHR(
VkInstance instance,
VkSurfaceKHR surface,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySurfaceKHR(&validateResult, instance, surface, pAllocator);
@@ -4458,8 +4310,8 @@ void goldfish_frontend_vkDestroySurfaceKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySurfaceKHR(vkStream, instance, surface, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySurfaceKHR(vkStream, instance, surface, pAllocator);
}
static void validate_vkGetPhysicalDeviceSurfaceSupportKHR(
@@ -4476,7 +4328,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceSupportKHR(
uint32_t queueFamilyIndex,
VkSurfaceKHR surface,
VkBool32* pSupported)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceSupportKHR(&validateResult, physicalDevice, queueFamilyIndex, surface, pSupported);
@@ -4485,8 +4336,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceSupportKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceSupportKHR(vkStream, physicalDevice, queueFamilyIndex, surface, pSupported);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceSupportKHR(vkStream, physicalDevice, queueFamilyIndex, surface, pSupported);
return res;
}
@@ -4502,7 +4353,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(&validateResult, physicalDevice, surface, pSurfaceCapabilities);
@@ -4511,8 +4361,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(vkStream, physicalDevice, surface, pSurfaceCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(vkStream, physicalDevice, surface, pSurfaceCapabilities);
return res;
}
@@ -4530,7 +4380,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormatsKHR(
VkSurfaceKHR surface,
uint32_t* pSurfaceFormatCount,
VkSurfaceFormatKHR* pSurfaceFormats)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceFormatsKHR(&validateResult, physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
@@ -4539,8 +4388,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormatsKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceFormatsKHR(vkStream, physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceFormatsKHR(vkStream, physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
return res;
}
@@ -4558,7 +4407,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfacePresentModesKHR(
VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
VkPresentModeKHR* pPresentModes)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfacePresentModesKHR(&validateResult, physicalDevice, surface, pPresentModeCount, pPresentModes);
@@ -4567,15 +4415,13 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfacePresentModesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfacePresentModesKHR(vkStream, physicalDevice, surface, pPresentModeCount, pPresentModes);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfacePresentModesKHR(vkStream, physicalDevice, surface, pPresentModeCount, pPresentModes);
return res;
}
#endif
-
#ifdef VK_KHR_swapchain
-
static void validate_vkCreateSwapchainKHR(
VkResult* validateResult,
VkDevice device,
@@ -4590,7 +4436,6 @@ VkResult goldfish_frontend_vkCreateSwapchainKHR(
const VkSwapchainCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSwapchainKHR* pSwapchain)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSwapchainKHR(&validateResult, device, pCreateInfo, pAllocator, pSwapchain);
@@ -4599,8 +4444,8 @@ VkResult goldfish_frontend_vkCreateSwapchainKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSwapchainKHR(vkStream, device, pCreateInfo, pAllocator, pSwapchain);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSwapchainKHR(vkStream, device, pCreateInfo, pAllocator, pSwapchain);
return res;
}
@@ -4616,7 +4461,6 @@ void goldfish_frontend_vkDestroySwapchainKHR(
VkDevice device,
VkSwapchainKHR swapchain,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySwapchainKHR(&validateResult, device, swapchain, pAllocator);
@@ -4625,8 +4469,8 @@ void goldfish_frontend_vkDestroySwapchainKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySwapchainKHR(vkStream, device, swapchain, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySwapchainKHR(vkStream, device, swapchain, pAllocator);
}
static void validate_vkGetSwapchainImagesKHR(
@@ -4643,7 +4487,6 @@ VkResult goldfish_frontend_vkGetSwapchainImagesKHR(
VkSwapchainKHR swapchain,
uint32_t* pSwapchainImageCount,
VkImage* pSwapchainImages)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetSwapchainImagesKHR(&validateResult, device, swapchain, pSwapchainImageCount, pSwapchainImages);
@@ -4652,8 +4495,8 @@ VkResult goldfish_frontend_vkGetSwapchainImagesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetSwapchainImagesKHR(vkStream, device, swapchain, pSwapchainImageCount, pSwapchainImages);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetSwapchainImagesKHR(vkStream, device, swapchain, pSwapchainImageCount, pSwapchainImages);
return res;
}
@@ -4675,7 +4518,6 @@ VkResult goldfish_frontend_vkAcquireNextImageKHR(
VkSemaphore semaphore,
VkFence fence,
uint32_t* pImageIndex)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAcquireNextImageKHR(&validateResult, device, swapchain, timeout, semaphore, fence, pImageIndex);
@@ -4684,8 +4526,8 @@ VkResult goldfish_frontend_vkAcquireNextImageKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAcquireNextImageKHR(vkStream, device, swapchain, timeout, semaphore, fence, pImageIndex);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAcquireNextImageKHR(vkStream, device, swapchain, timeout, semaphore, fence, pImageIndex);
return res;
}
@@ -4699,7 +4541,6 @@ static void validate_vkQueuePresentKHR(
VkResult goldfish_frontend_vkQueuePresentKHR(
VkQueue queue,
const VkPresentInfoKHR* pPresentInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueuePresentKHR(&validateResult, queue, pPresentInfo);
@@ -4708,8 +4549,8 @@ VkResult goldfish_frontend_vkQueuePresentKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkQueuePresentKHR(vkStream, queue, pPresentInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkQueuePresentKHR(vkStream, queue, pPresentInfo);
return res;
}
@@ -4723,7 +4564,6 @@ static void validate_vkGetDeviceGroupPresentCapabilitiesKHR(
VkResult goldfish_frontend_vkGetDeviceGroupPresentCapabilitiesKHR(
VkDevice device,
VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceGroupPresentCapabilitiesKHR(&validateResult, device, pDeviceGroupPresentCapabilities);
@@ -4732,8 +4572,8 @@ VkResult goldfish_frontend_vkGetDeviceGroupPresentCapabilitiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDeviceGroupPresentCapabilitiesKHR(vkStream, device, pDeviceGroupPresentCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDeviceGroupPresentCapabilitiesKHR(vkStream, device, pDeviceGroupPresentCapabilities);
return res;
}
@@ -4749,7 +4589,6 @@ VkResult goldfish_frontend_vkGetDeviceGroupSurfacePresentModesKHR(
VkDevice device,
VkSurfaceKHR surface,
VkDeviceGroupPresentModeFlagsKHR* pModes)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceGroupSurfacePresentModesKHR(&validateResult, device, surface, pModes);
@@ -4758,8 +4597,8 @@ VkResult goldfish_frontend_vkGetDeviceGroupSurfacePresentModesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDeviceGroupSurfacePresentModesKHR(vkStream, device, surface, pModes);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDeviceGroupSurfacePresentModesKHR(vkStream, device, surface, pModes);
return res;
}
@@ -4777,7 +4616,6 @@ VkResult goldfish_frontend_vkGetPhysicalDevicePresentRectanglesKHR(
VkSurfaceKHR surface,
uint32_t* pRectCount,
VkRect2D* pRects)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDevicePresentRectanglesKHR(&validateResult, physicalDevice, surface, pRectCount, pRects);
@@ -4786,8 +4624,8 @@ VkResult goldfish_frontend_vkGetPhysicalDevicePresentRectanglesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDevicePresentRectanglesKHR(vkStream, physicalDevice, surface, pRectCount, pRects);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDevicePresentRectanglesKHR(vkStream, physicalDevice, surface, pRectCount, pRects);
return res;
}
@@ -4803,7 +4641,6 @@ VkResult goldfish_frontend_vkAcquireNextImage2KHR(
VkDevice device,
const VkAcquireNextImageInfoKHR* pAcquireInfo,
uint32_t* pImageIndex)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAcquireNextImage2KHR(&validateResult, device, pAcquireInfo, pImageIndex);
@@ -4812,15 +4649,13 @@ VkResult goldfish_frontend_vkAcquireNextImage2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAcquireNextImage2KHR(vkStream, device, pAcquireInfo, pImageIndex);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAcquireNextImage2KHR(vkStream, device, pAcquireInfo, pImageIndex);
return res;
}
#endif
-
#ifdef VK_KHR_display
-
static void validate_vkGetPhysicalDeviceDisplayPropertiesKHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -4833,7 +4668,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPropertiesKHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkDisplayPropertiesKHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceDisplayPropertiesKHR(&validateResult, physicalDevice, pPropertyCount, pProperties);
@@ -4842,8 +4676,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPropertiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceDisplayPropertiesKHR(vkStream, physicalDevice, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceDisplayPropertiesKHR(vkStream, physicalDevice, pPropertyCount, pProperties);
return res;
}
@@ -4859,7 +4693,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkDisplayPlanePropertiesKHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(&validateResult, physicalDevice, pPropertyCount, pProperties);
@@ -4868,8 +4701,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(vkStream, physicalDevice, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(vkStream, physicalDevice, pPropertyCount, pProperties);
return res;
}
@@ -4887,7 +4720,6 @@ VkResult goldfish_frontend_vkGetDisplayPlaneSupportedDisplaysKHR(
uint32_t planeIndex,
uint32_t* pDisplayCount,
VkDisplayKHR* pDisplays)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDisplayPlaneSupportedDisplaysKHR(&validateResult, physicalDevice, planeIndex, pDisplayCount, pDisplays);
@@ -4896,8 +4728,8 @@ VkResult goldfish_frontend_vkGetDisplayPlaneSupportedDisplaysKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDisplayPlaneSupportedDisplaysKHR(vkStream, physicalDevice, planeIndex, pDisplayCount, pDisplays);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDisplayPlaneSupportedDisplaysKHR(vkStream, physicalDevice, planeIndex, pDisplayCount, pDisplays);
return res;
}
@@ -4915,7 +4747,6 @@ VkResult goldfish_frontend_vkGetDisplayModePropertiesKHR(
VkDisplayKHR display,
uint32_t* pPropertyCount,
VkDisplayModePropertiesKHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDisplayModePropertiesKHR(&validateResult, physicalDevice, display, pPropertyCount, pProperties);
@@ -4924,8 +4755,8 @@ VkResult goldfish_frontend_vkGetDisplayModePropertiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDisplayModePropertiesKHR(vkStream, physicalDevice, display, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDisplayModePropertiesKHR(vkStream, physicalDevice, display, pPropertyCount, pProperties);
return res;
}
@@ -4945,7 +4776,6 @@ VkResult goldfish_frontend_vkCreateDisplayModeKHR(
const VkDisplayModeCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDisplayModeKHR* pMode)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDisplayModeKHR(&validateResult, physicalDevice, display, pCreateInfo, pAllocator, pMode);
@@ -4954,8 +4784,8 @@ VkResult goldfish_frontend_vkCreateDisplayModeKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDisplayModeKHR(vkStream, physicalDevice, display, pCreateInfo, pAllocator, pMode);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDisplayModeKHR(vkStream, physicalDevice, display, pCreateInfo, pAllocator, pMode);
return res;
}
@@ -4973,7 +4803,6 @@ VkResult goldfish_frontend_vkGetDisplayPlaneCapabilitiesKHR(
VkDisplayModeKHR mode,
uint32_t planeIndex,
VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDisplayPlaneCapabilitiesKHR(&validateResult, physicalDevice, mode, planeIndex, pCapabilities);
@@ -4982,8 +4811,8 @@ VkResult goldfish_frontend_vkGetDisplayPlaneCapabilitiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDisplayPlaneCapabilitiesKHR(vkStream, physicalDevice, mode, planeIndex, pCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDisplayPlaneCapabilitiesKHR(vkStream, physicalDevice, mode, planeIndex, pCapabilities);
return res;
}
@@ -5001,7 +4830,6 @@ VkResult goldfish_frontend_vkCreateDisplayPlaneSurfaceKHR(
const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDisplayPlaneSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5010,15 +4838,13 @@ VkResult goldfish_frontend_vkCreateDisplayPlaneSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDisplayPlaneSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDisplayPlaneSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
#endif
-
#ifdef VK_KHR_display_swapchain
-
static void validate_vkCreateSharedSwapchainsKHR(
VkResult* validateResult,
VkDevice device,
@@ -5035,7 +4861,6 @@ VkResult goldfish_frontend_vkCreateSharedSwapchainsKHR(
const VkSwapchainCreateInfoKHR* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
VkSwapchainKHR* pSwapchains)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSharedSwapchainsKHR(&validateResult, device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
@@ -5044,15 +4869,13 @@ VkResult goldfish_frontend_vkCreateSharedSwapchainsKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSharedSwapchainsKHR(vkStream, device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSharedSwapchainsKHR(vkStream, device, swapchainCount, pCreateInfos, pAllocator, pSwapchains);
return res;
}
#endif
-
#ifdef VK_KHR_xlib_surface
-
static void validate_vkCreateXlibSurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5067,7 +4890,6 @@ VkResult goldfish_frontend_vkCreateXlibSurfaceKHR(
const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateXlibSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5076,8 +4898,8 @@ VkResult goldfish_frontend_vkCreateXlibSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateXlibSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateXlibSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
@@ -5095,7 +4917,6 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceXlibPresentationSupportKHR(
uint32_t queueFamilyIndex,
Display* dpy,
VisualID visualID)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceXlibPresentationSupportKHR(&validateResult, physicalDevice, queueFamilyIndex, dpy, visualID);
@@ -5104,15 +4925,13 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceXlibPresentationSupportKHR(
return (VkBool32)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkBool32 res = encode_vkGetPhysicalDeviceXlibPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, dpy, visualID);
+ VulkanStream* vkStream = nullptr;
+ VkBool32 res = marshal_vkGetPhysicalDeviceXlibPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, dpy, visualID);
return res;
}
#endif
-
#ifdef VK_KHR_xcb_surface
-
static void validate_vkCreateXcbSurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5127,7 +4946,6 @@ VkResult goldfish_frontend_vkCreateXcbSurfaceKHR(
const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateXcbSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5136,8 +4954,8 @@ VkResult goldfish_frontend_vkCreateXcbSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateXcbSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateXcbSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
@@ -5155,7 +4973,6 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceXcbPresentationSupportKHR(
uint32_t queueFamilyIndex,
xcb_connection_t* connection,
xcb_visualid_t visual_id)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceXcbPresentationSupportKHR(&validateResult, physicalDevice, queueFamilyIndex, connection, visual_id);
@@ -5164,15 +4981,13 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceXcbPresentationSupportKHR(
return (VkBool32)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkBool32 res = encode_vkGetPhysicalDeviceXcbPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, connection, visual_id);
+ VulkanStream* vkStream = nullptr;
+ VkBool32 res = marshal_vkGetPhysicalDeviceXcbPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, connection, visual_id);
return res;
}
#endif
-
#ifdef VK_KHR_wayland_surface
-
static void validate_vkCreateWaylandSurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5187,7 +5002,6 @@ VkResult goldfish_frontend_vkCreateWaylandSurfaceKHR(
const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateWaylandSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5196,8 +5010,8 @@ VkResult goldfish_frontend_vkCreateWaylandSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateWaylandSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateWaylandSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
@@ -5205,15 +5019,14 @@ static void validate_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
- struct wl_display* display)
+ wl_display* display)
{
}
VkBool32 goldfish_frontend_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
- struct wl_display* display)
-
+ wl_display* display)
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceWaylandPresentationSupportKHR(&validateResult, physicalDevice, queueFamilyIndex, display);
@@ -5222,15 +5035,13 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
return (VkBool32)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkBool32 res = encode_vkGetPhysicalDeviceWaylandPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, display);
+ VulkanStream* vkStream = nullptr;
+ VkBool32 res = marshal_vkGetPhysicalDeviceWaylandPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, display);
return res;
}
#endif
-
#ifdef VK_KHR_mir_surface
-
static void validate_vkCreateMirSurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5245,7 +5056,6 @@ VkResult goldfish_frontend_vkCreateMirSurfaceKHR(
const VkMirSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateMirSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5254,8 +5064,8 @@ VkResult goldfish_frontend_vkCreateMirSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateMirSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateMirSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
@@ -5271,7 +5081,6 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceMirPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
MirConnection* connection)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceMirPresentationSupportKHR(&validateResult, physicalDevice, queueFamilyIndex, connection);
@@ -5280,15 +5089,13 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceMirPresentationSupportKHR(
return (VkBool32)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkBool32 res = encode_vkGetPhysicalDeviceMirPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, connection);
+ VulkanStream* vkStream = nullptr;
+ VkBool32 res = marshal_vkGetPhysicalDeviceMirPresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex, connection);
return res;
}
#endif
-
#ifdef VK_KHR_android_surface
-
static void validate_vkCreateAndroidSurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5303,7 +5110,6 @@ VkResult goldfish_frontend_vkCreateAndroidSurfaceKHR(
const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateAndroidSurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5312,15 +5118,13 @@ VkResult goldfish_frontend_vkCreateAndroidSurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateAndroidSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateAndroidSurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
#endif
-
#ifdef VK_KHR_win32_surface
-
static void validate_vkCreateWin32SurfaceKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5335,7 +5139,6 @@ VkResult goldfish_frontend_vkCreateWin32SurfaceKHR(
const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateWin32SurfaceKHR(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -5344,8 +5147,8 @@ VkResult goldfish_frontend_vkCreateWin32SurfaceKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateWin32SurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateWin32SurfaceKHR(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
@@ -5359,7 +5162,6 @@ static void validate_vkGetPhysicalDeviceWin32PresentationSupportKHR(
VkBool32 goldfish_frontend_vkGetPhysicalDeviceWin32PresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceWin32PresentationSupportKHR(&validateResult, physicalDevice, queueFamilyIndex);
@@ -5368,23 +5170,17 @@ VkBool32 goldfish_frontend_vkGetPhysicalDeviceWin32PresentationSupportKHR(
return (VkBool32)0;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkBool32 res = encode_vkGetPhysicalDeviceWin32PresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex);
+ VulkanStream* vkStream = nullptr;
+ VkBool32 res = marshal_vkGetPhysicalDeviceWin32PresentationSupportKHR(vkStream, physicalDevice, queueFamilyIndex);
return res;
}
#endif
-
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-
#endif
-
#ifdef VK_KHR_multiview
-
#endif
-
#ifdef VK_KHR_get_physical_device_properties2
-
static void validate_vkGetPhysicalDeviceFeatures2KHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -5395,7 +5191,6 @@ static void validate_vkGetPhysicalDeviceFeatures2KHR(
void goldfish_frontend_vkGetPhysicalDeviceFeatures2KHR(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceFeatures2* pFeatures)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFeatures2KHR(&validateResult, physicalDevice, pFeatures);
@@ -5404,8 +5199,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFeatures2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFeatures2KHR(vkStream, physicalDevice, pFeatures);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFeatures2KHR(vkStream, physicalDevice, pFeatures);
}
static void validate_vkGetPhysicalDeviceProperties2KHR(
@@ -5418,7 +5213,6 @@ static void validate_vkGetPhysicalDeviceProperties2KHR(
void goldfish_frontend_vkGetPhysicalDeviceProperties2KHR(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties2* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceProperties2KHR(&validateResult, physicalDevice, pProperties);
@@ -5427,8 +5221,8 @@ void goldfish_frontend_vkGetPhysicalDeviceProperties2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceProperties2KHR(vkStream, physicalDevice, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceProperties2KHR(vkStream, physicalDevice, pProperties);
}
static void validate_vkGetPhysicalDeviceFormatProperties2KHR(
@@ -5443,7 +5237,6 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkFormatProperties2* pFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceFormatProperties2KHR(&validateResult, physicalDevice, format, pFormatProperties);
@@ -5452,8 +5245,8 @@ void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceFormatProperties2KHR(vkStream, physicalDevice, format, pFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceFormatProperties2KHR(vkStream, physicalDevice, format, pFormatProperties);
}
static void validate_vkGetPhysicalDeviceImageFormatProperties2KHR(
@@ -5468,7 +5261,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
VkImageFormatProperties2* pImageFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceImageFormatProperties2KHR(&validateResult, physicalDevice, pImageFormatInfo, pImageFormatProperties);
@@ -5477,8 +5269,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceImageFormatProperties2KHR(vkStream, physicalDevice, pImageFormatInfo, pImageFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceImageFormatProperties2KHR(vkStream, physicalDevice, pImageFormatInfo, pImageFormatProperties);
return res;
}
@@ -5494,7 +5286,6 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
VkQueueFamilyProperties2* pQueueFamilyProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceQueueFamilyProperties2KHR(&validateResult, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
@@ -5503,8 +5294,8 @@ void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceQueueFamilyProperties2KHR(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceQueueFamilyProperties2KHR(vkStream, physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
}
static void validate_vkGetPhysicalDeviceMemoryProperties2KHR(
@@ -5517,7 +5308,6 @@ static void validate_vkGetPhysicalDeviceMemoryProperties2KHR(
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2KHR(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceMemoryProperties2KHR(&validateResult, physicalDevice, pMemoryProperties);
@@ -5526,8 +5316,8 @@ void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceMemoryProperties2KHR(vkStream, physicalDevice, pMemoryProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceMemoryProperties2KHR(vkStream, physicalDevice, pMemoryProperties);
}
static void validate_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
@@ -5544,7 +5334,6 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
uint32_t* pPropertyCount,
VkSparseImageFormatProperties2* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(&validateResult, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
@@ -5553,14 +5342,12 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(vkStream, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(vkStream, physicalDevice, pFormatInfo, pPropertyCount, pProperties);
}
#endif
-
#ifdef VK_KHR_device_group
-
static void validate_vkGetDeviceGroupPeerMemoryFeaturesKHR(
VkResult* validateResult,
VkDevice device,
@@ -5577,7 +5364,6 @@ void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeaturesKHR(
uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDeviceGroupPeerMemoryFeaturesKHR(&validateResult, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
@@ -5586,8 +5372,8 @@ void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeaturesKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDeviceGroupPeerMemoryFeaturesKHR(vkStream, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDeviceGroupPeerMemoryFeaturesKHR(vkStream, device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
}
static void validate_vkCmdSetDeviceMaskKHR(
@@ -5600,7 +5386,6 @@ static void validate_vkCmdSetDeviceMaskKHR(
void goldfish_frontend_vkCmdSetDeviceMaskKHR(
VkCommandBuffer commandBuffer,
uint32_t deviceMask)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetDeviceMaskKHR(&validateResult, commandBuffer, deviceMask);
@@ -5609,8 +5394,8 @@ void goldfish_frontend_vkCmdSetDeviceMaskKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetDeviceMaskKHR(vkStream, commandBuffer, deviceMask);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetDeviceMaskKHR(vkStream, commandBuffer, deviceMask);
}
static void validate_vkCmdDispatchBaseKHR(
@@ -5633,7 +5418,6 @@ void goldfish_frontend_vkCmdDispatchBaseKHR(
uint32_t groupCountX,
uint32_t groupCountY,
uint32_t groupCountZ)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDispatchBaseKHR(&validateResult, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
@@ -5642,18 +5426,14 @@ void goldfish_frontend_vkCmdDispatchBaseKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDispatchBaseKHR(vkStream, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDispatchBaseKHR(vkStream, commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
}
#endif
-
#ifdef VK_KHR_shader_draw_parameters
-
#endif
-
#ifdef VK_KHR_maintenance1
-
static void validate_vkTrimCommandPoolKHR(
VkResult* validateResult,
VkDevice device,
@@ -5666,7 +5446,6 @@ void goldfish_frontend_vkTrimCommandPoolKHR(
VkDevice device,
VkCommandPool commandPool,
VkCommandPoolTrimFlags flags)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkTrimCommandPoolKHR(&validateResult, device, commandPool, flags);
@@ -5675,14 +5454,12 @@ void goldfish_frontend_vkTrimCommandPoolKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkTrimCommandPoolKHR(vkStream, device, commandPool, flags);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkTrimCommandPoolKHR(vkStream, device, commandPool, flags);
}
#endif
-
#ifdef VK_KHR_device_group_creation
-
static void validate_vkEnumeratePhysicalDeviceGroupsKHR(
VkResult* validateResult,
VkInstance instance,
@@ -5695,7 +5472,6 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroupsKHR(
VkInstance instance,
uint32_t* pPhysicalDeviceGroupCount,
VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkEnumeratePhysicalDeviceGroupsKHR(&validateResult, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
@@ -5704,15 +5480,13 @@ VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroupsKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkEnumeratePhysicalDeviceGroupsKHR(vkStream, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkEnumeratePhysicalDeviceGroupsKHR(vkStream, instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
return res;
}
#endif
-
#ifdef VK_KHR_external_memory_capabilities
-
static void validate_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -5725,7 +5499,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
VkExternalBufferProperties* pExternalBufferProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalBufferPropertiesKHR(&validateResult, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
@@ -5734,18 +5507,14 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalBufferPropertiesKHR(vkStream, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalBufferPropertiesKHR(vkStream, physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
}
#endif
-
#ifdef VK_KHR_external_memory
-
#endif
-
#ifdef VK_KHR_external_memory_win32
-
static void validate_vkGetMemoryWin32HandleKHR(
VkResult* validateResult,
VkDevice device,
@@ -5758,7 +5527,6 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandleKHR(
VkDevice device,
const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryWin32HandleKHR(&validateResult, device, pGetWin32HandleInfo, pHandle);
@@ -5767,8 +5535,8 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandleKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
return res;
}
@@ -5786,7 +5554,6 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandlePropertiesKHR(
VkExternalMemoryHandleTypeFlagBits handleType,
HANDLE handle,
VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryWin32HandlePropertiesKHR(&validateResult, device, handleType, handle, pMemoryWin32HandleProperties);
@@ -5795,15 +5562,13 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandlePropertiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryWin32HandlePropertiesKHR(vkStream, device, handleType, handle, pMemoryWin32HandleProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryWin32HandlePropertiesKHR(vkStream, device, handleType, handle, pMemoryWin32HandleProperties);
return res;
}
#endif
-
#ifdef VK_KHR_external_memory_fd
-
static void validate_vkGetMemoryFdKHR(
VkResult* validateResult,
VkDevice device,
@@ -5816,7 +5581,6 @@ VkResult goldfish_frontend_vkGetMemoryFdKHR(
VkDevice device,
const VkMemoryGetFdInfoKHR* pGetFdInfo,
int* pFd)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryFdKHR(&validateResult, device, pGetFdInfo, pFd);
@@ -5825,8 +5589,8 @@ VkResult goldfish_frontend_vkGetMemoryFdKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryFdKHR(vkStream, device, pGetFdInfo, pFd);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryFdKHR(vkStream, device, pGetFdInfo, pFd);
return res;
}
@@ -5844,7 +5608,6 @@ VkResult goldfish_frontend_vkGetMemoryFdPropertiesKHR(
VkExternalMemoryHandleTypeFlagBits handleType,
int fd,
VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryFdPropertiesKHR(&validateResult, device, handleType, fd, pMemoryFdProperties);
@@ -5853,19 +5616,15 @@ VkResult goldfish_frontend_vkGetMemoryFdPropertiesKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryFdPropertiesKHR(vkStream, device, handleType, fd, pMemoryFdProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryFdPropertiesKHR(vkStream, device, handleType, fd, pMemoryFdProperties);
return res;
}
#endif
-
#ifdef VK_KHR_win32_keyed_mutex
-
#endif
-
#ifdef VK_KHR_external_semaphore_capabilities
-
static void validate_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -5878,7 +5637,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(&validateResult, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
@@ -5887,18 +5645,14 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(vkStream, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(vkStream, physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
}
#endif
-
#ifdef VK_KHR_external_semaphore
-
#endif
-
#ifdef VK_KHR_external_semaphore_win32
-
static void validate_vkImportSemaphoreWin32HandleKHR(
VkResult* validateResult,
VkDevice device,
@@ -5909,7 +5663,6 @@ static void validate_vkImportSemaphoreWin32HandleKHR(
VkResult goldfish_frontend_vkImportSemaphoreWin32HandleKHR(
VkDevice device,
const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkImportSemaphoreWin32HandleKHR(&validateResult, device, pImportSemaphoreWin32HandleInfo);
@@ -5918,8 +5671,8 @@ VkResult goldfish_frontend_vkImportSemaphoreWin32HandleKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkImportSemaphoreWin32HandleKHR(vkStream, device, pImportSemaphoreWin32HandleInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkImportSemaphoreWin32HandleKHR(vkStream, device, pImportSemaphoreWin32HandleInfo);
return res;
}
@@ -5935,7 +5688,6 @@ VkResult goldfish_frontend_vkGetSemaphoreWin32HandleKHR(
VkDevice device,
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetSemaphoreWin32HandleKHR(&validateResult, device, pGetWin32HandleInfo, pHandle);
@@ -5944,15 +5696,13 @@ VkResult goldfish_frontend_vkGetSemaphoreWin32HandleKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetSemaphoreWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetSemaphoreWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
return res;
}
#endif
-
#ifdef VK_KHR_external_semaphore_fd
-
static void validate_vkImportSemaphoreFdKHR(
VkResult* validateResult,
VkDevice device,
@@ -5963,7 +5713,6 @@ static void validate_vkImportSemaphoreFdKHR(
VkResult goldfish_frontend_vkImportSemaphoreFdKHR(
VkDevice device,
const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkImportSemaphoreFdKHR(&validateResult, device, pImportSemaphoreFdInfo);
@@ -5972,8 +5721,8 @@ VkResult goldfish_frontend_vkImportSemaphoreFdKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkImportSemaphoreFdKHR(vkStream, device, pImportSemaphoreFdInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkImportSemaphoreFdKHR(vkStream, device, pImportSemaphoreFdInfo);
return res;
}
@@ -5989,7 +5738,6 @@ VkResult goldfish_frontend_vkGetSemaphoreFdKHR(
VkDevice device,
const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
int* pFd)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetSemaphoreFdKHR(&validateResult, device, pGetFdInfo, pFd);
@@ -5998,15 +5746,13 @@ VkResult goldfish_frontend_vkGetSemaphoreFdKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetSemaphoreFdKHR(vkStream, device, pGetFdInfo, pFd);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetSemaphoreFdKHR(vkStream, device, pGetFdInfo, pFd);
return res;
}
#endif
-
#ifdef VK_KHR_push_descriptor
-
static void validate_vkCmdPushDescriptorSetKHR(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -6025,7 +5771,6 @@ void goldfish_frontend_vkCmdPushDescriptorSetKHR(
uint32_t set,
uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdPushDescriptorSetKHR(&validateResult, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
@@ -6034,8 +5779,8 @@ void goldfish_frontend_vkCmdPushDescriptorSetKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdPushDescriptorSetKHR(vkStream, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdPushDescriptorSetKHR(vkStream, commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
}
static void validate_vkCmdPushDescriptorSetWithTemplateKHR(
@@ -6054,7 +5799,6 @@ void goldfish_frontend_vkCmdPushDescriptorSetWithTemplateKHR(
VkPipelineLayout layout,
uint32_t set,
const void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdPushDescriptorSetWithTemplateKHR(&validateResult, commandBuffer, descriptorUpdateTemplate, layout, set, pData);
@@ -6063,22 +5807,16 @@ void goldfish_frontend_vkCmdPushDescriptorSetWithTemplateKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdPushDescriptorSetWithTemplateKHR(vkStream, commandBuffer, descriptorUpdateTemplate, layout, set, pData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdPushDescriptorSetWithTemplateKHR(vkStream, commandBuffer, descriptorUpdateTemplate, layout, set, pData);
}
#endif
-
#ifdef VK_KHR_16bit_storage
-
#endif
-
#ifdef VK_KHR_incremental_present
-
#endif
-
#ifdef VK_KHR_descriptor_update_template
-
static void validate_vkCreateDescriptorUpdateTemplateKHR(
VkResult* validateResult,
VkDevice device,
@@ -6093,7 +5831,6 @@ VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplateKHR(
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDescriptorUpdateTemplateKHR(&validateResult, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
@@ -6102,8 +5839,8 @@ VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplateKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDescriptorUpdateTemplateKHR(vkStream, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDescriptorUpdateTemplateKHR(vkStream, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
return res;
}
@@ -6119,7 +5856,6 @@ void goldfish_frontend_vkDestroyDescriptorUpdateTemplateKHR(
VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDescriptorUpdateTemplateKHR(&validateResult, device, descriptorUpdateTemplate, pAllocator);
@@ -6128,8 +5864,8 @@ void goldfish_frontend_vkDestroyDescriptorUpdateTemplateKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDescriptorUpdateTemplateKHR(vkStream, device, descriptorUpdateTemplate, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDescriptorUpdateTemplateKHR(vkStream, device, descriptorUpdateTemplate, pAllocator);
}
static void validate_vkUpdateDescriptorSetWithTemplateKHR(
@@ -6146,7 +5882,6 @@ void goldfish_frontend_vkUpdateDescriptorSetWithTemplateKHR(
VkDescriptorSet descriptorSet,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
const void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkUpdateDescriptorSetWithTemplateKHR(&validateResult, device, descriptorSet, descriptorUpdateTemplate, pData);
@@ -6155,14 +5890,12 @@ void goldfish_frontend_vkUpdateDescriptorSetWithTemplateKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkUpdateDescriptorSetWithTemplateKHR(vkStream, device, descriptorSet, descriptorUpdateTemplate, pData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkUpdateDescriptorSetWithTemplateKHR(vkStream, device, descriptorSet, descriptorUpdateTemplate, pData);
}
#endif
-
#ifdef VK_KHR_create_renderpass2
-
static void validate_vkCreateRenderPass2KHR(
VkResult* validateResult,
VkDevice device,
@@ -6177,7 +5910,6 @@ VkResult goldfish_frontend_vkCreateRenderPass2KHR(
const VkRenderPassCreateInfo2KHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkRenderPass* pRenderPass)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateRenderPass2KHR(&validateResult, device, pCreateInfo, pAllocator, pRenderPass);
@@ -6186,24 +5918,23 @@ VkResult goldfish_frontend_vkCreateRenderPass2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateRenderPass2KHR(vkStream, device, pCreateInfo, pAllocator, pRenderPass);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateRenderPass2KHR(vkStream, device, pCreateInfo, pAllocator, pRenderPass);
return res;
}
static void validate_vkCmdBeginRenderPass2KHR(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
{
}
void goldfish_frontend_vkCmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBeginRenderPass2KHR(&validateResult, commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
@@ -6212,23 +5943,22 @@ void goldfish_frontend_vkCmdBeginRenderPass2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBeginRenderPass2KHR(vkStream, commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBeginRenderPass2KHR(vkStream, commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
}
static void validate_vkCmdNextSubpass2KHR(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
{
}
void goldfish_frontend_vkCmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdNextSubpass2KHR(&validateResult, commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
@@ -6237,21 +5967,20 @@ void goldfish_frontend_vkCmdNextSubpass2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdNextSubpass2KHR(vkStream, commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdNextSubpass2KHR(vkStream, commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
}
static void validate_vkCmdEndRenderPass2KHR(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
{
}
void goldfish_frontend_vkCmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-
+ const VkSubpassEndInfoKHR* pSubpassEndInfo)
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdEndRenderPass2KHR(&validateResult, commandBuffer, pSubpassEndInfo);
@@ -6260,14 +5989,12 @@ void goldfish_frontend_vkCmdEndRenderPass2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdEndRenderPass2KHR(vkStream, commandBuffer, pSubpassEndInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdEndRenderPass2KHR(vkStream, commandBuffer, pSubpassEndInfo);
}
#endif
-
#ifdef VK_KHR_shared_presentable_image
-
static void validate_vkGetSwapchainStatusKHR(
VkResult* validateResult,
VkDevice device,
@@ -6278,7 +6005,6 @@ static void validate_vkGetSwapchainStatusKHR(
VkResult goldfish_frontend_vkGetSwapchainStatusKHR(
VkDevice device,
VkSwapchainKHR swapchain)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetSwapchainStatusKHR(&validateResult, device, swapchain);
@@ -6287,15 +6013,13 @@ VkResult goldfish_frontend_vkGetSwapchainStatusKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetSwapchainStatusKHR(vkStream, device, swapchain);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetSwapchainStatusKHR(vkStream, device, swapchain);
return res;
}
#endif
-
#ifdef VK_KHR_external_fence_capabilities
-
static void validate_vkGetPhysicalDeviceExternalFencePropertiesKHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -6308,7 +6032,6 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalFencePropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
VkExternalFenceProperties* pExternalFenceProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalFencePropertiesKHR(&validateResult, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
@@ -6317,18 +6040,14 @@ void goldfish_frontend_vkGetPhysicalDeviceExternalFencePropertiesKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkStream, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceExternalFencePropertiesKHR(vkStream, physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
}
#endif
-
#ifdef VK_KHR_external_fence
-
#endif
-
#ifdef VK_KHR_external_fence_win32
-
static void validate_vkImportFenceWin32HandleKHR(
VkResult* validateResult,
VkDevice device,
@@ -6339,7 +6058,6 @@ static void validate_vkImportFenceWin32HandleKHR(
VkResult goldfish_frontend_vkImportFenceWin32HandleKHR(
VkDevice device,
const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkImportFenceWin32HandleKHR(&validateResult, device, pImportFenceWin32HandleInfo);
@@ -6348,8 +6066,8 @@ VkResult goldfish_frontend_vkImportFenceWin32HandleKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkImportFenceWin32HandleKHR(vkStream, device, pImportFenceWin32HandleInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkImportFenceWin32HandleKHR(vkStream, device, pImportFenceWin32HandleInfo);
return res;
}
@@ -6365,7 +6083,6 @@ VkResult goldfish_frontend_vkGetFenceWin32HandleKHR(
VkDevice device,
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
HANDLE* pHandle)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetFenceWin32HandleKHR(&validateResult, device, pGetWin32HandleInfo, pHandle);
@@ -6374,15 +6091,13 @@ VkResult goldfish_frontend_vkGetFenceWin32HandleKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetFenceWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetFenceWin32HandleKHR(vkStream, device, pGetWin32HandleInfo, pHandle);
return res;
}
#endif
-
#ifdef VK_KHR_external_fence_fd
-
static void validate_vkImportFenceFdKHR(
VkResult* validateResult,
VkDevice device,
@@ -6393,7 +6108,6 @@ static void validate_vkImportFenceFdKHR(
VkResult goldfish_frontend_vkImportFenceFdKHR(
VkDevice device,
const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkImportFenceFdKHR(&validateResult, device, pImportFenceFdInfo);
@@ -6402,8 +6116,8 @@ VkResult goldfish_frontend_vkImportFenceFdKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkImportFenceFdKHR(vkStream, device, pImportFenceFdInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkImportFenceFdKHR(vkStream, device, pImportFenceFdInfo);
return res;
}
@@ -6419,7 +6133,6 @@ VkResult goldfish_frontend_vkGetFenceFdKHR(
VkDevice device,
const VkFenceGetFdInfoKHR* pGetFdInfo,
int* pFd)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetFenceFdKHR(&validateResult, device, pGetFdInfo, pFd);
@@ -6428,19 +6141,15 @@ VkResult goldfish_frontend_vkGetFenceFdKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetFenceFdKHR(vkStream, device, pGetFdInfo, pFd);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetFenceFdKHR(vkStream, device, pGetFdInfo, pFd);
return res;
}
#endif
-
#ifdef VK_KHR_maintenance2
-
#endif
-
#ifdef VK_KHR_get_surface_capabilities2
-
static void validate_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -6453,7 +6162,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceCapabilities2KHR(&validateResult, physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
@@ -6462,8 +6170,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceCapabilities2KHR(vkStream, physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceCapabilities2KHR(vkStream, physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
return res;
}
@@ -6481,7 +6189,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormats2KHR(
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
uint32_t* pSurfaceFormatCount,
VkSurfaceFormat2KHR* pSurfaceFormats)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceFormats2KHR(&validateResult, physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
@@ -6490,19 +6197,15 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormats2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceFormats2KHR(vkStream, physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceFormats2KHR(vkStream, physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
return res;
}
#endif
-
#ifdef VK_KHR_variable_pointers
-
#endif
-
#ifdef VK_KHR_get_display_properties2
-
static void validate_vkGetPhysicalDeviceDisplayProperties2KHR(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -6515,7 +6218,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkDisplayProperties2KHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceDisplayProperties2KHR(&validateResult, physicalDevice, pPropertyCount, pProperties);
@@ -6524,8 +6226,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayProperties2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceDisplayProperties2KHR(vkStream, physicalDevice, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceDisplayProperties2KHR(vkStream, physicalDevice, pPropertyCount, pProperties);
return res;
}
@@ -6541,7 +6243,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
VkDisplayPlaneProperties2KHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(&validateResult, physicalDevice, pPropertyCount, pProperties);
@@ -6550,8 +6251,8 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(vkStream, physicalDevice, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(vkStream, physicalDevice, pPropertyCount, pProperties);
return res;
}
@@ -6569,7 +6270,6 @@ VkResult goldfish_frontend_vkGetDisplayModeProperties2KHR(
VkDisplayKHR display,
uint32_t* pPropertyCount,
VkDisplayModeProperties2KHR* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDisplayModeProperties2KHR(&validateResult, physicalDevice, display, pPropertyCount, pProperties);
@@ -6578,8 +6278,8 @@ VkResult goldfish_frontend_vkGetDisplayModeProperties2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDisplayModeProperties2KHR(vkStream, physicalDevice, display, pPropertyCount, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDisplayModeProperties2KHR(vkStream, physicalDevice, display, pPropertyCount, pProperties);
return res;
}
@@ -6595,7 +6295,6 @@ VkResult goldfish_frontend_vkGetDisplayPlaneCapabilities2KHR(
VkPhysicalDevice physicalDevice,
const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
VkDisplayPlaneCapabilities2KHR* pCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDisplayPlaneCapabilities2KHR(&validateResult, physicalDevice, pDisplayPlaneInfo, pCapabilities);
@@ -6604,27 +6303,19 @@ VkResult goldfish_frontend_vkGetDisplayPlaneCapabilities2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetDisplayPlaneCapabilities2KHR(vkStream, physicalDevice, pDisplayPlaneInfo, pCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetDisplayPlaneCapabilities2KHR(vkStream, physicalDevice, pDisplayPlaneInfo, pCapabilities);
return res;
}
#endif
-
#ifdef VK_KHR_dedicated_allocation
-
#endif
-
#ifdef VK_KHR_storage_buffer_storage_class
-
#endif
-
#ifdef VK_KHR_relaxed_block_layout
-
#endif
-
#ifdef VK_KHR_get_memory_requirements2
-
static void validate_vkGetImageMemoryRequirements2KHR(
VkResult* validateResult,
VkDevice device,
@@ -6637,7 +6328,6 @@ void goldfish_frontend_vkGetImageMemoryRequirements2KHR(
VkDevice device,
const VkImageMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageMemoryRequirements2KHR(&validateResult, device, pInfo, pMemoryRequirements);
@@ -6646,8 +6336,8 @@ void goldfish_frontend_vkGetImageMemoryRequirements2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageMemoryRequirements2KHR(vkStream, device, pInfo, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageMemoryRequirements2KHR(vkStream, device, pInfo, pMemoryRequirements);
}
static void validate_vkGetBufferMemoryRequirements2KHR(
@@ -6662,7 +6352,6 @@ void goldfish_frontend_vkGetBufferMemoryRequirements2KHR(
VkDevice device,
const VkBufferMemoryRequirementsInfo2* pInfo,
VkMemoryRequirements2* pMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetBufferMemoryRequirements2KHR(&validateResult, device, pInfo, pMemoryRequirements);
@@ -6671,8 +6360,8 @@ void goldfish_frontend_vkGetBufferMemoryRequirements2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetBufferMemoryRequirements2KHR(vkStream, device, pInfo, pMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetBufferMemoryRequirements2KHR(vkStream, device, pInfo, pMemoryRequirements);
}
static void validate_vkGetImageSparseMemoryRequirements2KHR(
@@ -6689,7 +6378,6 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements2KHR(
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetImageSparseMemoryRequirements2KHR(&validateResult, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
@@ -6698,18 +6386,14 @@ void goldfish_frontend_vkGetImageSparseMemoryRequirements2KHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetImageSparseMemoryRequirements2KHR(vkStream, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetImageSparseMemoryRequirements2KHR(vkStream, device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
}
#endif
-
#ifdef VK_KHR_image_format_list
-
#endif
-
#ifdef VK_KHR_sampler_ycbcr_conversion
-
static void validate_vkCreateSamplerYcbcrConversionKHR(
VkResult* validateResult,
VkDevice device,
@@ -6724,7 +6408,6 @@ VkResult goldfish_frontend_vkCreateSamplerYcbcrConversionKHR(
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSamplerYcbcrConversion* pYcbcrConversion)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateSamplerYcbcrConversionKHR(&validateResult, device, pCreateInfo, pAllocator, pYcbcrConversion);
@@ -6733,8 +6416,8 @@ VkResult goldfish_frontend_vkCreateSamplerYcbcrConversionKHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateSamplerYcbcrConversionKHR(vkStream, device, pCreateInfo, pAllocator, pYcbcrConversion);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateSamplerYcbcrConversionKHR(vkStream, device, pCreateInfo, pAllocator, pYcbcrConversion);
return res;
}
@@ -6750,7 +6433,6 @@ void goldfish_frontend_vkDestroySamplerYcbcrConversionKHR(
VkDevice device,
VkSamplerYcbcrConversion ycbcrConversion,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroySamplerYcbcrConversionKHR(&validateResult, device, ycbcrConversion, pAllocator);
@@ -6759,14 +6441,12 @@ void goldfish_frontend_vkDestroySamplerYcbcrConversionKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroySamplerYcbcrConversionKHR(vkStream, device, ycbcrConversion, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroySamplerYcbcrConversionKHR(vkStream, device, ycbcrConversion, pAllocator);
}
#endif
-
#ifdef VK_KHR_bind_memory2
-
static void validate_vkBindBufferMemory2KHR(
VkResult* validateResult,
VkDevice device,
@@ -6779,7 +6459,6 @@ VkResult goldfish_frontend_vkBindBufferMemory2KHR(
VkDevice device,
uint32_t bindInfoCount,
const VkBindBufferMemoryInfo* pBindInfos)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindBufferMemory2KHR(&validateResult, device, bindInfoCount, pBindInfos);
@@ -6788,8 +6467,8 @@ VkResult goldfish_frontend_vkBindBufferMemory2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindBufferMemory2KHR(vkStream, device, bindInfoCount, pBindInfos);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindBufferMemory2KHR(vkStream, device, bindInfoCount, pBindInfos);
return res;
}
@@ -6805,7 +6484,6 @@ VkResult goldfish_frontend_vkBindImageMemory2KHR(
VkDevice device,
uint32_t bindInfoCount,
const VkBindImageMemoryInfo* pBindInfos)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkBindImageMemory2KHR(&validateResult, device, bindInfoCount, pBindInfos);
@@ -6814,15 +6492,13 @@ VkResult goldfish_frontend_vkBindImageMemory2KHR(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkBindImageMemory2KHR(vkStream, device, bindInfoCount, pBindInfos);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkBindImageMemory2KHR(vkStream, device, bindInfoCount, pBindInfos);
return res;
}
#endif
-
#ifdef VK_KHR_maintenance3
-
static void validate_vkGetDescriptorSetLayoutSupportKHR(
VkResult* validateResult,
VkDevice device,
@@ -6835,7 +6511,6 @@ void goldfish_frontend_vkGetDescriptorSetLayoutSupportKHR(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetDescriptorSetLayoutSupportKHR(&validateResult, device, pCreateInfo, pSupport);
@@ -6844,14 +6519,12 @@ void goldfish_frontend_vkGetDescriptorSetLayoutSupportKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetDescriptorSetLayoutSupportKHR(vkStream, device, pCreateInfo, pSupport);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetDescriptorSetLayoutSupportKHR(vkStream, device, pCreateInfo, pSupport);
}
#endif
-
#ifdef VK_KHR_draw_indirect_count
-
static void validate_vkCmdDrawIndirectCountKHR(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -6872,7 +6545,6 @@ void goldfish_frontend_vkCmdDrawIndirectCountKHR(
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndirectCountKHR(&validateResult, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
@@ -6881,8 +6553,8 @@ void goldfish_frontend_vkCmdDrawIndirectCountKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndirectCountKHR(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndirectCountKHR(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
static void validate_vkCmdDrawIndexedIndirectCountKHR(
@@ -6905,7 +6577,6 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountKHR(
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndexedIndirectCountKHR(&validateResult, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
@@ -6914,18 +6585,14 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountKHR(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndexedIndirectCountKHR(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndexedIndirectCountKHR(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
#endif
-
#ifdef VK_KHR_8bit_storage
-
#endif
-
#ifdef VK_EXT_debug_report
-
static void validate_vkCreateDebugReportCallbackEXT(
VkResult* validateResult,
VkInstance instance,
@@ -6940,7 +6607,6 @@ VkResult goldfish_frontend_vkCreateDebugReportCallbackEXT(
const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugReportCallbackEXT* pCallback)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDebugReportCallbackEXT(&validateResult, instance, pCreateInfo, pAllocator, pCallback);
@@ -6949,8 +6615,8 @@ VkResult goldfish_frontend_vkCreateDebugReportCallbackEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDebugReportCallbackEXT(vkStream, instance, pCreateInfo, pAllocator, pCallback);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDebugReportCallbackEXT(vkStream, instance, pCreateInfo, pAllocator, pCallback);
return res;
}
@@ -6966,7 +6632,6 @@ void goldfish_frontend_vkDestroyDebugReportCallbackEXT(
VkInstance instance,
VkDebugReportCallbackEXT callback,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDebugReportCallbackEXT(&validateResult, instance, callback, pAllocator);
@@ -6975,8 +6640,8 @@ void goldfish_frontend_vkDestroyDebugReportCallbackEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDebugReportCallbackEXT(vkStream, instance, callback, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDebugReportCallbackEXT(vkStream, instance, callback, pAllocator);
}
static void validate_vkDebugReportMessageEXT(
@@ -7001,7 +6666,6 @@ void goldfish_frontend_vkDebugReportMessageEXT(
int32_t messageCode,
const char* pLayerPrefix,
const char* pMessage)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDebugReportMessageEXT(&validateResult, instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
@@ -7010,38 +6674,24 @@ void goldfish_frontend_vkDebugReportMessageEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDebugReportMessageEXT(vkStream, instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDebugReportMessageEXT(vkStream, instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
}
#endif
-
#ifdef VK_NV_glsl_shader
-
#endif
-
#ifdef VK_EXT_depth_range_unrestricted
-
#endif
-
#ifdef VK_IMG_filter_cubic
-
#endif
-
#ifdef VK_AMD_rasterization_order
-
#endif
-
#ifdef VK_AMD_shader_trinary_minmax
-
#endif
-
#ifdef VK_AMD_shader_explicit_vertex_parameter
-
#endif
-
#ifdef VK_EXT_debug_marker
-
static void validate_vkDebugMarkerSetObjectTagEXT(
VkResult* validateResult,
VkDevice device,
@@ -7052,7 +6702,6 @@ static void validate_vkDebugMarkerSetObjectTagEXT(
VkResult goldfish_frontend_vkDebugMarkerSetObjectTagEXT(
VkDevice device,
const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDebugMarkerSetObjectTagEXT(&validateResult, device, pTagInfo);
@@ -7061,8 +6710,8 @@ VkResult goldfish_frontend_vkDebugMarkerSetObjectTagEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkDebugMarkerSetObjectTagEXT(vkStream, device, pTagInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkDebugMarkerSetObjectTagEXT(vkStream, device, pTagInfo);
return res;
}
@@ -7076,7 +6725,6 @@ static void validate_vkDebugMarkerSetObjectNameEXT(
VkResult goldfish_frontend_vkDebugMarkerSetObjectNameEXT(
VkDevice device,
const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDebugMarkerSetObjectNameEXT(&validateResult, device, pNameInfo);
@@ -7085,8 +6733,8 @@ VkResult goldfish_frontend_vkDebugMarkerSetObjectNameEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkDebugMarkerSetObjectNameEXT(vkStream, device, pNameInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkDebugMarkerSetObjectNameEXT(vkStream, device, pNameInfo);
return res;
}
@@ -7100,7 +6748,6 @@ static void validate_vkCmdDebugMarkerBeginEXT(
void goldfish_frontend_vkCmdDebugMarkerBeginEXT(
VkCommandBuffer commandBuffer,
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDebugMarkerBeginEXT(&validateResult, commandBuffer, pMarkerInfo);
@@ -7109,8 +6756,8 @@ void goldfish_frontend_vkCmdDebugMarkerBeginEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDebugMarkerBeginEXT(vkStream, commandBuffer, pMarkerInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDebugMarkerBeginEXT(vkStream, commandBuffer, pMarkerInfo);
}
static void validate_vkCmdDebugMarkerEndEXT(
@@ -7121,7 +6768,6 @@ static void validate_vkCmdDebugMarkerEndEXT(
void goldfish_frontend_vkCmdDebugMarkerEndEXT(
VkCommandBuffer commandBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDebugMarkerEndEXT(&validateResult, commandBuffer);
@@ -7130,8 +6776,8 @@ void goldfish_frontend_vkCmdDebugMarkerEndEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDebugMarkerEndEXT(vkStream, commandBuffer);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDebugMarkerEndEXT(vkStream, commandBuffer);
}
static void validate_vkCmdDebugMarkerInsertEXT(
@@ -7144,7 +6790,6 @@ static void validate_vkCmdDebugMarkerInsertEXT(
void goldfish_frontend_vkCmdDebugMarkerInsertEXT(
VkCommandBuffer commandBuffer,
const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDebugMarkerInsertEXT(&validateResult, commandBuffer, pMarkerInfo);
@@ -7153,22 +6798,16 @@ void goldfish_frontend_vkCmdDebugMarkerInsertEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDebugMarkerInsertEXT(vkStream, commandBuffer, pMarkerInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDebugMarkerInsertEXT(vkStream, commandBuffer, pMarkerInfo);
}
#endif
-
#ifdef VK_AMD_gcn_shader
-
#endif
-
#ifdef VK_NV_dedicated_allocation
-
#endif
-
#ifdef VK_AMD_draw_indirect_count
-
static void validate_vkCmdDrawIndirectCountAMD(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -7189,7 +6828,6 @@ void goldfish_frontend_vkCmdDrawIndirectCountAMD(
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndirectCountAMD(&validateResult, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
@@ -7198,8 +6836,8 @@ void goldfish_frontend_vkCmdDrawIndirectCountAMD(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndirectCountAMD(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndirectCountAMD(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
static void validate_vkCmdDrawIndexedIndirectCountAMD(
@@ -7222,7 +6860,6 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountAMD(
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdDrawIndexedIndirectCountAMD(&validateResult, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
@@ -7231,30 +6868,20 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountAMD(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdDrawIndexedIndirectCountAMD(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdDrawIndexedIndirectCountAMD(vkStream, commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
#endif
-
#ifdef VK_AMD_negative_viewport_height
-
#endif
-
#ifdef VK_AMD_gpu_shader_half_float
-
#endif
-
#ifdef VK_AMD_shader_ballot
-
#endif
-
#ifdef VK_AMD_texture_gather_bias_lod
-
#endif
-
#ifdef VK_AMD_shader_info
-
static void validate_vkGetShaderInfoAMD(
VkResult* validateResult,
VkDevice device,
@@ -7273,7 +6900,6 @@ VkResult goldfish_frontend_vkGetShaderInfoAMD(
VkShaderInfoTypeAMD infoType,
size_t* pInfoSize,
void* pInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetShaderInfoAMD(&validateResult, device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
@@ -7282,23 +6908,17 @@ VkResult goldfish_frontend_vkGetShaderInfoAMD(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetShaderInfoAMD(vkStream, device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetShaderInfoAMD(vkStream, device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
return res;
}
#endif
-
#ifdef VK_AMD_shader_image_load_store_lod
-
#endif
-
#ifdef VK_IMG_format_pvrtc
-
#endif
-
#ifdef VK_NV_external_memory_capabilities
-
static void validate_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -7321,7 +6941,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
VkImageCreateFlags flags,
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(&validateResult, physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
@@ -7330,19 +6949,15 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(vkStream, physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(vkStream, physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
return res;
}
#endif
-
#ifdef VK_NV_external_memory
-
#endif
-
#ifdef VK_NV_external_memory_win32
-
static void validate_vkGetMemoryWin32HandleNV(
VkResult* validateResult,
VkDevice device,
@@ -7357,7 +6972,6 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandleNV(
VkDeviceMemory memory,
VkExternalMemoryHandleTypeFlagsNV handleType,
HANDLE* pHandle)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryWin32HandleNV(&validateResult, device, memory, handleType, pHandle);
@@ -7366,23 +6980,17 @@ VkResult goldfish_frontend_vkGetMemoryWin32HandleNV(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryWin32HandleNV(vkStream, device, memory, handleType, pHandle);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryWin32HandleNV(vkStream, device, memory, handleType, pHandle);
return res;
}
#endif
-
#ifdef VK_NV_win32_keyed_mutex
-
#endif
-
#ifdef VK_EXT_validation_flags
-
#endif
-
#ifdef VK_NN_vi_surface
-
static void validate_vkCreateViSurfaceNN(
VkResult* validateResult,
VkInstance instance,
@@ -7397,7 +7005,6 @@ VkResult goldfish_frontend_vkCreateViSurfaceNN(
const VkViSurfaceCreateInfoNN* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateViSurfaceNN(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -7406,23 +7013,17 @@ VkResult goldfish_frontend_vkCreateViSurfaceNN(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateViSurfaceNN(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateViSurfaceNN(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
#endif
-
#ifdef VK_EXT_shader_subgroup_ballot
-
#endif
-
#ifdef VK_EXT_shader_subgroup_vote
-
#endif
-
#ifdef VK_EXT_conditional_rendering
-
static void validate_vkCmdBeginConditionalRenderingEXT(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -7433,7 +7034,6 @@ static void validate_vkCmdBeginConditionalRenderingEXT(
void goldfish_frontend_vkCmdBeginConditionalRenderingEXT(
VkCommandBuffer commandBuffer,
const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBeginConditionalRenderingEXT(&validateResult, commandBuffer, pConditionalRenderingBegin);
@@ -7442,8 +7042,8 @@ void goldfish_frontend_vkCmdBeginConditionalRenderingEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBeginConditionalRenderingEXT(vkStream, commandBuffer, pConditionalRenderingBegin);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBeginConditionalRenderingEXT(vkStream, commandBuffer, pConditionalRenderingBegin);
}
static void validate_vkCmdEndConditionalRenderingEXT(
@@ -7454,7 +7054,6 @@ static void validate_vkCmdEndConditionalRenderingEXT(
void goldfish_frontend_vkCmdEndConditionalRenderingEXT(
VkCommandBuffer commandBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdEndConditionalRenderingEXT(&validateResult, commandBuffer);
@@ -7463,14 +7062,12 @@ void goldfish_frontend_vkCmdEndConditionalRenderingEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdEndConditionalRenderingEXT(vkStream, commandBuffer);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdEndConditionalRenderingEXT(vkStream, commandBuffer);
}
#endif
-
#ifdef VK_NVX_device_generated_commands
-
static void validate_vkCmdProcessCommandsNVX(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -7481,7 +7078,6 @@ static void validate_vkCmdProcessCommandsNVX(
void goldfish_frontend_vkCmdProcessCommandsNVX(
VkCommandBuffer commandBuffer,
const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdProcessCommandsNVX(&validateResult, commandBuffer, pProcessCommandsInfo);
@@ -7490,8 +7086,8 @@ void goldfish_frontend_vkCmdProcessCommandsNVX(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdProcessCommandsNVX(vkStream, commandBuffer, pProcessCommandsInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdProcessCommandsNVX(vkStream, commandBuffer, pProcessCommandsInfo);
}
static void validate_vkCmdReserveSpaceForCommandsNVX(
@@ -7504,7 +7100,6 @@ static void validate_vkCmdReserveSpaceForCommandsNVX(
void goldfish_frontend_vkCmdReserveSpaceForCommandsNVX(
VkCommandBuffer commandBuffer,
const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdReserveSpaceForCommandsNVX(&validateResult, commandBuffer, pReserveSpaceInfo);
@@ -7513,8 +7108,8 @@ void goldfish_frontend_vkCmdReserveSpaceForCommandsNVX(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdReserveSpaceForCommandsNVX(vkStream, commandBuffer, pReserveSpaceInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdReserveSpaceForCommandsNVX(vkStream, commandBuffer, pReserveSpaceInfo);
}
static void validate_vkCreateIndirectCommandsLayoutNVX(
@@ -7531,7 +7126,6 @@ VkResult goldfish_frontend_vkCreateIndirectCommandsLayoutNVX(
const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateIndirectCommandsLayoutNVX(&validateResult, device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
@@ -7540,8 +7134,8 @@ VkResult goldfish_frontend_vkCreateIndirectCommandsLayoutNVX(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateIndirectCommandsLayoutNVX(vkStream, device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateIndirectCommandsLayoutNVX(vkStream, device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
return res;
}
@@ -7557,7 +7151,6 @@ void goldfish_frontend_vkDestroyIndirectCommandsLayoutNVX(
VkDevice device,
VkIndirectCommandsLayoutNVX indirectCommandsLayout,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyIndirectCommandsLayoutNVX(&validateResult, device, indirectCommandsLayout, pAllocator);
@@ -7566,8 +7159,8 @@ void goldfish_frontend_vkDestroyIndirectCommandsLayoutNVX(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyIndirectCommandsLayoutNVX(vkStream, device, indirectCommandsLayout, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyIndirectCommandsLayoutNVX(vkStream, device, indirectCommandsLayout, pAllocator);
}
static void validate_vkCreateObjectTableNVX(
@@ -7584,7 +7177,6 @@ VkResult goldfish_frontend_vkCreateObjectTableNVX(
const VkObjectTableCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkObjectTableNVX* pObjectTable)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateObjectTableNVX(&validateResult, device, pCreateInfo, pAllocator, pObjectTable);
@@ -7593,8 +7185,8 @@ VkResult goldfish_frontend_vkCreateObjectTableNVX(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateObjectTableNVX(vkStream, device, pCreateInfo, pAllocator, pObjectTable);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateObjectTableNVX(vkStream, device, pCreateInfo, pAllocator, pObjectTable);
return res;
}
@@ -7610,7 +7202,6 @@ void goldfish_frontend_vkDestroyObjectTableNVX(
VkDevice device,
VkObjectTableNVX objectTable,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyObjectTableNVX(&validateResult, device, objectTable, pAllocator);
@@ -7619,8 +7210,8 @@ void goldfish_frontend_vkDestroyObjectTableNVX(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyObjectTableNVX(vkStream, device, objectTable, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyObjectTableNVX(vkStream, device, objectTable, pAllocator);
}
static void validate_vkRegisterObjectsNVX(
@@ -7628,7 +7219,7 @@ static void validate_vkRegisterObjectsNVX(
VkDevice device,
VkObjectTableNVX objectTable,
uint32_t objectCount,
- const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
const uint32_t* pObjectIndices)
{
}
@@ -7637,9 +7228,8 @@ VkResult goldfish_frontend_vkRegisterObjectsNVX(
VkDevice device,
VkObjectTableNVX objectTable,
uint32_t objectCount,
- const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
const uint32_t* pObjectIndices)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkRegisterObjectsNVX(&validateResult, device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
@@ -7648,8 +7238,8 @@ VkResult goldfish_frontend_vkRegisterObjectsNVX(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkRegisterObjectsNVX(vkStream, device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkRegisterObjectsNVX(vkStream, device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
return res;
}
@@ -7669,7 +7259,6 @@ VkResult goldfish_frontend_vkUnregisterObjectsNVX(
uint32_t objectCount,
const VkObjectEntryTypeNVX* pObjectEntryTypes,
const uint32_t* pObjectIndices)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkUnregisterObjectsNVX(&validateResult, device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
@@ -7678,8 +7267,8 @@ VkResult goldfish_frontend_vkUnregisterObjectsNVX(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkUnregisterObjectsNVX(vkStream, device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkUnregisterObjectsNVX(vkStream, device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
return res;
}
@@ -7695,7 +7284,6 @@ void goldfish_frontend_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
VkPhysicalDevice physicalDevice,
VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(&validateResult, physicalDevice, pFeatures, pLimits);
@@ -7704,14 +7292,12 @@ void goldfish_frontend_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(vkStream, physicalDevice, pFeatures, pLimits);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(vkStream, physicalDevice, pFeatures, pLimits);
}
#endif
-
#ifdef VK_NV_clip_space_w_scaling
-
static void validate_vkCmdSetViewportWScalingNV(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -7726,7 +7312,6 @@ void goldfish_frontend_vkCmdSetViewportWScalingNV(
uint32_t firstViewport,
uint32_t viewportCount,
const VkViewportWScalingNV* pViewportWScalings)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetViewportWScalingNV(&validateResult, commandBuffer, firstViewport, viewportCount, pViewportWScalings);
@@ -7735,14 +7320,12 @@ void goldfish_frontend_vkCmdSetViewportWScalingNV(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetViewportWScalingNV(vkStream, commandBuffer, firstViewport, viewportCount, pViewportWScalings);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetViewportWScalingNV(vkStream, commandBuffer, firstViewport, viewportCount, pViewportWScalings);
}
#endif
-
#ifdef VK_EXT_direct_mode_display
-
static void validate_vkReleaseDisplayEXT(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -7753,7 +7336,6 @@ static void validate_vkReleaseDisplayEXT(
VkResult goldfish_frontend_vkReleaseDisplayEXT(
VkPhysicalDevice physicalDevice,
VkDisplayKHR display)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkReleaseDisplayEXT(&validateResult, physicalDevice, display);
@@ -7762,15 +7344,13 @@ VkResult goldfish_frontend_vkReleaseDisplayEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkReleaseDisplayEXT(vkStream, physicalDevice, display);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkReleaseDisplayEXT(vkStream, physicalDevice, display);
return res;
}
#endif
-
#ifdef VK_EXT_acquire_xlib_display
-
static void validate_vkAcquireXlibDisplayEXT(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -7783,7 +7363,6 @@ VkResult goldfish_frontend_vkAcquireXlibDisplayEXT(
VkPhysicalDevice physicalDevice,
Display* dpy,
VkDisplayKHR display)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkAcquireXlibDisplayEXT(&validateResult, physicalDevice, dpy, display);
@@ -7792,8 +7371,8 @@ VkResult goldfish_frontend_vkAcquireXlibDisplayEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkAcquireXlibDisplayEXT(vkStream, physicalDevice, dpy, display);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkAcquireXlibDisplayEXT(vkStream, physicalDevice, dpy, display);
return res;
}
@@ -7811,7 +7390,6 @@ VkResult goldfish_frontend_vkGetRandROutputDisplayEXT(
Display* dpy,
RROutput rrOutput,
VkDisplayKHR* pDisplay)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetRandROutputDisplayEXT(&validateResult, physicalDevice, dpy, rrOutput, pDisplay);
@@ -7820,15 +7398,13 @@ VkResult goldfish_frontend_vkGetRandROutputDisplayEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetRandROutputDisplayEXT(vkStream, physicalDevice, dpy, rrOutput, pDisplay);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetRandROutputDisplayEXT(vkStream, physicalDevice, dpy, rrOutput, pDisplay);
return res;
}
#endif
-
#ifdef VK_EXT_display_surface_counter
-
static void validate_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
VkResult* validateResult,
VkPhysicalDevice physicalDevice,
@@ -7841,7 +7417,6 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceSurfaceCapabilities2EXT(&validateResult, physicalDevice, surface, pSurfaceCapabilities);
@@ -7850,15 +7425,13 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPhysicalDeviceSurfaceCapabilities2EXT(vkStream, physicalDevice, surface, pSurfaceCapabilities);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPhysicalDeviceSurfaceCapabilities2EXT(vkStream, physicalDevice, surface, pSurfaceCapabilities);
return res;
}
#endif
-
#ifdef VK_EXT_display_control
-
static void validate_vkDisplayPowerControlEXT(
VkResult* validateResult,
VkDevice device,
@@ -7871,7 +7444,6 @@ VkResult goldfish_frontend_vkDisplayPowerControlEXT(
VkDevice device,
VkDisplayKHR display,
const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDisplayPowerControlEXT(&validateResult, device, display, pDisplayPowerInfo);
@@ -7880,8 +7452,8 @@ VkResult goldfish_frontend_vkDisplayPowerControlEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkDisplayPowerControlEXT(vkStream, device, display, pDisplayPowerInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkDisplayPowerControlEXT(vkStream, device, display, pDisplayPowerInfo);
return res;
}
@@ -7899,7 +7471,6 @@ VkResult goldfish_frontend_vkRegisterDeviceEventEXT(
const VkDeviceEventInfoEXT* pDeviceEventInfo,
const VkAllocationCallbacks* pAllocator,
VkFence* pFence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkRegisterDeviceEventEXT(&validateResult, device, pDeviceEventInfo, pAllocator, pFence);
@@ -7908,8 +7479,8 @@ VkResult goldfish_frontend_vkRegisterDeviceEventEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkRegisterDeviceEventEXT(vkStream, device, pDeviceEventInfo, pAllocator, pFence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkRegisterDeviceEventEXT(vkStream, device, pDeviceEventInfo, pAllocator, pFence);
return res;
}
@@ -7929,7 +7500,6 @@ VkResult goldfish_frontend_vkRegisterDisplayEventEXT(
const VkDisplayEventInfoEXT* pDisplayEventInfo,
const VkAllocationCallbacks* pAllocator,
VkFence* pFence)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkRegisterDisplayEventEXT(&validateResult, device, display, pDisplayEventInfo, pAllocator, pFence);
@@ -7938,8 +7508,8 @@ VkResult goldfish_frontend_vkRegisterDisplayEventEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkRegisterDisplayEventEXT(vkStream, device, display, pDisplayEventInfo, pAllocator, pFence);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkRegisterDisplayEventEXT(vkStream, device, display, pDisplayEventInfo, pAllocator, pFence);
return res;
}
@@ -7957,7 +7527,6 @@ VkResult goldfish_frontend_vkGetSwapchainCounterEXT(
VkSwapchainKHR swapchain,
VkSurfaceCounterFlagBitsEXT counter,
uint64_t* pCounterValue)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetSwapchainCounterEXT(&validateResult, device, swapchain, counter, pCounterValue);
@@ -7966,15 +7535,13 @@ VkResult goldfish_frontend_vkGetSwapchainCounterEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetSwapchainCounterEXT(vkStream, device, swapchain, counter, pCounterValue);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetSwapchainCounterEXT(vkStream, device, swapchain, counter, pCounterValue);
return res;
}
#endif
-
#ifdef VK_GOOGLE_display_timing
-
static void validate_vkGetRefreshCycleDurationGOOGLE(
VkResult* validateResult,
VkDevice device,
@@ -7987,7 +7554,6 @@ VkResult goldfish_frontend_vkGetRefreshCycleDurationGOOGLE(
VkDevice device,
VkSwapchainKHR swapchain,
VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetRefreshCycleDurationGOOGLE(&validateResult, device, swapchain, pDisplayTimingProperties);
@@ -7996,8 +7562,8 @@ VkResult goldfish_frontend_vkGetRefreshCycleDurationGOOGLE(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetRefreshCycleDurationGOOGLE(vkStream, device, swapchain, pDisplayTimingProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetRefreshCycleDurationGOOGLE(vkStream, device, swapchain, pDisplayTimingProperties);
return res;
}
@@ -8015,7 +7581,6 @@ VkResult goldfish_frontend_vkGetPastPresentationTimingGOOGLE(
VkSwapchainKHR swapchain,
uint32_t* pPresentationTimingCount,
VkPastPresentationTimingGOOGLE* pPresentationTimings)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPastPresentationTimingGOOGLE(&validateResult, device, swapchain, pPresentationTimingCount, pPresentationTimings);
@@ -8024,35 +7589,23 @@ VkResult goldfish_frontend_vkGetPastPresentationTimingGOOGLE(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetPastPresentationTimingGOOGLE(vkStream, device, swapchain, pPresentationTimingCount, pPresentationTimings);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetPastPresentationTimingGOOGLE(vkStream, device, swapchain, pPresentationTimingCount, pPresentationTimings);
return res;
}
#endif
-
#ifdef VK_NV_sample_mask_override_coverage
-
#endif
-
#ifdef VK_NV_geometry_shader_passthrough
-
#endif
-
#ifdef VK_NV_viewport_array2
-
#endif
-
#ifdef VK_NVX_multiview_per_view_attributes
-
#endif
-
#ifdef VK_NV_viewport_swizzle
-
#endif
-
#ifdef VK_EXT_discard_rectangles
-
static void validate_vkCmdSetDiscardRectangleEXT(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -8067,7 +7620,6 @@ void goldfish_frontend_vkCmdSetDiscardRectangleEXT(
uint32_t firstDiscardRectangle,
uint32_t discardRectangleCount,
const VkRect2D* pDiscardRectangles)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetDiscardRectangleEXT(&validateResult, commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
@@ -8076,22 +7628,16 @@ void goldfish_frontend_vkCmdSetDiscardRectangleEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetDiscardRectangleEXT(vkStream, commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetDiscardRectangleEXT(vkStream, commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
}
#endif
-
#ifdef VK_EXT_conservative_rasterization
-
#endif
-
#ifdef VK_EXT_swapchain_colorspace
-
#endif
-
#ifdef VK_EXT_hdr_metadata
-
static void validate_vkSetHdrMetadataEXT(
VkResult* validateResult,
VkDevice device,
@@ -8106,7 +7652,6 @@ void goldfish_frontend_vkSetHdrMetadataEXT(
uint32_t swapchainCount,
const VkSwapchainKHR* pSwapchains,
const VkHdrMetadataEXT* pMetadata)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkSetHdrMetadataEXT(&validateResult, device, swapchainCount, pSwapchains, pMetadata);
@@ -8115,14 +7660,12 @@ void goldfish_frontend_vkSetHdrMetadataEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkSetHdrMetadataEXT(vkStream, device, swapchainCount, pSwapchains, pMetadata);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkSetHdrMetadataEXT(vkStream, device, swapchainCount, pSwapchains, pMetadata);
}
#endif
-
#ifdef VK_MVK_ios_surface
-
static void validate_vkCreateIOSSurfaceMVK(
VkResult* validateResult,
VkInstance instance,
@@ -8137,7 +7680,6 @@ VkResult goldfish_frontend_vkCreateIOSSurfaceMVK(
const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateIOSSurfaceMVK(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -8146,15 +7688,13 @@ VkResult goldfish_frontend_vkCreateIOSSurfaceMVK(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateIOSSurfaceMVK(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateIOSSurfaceMVK(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
#endif
-
#ifdef VK_MVK_macos_surface
-
static void validate_vkCreateMacOSSurfaceMVK(
VkResult* validateResult,
VkInstance instance,
@@ -8169,7 +7709,6 @@ VkResult goldfish_frontend_vkCreateMacOSSurfaceMVK(
const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateMacOSSurfaceMVK(&validateResult, instance, pCreateInfo, pAllocator, pSurface);
@@ -8178,23 +7717,17 @@ VkResult goldfish_frontend_vkCreateMacOSSurfaceMVK(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateMacOSSurfaceMVK(vkStream, instance, pCreateInfo, pAllocator, pSurface);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateMacOSSurfaceMVK(vkStream, instance, pCreateInfo, pAllocator, pSurface);
return res;
}
#endif
-
#ifdef VK_EXT_external_memory_dma_buf
-
#endif
-
#ifdef VK_EXT_queue_family_foreign
-
#endif
-
#ifdef VK_EXT_debug_utils
-
static void validate_vkSetDebugUtilsObjectNameEXT(
VkResult* validateResult,
VkDevice device,
@@ -8205,7 +7738,6 @@ static void validate_vkSetDebugUtilsObjectNameEXT(
VkResult goldfish_frontend_vkSetDebugUtilsObjectNameEXT(
VkDevice device,
const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkSetDebugUtilsObjectNameEXT(&validateResult, device, pNameInfo);
@@ -8214,8 +7746,8 @@ VkResult goldfish_frontend_vkSetDebugUtilsObjectNameEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkSetDebugUtilsObjectNameEXT(vkStream, device, pNameInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkSetDebugUtilsObjectNameEXT(vkStream, device, pNameInfo);
return res;
}
@@ -8229,7 +7761,6 @@ static void validate_vkSetDebugUtilsObjectTagEXT(
VkResult goldfish_frontend_vkSetDebugUtilsObjectTagEXT(
VkDevice device,
const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkSetDebugUtilsObjectTagEXT(&validateResult, device, pTagInfo);
@@ -8238,8 +7769,8 @@ VkResult goldfish_frontend_vkSetDebugUtilsObjectTagEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkSetDebugUtilsObjectTagEXT(vkStream, device, pTagInfo);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkSetDebugUtilsObjectTagEXT(vkStream, device, pTagInfo);
return res;
}
@@ -8253,7 +7784,6 @@ static void validate_vkQueueBeginDebugUtilsLabelEXT(
void goldfish_frontend_vkQueueBeginDebugUtilsLabelEXT(
VkQueue queue,
const VkDebugUtilsLabelEXT* pLabelInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueBeginDebugUtilsLabelEXT(&validateResult, queue, pLabelInfo);
@@ -8262,8 +7792,8 @@ void goldfish_frontend_vkQueueBeginDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkQueueBeginDebugUtilsLabelEXT(vkStream, queue, pLabelInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkQueueBeginDebugUtilsLabelEXT(vkStream, queue, pLabelInfo);
}
static void validate_vkQueueEndDebugUtilsLabelEXT(
@@ -8274,7 +7804,6 @@ static void validate_vkQueueEndDebugUtilsLabelEXT(
void goldfish_frontend_vkQueueEndDebugUtilsLabelEXT(
VkQueue queue)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueEndDebugUtilsLabelEXT(&validateResult, queue);
@@ -8283,8 +7812,8 @@ void goldfish_frontend_vkQueueEndDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkQueueEndDebugUtilsLabelEXT(vkStream, queue);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkQueueEndDebugUtilsLabelEXT(vkStream, queue);
}
static void validate_vkQueueInsertDebugUtilsLabelEXT(
@@ -8297,7 +7826,6 @@ static void validate_vkQueueInsertDebugUtilsLabelEXT(
void goldfish_frontend_vkQueueInsertDebugUtilsLabelEXT(
VkQueue queue,
const VkDebugUtilsLabelEXT* pLabelInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkQueueInsertDebugUtilsLabelEXT(&validateResult, queue, pLabelInfo);
@@ -8306,8 +7834,8 @@ void goldfish_frontend_vkQueueInsertDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkQueueInsertDebugUtilsLabelEXT(vkStream, queue, pLabelInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkQueueInsertDebugUtilsLabelEXT(vkStream, queue, pLabelInfo);
}
static void validate_vkCmdBeginDebugUtilsLabelEXT(
@@ -8320,7 +7848,6 @@ static void validate_vkCmdBeginDebugUtilsLabelEXT(
void goldfish_frontend_vkCmdBeginDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer,
const VkDebugUtilsLabelEXT* pLabelInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdBeginDebugUtilsLabelEXT(&validateResult, commandBuffer, pLabelInfo);
@@ -8329,8 +7856,8 @@ void goldfish_frontend_vkCmdBeginDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdBeginDebugUtilsLabelEXT(vkStream, commandBuffer, pLabelInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdBeginDebugUtilsLabelEXT(vkStream, commandBuffer, pLabelInfo);
}
static void validate_vkCmdEndDebugUtilsLabelEXT(
@@ -8341,7 +7868,6 @@ static void validate_vkCmdEndDebugUtilsLabelEXT(
void goldfish_frontend_vkCmdEndDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdEndDebugUtilsLabelEXT(&validateResult, commandBuffer);
@@ -8350,8 +7876,8 @@ void goldfish_frontend_vkCmdEndDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdEndDebugUtilsLabelEXT(vkStream, commandBuffer);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdEndDebugUtilsLabelEXT(vkStream, commandBuffer);
}
static void validate_vkCmdInsertDebugUtilsLabelEXT(
@@ -8364,7 +7890,6 @@ static void validate_vkCmdInsertDebugUtilsLabelEXT(
void goldfish_frontend_vkCmdInsertDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer,
const VkDebugUtilsLabelEXT* pLabelInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdInsertDebugUtilsLabelEXT(&validateResult, commandBuffer, pLabelInfo);
@@ -8373,8 +7898,8 @@ void goldfish_frontend_vkCmdInsertDebugUtilsLabelEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdInsertDebugUtilsLabelEXT(vkStream, commandBuffer, pLabelInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdInsertDebugUtilsLabelEXT(vkStream, commandBuffer, pLabelInfo);
}
static void validate_vkCreateDebugUtilsMessengerEXT(
@@ -8391,7 +7916,6 @@ VkResult goldfish_frontend_vkCreateDebugUtilsMessengerEXT(
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkDebugUtilsMessengerEXT* pMessenger)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateDebugUtilsMessengerEXT(&validateResult, instance, pCreateInfo, pAllocator, pMessenger);
@@ -8400,8 +7924,8 @@ VkResult goldfish_frontend_vkCreateDebugUtilsMessengerEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateDebugUtilsMessengerEXT(vkStream, instance, pCreateInfo, pAllocator, pMessenger);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateDebugUtilsMessengerEXT(vkStream, instance, pCreateInfo, pAllocator, pMessenger);
return res;
}
@@ -8417,7 +7941,6 @@ void goldfish_frontend_vkDestroyDebugUtilsMessengerEXT(
VkInstance instance,
VkDebugUtilsMessengerEXT messenger,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyDebugUtilsMessengerEXT(&validateResult, instance, messenger, pAllocator);
@@ -8426,8 +7949,8 @@ void goldfish_frontend_vkDestroyDebugUtilsMessengerEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyDebugUtilsMessengerEXT(vkStream, instance, messenger, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyDebugUtilsMessengerEXT(vkStream, instance, messenger, pAllocator);
}
static void validate_vkSubmitDebugUtilsMessageEXT(
@@ -8444,7 +7967,6 @@ void goldfish_frontend_vkSubmitDebugUtilsMessageEXT(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkSubmitDebugUtilsMessageEXT(&validateResult, instance, messageSeverity, messageTypes, pCallbackData);
@@ -8453,27 +7975,24 @@ void goldfish_frontend_vkSubmitDebugUtilsMessageEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkSubmitDebugUtilsMessageEXT(vkStream, instance, messageSeverity, messageTypes, pCallbackData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkSubmitDebugUtilsMessageEXT(vkStream, instance, messageSeverity, messageTypes, pCallbackData);
}
#endif
-
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-
static void validate_vkGetAndroidHardwareBufferPropertiesANDROID(
VkResult* validateResult,
VkDevice device,
- const struct AHardwareBuffer* buffer,
+ const AHardwareBuffer* buffer,
VkAndroidHardwareBufferPropertiesANDROID* pProperties)
{
}
VkResult goldfish_frontend_vkGetAndroidHardwareBufferPropertiesANDROID(
VkDevice device,
- const struct AHardwareBuffer* buffer,
+ const AHardwareBuffer* buffer,
VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetAndroidHardwareBufferPropertiesANDROID(&validateResult, device, buffer, pProperties);
@@ -8482,8 +8001,8 @@ VkResult goldfish_frontend_vkGetAndroidHardwareBufferPropertiesANDROID(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetAndroidHardwareBufferPropertiesANDROID(vkStream, device, buffer, pProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetAndroidHardwareBufferPropertiesANDROID(vkStream, device, buffer, pProperties);
return res;
}
@@ -8491,15 +8010,14 @@ static void validate_vkGetMemoryAndroidHardwareBufferANDROID(
VkResult* validateResult,
VkDevice device,
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer)
+ AHardwareBuffer** pBuffer)
{
}
VkResult goldfish_frontend_vkGetMemoryAndroidHardwareBufferANDROID(
VkDevice device,
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer)
-
+ AHardwareBuffer** pBuffer)
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryAndroidHardwareBufferANDROID(&validateResult, device, pInfo, pBuffer);
@@ -8508,35 +8026,23 @@ VkResult goldfish_frontend_vkGetMemoryAndroidHardwareBufferANDROID(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryAndroidHardwareBufferANDROID(vkStream, device, pInfo, pBuffer);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryAndroidHardwareBufferANDROID(vkStream, device, pInfo, pBuffer);
return res;
}
#endif
-
#ifdef VK_EXT_sampler_filter_minmax
-
#endif
-
#ifdef VK_AMD_gpu_shader_int16
-
#endif
-
#ifdef VK_AMD_mixed_attachment_samples
-
#endif
-
#ifdef VK_AMD_shader_fragment_mask
-
#endif
-
#ifdef VK_EXT_shader_stencil_export
-
#endif
-
#ifdef VK_EXT_sample_locations
-
static void validate_vkCmdSetSampleLocationsEXT(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -8547,7 +8053,6 @@ static void validate_vkCmdSetSampleLocationsEXT(
void goldfish_frontend_vkCmdSetSampleLocationsEXT(
VkCommandBuffer commandBuffer,
const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetSampleLocationsEXT(&validateResult, commandBuffer, pSampleLocationsInfo);
@@ -8556,8 +8061,8 @@ void goldfish_frontend_vkCmdSetSampleLocationsEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetSampleLocationsEXT(vkStream, commandBuffer, pSampleLocationsInfo);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetSampleLocationsEXT(vkStream, commandBuffer, pSampleLocationsInfo);
}
static void validate_vkGetPhysicalDeviceMultisamplePropertiesEXT(
@@ -8572,7 +8077,6 @@ void goldfish_frontend_vkGetPhysicalDeviceMultisamplePropertiesEXT(
VkPhysicalDevice physicalDevice,
VkSampleCountFlagBits samples,
VkMultisamplePropertiesEXT* pMultisampleProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetPhysicalDeviceMultisamplePropertiesEXT(&validateResult, physicalDevice, samples, pMultisampleProperties);
@@ -8581,34 +8085,22 @@ void goldfish_frontend_vkGetPhysicalDeviceMultisamplePropertiesEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetPhysicalDeviceMultisamplePropertiesEXT(vkStream, physicalDevice, samples, pMultisampleProperties);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetPhysicalDeviceMultisamplePropertiesEXT(vkStream, physicalDevice, samples, pMultisampleProperties);
}
#endif
-
#ifdef VK_EXT_blend_operation_advanced
-
#endif
-
#ifdef VK_NV_fragment_coverage_to_color
-
#endif
-
#ifdef VK_NV_framebuffer_mixed_samples
-
#endif
-
#ifdef VK_NV_fill_rectangle
-
#endif
-
#ifdef VK_EXT_post_depth_coverage
-
#endif
-
#ifdef VK_EXT_validation_cache
-
static void validate_vkCreateValidationCacheEXT(
VkResult* validateResult,
VkDevice device,
@@ -8623,7 +8115,6 @@ VkResult goldfish_frontend_vkCreateValidationCacheEXT(
const VkValidationCacheCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkValidationCacheEXT* pValidationCache)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCreateValidationCacheEXT(&validateResult, device, pCreateInfo, pAllocator, pValidationCache);
@@ -8632,8 +8123,8 @@ VkResult goldfish_frontend_vkCreateValidationCacheEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkCreateValidationCacheEXT(vkStream, device, pCreateInfo, pAllocator, pValidationCache);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkCreateValidationCacheEXT(vkStream, device, pCreateInfo, pAllocator, pValidationCache);
return res;
}
@@ -8649,7 +8140,6 @@ void goldfish_frontend_vkDestroyValidationCacheEXT(
VkDevice device,
VkValidationCacheEXT validationCache,
const VkAllocationCallbacks* pAllocator)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkDestroyValidationCacheEXT(&validateResult, device, validationCache, pAllocator);
@@ -8658,8 +8148,8 @@ void goldfish_frontend_vkDestroyValidationCacheEXT(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkDestroyValidationCacheEXT(vkStream, device, validationCache, pAllocator);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkDestroyValidationCacheEXT(vkStream, device, validationCache, pAllocator);
}
static void validate_vkMergeValidationCachesEXT(
@@ -8676,7 +8166,6 @@ VkResult goldfish_frontend_vkMergeValidationCachesEXT(
VkValidationCacheEXT dstCache,
uint32_t srcCacheCount,
const VkValidationCacheEXT* pSrcCaches)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkMergeValidationCachesEXT(&validateResult, device, dstCache, srcCacheCount, pSrcCaches);
@@ -8685,8 +8174,8 @@ VkResult goldfish_frontend_vkMergeValidationCachesEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkMergeValidationCachesEXT(vkStream, device, dstCache, srcCacheCount, pSrcCaches);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkMergeValidationCachesEXT(vkStream, device, dstCache, srcCacheCount, pSrcCaches);
return res;
}
@@ -8704,7 +8193,6 @@ VkResult goldfish_frontend_vkGetValidationCacheDataEXT(
VkValidationCacheEXT validationCache,
size_t* pDataSize,
void* pData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetValidationCacheDataEXT(&validateResult, device, validationCache, pDataSize, pData);
@@ -8713,27 +8201,19 @@ VkResult goldfish_frontend_vkGetValidationCacheDataEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetValidationCacheDataEXT(vkStream, device, validationCache, pDataSize, pData);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetValidationCacheDataEXT(vkStream, device, validationCache, pDataSize, pData);
return res;
}
#endif
-
#ifdef VK_EXT_descriptor_indexing
-
#endif
-
#ifdef VK_EXT_shader_viewport_index_layer
-
#endif
-
#ifdef VK_EXT_global_priority
-
#endif
-
#ifdef VK_EXT_external_memory_host
-
static void validate_vkGetMemoryHostPointerPropertiesEXT(
VkResult* validateResult,
VkDevice device,
@@ -8748,7 +8228,6 @@ VkResult goldfish_frontend_vkGetMemoryHostPointerPropertiesEXT(
VkExternalMemoryHandleTypeFlagBits handleType,
const void* pHostPointer,
VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetMemoryHostPointerPropertiesEXT(&validateResult, device, handleType, pHostPointer, pMemoryHostPointerProperties);
@@ -8757,15 +8236,13 @@ VkResult goldfish_frontend_vkGetMemoryHostPointerPropertiesEXT(
return validateResult;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- VkResult res = encode_vkGetMemoryHostPointerPropertiesEXT(vkStream, device, handleType, pHostPointer, pMemoryHostPointerProperties);
+ VulkanStream* vkStream = nullptr;
+ VkResult res = marshal_vkGetMemoryHostPointerPropertiesEXT(vkStream, device, handleType, pHostPointer, pMemoryHostPointerProperties);
return res;
}
#endif
-
#ifdef VK_AMD_buffer_marker
-
static void validate_vkCmdWriteBufferMarkerAMD(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -8782,7 +8259,6 @@ void goldfish_frontend_vkCmdWriteBufferMarkerAMD(
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
uint32_t marker)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdWriteBufferMarkerAMD(&validateResult, commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
@@ -8791,26 +8267,18 @@ void goldfish_frontend_vkCmdWriteBufferMarkerAMD(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdWriteBufferMarkerAMD(vkStream, commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdWriteBufferMarkerAMD(vkStream, commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
}
#endif
-
#ifdef VK_AMD_shader_core_properties
-
#endif
-
#ifdef VK_EXT_vertex_attribute_divisor
-
#endif
-
#ifdef VK_NV_shader_subgroup_partitioned
-
#endif
-
#ifdef VK_NV_device_diagnostic_checkpoints
-
static void validate_vkCmdSetCheckpointNV(
VkResult* validateResult,
VkCommandBuffer commandBuffer,
@@ -8821,7 +8289,6 @@ static void validate_vkCmdSetCheckpointNV(
void goldfish_frontend_vkCmdSetCheckpointNV(
VkCommandBuffer commandBuffer,
const void* pCheckpointMarker)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkCmdSetCheckpointNV(&validateResult, commandBuffer, pCheckpointMarker);
@@ -8830,8 +8297,8 @@ void goldfish_frontend_vkCmdSetCheckpointNV(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkCmdSetCheckpointNV(vkStream, commandBuffer, pCheckpointMarker);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkCmdSetCheckpointNV(vkStream, commandBuffer, pCheckpointMarker);
}
static void validate_vkGetQueueCheckpointDataNV(
@@ -8846,7 +8313,6 @@ void goldfish_frontend_vkGetQueueCheckpointDataNV(
VkQueue queue,
uint32_t* pCheckpointDataCount,
VkCheckpointDataNV* pCheckpointData)
-
{
VkResult validateResult = VK_SUCCESS;
validate_vkGetQueueCheckpointDataNV(&validateResult, queue, pCheckpointDataCount, pCheckpointData);
@@ -8855,9 +8321,10 @@ void goldfish_frontend_vkGetQueueCheckpointDataNV(
return;
}
// VULKAN_STREAM_GET();
- void* vkStream = 0;
- encode_vkGetQueueCheckpointDataNV(vkStream, queue, pCheckpointDataCount, pCheckpointData);
+ VulkanStream* vkStream = nullptr;
+ marshal_vkGetQueueCheckpointDataNV(vkStream, queue, pCheckpointDataCount, pCheckpointData);
}
#endif
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.h b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.h
index d4a2436acf..76da69b866 100644
--- a/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.h
+++ b/android/android-emugl/host/libs/libOpenglRender/vulkan/cereal/guest/goldfish_vk_frontend.h
@@ -1,37 +1,60 @@
-// Module: goldfish_vk_frontend (header) Autogenerated by CerealGenerator
-
+// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2018 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Autogenerated module goldfish_vk_frontend
+// (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
+// Please do not modify directly;
+// re-run android/scripts/generate-vulkan-sources.sh,
+// or directly from Python by defining:
+// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
+// CEREAL_OUTPUT_DIR: Where to put the generated sources.
+// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
+
+#pragma once
#include <vulkan.h>
-#ifdef VK_VERSION_1_0
+#include "common/goldfish_vk_marshaling.h"
+
+
+namespace goldfish_vk {
+
+#ifdef VK_VERSION_1_0
VkResult goldfish_frontend_vkCreateInstance(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkInstance* pInstance)
-;
+ VkInstance* pInstance);
void goldfish_frontend_vkDestroyInstance(
VkInstance instance,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkEnumeratePhysicalDevices(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
- VkPhysicalDevice* pPhysicalDevices)
-;
+ VkPhysicalDevice* pPhysicalDevices);
void goldfish_frontend_vkGetPhysicalDeviceFeatures(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures* pFeatures)
-;
+ VkPhysicalDeviceFeatures* pFeatures);
void goldfish_frontend_vkGetPhysicalDeviceFormatProperties(
VkPhysicalDevice physicalDevice,
VkFormat format,
- VkFormatProperties* pFormatProperties)
-;
+ VkFormatProperties* pFormatProperties);
VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties(
VkPhysicalDevice physicalDevice,
@@ -40,105 +63,87 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties(
VkImageTiling tiling,
VkImageUsageFlags usage,
VkImageCreateFlags flags,
- VkImageFormatProperties* pImageFormatProperties)
-;
+ VkImageFormatProperties* pImageFormatProperties);
void goldfish_frontend_vkGetPhysicalDeviceProperties(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties* pProperties)
-;
+ VkPhysicalDeviceProperties* pProperties);
void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties* pQueueFamilyProperties)
-;
+ VkQueueFamilyProperties* pQueueFamilyProperties);
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties* pMemoryProperties)
-;
+ VkPhysicalDeviceMemoryProperties* pMemoryProperties);
PFN_vkVoidFunction goldfish_frontend_vkGetInstanceProcAddr(
VkInstance instance,
- const char* pName)
-;
+ const char* pName);
PFN_vkVoidFunction goldfish_frontend_vkGetDeviceProcAddr(
VkDevice device,
- const char* pName)
-;
+ const char* pName);
VkResult goldfish_frontend_vkCreateDevice(
VkPhysicalDevice physicalDevice,
const VkDeviceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDevice* pDevice)
-;
+ VkDevice* pDevice);
void goldfish_frontend_vkDestroyDevice(
VkDevice device,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkEnumerateInstanceExtensionProperties(
const char* pLayerName,
uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-;
+ VkExtensionProperties* pProperties);
VkResult goldfish_frontend_vkEnumerateDeviceExtensionProperties(
VkPhysicalDevice physicalDevice,
const char* pLayerName,
uint32_t* pPropertyCount,
- VkExtensionProperties* pProperties)
-;
+ VkExtensionProperties* pProperties);
VkResult goldfish_frontend_vkEnumerateInstanceLayerProperties(
uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-;
+ VkLayerProperties* pProperties);
VkResult goldfish_frontend_vkEnumerateDeviceLayerProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
- VkLayerProperties* pProperties)
-;
+ VkLayerProperties* pProperties);
void goldfish_frontend_vkGetDeviceQueue(
VkDevice device,
uint32_t queueFamilyIndex,
uint32_t queueIndex,
- VkQueue* pQueue)
-;
+ VkQueue* pQueue);
VkResult goldfish_frontend_vkQueueSubmit(
VkQueue queue,
uint32_t submitCount,
const VkSubmitInfo* pSubmits,
- VkFence fence)
-;
+ VkFence fence);
VkResult goldfish_frontend_vkQueueWaitIdle(
- VkQueue queue)
-;
+ VkQueue queue);
VkResult goldfish_frontend_vkDeviceWaitIdle(
- VkDevice device)
-;
+ VkDevice device);
VkResult goldfish_frontend_vkAllocateMemory(
VkDevice device,
const VkMemoryAllocateInfo* pAllocateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDeviceMemory* pMemory)
-;
+ VkDeviceMemory* pMemory);
void goldfish_frontend_vkFreeMemory(
VkDevice device,
VkDeviceMemory memory,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkMapMemory(
VkDevice device,
@@ -146,64 +151,54 @@ VkResult goldfish_frontend_vkMapMemory(
VkDeviceSize offset,
VkDeviceSize size,
VkMemoryMapFlags flags,
- void** ppData)
-;
+ void** ppData);
void goldfish_frontend_vkUnmapMemory(
VkDevice device,
- VkDeviceMemory memory)
-;
+ VkDeviceMemory memory);
VkResult goldfish_frontend_vkFlushMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-;
+ const VkMappedMemoryRange* pMemoryRanges);
VkResult goldfish_frontend_vkInvalidateMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
- const VkMappedMemoryRange* pMemoryRanges)
-;
+ const VkMappedMemoryRange* pMemoryRanges);
void goldfish_frontend_vkGetDeviceMemoryCommitment(
VkDevice device,
VkDeviceMemory memory,
- VkDeviceSize* pCommittedMemoryInBytes)
-;
+ VkDeviceSize* pCommittedMemoryInBytes);
VkResult goldfish_frontend_vkBindBufferMemory(
VkDevice device,
VkBuffer buffer,
VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-;
+ VkDeviceSize memoryOffset);
VkResult goldfish_frontend_vkBindImageMemory(
VkDevice device,
VkImage image,
VkDeviceMemory memory,
- VkDeviceSize memoryOffset)
-;
+ VkDeviceSize memoryOffset);
void goldfish_frontend_vkGetBufferMemoryRequirements(
VkDevice device,
VkBuffer buffer,
- VkMemoryRequirements* pMemoryRequirements)
-;
+ VkMemoryRequirements* pMemoryRequirements);
void goldfish_frontend_vkGetImageMemoryRequirements(
VkDevice device,
VkImage image,
- VkMemoryRequirements* pMemoryRequirements)
-;
+ VkMemoryRequirements* pMemoryRequirements);
void goldfish_frontend_vkGetImageSparseMemoryRequirements(
VkDevice device,
VkImage image,
uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
-;
+ VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties(
VkPhysicalDevice physicalDevice,
@@ -213,101 +208,85 @@ void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties(
VkImageUsageFlags usage,
VkImageTiling tiling,
uint32_t* pPropertyCount,
- VkSparseImageFormatProperties* pProperties)
-;
+ VkSparseImageFormatProperties* pProperties);
VkResult goldfish_frontend_vkQueueBindSparse(
VkQueue queue,
uint32_t bindInfoCount,
const VkBindSparseInfo* pBindInfo,
- VkFence fence)
-;
+ VkFence fence);
VkResult goldfish_frontend_vkCreateFence(
VkDevice device,
const VkFenceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
+ VkFence* pFence);
void goldfish_frontend_vkDestroyFence(
VkDevice device,
VkFence fence,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkResetFences(
VkDevice device,
uint32_t fenceCount,
- const VkFence* pFences)
-;
+ const VkFence* pFences);
VkResult goldfish_frontend_vkGetFenceStatus(
VkDevice device,
- VkFence fence)
-;
+ VkFence fence);
VkResult goldfish_frontend_vkWaitForFences(
VkDevice device,
uint32_t fenceCount,
const VkFence* pFences,
VkBool32 waitAll,
- uint64_t timeout)
-;
+ uint64_t timeout);
VkResult goldfish_frontend_vkCreateSemaphore(
VkDevice device,
const VkSemaphoreCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSemaphore* pSemaphore)
-;
+ VkSemaphore* pSemaphore);
void goldfish_frontend_vkDestroySemaphore(
VkDevice device,
VkSemaphore semaphore,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateEvent(
VkDevice device,
const VkEventCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkEvent* pEvent)
-;
+ VkEvent* pEvent);
void goldfish_frontend_vkDestroyEvent(
VkDevice device,
VkEvent event,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkGetEventStatus(
VkDevice device,
- VkEvent event)
-;
+ VkEvent event);
VkResult goldfish_frontend_vkSetEvent(
VkDevice device,
- VkEvent event)
-;
+ VkEvent event);
VkResult goldfish_frontend_vkResetEvent(
VkDevice device,
- VkEvent event)
-;
+ VkEvent event);
VkResult goldfish_frontend_vkCreateQueryPool(
VkDevice device,
const VkQueryPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkQueryPool* pQueryPool)
-;
+ VkQueryPool* pQueryPool);
void goldfish_frontend_vkDestroyQueryPool(
VkDevice device,
VkQueryPool queryPool,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkGetQueryPoolResults(
VkDevice device,
@@ -317,107 +296,91 @@ VkResult goldfish_frontend_vkGetQueryPoolResults(
size_t dataSize,
void* pData,
VkDeviceSize stride,
- VkQueryResultFlags flags)
-;
+ VkQueryResultFlags flags);
VkResult goldfish_frontend_vkCreateBuffer(
VkDevice device,
const VkBufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkBuffer* pBuffer)
-;
+ VkBuffer* pBuffer);
void goldfish_frontend_vkDestroyBuffer(
VkDevice device,
VkBuffer buffer,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateBufferView(
VkDevice device,
const VkBufferViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkBufferView* pView)
-;
+ VkBufferView* pView);
void goldfish_frontend_vkDestroyBufferView(
VkDevice device,
VkBufferView bufferView,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateImage(
VkDevice device,
const VkImageCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkImage* pImage)
-;
+ VkImage* pImage);
void goldfish_frontend_vkDestroyImage(
VkDevice device,
VkImage image,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkGetImageSubresourceLayout(
VkDevice device,
VkImage image,
const VkImageSubresource* pSubresource,
- VkSubresourceLayout* pLayout)
-;
+ VkSubresourceLayout* pLayout);
VkResult goldfish_frontend_vkCreateImageView(
VkDevice device,
const VkImageViewCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkImageView* pView)
-;
+ VkImageView* pView);
void goldfish_frontend_vkDestroyImageView(
VkDevice device,
VkImageView imageView,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateShaderModule(
VkDevice device,
const VkShaderModuleCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkShaderModule* pShaderModule)
-;
+ VkShaderModule* pShaderModule);
void goldfish_frontend_vkDestroyShaderModule(
VkDevice device,
VkShaderModule shaderModule,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreatePipelineCache(
VkDevice device,
const VkPipelineCacheCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkPipelineCache* pPipelineCache)
-;
+ VkPipelineCache* pPipelineCache);
void goldfish_frontend_vkDestroyPipelineCache(
VkDevice device,
VkPipelineCache pipelineCache,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkGetPipelineCacheData(
VkDevice device,
VkPipelineCache pipelineCache,
size_t* pDataSize,
- void* pData)
-;
+ void* pData);
VkResult goldfish_frontend_vkMergePipelineCaches(
VkDevice device,
VkPipelineCache dstCache,
uint32_t srcCacheCount,
- const VkPipelineCache* pSrcCaches)
-;
+ const VkPipelineCache* pSrcCaches);
VkResult goldfish_frontend_vkCreateGraphicsPipelines(
VkDevice device,
@@ -425,8 +388,7 @@ VkResult goldfish_frontend_vkCreateGraphicsPipelines(
uint32_t createInfoCount,
const VkGraphicsPipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-;
+ VkPipeline* pPipelines);
VkResult goldfish_frontend_vkCreateComputePipelines(
VkDevice device,
@@ -434,232 +396,195 @@ VkResult goldfish_frontend_vkCreateComputePipelines(
uint32_t createInfoCount,
const VkComputePipelineCreateInfo* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
- VkPipeline* pPipelines)
-;
+ VkPipeline* pPipelines);
void goldfish_frontend_vkDestroyPipeline(
VkDevice device,
VkPipeline pipeline,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreatePipelineLayout(
VkDevice device,
const VkPipelineLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkPipelineLayout* pPipelineLayout)
-;
+ VkPipelineLayout* pPipelineLayout);
void goldfish_frontend_vkDestroyPipelineLayout(
VkDevice device,
VkPipelineLayout pipelineLayout,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateSampler(
VkDevice device,
const VkSamplerCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSampler* pSampler)
-;
+ VkSampler* pSampler);
void goldfish_frontend_vkDestroySampler(
VkDevice device,
VkSampler sampler,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateDescriptorSetLayout(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDescriptorSetLayout* pSetLayout)
-;
+ VkDescriptorSetLayout* pSetLayout);
void goldfish_frontend_vkDestroyDescriptorSetLayout(
VkDevice device,
VkDescriptorSetLayout descriptorSetLayout,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateDescriptorPool(
VkDevice device,
const VkDescriptorPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDescriptorPool* pDescriptorPool)
-;
+ VkDescriptorPool* pDescriptorPool);
void goldfish_frontend_vkDestroyDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkResetDescriptorPool(
VkDevice device,
VkDescriptorPool descriptorPool,
- VkDescriptorPoolResetFlags flags)
-;
+ VkDescriptorPoolResetFlags flags);
VkResult goldfish_frontend_vkAllocateDescriptorSets(
VkDevice device,
const VkDescriptorSetAllocateInfo* pAllocateInfo,
- VkDescriptorSet* pDescriptorSets)
-;
+ VkDescriptorSet* pDescriptorSets);
VkResult goldfish_frontend_vkFreeDescriptorSets(
VkDevice device,
VkDescriptorPool descriptorPool,
uint32_t descriptorSetCount,
- const VkDescriptorSet* pDescriptorSets)
-;
+ const VkDescriptorSet* pDescriptorSets);
void goldfish_frontend_vkUpdateDescriptorSets(
VkDevice device,
uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount,
- const VkCopyDescriptorSet* pDescriptorCopies)
-;
+ const VkCopyDescriptorSet* pDescriptorCopies);
VkResult goldfish_frontend_vkCreateFramebuffer(
VkDevice device,
const VkFramebufferCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkFramebuffer* pFramebuffer)
-;
+ VkFramebuffer* pFramebuffer);
void goldfish_frontend_vkDestroyFramebuffer(
VkDevice device,
VkFramebuffer framebuffer,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateRenderPass(
VkDevice device,
const VkRenderPassCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-;
+ VkRenderPass* pRenderPass);
void goldfish_frontend_vkDestroyRenderPass(
VkDevice device,
VkRenderPass renderPass,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkGetRenderAreaGranularity(
VkDevice device,
VkRenderPass renderPass,
- VkExtent2D* pGranularity)
-;
+ VkExtent2D* pGranularity);
VkResult goldfish_frontend_vkCreateCommandPool(
VkDevice device,
const VkCommandPoolCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkCommandPool* pCommandPool)
-;
+ VkCommandPool* pCommandPool);
void goldfish_frontend_vkDestroyCommandPool(
VkDevice device,
VkCommandPool commandPool,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkResetCommandPool(
VkDevice device,
VkCommandPool commandPool,
- VkCommandPoolResetFlags flags)
-;
+ VkCommandPoolResetFlags flags);
VkResult goldfish_frontend_vkAllocateCommandBuffers(
VkDevice device,
const VkCommandBufferAllocateInfo* pAllocateInfo,
- VkCommandBuffer* pCommandBuffers)
-;
+ VkCommandBuffer* pCommandBuffers);
void goldfish_frontend_vkFreeCommandBuffers(
VkDevice device,
VkCommandPool commandPool,
uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-;
+ const VkCommandBuffer* pCommandBuffers);
VkResult goldfish_frontend_vkBeginCommandBuffer(
VkCommandBuffer commandBuffer,
- const VkCommandBufferBeginInfo* pBeginInfo)
-;
+ const VkCommandBufferBeginInfo* pBeginInfo);
VkResult goldfish_frontend_vkEndCommandBuffer(
- VkCommandBuffer commandBuffer)
-;
+ VkCommandBuffer commandBuffer);
VkResult goldfish_frontend_vkResetCommandBuffer(
VkCommandBuffer commandBuffer,
- VkCommandBufferResetFlags flags)
-;
+ VkCommandBufferResetFlags flags);
void goldfish_frontend_vkCmdBindPipeline(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
- VkPipeline pipeline)
-;
+ VkPipeline pipeline);
void goldfish_frontend_vkCmdSetViewport(
VkCommandBuffer commandBuffer,
uint32_t firstViewport,
uint32_t viewportCount,
- const VkViewport* pViewports)
-;
+ const VkViewport* pViewports);
void goldfish_frontend_vkCmdSetScissor(
VkCommandBuffer commandBuffer,
uint32_t firstScissor,
uint32_t scissorCount,
- const VkRect2D* pScissors)
-;
+ const VkRect2D* pScissors);
void goldfish_frontend_vkCmdSetLineWidth(
VkCommandBuffer commandBuffer,
- float lineWidth)
-;
+ float lineWidth);
void goldfish_frontend_vkCmdSetDepthBias(
VkCommandBuffer commandBuffer,
float depthBiasConstantFactor,
float depthBiasClamp,
- float depthBiasSlopeFactor)
-;
+ float depthBiasSlopeFactor);
void goldfish_frontend_vkCmdSetBlendConstants(
VkCommandBuffer commandBuffer,
- const float blendConstants[4])
-;
+ const float blendConstants);
void goldfish_frontend_vkCmdSetDepthBounds(
VkCommandBuffer commandBuffer,
float minDepthBounds,
- float maxDepthBounds)
-;
+ float maxDepthBounds);
void goldfish_frontend_vkCmdSetStencilCompareMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
- uint32_t compareMask)
-;
+ uint32_t compareMask);
void goldfish_frontend_vkCmdSetStencilWriteMask(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
- uint32_t writeMask)
-;
+ uint32_t writeMask);
void goldfish_frontend_vkCmdSetStencilReference(
VkCommandBuffer commandBuffer,
VkStencilFaceFlags faceMask,
- uint32_t reference)
-;
+ uint32_t reference);
void goldfish_frontend_vkCmdBindDescriptorSets(
VkCommandBuffer commandBuffer,
@@ -669,31 +594,27 @@ void goldfish_frontend_vkCmdBindDescriptorSets(
uint32_t descriptorSetCount,
const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount,
- const uint32_t* pDynamicOffsets)
-;
+ const uint32_t* pDynamicOffsets);
void goldfish_frontend_vkCmdBindIndexBuffer(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
- VkIndexType indexType)
-;
+ VkIndexType indexType);
void goldfish_frontend_vkCmdBindVertexBuffers(
VkCommandBuffer commandBuffer,
uint32_t firstBinding,
uint32_t bindingCount,
const VkBuffer* pBuffers,
- const VkDeviceSize* pOffsets)
-;
+ const VkDeviceSize* pOffsets);
void goldfish_frontend_vkCmdDraw(
VkCommandBuffer commandBuffer,
uint32_t vertexCount,
uint32_t instanceCount,
uint32_t firstVertex,
- uint32_t firstInstance)
-;
+ uint32_t firstInstance);
void goldfish_frontend_vkCmdDrawIndexed(
VkCommandBuffer commandBuffer,
@@ -701,45 +622,39 @@ void goldfish_frontend_vkCmdDrawIndexed(
uint32_t instanceCount,
uint32_t firstIndex,
int32_t vertexOffset,
- uint32_t firstInstance)
-;
+ uint32_t firstInstance);
void goldfish_frontend_vkCmdDrawIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
- uint32_t stride)
-;
+ uint32_t stride);
void goldfish_frontend_vkCmdDrawIndexedIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
uint32_t drawCount,
- uint32_t stride)
-;
+ uint32_t stride);
void goldfish_frontend_vkCmdDispatch(
VkCommandBuffer commandBuffer,
uint32_t groupCountX,
uint32_t groupCountY,
- uint32_t groupCountZ)
-;
+ uint32_t groupCountZ);
void goldfish_frontend_vkCmdDispatchIndirect(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
- VkDeviceSize offset)
-;
+ VkDeviceSize offset);
void goldfish_frontend_vkCmdCopyBuffer(
VkCommandBuffer commandBuffer,
VkBuffer srcBuffer,
VkBuffer dstBuffer,
uint32_t regionCount,
- const VkBufferCopy* pRegions)
-;
+ const VkBufferCopy* pRegions);
void goldfish_frontend_vkCmdCopyImage(
VkCommandBuffer commandBuffer,
@@ -748,8 +663,7 @@ void goldfish_frontend_vkCmdCopyImage(
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
- const VkImageCopy* pRegions)
-;
+ const VkImageCopy* pRegions);
void goldfish_frontend_vkCmdBlitImage(
VkCommandBuffer commandBuffer,
@@ -759,8 +673,7 @@ void goldfish_frontend_vkCmdBlitImage(
VkImageLayout dstImageLayout,
uint32_t regionCount,
const VkImageBlit* pRegions,
- VkFilter filter)
-;
+ VkFilter filter);
void goldfish_frontend_vkCmdCopyBufferToImage(
VkCommandBuffer commandBuffer,
@@ -768,8 +681,7 @@ void goldfish_frontend_vkCmdCopyBufferToImage(
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-;
+ const VkBufferImageCopy* pRegions);
void goldfish_frontend_vkCmdCopyImageToBuffer(
VkCommandBuffer commandBuffer,
@@ -777,24 +689,21 @@ void goldfish_frontend_vkCmdCopyImageToBuffer(
VkImageLayout srcImageLayout,
VkBuffer dstBuffer,
uint32_t regionCount,
- const VkBufferImageCopy* pRegions)
-;
+ const VkBufferImageCopy* pRegions);
void goldfish_frontend_vkCmdUpdateBuffer(
VkCommandBuffer commandBuffer,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize dataSize,
- const void* pData)
-;
+ const void* pData);
void goldfish_frontend_vkCmdFillBuffer(
VkCommandBuffer commandBuffer,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize size,
- uint32_t data)
-;
+ uint32_t data);
void goldfish_frontend_vkCmdClearColorImage(
VkCommandBuffer commandBuffer,
@@ -802,8 +711,7 @@ void goldfish_frontend_vkCmdClearColorImage(
VkImageLayout imageLayout,
const VkClearColorValue* pColor,
uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-;
+ const VkImageSubresourceRange* pRanges);
void goldfish_frontend_vkCmdClearDepthStencilImage(
VkCommandBuffer commandBuffer,
@@ -811,16 +719,14 @@ void goldfish_frontend_vkCmdClearDepthStencilImage(
VkImageLayout imageLayout,
const VkClearDepthStencilValue* pDepthStencil,
uint32_t rangeCount,
- const VkImageSubresourceRange* pRanges)
-;
+ const VkImageSubresourceRange* pRanges);
void goldfish_frontend_vkCmdClearAttachments(
VkCommandBuffer commandBuffer,
uint32_t attachmentCount,
const VkClearAttachment* pAttachments,
uint32_t rectCount,
- const VkClearRect* pRects)
-;
+ const VkClearRect* pRects);
void goldfish_frontend_vkCmdResolveImage(
VkCommandBuffer commandBuffer,
@@ -829,20 +735,17 @@ void goldfish_frontend_vkCmdResolveImage(
VkImage dstImage,
VkImageLayout dstImageLayout,
uint32_t regionCount,
- const VkImageResolve* pRegions)
-;
+ const VkImageResolve* pRegions);
void goldfish_frontend_vkCmdSetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
- VkPipelineStageFlags stageMask)
-;
+ VkPipelineStageFlags stageMask);
void goldfish_frontend_vkCmdResetEvent(
VkCommandBuffer commandBuffer,
VkEvent event,
- VkPipelineStageFlags stageMask)
-;
+ VkPipelineStageFlags stageMask);
void goldfish_frontend_vkCmdWaitEvents(
VkCommandBuffer commandBuffer,
@@ -855,8 +758,7 @@ void goldfish_frontend_vkCmdWaitEvents(
uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-;
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
void goldfish_frontend_vkCmdPipelineBarrier(
VkCommandBuffer commandBuffer,
@@ -868,35 +770,30 @@ void goldfish_frontend_vkCmdPipelineBarrier(
uint32_t bufferMemoryBarrierCount,
const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount,
- const VkImageMemoryBarrier* pImageMemoryBarriers)
-;
+ const VkImageMemoryBarrier* pImageMemoryBarriers);
void goldfish_frontend_vkCmdBeginQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t query,
- VkQueryControlFlags flags)
-;
+ VkQueryControlFlags flags);
void goldfish_frontend_vkCmdEndQuery(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
- uint32_t query)
-;
+ uint32_t query);
void goldfish_frontend_vkCmdResetQueryPool(
VkCommandBuffer commandBuffer,
VkQueryPool queryPool,
uint32_t firstQuery,
- uint32_t queryCount)
-;
+ uint32_t queryCount);
void goldfish_frontend_vkCmdWriteTimestamp(
VkCommandBuffer commandBuffer,
VkPipelineStageFlagBits pipelineStage,
VkQueryPool queryPool,
- uint32_t query)
-;
+ uint32_t query);
void goldfish_frontend_vkCmdCopyQueryPoolResults(
VkCommandBuffer commandBuffer,
@@ -906,8 +803,7 @@ void goldfish_frontend_vkCmdCopyQueryPoolResults(
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
VkDeviceSize stride,
- VkQueryResultFlags flags)
-;
+ VkQueryResultFlags flags);
void goldfish_frontend_vkCmdPushConstants(
VkCommandBuffer commandBuffer,
@@ -915,62 +811,50 @@ void goldfish_frontend_vkCmdPushConstants(
VkShaderStageFlags stageFlags,
uint32_t offset,
uint32_t size,
- const void* pValues)
-;
+ const void* pValues);
void goldfish_frontend_vkCmdBeginRenderPass(
VkCommandBuffer commandBuffer,
const VkRenderPassBeginInfo* pRenderPassBegin,
- VkSubpassContents contents)
-;
+ VkSubpassContents contents);
void goldfish_frontend_vkCmdNextSubpass(
VkCommandBuffer commandBuffer,
- VkSubpassContents contents)
-;
+ VkSubpassContents contents);
void goldfish_frontend_vkCmdEndRenderPass(
- VkCommandBuffer commandBuffer)
-;
+ VkCommandBuffer commandBuffer);
void goldfish_frontend_vkCmdExecuteCommands(
VkCommandBuffer commandBuffer,
uint32_t commandBufferCount,
- const VkCommandBuffer* pCommandBuffers)
-;
+ const VkCommandBuffer* pCommandBuffers);
#endif
-
#ifdef VK_VERSION_1_1
-
VkResult goldfish_frontend_vkEnumerateInstanceVersion(
- uint32_t* pApiVersion)
-;
+ uint32_t* pApiVersion);
VkResult goldfish_frontend_vkBindBufferMemory2(
VkDevice device,
uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-;
+ const VkBindBufferMemoryInfo* pBindInfos);
VkResult goldfish_frontend_vkBindImageMemory2(
VkDevice device,
uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-;
+ const VkBindImageMemoryInfo* pBindInfos);
void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeatures(
VkDevice device,
uint32_t heapIndex,
uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-;
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
void goldfish_frontend_vkCmdSetDeviceMask(
VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-;
+ uint32_t deviceMask);
void goldfish_frontend_vkCmdDispatchBase(
VkCommandBuffer commandBuffer,
@@ -979,203 +863,168 @@ void goldfish_frontend_vkCmdDispatchBase(
uint32_t baseGroupZ,
uint32_t groupCountX,
uint32_t groupCountY,
- uint32_t groupCountZ)
-;
+ uint32_t groupCountZ);
VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroups(
VkInstance instance,
uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-;
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
void goldfish_frontend_vkGetImageMemoryRequirements2(
VkDevice device,
const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
+ VkMemoryRequirements2* pMemoryRequirements);
void goldfish_frontend_vkGetBufferMemoryRequirements2(
VkDevice device,
const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
+ VkMemoryRequirements2* pMemoryRequirements);
void goldfish_frontend_vkGetImageSparseMemoryRequirements2(
VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-;
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
void goldfish_frontend_vkGetPhysicalDeviceFeatures2(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-;
+ VkPhysicalDeviceFeatures2* pFeatures);
void goldfish_frontend_vkGetPhysicalDeviceProperties2(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-;
+ VkPhysicalDeviceProperties2* pProperties);
void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2(
VkPhysicalDevice physicalDevice,
VkFormat format,
- VkFormatProperties2* pFormatProperties)
-;
+ VkFormatProperties2* pFormatProperties);
VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-;
+ VkImageFormatProperties2* pImageFormatProperties);
void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-;
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-;
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-;
+ VkSparseImageFormatProperties2* pProperties);
void goldfish_frontend_vkTrimCommandPool(
VkDevice device,
VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-;
+ VkCommandPoolTrimFlags flags);
void goldfish_frontend_vkGetDeviceQueue2(
VkDevice device,
const VkDeviceQueueInfo2* pQueueInfo,
- VkQueue* pQueue)
-;
+ VkQueue* pQueue);
VkResult goldfish_frontend_vkCreateSamplerYcbcrConversion(
VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-;
+ VkSamplerYcbcrConversion* pYcbcrConversion);
void goldfish_frontend_vkDestroySamplerYcbcrConversion(
VkDevice device,
VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplate(
VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-;
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
void goldfish_frontend_vkDestroyDescriptorUpdateTemplate(
VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkUpdateDescriptorSetWithTemplate(
VkDevice device,
VkDescriptorSet descriptorSet,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-;
+ const void* pData);
void goldfish_frontend_vkGetPhysicalDeviceExternalBufferProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-;
+ VkExternalBufferProperties* pExternalBufferProperties);
void goldfish_frontend_vkGetPhysicalDeviceExternalFenceProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-;
+ VkExternalFenceProperties* pExternalFenceProperties);
void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphoreProperties(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-;
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
void goldfish_frontend_vkGetDescriptorSetLayoutSupport(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-;
+ VkDescriptorSetLayoutSupport* pSupport);
#endif
-
#ifdef VK_KHR_surface
-
void goldfish_frontend_vkDestroySurfaceKHR(
VkInstance instance,
VkSurfaceKHR surface,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
VkSurfaceKHR surface,
- VkBool32* pSupported)
-;
+ VkBool32* pSupported);
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
- VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
-;
+ VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormatsKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pSurfaceFormatCount,
- VkSurfaceFormatKHR* pSurfaceFormats)
-;
+ VkSurfaceFormatKHR* pSurfaceFormats);
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfacePresentModesKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
- VkPresentModeKHR* pPresentModes)
-;
+ VkPresentModeKHR* pPresentModes);
#endif
-
#ifdef VK_KHR_swapchain
-
VkResult goldfish_frontend_vkCreateSwapchainKHR(
VkDevice device,
const VkSwapchainCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchain)
-;
+ VkSwapchainKHR* pSwapchain);
void goldfish_frontend_vkDestroySwapchainKHR(
VkDevice device,
VkSwapchainKHR swapchain,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkGetSwapchainImagesKHR(
VkDevice device,
VkSwapchainKHR swapchain,
uint32_t* pSwapchainImageCount,
- VkImage* pSwapchainImages)
-;
+ VkImage* pSwapchainImages);
VkResult goldfish_frontend_vkAcquireNextImageKHR(
VkDevice device,
@@ -1183,267 +1032,209 @@ VkResult goldfish_frontend_vkAcquireNextImageKHR(
uint64_t timeout,
VkSemaphore semaphore,
VkFence fence,
- uint32_t* pImageIndex)
-;
+ uint32_t* pImageIndex);
VkResult goldfish_frontend_vkQueuePresentKHR(
VkQueue queue,
- const VkPresentInfoKHR* pPresentInfo)
-;
+ const VkPresentInfoKHR* pPresentInfo);
VkResult goldfish_frontend_vkGetDeviceGroupPresentCapabilitiesKHR(
VkDevice device,
- VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
-;
+ VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
VkResult goldfish_frontend_vkGetDeviceGroupSurfacePresentModesKHR(
VkDevice device,
VkSurfaceKHR surface,
- VkDeviceGroupPresentModeFlagsKHR* pModes)
-;
+ VkDeviceGroupPresentModeFlagsKHR* pModes);
VkResult goldfish_frontend_vkGetPhysicalDevicePresentRectanglesKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pRectCount,
- VkRect2D* pRects)
-;
+ VkRect2D* pRects);
VkResult goldfish_frontend_vkAcquireNextImage2KHR(
VkDevice device,
const VkAcquireNextImageInfoKHR* pAcquireInfo,
- uint32_t* pImageIndex)
-;
+ uint32_t* pImageIndex);
#endif
-
#ifdef VK_KHR_display
-
VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPropertiesKHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
- VkDisplayPropertiesKHR* pProperties)
-;
+ VkDisplayPropertiesKHR* pProperties);
VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
- VkDisplayPlanePropertiesKHR* pProperties)
-;
+ VkDisplayPlanePropertiesKHR* pProperties);
VkResult goldfish_frontend_vkGetDisplayPlaneSupportedDisplaysKHR(
VkPhysicalDevice physicalDevice,
uint32_t planeIndex,
uint32_t* pDisplayCount,
- VkDisplayKHR* pDisplays)
-;
+ VkDisplayKHR* pDisplays);
VkResult goldfish_frontend_vkGetDisplayModePropertiesKHR(
VkPhysicalDevice physicalDevice,
VkDisplayKHR display,
uint32_t* pPropertyCount,
- VkDisplayModePropertiesKHR* pProperties)
-;
+ VkDisplayModePropertiesKHR* pProperties);
VkResult goldfish_frontend_vkCreateDisplayModeKHR(
VkPhysicalDevice physicalDevice,
VkDisplayKHR display,
const VkDisplayModeCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDisplayModeKHR* pMode)
-;
+ VkDisplayModeKHR* pMode);
VkResult goldfish_frontend_vkGetDisplayPlaneCapabilitiesKHR(
VkPhysicalDevice physicalDevice,
VkDisplayModeKHR mode,
uint32_t planeIndex,
- VkDisplayPlaneCapabilitiesKHR* pCapabilities)
-;
+ VkDisplayPlaneCapabilitiesKHR* pCapabilities);
VkResult goldfish_frontend_vkCreateDisplayPlaneSurfaceKHR(
VkInstance instance,
const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
#endif
-
#ifdef VK_KHR_display_swapchain
-
VkResult goldfish_frontend_vkCreateSharedSwapchainsKHR(
VkDevice device,
uint32_t swapchainCount,
const VkSwapchainCreateInfoKHR* pCreateInfos,
const VkAllocationCallbacks* pAllocator,
- VkSwapchainKHR* pSwapchains)
-;
+ VkSwapchainKHR* pSwapchains);
#endif
-
#ifdef VK_KHR_xlib_surface
-
VkResult goldfish_frontend_vkCreateXlibSurfaceKHR(
VkInstance instance,
const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
VkBool32 goldfish_frontend_vkGetPhysicalDeviceXlibPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
Display* dpy,
- VisualID visualID)
-;
+ VisualID visualID);
#endif
-
#ifdef VK_KHR_xcb_surface
-
VkResult goldfish_frontend_vkCreateXcbSurfaceKHR(
VkInstance instance,
const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
VkBool32 goldfish_frontend_vkGetPhysicalDeviceXcbPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
xcb_connection_t* connection,
- xcb_visualid_t visual_id)
-;
+ xcb_visualid_t visual_id);
#endif
-
#ifdef VK_KHR_wayland_surface
-
VkResult goldfish_frontend_vkCreateWaylandSurfaceKHR(
VkInstance instance,
const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
VkBool32 goldfish_frontend_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
- struct wl_display* display)
-;
+ wl_display* display);
#endif
-
#ifdef VK_KHR_mir_surface
-
VkResult goldfish_frontend_vkCreateMirSurfaceKHR(
VkInstance instance,
const VkMirSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
VkBool32 goldfish_frontend_vkGetPhysicalDeviceMirPresentationSupportKHR(
VkPhysicalDevice physicalDevice,
uint32_t queueFamilyIndex,
- MirConnection* connection)
-;
+ MirConnection* connection);
#endif
-
#ifdef VK_KHR_android_surface
-
VkResult goldfish_frontend_vkCreateAndroidSurfaceKHR(
VkInstance instance,
const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
#endif
-
#ifdef VK_KHR_win32_surface
-
VkResult goldfish_frontend_vkCreateWin32SurfaceKHR(
VkInstance instance,
const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
VkBool32 goldfish_frontend_vkGetPhysicalDeviceWin32PresentationSupportKHR(
VkPhysicalDevice physicalDevice,
- uint32_t queueFamilyIndex)
-;
+ uint32_t queueFamilyIndex);
#endif
-
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
-
#endif
-
#ifdef VK_KHR_multiview
-
#endif
-
#ifdef VK_KHR_get_physical_device_properties2
-
void goldfish_frontend_vkGetPhysicalDeviceFeatures2KHR(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceFeatures2* pFeatures)
-;
+ VkPhysicalDeviceFeatures2* pFeatures);
void goldfish_frontend_vkGetPhysicalDeviceProperties2KHR(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceProperties2* pProperties)
-;
+ VkPhysicalDeviceProperties2* pProperties);
void goldfish_frontend_vkGetPhysicalDeviceFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
VkFormat format,
- VkFormatProperties2* pFormatProperties)
-;
+ VkFormatProperties2* pFormatProperties);
VkResult goldfish_frontend_vkGetPhysicalDeviceImageFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
- VkImageFormatProperties2* pImageFormatProperties)
-;
+ VkImageFormatProperties2* pImageFormatProperties);
void goldfish_frontend_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pQueueFamilyPropertyCount,
- VkQueueFamilyProperties2* pQueueFamilyProperties)
-;
+ VkQueueFamilyProperties2* pQueueFamilyProperties);
void goldfish_frontend_vkGetPhysicalDeviceMemoryProperties2KHR(
VkPhysicalDevice physicalDevice,
- VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
-;
+ VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
void goldfish_frontend_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
uint32_t* pPropertyCount,
- VkSparseImageFormatProperties2* pProperties)
-;
+ VkSparseImageFormatProperties2* pProperties);
#endif
-
#ifdef VK_KHR_device_group
-
void goldfish_frontend_vkGetDeviceGroupPeerMemoryFeaturesKHR(
VkDevice device,
uint32_t heapIndex,
uint32_t localDeviceIndex,
uint32_t remoteDeviceIndex,
- VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
-;
+ VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
void goldfish_frontend_vkCmdSetDeviceMaskKHR(
VkCommandBuffer commandBuffer,
- uint32_t deviceMask)
-;
+ uint32_t deviceMask);
void goldfish_frontend_vkCmdDispatchBaseKHR(
VkCommandBuffer commandBuffer,
@@ -1452,403 +1243,291 @@ void goldfish_frontend_vkCmdDispatchBaseKHR(
uint32_t baseGroupZ,
uint32_t groupCountX,
uint32_t groupCountY,
- uint32_t groupCountZ)
-;
+ uint32_t groupCountZ);
#endif
-
#ifdef VK_KHR_shader_draw_parameters
-
#endif
-
#ifdef VK_KHR_maintenance1
-
void goldfish_frontend_vkTrimCommandPoolKHR(
VkDevice device,
VkCommandPool commandPool,
- VkCommandPoolTrimFlags flags)
-;
+ VkCommandPoolTrimFlags flags);
#endif
-
#ifdef VK_KHR_device_group_creation
-
VkResult goldfish_frontend_vkEnumeratePhysicalDeviceGroupsKHR(
VkInstance instance,
uint32_t* pPhysicalDeviceGroupCount,
- VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
-;
+ VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
#endif
-
#ifdef VK_KHR_external_memory_capabilities
-
void goldfish_frontend_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
- VkExternalBufferProperties* pExternalBufferProperties)
-;
+ VkExternalBufferProperties* pExternalBufferProperties);
#endif
-
#ifdef VK_KHR_external_memory
-
#endif
-
#ifdef VK_KHR_external_memory_win32
-
VkResult goldfish_frontend_vkGetMemoryWin32HandleKHR(
VkDevice device,
const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
+ HANDLE* pHandle);
VkResult goldfish_frontend_vkGetMemoryWin32HandlePropertiesKHR(
VkDevice device,
VkExternalMemoryHandleTypeFlagBits handleType,
HANDLE handle,
- VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
-;
+ VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
#endif
-
#ifdef VK_KHR_external_memory_fd
-
VkResult goldfish_frontend_vkGetMemoryFdKHR(
VkDevice device,
const VkMemoryGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
+ int* pFd);
VkResult goldfish_frontend_vkGetMemoryFdPropertiesKHR(
VkDevice device,
VkExternalMemoryHandleTypeFlagBits handleType,
int fd,
- VkMemoryFdPropertiesKHR* pMemoryFdProperties)
-;
+ VkMemoryFdPropertiesKHR* pMemoryFdProperties);
#endif
-
#ifdef VK_KHR_win32_keyed_mutex
-
#endif
-
#ifdef VK_KHR_external_semaphore_capabilities
-
void goldfish_frontend_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
- VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
-;
+ VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
#endif
-
#ifdef VK_KHR_external_semaphore
-
#endif
-
#ifdef VK_KHR_external_semaphore_win32
-
VkResult goldfish_frontend_vkImportSemaphoreWin32HandleKHR(
VkDevice device,
- const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
-;
+ const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
VkResult goldfish_frontend_vkGetSemaphoreWin32HandleKHR(
VkDevice device,
const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
+ HANDLE* pHandle);
#endif
-
#ifdef VK_KHR_external_semaphore_fd
-
VkResult goldfish_frontend_vkImportSemaphoreFdKHR(
VkDevice device,
- const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
-;
+ const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
VkResult goldfish_frontend_vkGetSemaphoreFdKHR(
VkDevice device,
const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
+ int* pFd);
#endif
-
#ifdef VK_KHR_push_descriptor
-
void goldfish_frontend_vkCmdPushDescriptorSetKHR(
VkCommandBuffer commandBuffer,
VkPipelineBindPoint pipelineBindPoint,
VkPipelineLayout layout,
uint32_t set,
uint32_t descriptorWriteCount,
- const VkWriteDescriptorSet* pDescriptorWrites)
-;
+ const VkWriteDescriptorSet* pDescriptorWrites);
void goldfish_frontend_vkCmdPushDescriptorSetWithTemplateKHR(
VkCommandBuffer commandBuffer,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
VkPipelineLayout layout,
uint32_t set,
- const void* pData)
-;
+ const void* pData);
#endif
-
#ifdef VK_KHR_16bit_storage
-
#endif
-
#ifdef VK_KHR_incremental_present
-
#endif
-
#ifdef VK_KHR_descriptor_update_template
-
VkResult goldfish_frontend_vkCreateDescriptorUpdateTemplateKHR(
VkDevice device,
const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
-;
+ VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
void goldfish_frontend_vkDestroyDescriptorUpdateTemplateKHR(
VkDevice device,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkUpdateDescriptorSetWithTemplateKHR(
VkDevice device,
VkDescriptorSet descriptorSet,
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
- const void* pData)
-;
+ const void* pData);
#endif
-
#ifdef VK_KHR_create_renderpass2
-
VkResult goldfish_frontend_vkCreateRenderPass2KHR(
VkDevice device,
const VkRenderPassCreateInfo2KHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkRenderPass* pRenderPass)
-;
+ VkRenderPass* pRenderPass);
void goldfish_frontend_vkCmdBeginRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkRenderPassBeginInfo* pRenderPassBegin,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
-;
+ const VkRenderPassBeginInfo* pRenderPassBegin,
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
void goldfish_frontend_vkCmdNextSubpass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-;
+ const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
void goldfish_frontend_vkCmdEndRenderPass2KHR(
VkCommandBuffer commandBuffer,
- const VkSubpassEndInfoKHR* pSubpassEndInfo)
-;
+ const VkSubpassEndInfoKHR* pSubpassEndInfo);
#endif
-
#ifdef VK_KHR_shared_presentable_image
-
VkResult goldfish_frontend_vkGetSwapchainStatusKHR(
VkDevice device,
- VkSwapchainKHR swapchain)
-;
+ VkSwapchainKHR swapchain);
#endif
-
#ifdef VK_KHR_external_fence_capabilities
-
void goldfish_frontend_vkGetPhysicalDeviceExternalFencePropertiesKHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
- VkExternalFenceProperties* pExternalFenceProperties)
-;
+ VkExternalFenceProperties* pExternalFenceProperties);
#endif
-
#ifdef VK_KHR_external_fence
-
#endif
-
#ifdef VK_KHR_external_fence_win32
-
VkResult goldfish_frontend_vkImportFenceWin32HandleKHR(
VkDevice device,
- const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
-;
+ const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
VkResult goldfish_frontend_vkGetFenceWin32HandleKHR(
VkDevice device,
const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
- HANDLE* pHandle)
-;
+ HANDLE* pHandle);
#endif
-
#ifdef VK_KHR_external_fence_fd
-
VkResult goldfish_frontend_vkImportFenceFdKHR(
VkDevice device,
- const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
-;
+ const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
VkResult goldfish_frontend_vkGetFenceFdKHR(
VkDevice device,
const VkFenceGetFdInfoKHR* pGetFdInfo,
- int* pFd)
-;
+ int* pFd);
#endif
-
#ifdef VK_KHR_maintenance2
-
#endif
-
#ifdef VK_KHR_get_surface_capabilities2
-
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
- VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
-;
+ VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceFormats2KHR(
VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
uint32_t* pSurfaceFormatCount,
- VkSurfaceFormat2KHR* pSurfaceFormats)
-;
+ VkSurfaceFormat2KHR* pSurfaceFormats);
#endif
-
#ifdef VK_KHR_variable_pointers
-
#endif
-
#ifdef VK_KHR_get_display_properties2
-
VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
- VkDisplayProperties2KHR* pProperties)
-;
+ VkDisplayProperties2KHR* pProperties);
VkResult goldfish_frontend_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
VkPhysicalDevice physicalDevice,
uint32_t* pPropertyCount,
- VkDisplayPlaneProperties2KHR* pProperties)
-;
+ VkDisplayPlaneProperties2KHR* pProperties);
VkResult goldfish_frontend_vkGetDisplayModeProperties2KHR(
VkPhysicalDevice physicalDevice,
VkDisplayKHR display,
uint32_t* pPropertyCount,
- VkDisplayModeProperties2KHR* pProperties)
-;
+ VkDisplayModeProperties2KHR* pProperties);
VkResult goldfish_frontend_vkGetDisplayPlaneCapabilities2KHR(
VkPhysicalDevice physicalDevice,
const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
- VkDisplayPlaneCapabilities2KHR* pCapabilities)
-;
+ VkDisplayPlaneCapabilities2KHR* pCapabilities);
#endif
-
#ifdef VK_KHR_dedicated_allocation
-
#endif
-
#ifdef VK_KHR_storage_buffer_storage_class
-
#endif
-
#ifdef VK_KHR_relaxed_block_layout
-
#endif
-
#ifdef VK_KHR_get_memory_requirements2
-
void goldfish_frontend_vkGetImageMemoryRequirements2KHR(
VkDevice device,
const VkImageMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
+ VkMemoryRequirements2* pMemoryRequirements);
void goldfish_frontend_vkGetBufferMemoryRequirements2KHR(
VkDevice device,
const VkBufferMemoryRequirementsInfo2* pInfo,
- VkMemoryRequirements2* pMemoryRequirements)
-;
+ VkMemoryRequirements2* pMemoryRequirements);
void goldfish_frontend_vkGetImageSparseMemoryRequirements2KHR(
VkDevice device,
const VkImageSparseMemoryRequirementsInfo2* pInfo,
uint32_t* pSparseMemoryRequirementCount,
- VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
-;
+ VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
#endif
-
#ifdef VK_KHR_image_format_list
-
#endif
-
#ifdef VK_KHR_sampler_ycbcr_conversion
-
VkResult goldfish_frontend_vkCreateSamplerYcbcrConversionKHR(
VkDevice device,
const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSamplerYcbcrConversion* pYcbcrConversion)
-;
+ VkSamplerYcbcrConversion* pYcbcrConversion);
void goldfish_frontend_vkDestroySamplerYcbcrConversionKHR(
VkDevice device,
VkSamplerYcbcrConversion ycbcrConversion,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
#endif
-
#ifdef VK_KHR_bind_memory2
-
VkResult goldfish_frontend_vkBindBufferMemory2KHR(
VkDevice device,
uint32_t bindInfoCount,
- const VkBindBufferMemoryInfo* pBindInfos)
-;
+ const VkBindBufferMemoryInfo* pBindInfos);
VkResult goldfish_frontend_vkBindImageMemory2KHR(
VkDevice device,
uint32_t bindInfoCount,
- const VkBindImageMemoryInfo* pBindInfos)
-;
+ const VkBindImageMemoryInfo* pBindInfos);
#endif
-
#ifdef VK_KHR_maintenance3
-
void goldfish_frontend_vkGetDescriptorSetLayoutSupportKHR(
VkDevice device,
const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
- VkDescriptorSetLayoutSupport* pSupport)
-;
+ VkDescriptorSetLayoutSupport* pSupport);
#endif
-
#ifdef VK_KHR_draw_indirect_count
-
void goldfish_frontend_vkCmdDrawIndirectCountKHR(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
@@ -1856,8 +1535,7 @@ void goldfish_frontend_vkCmdDrawIndirectCountKHR(
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
- uint32_t stride)
-;
+ uint32_t stride);
void goldfish_frontend_vkCmdDrawIndexedIndirectCountKHR(
VkCommandBuffer commandBuffer,
@@ -1866,29 +1544,22 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountKHR(
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
- uint32_t stride)
-;
+ uint32_t stride);
#endif
-
#ifdef VK_KHR_8bit_storage
-
#endif
-
#ifdef VK_EXT_debug_report
-
VkResult goldfish_frontend_vkCreateDebugReportCallbackEXT(
VkInstance instance,
const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDebugReportCallbackEXT* pCallback)
-;
+ VkDebugReportCallbackEXT* pCallback);
void goldfish_frontend_vkDestroyDebugReportCallbackEXT(
VkInstance instance,
VkDebugReportCallbackEXT callback,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkDebugReportMessageEXT(
VkInstance instance,
@@ -1898,73 +1569,47 @@ void goldfish_frontend_vkDebugReportMessageEXT(
size_t location,
int32_t messageCode,
const char* pLayerPrefix,
- const char* pMessage)
-;
+ const char* pMessage);
#endif
-
#ifdef VK_NV_glsl_shader
-
#endif
-
#ifdef VK_EXT_depth_range_unrestricted
-
#endif
-
#ifdef VK_IMG_filter_cubic
-
#endif
-
#ifdef VK_AMD_rasterization_order
-
#endif
-
#ifdef VK_AMD_shader_trinary_minmax
-
#endif
-
#ifdef VK_AMD_shader_explicit_vertex_parameter
-
#endif
-
#ifdef VK_EXT_debug_marker
-
VkResult goldfish_frontend_vkDebugMarkerSetObjectTagEXT(
VkDevice device,
- const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
-;
+ const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
VkResult goldfish_frontend_vkDebugMarkerSetObjectNameEXT(
VkDevice device,
- const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
-;
+ const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
void goldfish_frontend_vkCmdDebugMarkerBeginEXT(
VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-;
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
void goldfish_frontend_vkCmdDebugMarkerEndEXT(
- VkCommandBuffer commandBuffer)
-;
+ VkCommandBuffer commandBuffer);
void goldfish_frontend_vkCmdDebugMarkerInsertEXT(
VkCommandBuffer commandBuffer,
- const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
-;
+ const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
#endif
-
#ifdef VK_AMD_gcn_shader
-
#endif
-
#ifdef VK_NV_dedicated_allocation
-
#endif
-
#ifdef VK_AMD_draw_indirect_count
-
void goldfish_frontend_vkCmdDrawIndirectCountAMD(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
@@ -1972,8 +1617,7 @@ void goldfish_frontend_vkCmdDrawIndirectCountAMD(
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
- uint32_t stride)
-;
+ uint32_t stride);
void goldfish_frontend_vkCmdDrawIndexedIndirectCountAMD(
VkCommandBuffer commandBuffer,
@@ -1982,50 +1626,32 @@ void goldfish_frontend_vkCmdDrawIndexedIndirectCountAMD(
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
- uint32_t stride)
-;
+ uint32_t stride);
#endif
-
#ifdef VK_AMD_negative_viewport_height
-
#endif
-
#ifdef VK_AMD_gpu_shader_half_float
-
#endif
-
#ifdef VK_AMD_shader_ballot
-
#endif
-
#ifdef VK_AMD_texture_gather_bias_lod
-
#endif
-
#ifdef VK_AMD_shader_info
-
VkResult goldfish_frontend_vkGetShaderInfoAMD(
VkDevice device,
VkPipeline pipeline,
VkShaderStageFlagBits shaderStage,
VkShaderInfoTypeAMD infoType,
size_t* pInfoSize,
- void* pInfo)
-;
+ void* pInfo);
#endif
-
#ifdef VK_AMD_shader_image_load_store_lod
-
#endif
-
#ifdef VK_IMG_format_pvrtc
-
#endif
-
#ifdef VK_NV_external_memory_capabilities
-
VkResult goldfish_frontend_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
VkPhysicalDevice physicalDevice,
VkFormat format,
@@ -2034,527 +1660,374 @@ VkResult goldfish_frontend_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
VkImageUsageFlags usage,
VkImageCreateFlags flags,
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
- VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
-;
+ VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
#endif
-
#ifdef VK_NV_external_memory
-
#endif
-
#ifdef VK_NV_external_memory_win32
-
VkResult goldfish_frontend_vkGetMemoryWin32HandleNV(
VkDevice device,
VkDeviceMemory memory,
VkExternalMemoryHandleTypeFlagsNV handleType,
- HANDLE* pHandle)
-;
+ HANDLE* pHandle);
#endif
-
#ifdef VK_NV_win32_keyed_mutex
-
#endif
-
#ifdef VK_EXT_validation_flags
-
#endif
-
#ifdef VK_NN_vi_surface
-
VkResult goldfish_frontend_vkCreateViSurfaceNN(
VkInstance instance,
const VkViSurfaceCreateInfoNN* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
#endif
-
#ifdef VK_EXT_shader_subgroup_ballot
-
#endif
-
#ifdef VK_EXT_shader_subgroup_vote
-
#endif
-
#ifdef VK_EXT_conditional_rendering
-
void goldfish_frontend_vkCmdBeginConditionalRenderingEXT(
VkCommandBuffer commandBuffer,
- const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
-;
+ const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
void goldfish_frontend_vkCmdEndConditionalRenderingEXT(
- VkCommandBuffer commandBuffer)
-;
+ VkCommandBuffer commandBuffer);
#endif
-
#ifdef VK_NVX_device_generated_commands
-
void goldfish_frontend_vkCmdProcessCommandsNVX(
VkCommandBuffer commandBuffer,
- const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
-;
+ const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
void goldfish_frontend_vkCmdReserveSpaceForCommandsNVX(
VkCommandBuffer commandBuffer,
- const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
-;
+ const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
VkResult goldfish_frontend_vkCreateIndirectCommandsLayoutNVX(
VkDevice device,
const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
-;
+ VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
void goldfish_frontend_vkDestroyIndirectCommandsLayoutNVX(
VkDevice device,
VkIndirectCommandsLayoutNVX indirectCommandsLayout,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkCreateObjectTableNVX(
VkDevice device,
const VkObjectTableCreateInfoNVX* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkObjectTableNVX* pObjectTable)
-;
+ VkObjectTableNVX* pObjectTable);
void goldfish_frontend_vkDestroyObjectTableNVX(
VkDevice device,
VkObjectTableNVX objectTable,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkRegisterObjectsNVX(
VkDevice device,
VkObjectTableNVX objectTable,
uint32_t objectCount,
- const VkObjectTableEntryNVX* const* ppObjectTableEntries,
- const uint32_t* pObjectIndices)
-;
+ const VkObjectTableEntryNVX* const* ppObjectTableEntries,
+ const uint32_t* pObjectIndices);
VkResult goldfish_frontend_vkUnregisterObjectsNVX(
VkDevice device,
VkObjectTableNVX objectTable,
uint32_t objectCount,
const VkObjectEntryTypeNVX* pObjectEntryTypes,
- const uint32_t* pObjectIndices)
-;
+ const uint32_t* pObjectIndices);
void goldfish_frontend_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
VkPhysicalDevice physicalDevice,
VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
- VkDeviceGeneratedCommandsLimitsNVX* pLimits)
-;
+ VkDeviceGeneratedCommandsLimitsNVX* pLimits);
#endif
-
#ifdef VK_NV_clip_space_w_scaling
-
void goldfish_frontend_vkCmdSetViewportWScalingNV(
VkCommandBuffer commandBuffer,
uint32_t firstViewport,
uint32_t viewportCount,
- const VkViewportWScalingNV* pViewportWScalings)
-;
+ const VkViewportWScalingNV* pViewportWScalings);
#endif
-
#ifdef VK_EXT_direct_mode_display
-
VkResult goldfish_frontend_vkReleaseDisplayEXT(
VkPhysicalDevice physicalDevice,
- VkDisplayKHR display)
-;
+ VkDisplayKHR display);
#endif
-
#ifdef VK_EXT_acquire_xlib_display
-
VkResult goldfish_frontend_vkAcquireXlibDisplayEXT(
VkPhysicalDevice physicalDevice,
Display* dpy,
- VkDisplayKHR display)
-;
+ VkDisplayKHR display);
VkResult goldfish_frontend_vkGetRandROutputDisplayEXT(
VkPhysicalDevice physicalDevice,
Display* dpy,
RROutput rrOutput,
- VkDisplayKHR* pDisplay)
-;
+ VkDisplayKHR* pDisplay);
#endif
-
#ifdef VK_EXT_display_surface_counter
-
VkResult goldfish_frontend_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
- VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
-;
+ VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
#endif
-
#ifdef VK_EXT_display_control
-
VkResult goldfish_frontend_vkDisplayPowerControlEXT(
VkDevice device,
VkDisplayKHR display,
- const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
-;
+ const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
VkResult goldfish_frontend_vkRegisterDeviceEventEXT(
VkDevice device,
const VkDeviceEventInfoEXT* pDeviceEventInfo,
const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
+ VkFence* pFence);
VkResult goldfish_frontend_vkRegisterDisplayEventEXT(
VkDevice device,
VkDisplayKHR display,
const VkDisplayEventInfoEXT* pDisplayEventInfo,
const VkAllocationCallbacks* pAllocator,
- VkFence* pFence)
-;
+ VkFence* pFence);
VkResult goldfish_frontend_vkGetSwapchainCounterEXT(
VkDevice device,
VkSwapchainKHR swapchain,
VkSurfaceCounterFlagBitsEXT counter,
- uint64_t* pCounterValue)
-;
+ uint64_t* pCounterValue);
#endif
-
#ifdef VK_GOOGLE_display_timing
-
VkResult goldfish_frontend_vkGetRefreshCycleDurationGOOGLE(
VkDevice device,
VkSwapchainKHR swapchain,
- VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
-;
+ VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
VkResult goldfish_frontend_vkGetPastPresentationTimingGOOGLE(
VkDevice device,
VkSwapchainKHR swapchain,
uint32_t* pPresentationTimingCount,
- VkPastPresentationTimingGOOGLE* pPresentationTimings)
-;
+ VkPastPresentationTimingGOOGLE* pPresentationTimings);
#endif
-
#ifdef VK_NV_sample_mask_override_coverage
-
#endif
-
#ifdef VK_NV_geometry_shader_passthrough
-
#endif
-
#ifdef VK_NV_viewport_array2
-
#endif
-
#ifdef VK_NVX_multiview_per_view_attributes
-
#endif
-
#ifdef VK_NV_viewport_swizzle
-
#endif
-
#ifdef VK_EXT_discard_rectangles
-
void goldfish_frontend_vkCmdSetDiscardRectangleEXT(
VkCommandBuffer commandBuffer,
uint32_t firstDiscardRectangle,
uint32_t discardRectangleCount,
- const VkRect2D* pDiscardRectangles)
-;
+ const VkRect2D* pDiscardRectangles);
#endif
-
#ifdef VK_EXT_conservative_rasterization
-
#endif
-
#ifdef VK_EXT_swapchain_colorspace
-
#endif
-
#ifdef VK_EXT_hdr_metadata
-
void goldfish_frontend_vkSetHdrMetadataEXT(
VkDevice device,
uint32_t swapchainCount,
const VkSwapchainKHR* pSwapchains,
- const VkHdrMetadataEXT* pMetadata)
-;
+ const VkHdrMetadataEXT* pMetadata);
#endif
-
#ifdef VK_MVK_ios_surface
-
VkResult goldfish_frontend_vkCreateIOSSurfaceMVK(
VkInstance instance,
const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
#endif
-
#ifdef VK_MVK_macos_surface
-
VkResult goldfish_frontend_vkCreateMacOSSurfaceMVK(
VkInstance instance,
const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkSurfaceKHR* pSurface)
-;
+ VkSurfaceKHR* pSurface);
#endif
-
#ifdef VK_EXT_external_memory_dma_buf
-
#endif
-
#ifdef VK_EXT_queue_family_foreign
-
#endif
-
#ifdef VK_EXT_debug_utils
-
VkResult goldfish_frontend_vkSetDebugUtilsObjectNameEXT(
VkDevice device,
- const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
-;
+ const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
VkResult goldfish_frontend_vkSetDebugUtilsObjectTagEXT(
VkDevice device,
- const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
-;
+ const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
void goldfish_frontend_vkQueueBeginDebugUtilsLabelEXT(
VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
+ const VkDebugUtilsLabelEXT* pLabelInfo);
void goldfish_frontend_vkQueueEndDebugUtilsLabelEXT(
- VkQueue queue)
-;
+ VkQueue queue);
void goldfish_frontend_vkQueueInsertDebugUtilsLabelEXT(
VkQueue queue,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
+ const VkDebugUtilsLabelEXT* pLabelInfo);
void goldfish_frontend_vkCmdBeginDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
+ const VkDebugUtilsLabelEXT* pLabelInfo);
void goldfish_frontend_vkCmdEndDebugUtilsLabelEXT(
- VkCommandBuffer commandBuffer)
-;
+ VkCommandBuffer commandBuffer);
void goldfish_frontend_vkCmdInsertDebugUtilsLabelEXT(
VkCommandBuffer commandBuffer,
- const VkDebugUtilsLabelEXT* pLabelInfo)
-;
+ const VkDebugUtilsLabelEXT* pLabelInfo);
VkResult goldfish_frontend_vkCreateDebugUtilsMessengerEXT(
VkInstance instance,
const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkDebugUtilsMessengerEXT* pMessenger)
-;
+ VkDebugUtilsMessengerEXT* pMessenger);
void goldfish_frontend_vkDestroyDebugUtilsMessengerEXT(
VkInstance instance,
VkDebugUtilsMessengerEXT messenger,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
void goldfish_frontend_vkSubmitDebugUtilsMessageEXT(
VkInstance instance,
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
- const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
-;
+ const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
#endif
-
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
-
VkResult goldfish_frontend_vkGetAndroidHardwareBufferPropertiesANDROID(
VkDevice device,
- const struct AHardwareBuffer* buffer,
- VkAndroidHardwareBufferPropertiesANDROID* pProperties)
-;
+ const AHardwareBuffer* buffer,
+ VkAndroidHardwareBufferPropertiesANDROID* pProperties);
VkResult goldfish_frontend_vkGetMemoryAndroidHardwareBufferANDROID(
VkDevice device,
const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
- struct AHardwareBuffer** pBuffer)
-;
+ AHardwareBuffer** pBuffer);
#endif
-
#ifdef VK_EXT_sampler_filter_minmax
-
#endif
-
#ifdef VK_AMD_gpu_shader_int16
-
#endif
-
#ifdef VK_AMD_mixed_attachment_samples
-
#endif
-
#ifdef VK_AMD_shader_fragment_mask
-
#endif
-
#ifdef VK_EXT_shader_stencil_export
-
#endif
-
#ifdef VK_EXT_sample_locations
-
void goldfish_frontend_vkCmdSetSampleLocationsEXT(
VkCommandBuffer commandBuffer,
- const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
-;
+ const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
void goldfish_frontend_vkGetPhysicalDeviceMultisamplePropertiesEXT(
VkPhysicalDevice physicalDevice,
VkSampleCountFlagBits samples,
- VkMultisamplePropertiesEXT* pMultisampleProperties)
-;
+ VkMultisamplePropertiesEXT* pMultisampleProperties);
#endif
-
#ifdef VK_EXT_blend_operation_advanced
-
#endif
-
#ifdef VK_NV_fragment_coverage_to_color
-
#endif
-
#ifdef VK_NV_framebuffer_mixed_samples
-
#endif
-
#ifdef VK_NV_fill_rectangle
-
#endif
-
#ifdef VK_EXT_post_depth_coverage
-
#endif
-
#ifdef VK_EXT_validation_cache
-
VkResult goldfish_frontend_vkCreateValidationCacheEXT(
VkDevice device,
const VkValidationCacheCreateInfoEXT* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
- VkValidationCacheEXT* pValidationCache)
-;
+ VkValidationCacheEXT* pValidationCache);
void goldfish_frontend_vkDestroyValidationCacheEXT(
VkDevice device,
VkValidationCacheEXT validationCache,
- const VkAllocationCallbacks* pAllocator)
-;
+ const VkAllocationCallbacks* pAllocator);
VkResult goldfish_frontend_vkMergeValidationCachesEXT(
VkDevice device,
VkValidationCacheEXT dstCache,
uint32_t srcCacheCount,
- const VkValidationCacheEXT* pSrcCaches)
-;
+ const VkValidationCacheEXT* pSrcCaches);
VkResult goldfish_frontend_vkGetValidationCacheDataEXT(
VkDevice device,
VkValidationCacheEXT validationCache,
size_t* pDataSize,
- void* pData)
-;
+ void* pData);
#endif
-
#ifdef VK_EXT_descriptor_indexing
-
#endif
-
#ifdef VK_EXT_shader_viewport_index_layer
-
#endif
-
#ifdef VK_EXT_global_priority
-
#endif
-
#ifdef VK_EXT_external_memory_host
-
VkResult goldfish_frontend_vkGetMemoryHostPointerPropertiesEXT(
VkDevice device,
VkExternalMemoryHandleTypeFlagBits handleType,
const void* pHostPointer,
- VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
-;
+ VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
#endif
-
#ifdef VK_AMD_buffer_marker
-
void goldfish_frontend_vkCmdWriteBufferMarkerAMD(
VkCommandBuffer commandBuffer,
VkPipelineStageFlagBits pipelineStage,
VkBuffer dstBuffer,
VkDeviceSize dstOffset,
- uint32_t marker)
-;
+ uint32_t marker);
#endif
-
#ifdef VK_AMD_shader_core_properties
-
#endif
-
#ifdef VK_EXT_vertex_attribute_divisor
-
#endif
-
#ifdef VK_NV_shader_subgroup_partitioned
-
#endif
-
#ifdef VK_NV_device_diagnostic_checkpoints
-
void goldfish_frontend_vkCmdSetCheckpointNV(
VkCommandBuffer commandBuffer,
- const void* pCheckpointMarker)
-;
+ const void* pCheckpointMarker);
void goldfish_frontend_vkGetQueueCheckpointDataNV(
VkQueue queue,
uint32_t* pCheckpointDataCount,
- VkCheckpointDataNV* pCheckpointData)
-;
+ VkCheckpointDataNV* pCheckpointData);
#endif
+} // namespace goldfish_vk
diff --git a/android/android-emugl/host/tools/emugen/Android.mk b/android/android-emugl/host/tools/emugen/Android.mk
index 81d130de62..c34ef0c7d1 100644
--- a/android/android-emugl/host/tools/emugen/Android.mk
+++ b/android/android-emugl/host/tools/emugen/Android.mk
@@ -1,39 +1,18 @@
-# Determine if the emugen build needs to be builts from
-# sources.
-LOCAL_PATH:=$(call my-dir)
+# EMUGL_EMUGEN := emugen
+LOCAL_PATH := $(call my-dir)
-$(call emugl-begin-host-executable,emugen)
-LOCAL_SRC_FILES := \
- ApiGen.cpp \
- EntryPoint.cpp \
- main.cpp \
- Parser.cpp \
- strUtils.cpp \
- TypeFactory.cpp \
+$(call start-cmake-project,emugen)
+# This is used on the host, not the target
+LOCAL_HOST_BUILD=true
-ifeq ($(BUILD_HOST_OS),linux)
- # Make sure libc++.so can be found
- LOCAL_LDFLAGS +=-Wl,-rpath=$(BUILD_OBJS_DIR)/intermediates64
-endif
+ # Define what is produced
+PRODUCED_EXECUTABLES:=emugen emugen_unittests
-LOCAL_INSTALL := false
+# Define what is consumed
+LOCAL_STATIC_LIBRARIES:=
+LOCAL_SHARED_LIBRARIES:=
-$(call emugl-end-module)
+# Define the EMUGL variable..
+EMUGL_EMUGEN := $(call local-executable-install-path,emugen)
+$(call end-cmake-project)
-# The location of the emugen host tool that is used to generate wire
-# protocol encoders/ decoders. This variable is used by other emugl modules.
-EMUGL_EMUGEN := $(LOCAL_BUILT_MODULE)
-
-$(call emugl-begin-host-executable,emugen_unittests)
-LOCAL_SRC_FILES := \
- Parser.cpp \
- Parser_unittest.cpp
-
-LOCAL_INSTALL := false
-
-$(call emugl-import,libemugl_gtest_host)
-ifeq ($(BUILD_HOST_OS),linux)
- # Make sure libc++.so can be found
- LOCAL_LDFLAGS +=-Wl,-rpath=$(BUILD_OBJS_DIR)/intermediates64 -m64
-endif
-$(call emugl-end-module)
diff --git a/android/android-emugl/host/tools/emugen/CMakeLists.txt b/android/android-emugl/host/tools/emugen/CMakeLists.txt
new file mode 100644
index 0000000000..270c453199
--- /dev/null
+++ b/android/android-emugl/host/tools/emugen/CMakeLists.txt
@@ -0,0 +1,27 @@
+cmake_minimum_required(VERSION 3.5)
+project(emugen)
+enable_testing ()
+
+add_subdirectory(../../../../../../googletest build/googletest)
+include_directories(../../../../android-emu)
+
+add_executable(emugen
+ ApiGen.cpp
+ EntryPoint.cpp
+ main.cpp
+ Parser.cpp
+ strUtils.cpp
+ TypeFactory.cpp)
+
+add_executable(emugen_unittests
+ Parser.cpp
+ Parser_unittest.cpp)
+
+IF(UNIX AND NOT APPLE)
+ set_target_properties(emugen PROPERTIES LINK_FLAGS "-Wl,-rpath=$ORIGIN/lib64:$ORIGIN/lib:$ORIGIN/intermediates64")
+ set_target_properties(emugen_unittests PROPERTIES LINK_FLAGS "-Wl,-rpath=$ORIGIN/lib64:$ORIGIN/lib:$ORIGIN/intermediates64")
+ENDIF(UNIX AND NOT APPLE)
+
+
+target_link_libraries(emugen_unittests gmock_main)
+add_test (NAME emugen_unittests COMMAND emugen_unittests)
diff --git a/android/android-emugl/shared/emugl/common/thread.h b/android/android-emugl/shared/emugl/common/thread.h
index ba6bb70159..40e4b141be 100644
--- a/android/android-emugl/shared/emugl/common/thread.h
+++ b/android/android-emugl/shared/emugl/common/thread.h
@@ -19,5 +19,6 @@
namespace emugl {
using android::base::Thread;
+using android::base::InterruptibleThread;
} // namespace emugl
diff --git a/android/asan_overrides b/android/asan_overrides
new file mode 100644
index 0000000000..58c9731ddc
--- /dev/null
+++ b/android/asan_overrides
@@ -0,0 +1 @@
+detect_leaks=0:detect_container_overflow=0
diff --git a/android/build/Makefile.common.mk b/android/build/Makefile.common.mk
index 93b996d0cb..91b81a77aa 100644
--- a/android/build/Makefile.common.mk
+++ b/android/build/Makefile.common.mk
@@ -6,38 +6,27 @@ $(eval \
$(call on-first-run,FIRST_INCLUDE:= true,FIRST_INCLUDE:=) \
)
-
# Build libext4_utils and related modules/
include $(LOCAL_PATH)/android/third_party/zlib.mk
include $(LOCAL_PATH)/android/third_party/libcurl.mk
include $(LOCAL_PATH)/android/third_party/libuuid.mk
include $(LOCAL_PATH)/android/third_party/libxml2.mk
-include $(LOCAL_PATH)/android/third_party/mman-win32/libmman-win32.mk
-include $(LOCAL_PATH)/android/third_party/murmurhash/libmurmurhash.mk
-include $(LOCAL_PATH)/android/third_party/libsparse/sources.mk
-include $(LOCAL_PATH)/android/third_party/libselinux/sources.mk
-include $(LOCAL_PATH)/android/third_party/libwebp/sources.mk
-include $(LOCAL_PATH)/android/third_party/libkeymaster3/sources.mk
-include $(LOCAL_PATH)/android/third_party/ext4_utils/sources.mk
include $(LOCAL_PATH)/android/third_party/libbreakpad.mk
include $(LOCAL_PATH)/android/third_party/Qt5.mk
-include $(LOCAL_PATH)/android/third_party/jpeg-6b/libjpeg.mk
include $(LOCAL_PATH)/android/third_party/libpng.mk
include $(LOCAL_PATH)/android/third_party/mini-glib/sources.make
include $(LOCAL_PATH)/android/third_party/googletest/Android.mk
include $(LOCAL_PATH)/android/third_party/libANGLEtranslation.mk
-include $(LOCAL_PATH)/android/third_party/libyuv/Android.mk
include $(LOCAL_PATH)/android/third_party/Protobuf.mk
include $(LOCAL_PATH)/android/third_party/liblz4.mk
include $(LOCAL_PATH)/android/third_party/libffmpeg.mk
include $(LOCAL_PATH)/android/third_party/libx264.mk
include $(LOCAL_PATH)/android/third_party/libvpx.mk
include $(LOCAL_PATH)/android/third_party/libsdl2.mk
-include $(LOCAL_PATH)/android/third_party/tinyobjloader.mk
include $(LOCAL_PATH)/android/third_party/picosha2/picosha2.mk
-include $(LOCAL_PATH)/android/third_party/libdtb/libdtb.mk
-include $(LOCAL_PATH)/android/third_party/tinyepoxy/tinyepoxy.mk
include $(LOCAL_PATH)/android/third_party/libvirglrenderer.mk
+include $(LOCAL_PATH)/android/third_party/third_party_libs.mk
+include $(LOCAL_PATH)/android/third_party/ext4_utils/sources.mk
# Bluez only works on linux
ifeq ($(BUILD_TARGET_OS),linux)
@@ -182,8 +171,10 @@ ifeq (,$(CONFIG_AEMU64_ONLY))
EMULATOR_TARGET_ARCH := x86
include $(LOCAL_PATH)/android/qemu1/Makefile.qemu1-target.mk
- EMULATOR_TARGET_ARCH := mips
- include $(LOCAL_PATH)/android/qemu1/Makefile.qemu1-target.mk
+ ifeq (true,$(BUILD_ENABLE_MIPS))
+ EMULATOR_TARGET_ARCH := mips
+ include $(LOCAL_PATH)/android/qemu1/Makefile.qemu1-target.mk
+ endif
endif # !CONFIG_AEMU64_ONLY
endif # !CONFIG_MIN_BUILD
@@ -282,3 +273,14 @@ ifeq (,$(CONFIG_AEMU64_ONLY))
include $(QEMU2_TOP_DIR)/android-qemu2-glue/build/Makefile.qemu2.mk
endif # !CONFIG_AEMU64_ONLY
endif
+
+##############################################################################
+##############################################################################
+###
+### Emulator end2end tests
+###
+ifdef QEMU2_TOP_DIR
+ifeq (,$(CONFIG_AEMU64_ONLY))
+include $(QEMU2_TOP_DIR)/android/tests/Makefile.end2end.mk
+endif # !CONFIG_AEMU64_ONLY
+endif
diff --git a/android/build/Makefile.top.mk b/android/build/Makefile.top.mk
index 3540171a05..a744340774 100644
--- a/android/build/Makefile.top.mk
+++ b/android/build/Makefile.top.mk
@@ -59,6 +59,11 @@ ifeq ($(BUILD_DEBUG),true)
# Enable code coverage for debug builds.
BUILD_TARGET_CFLAGS += $(call if-target-clang, -fprofile-instr-generate -fcoverage-mapping -fprofile-arcs -ftest-coverage)
BUILD_OPT_LDFLAGS += $(call if-target-clang, -fprofile-instr-generate -fcoverage-mapping -fprofile-arcs -ftest-coverage --coverage)
+
+ # Always enable address sanitizer for clang builds in debug mode if no specific sanitizer is requested.
+ ifeq (,$(BUILD_SANITIZER))
+ BUILD_SANITIZER = $(call if-target-clang,address)
+ endif
else
ifneq (windows,$(BUILD_TARGET_OS))
BUILD_OPT_CFLAGS += -O3 -DNDEBUG=1
@@ -119,6 +124,7 @@ CLANG_COMPILER_FLAGS= \
-Wno-unused-lambda-capture \
-Wno-unused-private-field \
-Wno-unused-value \
+ -Wswitch \
# Add your tidy checks here.
CLANG_TIDY_CHECKS=-*, \
@@ -319,6 +325,22 @@ end-emulator-program = \
$(eval LOCAL_LDFLAGS += -Wl,-rpath=\$$$$ORIGIN/lib64:\$$$$ORIGIN/lib)) \
$(eval $(end-emulator-module-ev)) \
+# A variant that enables incorporation of cmake subprojects.
+start-cmake-project = \
+ $(eval include $(CLEAR_VARS)) \
+ $(eval PRODUCED_EXECUTABLES:=) \
+ $(eval PRODUCED_TESTS:=) \
+ $(eval PRODUCED_SHARED_LIBS:=) \
+ $(eval PRODUCED_STATIC_LIBS:=) \
+ $(eval CONSUMED_STATIC_LIBS:=) \
+ $(eval LOCAL_MODULE:=$(1)) \
+ $(eval LOCAL_BUILD_FILE := $(BUILD_CMAKE))
+
+# A variant of end-emulator-library for host programs instead
+end-cmake-project = \
+ $(eval $(end-emulator-module-ev)) \
+
+
# Same thing for shared libraries
start-emulator-shared-lib = \
$(call start-emulator-library,$1) \
diff --git a/android/build/cmake/emu-angle-config.cmake b/android/build/cmake/emu-angle-config.cmake
new file mode 100644
index 0000000000..cfb29788ea
--- /dev/null
+++ b/android/build/cmake/emu-angle-config.cmake
@@ -0,0 +1,22 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/ANGLE/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(ANGLE_INCLUDE_DIRS "${PREBUILT_ROOT}/include")
+set(ANGLE_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(ANGLE_LIBRARIES "${PREBUILT_ROOT}/lib/libtranslator_static.a;${PREBUILT_ROOT}/lib/libtranslator_lib.a;${PREBUILT_ROOT}/lib/libpreprocessor.a;${PREBUILT_ROOT}/lib/libangle_common.a")
+set(ANGLE_FOUND TRUE)
+set(PACKAGE_EXPORT "ANGLE_INCLUDE_DIR;ANGLE_INCLUDE_DIRS;ANGLE_LIBRARIES;ANGLE_FOUND")
+
diff --git a/android/build/cmake/emu-breakpad-config.cmake b/android/build/cmake/emu-breakpad-config.cmake
new file mode 100644
index 0000000000..d8b735fcb2
--- /dev/null
+++ b/android/build/cmake/emu-breakpad-config.cmake
@@ -0,0 +1,23 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/breakpad/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(BREAKPAD_INCLUDE_DIR "${PREBUILT_ROOT}/include/breakpad")
+set(BREAKPAD_INCLUDE_DIRS "${BREAKPAD_INCLUDE_DIR}")
+set(BREAKPAD_LIBRARIES "${PREBUILT_ROOT}/lib/libbreakpad.a;${PREBUILT_ROOT}/lib/libdisasm.a")
+set(BREAKPAD_CLIENT_LIBRARIES "${PREBUILT_ROOT}/lib/libbreakpad_client.a")
+set(BREAKPAD_FOUND TRUE)
+set(PACKAGE_EXPORT "BREAKPAD_INCLUDE_DIR;BREAKPAD_INCLUDE_DIRS;BREAKPAD_LIBRARIES;BREAKPAD_CLIENT_LIBRARIES;BREAKPAD_FOUND")
+
diff --git a/android/build/cmake/emu-curl-config.cmake b/android/build/cmake/emu-curl-config.cmake
new file mode 100644
index 0000000000..7082db9389
--- /dev/null
+++ b/android/build/cmake/emu-curl-config.cmake
@@ -0,0 +1,25 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+prebuilt(OpenSSL)
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/curl/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(CURL_INCLUDE_DIRS "${PREBUILT_ROOT}/include")
+set(CURL_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(CURL_LIBRARIES "${PREBUILT_ROOT}/lib/libcurl.a;${OPENSSL_LIBRARIES}")
+set(CURL_CFLAGS "-DCURL_STATICLIB")
+set(CURL_FOUND TRUE)
+
+set(PACKAGE_EXPORT "CURL_INCLUDE_DIR;CURL_INCLUDE_DIRS;CURL_LIBRARIES;CURL_FOUND")
+
diff --git a/android/build/cmake/emu-ffmpeg-config.cmake b/android/build/cmake/emu-ffmpeg-config.cmake
new file mode 100644
index 0000000000..e0845d3174
--- /dev/null
+++ b/android/build/cmake/emu-ffmpeg-config.cmake
@@ -0,0 +1,26 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/ffmpeg/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(FFMPEG_INCLUDE_DIR "${PREBUILT_ROOT}/include/")
+set(FFMPEG_INCLUDE_DIRS "${FFMPEG_INCLUDE_DIRS}")
+set(FFMPEG_LIBAVCODEC "${PREBUILT_ROOT}/lib/libavcodec.a")
+set(FFMPEG_LIBAVFORMAT "${PREBUILT_ROOT}/lib/libavformat.a")
+set(FFMPEG_LIBAVUTIL "${PREBUILT_ROOT}/lib/libavutil.a")
+set(FFMPEG_LIBRARIES "${PREBUILT_ROOT}/lib/libavformat.a;${PREBUILT_ROOT}/lib/libavfilter.a;${PREBUILT_ROOT}/lib/libavcodec.a;${PREBUILT_ROOT}/lib/libswresample.a;${PREBUILT_ROOT}/lib/libswscale.a;${PREBUILT_ROOT}/lib/libavutil.a")
+set(FFMPEG_FOUND TRUE)
+set(PACKAGE_EXPORT "FFMPEG_INCLUDE_DIR;FFMPEG_INCLUDE_DIRS;FFMPEG_LIBRARIES;FFMPEG_CLIENT_LIBRARIES;FFMPEG_FOUND;FFMPEG_LIBAVUTIL;FFMPEG_LIBAVFORMAT;FFMPEG_LIBAVCODEC")
+
+
diff --git a/android/build/cmake/emu-libxml2-config.cmake b/android/build/cmake/emu-libxml2-config.cmake
new file mode 100644
index 0000000000..d2ef7f0a5b
--- /dev/null
+++ b/android/build/cmake/emu-libxml2-config.cmake
@@ -0,0 +1,24 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/libxml2/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(LIBXML2_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(LIBXML2_INCLUDE_DIRS "${LIBXML2_INCLUDE_DIRS}")
+set(LIBXML2_LIBRARIES "${PREBUILT_ROOT}/lib/libxml2.a")
+set(LIBXML2_DEFINITIONS "-DLIBXML_STATIC")
+set(LIBXML2_FOUND TRUE)
+
+set(PACKAGE_EXPORT "LIBXML2_INCLUDE_DIR;LIBXML2_INCLUDE_DIRS;LIBXML2_LIBRARIES;LIBXML2_FOUND")
+
diff --git a/android/build/cmake/emu-openssl-config.cmake b/android/build/cmake/emu-openssl-config.cmake
new file mode 100644
index 0000000000..f092ff6eb1
--- /dev/null
+++ b/android/build/cmake/emu-openssl-config.cmake
@@ -0,0 +1,24 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/curl/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(OPENSSL_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(OPENSSL_INCLUDE_DIRS "${PREBUILT_ROOT}/include")
+set(OPENSSL_LIBRARIES "${PREBUILT_ROOT}/lib/libssl.a;${PREBUILT_ROOT}/lib/libcrypto.a")
+set(OPENSSL_FOUND TRUE)
+set(OPENSSL_VERSION "1.0.2j")
+
+set(PACKAGE_EXPORT "OPENSSL_INCLUDE_DIR;OPENSSL_INCLUDE_DIRS;OPENSSL_LIBRARIES;OPENSSL_FOUND;OPENSSL_VERSION")
+
diff --git a/android/build/cmake/emu-png-config.cmake b/android/build/cmake/emu-png-config.cmake
new file mode 100644
index 0000000000..2117e0f3a6
--- /dev/null
+++ b/android/build/cmake/emu-png-config.cmake
@@ -0,0 +1,24 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+prebuilt(ZLIB)
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/qemu-android-deps/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(PNG_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(PNG_INCLUDE_DIRS "${PREBUILT_ROOT}/include")
+set(PNG_LIBRARIES "${PREBUILT_ROOT}/lib/libpng.a;${ZLIB_LIBRARIES}")
+set(PNG_FOUND TRUE)
+
+set(PACKAGE_EXPORT "PNG_INCLUDE_DIR;PNG_INCLUDE_DIRS;PNG_LIBRARIES;PNG_FOUND")
+
diff --git a/android/build/cmake/emu-protobuf-config.cmake b/android/build/cmake/emu-protobuf-config.cmake
new file mode 100644
index 0000000000..b9e11514e6
--- /dev/null
+++ b/android/build/cmake/emu-protobuf-config.cmake
@@ -0,0 +1,37 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/protobuf/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(PROTOBUF_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(PROTOBUF_INCLUDE_DIRS "${PROTOBUF_INCLUDE_DIR}")
+set(PROTOBUF_LIBRARIES "${PREBUILT_ROOT}/lib/libprotobuf.a")
+set(PROTOBUF_LIBRARY "${PREBUILT_ROOT}/lib/libprotobuf.a")
+set(PROTOBUF_IMPORT_DIRS "${PROTOBUF_INCLUDE_DIR}")
+set(PROTOBUF_FOUND TRUE)
+
+if ( ${LOCAL_TARGET_TAG} MATCHES ".*windows.*")
+ # We better be able to run the protoc tool when we are cross compiling...
+ get_filename_component(PROTO_EXEC_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/protobuf/linux-x86_64" ABSOLUTE)
+ set(PROTOBUF_PROTOC_EXECUTABLE "${PROTO_EXEC_ROOT}/bin/protoc")
+ message(STATUS "Cross compiling using linux protoc")
+else ()
+ set(PROTOBUF_PROTOC_EXECUTABLE "${PREBUILT_ROOT}/bin/protoc")
+endif ()
+
+set(PACKAGE_EXPORT "PROTOBUF_INCLUDE_DIRS;PROTOBUF_IMPORT_DIRS;PROTOBUF_INCLUDE_DIR;PROTOBUF_LIBRARIES;PROTOBUF_PROTOC_EXECUTABLE;PROTOBUF_FOUND")
+
+# We've configured everything, so now let's make sure cmake sets up the right macros
+find_package(Protobuf REQUIRED)
+
diff --git a/android/build/cmake/emu-sdl2-config.cmake b/android/build/cmake/emu-sdl2-config.cmake
new file mode 100644
index 0000000000..2c41d0e3fc
--- /dev/null
+++ b/android/build/cmake/emu-sdl2-config.cmake
@@ -0,0 +1,23 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/qemu-android-deps/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(SDL2_INCLUDE_DIRS "${PREBUILT_ROOT}/include")
+set(SDL2_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(SDL2_LIBRARIES "${PREBUILT_ROOT}/lib/SDL2.a")
+set(SDL_FOUND TRUE)
+
+set(PACKAGE_EXPORT "SDL2_INCLUDE_DIR;SDL2_INCLUDE_DIRS;SDL2_LIBRARIES;SDL2_FOUND")
+
diff --git a/android/build/cmake/emu-usb-config.cmake b/android/build/cmake/emu-usb-config.cmake
new file mode 100644
index 0000000000..825122ae03
--- /dev/null
+++ b/android/build/cmake/emu-usb-config.cmake
@@ -0,0 +1,24 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/libusb/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(USB_INCLUDE_DIR "${PREBUILT_ROOT}/include/libusb-1.0")
+set(USB_INCLUDE_DIRS "${USB_INCLUDE_DIRS}")
+set(USB_LIBRARIES "${PREBUILT_ROOT}/lib/libusb-1.0.a")
+set(USB_FOUND TRUE)
+
+set(PACKAGE_EXPORT "USB_INCLUDE_DIR;USB_INCLUDE_DIRS;USB_LIBRARIES;USB_FOUND")
+
+
diff --git a/android/build/cmake/emu-uuid-config.cmake b/android/build/cmake/emu-uuid-config.cmake
new file mode 100644
index 0000000000..e92ad52323
--- /dev/null
+++ b/android/build/cmake/emu-uuid-config.cmake
@@ -0,0 +1,30 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/e2fsprogs/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+if ("${LOCAL_TARGET_TAG}" MATCHES "darwin.*")
+ # Apple does its own thing, and the headers are in /usr/include
+ set(UUID_INCLUDE_DIR "/usr/include")
+ set(UUID_INCLUDE_DIRS "${UUID_INCLUDE_DIRS}")
+elseif ("${LOCAL_TARGET_TAG}" MATCHES "linux.*")
+ set(UUID_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+ set(UUID_INCLUDE_DIRS "${UUID_INCLUDE_DIRS}")
+ set(UUID_LIBRARIES "${PREBUILT_ROOT}/lib/libuuid.a")
+elseif ( ("${LOCAL_TARGET_TAG}" MATCHES "windows.*") )
+ # In windows you include rpc.h
+ set(UUID_LIBRARIES "-lrpcrt4")
+endif ()
+set(PACKAGE_EXPORT "UUID_INCLUDE_DIR;UUID_INCLUDE_DIRS;UUID_LIBRARIES;UUID_FOUND")
+set(UUID_FOUND TRUE)
diff --git a/android/build/cmake/emu-virglrenderer-config.cmake b/android/build/cmake/emu-virglrenderer-config.cmake
new file mode 100644
index 0000000000..11903aace4
--- /dev/null
+++ b/android/build/cmake/emu-virglrenderer-config.cmake
@@ -0,0 +1,23 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/virglrenderer/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(VIRGLRENDERER_INCLUDE_DIR "${PREBUILT_ROOT}/include/virgl")
+set(VIRGLRENDERER_INCLUDE_DIRS "${VIRGLRENDERER_INCLUDE_DIRS}")
+set(VIRGLRENDERER_LIBRARIES "${PREBUILT_ROOT}/lib/libvirglrenderer.a")
+set(VIRGLRENDERER_FOUND TRUE)
+
+set(PACKAGE_EXPORT "VIRGLRENDERER_INCLUDE_DIR;VIRGLRENDERER_INCLUDE_DIRS;VIRGLRENDERER_LIBRARIES;VIRGLRENDERER_FOUND")
+
diff --git a/android/build/cmake/emu-vpx-config.cmake b/android/build/cmake/emu-vpx-config.cmake
new file mode 100644
index 0000000000..e7ce0a3810
--- /dev/null
+++ b/android/build/cmake/emu-vpx-config.cmake
@@ -0,0 +1,23 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/libvpx/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(VPX_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(VPX_INCLUDE_DIRS "${VPX_INCLUDE_DIRS}")
+set(VPX_LIBRARIES "${PREBUILT_ROOT}/lib/libvpx.a")
+set(VPX_FOUND TRUE)
+
+set(PACKAGE_EXPORT "VPX_INCLUDE_DIR;VPX_INCLUDE_DIRS;VPX_LIBRARIES;VPX_FOUND")
+
diff --git a/android/build/cmake/emu-zlib-config.cmake b/android/build/cmake/emu-zlib-config.cmake
new file mode 100644
index 0000000000..ccfae4e6ea
--- /dev/null
+++ b/android/build/cmake/emu-zlib-config.cmake
@@ -0,0 +1,23 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/qemu-android-deps/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+set(ZLIB_INCLUDE_DIR "${PREBUILT_ROOT}/include")
+set(ZLIB_INCLUDE_DIRS "${ZLIB_INCLUDE_DIRS}")
+set(ZLIB_LIBRARIES "${PREBUILT_ROOT}/lib/libz.a")
+set(ZLIB_FOUND TRUE)
+
+set(PACKAGE_EXPORT "ZLIB_INCLUDE_DIR;ZLIB_INCLUDE_DIRS;ZLIB_LIBRARIES;ZLIB_FOUND")
+
diff --git a/android/build/cmake/prebuilts.cmake b/android/build/cmake/prebuilts.cmake
new file mode 100644
index 0000000000..1abf406b75
--- /dev/null
+++ b/android/build/cmake/prebuilts.cmake
@@ -0,0 +1,202 @@
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This contains a set of definitions to make working with prebuilts easier
+# and manageable.
+
+set(PREBUILT_COMMON "BLUEZ;LZ4;X264")
+
+# Internal function for simple packages.
+function(simple_prebuilt Package)
+ # A simple common package..
+ string(TOLOWER ${Package} pkg)
+ string(TOUPPER ${Package} PKG)
+ get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../../prebuilts/android-emulator-build/common/${pkg}/${LOCAL_TARGET_TAG}" ABSOLUTE)
+
+ set(${PKG}_INCLUDE_DIRS "${PREBUILT_ROOT}/include" PARENT_SCOPE)
+ set(${PKG}_INCLUDE_DIR "${PREBUILT_ROOT}/include" PARENT_SCOPE)
+ set(${PKG}_LIBRARIES "${PREBUILT_ROOT}/lib/lib${pgk}.a" PARENT_SCOPE)
+ set(${PKG}_FOUND TRUE PARENT_SCOPE)
+ set(PACKAGE_EXPORT "${PKG}_INCLUDE_DIR;${PKG}_INCLUDE_DIRS;${PKG}_LIBRARIES;${PKG}_FOUND" PARENT_SCOPE)
+endfunction()
+
+# This function is to be used as a replacement for find_package
+# it will discover the internal prebuilts needed to compile the emulator
+
+# It will revert to standard find_package if the TARGET_TAG and QEMU2_TOP_DIR properties
+# are not defined.
+#
+# If they are defined the emu-{Package}-config.cmake will be executed.
+# This script should mimic FindPackage for the specific Package, it should set
+# all variables of relevance and declare these in PACKAG_EXPORT so they can be
+# made visible.
+#
+# See: emu-curl-config.cmake for a simple example.
+# See: emu-protobuf-config.cmake for a more complicated example.
+#
+# Package
+# The package which we wish to resolve
+function(prebuilt Package)
+ string(TOLOWER ${Package} pkg)
+ string(TOUPPER ${Package} PKG)
+ if (DEFINED LOCAL_QEMU2_TOP_DIR AND DEFINED LOCAL_TARGET_TAG)
+ if (${PKG} IN_LIST PREBUILT_COMMON)
+ simple_prebuilt(${Package})
+ else ()
+ get_filename_component(PREBUILT_ROOT "${LOCAL_QEMU2_TOP_DIR}/../.." ABSOLUTE)
+
+ # We make sure we use our internal cmake directory to resolve
+ # packages
+ set(${Package}_DIR "${TOOLS_DIRECTORY}/cmake")
+
+ # This will cause cmake to look for emu-${pkg}-config.cmake in
+ # the directory above.
+ find_package(${Package} REQUIRED NAMES "emu-${pkg}")
+
+ # Oh oh.
+ if (NOT ${PKG}_LIBRARIES MATCHES "${PREBUILT_ROOT}.*")
+ message(STATUS "Discovered ${Package} lib -l${${PKG}_LIBRARIES} and -I${${PKG}_INCLUDE_DIR} which is outside of tree ${PREBUILT_ROOT}!")
+ endif ()
+ endif ()
+
+ if (DEFINED ${PKG}_INCLUDE_DIR AND NOT EXISTS ${${PKG}_INCLUDE_DIR})
+ message(FATAL_ERROR "The include ${${PKG}_INCLUDE_DIR} directory of ${Package} does not exist..")
+ endif ()
+ message(STATUS "Found ${Package}: ${${PKG}_LIBRARIES} (Prebuilt version)")
+
+ # Export the variables to parent
+ foreach(TO_EXP ${PACKAGE_EXPORT})
+ set(${TO_EXP} "${${TO_EXP}}" PARENT_SCOPE)
+ endforeach()
+ else()
+
+ # You are not using our make system!
+ message("${Package} is outside of emulator build!")
+ find_package(${PKG} REQUIRED)
+ endif()
+endfunction (prebuilt pkg)
+
+# Add the runtime dependencies, i.e. the set of libs that need to be copied over to the proper location
+# in order to run the executable.
+#
+# RUN_TARGET
+# The executable that needs these run time dependencies
+#
+# RUN_TARGET_DEPENDENCIES
+# List of SRC>DST pairs that contains the dependencies.
+# This SRC will be copied to the destination folder.
+# These should be made available through running prebuilt(xxxx).
+# note that you will always want to include RUNTIME_OS_DEPENDENCIES
+# on your target
+#
+# RUN_TARGET_PROPERTIES
+# List of properties that should be set on the target in order for it to
+# properly link and run with the prebuilt dependency. For example
+# LINK=--nmagic. Will set the linker flag --nmagic during compilation.
+function (target_prebuilt_dependency RUN_TARGET RUN_TARGET_DEPENDENCIES RUN_TARGET_PROPERTIES)
+ list(REMOVE_DUPLICATES RUN_TARGET_DEPENDENCIES)
+ foreach(DEP ${RUN_TARGET_DEPENDENCIES})
+ message(STATUS "Handling ${DEP}")
+ # Turns src>dst into a list, so we can
+ # split out SRC --> DST
+ string(REPLACE ">" ";" SRC_DST ${DEP})
+ list(GET SRC_DST 0 SRC)
+ list(GET SRC_DST 1 DST)
+ if (NOT EXISTS ${SRC})
+ message(FATAL_ERROR "The target ${RUN_TARGET} depends on a prebuilt: ${SRC_DST},${SRC} that does not exist!")
+ endif ()
+
+ #set(TARGET_DIR "$<TARGET_FILE_DIR:${RUN_TARGET}>/${DST}")
+ #get_filename_component(DIR "${TARGET_DIR}" DIRECTORY)
+ #message(FATAL_ERROR "We need to make ${DST} -> ${DIR}")
+ #add_custom_target(make-directory-${RUN_TARGET} POST_BUILD
+ # COMMAND ${CMAKE_COMMAND} -E make_directory ${DIR})
+
+ add_custom_command(TARGET ${RUN_TARGET} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ "${SRC}"
+ "$<TARGET_FILE_DIR:${RUN_TARGET}>/${DST}")
+
+ endforeach()
+
+ list(REMOVE_DUPLICATES RUN_TARGET_PROPERTIES)
+ foreach(PROP ${RUN_TARGET_PROPERTIES})
+ message(STATUS "Exploring ${PROP}")
+ string(REPLACE "=" ";" KEY_VAL ${PROP})
+ list(GET KEY_VAL 0 KEY)
+ list(GET KEY_VAL 1 VAL)
+
+ set(${KEY}_VAL "${${KEY}_VAL} ${VAL}")
+ message(STATUS "set_target_properties(${RUN_TARGET} PROPERTIES ${KEY} ${${KEY}_VAL})")
+ set_target_properties(${RUN_TARGET} PROPERTIES "${KEY}" "${${KEY}_VAL}")
+ endforeach()
+
+endfunction()
+
+
+# Configure the OS dependencies, if we are in android make system..
+if ( ${LOCAL_TARGET_TAG} MATCHES "windows-x86_64")
+ set(GEN_SDK "${LOCAL_QEMU2_TOP_DIR}/android/scripts/gen-android-sdk-toolchain.sh")
+ execute_process(COMMAND ${GEN_SDK} "--host=windows-x86_64" "--print=sysroot" "unused_param"
+ RESULT_VARIABLE GEN_SDK_RES
+ OUTPUT_VARIABLE MINGW_SYSROOT)
+ string(REPLACE "\n" "" MINGW_SYSROOT "${MINGW_SYSROOT}")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/bin/libwinpthread-1.dll>lib64/libwinpthread-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib32/libwinpthread-1.dll>lib/libwinpthread-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib/libgcc_s_seh-1.dll>lib64/libgcc_s_seh-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib32/libgcc_s_sjlj-1.dll>lib/libgcc_s_sjlj-1.dll")
+
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-m64")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-static-libgcc")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-Xlinker")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=--build-id")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-mcx16")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-Wl,-Bstatic -lstdc++")
+elseif ( ${LOCAL_TARGET_TAG} MATCHES "windows-x86")
+ set(GEN_SDK "${LOCAL_QEMU2_TOP_DIR}/android/scripts/gen-android-sdk-toolchain.sh")
+ execute_process(COMMAND ${GEN_SDK} "--host=windows-x86" "--print=sysroot" "unused_param"
+ RESULT_VARIABLE GEN_SDK_RES
+ OUTPUT_VARIABLE MINGW_SYSROOT)
+ string(REPLACE "\n" "" MINGW_SYSROOT "${MINGW_SYSROOT}")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/bin/libwinpthread-1.dll>lib64/libwinpthread-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib32/libwinpthread-1.dll>lib/libwinpthread-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib/libgcc_s_seh-1.dll>lib64/libgcc_s_seh-1.dll")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${MINGW_SYSROOT}/lib32/libgcc_s_sjlj-1.dll>lib/libgcc_s_sjlj-1.dll")
+
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-m32 -Xlinker --large-address-aware -mcx16 -Xlinker")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=--stack -Xlinker 1048576 -static-libgcc -Xlinker --build-id -mcx16")
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-Wl,-Bstatic -lstdc++")
+elseif ( ${LOCAL_TARGET_TAG} MATCHES "linux-x86_64")
+ set(GEN_SDK "${LOCAL_QEMU2_TOP_DIR}/android/scripts/gen-android-sdk-toolchain.sh")
+ execute_process(COMMAND ${GEN_SDK} "--print=libcplusplus" "unused_param"
+ RESULT_VARIABLE GEN_SDK_RES
+ OUTPUT_VARIABLE LIBCPLUSPLUS)
+
+ # Resolve the files.
+ string(REPLACE "\n" "" LIBCPLUSPLUS "${LIBCPLUSPLUS}")
+ get_filename_component(RESOLVED_SO "${LIBCPLUSPLUS}" REALPATH)
+ get_filename_component(RESOLVED_FILENAME "${RESOLVED_SO}" NAME)
+
+ list(APPEND RUNTIME_OS_DEPENDENCIES "${LIBCPLUSPLUS}>lib64/${RESOLVED_FILENAME}")
+
+ # Configure the RPATH be dynamic..
+ list(APPEND RUNTIME_OS_PROPERTIES "LINK_FLAGS=-Wl,-rpath,'$ORIGIN/lib64'")
+elseif (${LOCAL_TARGET_TAG} MATCHES "darwin-x86")
+ list(APPEND RUNTIME_OS_PROPERTIES "")
+ list(APPEND RUNTIME_OS_DEPENDENCIES "")
+endif ()
+
+message("OS_DEPS: [${RUNTIME_OS_DEPENDENCIES}] - [${RUNTIME_OS_PROPERTIES}]")
+
+
diff --git a/android/build/cmake/test/CMakeLists.txt b/android/build/cmake/test/CMakeLists.txt
new file mode 100644
index 0000000000..d35814cbb5
--- /dev/null
+++ b/android/build/cmake/test/CMakeLists.txt
@@ -0,0 +1,42 @@
+cmake_minimum_required(VERSION 3.5)
+project(TEST)
+
+SET (TOOLS_DIRECTORY ${TEST_SOURCE_DIR}/../..)
+LIST (APPEND CMAKE_MODULE_PATH "${TOOLS_DIRECTORY}/cmake")
+
+
+include(prebuilts)
+
+# These are not usually available outside our build system.
+if (DEFINED LOCAL_TARGET_TAG)
+ prebuilt(ANGLE)
+ prebuilt(FFMPEG)
+ prebuilt(BREAKPAD)
+ prebuilt(LZ4)
+ prebuilt(SDL2)
+ prebuilt(UUID)
+ prebuilt(VIRGLRENDERER)
+ prebuilt(VPX)
+ prebuilt(X264)
+ prebuilt(OpenSSL)
+ # No usb on windows..
+ if (NOT ("${LOCAL_TARGET_TAG}" MATCHES "windows.*") )
+ prebuilt(USB)
+ endif ()
+endif ()
+
+prebuilt(CURL)
+prebuilt(LIBXML2)
+prebuilt(PNG)
+prebuilt(Protobuf)
+prebuilt(ZLIB)
+
+protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS test.proto)
+add_executable(hello hello.c ${PROTO_SRCS} ${PROTO_HDRS})
+target_link_libraries(hello ${PROTOBUF_LIBRARIES})
+target_link_libraries(hello ${UUID_LIBRARIES})
+
+target_include_directories(hello PRIVATE ${PROTOBUF_INCLUDE_DIR})
+target_include_directories(hello PRIVATE ${UUID_INCLUDE_DIR})
+target_prebuilt_dependency(hello "${RUNTIME_OS_DEPENDENCIES}" "${RUNTIME_OS_PROPERTIES}")
+# target_prebuilt_dependency(hello "" "")
diff --git a/android/build/cmake/test/hello.c b/android/build/cmake/test/hello.c
new file mode 100644
index 0000000000..e6fd913310
--- /dev/null
+++ b/android/build/cmake/test/hello.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#ifdef _WIN32
+#include <rpc.h>
+#else
+#include <uuid/uuid.h>
+#endif
+
+int main(int a, char** b) {
+#ifdef _WIN32
+ UUID uu;
+ UuidCreate(&uu);
+#else
+ uuid_t uu;
+ uuid_generate(uu);
+#endif
+ printf("hi!\n");
+ return 0;
+}
diff --git a/android/build/cmake/test/run_cmake_tests.sh b/android/build/cmake/test/run_cmake_tests.sh
new file mode 100755
index 0000000000..19006a2c52
--- /dev/null
+++ b/android/build/cmake/test/run_cmake_tests.sh
@@ -0,0 +1,217 @@
+#!/bin/sh
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+. $(realpath $(dirname "$0")/../../../scripts/utils)/common.shi
+_SHU_PROGDIR=$(realpath $(dirname "$0")/../../../scripts/)
+
+shell_import utils/aosp_dir.shi
+shell_import utils/temp_dir.shi
+shell_import utils/option_parser.shi
+
+# Fancy colors in the terminal
+if [ -t 1 ] ; then
+ RED=`tput setaf 1`
+ GREEN=`tput setaf 2`
+ RESET=`tput sgr0`
+else
+ RED=
+ GREEN=
+ RESET=
+fi
+
+
+PROGRAM_PARAMETERS=""
+
+PROGRAM_DESCRIPTION="Runs all the cmake based unit tests."
+
+OPT_OUT=objs
+option_register_var "--out-dir=<dir>" OPT_OUT "Use specific output directory"
+
+aosp_dir_register_option
+option_parse "$@"
+aosp_dir_parse_option
+
+
+cd $PROGDIR/../../..
+
+# We don't want to bail immediately in case of failures
+set +e
+
+QEMU2_TOP_DIR=${AOSP_DIR}/external/qemu
+HOST_OS=$(get_build_os)
+CMAKE_TOOL=${AOSP_DIR}/prebuilts/cmake/${HOST_OS}-x86/bin/cmake
+SDK_FLAGS=
+OPT_OUT=${OPT_OUT}/cmake_tests
+
+
+echo "Running test on ${HOST_OS}"
+
+rm -rf ${OPT_OUT}; mkdir -p ${OPT_OUT}
+
+# Prints a warning in red if possible
+warn() {
+ echo "${RED}$1${RESET}"
+}
+
+# Generates the toolchain to be used by cmake. You can the G
+
+function gen_toolchain {
+ SDK_TOOLCHAIN_DIR=$OPT_OUT/build/toolchain
+ GEN_SDK_FLAGS="$SDK_FLAGS --aosp-dir=$AOSP_DIR"
+ GEN_SDK=${QEMU2_TOP_DIR}/android/scripts/gen-android-sdk-toolchain.sh
+ run "$GEN_SDK" $GEN_SDK_FLAGS "--verbosity=$(get_verbosity)" "$SDK_TOOLCHAIN_DIR" || panic "Cannot generate SDK toolchain!"
+ BINPREFIX=$("$GEN_SDK" $GEN_SDK_FLAGS --print=binprefix "$SDK_TOOLCHAIN_DIR")
+ CC="$SDK_TOOLCHAIN_DIR/${BINPREFIX}gcc"
+ CXX="$SDK_TOOLCHAIN_DIR/${BINPREFIX}g++"
+ AR="$SDK_TOOLCHAIN_DIR/${BINPREFIX}ar"
+ RANLIB="$SDK_TOOLCHAIN_DIR/${BINPREFIX}ranlib"
+ LD=$CXX
+ OBJCOPY="$SDK_TOOLCHAIN_DIR/${BINPREFIX}objcopy"
+}
+
+
+# Configures the cmake paramaters and generates the toolchain.
+# $1 - The output location of the generated makefiles
+# $2 - Target tag used to build (linux-x86_64, darwin-x86_64, windows-x86, windows-x86_64)
+# $3 - Qemu2 top directory (../external/qemu)
+function cmake_params {
+ # Generate the toolchain..
+ local CMAKE_PARAMS=-H${QEMU2_TOP_DIR}/android/build/cmake/test
+ CMAKE_PARAMS="${CMAKE_PARAMS} -B$1"
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DCMAKE_AR=${AR} "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DCMAKE_RANLIB=${RANLIB} "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DCMAKE_OBJCOPY=${OBJCOPY} "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DLOCAL_CXXFLAGS=${CXXFLAGS} "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DLOCAL_QEMU2_TOP_DIR=${3} "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DLOCAL_TARGET_TAG=$2 "
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DLOCAL_BUILD_OBJS_DIR=${BUILD_OBJS_DIR} "
+
+ if [[ $2 = *"windows"* ]]; then
+ CMAKE_PARAMS="${CMAKE_PARAMS} -DCMAKE_TOOLCHAIN_FILE=${QEMU2_TOP_DIR}/android/build/cmake/toolchain-win.cmake"
+ fi
+ echo $CMAKE_PARAMS
+}
+
+# Runs the cmake generator, this should resolve all prebuilts and succeed.
+# $1: The output directory
+# $2: Target tag used to build (linux-x86_64, darwin-x86_64, windows-x86, windows-x86_64)
+function run_cmake {
+ echo "Running test: Find all prebuilts succeed for $2"
+ gen_toolchain
+ export CC
+ export CXX
+ CMAKE_PARAMS=$(cmake_params $1 $2 $QEMU2_TOP_DIR)
+ run ${CMAKE_TOOL} ${CMAKE_PARAMS} \
+ || panic "Failed to run cmake for target $2"
+}
+
+# Runs the cmake generator by passing a bad ${QEMU2_TOP_DIR) parameter. It is
+# expected that cmake will fail, as depenecies will be missing.
+# $1: The output directory
+# $2: Target tag used to build (linux-x86_64, darwin-x86_64, windows-x86, windows-x86_64)
+function failing_cmake {
+ echo "Running test: Incorred prebuilt dir should fail for $2"
+ gen_toolchain
+ CMAKE_PARAMS=$(cmake_params $1 $2 /a/dir/without/prebuilts)
+ run ${CMAKE_TOOL} ${CMAKE_PARAMS} && panic "Unexpected success for cmake run on target $2"
+}
+
+# Attempts to build the cmake project using the local make environment
+# These tests are not expected to succeed, as they depened on you having
+# the right packages (Protobuf, etc) installed.
+#
+# $1: Test runner (wine) used to launch the sample program
+function local_cmake {
+ echo "Running test: Build outside android should succeed for $2"
+ run ${CMAKE_TOOL} \
+ -H${QEMU2_TOP_DIR}/android/build/cmake/test \
+ -B$OPT_OUT/build/test/local &&
+ run cd $OPT_OUT/build/test/local &&
+ run make &&
+ run $1 $OPT_OUT/build/test/local/hello ||
+ warn "Failed to run local cmake (This is okay)"}
+}
+
+function run_windows_tests {
+ SDK_FLAGS=" --host=windows-x86_64"
+
+ echo "Running failure case for win64"
+ failing_cmake $OPT_OUT/build/test/fail-win64 windows-x86_64
+
+ echo "Running official win64 build"
+ run_cmake $OPT_OUT/build/test/win64 windows-x86_64
+ run cd $OPT_OUT/build/test/win64 &&
+ make &&
+ wine $OPT_OUT/build/test/win64/hello.exe ||
+ panic "Failed to make win64 project"
+
+ SDK_FLAGS=" --host=windows-x86"
+
+ # Lets do the windows things!
+ echo "Running failure case for win32"
+ failing_cmake $OPT_OUT/build/test/fail-win32 windows-x86
+
+ echo "Running official win32 build"
+ run_cmake $OPT_OUT/build/test/win32 windows-x86
+ run cd $OPT_OUT/build/test/win32 &&
+ make &&
+ wine $OPT_OUT/build/test/win32/hello.exe ||
+ panic "Failed to make win32 project"
+}
+
+function run_linux_tests {
+ SDK_FLAGS=""
+ echo "Running failure case"
+ failing_cmake $OPT_OUT/build/test/fail-linux linux-x86_64
+
+ echo "Running official linux build"
+ run_cmake $OPT_OUT/build/test/linux linux-x86_64
+ run cd $OPT_OUT/build/test/linux &&
+ make &&
+ $OPT_OUT/build/test/linux/hello ||
+ panic "Failed to make linux project"
+
+ local_cmake
+}
+
+function run_darwin_tests {
+ SDK_FLAGS=""
+ echo "Running failure case"
+ failing_cmake $OPT_OUT/build/test/fail-darwin darwin-x86_64
+
+ echo "Running official build"
+ run_cmake $OPT_OUT/build/test/darwin darwin-x86_64
+ run cd $OPT_OUT/build/test/darwin && make || panic "Failed to make darwin project"
+
+ echo "Running executable"
+ run $OPT_OUT/build/test/darwin/hello || panic "Unable to execute hello"
+
+ local_cmake
+}
+
+# Run tests on mac
+if [ "$HOST_OS" = "darwin" ]; then
+ run_darwin_tests
+fi
+
+# Run tests on linux
+if [ "$HOST_OS" = "linux" ]; then
+ run_windows_tests
+ run_linux_tests
+fi;
+
+
+echo "Constructed all cmake projects successfully!"
diff --git a/android/build/cmake/test/test.proto b/android/build/cmake/test/test.proto
new file mode 100644
index 0000000000..eb5b800240
--- /dev/null
+++ b/android/build/cmake/test/test.proto
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+
+package emulator;
+
+message SampleMessage {
+ required int32 area_id = 1;
+ optional sint32 min_int32_value = 2;
+}
+
diff --git a/android/build/cmake/toolchain-win.cmake b/android/build/cmake/toolchain-win.cmake
new file mode 100644
index 0000000000..9c0ba4381c
--- /dev/null
+++ b/android/build/cmake/toolchain-win.cmake
@@ -0,0 +1,28 @@
+# the name of the target operating system
+SET(CMAKE_SYSTEM_NAME Windows)
+
+set(TOOLCHAIN "${LOCAL_BUILD_OBJS_DIR}/build/toolchain")
+set(COMPILER_PREFIX "${TOOLCHAIN}/x86_64-w64-mingw32")
+
+# which compilers to use for C and C++
+#find_program(CMAKE_RC_COMPILER NAMES ${COMPILER_PREFIX}-windres)
+set(CMAKE_RC_COMPILER ${COMPILER_PREFIX}-windres)
+#find_program(CMAKE_C_COMPILER NAMES ${COMPILER_PREFIX}-gcc)
+set(CMAKE_C_COMPILER ${COMPILER_PREFIX}-gcc)
+#find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}-g++)
+set(CMAKE_CXX_COMPILER ${COMPILER_PREFIX}-g++)
+
+
+# here is the target environment located, used to
+# locate packages. We don't want to do any package resolution
+# with mingw, so we explicitly disable it.
+# set(CMAKE_FIND_ROOT_PATH "UNUSED")
+
+# adjust the default behaviour of the FIND_XXX() commands:
+# search headers and libraries in the target environment, search
+# programs in the host environment
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER)
+
diff --git a/android/build/core/definitions-utils.mk b/android/build/core/definitions-utils.mk
index c89991226b..ff749c8dc4 100644
--- a/android/build/core/definitions-utils.mk
+++ b/android/build/core/definitions-utils.mk
@@ -365,6 +365,8 @@ all-subdir-makefiles = $(call all-makefiles-under,$(call my-dir))
# -----------------------------------------------------------------------------
ifeq ($(V),1)
hide = $(empty)
+# Pass on the verbose settings to submake/cmake
+MAKEFLAGS += VERBOSE=1
else
hide = @
endif
diff --git a/android/build/emulator/binary.make b/android/build/emulator/binary.make
index 3db1f7b403..970a33cfaa 100644
--- a/android/build/emulator/binary.make
+++ b/android/build/emulator/binary.make
@@ -141,6 +141,10 @@ $(foreach src,$(LOCAL_COPY_COMMON_TESTDATA), \
$(eval $(call install-file,$(COMMON_PREBUILTS_DIR)/testdata/$(src),$(call local-testdata-path,$(notdir $(src))))) \
)
+$(foreach src,$(LOCAL_COPY_COMMON_TESTDATA_DIRS), \
+ $(eval $(call install-dir,$(COMMON_PREBUILTS_DIR)/testdata/$(src),$(call local-testdata-path,$(src)))) \
+)
+
$(foreach src,$(LOCAL_COPY_FILES), \
$(eval $(call install-file,$(LOCAL_PATH)/$(src),$(call local-install-path,$(src)))) \
)
diff --git a/android/build/emulator/clear_vars.make b/android/build/emulator/clear_vars.make
index 8a6d300d89..54e8979ef5 100644
--- a/android/build/emulator/clear_vars.make
+++ b/android/build/emulator/clear_vars.make
@@ -47,7 +47,9 @@ LOCAL_PREBUILT_OBJ_FILES :=
LOCAL_GENERATED_SOURCES :=
LOCAL_COPY_COMMON_PREBUILT_RESOURCES :=
LOCAL_COPY_COMMON_TESTDATA :=
+LOCAL_COPY_COMMON_TESTDATA_DIRS :=
LOCAL_COPY_FILES :=
+LOCAL_SOURCE_DEPENDENCIES :=
LOCAL_CPP_EXTENSION := .cpp
LOCAL_INSTALL_OPENGL :=
diff --git a/android/build/emulator/cmake.make b/android/build/emulator/cmake.make
new file mode 100644
index 0000000000..241eb901ba
--- /dev/null
+++ b/android/build/emulator/cmake.make
@@ -0,0 +1,70 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+# Defines a cmake project, that is it will translate a CMakeLists.txt -> Makefile
+# It will setup the toolchain by exporting all the compilers, and archivers.
+# Note that we will use CC/CXX to compile and link (as we do everywhere else)
+# We currently pass down all the compiler flags and settings.
+
+# first we generate the cmake project
+LOCAL_CMAKE_MODULE :=$(call local-cmake-path,$(LOCAL_MODULE))
+LOCAL_CMAKELISTS :=$(LOCAL_PATH)/CMakeLists.txt
+LOCAL_BUILT_MAKEFILE :=$(LOCAL_CMAKE_MODULE)/Makefile
+
+include $(_BUILD_CORE_DIR)/emulator/binary.make
+
+LOCAL_LDFLAGS += $(foreach lib,\
+ $(LOCAL_WHOLE_STATIC_LIBRARIES) $(LOCAL_STATIC_LIBRARIES),\
+ -L$(abspath $(call intermediates-dir-for,$(call local-build-var,BITS),$(lib))))
+
+LOCAL_DEPENDENCIES += $(foreach lib,\
+ $(CONSUMED_STATIC_LIBS),\
+ $(call local-library-path,$(lib)))
+#
+# Generate the proper cmake translation target, based upon the host build property
+ifeq ($(strip $(LOCAL_HOST_BUILD)),)
+ $(eval $(call cmake-project-target,$(LOCAL_CMAKELISTS),$(LOCAL_BUILT_MAKEFILE)))
+ $(eval LOCAL_EXEEXT:=$(BUILD_TARGET_EXEEXT))
+else
+ $(eval $(call cmake-project-host,$(LOCAL_CMAKELISTS),$(LOCAL_BUILT_MAKEFILE)))
+ $(eval LOCAL_EXEEXT:=$(BUILD_HOST_EXEEXT))
+endif
+
+$(foreach prg,$(PRODUCED_EXECUTABLES), \
+ $(eval map := $(subst =,$(space),$(prg))) \
+ $(eval exe := $(word 1, $(map))) \
+ $(eval to := $(word 2, $(map))) \
+ $(eval to := $(if $(to),$(to),$(exe))) \
+ $(eval LOCAL_BUILT_MODULE := $(LOCAL_CMAKE_MODULE)/$(exe)) \
+ $(eval LOCAL_INSTALL_MODULE := $(call local-executable-install-path,$(exe))) \
+ $(eval $(call make-cmake-project,$(LOCAL_BUILT_MAKEFILE),$(LOCAL_BUILT_MODULE)$(LOCAL_EXEEXT),$(exe), $(LOCAL_DEPENDENCIES))) \
+ $(eval $(call install-binary,$(LOCAL_BUILT_MODULE)$(LOCAL_EXEEXT),$(LOCAL_INSTALL_MODULE),--strip-all,$(LOCAL_INSTALL_OPENGL))) \
+)
+
+$(foreach exe,$(PRODUCED_TESTS), \
+ $(eval LOCAL_BUILT_MODULE := $(LOCAL_CMAKE_MODULE)/$(exe)) \
+ $(eval LOCAL_INSTALL_MODULE := $(call local-executable-install-path,$(exe))) \
+ $(eval $(call make-cmake-project,$(LOCAL_BUILT_MAKEFILE),$(LOCAL_BUILT_MODULE)$(LOCAL_EXEEXT),$(exe))) \
+ $(eval $(call install-binary,$(LOCAL_BUILT_MODULE)$(LOCAL_EXEEXT),$(LOCAL_INSTALL_MODULE),--strip-all,$(LOCAL_INSTALL_OPENGL))) \
+ $(eval $(call run-test,$(LOCAL_INSTALL_MODULE))) \
+)
+
+$(foreach lib,$(PRODUCED_STATIC_LIBS), \
+ $(eval LOCAL_BUILT_MODULE := $(LOCAL_CMAKE_MODULE)/lib$(lib).a) \
+ $(eval LOCAL_FINAL_MODULE := $(call local-library-path,$(lib))) \
+ $(eval $(call make-cmake-project,$(LOCAL_BUILT_MAKEFILE),$(LOCAL_BUILT_MODULE),$(lib))) \
+ $(eval $(call install-file,$(LOCAL_BUILT_MODULE),$(LOCAL_FINAL_MODULE))) \
+)
+
diff --git a/android/build/emulator/definitions.make b/android/build/emulator/definitions.make
index 79a61429b6..b502f89ff7 100644
--- a/android/build/emulator/definitions.make
+++ b/android/build/emulator/definitions.make
@@ -59,6 +59,9 @@ local-build-var = $(if $(strip $(LOCAL_HOST_BUILD)),$(BUILD_HOST_$1),$(BUILD_TAR
# BUILD_HOST_XXX depending on the definition of LOCAL_HOST_BUILD.
local-build-define = $(if $(strip $(LOCAL_$1)),,$(eval LOCAL_$1 := $$(call local-build-var,$1)))
+# Expands every path to an absolute path
+to-absolute-path = $(foreach dir,$(1), $(abspath $(dir)))
+
# Return the directory containing the intermediate files for the current
# module. LOCAL_MODULE must be defined before calling this.
local-intermediates-dir = $(call intermediates-dir-for,$(call local-build-var,BITS),$(LOCAL_MODULE))
@@ -67,6 +70,9 @@ local-intermediates-dir = $(call intermediates-dir-for,$(call local-build-var,BI
# See LOCAL_PROTO_SOURCES for details.
generated-proto-sources-dir = $(call intermediates-dir-for,$(call local-build-var,BITS),proto-sources)
+# Location of intermediate cmake files.
+local-cmake-path = $(call intermediates-dir-for,$(call local-build-var,BITS),cmake)/$(1)
+
# Location of intermediate static libraries during build.
local-library-path = $(call intermediates-dir-for,$(call local-build-var,BITS),$(1))/$(1).a
@@ -160,11 +166,13 @@ $$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(call local-location-src,$$(LOCAL_PATH),$$(SRC))
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(call local-location-src,$$(LOCAL_PATH),$$(SRC))
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
# Compile a C++ source file
@@ -174,17 +182,20 @@ SRC:=$(1)
OBJ:=$$(LOCAL_OBJS_DIR)/$$(call local-cxx-src-to-obj,$$(SRC))
LOCAL_OBJECTS += $$(OBJ)
_BUILD_DEPENDENCY_DIRS += $$(dir $$(OBJ))
+$$(LOCAL_PATH)/$$(SRC): $$(LOCAL_SOURCE_DEPENDENCIES)
$$(OBJ): PRIVATE_CFLAGS := $$(LOCAL_CFLAGS) $$(LOCAL_CXXFLAGS) -I$$(LOCAL_PATH) -I$$(LOCAL_OBJS_DIR)
$$(OBJ): PRIVATE_CXX := $$(LOCAL_CXX)
$$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(LOCAL_PATH)/$$(SRC)
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(LOCAL_PATH)/$$(SRC)
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CXX) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
# Compile an Objective-C source file
@@ -200,11 +211,13 @@ $$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(LOCAL_PATH)/$$(SRC)
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(LOCAL_PATH)/$$(SRC)
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
# Compile an Objective-C source file
@@ -220,11 +233,13 @@ $$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(LOCAL_PATH)/$$(SRC)
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(LOCAL_PATH)/$$(SRC)
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
# Compile a generated C source files#
@@ -240,11 +255,13 @@ $$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(SRC)
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(SRC)
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
define compile-generated-cxx-source
@@ -258,11 +275,13 @@ $$(OBJ): PRIVATE_OBJ := $$(OBJ)
$$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
$$(OBJ): PRIVATE_SRC := $$(SRC)
$$(OBJ): PRIVATE_SRC0 := $$(SRC)
+$$(OBJ): PRIVATE_GCDA := $$(OBJ:%.o=%.gcda)
$$(OBJ): $$(SRC)
@mkdir -p $$(dir $$(PRIVATE_OBJ))
@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
$(hide) $$(PRIVATE_CXX) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
$(hide) $$(_BUILD_CORE_DIR)/core/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
+ @rm -f $$(PRIVATE_GCDA)
endef
# Install a file
@@ -305,6 +324,19 @@ $$(_DST): $$(_SRC)
$(hide) cp -f $$(PRIVATE_SRC) $$(PRIVATE_DST)
endef
+# Installs a dir to a new destination
+define install-dir
+_SRC := $(1)
+_DST := $(2)
+LOCAL_ADDITIONAL_DEPENDENCIES += $$(_DST)
+$$(_DST): PRIVATE_DST := $$(_DST)
+$$(_DST): PRIVATE_SRC := $$(_SRC)
+$$(_DST): $$(_SRC)
+ @mkdir -p $$(dir $$(PRIVATE_DST))
+ @echo "InstallDir: $$(PRIVATE_DST)"
+ $(hide) cp -r $$(PRIVATE_SRC) $$(PRIVATE_DST)
+endef
+
# Installs a binary to a new destination
# If required, will strip the binary
define install-binary
@@ -337,6 +369,95 @@ else # BUILD_STRIP_BINARIES != true
endif # BUILD_STRIP_BINARIES != true
endef
+define cmake-project-host
+_SRC := $(1)
+_DST := $(2)
+$$(_DST): PRIVATE_DST := $$(_DST)
+$$(_DST): PRIVATE_CMAKE_DST := $$(dir $$(_DST))
+$$(_DST): PRIVATE_CFLAGS := $$(LOCAL_CFLAGS)
+$$(_DST): PRIVATE_CXXFLAGS := $$(LOCAL_CXXFLAGS)
+$$(_DST): PRIVATE_C_INCLUDES := $$(call to-absolute-path,$$(LOCAL_C_INCLUDES))
+$$(_DST): PRIVATE_SRC := $$(dir $$(_SRC))
+$$(_DST): PRIVATE_CC := $$(BUILD_HOST_CC)
+$$(_DST): PRIVATE_CXX := $$(BUILD_HOST_CXX)
+$$(_DST): PRIVATE_AR := $$(BUILD_HOST_AR)
+$$(_DST): PRIVATE_OS := $$(BUILD_HOST_OS)
+$$(_DST): PRIVATE_RANLIB := $$(BUILD_HOST_RANLIB)
+$$(_DST): PRIVATE_OBJCOPY := $$(BUILD_HOST_OBJCOPY)
+$$(_DST): CMAKE_TOOL := $$(CMAKE_DIR)/$$(BUILD_HOST_TAG)/bin/cmake
+$$(_DST): PRIVATE_INST := $(BUILD_OBJS_DIR)/$(if $(LOCAL_INSTALL_DIR),$(LOCAL_INSTALL_DIR)/)
+$$(_DST): $$(_SRC)
+ $(hide) CC=$$(PRIVATE_CC) CXX=$$(PRIVATE_CXX) $$(CMAKE_TOOL) \
+ -H$$(PRIVATE_SRC) \
+ -B$$(PRIVATE_CMAKE_DST) \
+ -DCMAKE_AR=$$(PRIVATE_AR) \
+ -DCMAKE_RANLIB=$$(PRIVATE_RANLIB) \
+ -DCMAKE_OBJCOPY=$$(PRIVATE_OBJCOPY) \
+ -DLOCAL_C_INCLUDES="$$(PRIVATE_C_INCLUDES)" \
+ -DLOCAL_CXXFLAGS="$$(PRIVATE_CXXFLAGS)" \
+ -DLOCAL_CFLAGS="$$(PRIVATE_CFLAGS)" \
+ -DLOCAL_OS="$${PRIVATE_OS}" \
+
+endef
+
+define cmake-project-target
+_SRC := $(1)
+_DST := $(2)
+$$(_DST): PRIVATE_DST := $$(_DST)
+$$(_DST): PRIVATE_CMAKE_DST := $$(dir $$(_DST))
+$$(_DST): PRIVATE_CFLAGS := $$(filter-out -I%,$$(LOCAL_CFLAGS))
+$$(_DST): PRIVATE_CXXFLAGS := $$(filter-out -I%,$$(LOCAL_CXXFLAGS))
+$$(_DST): PRIVATE_C_INCLUDES := $$(call to-absolute-path,$$(LOCAL_C_INCLUDES))
+$$(_DST): PRIVATE_C_INCLUDES += $$(call to-absolute-path,$$(patsubst -I%,%,$$(filter -I%,$$(LOCAL_CFLAGS))))
+$$(_DST): PRIVATE_C_INCLUDES += $$(call to-absolute-path,$$(patsubst -I%,%,$$(filter -I%,$$(LOCAL_CXXFLAGS))))
+$$(_DST): PRIVATE_SRC := $$(dir $$(_SRC))
+$$(_DST): PRIVATE_CC := $$(BUILD_TARGET_CC)
+$$(_DST): PRIVATE_CXX := $$(BUILD_TARGET_CXX)
+$$(_DST): PRIVATE_AR := $$(BUILD_TARGET_AR)
+$$(_DST): PRIVATE_OS := $$(BUILD_TARGET_OS)
+$$(_DST): PRIVATE_RANLIB := $$(BUILD_TARGET_RANLIB)
+$$(_DST): PRIVATE_OBJCOPY := $$(BUILD_TARGET_OBJCOPY)
+$$(_DST): PRIVATE_BUILD_TARGET_TAG := $$(BUILD_TARGET_TAG)
+$$(_DST): CMAKE_TOOL := $$(CMAKE_DIR)/$$(BUILD_HOST_TAG)/bin/cmake
+$$(_DST): PRIVATE_INST := $$(abspath $$(dir $$(_DST)))
+$$(_DST): PRIVATE_BUILD_OBJS_DIR := $$(abspath $$(BUILD_OBJS_DIR))
+$$(_DST): $$(_SRC)
+ $(hide) CC=$$(PRIVATE_CC) CXX=$$(PRIVATE_CXX) $$(CMAKE_TOOL) \
+ -H$$(PRIVATE_SRC) \
+ -B$$(PRIVATE_CMAKE_DST) \
+ -DCMAKE_AR=$$(PRIVATE_AR) \
+ -DCMAKE_RANLIB=$$(PRIVATE_RANLIB) \
+ -DCMAKE_OBJCOPY=$$(PRIVATE_OBJCOPY) \
+ -DLOCAL_C_INCLUDES="$$(PRIVATE_C_INCLUDES)" \
+ -DLOCAL_CXXFLAGS="$$(PRIVATE_CXXFLAGS)" \
+ -DLOCAL_CFLAGS="$$(PRIVATE_CFLAGS)" \
+ -DLOCAL_OS="$${PRIVATE_OS}" \
+ -DLOCAL_INSTALL="$$(PRIVATE_INST)" \
+ -DLOCAL_QEMU2_TOP_DIR="$$(QEMU2_TOP_DIR)" \
+ -DLOCAL_TARGET_TAG="$$(PRIVATE_BUILD_TARGET_TAG)" \
+ -DLOCAL_BUILD_OBJS_DIR="$$(PRIVATE_BUILD_OBJS_DIR)" \
+ -DCMAKE_TOOLCHAIN_FILE=$$(call qemu2-if-windows,"$$(QEMU2_TOP_DIR)/android/build/cmake/toolchain-win.cmake")
+endef
+
+# Makes the specific target from the generated CMAKE project file.
+# We use $(MAKE) to make sure we pass the proper make concurency flags down.
+# Note, that we force build this, otherwise we get weird issues around dependency
+# recognition.
+define make-cmake-project
+_SRC := $(1)
+_DST := $(2)
+_TARGET := $(3)
+_DEPENDS := $(4)
+$$(LOCAL_PATH)/$$(_SRC): $$(LOCAL_SOURCE_DEPENDENCIES)
+$$(LOCAL_PATH)/$$(_SRC): $$(foreach lib,$$(LOCAL_STATIC_LIBRARIES),$$(call local-library-path,$$(lib)))
+$$(_DST): PRIVATE_DST := $$(_DST)
+$$(_DST): PRIVATE_SRC := $$(_SRC)
+$$(_DST): PRIVATE_TARGET := $$(_TARGET)
+$$(_DST): $$(_SRC) $$(_DEPENDS) force
+ @$(hide) +$(MAKE) --no-print-directory $$(PRIVATE_TARGET) -C $$(dir $$(PRIVATE_SRC))
+endef
+
+
# Runs a test target
define run-test
_TST := $(1)
@@ -348,7 +469,7 @@ $$(_DST): $$(_TST)
@echo "Running $$(PRIVATE_TST)"
@mkdir -p $$(dir $$(PRIVATE_DST))
@export WINEPATH=$(BUILD_OBJS_DIR)/lib
- $(hide) LLVM_PROFILE_FILE=$(call local-test-result-path)/$$(PRIVATE_TST).profraw $(TEST_SHELL) $$(PRIVATE_TST) --gtest_output=xml:$(call local-test-result-path)/$$(PRIVATE_TST).xml
+ $(hide) ASAN_OPTIONS=`cat android/asan_overrides` LLVM_PROFILE_FILE=$(call local-test-result-path)/$$(PRIVATE_TST).profraw $(TEST_SHELL) $$(PRIVATE_TST) --gtest_output=xml:$(call local-test-result-path)/$$(PRIVATE_TST).xml
@touch $$(PRIVATE_DST)
endef
diff --git a/android/build/emulator/host_executable.make b/android/build/emulator/host_executable.make
index bec1a741be..fcdce00187 100644
--- a/android/build/emulator/host_executable.make
+++ b/android/build/emulator/host_executable.make
@@ -62,5 +62,13 @@ ifneq (,$(findstring unittest,$(LOCAL_BUILT_MODULE)))
$(eval $(call run-test,$(LOCAL_INSTALL_MODULE)))
endif
+ifneq (,$(findstring qtest,$(LOCAL_BUILT_MODULE)))
+$(eval $(call run-test,$(LOCAL_INSTALL_MODULE)))
+endif
+
+ifneq (,$(findstring end2endtest,$(LOCAL_BUILT_MODULE)))
+$(eval $(call run-test,$(LOCAL_INSTALL_MODULE)))
+endif
+
include $(_BUILD_CORE_DIR)/emulator/symbols.make
endif # LOCAL_INSTALL == true
diff --git a/android/build/emulator/host_shared_library.make b/android/build/emulator/host_shared_library.make
index ccbf4d971d..714b5616dc 100644
--- a/android/build/emulator/host_shared_library.make
+++ b/android/build/emulator/host_shared_library.make
@@ -21,7 +21,19 @@ LOCAL_LIBRARIES := $(foreach lib,\
$(LOCAL_WHOLE_STATIC_LIBRARIES) $(LOCAL_STATIC_LIBRARIES),\
$(call local-library-path,$(lib)))
-LOCAL_LDLIBS := $(call local-static-libraries-ldlibs) $(LOCAL_LDLIBS)
+ifeq ($(BUILD_TARGET_OS),darwin)
+ LOCAL_SHARED_LIBRARY_LDLIBS := \
+ $(foreach lib,$(LOCAL_SHARED_LIBRARIES),$(call local-shared-library-path,$(lib)))
+else
+ LOCAL_LDFLAGS += \
+ $(foreach lib,$(LOCAL_SHARED_LIBRARIES), \
+ -L$(dir $(call local-shared-library-path,$(lib)))) \
+
+ LOCAL_SHARED_LIBRARY_LDLIBS := \
+ $(foreach lib,$(LOCAL_SHARED_LIBRARIES), -l:$(notdir $(call local-shared-library-path,$(lib))))
+endif
+
+LOCAL_LDLIBS := $(call local-static-libraries-ldlibs) $(LOCAL_SHARED_LIBRARY_LDLIBS) $(LOCAL_LDLIBS)
$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(LDFLAGS) $(LOCAL_LDFLAGS)
$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(LOCAL_LDLIBS)
diff --git a/android/build/emulator/main.make b/android/build/emulator/main.make
index ca6c6fdfff..e5ce3a86d2 100644
--- a/android/build/emulator/main.make
+++ b/android/build/emulator/main.make
@@ -46,6 +46,7 @@ include $(_BUILD_CORE_DIR)/emulator/definitions.make
CLEAR_VARS := $(_BUILD_CORE_DIR)/emulator/clear_vars.make
BUILD_HOST_EXECUTABLE := $(_BUILD_CORE_DIR)/emulator/host_executable.make
+BUILD_CMAKE := $(_BUILD_CORE_DIR)/emulator/cmake.make
BUILD_HOST_STATIC_LIBRARY := $(_BUILD_CORE_DIR)/emulator/host_static_library.make
BUILD_HOST_SHARED_LIBRARY := $(_BUILD_CORE_DIR)/emulator/host_shared_library.make
PREBUILT_STATIC_LIBRARY := $(_BUILD_CORE_DIR)/emulator/prebuilt_static_library.make
@@ -59,11 +60,17 @@ _BUILD_LIBRARIES :=
_BUILD_DEBUG_INFOS :=
_BUILD_TESTS :=
_BUILD_LINT :=
+_BUILD_CMAKE_MAKEFILES :=
clean: clean-intermediates
distclean: clean clean-config
+# Force target, used to make sure sub-make runs and can detect
+# changes.
+force:
+ @true
+
# let's roll
include $(_BUILD_CORE_DIR)/Makefile.top.mk
diff --git a/android/configure.sh b/android/configure.sh
index 6d49663f39..9904dca380 100755
--- a/android/configure.sh
+++ b/android/configure.sh
@@ -255,10 +255,11 @@ OPTION_SDK_REV=
OPTION_SYMBOLS=no
OPTION_BENCHMARKS=no
OPTION_LTO=
+OPTION_MIPS=
OPTION_SNAPSHOT_PROFILE=no
OPTION_MIN_BUILD=no
OPTION_AEMU64_ONLY=no
-OPTION_TRACE=no
+OPTION_GOLDFISH_OPENGL_DIR=no
ANDROID_SDK_TOOLS_REVISION=
ANDROID_SDK_TOOLS_BUILD_NUMBER=
@@ -275,13 +276,15 @@ OPTION_CXX=
VERBOSITY=0
OPTION_SNAPSHOT_PROFILE=0
-AOSP_PREBUILTS_DIR=$(dirname "$0")/../../../prebuilts
-if [ -d "$AOSP_PREBUILTS_DIR" ]; then
- AOSP_PREBUILTS_DIR=$(cd "$AOSP_PREBUILTS_DIR" && pwd -P 2>/dev/null)
+AOSP_ROOT_DIR=$(dirname "$0")/../../../
+if [ -d "$AOSP_ROOT_DIR" ]; then
+ AOSP_ROOT_DIR=$(cd "$AOSP_ROOT_DIR" && pwd -P 2>/dev/null)
else
- AOSP_PREBUILTS_DIR=
+ AOSP_ROOT_DIR=
fi
+AOSP_PREBUILTS_DIR=$AOSP_ROOT_DIR/prebuilts
+
for opt do
optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
case "$opt" in
@@ -347,14 +350,14 @@ for opt do
;;
--sdk-revision=*) ANDROID_SDK_TOOLS_REVISION=$optarg
;;
- --trace) OPTION_TRACE=yes
- ;;
--sdk-build-number=*) ANDROID_SDK_TOOLS_BUILD_NUMBER=$optarg
;;
--benchmarks) OPTION_BENCHMARKS=yes
;;
--lto) OPTION_LTO=true
;;
+ --with-mips) OPTION_MIPS=true
+ ;;
--snapshot-profile) OPTION_SNAPSHOT_PROFILE=1
;;
--snapshot-profile-level=*) OPTION_SNAPSHOT_PROFILE=$optarg
@@ -363,6 +366,8 @@ for opt do
;;
-aemu64only|--aemu64-only) OPTION_AEMU64_ONLY=yes
;;
+ -goldfish-opengl|--goldfish-opengl=*) OPTION_GOLDFISH_OPENGL_DIR=yes
+ ;;
*)
echo "unknown option '$opt', use --help"
exit 1
@@ -386,7 +391,6 @@ EOF
echo " --symbols Generating Breakpad symbol files."
echo " --no-symbols Do not generate Breakpad symbol files (default)."
echo " --crash-[staging,prod] Send crashes to specific server (no crash reporting by default)."
- echo " --trace Compile with qemu simple qemu trace backend turned on (off by default)."
echo " --gles=dgl Build the OpenGLES to Desktop OpenGL Translator (default)"
echo " --gles=angle Build the OpenGLES to ANGLE wrapper"
echo " --aosp-prebuilts-dir=<path> Use specific prebuilt toolchain root directory [$AOSP_PREBUILTS_DIR]"
@@ -401,6 +405,7 @@ EOF
echo " --lto Force link-time optimization."
echo " --snapshot-profile[-level=X] Enable snapshot profiling via debug prints."
echo " --min[-build] Only build the qemu2 x64 host x86 target binaries."
+ echo " --with-mips Build the deprecated mips emulator. This option will be removed in future versions."
echo ""
exit 1
fi
@@ -466,6 +471,7 @@ CC="$SDK_TOOLCHAIN_DIR/${BINPREFIX}gcc"
CXX="$SDK_TOOLCHAIN_DIR/${BINPREFIX}g++"
TIDY="$SDK_TOOLCHAIN_DIR/${BINPREFIX}clang-tidy"
AR="$SDK_TOOLCHAIN_DIR/${BINPREFIX}ar"
+RANLIB="$SDK_TOOLCHAIN_DIR/${BINPREFIX}ranlib"
LD=$CXX
OBJCOPY="$SDK_TOOLCHAIN_DIR/${BINPREFIX}objcopy"
TOOLCHAIN_SYSROOT="$("${GEN_SDK}" $GEN_SDK_FLAGS --print=sysroot "${SDK_TOOLCHAIN_DIR}")"
@@ -483,6 +489,7 @@ fi
setup_toolchain
BUILD_AR=$AR
+BUILD_RANLIB=$RANLIB
BUILD_CC=$CC
BUILD_CXX=$CXX
BUILD_LD=$LD
@@ -591,6 +598,11 @@ case "$HOST_OS" in
;;
esac
+CMAKE_DIR=$AOSP_PREBUILTS_DIR/cmake
+if [ ! -d "$CMAKE_DIR" ]; then
+ panic "Missing cmake directory: $CMAKE_DIR"
+fi
+
probe_prebuilts_dir () {
local PREBUILTS_DIR
PREBUILTS_DIR=$AOSP_PREBUILTS_DIR/android-emulator-build/$3
@@ -734,6 +746,15 @@ probe_prebuilts_dir "x264" X264_PREBUILTS_DIR common/x264
###
probe_prebuilts_dir "libxpx" LIBVPX_PREBUILTS_DIR common/libvpx
+probe_prebuilts_dir "QEMU2 Dependencies" \
+ QEMU2_DEPS_PREBUILTS_DIR \
+ qemu-android-deps
+
+probe_prebuilts_dir "TCMALLOC Dependencies" \
+ TCMALLOC_PREBUILTS_DIR \
+ common/tcmalloc
+
+
# create the objs directory that is going to contain all generated files
# including the configuration ones
#
@@ -844,6 +865,32 @@ if [ "$OPTION_AEMU64_ONLY" == "yes" ]; then
PREBUILT_ARCHS="x86_64"
fi
+GOLDFISH_OPENGL_DIR=$AOSP_ROOT_DIR/device/generic/goldfish-opengl
+
+if [ "$OPTION_GOLDFISH_OPENGL_DIR" = "yes" ]; then
+ GOLDFISH_OPENGL_DIR=$OPTION_GOLDFISH_OPENGL_DIR
+fi
+
+log "Guest OpenGL driver location: $GOLDFISH_OPENGL_DIR"
+
+###
+### Copy tcmalloc if available
+###
+
+TCMALLOC_PREBUILTS_DIR=$AOSP_PREBUILTS_DIR/android-emulator-build/common/tcmalloc
+if [ -d $TCMALLOC_PREBUILTS_DIR ]; then
+ # Linux only
+ if [ $HOST_OS = "linux" ]; then
+ TCMALLOC_DSTDIR="$OUT_DIR/lib64"
+ TCMALLOC_SRCDIR="$TCMALLOC_PREBUILTS_DIR/linux-x86_64/lib64"
+ TCMALLOC_LIBNAME="libtcmalloc_minimal.so.4"
+ if [ -f "$TCMALLOC_SRCDIR/$TCMALLOC_LIBNAME" ]; then
+ install_prebuilt_dll "$TCMALLOC_SRCDIR/$TCMALLOC_LIBNAME" \
+ "$TCMALLOC_DSTDIR/$TCMALLOC_LIBNAME"
+ fi
+ fi
+fi
+
###
### Copy ANGLE if available
###
@@ -924,12 +971,68 @@ if [ -d $SWIFTSHADER_PREBUILTS_DIR ]; then
done
fi
+###
+### Copy Vulkan libraries (for now, for test only, so send them to testlibs)
+###
+VULKAN_PREBUILTS_DIR=$AOSP_PREBUILTS_DIR/android-emulator-build/common/vulkan
+if [ -d $VULKAN_PREBUILTS_DIR ]; then
+ log "Copying Vulkan prebuilt libraries from $VULKAN_PREBUILTS_DIR"
+
+ VULKAN_TESTLIB_DSTDIR="$OUT_DIR/testlib64"
+ VULKAN_LIB_DSTDIR="$OUT_DIR/lib64/vulkan"
+ VULKAN_HOST=$HOST_OS
+
+ for PREBUILT_ARCH in $PREBUILT_ARCHS; do
+ VULKAN_SRCDIR="$VULKAN_PREBUILTS_DIR/$HOST_OS-$PREBUILT_ARCH"
+
+ VULKAN_MAC_ICD_LIB=libMoltenVK.dylib
+ VULKAN_MAC_ICD_FILE=MoltenVK_icd.json
+
+ VULKAN_MOCK_ICD_FILE=VkICD_mock_icd.json
+
+ case $VULKAN_HOST in
+ windows)
+ VULKAN_LOADER_LIB=vulkan-1.dll
+ VULKAN_MOCK_ICD_LIB=VkICD_mock_icd.dll
+ ;;
+ darwin)
+ VULKAN_LOADER_LIB=libvulkan.dylib
+ VULKAN_MOCK_ICD_LIB=libVkICD_mock_icd.dylib
+ ;;
+ linux)
+ VULKAN_LOADER_LIB=libvulkan.so
+ VULKAN_MOCK_ICD_LIB=libVkICD_mock_icd.so
+ ;;
+ *)
+ esac
+
+ # Install the loader only to the test dir, unless on mac
+ if [ "$PREBUILT_ARCH" = "x86_64" ]; then
+ copy_file "$VULKAN_SRCDIR/$VULKAN_LOADER_LIB" \
+ "$VULKAN_TESTLIB_DSTDIR/$VULKAN_LOADER_LIB"
+ copy_file "$VULKAN_SRCDIR/$VULKAN_MOCK_ICD_LIB" \
+ "$VULKAN_TESTLIB_DSTDIR/$VULKAN_MOCK_ICD_LIB"
+ copy_file "$VULKAN_SRCDIR/$VULKAN_MOCK_ICD_FILE" \
+ "$VULKAN_TESTLIB_DSTDIR/$VULKAN_MOCK_ICD_FILE"
+
+ # For mac, we copy a mac vulkan implementation
+ if [ "$VULKAN_HOST" = "darwin" ]; then
+ copy_file "$VULKAN_SRCDIR/$VULKAN_LOADER_LIB" \
+ "$VULKAN_LIB_DSTDIR/$VULKAN_LOADER_LIB"
+ copy_file "$VULKAN_SRCDIR/$VULKAN_MAC_ICD_LIB" \
+ "$VULKAN_LIB_DSTDIR/$VULKAN_MAC_ICD_LIB"
+ copy_file "$VULKAN_SRCDIR/$VULKAN_MAC_ICD_FILE" \
+ "$VULKAN_LIB_DSTDIR/$VULKAN_MAC_ICD_FILE"
+ fi
+ fi
+ done
+fi
###
### Copy Mesa if available
###
MESA_PREBUILTS_DIR=$AOSP_PREBUILTS_DIR/android-emulator-build/mesa
-if [ -d $MESA_PREBUILTS_DIR ] && [ "$OPTION_AEMU64_ONLY" == "no"]; then
+if [ [ -d $MESA_PREBUILTS_DIR ] && [ "$OPTION_AEMU64_ONLY" == "no" ] ]; then
log "Copying Mesa prebuilt libraries from $MESA_PREBUILTS_DIR"
case $HOST_OS in
windows)
@@ -1091,6 +1194,9 @@ probe_mingw_dlls () {
for DLL in $DLLS; do
SRC_DLL=${DLL#./} # Remove initial ./ in DLL path.
case $SRC_DLL in
+ lib/*)
+ DST_DLL=lib64${SRC_DLL##lib}
+ ;;
bin/*)
DST_DLL=lib64${SRC_DLL##bin}
;;
@@ -1098,7 +1204,7 @@ probe_mingw_dlls () {
DST_DLL=lib${SRC_DLL##lib32}
;;
*)
- DST_DLL=$SRC_DLL
+ DST_DLL=${SRC_DLL}
;;
esac
log2 "Mingw : $SRC_DLL -> $DST_DLL"
@@ -1109,6 +1215,8 @@ probe_mingw_dlls () {
if [ "$OPTION_MINGW" = "yes" ] ; then
probe_mingw_dlls libwinpthread-1.dll
+ probe_mingw_dlls libgcc_s_seh-1.dll
+ probe_mingw_dlls libgcc_s_sjlj-1.dll
fi
# Re-create the configuration file
@@ -1140,6 +1248,7 @@ echo "BUILD_TIDY := $TIDY" >> $config_mk
echo "" >> $config_mk
echo "BUILD_HOST_AR := $BUILD_AR" >> $config_mk
+echo "BUILD_HOST_RANLIB := $BUILD_RANLIB" >> $config_mk
echo "BUILD_HOST_CC := $BUILD_CC" >> $config_mk
echo "BUILD_HOST_CC_TYPE := $(cc_type $BUILD_CC)" >> $config_mk
echo "BUILD_HOST_CXX := $BUILD_CXX" >> $config_mk
@@ -1153,6 +1262,10 @@ if [ "$OPTION_LTO" = "true" ]; then
echo "BUILD_ENABLE_LTO := true" >> $config_mk
fi
+if [ "$OPTION_MIPS" = "true" ]; then
+ echo "BUILD_ENABLE_MIPS := true" >> $config_mk
+fi
+
if [ "$OPTION_MIN_BUILD" = "yes" ]; then
echo "CONFIG_MIN_BUILD := true" >> $config_mk
fi
@@ -1177,6 +1290,7 @@ else
echo "EMULATOR_USE_ANGLE := false" >> $config_mk
fi
+echo "CMAKE_DIR := $CMAKE_DIR" >> $config_mk
echo "COMMON_PREBUILTS_DIR := $COMMON_PREBUILTS_DIR" >> $config_mk
echo "ZLIB_PREBUILTS_DIR := $ZLIB_PREBUILTS_DIR" >> $config_mk
echo "LIBPNG_PREBUILTS_DIR := $LIBPNG_PREBUILTS_DIR" >> $config_mk
@@ -1193,14 +1307,7 @@ echo "FFMPEG_PREBUILTS_DIR := $FFMPEG_PREBUILTS_DIR" >> $config_mk
echo "X264_PREBUILTS_DIR := $X264_PREBUILTS_DIR" >> $config_mk
echo "LIBVPX_PREBUILTS_DIR := $LIBVPX_PREBUILTS_DIR" >> $config_mk
echo "VIRGLRENDERER_PREBUILTS_DIR := $VIRGLRENDERER_PREBUILTS_DIR" >> $config_mk
-
-if [ "$OPTION_TRACE" = "yes" ] ; then
- log "Enabling tracing"
- QEMU2_TRACE=simple,log
- echo "QEMU2_TRACE := yes" >> $config_mk
-else
- QEMU2_TRACE=nop
-fi
+echo "GOLDFISH_OPENGL_DIR := $GOLDFISH_OPENGL_DIR" >> $config_mk
if [ "$HOST_OS" = "linux" ]; then
@@ -1248,6 +1355,9 @@ if [ "$ANDROID_SDK_TOOLS_CL_SHA1" ] ; then
echo "ANDROID_SDK_TOOLS_CL_SHA1 := $ANDROID_SDK_TOOLS_CL_SHA1" >> $config_mk
fi
+echo "QEMU2_DEPS_PREBUILTS_DIR := $QEMU2_DEPS_PREBUILTS_DIR" >> $config_mk
+echo "TCMALLOC_PREBUILTS_DIR := $TCMALLOC_PREBUILTS_DIR" >> $config_mk
+
if [ -z "$OPTION_QEMU2_SRCDIR" ]; then
QEMU2_TOP_DIR=$ANDROID_EMULATOR_QEMU2_SRCDIR
if [ -n "$QEMU2_TOP_DIR" ]; then
@@ -1283,6 +1393,9 @@ for PREBUILT_SYMPATH_PAIR in $PREBUILT_SYMPATH_PAIRS;
do
echo " $PREBUILT_SYMPATH_PAIR \\" >> $config_mk
done
+
+cat $QEMU2_TOP_DIR/qemu2-qapi-auto-generated/trace-config >> $config_mk
+
echo "" >> $config_mk
# Build the config-host.h file
@@ -1386,29 +1499,38 @@ echo "#define CONFIG_ANDROID 1" >> $config_h
log "Generate : $config_h"
-# Generate the QAPI headers and sources from qapi-schema.json
-# Ideally, this would be done in our Makefiles, but as far as I
-# understand, the platform build doesn't support a single tool
-# that generates several sources files, nor the standalone one.
-export PYTHONDONTWRITEBYTECODE=1
-AUTOGENERATED_DIR=$OUT_DIR/build/qemu1-qapi-auto-generated
-QAPI_SCHEMA=$PROGDIR/qemu1/qapi-schema.json
-QAPI_SCRIPTS=$PROGDIR/qemu1/scripts
-mkdir -p "$AUTOGENERATED_DIR"
-python $QAPI_SCRIPTS/qapi-types.py qapi.types --output-dir=$AUTOGENERATED_DIR -b < $QAPI_SCHEMA
-python $QAPI_SCRIPTS/qapi-visit.py --output-dir=$AUTOGENERATED_DIR -b < $QAPI_SCHEMA
-python $QAPI_SCRIPTS/qapi-commands.py --output-dir=$AUTOGENERATED_DIR -m < $QAPI_SCHEMA
-
-log "Generate : $AUTOGENERATED_DIR"
-
-if [ -z "$OPTION_PREBUILT_QEMU2" ]; then
- QEMU2_CONFIGURE=$QEMU2_TOP_DIR/android-qemu2-glue/build/configure.sh
- if [ -f "$QEMU2_CONFIGURE" ]; then
- log "QEMU2 : Configuring."
- . "$QEMU2_CONFIGURE"
- fi
+QEMU2_CONFIG_DIR=$OUT_DIR/build/qemu2-config
+
+[ -d $QEMU2_CONFIG_DIR ] || mkdir -p $QEMU2_CONFIG_DIR
+
+if [ "$OPT_MINGW" ]; then
+ $OUT_DIR/objs/build/toolchain/x86_64-mingw32-windres \
+ -o $QEMU2_CONFIG_DIR/version.o \
+ $QEMU2_TOP_DIR/version.rc
fi
+replace_with_if_different () {
+ cmp -s "$1" "$2" || mv "$2" "$1"
+}
+
+# Generate qemu-version.h from Git history.
+QEMU_VERSION_H=$QEMU2_CONFIG_DIR/qemu-version.h
+QEMU_VERSION_H_TMP=$QEMU_VERSION_H.tmp
+rm -f "$QEMU_VERSION_H"
+
+if [ -d "$QEMU2_TOP_DIR/.git" ]; then
+ QEMU_VERSION=$(cd "$QEMU2_TOP_DIR" && git describe --match 'v*' 2>/dev/null | tr -d '\n')
+else
+ QEMU_VERSION=$(date "+%Y-%m-%d")
+fi
+
+echo "QEMU2 : Version [$QEMU_VERSION]"
+
+printf "#define QEMU_PKGVERSION \"(android-%s)\"\n" "$QEMU_VERSION" > $QEMU_VERSION_H_TMP
+printf '#define QEMU_FULL_VERSION QEMU_VERSION " (" QEMU_PKGVERSION ")"\n' >> $QEMU_VERSION_H_TMP
+replace_with_if_different "$QEMU_VERSION_H" "$QEMU_VERSION_H_TMP"
+rm -f "$QEMU_VERSION_TMP_H"
+
clean_temp
echo "Ready to go. Type ${GREEN}'make'${RESET} to build emulator, and ${GREEN}'make tests'${RESET} to run the unit tests."
diff --git a/android/emulator/main-emulator.cpp b/android/emulator/main-emulator.cpp
index 445e97d0b3..5863d79bb4 100644
--- a/android/emulator/main-emulator.cpp
+++ b/android/emulator/main-emulator.cpp
@@ -37,6 +37,7 @@
#include "android/base/ProcessControl.h"
#include "android/base/system/System.h"
#include "android/camera/camera-list.h"
+#include "android/emulation/ConfigDirs.h"
#include "android/main-emugl.h"
#include "android/main-help.h"
#include "android/opengl/emugl_config.h"
@@ -62,6 +63,7 @@ using android::base::RunOptions;
using android::base::ScopedCPtr;
using android::base::StringView;
using android::base::System;
+using android::ConfigDirs;
#define DEBUG 1
@@ -202,6 +204,20 @@ static void delete_snapshots_at(const char* content) {
}
}
+static void delete_adbCmds_at(const char* content) {
+ if (char* const cmdFolder =
+ path_join(
+ content,
+ ANDROID_AVD_TMP_ADB_COMMAND_DIR)) {
+ if (!path_delete_dir(cmdFolder)) {
+ D("Removed ADB command directory '%s'", cmdFolder);
+ } else {
+ D("Failed to remove ADB command directory '%s'", cmdFolder);
+ }
+ free(cmdFolder);
+ }
+}
+
static bool checkOsVersion() {
#ifndef _WIN32
return true;
@@ -229,6 +245,8 @@ static bool checkOsVersion() {
#endif // _WIN32
}
+static void doLauncherTest(const char* launcherTestArg);
+
/* Main routine */
int main(int argc, char** argv)
{
@@ -246,6 +264,11 @@ int main(int argc, char** argv)
bool cleanUpAvdContent = false;
bool isRestart = false;
int restartPid = -1;
+ bool doDeleteTempDir = false;
+
+ /* Test-only actions */
+ bool isLauncherTest = false;
+ const char* launcherTestArg = nullptr;
/* Define ANDROID_EMULATOR_DEBUG to 1 in your environment if you want to
* see the debug messages from this launcher program.
@@ -370,6 +393,20 @@ int main(int argc, char** argv)
continue;
}
+ if (!strcmp(opt, "-launcher-test")) {
+ isLauncherTest = true;
+ launcherTestArg = nullptr;
+ if (nn + 1 < argc) {
+ launcherTestArg = argv[nn + 1];
+ }
+ nn++;
+ continue;
+ }
+ if (!strcmp(opt, "--restart")) {
+ isRestart = true;
+ continue;
+ }
+
if (!strcmp(opt, "-webcam-list")) {
doListWebcams = true;
continue;
@@ -388,6 +425,10 @@ int main(int argc, char** argv)
avdName = opt+1;
}
}
+
+ if (!strcmp(opt, "-delete-temp-dir")) {
+ doDeleteTempDir = true;
+ }
}
if (doAccelCheck) {
@@ -421,11 +462,26 @@ int main(int argc, char** argv)
return 0;
}
+ if (isLauncherTest) {
+ if (!launcherTestArg) {
+ fprintf(stderr, "ERROR: Launcher test not specified\n");
+ return 1;
+ }
+ doLauncherTest(launcherTestArg);
+ fprintf(stderr, "Launcher test complete.\n");
+ return 0;
+ }
+
if (doListWebcams) {
android_camera_list_webcams();
return 0;
}
+ if (doDeleteTempDir) {
+ System::deleteTempDir();
+ return 0;
+ }
+
/* If ANDROID_EMULATOR_FORCE_32BIT is set to 'true' or '1' in the
* environment, set -force-32bit automatically.
*/
@@ -540,6 +596,7 @@ int main(int argc, char** argv)
if (avd_folder) {
clean_up_avd_contents_except_config_ini(avd_folder);
delete_snapshots_at(avd_folder);
+ delete_adbCmds_at(avd_folder);
free(avd_folder);
}
} else if (androidOut) {
@@ -1064,3 +1121,35 @@ static bool checkAvdSystemDirForKernelRanchu(const char* avdName,
AFREE(kernel_file);
return result;
}
+
+static constexpr char existsStr[] = "(exists)";
+static constexpr char notexistStr[] = "(does not exist)";
+
+static const char* getExistsStr(bool exists) {
+ return exists ? existsStr : notexistStr;
+}
+
+static void doLauncherTest(const char* launcherTestArg) {
+ if (!launcherTestArg || !launcherTestArg[0]) {
+ printf("Error: No launcher test specified.\n");
+ }
+
+ if (!strcmp(launcherTestArg, "sdkCheck")) {
+ auto sdkRoot = ConfigDirs::getSdkRootDirectory();
+ auto avdRoot = ConfigDirs::getAvdRootDirectory();
+
+ bool sdkRootExists = path_exists(sdkRoot.c_str());
+ bool avdRootExists = path_exists(avdRoot.c_str());
+
+ printf("Performing SDK check.\n");
+ printf("Android SDK location: %s. %s\n",
+ sdkRoot.c_str(), getExistsStr(sdkRootExists));
+ printf("Android AVD root location: %s. %s\n",
+ avdRoot.c_str(), getExistsStr(avdRootExists));
+ return;
+ }
+
+ // TODO: Other launcher tests
+
+ printf("Error: Unknown launcher test %s\n", launcherTestArg);
+}
diff --git a/android/envsetup.sh b/android/envsetup.sh
new file mode 100644
index 0000000000..7facdfdc63
--- /dev/null
+++ b/android/envsetup.sh
@@ -0,0 +1 @@
+export ASAN_OPTIONS=`cat android/asan_overrides`
diff --git a/android/qemu1/Makefile.qemu1-common.mk b/android/qemu1/Makefile.qemu1-common.mk
index 17b7db8694..30f917fa94 100644
--- a/android/qemu1/Makefile.qemu1-common.mk
+++ b/android/qemu1/Makefile.qemu1-common.mk
@@ -23,7 +23,7 @@ QEMU1_COMMON_INCLUDES := \
# Need to include "qapi-types.h" and other auto-generated files from
# android/configure.sh
-QEMU1_COMMON_INCLUDES += $(BUILD_OBJS_DIR)/build/qemu1-qapi-auto-generated
+QEMU1_COMMON_INCLUDES += $(LOCAL_PATH)/qemu1-qapi-auto-generated
# Zlib sources
QEMU1_COMMON_INCLUDES += $(ZLIB_INCLUDES)
@@ -186,7 +186,7 @@ LOCAL_SRC_FILES += \
android-qemu1-glue/qemu-net-agent-impl.c \
android-qemu1-glue/qemu-car-data-agent-impl.cpp \
android-qemu1-glue/qemu-record-screen-agent-impl.c \
- android-qemu1-glue/qemu-sensors-agent-impl.c \
+ android-qemu1-glue/qemu-sensors-agent-impl.cpp \
android-qemu1-glue/qemu-setup.cpp \
android-qemu1-glue/qemu-telephony-agent-impl.c \
android-qemu1-glue/qemu-virtual-scene-agent-impl.cpp \
diff --git a/android/qemu1/android-qemu1-glue/base/async/Looper.cpp b/android/qemu1/android-qemu1-glue/base/async/Looper.cpp
index 02fdf0aa7c..5cbf614f8c 100644
--- a/android/qemu1/android-qemu1-glue/base/async/Looper.cpp
+++ b/android/qemu1/android-qemu1-glue/base/async/Looper.cpp
@@ -214,15 +214,16 @@ public:
}
void save(android::base::Stream* stream) const {
- timer_put(
- reinterpret_cast<android::qemu::QemuFileStream*>(stream)->file(),
- mTimer);
+ stream->putBe64(timer_expire_time_ns(mTimer));
}
void load(android::base::Stream* stream) {
- timer_get(
- reinterpret_cast<android::qemu::QemuFileStream*>(stream)->file(),
- mTimer);
+ uint64_t deadline_ns = stream->getBe64();
+ if (deadline_ns != -1) {
+ timer_mod_ns(mTimer, deadline_ns);
+ } else {
+ timer_del(mTimer);
+ }
}
private:
diff --git a/android/qemu1/android-qemu1-glue/main.cpp b/android/qemu1/android-qemu1-glue/main.cpp
index f8a6ec8759..76005ac39b 100644
--- a/android/qemu1/android-qemu1-glue/main.cpp
+++ b/android/qemu1/android-qemu1-glue/main.cpp
@@ -193,13 +193,12 @@ extern "C" int main(int argc, char **argv) {
int apiLevel = avdInfo_getApiLevel(avd);
mem_map mem = { 0 };
char* kernelParameters = emulator_getKernelParameters(
- opts, kTargetArch, apiLevel, serialPrefix, hw->kernel_parameters,
- rendererConfig.glesMode,
- rendererConfig.bootPropOpenglesVersion, /* ro.opengles.version */
- 0ULL, /* glFramebufferSizeBytes */
- mem,
- hw->vm_heapSize,
- false /* isQemu2 */, false /* isCros */);
+ opts, kTargetArch, apiLevel, serialPrefix, hw->kernel_parameters,
+ NULL, // verifiedBootParameters
+ rendererConfig.glesMode,
+ rendererConfig.bootPropOpenglesVersion, /* ro.opengles.version */
+ 0ULL, /* glFramebufferSizeBytes */
+ mem, hw->vm_heapSize, false /* isQemu2 */, false /* isCros */);
if (hw->hw_cpu_ncore > 1) {
// Avoid printing this warning all the time because the default
diff --git a/android/qemu1/android-qemu1-glue/qemu-control-impl.h b/android/qemu1/android-qemu1-glue/qemu-control-impl.h
index 4fec716553..83e0a51343 100644
--- a/android/qemu1/android-qemu1-glue/qemu-control-impl.h
+++ b/android/qemu1/android-qemu1-glue/qemu-control-impl.h
@@ -53,7 +53,7 @@ extern const QAndroidHttpProxyAgent* const gQAndroidHttpProxyAgent;
// Defined in android/qemu-record-screen-agent.c
extern const QAndroidRecordScreenAgent* const gQAndroidRecordScreenAgent;
-// Defined in android/qemu-sensors-agent.c
+// Defined in android/qemu-sensors-agent.cpp
extern const QAndroidSensorsAgent* const gQAndroidSensorsAgent;
// Defined in android/qemu-telephony-agent.c
diff --git a/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.c b/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.c
deleted file mode 100644
index f0ef5e3e55..0000000000
--- a/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 2015 The Android Open Source Project
- **
- ** This software is licensed under the terms of the GNU General Public
- ** License version 2, as published by the Free Software Foundation, and
- ** may be copied, distributed, and modified under those terms.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- */
-
-#include "android/emulation/control/sensors_agent.h"
-
-#include "android/hw-sensors.h"
-
-int physical_parameter_target_set(
- int parameterId, float a, float b, float c, int interpolation_method) {
- return android_physical_model_set(
- parameterId, a, b, c, interpolation_method);
-}
-
-int physical_parameter_get(
- int parameterId, float *a, float *b, float *c,
- int parameter_value_type) {
- return android_physical_model_get(
- parameterId, a, b, c, parameter_value_type);
-}
-
-int coarse_orientation_set(int orientation) {
- return android_sensors_set_coarse_orientation(orientation, 0.f);
-}
-
-int sensor_override_set(int sensorId, float a, float b, float c) {
- return android_sensors_override_set(sensorId, a, b, c);
-}
-
-int sensor_get(int sensorId, float *a, float *b, float *c) {
- return android_sensors_get(sensorId, a, b, c);
-}
-
-int sensor_get_delay_ms() {
- return android_sensors_get_delay_ms();
-}
-
-int physical_state_agent_set(const struct QAndroidPhysicalStateAgent* agent) {
- return android_physical_agent_set(agent);
-}
-
-static const QAndroidSensorsAgent sQAndroidSensorsAgent = {
- .setPhysicalParameterTarget = physical_parameter_target_set,
- .getPhysicalParameter = physical_parameter_get,
- .setCoarseOrientation = coarse_orientation_set,
- .setSensorOverride = sensor_override_set,
- .getSensor = sensor_get,
- .getDelayMs = sensor_get_delay_ms,
- .setPhysicalStateAgent = physical_state_agent_set};
-const QAndroidSensorsAgent* const gQAndroidSensorsAgent =
- &sQAndroidSensorsAgent;
diff --git a/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.cpp b/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.cpp
new file mode 100644
index 0000000000..1d61d1c56e
--- /dev/null
+++ b/android/qemu1/android-qemu1-glue/qemu-sensors-agent-impl.cpp
@@ -0,0 +1,73 @@
+/* Copyright (C) 2015 The Android Open Source Project
+ **
+ ** This software is licensed under the terms of the GNU General Public
+ ** License version 2, as published by the Free Software Foundation, and
+ ** may be copied, distributed, and modified under those terms.
+ **
+ ** This program is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ** GNU General Public License for more details.
+ */
+
+#include "android/automation/AutomationController.h"
+#include "android/emulation/control/sensors_agent.h"
+
+#include "android/hw-sensors.h"
+
+int physical_parameter_target_set(int parameterId,
+ float a,
+ float b,
+ float c,
+ int interpolation_method) {
+ return android_physical_model_set(parameterId, a, b, c,
+ interpolation_method);
+}
+
+int physical_parameter_get(int parameterId,
+ float* a,
+ float* b,
+ float* c,
+ int parameter_value_type) {
+ return android_physical_model_get(
+ parameterId, a, b, c,
+ static_cast<ParameterValueType>(parameter_value_type));
+}
+
+int coarse_orientation_set(int orientation) {
+ return android_sensors_set_coarse_orientation(
+ static_cast<AndroidCoarseOrientation>(orientation), 0.f);
+}
+
+int sensor_override_set(int sensorId, float a, float b, float c) {
+ return android_sensors_override_set(sensorId, a, b, c);
+}
+
+int sensor_get(int sensorId, float* a, float* b, float* c) {
+ return android_sensors_get(sensorId, a, b, c);
+}
+
+int sensor_get_delay_ms() {
+ return android_sensors_get_delay_ms();
+}
+
+int physical_state_agent_set(const struct QAndroidPhysicalStateAgent* agent) {
+ return android_physical_agent_set(agent);
+}
+
+void automation_advance_time() {
+ android::automation::AutomationController::tryAdvanceTime();
+}
+
+static const QAndroidSensorsAgent sQAndroidSensorsAgent = {
+ .setPhysicalParameterTarget = physical_parameter_target_set,
+ .getPhysicalParameter = physical_parameter_get,
+ .setCoarseOrientation = coarse_orientation_set,
+ .setSensorOverride = sensor_override_set,
+ .getSensor = sensor_get,
+ .getDelayMs = sensor_get_delay_ms,
+ .setPhysicalStateAgent = physical_state_agent_set,
+ .advanceTime = automation_advance_time,
+};
+extern "C" const QAndroidSensorsAgent* const gQAndroidSensorsAgent =
+ &sQAndroidSensorsAgent;
diff --git a/android/qemu1/android-qemu1-glue/qemu-setup.cpp b/android/qemu1/android-qemu1-glue/qemu-setup.cpp
index e22ba8471d..bd2a81f911 100644
--- a/android/qemu1/android-qemu1-glue/qemu-setup.cpp
+++ b/android/qemu1/android-qemu1-glue/qemu-setup.cpp
@@ -47,3 +47,7 @@ bool qemu_android_emulation_setup() {
return android_emulation_setup(&consoleAgents, false);
}
+
+void qemu_android_emulation_teardown() {
+ android_emulation_teardown();
+}
diff --git a/android/qemu1/android-qemu1-glue/qemu-setup.h b/android/qemu1/android-qemu1-glue/qemu-setup.h
index 1be84b4e34..4a1d0e51ac 100644
--- a/android/qemu1/android-qemu1-glue/qemu-setup.h
+++ b/android/qemu1/android-qemu1-glue/qemu-setup.h
@@ -22,4 +22,8 @@ ANDROID_BEGIN_HEADER
extern bool qemu_android_emulation_setup(void);
+/* Call this function at the end of the QEMU main() function, just
+ * after the main loop has returned due to a machine exit. */
+extern void qemu_android_emulation_teardown(void);
+
ANDROID_END_HEADER
diff --git a/android/qemu1/android-qemu1-glue/qemu-vm-operations-impl.c b/android/qemu1/android-qemu1-glue/qemu-vm-operations-impl.c
index ff4966929b..165df8beb5 100644
--- a/android/qemu1/android-qemu1-glue/qemu-vm-operations-impl.c
+++ b/android/qemu1/android-qemu1-glue/qemu-vm-operations-impl.c
@@ -59,6 +59,12 @@ static bool qemu_snapshot_save(const char* name,
return !ret;
}
+static bool qemu_snapshot_remap(bool shared,
+ void* opaque,
+ LineConsumerCallback errConsumer) {
+ return true;
+}
+
static bool qemu_snapshot_load(const char* name,
void* opaque,
LineConsumerCallback errConsumer) {
@@ -104,6 +110,7 @@ static const QAndroidVmOperations sQAndroidVmOperations = {
.snapshotList = qemu_snapshot_list,
.snapshotLoad = qemu_snapshot_load,
.snapshotSave = qemu_snapshot_save,
+ .snapshotRemap = qemu_snapshot_remap,
.snapshotDelete = qemu_snapshot_delete,
.setSnapshotCallbacks = set_snapshot_callbacks,
.getVmConfiguration = get_vm_config,
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qapi-types.c b/android/qemu1/qemu1-qapi-auto-generated/qapi-types.c
new file mode 100644
index 0000000000..da752328fb
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qapi-types.c
@@ -0,0 +1,4025 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * deallocation functions for schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ * Michael Roth <mdroth@linux.vnet.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types.h"
+#include "qapi-visit.h"
+
+const char *ErrorClass_lookup[] = {
+ "GenericError",
+ "CommandNotFound",
+ "DeviceEncrypted",
+ "DeviceNotActive",
+ "DeviceNotFound",
+ "KVMMissingCap",
+ NULL,
+};
+
+const char *RunState_lookup[] = {
+ "debug",
+ "inmigrate",
+ "internal-error",
+ "io-error",
+ "paused",
+ "postmigrate",
+ "prelaunch",
+ "finish-migrate",
+ "restore-vm",
+ "running",
+ "save-vm",
+ "shutdown",
+ "suspended",
+ "watchdog",
+ "guest-panicked",
+ NULL,
+};
+
+const char *ImageInfoSpecificKind_lookup[] = {
+ "qcow2",
+ "vmdk",
+ NULL,
+};
+
+const char *DataFormat_lookup[] = {
+ "utf8",
+ "base64",
+ NULL,
+};
+
+const char *MigrationCapability_lookup[] = {
+ "xbzrle",
+ "x-rdma-pin-all",
+ "auto-converge",
+ "zero-blocks",
+ NULL,
+};
+
+const char *BlockDeviceIoStatus_lookup[] = {
+ "ok",
+ "failed",
+ "nospace",
+ NULL,
+};
+
+const char *SpiceQueryMouseMode_lookup[] = {
+ "client",
+ "server",
+ "unknown",
+ NULL,
+};
+
+const char *BlockdevOnError_lookup[] = {
+ "report",
+ "ignore",
+ "enospc",
+ "stop",
+ NULL,
+};
+
+const char *MirrorSyncMode_lookup[] = {
+ "top",
+ "full",
+ "none",
+ NULL,
+};
+
+const char *BlockJobType_lookup[] = {
+ "commit",
+ "stream",
+ "mirror",
+ "backup",
+ NULL,
+};
+
+const char *NewImageMode_lookup[] = {
+ "existing",
+ "absolute-paths",
+ NULL,
+};
+
+const char *TransactionActionKind_lookup[] = {
+ "blockdev-snapshot-sync",
+ "drive-backup",
+ "abort",
+ "blockdev-snapshot-internal-sync",
+ NULL,
+};
+
+const char *NetClientOptionsKind_lookup[] = {
+ "none",
+ "nic",
+ "user",
+ "tap",
+ "socket",
+ "vde",
+ "dump",
+ "bridge",
+ "hubport",
+ "netmap",
+ NULL,
+};
+
+const char *SocketAddressKind_lookup[] = {
+ "inet",
+ "unix",
+ "fd",
+ NULL,
+};
+
+const char *QKeyCode_lookup[] = {
+ "shift",
+ "shift_r",
+ "alt",
+ "alt_r",
+ "altgr",
+ "altgr_r",
+ "ctrl",
+ "ctrl_r",
+ "menu",
+ "esc",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "0",
+ "minus",
+ "equal",
+ "backspace",
+ "tab",
+ "q",
+ "w",
+ "e",
+ "r",
+ "t",
+ "y",
+ "u",
+ "i",
+ "o",
+ "p",
+ "bracket_left",
+ "bracket_right",
+ "ret",
+ "a",
+ "s",
+ "d",
+ "f",
+ "g",
+ "h",
+ "j",
+ "k",
+ "l",
+ "semicolon",
+ "apostrophe",
+ "grave_accent",
+ "backslash",
+ "z",
+ "x",
+ "c",
+ "v",
+ "b",
+ "n",
+ "m",
+ "comma",
+ "dot",
+ "slash",
+ "asterisk",
+ "spc",
+ "caps_lock",
+ "f1",
+ "f2",
+ "f3",
+ "f4",
+ "f5",
+ "f6",
+ "f7",
+ "f8",
+ "f9",
+ "f10",
+ "num_lock",
+ "scroll_lock",
+ "kp_divide",
+ "kp_multiply",
+ "kp_subtract",
+ "kp_add",
+ "kp_enter",
+ "kp_decimal",
+ "sysrq",
+ "kp_0",
+ "kp_1",
+ "kp_2",
+ "kp_3",
+ "kp_4",
+ "kp_5",
+ "kp_6",
+ "kp_7",
+ "kp_8",
+ "kp_9",
+ "less",
+ "f11",
+ "f12",
+ "print",
+ "home",
+ "pgup",
+ "pgdn",
+ "end",
+ "left",
+ "up",
+ "down",
+ "right",
+ "insert",
+ "delete",
+ "stop",
+ "again",
+ "props",
+ "undo",
+ "front",
+ "copy",
+ "open",
+ "paste",
+ "find",
+ "cut",
+ "lf",
+ "help",
+ "meta_l",
+ "meta_r",
+ "compose",
+ NULL,
+};
+
+const char *KeyValueKind_lookup[] = {
+ "number",
+ "qcode",
+ NULL,
+};
+
+const char *ChardevBackendKind_lookup[] = {
+ "file",
+ "serial",
+ "parallel",
+ "pipe",
+ "socket",
+ "udp",
+ "pty",
+ "null",
+ "mux",
+ "msmouse",
+ "braille",
+ "stdio",
+ "console",
+ "spicevmc",
+ "spiceport",
+ "vc",
+ "ringbuf",
+ "memory",
+ NULL,
+};
+
+const char *TpmModel_lookup[] = {
+ "tpm-tis",
+ NULL,
+};
+
+const char *TpmType_lookup[] = {
+ "passthrough",
+ NULL,
+};
+
+const char *TpmTypeOptionsKind_lookup[] = {
+ "passthrough",
+ NULL,
+};
+
+const char *CommandLineParameterType_lookup[] = {
+ "string",
+ "boolean",
+ "number",
+ "size",
+ NULL,
+};
+
+const char *X86CPURegister32_lookup[] = {
+ "EAX",
+ "EBX",
+ "ECX",
+ "EDX",
+ "ESP",
+ "EBP",
+ "ESI",
+ "EDI",
+ NULL,
+};
+
+const char *RxState_lookup[] = {
+ "normal",
+ "none",
+ "all",
+ NULL,
+};
+
+const char *BlockdevDiscardOptions_lookup[] = {
+ "ignore",
+ "unmap",
+ NULL,
+};
+
+const char *BlockdevAioOptions_lookup[] = {
+ "threads",
+ "native",
+ NULL,
+};
+
+const char *BlockdevOptionsKind_lookup[] = {
+ "file",
+ "http",
+ "https",
+ "ftp",
+ "ftps",
+ "tftp",
+ "vvfat",
+ "bochs",
+ "cloop",
+ "cow",
+ "dmg",
+ "parallels",
+ "qcow",
+ "qcow2",
+ "qed",
+ "raw",
+ "vdi",
+ "vhdx",
+ "vmdk",
+ "vpc",
+ NULL,
+};
+
+const char *BlockdevRefKind_lookup[] = {
+ "definition",
+ "reference",
+ NULL,
+};
+
+const int BlockdevRef_qtypes[QTYPE_MAX] = {
+ [ QTYPE_QDICT ] = BLOCKDEV_REF_KIND_DEFINITION,
+ [ QTYPE_QSTRING ] = BLOCKDEV_REF_KIND_REFERENCE,
+};
+
+#ifndef QAPI_TYPES_BUILTIN_CLEANUP_DEF_H
+#define QAPI_TYPES_BUILTIN_CLEANUP_DEF_H
+
+
+void qapi_free_strList(strList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_strList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_intList(intList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_intList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_numberList(numberList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_numberList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_boolList(boolList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_boolList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_int8List(int8List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int8List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_int16List(int16List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int16List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_int32List(int32List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int32List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_int64List(int64List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int64List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_uint8List(uint8List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_uint8List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_uint16List(uint16List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_uint16List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_uint32List(uint32List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_uint32List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+void qapi_free_uint64List(uint64List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_uint64List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+#endif /* QAPI_TYPES_BUILTIN_CLEANUP_DEF_H */
+
+
+void qapi_free_ErrorClassList(ErrorClassList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ErrorClassList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NameInfoList(NameInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NameInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NameInfo(NameInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NameInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VersionInfoList(VersionInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VersionInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VersionInfo(VersionInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VersionInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_KvmInfoList(KvmInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KvmInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_KvmInfo(KvmInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KvmInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_RunStateList(RunStateList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_RunStateList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SnapshotInfoList(SnapshotInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SnapshotInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SnapshotInfo(SnapshotInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SnapshotInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecificQCow2List(ImageInfoSpecificQCow2List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecificQCow2List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecificQCow2(ImageInfoSpecificQCow2 * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecificQCow2(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecificVmdkList(ImageInfoSpecificVmdkList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecificVmdkList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecificVmdk(ImageInfoSpecificVmdk * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecificVmdk(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecificList(ImageInfoSpecificList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecificList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoSpecific(ImageInfoSpecific * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoSpecific(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfoList(ImageInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageInfo(ImageInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageCheckList(ImageCheckList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageCheckList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ImageCheck(ImageCheck * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ImageCheck(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_StatusInfoList(StatusInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_StatusInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_StatusInfo(StatusInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_StatusInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_UuidInfoList(UuidInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_UuidInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_UuidInfo(UuidInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_UuidInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevInfoList(ChardevInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevInfo(ChardevInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_DataFormatList(DataFormatList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DataFormatList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandInfoList(CommandInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandInfo(CommandInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_EventInfoList(EventInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_EventInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_EventInfo(EventInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_EventInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationStatsList(MigrationStatsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationStatsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationStats(MigrationStats * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationStats(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_XBZRLECacheStatsList(XBZRLECacheStatsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_XBZRLECacheStatsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_XBZRLECacheStats(XBZRLECacheStats * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_XBZRLECacheStats(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationInfoList(MigrationInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationInfo(MigrationInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationCapabilityList(MigrationCapabilityList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationCapabilityList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationCapabilityStatusList(MigrationCapabilityStatusList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationCapabilityStatusList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MigrationCapabilityStatus(MigrationCapabilityStatus * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationCapabilityStatus(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MouseInfoList(MouseInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MouseInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MouseInfo(MouseInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MouseInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CpuInfoList(CpuInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CpuInfo(CpuInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceInfoList(BlockDeviceInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceInfo(BlockDeviceInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceIoStatusList(BlockDeviceIoStatusList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceIoStatusList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceMapEntryList(BlockDeviceMapEntryList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceMapEntryList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceMapEntry(BlockDeviceMapEntry * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceMapEntry(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDirtyInfoList(BlockDirtyInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDirtyInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDirtyInfo(BlockDirtyInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDirtyInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockInfoList(BlockInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockInfo(BlockInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceStatsList(BlockDeviceStatsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceStatsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockDeviceStats(BlockDeviceStats * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockDeviceStats(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockStatsList(BlockStatsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockStatsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockStats(BlockStats * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockStats(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VncClientInfoList(VncClientInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VncClientInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VncClientInfo(VncClientInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VncClientInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VncInfoList(VncInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VncInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_VncInfo(VncInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VncInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SpiceChannelList(SpiceChannelList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceChannelList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SpiceChannel(SpiceChannel * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceChannel(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SpiceQueryMouseModeList(SpiceQueryMouseModeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceQueryMouseModeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SpiceInfoList(SpiceInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SpiceInfo(SpiceInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BalloonInfoList(BalloonInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BalloonInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BalloonInfo(BalloonInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BalloonInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciMemoryRangeList(PciMemoryRangeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciMemoryRangeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciMemoryRange(PciMemoryRange * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciMemoryRange(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciMemoryRegionList(PciMemoryRegionList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciMemoryRegionList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciMemoryRegion(PciMemoryRegion * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciMemoryRegion(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciBridgeInfoList(PciBridgeInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciBridgeInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciBridgeInfo(PciBridgeInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciBridgeInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciDeviceInfoList(PciDeviceInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciDeviceInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciDeviceInfo(PciDeviceInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciDeviceInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciInfoList(PciInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_PciInfo(PciInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOnErrorList(BlockdevOnErrorList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOnErrorList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MirrorSyncModeList(MirrorSyncModeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MirrorSyncModeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockJobTypeList(BlockJobTypeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockJobTypeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockJobInfoList(BlockJobInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockJobInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockJobInfo(BlockJobInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockJobInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NewImageModeList(NewImageModeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NewImageModeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevSnapshotList(BlockdevSnapshotList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevSnapshotList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevSnapshot(BlockdevSnapshot * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevSnapshot(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevSnapshotInternalList(BlockdevSnapshotInternalList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevSnapshotInternalList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevSnapshotInternal(BlockdevSnapshotInternal * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevSnapshotInternal(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_DriveBackupList(DriveBackupList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DriveBackupList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_DriveBackup(DriveBackup * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DriveBackup(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_AbortList(AbortList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AbortList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_Abort(Abort * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_Abort(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TransactionActionList(TransactionActionList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TransactionActionList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TransactionAction(TransactionAction * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TransactionAction(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ObjectPropertyInfoList(ObjectPropertyInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectPropertyInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ObjectPropertyInfo(ObjectPropertyInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectPropertyInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ObjectTypeInfoList(ObjectTypeInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectTypeInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ObjectTypeInfo(ObjectTypeInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectTypeInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_DevicePropertyInfoList(DevicePropertyInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DevicePropertyInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_DevicePropertyInfo(DevicePropertyInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DevicePropertyInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevNoneOptionsList(NetdevNoneOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevNoneOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevNoneOptions(NetdevNoneOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevNoneOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetLegacyNicOptionsList(NetLegacyNicOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetLegacyNicOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetLegacyNicOptions(NetLegacyNicOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetLegacyNicOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_StringList(StringList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_StringList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_String(String * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_String(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevUserOptionsList(NetdevUserOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevUserOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevUserOptions(NetdevUserOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevUserOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevTapOptionsList(NetdevTapOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevTapOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevTapOptions(NetdevTapOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevTapOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevSocketOptionsList(NetdevSocketOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevSocketOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevSocketOptions(NetdevSocketOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevSocketOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevVdeOptionsList(NetdevVdeOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevVdeOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevVdeOptions(NetdevVdeOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevVdeOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevDumpOptionsList(NetdevDumpOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevDumpOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevDumpOptions(NetdevDumpOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevDumpOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevBridgeOptionsList(NetdevBridgeOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevBridgeOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevBridgeOptions(NetdevBridgeOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevBridgeOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevHubPortOptionsList(NetdevHubPortOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevHubPortOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevHubPortOptions(NetdevHubPortOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevHubPortOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevNetmapOptionsList(NetdevNetmapOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevNetmapOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevNetmapOptions(NetdevNetmapOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevNetmapOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetClientOptionsList(NetClientOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetClientOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetClientOptions(NetClientOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetClientOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetLegacyList(NetLegacyList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetLegacyList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetLegacy(NetLegacy * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetLegacy(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_NetdevList(NetdevList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NetdevList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_Netdev(Netdev * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_Netdev(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_InetSocketAddressList(InetSocketAddressList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_InetSocketAddressList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_InetSocketAddress(InetSocketAddress * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_InetSocketAddress(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_UnixSocketAddressList(UnixSocketAddressList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_UnixSocketAddressList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_UnixSocketAddress(UnixSocketAddress * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_UnixSocketAddress(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SocketAddressList(SocketAddressList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SocketAddressList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_SocketAddress(SocketAddress * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SocketAddress(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MachineInfoList(MachineInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MachineInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_MachineInfo(MachineInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MachineInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuDefinitionInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuDefinitionInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_AddfdInfoList(AddfdInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AddfdInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_AddfdInfo(AddfdInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AddfdInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_FdsetFdInfoList(FdsetFdInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_FdsetFdInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_FdsetFdInfo(FdsetFdInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_FdsetFdInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_FdsetInfoList(FdsetInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_FdsetInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_FdsetInfo(FdsetInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_FdsetInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TargetInfoList(TargetInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TargetInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TargetInfo(TargetInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TargetInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_QKeyCodeList(QKeyCodeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_QKeyCodeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_KeyValueList(KeyValueList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KeyValueList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_KeyValue(KeyValue * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KeyValue(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevFileList(ChardevFileList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevFileList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevFile(ChardevFile * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevFile(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevHostdevList(ChardevHostdevList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevHostdevList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevHostdev(ChardevHostdev * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevHostdev(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSocketList(ChardevSocketList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSocketList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSocket(ChardevSocket * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSocket(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevUdpList(ChardevUdpList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevUdpList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevUdp(ChardevUdp * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevUdp(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevMuxList(ChardevMuxList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevMuxList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevMux(ChardevMux * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevMux(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevStdioList(ChardevStdioList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevStdioList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevStdio(ChardevStdio * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevStdio(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSpiceChannelList(ChardevSpiceChannelList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSpiceChannelList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSpiceChannel(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSpicePortList(ChardevSpicePortList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSpicePortList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevSpicePort(ChardevSpicePort * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevSpicePort(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevVCList(ChardevVCList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevVCList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevVC(ChardevVC * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevVC(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevRingbufList(ChardevRingbufList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevRingbufList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevRingbuf(ChardevRingbuf * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevRingbuf(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevDummyList(ChardevDummyList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevDummyList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevDummy(ChardevDummy * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevDummy(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevBackendList(ChardevBackendList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevBackendList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevBackend(ChardevBackend * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevBackend(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevReturnList(ChardevReturnList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevReturnList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_ChardevReturn(ChardevReturn * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevReturn(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TpmModelList(TpmModelList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmModelList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TpmTypeList(TpmTypeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmTypeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TPMPassthroughOptionsList(TPMPassthroughOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TPMPassthroughOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TPMPassthroughOptions(TPMPassthroughOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TPMPassthroughOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TpmTypeOptionsList(TpmTypeOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmTypeOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TpmTypeOptions(TpmTypeOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmTypeOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TPMInfoList(TPMInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TPMInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_TPMInfo(TPMInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TPMInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_AcpiTableOptionsList(AcpiTableOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AcpiTableOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_AcpiTableOptions(AcpiTableOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AcpiTableOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandLineParameterTypeList(CommandLineParameterTypeList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineParameterTypeList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandLineParameterInfoList(CommandLineParameterInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineParameterInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandLineParameterInfo(CommandLineParameterInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineParameterInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandLineOptionInfoList(CommandLineOptionInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineOptionInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_CommandLineOptionInfo(CommandLineOptionInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineOptionInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_X86CPURegister32List(X86CPURegister32List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_X86CPURegister32List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_X86CPUFeatureWordInfoList(X86CPUFeatureWordInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_X86CPUFeatureWordInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_X86CPUFeatureWordInfo(X86CPUFeatureWordInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_X86CPUFeatureWordInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_RxStateList(RxStateList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_RxStateList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_RxFilterInfoList(RxFilterInfoList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_RxFilterInfoList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_RxFilterInfo(RxFilterInfo * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_RxFilterInfo(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevDiscardOptionsList(BlockdevDiscardOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevDiscardOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevAioOptionsList(BlockdevAioOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevAioOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevCacheOptionsList(BlockdevCacheOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevCacheOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevCacheOptions(BlockdevCacheOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevCacheOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsBaseList(BlockdevOptionsBaseList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsBaseList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsBase(BlockdevOptionsBase * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsBase(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsFileList(BlockdevOptionsFileList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsFileList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsFile(BlockdevOptionsFile * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsFile(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsVVFATList(BlockdevOptionsVVFATList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsVVFATList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsVVFAT(BlockdevOptionsVVFAT * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsVVFAT(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsGenericFormatList(BlockdevOptionsGenericFormatList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsGenericFormatList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsGenericFormat(BlockdevOptionsGenericFormat * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsGenericFormat(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsGenericCOWFormatList(BlockdevOptionsGenericCOWFormatList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsGenericCOWFormatList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsGenericCOWFormat(BlockdevOptionsGenericCOWFormat * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsGenericCOWFormat(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsQcow2List(BlockdevOptionsQcow2List * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsQcow2List(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsQcow2(BlockdevOptionsQcow2 * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsQcow2(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptionsList(BlockdevOptionsList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptionsList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevOptions(BlockdevOptions * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptions(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevRefList(BlockdevRefList * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevRefList(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+
+void qapi_free_BlockdevRef(BlockdevRef * obj)
+{
+ QapiDeallocVisitor *md;
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevRef(v, &obj, NULL, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qapi-types.h b/android/qemu1/qemu1-qapi-auto-generated/qapi-types.h
new file mode 100644
index 0000000000..38376835ea
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qapi-types.h
@@ -0,0 +1,3313 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#ifndef QAPI_TYPES_H
+#define QAPI_TYPES_H
+
+#include <stdbool.h>
+#include <stdint.h>
+
+
+#ifndef QAPI_TYPES_BUILTIN_STRUCT_DECL_H
+#define QAPI_TYPES_BUILTIN_STRUCT_DECL_H
+
+
+typedef struct strList
+{
+ union {
+ char * value;
+ uint64_t padding;
+ };
+ struct strList *next;
+} strList;
+
+typedef struct intList
+{
+ union {
+ int64_t value;
+ uint64_t padding;
+ };
+ struct intList *next;
+} intList;
+
+typedef struct numberList
+{
+ union {
+ double value;
+ uint64_t padding;
+ };
+ struct numberList *next;
+} numberList;
+
+typedef struct boolList
+{
+ union {
+ bool value;
+ uint64_t padding;
+ };
+ struct boolList *next;
+} boolList;
+
+typedef struct int8List
+{
+ union {
+ int8_t value;
+ uint64_t padding;
+ };
+ struct int8List *next;
+} int8List;
+
+typedef struct int16List
+{
+ union {
+ int16_t value;
+ uint64_t padding;
+ };
+ struct int16List *next;
+} int16List;
+
+typedef struct int32List
+{
+ union {
+ int32_t value;
+ uint64_t padding;
+ };
+ struct int32List *next;
+} int32List;
+
+typedef struct int64List
+{
+ union {
+ int64_t value;
+ uint64_t padding;
+ };
+ struct int64List *next;
+} int64List;
+
+typedef struct uint8List
+{
+ union {
+ uint8_t value;
+ uint64_t padding;
+ };
+ struct uint8List *next;
+} uint8List;
+
+typedef struct uint16List
+{
+ union {
+ uint16_t value;
+ uint64_t padding;
+ };
+ struct uint16List *next;
+} uint16List;
+
+typedef struct uint32List
+{
+ union {
+ uint32_t value;
+ uint64_t padding;
+ };
+ struct uint32List *next;
+} uint32List;
+
+typedef struct uint64List
+{
+ union {
+ uint64_t value;
+ uint64_t padding;
+ };
+ struct uint64List *next;
+} uint64List;
+
+#endif /* QAPI_TYPES_BUILTIN_STRUCT_DECL_H */
+
+
+extern const char *ErrorClass_lookup[];
+typedef enum ErrorClass
+{
+ ERROR_CLASS_GENERIC_ERROR = 0,
+ ERROR_CLASS_COMMAND_NOT_FOUND = 1,
+ ERROR_CLASS_DEVICE_ENCRYPTED = 2,
+ ERROR_CLASS_DEVICE_NOT_ACTIVE = 3,
+ ERROR_CLASS_DEVICE_NOT_FOUND = 4,
+ ERROR_CLASS_K_V_M_MISSING_CAP = 5,
+ ERROR_CLASS_MAX = 6,
+} ErrorClass;
+
+typedef struct ErrorClassList
+{
+ union {
+ ErrorClass value;
+ uint64_t padding;
+ };
+ struct ErrorClassList *next;
+} ErrorClassList;
+
+
+typedef struct NameInfo NameInfo;
+
+typedef struct NameInfoList
+{
+ union {
+ NameInfo *value;
+ uint64_t padding;
+ };
+ struct NameInfoList *next;
+} NameInfoList;
+
+
+typedef struct VersionInfo VersionInfo;
+
+typedef struct VersionInfoList
+{
+ union {
+ VersionInfo *value;
+ uint64_t padding;
+ };
+ struct VersionInfoList *next;
+} VersionInfoList;
+
+
+typedef struct KvmInfo KvmInfo;
+
+typedef struct KvmInfoList
+{
+ union {
+ KvmInfo *value;
+ uint64_t padding;
+ };
+ struct KvmInfoList *next;
+} KvmInfoList;
+
+extern const char *RunState_lookup[];
+typedef enum RunState
+{
+ RUN_STATE_DEBUG = 0,
+ RUN_STATE_INMIGRATE = 1,
+ RUN_STATE_INTERNAL_ERROR = 2,
+ RUN_STATE_IO_ERROR = 3,
+ RUN_STATE_PAUSED = 4,
+ RUN_STATE_POSTMIGRATE = 5,
+ RUN_STATE_PRELAUNCH = 6,
+ RUN_STATE_FINISH_MIGRATE = 7,
+ RUN_STATE_RESTORE_VM = 8,
+ RUN_STATE_RUNNING = 9,
+ RUN_STATE_SAVE_VM = 10,
+ RUN_STATE_SHUTDOWN = 11,
+ RUN_STATE_SUSPENDED = 12,
+ RUN_STATE_WATCHDOG = 13,
+ RUN_STATE_GUEST_PANICKED = 14,
+ RUN_STATE_MAX = 15,
+} RunState;
+
+typedef struct RunStateList
+{
+ union {
+ RunState value;
+ uint64_t padding;
+ };
+ struct RunStateList *next;
+} RunStateList;
+
+
+typedef struct SnapshotInfo SnapshotInfo;
+
+typedef struct SnapshotInfoList
+{
+ union {
+ SnapshotInfo *value;
+ uint64_t padding;
+ };
+ struct SnapshotInfoList *next;
+} SnapshotInfoList;
+
+
+typedef struct ImageInfoSpecificQCow2 ImageInfoSpecificQCow2;
+
+typedef struct ImageInfoSpecificQCow2List
+{
+ union {
+ ImageInfoSpecificQCow2 *value;
+ uint64_t padding;
+ };
+ struct ImageInfoSpecificQCow2List *next;
+} ImageInfoSpecificQCow2List;
+
+
+typedef struct ImageInfoSpecificVmdk ImageInfoSpecificVmdk;
+
+typedef struct ImageInfoSpecificVmdkList
+{
+ union {
+ ImageInfoSpecificVmdk *value;
+ uint64_t padding;
+ };
+ struct ImageInfoSpecificVmdkList *next;
+} ImageInfoSpecificVmdkList;
+
+
+typedef struct ImageInfoSpecific ImageInfoSpecific;
+
+typedef struct ImageInfoSpecificList
+{
+ union {
+ ImageInfoSpecific *value;
+ uint64_t padding;
+ };
+ struct ImageInfoSpecificList *next;
+} ImageInfoSpecificList;
+
+extern const char *ImageInfoSpecificKind_lookup[];
+typedef enum ImageInfoSpecificKind
+{
+ IMAGE_INFO_SPECIFIC_KIND_QCOW2 = 0,
+ IMAGE_INFO_SPECIFIC_KIND_VMDK = 1,
+ IMAGE_INFO_SPECIFIC_KIND_MAX = 2,
+} ImageInfoSpecificKind;
+
+
+typedef struct ImageInfo ImageInfo;
+
+typedef struct ImageInfoList
+{
+ union {
+ ImageInfo *value;
+ uint64_t padding;
+ };
+ struct ImageInfoList *next;
+} ImageInfoList;
+
+
+typedef struct ImageCheck ImageCheck;
+
+typedef struct ImageCheckList
+{
+ union {
+ ImageCheck *value;
+ uint64_t padding;
+ };
+ struct ImageCheckList *next;
+} ImageCheckList;
+
+
+typedef struct StatusInfo StatusInfo;
+
+typedef struct StatusInfoList
+{
+ union {
+ StatusInfo *value;
+ uint64_t padding;
+ };
+ struct StatusInfoList *next;
+} StatusInfoList;
+
+
+typedef struct UuidInfo UuidInfo;
+
+typedef struct UuidInfoList
+{
+ union {
+ UuidInfo *value;
+ uint64_t padding;
+ };
+ struct UuidInfoList *next;
+} UuidInfoList;
+
+
+typedef struct ChardevInfo ChardevInfo;
+
+typedef struct ChardevInfoList
+{
+ union {
+ ChardevInfo *value;
+ uint64_t padding;
+ };
+ struct ChardevInfoList *next;
+} ChardevInfoList;
+
+extern const char *DataFormat_lookup[];
+typedef enum DataFormat
+{
+ DATA_FORMAT_UTF8 = 0,
+ DATA_FORMAT_BASE64 = 1,
+ DATA_FORMAT_MAX = 2,
+} DataFormat;
+
+typedef struct DataFormatList
+{
+ union {
+ DataFormat value;
+ uint64_t padding;
+ };
+ struct DataFormatList *next;
+} DataFormatList;
+
+
+typedef struct CommandInfo CommandInfo;
+
+typedef struct CommandInfoList
+{
+ union {
+ CommandInfo *value;
+ uint64_t padding;
+ };
+ struct CommandInfoList *next;
+} CommandInfoList;
+
+
+typedef struct EventInfo EventInfo;
+
+typedef struct EventInfoList
+{
+ union {
+ EventInfo *value;
+ uint64_t padding;
+ };
+ struct EventInfoList *next;
+} EventInfoList;
+
+
+typedef struct MigrationStats MigrationStats;
+
+typedef struct MigrationStatsList
+{
+ union {
+ MigrationStats *value;
+ uint64_t padding;
+ };
+ struct MigrationStatsList *next;
+} MigrationStatsList;
+
+
+typedef struct XBZRLECacheStats XBZRLECacheStats;
+
+typedef struct XBZRLECacheStatsList
+{
+ union {
+ XBZRLECacheStats *value;
+ uint64_t padding;
+ };
+ struct XBZRLECacheStatsList *next;
+} XBZRLECacheStatsList;
+
+
+typedef struct MigrationInfo MigrationInfo;
+
+typedef struct MigrationInfoList
+{
+ union {
+ MigrationInfo *value;
+ uint64_t padding;
+ };
+ struct MigrationInfoList *next;
+} MigrationInfoList;
+
+extern const char *MigrationCapability_lookup[];
+typedef enum MigrationCapability
+{
+ MIGRATION_CAPABILITY_XBZRLE = 0,
+ MIGRATION_CAPABILITY_X_RDMA_PIN_ALL = 1,
+ MIGRATION_CAPABILITY_AUTO_CONVERGE = 2,
+ MIGRATION_CAPABILITY_ZERO_BLOCKS = 3,
+ MIGRATION_CAPABILITY_MAX = 4,
+} MigrationCapability;
+
+typedef struct MigrationCapabilityList
+{
+ union {
+ MigrationCapability value;
+ uint64_t padding;
+ };
+ struct MigrationCapabilityList *next;
+} MigrationCapabilityList;
+
+
+typedef struct MigrationCapabilityStatus MigrationCapabilityStatus;
+
+typedef struct MigrationCapabilityStatusList
+{
+ union {
+ MigrationCapabilityStatus *value;
+ uint64_t padding;
+ };
+ struct MigrationCapabilityStatusList *next;
+} MigrationCapabilityStatusList;
+
+
+typedef struct MouseInfo MouseInfo;
+
+typedef struct MouseInfoList
+{
+ union {
+ MouseInfo *value;
+ uint64_t padding;
+ };
+ struct MouseInfoList *next;
+} MouseInfoList;
+
+
+typedef struct CpuInfo CpuInfo;
+
+typedef struct CpuInfoList
+{
+ union {
+ CpuInfo *value;
+ uint64_t padding;
+ };
+ struct CpuInfoList *next;
+} CpuInfoList;
+
+
+typedef struct BlockDeviceInfo BlockDeviceInfo;
+
+typedef struct BlockDeviceInfoList
+{
+ union {
+ BlockDeviceInfo *value;
+ uint64_t padding;
+ };
+ struct BlockDeviceInfoList *next;
+} BlockDeviceInfoList;
+
+extern const char *BlockDeviceIoStatus_lookup[];
+typedef enum BlockDeviceIoStatus
+{
+ BLOCK_DEVICE_IO_STATUS_OK = 0,
+ BLOCK_DEVICE_IO_STATUS_FAILED = 1,
+ BLOCK_DEVICE_IO_STATUS_NOSPACE = 2,
+ BLOCK_DEVICE_IO_STATUS_MAX = 3,
+} BlockDeviceIoStatus;
+
+typedef struct BlockDeviceIoStatusList
+{
+ union {
+ BlockDeviceIoStatus value;
+ uint64_t padding;
+ };
+ struct BlockDeviceIoStatusList *next;
+} BlockDeviceIoStatusList;
+
+
+typedef struct BlockDeviceMapEntry BlockDeviceMapEntry;
+
+typedef struct BlockDeviceMapEntryList
+{
+ union {
+ BlockDeviceMapEntry *value;
+ uint64_t padding;
+ };
+ struct BlockDeviceMapEntryList *next;
+} BlockDeviceMapEntryList;
+
+
+typedef struct BlockDirtyInfo BlockDirtyInfo;
+
+typedef struct BlockDirtyInfoList
+{
+ union {
+ BlockDirtyInfo *value;
+ uint64_t padding;
+ };
+ struct BlockDirtyInfoList *next;
+} BlockDirtyInfoList;
+
+
+typedef struct BlockInfo BlockInfo;
+
+typedef struct BlockInfoList
+{
+ union {
+ BlockInfo *value;
+ uint64_t padding;
+ };
+ struct BlockInfoList *next;
+} BlockInfoList;
+
+
+typedef struct BlockDeviceStats BlockDeviceStats;
+
+typedef struct BlockDeviceStatsList
+{
+ union {
+ BlockDeviceStats *value;
+ uint64_t padding;
+ };
+ struct BlockDeviceStatsList *next;
+} BlockDeviceStatsList;
+
+
+typedef struct BlockStats BlockStats;
+
+typedef struct BlockStatsList
+{
+ union {
+ BlockStats *value;
+ uint64_t padding;
+ };
+ struct BlockStatsList *next;
+} BlockStatsList;
+
+
+typedef struct VncClientInfo VncClientInfo;
+
+typedef struct VncClientInfoList
+{
+ union {
+ VncClientInfo *value;
+ uint64_t padding;
+ };
+ struct VncClientInfoList *next;
+} VncClientInfoList;
+
+
+typedef struct VncInfo VncInfo;
+
+typedef struct VncInfoList
+{
+ union {
+ VncInfo *value;
+ uint64_t padding;
+ };
+ struct VncInfoList *next;
+} VncInfoList;
+
+
+typedef struct SpiceChannel SpiceChannel;
+
+typedef struct SpiceChannelList
+{
+ union {
+ SpiceChannel *value;
+ uint64_t padding;
+ };
+ struct SpiceChannelList *next;
+} SpiceChannelList;
+
+extern const char *SpiceQueryMouseMode_lookup[];
+typedef enum SpiceQueryMouseMode
+{
+ SPICE_QUERY_MOUSE_MODE_CLIENT = 0,
+ SPICE_QUERY_MOUSE_MODE_SERVER = 1,
+ SPICE_QUERY_MOUSE_MODE_UNKNOWN = 2,
+ SPICE_QUERY_MOUSE_MODE_MAX = 3,
+} SpiceQueryMouseMode;
+
+typedef struct SpiceQueryMouseModeList
+{
+ union {
+ SpiceQueryMouseMode value;
+ uint64_t padding;
+ };
+ struct SpiceQueryMouseModeList *next;
+} SpiceQueryMouseModeList;
+
+
+typedef struct SpiceInfo SpiceInfo;
+
+typedef struct SpiceInfoList
+{
+ union {
+ SpiceInfo *value;
+ uint64_t padding;
+ };
+ struct SpiceInfoList *next;
+} SpiceInfoList;
+
+
+typedef struct BalloonInfo BalloonInfo;
+
+typedef struct BalloonInfoList
+{
+ union {
+ BalloonInfo *value;
+ uint64_t padding;
+ };
+ struct BalloonInfoList *next;
+} BalloonInfoList;
+
+
+typedef struct PciMemoryRange PciMemoryRange;
+
+typedef struct PciMemoryRangeList
+{
+ union {
+ PciMemoryRange *value;
+ uint64_t padding;
+ };
+ struct PciMemoryRangeList *next;
+} PciMemoryRangeList;
+
+
+typedef struct PciMemoryRegion PciMemoryRegion;
+
+typedef struct PciMemoryRegionList
+{
+ union {
+ PciMemoryRegion *value;
+ uint64_t padding;
+ };
+ struct PciMemoryRegionList *next;
+} PciMemoryRegionList;
+
+
+typedef struct PciBridgeInfo PciBridgeInfo;
+
+typedef struct PciBridgeInfoList
+{
+ union {
+ PciBridgeInfo *value;
+ uint64_t padding;
+ };
+ struct PciBridgeInfoList *next;
+} PciBridgeInfoList;
+
+
+typedef struct PciDeviceInfo PciDeviceInfo;
+
+typedef struct PciDeviceInfoList
+{
+ union {
+ PciDeviceInfo *value;
+ uint64_t padding;
+ };
+ struct PciDeviceInfoList *next;
+} PciDeviceInfoList;
+
+
+typedef struct PciInfo PciInfo;
+
+typedef struct PciInfoList
+{
+ union {
+ PciInfo *value;
+ uint64_t padding;
+ };
+ struct PciInfoList *next;
+} PciInfoList;
+
+extern const char *BlockdevOnError_lookup[];
+typedef enum BlockdevOnError
+{
+ BLOCKDEV_ON_ERROR_REPORT = 0,
+ BLOCKDEV_ON_ERROR_IGNORE = 1,
+ BLOCKDEV_ON_ERROR_ENOSPC = 2,
+ BLOCKDEV_ON_ERROR_STOP = 3,
+ BLOCKDEV_ON_ERROR_MAX = 4,
+} BlockdevOnError;
+
+typedef struct BlockdevOnErrorList
+{
+ union {
+ BlockdevOnError value;
+ uint64_t padding;
+ };
+ struct BlockdevOnErrorList *next;
+} BlockdevOnErrorList;
+
+extern const char *MirrorSyncMode_lookup[];
+typedef enum MirrorSyncMode
+{
+ MIRROR_SYNC_MODE_TOP = 0,
+ MIRROR_SYNC_MODE_FULL = 1,
+ MIRROR_SYNC_MODE_NONE = 2,
+ MIRROR_SYNC_MODE_MAX = 3,
+} MirrorSyncMode;
+
+typedef struct MirrorSyncModeList
+{
+ union {
+ MirrorSyncMode value;
+ uint64_t padding;
+ };
+ struct MirrorSyncModeList *next;
+} MirrorSyncModeList;
+
+extern const char *BlockJobType_lookup[];
+typedef enum BlockJobType
+{
+ BLOCK_JOB_TYPE_COMMIT = 0,
+ BLOCK_JOB_TYPE_STREAM = 1,
+ BLOCK_JOB_TYPE_MIRROR = 2,
+ BLOCK_JOB_TYPE_BACKUP = 3,
+ BLOCK_JOB_TYPE_MAX = 4,
+} BlockJobType;
+
+typedef struct BlockJobTypeList
+{
+ union {
+ BlockJobType value;
+ uint64_t padding;
+ };
+ struct BlockJobTypeList *next;
+} BlockJobTypeList;
+
+
+typedef struct BlockJobInfo BlockJobInfo;
+
+typedef struct BlockJobInfoList
+{
+ union {
+ BlockJobInfo *value;
+ uint64_t padding;
+ };
+ struct BlockJobInfoList *next;
+} BlockJobInfoList;
+
+extern const char *NewImageMode_lookup[];
+typedef enum NewImageMode
+{
+ NEW_IMAGE_MODE_EXISTING = 0,
+ NEW_IMAGE_MODE_ABSOLUTE_PATHS = 1,
+ NEW_IMAGE_MODE_MAX = 2,
+} NewImageMode;
+
+typedef struct NewImageModeList
+{
+ union {
+ NewImageMode value;
+ uint64_t padding;
+ };
+ struct NewImageModeList *next;
+} NewImageModeList;
+
+
+typedef struct BlockdevSnapshot BlockdevSnapshot;
+
+typedef struct BlockdevSnapshotList
+{
+ union {
+ BlockdevSnapshot *value;
+ uint64_t padding;
+ };
+ struct BlockdevSnapshotList *next;
+} BlockdevSnapshotList;
+
+
+typedef struct BlockdevSnapshotInternal BlockdevSnapshotInternal;
+
+typedef struct BlockdevSnapshotInternalList
+{
+ union {
+ BlockdevSnapshotInternal *value;
+ uint64_t padding;
+ };
+ struct BlockdevSnapshotInternalList *next;
+} BlockdevSnapshotInternalList;
+
+
+typedef struct DriveBackup DriveBackup;
+
+typedef struct DriveBackupList
+{
+ union {
+ DriveBackup *value;
+ uint64_t padding;
+ };
+ struct DriveBackupList *next;
+} DriveBackupList;
+
+
+typedef struct Abort Abort;
+
+typedef struct AbortList
+{
+ union {
+ Abort *value;
+ uint64_t padding;
+ };
+ struct AbortList *next;
+} AbortList;
+
+
+typedef struct TransactionAction TransactionAction;
+
+typedef struct TransactionActionList
+{
+ union {
+ TransactionAction *value;
+ uint64_t padding;
+ };
+ struct TransactionActionList *next;
+} TransactionActionList;
+
+extern const char *TransactionActionKind_lookup[];
+typedef enum TransactionActionKind
+{
+ TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC = 0,
+ TRANSACTION_ACTION_KIND_DRIVE_BACKUP = 1,
+ TRANSACTION_ACTION_KIND_ABORT = 2,
+ TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC = 3,
+ TRANSACTION_ACTION_KIND_MAX = 4,
+} TransactionActionKind;
+
+
+typedef struct ObjectPropertyInfo ObjectPropertyInfo;
+
+typedef struct ObjectPropertyInfoList
+{
+ union {
+ ObjectPropertyInfo *value;
+ uint64_t padding;
+ };
+ struct ObjectPropertyInfoList *next;
+} ObjectPropertyInfoList;
+
+
+typedef struct ObjectTypeInfo ObjectTypeInfo;
+
+typedef struct ObjectTypeInfoList
+{
+ union {
+ ObjectTypeInfo *value;
+ uint64_t padding;
+ };
+ struct ObjectTypeInfoList *next;
+} ObjectTypeInfoList;
+
+
+typedef struct DevicePropertyInfo DevicePropertyInfo;
+
+typedef struct DevicePropertyInfoList
+{
+ union {
+ DevicePropertyInfo *value;
+ uint64_t padding;
+ };
+ struct DevicePropertyInfoList *next;
+} DevicePropertyInfoList;
+
+
+typedef struct NetdevNoneOptions NetdevNoneOptions;
+
+typedef struct NetdevNoneOptionsList
+{
+ union {
+ NetdevNoneOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevNoneOptionsList *next;
+} NetdevNoneOptionsList;
+
+
+typedef struct NetLegacyNicOptions NetLegacyNicOptions;
+
+typedef struct NetLegacyNicOptionsList
+{
+ union {
+ NetLegacyNicOptions *value;
+ uint64_t padding;
+ };
+ struct NetLegacyNicOptionsList *next;
+} NetLegacyNicOptionsList;
+
+
+typedef struct String String;
+
+typedef struct StringList
+{
+ union {
+ String *value;
+ uint64_t padding;
+ };
+ struct StringList *next;
+} StringList;
+
+
+typedef struct NetdevUserOptions NetdevUserOptions;
+
+typedef struct NetdevUserOptionsList
+{
+ union {
+ NetdevUserOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevUserOptionsList *next;
+} NetdevUserOptionsList;
+
+
+typedef struct NetdevTapOptions NetdevTapOptions;
+
+typedef struct NetdevTapOptionsList
+{
+ union {
+ NetdevTapOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevTapOptionsList *next;
+} NetdevTapOptionsList;
+
+
+typedef struct NetdevSocketOptions NetdevSocketOptions;
+
+typedef struct NetdevSocketOptionsList
+{
+ union {
+ NetdevSocketOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevSocketOptionsList *next;
+} NetdevSocketOptionsList;
+
+
+typedef struct NetdevVdeOptions NetdevVdeOptions;
+
+typedef struct NetdevVdeOptionsList
+{
+ union {
+ NetdevVdeOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevVdeOptionsList *next;
+} NetdevVdeOptionsList;
+
+
+typedef struct NetdevDumpOptions NetdevDumpOptions;
+
+typedef struct NetdevDumpOptionsList
+{
+ union {
+ NetdevDumpOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevDumpOptionsList *next;
+} NetdevDumpOptionsList;
+
+
+typedef struct NetdevBridgeOptions NetdevBridgeOptions;
+
+typedef struct NetdevBridgeOptionsList
+{
+ union {
+ NetdevBridgeOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevBridgeOptionsList *next;
+} NetdevBridgeOptionsList;
+
+
+typedef struct NetdevHubPortOptions NetdevHubPortOptions;
+
+typedef struct NetdevHubPortOptionsList
+{
+ union {
+ NetdevHubPortOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevHubPortOptionsList *next;
+} NetdevHubPortOptionsList;
+
+
+typedef struct NetdevNetmapOptions NetdevNetmapOptions;
+
+typedef struct NetdevNetmapOptionsList
+{
+ union {
+ NetdevNetmapOptions *value;
+ uint64_t padding;
+ };
+ struct NetdevNetmapOptionsList *next;
+} NetdevNetmapOptionsList;
+
+
+typedef struct NetClientOptions NetClientOptions;
+
+typedef struct NetClientOptionsList
+{
+ union {
+ NetClientOptions *value;
+ uint64_t padding;
+ };
+ struct NetClientOptionsList *next;
+} NetClientOptionsList;
+
+extern const char *NetClientOptionsKind_lookup[];
+typedef enum NetClientOptionsKind
+{
+ NET_CLIENT_OPTIONS_KIND_NONE = 0,
+ NET_CLIENT_OPTIONS_KIND_NIC = 1,
+ NET_CLIENT_OPTIONS_KIND_USER = 2,
+ NET_CLIENT_OPTIONS_KIND_TAP = 3,
+ NET_CLIENT_OPTIONS_KIND_SOCKET = 4,
+ NET_CLIENT_OPTIONS_KIND_VDE = 5,
+ NET_CLIENT_OPTIONS_KIND_DUMP = 6,
+ NET_CLIENT_OPTIONS_KIND_BRIDGE = 7,
+ NET_CLIENT_OPTIONS_KIND_HUBPORT = 8,
+ NET_CLIENT_OPTIONS_KIND_NETMAP = 9,
+ NET_CLIENT_OPTIONS_KIND_MAX = 10,
+} NetClientOptionsKind;
+
+
+typedef struct NetLegacy NetLegacy;
+
+typedef struct NetLegacyList
+{
+ union {
+ NetLegacy *value;
+ uint64_t padding;
+ };
+ struct NetLegacyList *next;
+} NetLegacyList;
+
+
+typedef struct Netdev Netdev;
+
+typedef struct NetdevList
+{
+ union {
+ Netdev *value;
+ uint64_t padding;
+ };
+ struct NetdevList *next;
+} NetdevList;
+
+
+typedef struct InetSocketAddress InetSocketAddress;
+
+typedef struct InetSocketAddressList
+{
+ union {
+ InetSocketAddress *value;
+ uint64_t padding;
+ };
+ struct InetSocketAddressList *next;
+} InetSocketAddressList;
+
+
+typedef struct UnixSocketAddress UnixSocketAddress;
+
+typedef struct UnixSocketAddressList
+{
+ union {
+ UnixSocketAddress *value;
+ uint64_t padding;
+ };
+ struct UnixSocketAddressList *next;
+} UnixSocketAddressList;
+
+
+typedef struct SocketAddress SocketAddress;
+
+typedef struct SocketAddressList
+{
+ union {
+ SocketAddress *value;
+ uint64_t padding;
+ };
+ struct SocketAddressList *next;
+} SocketAddressList;
+
+extern const char *SocketAddressKind_lookup[];
+typedef enum SocketAddressKind
+{
+ SOCKET_ADDRESS_KIND_INET = 0,
+ SOCKET_ADDRESS_KIND_UNIX = 1,
+ SOCKET_ADDRESS_KIND_FD = 2,
+ SOCKET_ADDRESS_KIND_MAX = 3,
+} SocketAddressKind;
+
+
+typedef struct MachineInfo MachineInfo;
+
+typedef struct MachineInfoList
+{
+ union {
+ MachineInfo *value;
+ uint64_t padding;
+ };
+ struct MachineInfoList *next;
+} MachineInfoList;
+
+
+typedef struct CpuDefinitionInfo CpuDefinitionInfo;
+
+typedef struct CpuDefinitionInfoList
+{
+ union {
+ CpuDefinitionInfo *value;
+ uint64_t padding;
+ };
+ struct CpuDefinitionInfoList *next;
+} CpuDefinitionInfoList;
+
+
+typedef struct AddfdInfo AddfdInfo;
+
+typedef struct AddfdInfoList
+{
+ union {
+ AddfdInfo *value;
+ uint64_t padding;
+ };
+ struct AddfdInfoList *next;
+} AddfdInfoList;
+
+
+typedef struct FdsetFdInfo FdsetFdInfo;
+
+typedef struct FdsetFdInfoList
+{
+ union {
+ FdsetFdInfo *value;
+ uint64_t padding;
+ };
+ struct FdsetFdInfoList *next;
+} FdsetFdInfoList;
+
+
+typedef struct FdsetInfo FdsetInfo;
+
+typedef struct FdsetInfoList
+{
+ union {
+ FdsetInfo *value;
+ uint64_t padding;
+ };
+ struct FdsetInfoList *next;
+} FdsetInfoList;
+
+
+typedef struct TargetInfo TargetInfo;
+
+typedef struct TargetInfoList
+{
+ union {
+ TargetInfo *value;
+ uint64_t padding;
+ };
+ struct TargetInfoList *next;
+} TargetInfoList;
+
+extern const char *QKeyCode_lookup[];
+typedef enum QKeyCode
+{
+ Q_KEY_CODE_SHIFT = 0,
+ Q_KEY_CODE_SHIFT_R = 1,
+ Q_KEY_CODE_ALT = 2,
+ Q_KEY_CODE_ALT_R = 3,
+ Q_KEY_CODE_ALTGR = 4,
+ Q_KEY_CODE_ALTGR_R = 5,
+ Q_KEY_CODE_CTRL = 6,
+ Q_KEY_CODE_CTRL_R = 7,
+ Q_KEY_CODE_MENU = 8,
+ Q_KEY_CODE_ESC = 9,
+ Q_KEY_CODE_1 = 10,
+ Q_KEY_CODE_2 = 11,
+ Q_KEY_CODE_3 = 12,
+ Q_KEY_CODE_4 = 13,
+ Q_KEY_CODE_5 = 14,
+ Q_KEY_CODE_6 = 15,
+ Q_KEY_CODE_7 = 16,
+ Q_KEY_CODE_8 = 17,
+ Q_KEY_CODE_9 = 18,
+ Q_KEY_CODE_0 = 19,
+ Q_KEY_CODE_MINUS = 20,
+ Q_KEY_CODE_EQUAL = 21,
+ Q_KEY_CODE_BACKSPACE = 22,
+ Q_KEY_CODE_TAB = 23,
+ Q_KEY_CODE_Q = 24,
+ Q_KEY_CODE_W = 25,
+ Q_KEY_CODE_E = 26,
+ Q_KEY_CODE_R = 27,
+ Q_KEY_CODE_T = 28,
+ Q_KEY_CODE_Y = 29,
+ Q_KEY_CODE_U = 30,
+ Q_KEY_CODE_I = 31,
+ Q_KEY_CODE_O = 32,
+ Q_KEY_CODE_P = 33,
+ Q_KEY_CODE_BRACKET_LEFT = 34,
+ Q_KEY_CODE_BRACKET_RIGHT = 35,
+ Q_KEY_CODE_RET = 36,
+ Q_KEY_CODE_A = 37,
+ Q_KEY_CODE_S = 38,
+ Q_KEY_CODE_D = 39,
+ Q_KEY_CODE_F = 40,
+ Q_KEY_CODE_G = 41,
+ Q_KEY_CODE_H = 42,
+ Q_KEY_CODE_J = 43,
+ Q_KEY_CODE_K = 44,
+ Q_KEY_CODE_L = 45,
+ Q_KEY_CODE_SEMICOLON = 46,
+ Q_KEY_CODE_APOSTROPHE = 47,
+ Q_KEY_CODE_GRAVE_ACCENT = 48,
+ Q_KEY_CODE_BACKSLASH = 49,
+ Q_KEY_CODE_Z = 50,
+ Q_KEY_CODE_X = 51,
+ Q_KEY_CODE_C = 52,
+ Q_KEY_CODE_V = 53,
+ Q_KEY_CODE_B = 54,
+ Q_KEY_CODE_N = 55,
+ Q_KEY_CODE_M = 56,
+ Q_KEY_CODE_COMMA = 57,
+ Q_KEY_CODE_DOT = 58,
+ Q_KEY_CODE_SLASH = 59,
+ Q_KEY_CODE_ASTERISK = 60,
+ Q_KEY_CODE_SPC = 61,
+ Q_KEY_CODE_CAPS_LOCK = 62,
+ Q_KEY_CODE_F1 = 63,
+ Q_KEY_CODE_F2 = 64,
+ Q_KEY_CODE_F3 = 65,
+ Q_KEY_CODE_F4 = 66,
+ Q_KEY_CODE_F5 = 67,
+ Q_KEY_CODE_F6 = 68,
+ Q_KEY_CODE_F7 = 69,
+ Q_KEY_CODE_F8 = 70,
+ Q_KEY_CODE_F9 = 71,
+ Q_KEY_CODE_F10 = 72,
+ Q_KEY_CODE_NUM_LOCK = 73,
+ Q_KEY_CODE_SCROLL_LOCK = 74,
+ Q_KEY_CODE_KP_DIVIDE = 75,
+ Q_KEY_CODE_KP_MULTIPLY = 76,
+ Q_KEY_CODE_KP_SUBTRACT = 77,
+ Q_KEY_CODE_KP_ADD = 78,
+ Q_KEY_CODE_KP_ENTER = 79,
+ Q_KEY_CODE_KP_DECIMAL = 80,
+ Q_KEY_CODE_SYSRQ = 81,
+ Q_KEY_CODE_KP_0 = 82,
+ Q_KEY_CODE_KP_1 = 83,
+ Q_KEY_CODE_KP_2 = 84,
+ Q_KEY_CODE_KP_3 = 85,
+ Q_KEY_CODE_KP_4 = 86,
+ Q_KEY_CODE_KP_5 = 87,
+ Q_KEY_CODE_KP_6 = 88,
+ Q_KEY_CODE_KP_7 = 89,
+ Q_KEY_CODE_KP_8 = 90,
+ Q_KEY_CODE_KP_9 = 91,
+ Q_KEY_CODE_LESS = 92,
+ Q_KEY_CODE_F11 = 93,
+ Q_KEY_CODE_F12 = 94,
+ Q_KEY_CODE_PRINT = 95,
+ Q_KEY_CODE_HOME = 96,
+ Q_KEY_CODE_PGUP = 97,
+ Q_KEY_CODE_PGDN = 98,
+ Q_KEY_CODE_END = 99,
+ Q_KEY_CODE_LEFT = 100,
+ Q_KEY_CODE_UP = 101,
+ Q_KEY_CODE_DOWN = 102,
+ Q_KEY_CODE_RIGHT = 103,
+ Q_KEY_CODE_INSERT = 104,
+ Q_KEY_CODE_DELETE = 105,
+ Q_KEY_CODE_STOP = 106,
+ Q_KEY_CODE_AGAIN = 107,
+ Q_KEY_CODE_PROPS = 108,
+ Q_KEY_CODE_UNDO = 109,
+ Q_KEY_CODE_FRONT = 110,
+ Q_KEY_CODE_COPY = 111,
+ Q_KEY_CODE_OPEN = 112,
+ Q_KEY_CODE_PASTE = 113,
+ Q_KEY_CODE_FIND = 114,
+ Q_KEY_CODE_CUT = 115,
+ Q_KEY_CODE_LF = 116,
+ Q_KEY_CODE_HELP = 117,
+ Q_KEY_CODE_META_L = 118,
+ Q_KEY_CODE_META_R = 119,
+ Q_KEY_CODE_COMPOSE = 120,
+ Q_KEY_CODE_MAX = 121,
+} QKeyCode;
+
+typedef struct QKeyCodeList
+{
+ union {
+ QKeyCode value;
+ uint64_t padding;
+ };
+ struct QKeyCodeList *next;
+} QKeyCodeList;
+
+
+typedef struct KeyValue KeyValue;
+
+typedef struct KeyValueList
+{
+ union {
+ KeyValue *value;
+ uint64_t padding;
+ };
+ struct KeyValueList *next;
+} KeyValueList;
+
+extern const char *KeyValueKind_lookup[];
+typedef enum KeyValueKind
+{
+ KEY_VALUE_KIND_NUMBER = 0,
+ KEY_VALUE_KIND_QCODE = 1,
+ KEY_VALUE_KIND_MAX = 2,
+} KeyValueKind;
+
+
+typedef struct ChardevFile ChardevFile;
+
+typedef struct ChardevFileList
+{
+ union {
+ ChardevFile *value;
+ uint64_t padding;
+ };
+ struct ChardevFileList *next;
+} ChardevFileList;
+
+
+typedef struct ChardevHostdev ChardevHostdev;
+
+typedef struct ChardevHostdevList
+{
+ union {
+ ChardevHostdev *value;
+ uint64_t padding;
+ };
+ struct ChardevHostdevList *next;
+} ChardevHostdevList;
+
+
+typedef struct ChardevSocket ChardevSocket;
+
+typedef struct ChardevSocketList
+{
+ union {
+ ChardevSocket *value;
+ uint64_t padding;
+ };
+ struct ChardevSocketList *next;
+} ChardevSocketList;
+
+
+typedef struct ChardevUdp ChardevUdp;
+
+typedef struct ChardevUdpList
+{
+ union {
+ ChardevUdp *value;
+ uint64_t padding;
+ };
+ struct ChardevUdpList *next;
+} ChardevUdpList;
+
+
+typedef struct ChardevMux ChardevMux;
+
+typedef struct ChardevMuxList
+{
+ union {
+ ChardevMux *value;
+ uint64_t padding;
+ };
+ struct ChardevMuxList *next;
+} ChardevMuxList;
+
+
+typedef struct ChardevStdio ChardevStdio;
+
+typedef struct ChardevStdioList
+{
+ union {
+ ChardevStdio *value;
+ uint64_t padding;
+ };
+ struct ChardevStdioList *next;
+} ChardevStdioList;
+
+
+typedef struct ChardevSpiceChannel ChardevSpiceChannel;
+
+typedef struct ChardevSpiceChannelList
+{
+ union {
+ ChardevSpiceChannel *value;
+ uint64_t padding;
+ };
+ struct ChardevSpiceChannelList *next;
+} ChardevSpiceChannelList;
+
+
+typedef struct ChardevSpicePort ChardevSpicePort;
+
+typedef struct ChardevSpicePortList
+{
+ union {
+ ChardevSpicePort *value;
+ uint64_t padding;
+ };
+ struct ChardevSpicePortList *next;
+} ChardevSpicePortList;
+
+
+typedef struct ChardevVC ChardevVC;
+
+typedef struct ChardevVCList
+{
+ union {
+ ChardevVC *value;
+ uint64_t padding;
+ };
+ struct ChardevVCList *next;
+} ChardevVCList;
+
+
+typedef struct ChardevRingbuf ChardevRingbuf;
+
+typedef struct ChardevRingbufList
+{
+ union {
+ ChardevRingbuf *value;
+ uint64_t padding;
+ };
+ struct ChardevRingbufList *next;
+} ChardevRingbufList;
+
+
+typedef struct ChardevDummy ChardevDummy;
+
+typedef struct ChardevDummyList
+{
+ union {
+ ChardevDummy *value;
+ uint64_t padding;
+ };
+ struct ChardevDummyList *next;
+} ChardevDummyList;
+
+
+typedef struct ChardevBackend ChardevBackend;
+
+typedef struct ChardevBackendList
+{
+ union {
+ ChardevBackend *value;
+ uint64_t padding;
+ };
+ struct ChardevBackendList *next;
+} ChardevBackendList;
+
+extern const char *ChardevBackendKind_lookup[];
+typedef enum ChardevBackendKind
+{
+ CHARDEV_BACKEND_KIND_FILE = 0,
+ CHARDEV_BACKEND_KIND_SERIAL = 1,
+ CHARDEV_BACKEND_KIND_PARALLEL = 2,
+ CHARDEV_BACKEND_KIND_PIPE = 3,
+ CHARDEV_BACKEND_KIND_SOCKET = 4,
+ CHARDEV_BACKEND_KIND_UDP = 5,
+ CHARDEV_BACKEND_KIND_PTY = 6,
+ CHARDEV_BACKEND_KIND_NULL = 7,
+ CHARDEV_BACKEND_KIND_MUX = 8,
+ CHARDEV_BACKEND_KIND_MSMOUSE = 9,
+ CHARDEV_BACKEND_KIND_BRAILLE = 10,
+ CHARDEV_BACKEND_KIND_STDIO = 11,
+ CHARDEV_BACKEND_KIND_CONSOLE = 12,
+ CHARDEV_BACKEND_KIND_SPICEVMC = 13,
+ CHARDEV_BACKEND_KIND_SPICEPORT = 14,
+ CHARDEV_BACKEND_KIND_VC = 15,
+ CHARDEV_BACKEND_KIND_RINGBUF = 16,
+ CHARDEV_BACKEND_KIND_MEMORY = 17,
+ CHARDEV_BACKEND_KIND_MAX = 18,
+} ChardevBackendKind;
+
+
+typedef struct ChardevReturn ChardevReturn;
+
+typedef struct ChardevReturnList
+{
+ union {
+ ChardevReturn *value;
+ uint64_t padding;
+ };
+ struct ChardevReturnList *next;
+} ChardevReturnList;
+
+extern const char *TpmModel_lookup[];
+typedef enum TpmModel
+{
+ TPM_MODEL_TPM_TIS = 0,
+ TPM_MODEL_MAX = 1,
+} TpmModel;
+
+typedef struct TpmModelList
+{
+ union {
+ TpmModel value;
+ uint64_t padding;
+ };
+ struct TpmModelList *next;
+} TpmModelList;
+
+extern const char *TpmType_lookup[];
+typedef enum TpmType
+{
+ TPM_TYPE_PASSTHROUGH = 0,
+ TPM_TYPE_MAX = 1,
+} TpmType;
+
+typedef struct TpmTypeList
+{
+ union {
+ TpmType value;
+ uint64_t padding;
+ };
+ struct TpmTypeList *next;
+} TpmTypeList;
+
+
+typedef struct TPMPassthroughOptions TPMPassthroughOptions;
+
+typedef struct TPMPassthroughOptionsList
+{
+ union {
+ TPMPassthroughOptions *value;
+ uint64_t padding;
+ };
+ struct TPMPassthroughOptionsList *next;
+} TPMPassthroughOptionsList;
+
+
+typedef struct TpmTypeOptions TpmTypeOptions;
+
+typedef struct TpmTypeOptionsList
+{
+ union {
+ TpmTypeOptions *value;
+ uint64_t padding;
+ };
+ struct TpmTypeOptionsList *next;
+} TpmTypeOptionsList;
+
+extern const char *TpmTypeOptionsKind_lookup[];
+typedef enum TpmTypeOptionsKind
+{
+ TPM_TYPE_OPTIONS_KIND_PASSTHROUGH = 0,
+ TPM_TYPE_OPTIONS_KIND_MAX = 1,
+} TpmTypeOptionsKind;
+
+
+typedef struct TPMInfo TPMInfo;
+
+typedef struct TPMInfoList
+{
+ union {
+ TPMInfo *value;
+ uint64_t padding;
+ };
+ struct TPMInfoList *next;
+} TPMInfoList;
+
+
+typedef struct AcpiTableOptions AcpiTableOptions;
+
+typedef struct AcpiTableOptionsList
+{
+ union {
+ AcpiTableOptions *value;
+ uint64_t padding;
+ };
+ struct AcpiTableOptionsList *next;
+} AcpiTableOptionsList;
+
+extern const char *CommandLineParameterType_lookup[];
+typedef enum CommandLineParameterType
+{
+ COMMAND_LINE_PARAMETER_TYPE_STRING = 0,
+ COMMAND_LINE_PARAMETER_TYPE_BOOLEAN = 1,
+ COMMAND_LINE_PARAMETER_TYPE_NUMBER = 2,
+ COMMAND_LINE_PARAMETER_TYPE_SIZE = 3,
+ COMMAND_LINE_PARAMETER_TYPE_MAX = 4,
+} CommandLineParameterType;
+
+typedef struct CommandLineParameterTypeList
+{
+ union {
+ CommandLineParameterType value;
+ uint64_t padding;
+ };
+ struct CommandLineParameterTypeList *next;
+} CommandLineParameterTypeList;
+
+
+typedef struct CommandLineParameterInfo CommandLineParameterInfo;
+
+typedef struct CommandLineParameterInfoList
+{
+ union {
+ CommandLineParameterInfo *value;
+ uint64_t padding;
+ };
+ struct CommandLineParameterInfoList *next;
+} CommandLineParameterInfoList;
+
+
+typedef struct CommandLineOptionInfo CommandLineOptionInfo;
+
+typedef struct CommandLineOptionInfoList
+{
+ union {
+ CommandLineOptionInfo *value;
+ uint64_t padding;
+ };
+ struct CommandLineOptionInfoList *next;
+} CommandLineOptionInfoList;
+
+extern const char *X86CPURegister32_lookup[];
+typedef enum X86CPURegister32
+{
+ X86_C_P_U_REGISTER32_EAX = 0,
+ X86_C_P_U_REGISTER32_EBX = 1,
+ X86_C_P_U_REGISTER32_ECX = 2,
+ X86_C_P_U_REGISTER32_EDX = 3,
+ X86_C_P_U_REGISTER32_ESP = 4,
+ X86_C_P_U_REGISTER32_EBP = 5,
+ X86_C_P_U_REGISTER32_ESI = 6,
+ X86_C_P_U_REGISTER32_EDI = 7,
+ X86_C_P_U_REGISTER32_MAX = 8,
+} X86CPURegister32;
+
+typedef struct X86CPURegister32List
+{
+ union {
+ X86CPURegister32 value;
+ uint64_t padding;
+ };
+ struct X86CPURegister32List *next;
+} X86CPURegister32List;
+
+
+typedef struct X86CPUFeatureWordInfo X86CPUFeatureWordInfo;
+
+typedef struct X86CPUFeatureWordInfoList
+{
+ union {
+ X86CPUFeatureWordInfo *value;
+ uint64_t padding;
+ };
+ struct X86CPUFeatureWordInfoList *next;
+} X86CPUFeatureWordInfoList;
+
+extern const char *RxState_lookup[];
+typedef enum RxState
+{
+ RX_STATE_NORMAL = 0,
+ RX_STATE_NONE = 1,
+ RX_STATE_ALL = 2,
+ RX_STATE_MAX = 3,
+} RxState;
+
+typedef struct RxStateList
+{
+ union {
+ RxState value;
+ uint64_t padding;
+ };
+ struct RxStateList *next;
+} RxStateList;
+
+
+typedef struct RxFilterInfo RxFilterInfo;
+
+typedef struct RxFilterInfoList
+{
+ union {
+ RxFilterInfo *value;
+ uint64_t padding;
+ };
+ struct RxFilterInfoList *next;
+} RxFilterInfoList;
+
+extern const char *BlockdevDiscardOptions_lookup[];
+typedef enum BlockdevDiscardOptions
+{
+ BLOCKDEV_DISCARD_OPTIONS_IGNORE = 0,
+ BLOCKDEV_DISCARD_OPTIONS_UNMAP = 1,
+ BLOCKDEV_DISCARD_OPTIONS_MAX = 2,
+} BlockdevDiscardOptions;
+
+typedef struct BlockdevDiscardOptionsList
+{
+ union {
+ BlockdevDiscardOptions value;
+ uint64_t padding;
+ };
+ struct BlockdevDiscardOptionsList *next;
+} BlockdevDiscardOptionsList;
+
+extern const char *BlockdevAioOptions_lookup[];
+typedef enum BlockdevAioOptions
+{
+ BLOCKDEV_AIO_OPTIONS_THREADS = 0,
+ BLOCKDEV_AIO_OPTIONS_NATIVE = 1,
+ BLOCKDEV_AIO_OPTIONS_MAX = 2,
+} BlockdevAioOptions;
+
+typedef struct BlockdevAioOptionsList
+{
+ union {
+ BlockdevAioOptions value;
+ uint64_t padding;
+ };
+ struct BlockdevAioOptionsList *next;
+} BlockdevAioOptionsList;
+
+
+typedef struct BlockdevCacheOptions BlockdevCacheOptions;
+
+typedef struct BlockdevCacheOptionsList
+{
+ union {
+ BlockdevCacheOptions *value;
+ uint64_t padding;
+ };
+ struct BlockdevCacheOptionsList *next;
+} BlockdevCacheOptionsList;
+
+
+typedef struct BlockdevOptionsBase BlockdevOptionsBase;
+
+typedef struct BlockdevOptionsBaseList
+{
+ union {
+ BlockdevOptionsBase *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsBaseList *next;
+} BlockdevOptionsBaseList;
+
+
+typedef struct BlockdevOptionsFile BlockdevOptionsFile;
+
+typedef struct BlockdevOptionsFileList
+{
+ union {
+ BlockdevOptionsFile *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsFileList *next;
+} BlockdevOptionsFileList;
+
+
+typedef struct BlockdevOptionsVVFAT BlockdevOptionsVVFAT;
+
+typedef struct BlockdevOptionsVVFATList
+{
+ union {
+ BlockdevOptionsVVFAT *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsVVFATList *next;
+} BlockdevOptionsVVFATList;
+
+
+typedef struct BlockdevOptionsGenericFormat BlockdevOptionsGenericFormat;
+
+typedef struct BlockdevOptionsGenericFormatList
+{
+ union {
+ BlockdevOptionsGenericFormat *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsGenericFormatList *next;
+} BlockdevOptionsGenericFormatList;
+
+
+typedef struct BlockdevOptionsGenericCOWFormat BlockdevOptionsGenericCOWFormat;
+
+typedef struct BlockdevOptionsGenericCOWFormatList
+{
+ union {
+ BlockdevOptionsGenericCOWFormat *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsGenericCOWFormatList *next;
+} BlockdevOptionsGenericCOWFormatList;
+
+
+typedef struct BlockdevOptionsQcow2 BlockdevOptionsQcow2;
+
+typedef struct BlockdevOptionsQcow2List
+{
+ union {
+ BlockdevOptionsQcow2 *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsQcow2List *next;
+} BlockdevOptionsQcow2List;
+
+
+typedef struct BlockdevOptions BlockdevOptions;
+
+typedef struct BlockdevOptionsList
+{
+ union {
+ BlockdevOptions *value;
+ uint64_t padding;
+ };
+ struct BlockdevOptionsList *next;
+} BlockdevOptionsList;
+
+extern const char *BlockdevOptionsKind_lookup[];
+typedef enum BlockdevOptionsKind
+{
+ BLOCKDEV_OPTIONS_KIND_FILE = 0,
+ BLOCKDEV_OPTIONS_KIND_HTTP = 1,
+ BLOCKDEV_OPTIONS_KIND_HTTPS = 2,
+ BLOCKDEV_OPTIONS_KIND_FTP = 3,
+ BLOCKDEV_OPTIONS_KIND_FTPS = 4,
+ BLOCKDEV_OPTIONS_KIND_TFTP = 5,
+ BLOCKDEV_OPTIONS_KIND_VVFAT = 6,
+ BLOCKDEV_OPTIONS_KIND_BOCHS = 7,
+ BLOCKDEV_OPTIONS_KIND_CLOOP = 8,
+ BLOCKDEV_OPTIONS_KIND_COW = 9,
+ BLOCKDEV_OPTIONS_KIND_DMG = 10,
+ BLOCKDEV_OPTIONS_KIND_PARALLELS = 11,
+ BLOCKDEV_OPTIONS_KIND_QCOW = 12,
+ BLOCKDEV_OPTIONS_KIND_QCOW2 = 13,
+ BLOCKDEV_OPTIONS_KIND_QED = 14,
+ BLOCKDEV_OPTIONS_KIND_RAW = 15,
+ BLOCKDEV_OPTIONS_KIND_VDI = 16,
+ BLOCKDEV_OPTIONS_KIND_VHDX = 17,
+ BLOCKDEV_OPTIONS_KIND_VMDK = 18,
+ BLOCKDEV_OPTIONS_KIND_VPC = 19,
+ BLOCKDEV_OPTIONS_KIND_MAX = 20,
+} BlockdevOptionsKind;
+
+
+typedef struct BlockdevRef BlockdevRef;
+
+typedef struct BlockdevRefList
+{
+ union {
+ BlockdevRef *value;
+ uint64_t padding;
+ };
+ struct BlockdevRefList *next;
+} BlockdevRefList;
+
+extern const char *BlockdevRefKind_lookup[];
+typedef enum BlockdevRefKind
+{
+ BLOCKDEV_REF_KIND_DEFINITION = 0,
+ BLOCKDEV_REF_KIND_REFERENCE = 1,
+ BLOCKDEV_REF_KIND_MAX = 2,
+} BlockdevRefKind;
+
+#ifndef QAPI_TYPES_BUILTIN_CLEANUP_DECL_H
+#define QAPI_TYPES_BUILTIN_CLEANUP_DECL_H
+
+void qapi_free_strList(strList * obj);
+void qapi_free_intList(intList * obj);
+void qapi_free_numberList(numberList * obj);
+void qapi_free_boolList(boolList * obj);
+void qapi_free_int8List(int8List * obj);
+void qapi_free_int16List(int16List * obj);
+void qapi_free_int32List(int32List * obj);
+void qapi_free_int64List(int64List * obj);
+void qapi_free_uint8List(uint8List * obj);
+void qapi_free_uint16List(uint16List * obj);
+void qapi_free_uint32List(uint32List * obj);
+void qapi_free_uint64List(uint64List * obj);
+
+#endif /* QAPI_TYPES_BUILTIN_CLEANUP_DECL_H */
+
+
+void qapi_free_ErrorClassList(ErrorClassList * obj);
+
+struct NameInfo
+{
+ bool has_name;
+ char * name;
+};
+
+void qapi_free_NameInfoList(NameInfoList * obj);
+void qapi_free_NameInfo(NameInfo * obj);
+
+struct VersionInfo
+{
+ struct
+ {
+ int64_t major;
+ int64_t minor;
+ int64_t micro;
+ } qemu;
+ char * package;
+};
+
+void qapi_free_VersionInfoList(VersionInfoList * obj);
+void qapi_free_VersionInfo(VersionInfo * obj);
+
+struct KvmInfo
+{
+ bool enabled;
+ bool present;
+};
+
+void qapi_free_KvmInfoList(KvmInfoList * obj);
+void qapi_free_KvmInfo(KvmInfo * obj);
+
+void qapi_free_RunStateList(RunStateList * obj);
+
+struct SnapshotInfo
+{
+ char * id;
+ char * name;
+ int64_t vm_state_size;
+ int64_t date_sec;
+ int64_t date_nsec;
+ int64_t vm_clock_sec;
+ int64_t vm_clock_nsec;
+};
+
+void qapi_free_SnapshotInfoList(SnapshotInfoList * obj);
+void qapi_free_SnapshotInfo(SnapshotInfo * obj);
+
+struct ImageInfoSpecificQCow2
+{
+ char * compat;
+ bool has_lazy_refcounts;
+ bool lazy_refcounts;
+};
+
+void qapi_free_ImageInfoSpecificQCow2List(ImageInfoSpecificQCow2List * obj);
+void qapi_free_ImageInfoSpecificQCow2(ImageInfoSpecificQCow2 * obj);
+
+struct ImageInfoSpecificVmdk
+{
+ char * create_type;
+ int64_t cid;
+ int64_t parent_cid;
+ ImageInfoList * extents;
+};
+
+void qapi_free_ImageInfoSpecificVmdkList(ImageInfoSpecificVmdkList * obj);
+void qapi_free_ImageInfoSpecificVmdk(ImageInfoSpecificVmdk * obj);
+
+struct ImageInfoSpecific
+{
+ ImageInfoSpecificKind kind;
+ union {
+ void *data;
+ ImageInfoSpecificQCow2 * qcow2;
+ ImageInfoSpecificVmdk * vmdk;
+ };
+};
+void qapi_free_ImageInfoSpecificList(ImageInfoSpecificList * obj);
+void qapi_free_ImageInfoSpecific(ImageInfoSpecific * obj);
+
+struct ImageInfo
+{
+ char * filename;
+ char * format;
+ bool has_dirty_flag;
+ bool dirty_flag;
+ bool has_actual_size;
+ int64_t actual_size;
+ int64_t virtual_size;
+ bool has_cluster_size;
+ int64_t cluster_size;
+ bool has_encrypted;
+ bool encrypted;
+ bool has_compressed;
+ bool compressed;
+ bool has_backing_filename;
+ char * backing_filename;
+ bool has_full_backing_filename;
+ char * full_backing_filename;
+ bool has_backing_filename_format;
+ char * backing_filename_format;
+ bool has_snapshots;
+ SnapshotInfoList * snapshots;
+ bool has_backing_image;
+ ImageInfo * backing_image;
+ bool has_format_specific;
+ ImageInfoSpecific * format_specific;
+};
+
+void qapi_free_ImageInfoList(ImageInfoList * obj);
+void qapi_free_ImageInfo(ImageInfo * obj);
+
+struct ImageCheck
+{
+ char * filename;
+ char * format;
+ int64_t check_errors;
+ bool has_image_end_offset;
+ int64_t image_end_offset;
+ bool has_corruptions;
+ int64_t corruptions;
+ bool has_leaks;
+ int64_t leaks;
+ bool has_corruptions_fixed;
+ int64_t corruptions_fixed;
+ bool has_leaks_fixed;
+ int64_t leaks_fixed;
+ bool has_total_clusters;
+ int64_t total_clusters;
+ bool has_allocated_clusters;
+ int64_t allocated_clusters;
+ bool has_fragmented_clusters;
+ int64_t fragmented_clusters;
+ bool has_compressed_clusters;
+ int64_t compressed_clusters;
+};
+
+void qapi_free_ImageCheckList(ImageCheckList * obj);
+void qapi_free_ImageCheck(ImageCheck * obj);
+
+struct StatusInfo
+{
+ bool running;
+ bool singlestep;
+ RunState status;
+};
+
+void qapi_free_StatusInfoList(StatusInfoList * obj);
+void qapi_free_StatusInfo(StatusInfo * obj);
+
+struct UuidInfo
+{
+ char * UUID;
+};
+
+void qapi_free_UuidInfoList(UuidInfoList * obj);
+void qapi_free_UuidInfo(UuidInfo * obj);
+
+struct ChardevInfo
+{
+ char * label;
+ char * filename;
+};
+
+void qapi_free_ChardevInfoList(ChardevInfoList * obj);
+void qapi_free_ChardevInfo(ChardevInfo * obj);
+
+void qapi_free_DataFormatList(DataFormatList * obj);
+
+struct CommandInfo
+{
+ char * name;
+};
+
+void qapi_free_CommandInfoList(CommandInfoList * obj);
+void qapi_free_CommandInfo(CommandInfo * obj);
+
+struct EventInfo
+{
+ char * name;
+};
+
+void qapi_free_EventInfoList(EventInfoList * obj);
+void qapi_free_EventInfo(EventInfo * obj);
+
+struct MigrationStats
+{
+ int64_t transferred;
+ int64_t remaining;
+ int64_t total;
+ int64_t duplicate;
+ int64_t skipped;
+ int64_t normal;
+ int64_t normal_bytes;
+ int64_t dirty_pages_rate;
+ double mbps;
+};
+
+void qapi_free_MigrationStatsList(MigrationStatsList * obj);
+void qapi_free_MigrationStats(MigrationStats * obj);
+
+struct XBZRLECacheStats
+{
+ int64_t cache_size;
+ int64_t bytes;
+ int64_t pages;
+ int64_t cache_miss;
+ int64_t overflow;
+};
+
+void qapi_free_XBZRLECacheStatsList(XBZRLECacheStatsList * obj);
+void qapi_free_XBZRLECacheStats(XBZRLECacheStats * obj);
+
+struct MigrationInfo
+{
+ bool has_status;
+ char * status;
+ bool has_ram;
+ MigrationStats * ram;
+ bool has_disk;
+ MigrationStats * disk;
+ bool has_xbzrle_cache;
+ XBZRLECacheStats * xbzrle_cache;
+ bool has_total_time;
+ int64_t total_time;
+ bool has_expected_downtime;
+ int64_t expected_downtime;
+ bool has_downtime;
+ int64_t downtime;
+ bool has_setup_time;
+ int64_t setup_time;
+};
+
+void qapi_free_MigrationInfoList(MigrationInfoList * obj);
+void qapi_free_MigrationInfo(MigrationInfo * obj);
+
+void qapi_free_MigrationCapabilityList(MigrationCapabilityList * obj);
+
+struct MigrationCapabilityStatus
+{
+ MigrationCapability capability;
+ bool state;
+};
+
+void qapi_free_MigrationCapabilityStatusList(MigrationCapabilityStatusList * obj);
+void qapi_free_MigrationCapabilityStatus(MigrationCapabilityStatus * obj);
+
+struct MouseInfo
+{
+ char * name;
+ int64_t index;
+ bool current;
+ bool absolute;
+};
+
+void qapi_free_MouseInfoList(MouseInfoList * obj);
+void qapi_free_MouseInfo(MouseInfo * obj);
+
+struct CpuInfo
+{
+ int64_t CPU;
+ bool current;
+ bool halted;
+ bool has_pc;
+ int64_t pc;
+ bool has_nip;
+ int64_t nip;
+ bool has_npc;
+ int64_t npc;
+ bool has_PC;
+ int64_t PC;
+ int64_t thread_id;
+};
+
+void qapi_free_CpuInfoList(CpuInfoList * obj);
+void qapi_free_CpuInfo(CpuInfo * obj);
+
+struct BlockDeviceInfo
+{
+ char * file;
+ bool ro;
+ char * drv;
+ bool has_backing_file;
+ char * backing_file;
+ int64_t backing_file_depth;
+ bool encrypted;
+ bool encryption_key_missing;
+ int64_t bps;
+ int64_t bps_rd;
+ int64_t bps_wr;
+ int64_t iops;
+ int64_t iops_rd;
+ int64_t iops_wr;
+ ImageInfo * image;
+ bool has_bps_max;
+ int64_t bps_max;
+ bool has_bps_rd_max;
+ int64_t bps_rd_max;
+ bool has_bps_wr_max;
+ int64_t bps_wr_max;
+ bool has_iops_max;
+ int64_t iops_max;
+ bool has_iops_rd_max;
+ int64_t iops_rd_max;
+ bool has_iops_wr_max;
+ int64_t iops_wr_max;
+ bool has_iops_size;
+ int64_t iops_size;
+};
+
+void qapi_free_BlockDeviceInfoList(BlockDeviceInfoList * obj);
+void qapi_free_BlockDeviceInfo(BlockDeviceInfo * obj);
+
+void qapi_free_BlockDeviceIoStatusList(BlockDeviceIoStatusList * obj);
+
+struct BlockDeviceMapEntry
+{
+ int64_t start;
+ int64_t length;
+ int64_t depth;
+ bool zero;
+ bool data;
+ bool has_offset;
+ int64_t offset;
+};
+
+void qapi_free_BlockDeviceMapEntryList(BlockDeviceMapEntryList * obj);
+void qapi_free_BlockDeviceMapEntry(BlockDeviceMapEntry * obj);
+
+struct BlockDirtyInfo
+{
+ int64_t count;
+ int64_t granularity;
+};
+
+void qapi_free_BlockDirtyInfoList(BlockDirtyInfoList * obj);
+void qapi_free_BlockDirtyInfo(BlockDirtyInfo * obj);
+
+struct BlockInfo
+{
+ char * device;
+ char * type;
+ bool removable;
+ bool locked;
+ bool has_inserted;
+ BlockDeviceInfo * inserted;
+ bool has_tray_open;
+ bool tray_open;
+ bool has_io_status;
+ BlockDeviceIoStatus io_status;
+ bool has_dirty_bitmaps;
+ BlockDirtyInfoList * dirty_bitmaps;
+};
+
+void qapi_free_BlockInfoList(BlockInfoList * obj);
+void qapi_free_BlockInfo(BlockInfo * obj);
+
+struct BlockDeviceStats
+{
+ int64_t rd_bytes;
+ int64_t wr_bytes;
+ int64_t rd_operations;
+ int64_t wr_operations;
+ int64_t flush_operations;
+ int64_t flush_total_time_ns;
+ int64_t wr_total_time_ns;
+ int64_t rd_total_time_ns;
+ int64_t wr_highest_offset;
+};
+
+void qapi_free_BlockDeviceStatsList(BlockDeviceStatsList * obj);
+void qapi_free_BlockDeviceStats(BlockDeviceStats * obj);
+
+struct BlockStats
+{
+ bool has_device;
+ char * device;
+ BlockDeviceStats * stats;
+ bool has_parent;
+ BlockStats * parent;
+};
+
+void qapi_free_BlockStatsList(BlockStatsList * obj);
+void qapi_free_BlockStats(BlockStats * obj);
+
+struct VncClientInfo
+{
+ char * host;
+ char * family;
+ char * service;
+ bool has_x509_dname;
+ char * x509_dname;
+ bool has_sasl_username;
+ char * sasl_username;
+};
+
+void qapi_free_VncClientInfoList(VncClientInfoList * obj);
+void qapi_free_VncClientInfo(VncClientInfo * obj);
+
+struct VncInfo
+{
+ bool enabled;
+ bool has_host;
+ char * host;
+ bool has_family;
+ char * family;
+ bool has_service;
+ char * service;
+ bool has_auth;
+ char * auth;
+ bool has_clients;
+ VncClientInfoList * clients;
+};
+
+void qapi_free_VncInfoList(VncInfoList * obj);
+void qapi_free_VncInfo(VncInfo * obj);
+
+struct SpiceChannel
+{
+ char * host;
+ char * family;
+ char * port;
+ int64_t connection_id;
+ int64_t channel_type;
+ int64_t channel_id;
+ bool tls;
+};
+
+void qapi_free_SpiceChannelList(SpiceChannelList * obj);
+void qapi_free_SpiceChannel(SpiceChannel * obj);
+
+void qapi_free_SpiceQueryMouseModeList(SpiceQueryMouseModeList * obj);
+
+struct SpiceInfo
+{
+ bool enabled;
+ bool migrated;
+ bool has_host;
+ char * host;
+ bool has_port;
+ int64_t port;
+ bool has_tls_port;
+ int64_t tls_port;
+ bool has_auth;
+ char * auth;
+ bool has_compiled_version;
+ char * compiled_version;
+ SpiceQueryMouseMode mouse_mode;
+ bool has_channels;
+ SpiceChannelList * channels;
+};
+
+void qapi_free_SpiceInfoList(SpiceInfoList * obj);
+void qapi_free_SpiceInfo(SpiceInfo * obj);
+
+struct BalloonInfo
+{
+ int64_t actual;
+};
+
+void qapi_free_BalloonInfoList(BalloonInfoList * obj);
+void qapi_free_BalloonInfo(BalloonInfo * obj);
+
+struct PciMemoryRange
+{
+ int64_t base;
+ int64_t limit;
+};
+
+void qapi_free_PciMemoryRangeList(PciMemoryRangeList * obj);
+void qapi_free_PciMemoryRange(PciMemoryRange * obj);
+
+struct PciMemoryRegion
+{
+ int64_t bar;
+ char * type;
+ int64_t address;
+ int64_t size;
+ bool has_prefetch;
+ bool prefetch;
+ bool has_mem_type_64;
+ bool mem_type_64;
+};
+
+void qapi_free_PciMemoryRegionList(PciMemoryRegionList * obj);
+void qapi_free_PciMemoryRegion(PciMemoryRegion * obj);
+
+struct PciBridgeInfo
+{
+ struct
+ {
+ int64_t number;
+ int64_t secondary;
+ int64_t subordinate;
+ PciMemoryRange * io_range;
+ PciMemoryRange * memory_range;
+ PciMemoryRange * prefetchable_range;
+ } bus;
+ bool has_devices;
+ PciDeviceInfoList * devices;
+};
+
+void qapi_free_PciBridgeInfoList(PciBridgeInfoList * obj);
+void qapi_free_PciBridgeInfo(PciBridgeInfo * obj);
+
+struct PciDeviceInfo
+{
+ int64_t bus;
+ int64_t slot;
+ int64_t function;
+ struct
+ {
+ bool has_desc;
+ char * desc;
+ int64_t q_class;
+ } class_info;
+ struct
+ {
+ int64_t device;
+ int64_t vendor;
+ } id;
+ bool has_irq;
+ int64_t irq;
+ char * qdev_id;
+ bool has_pci_bridge;
+ PciBridgeInfo * pci_bridge;
+ PciMemoryRegionList * regions;
+};
+
+void qapi_free_PciDeviceInfoList(PciDeviceInfoList * obj);
+void qapi_free_PciDeviceInfo(PciDeviceInfo * obj);
+
+struct PciInfo
+{
+ int64_t bus;
+ PciDeviceInfoList * devices;
+};
+
+void qapi_free_PciInfoList(PciInfoList * obj);
+void qapi_free_PciInfo(PciInfo * obj);
+
+void qapi_free_BlockdevOnErrorList(BlockdevOnErrorList * obj);
+
+void qapi_free_MirrorSyncModeList(MirrorSyncModeList * obj);
+
+void qapi_free_BlockJobTypeList(BlockJobTypeList * obj);
+
+struct BlockJobInfo
+{
+ char * type;
+ char * device;
+ int64_t len;
+ int64_t offset;
+ bool busy;
+ bool paused;
+ int64_t speed;
+ BlockDeviceIoStatus io_status;
+};
+
+void qapi_free_BlockJobInfoList(BlockJobInfoList * obj);
+void qapi_free_BlockJobInfo(BlockJobInfo * obj);
+
+void qapi_free_NewImageModeList(NewImageModeList * obj);
+
+struct BlockdevSnapshot
+{
+ char * device;
+ char * snapshot_file;
+ bool has_format;
+ char * format;
+ bool has_mode;
+ NewImageMode mode;
+};
+
+void qapi_free_BlockdevSnapshotList(BlockdevSnapshotList * obj);
+void qapi_free_BlockdevSnapshot(BlockdevSnapshot * obj);
+
+struct BlockdevSnapshotInternal
+{
+ char * device;
+ char * name;
+};
+
+void qapi_free_BlockdevSnapshotInternalList(BlockdevSnapshotInternalList * obj);
+void qapi_free_BlockdevSnapshotInternal(BlockdevSnapshotInternal * obj);
+
+struct DriveBackup
+{
+ char * device;
+ char * target;
+ bool has_format;
+ char * format;
+ MirrorSyncMode sync;
+ bool has_mode;
+ NewImageMode mode;
+ bool has_speed;
+ int64_t speed;
+ bool has_on_source_error;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error;
+ BlockdevOnError on_target_error;
+};
+
+void qapi_free_DriveBackupList(DriveBackupList * obj);
+void qapi_free_DriveBackup(DriveBackup * obj);
+
+struct Abort
+{
+};
+
+void qapi_free_AbortList(AbortList * obj);
+void qapi_free_Abort(Abort * obj);
+
+struct TransactionAction
+{
+ TransactionActionKind kind;
+ union {
+ void *data;
+ BlockdevSnapshot * blockdev_snapshot_sync;
+ DriveBackup * drive_backup;
+ Abort * abort;
+ BlockdevSnapshotInternal * blockdev_snapshot_internal_sync;
+ };
+};
+void qapi_free_TransactionActionList(TransactionActionList * obj);
+void qapi_free_TransactionAction(TransactionAction * obj);
+
+struct ObjectPropertyInfo
+{
+ char * name;
+ char * type;
+};
+
+void qapi_free_ObjectPropertyInfoList(ObjectPropertyInfoList * obj);
+void qapi_free_ObjectPropertyInfo(ObjectPropertyInfo * obj);
+
+struct ObjectTypeInfo
+{
+ char * name;
+};
+
+void qapi_free_ObjectTypeInfoList(ObjectTypeInfoList * obj);
+void qapi_free_ObjectTypeInfo(ObjectTypeInfo * obj);
+
+struct DevicePropertyInfo
+{
+ char * name;
+ char * type;
+};
+
+void qapi_free_DevicePropertyInfoList(DevicePropertyInfoList * obj);
+void qapi_free_DevicePropertyInfo(DevicePropertyInfo * obj);
+
+struct NetdevNoneOptions
+{
+};
+
+void qapi_free_NetdevNoneOptionsList(NetdevNoneOptionsList * obj);
+void qapi_free_NetdevNoneOptions(NetdevNoneOptions * obj);
+
+struct NetLegacyNicOptions
+{
+ bool has_netdev;
+ char * netdev;
+ bool has_macaddr;
+ char * macaddr;
+ bool has_model;
+ char * model;
+ bool has_addr;
+ char * addr;
+ bool has_vectors;
+ uint32_t vectors;
+};
+
+void qapi_free_NetLegacyNicOptionsList(NetLegacyNicOptionsList * obj);
+void qapi_free_NetLegacyNicOptions(NetLegacyNicOptions * obj);
+
+struct String
+{
+ char * str;
+};
+
+void qapi_free_StringList(StringList * obj);
+void qapi_free_String(String * obj);
+
+struct NetdevUserOptions
+{
+ bool has_hostname;
+ char * hostname;
+ bool has_q_restrict;
+ bool q_restrict;
+ bool has_ip;
+ char * ip;
+ bool has_net;
+ char * net;
+ bool has_host;
+ char * host;
+ bool has_tftp;
+ char * tftp;
+ bool has_bootfile;
+ char * bootfile;
+ bool has_dhcpstart;
+ char * dhcpstart;
+ bool has_dns;
+ char * dns;
+ bool has_dnssearch;
+ StringList * dnssearch;
+ bool has_smb;
+ char * smb;
+ bool has_smbserver;
+ char * smbserver;
+ bool has_hostfwd;
+ StringList * hostfwd;
+ bool has_guestfwd;
+ StringList * guestfwd;
+};
+
+void qapi_free_NetdevUserOptionsList(NetdevUserOptionsList * obj);
+void qapi_free_NetdevUserOptions(NetdevUserOptions * obj);
+
+struct NetdevTapOptions
+{
+ bool has_ifname;
+ char * ifname;
+ bool has_fd;
+ char * fd;
+ bool has_fds;
+ char * fds;
+ bool has_script;
+ char * script;
+ bool has_downscript;
+ char * downscript;
+ bool has_helper;
+ char * helper;
+ bool has_sndbuf;
+ uint64_t sndbuf;
+ bool has_vnet_hdr;
+ bool vnet_hdr;
+ bool has_vhost;
+ bool vhost;
+ bool has_vhostfd;
+ char * vhostfd;
+ bool has_vhostfds;
+ char * vhostfds;
+ bool has_vhostforce;
+ bool vhostforce;
+ bool has_queues;
+ uint32_t queues;
+};
+
+void qapi_free_NetdevTapOptionsList(NetdevTapOptionsList * obj);
+void qapi_free_NetdevTapOptions(NetdevTapOptions * obj);
+
+struct NetdevSocketOptions
+{
+ bool has_fd;
+ char * fd;
+ bool has_listen;
+ char * listen;
+ bool has_connect;
+ char * connect;
+ bool has_mcast;
+ char * mcast;
+ bool has_localaddr;
+ char * localaddr;
+ bool has_udp;
+ char * udp;
+};
+
+void qapi_free_NetdevSocketOptionsList(NetdevSocketOptionsList * obj);
+void qapi_free_NetdevSocketOptions(NetdevSocketOptions * obj);
+
+struct NetdevVdeOptions
+{
+ bool has_sock;
+ char * sock;
+ bool has_port;
+ uint16_t port;
+ bool has_group;
+ char * group;
+ bool has_mode;
+ uint16_t mode;
+};
+
+void qapi_free_NetdevVdeOptionsList(NetdevVdeOptionsList * obj);
+void qapi_free_NetdevVdeOptions(NetdevVdeOptions * obj);
+
+struct NetdevDumpOptions
+{
+ bool has_len;
+ uint64_t len;
+ bool has_file;
+ char * file;
+};
+
+void qapi_free_NetdevDumpOptionsList(NetdevDumpOptionsList * obj);
+void qapi_free_NetdevDumpOptions(NetdevDumpOptions * obj);
+
+struct NetdevBridgeOptions
+{
+ bool has_br;
+ char * br;
+ bool has_helper;
+ char * helper;
+};
+
+void qapi_free_NetdevBridgeOptionsList(NetdevBridgeOptionsList * obj);
+void qapi_free_NetdevBridgeOptions(NetdevBridgeOptions * obj);
+
+struct NetdevHubPortOptions
+{
+ int32_t hubid;
+};
+
+void qapi_free_NetdevHubPortOptionsList(NetdevHubPortOptionsList * obj);
+void qapi_free_NetdevHubPortOptions(NetdevHubPortOptions * obj);
+
+struct NetdevNetmapOptions
+{
+ char * ifname;
+ bool has_devname;
+ char * devname;
+};
+
+void qapi_free_NetdevNetmapOptionsList(NetdevNetmapOptionsList * obj);
+void qapi_free_NetdevNetmapOptions(NetdevNetmapOptions * obj);
+
+struct NetClientOptions
+{
+ NetClientOptionsKind kind;
+ union {
+ void *data;
+ NetdevNoneOptions * none;
+ NetLegacyNicOptions * nic;
+ NetdevUserOptions * user;
+ NetdevTapOptions * tap;
+ NetdevSocketOptions * socket;
+ NetdevVdeOptions * vde;
+ NetdevDumpOptions * dump;
+ NetdevBridgeOptions * bridge;
+ NetdevHubPortOptions * hubport;
+ NetdevNetmapOptions * netmap;
+ };
+};
+void qapi_free_NetClientOptionsList(NetClientOptionsList * obj);
+void qapi_free_NetClientOptions(NetClientOptions * obj);
+
+struct NetLegacy
+{
+ bool has_vlan;
+ int32_t vlan;
+ bool has_id;
+ char * id;
+ bool has_name;
+ char * name;
+ NetClientOptions * opts;
+};
+
+void qapi_free_NetLegacyList(NetLegacyList * obj);
+void qapi_free_NetLegacy(NetLegacy * obj);
+
+struct Netdev
+{
+ char * id;
+ NetClientOptions * opts;
+};
+
+void qapi_free_NetdevList(NetdevList * obj);
+void qapi_free_Netdev(Netdev * obj);
+
+struct InetSocketAddress
+{
+ char * host;
+ char * port;
+ bool has_to;
+ uint16_t to;
+ bool has_ipv4;
+ bool ipv4;
+ bool has_ipv6;
+ bool ipv6;
+};
+
+void qapi_free_InetSocketAddressList(InetSocketAddressList * obj);
+void qapi_free_InetSocketAddress(InetSocketAddress * obj);
+
+struct UnixSocketAddress
+{
+ char * path;
+};
+
+void qapi_free_UnixSocketAddressList(UnixSocketAddressList * obj);
+void qapi_free_UnixSocketAddress(UnixSocketAddress * obj);
+
+struct SocketAddress
+{
+ SocketAddressKind kind;
+ union {
+ void *data;
+ InetSocketAddress * inet;
+ UnixSocketAddress * q_unix;
+ String * fd;
+ };
+};
+void qapi_free_SocketAddressList(SocketAddressList * obj);
+void qapi_free_SocketAddress(SocketAddress * obj);
+
+struct MachineInfo
+{
+ char * name;
+ bool has_alias;
+ char * alias;
+ bool has_is_default;
+ bool is_default;
+ int64_t cpu_max;
+};
+
+void qapi_free_MachineInfoList(MachineInfoList * obj);
+void qapi_free_MachineInfo(MachineInfo * obj);
+
+struct CpuDefinitionInfo
+{
+ char * name;
+};
+
+void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList * obj);
+void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo * obj);
+
+struct AddfdInfo
+{
+ int64_t fdset_id;
+ int64_t fd;
+};
+
+void qapi_free_AddfdInfoList(AddfdInfoList * obj);
+void qapi_free_AddfdInfo(AddfdInfo * obj);
+
+struct FdsetFdInfo
+{
+ int64_t fd;
+ bool has_opaque;
+ char * opaque;
+};
+
+void qapi_free_FdsetFdInfoList(FdsetFdInfoList * obj);
+void qapi_free_FdsetFdInfo(FdsetFdInfo * obj);
+
+struct FdsetInfo
+{
+ int64_t fdset_id;
+ FdsetFdInfoList * fds;
+};
+
+void qapi_free_FdsetInfoList(FdsetInfoList * obj);
+void qapi_free_FdsetInfo(FdsetInfo * obj);
+
+struct TargetInfo
+{
+ char * arch;
+};
+
+void qapi_free_TargetInfoList(TargetInfoList * obj);
+void qapi_free_TargetInfo(TargetInfo * obj);
+
+void qapi_free_QKeyCodeList(QKeyCodeList * obj);
+
+struct KeyValue
+{
+ KeyValueKind kind;
+ union {
+ void *data;
+ int64_t number;
+ QKeyCode qcode;
+ };
+};
+void qapi_free_KeyValueList(KeyValueList * obj);
+void qapi_free_KeyValue(KeyValue * obj);
+
+struct ChardevFile
+{
+ bool has_in;
+ char * in;
+ char * out;
+};
+
+void qapi_free_ChardevFileList(ChardevFileList * obj);
+void qapi_free_ChardevFile(ChardevFile * obj);
+
+struct ChardevHostdev
+{
+ char * device;
+};
+
+void qapi_free_ChardevHostdevList(ChardevHostdevList * obj);
+void qapi_free_ChardevHostdev(ChardevHostdev * obj);
+
+struct ChardevSocket
+{
+ SocketAddress * addr;
+ bool has_server;
+ bool server;
+ bool has_wait;
+ bool wait;
+ bool has_nodelay;
+ bool nodelay;
+ bool has_telnet;
+ bool telnet;
+};
+
+void qapi_free_ChardevSocketList(ChardevSocketList * obj);
+void qapi_free_ChardevSocket(ChardevSocket * obj);
+
+struct ChardevUdp
+{
+ SocketAddress * remote;
+ bool has_local;
+ SocketAddress * local;
+};
+
+void qapi_free_ChardevUdpList(ChardevUdpList * obj);
+void qapi_free_ChardevUdp(ChardevUdp * obj);
+
+struct ChardevMux
+{
+ char * chardev;
+};
+
+void qapi_free_ChardevMuxList(ChardevMuxList * obj);
+void qapi_free_ChardevMux(ChardevMux * obj);
+
+struct ChardevStdio
+{
+ bool has_signal;
+ bool signal;
+};
+
+void qapi_free_ChardevStdioList(ChardevStdioList * obj);
+void qapi_free_ChardevStdio(ChardevStdio * obj);
+
+struct ChardevSpiceChannel
+{
+ char * type;
+};
+
+void qapi_free_ChardevSpiceChannelList(ChardevSpiceChannelList * obj);
+void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel * obj);
+
+struct ChardevSpicePort
+{
+ char * fqdn;
+};
+
+void qapi_free_ChardevSpicePortList(ChardevSpicePortList * obj);
+void qapi_free_ChardevSpicePort(ChardevSpicePort * obj);
+
+struct ChardevVC
+{
+ bool has_width;
+ int64_t width;
+ bool has_height;
+ int64_t height;
+ bool has_cols;
+ int64_t cols;
+ bool has_rows;
+ int64_t rows;
+};
+
+void qapi_free_ChardevVCList(ChardevVCList * obj);
+void qapi_free_ChardevVC(ChardevVC * obj);
+
+struct ChardevRingbuf
+{
+ bool has_size;
+ int64_t size;
+};
+
+void qapi_free_ChardevRingbufList(ChardevRingbufList * obj);
+void qapi_free_ChardevRingbuf(ChardevRingbuf * obj);
+
+struct ChardevDummy
+{
+};
+
+void qapi_free_ChardevDummyList(ChardevDummyList * obj);
+void qapi_free_ChardevDummy(ChardevDummy * obj);
+
+struct ChardevBackend
+{
+ ChardevBackendKind kind;
+ union {
+ void *data;
+ ChardevFile * file;
+ ChardevHostdev * serial;
+ ChardevHostdev * parallel;
+ ChardevHostdev * pipe;
+ ChardevSocket * socket;
+ ChardevUdp * udp;
+ ChardevDummy * pty;
+ ChardevDummy * null;
+ ChardevMux * mux;
+ ChardevDummy * msmouse;
+ ChardevDummy * braille;
+ ChardevStdio * stdio;
+ ChardevDummy * console;
+ ChardevSpiceChannel * spicevmc;
+ ChardevSpicePort * spiceport;
+ ChardevVC * vc;
+ ChardevRingbuf * ringbuf;
+ ChardevRingbuf * memory;
+ };
+};
+void qapi_free_ChardevBackendList(ChardevBackendList * obj);
+void qapi_free_ChardevBackend(ChardevBackend * obj);
+
+struct ChardevReturn
+{
+ bool has_pty;
+ char * pty;
+};
+
+void qapi_free_ChardevReturnList(ChardevReturnList * obj);
+void qapi_free_ChardevReturn(ChardevReturn * obj);
+
+void qapi_free_TpmModelList(TpmModelList * obj);
+
+void qapi_free_TpmTypeList(TpmTypeList * obj);
+
+struct TPMPassthroughOptions
+{
+ bool has_path;
+ char * path;
+ bool has_cancel_path;
+ char * cancel_path;
+};
+
+void qapi_free_TPMPassthroughOptionsList(TPMPassthroughOptionsList * obj);
+void qapi_free_TPMPassthroughOptions(TPMPassthroughOptions * obj);
+
+struct TpmTypeOptions
+{
+ TpmTypeOptionsKind kind;
+ union {
+ void *data;
+ TPMPassthroughOptions * passthrough;
+ };
+};
+void qapi_free_TpmTypeOptionsList(TpmTypeOptionsList * obj);
+void qapi_free_TpmTypeOptions(TpmTypeOptions * obj);
+
+struct TPMInfo
+{
+ char * id;
+ TpmModel model;
+ TpmTypeOptions * options;
+};
+
+void qapi_free_TPMInfoList(TPMInfoList * obj);
+void qapi_free_TPMInfo(TPMInfo * obj);
+
+struct AcpiTableOptions
+{
+ bool has_sig;
+ char * sig;
+ bool has_rev;
+ uint8_t rev;
+ bool has_oem_id;
+ char * oem_id;
+ bool has_oem_table_id;
+ char * oem_table_id;
+ bool has_oem_rev;
+ uint32_t oem_rev;
+ bool has_asl_compiler_id;
+ char * asl_compiler_id;
+ bool has_asl_compiler_rev;
+ uint32_t asl_compiler_rev;
+ bool has_file;
+ char * file;
+ bool has_data;
+ char * data;
+};
+
+void qapi_free_AcpiTableOptionsList(AcpiTableOptionsList * obj);
+void qapi_free_AcpiTableOptions(AcpiTableOptions * obj);
+
+void qapi_free_CommandLineParameterTypeList(CommandLineParameterTypeList * obj);
+
+struct CommandLineParameterInfo
+{
+ char * name;
+ CommandLineParameterType type;
+ bool has_help;
+ char * help;
+};
+
+void qapi_free_CommandLineParameterInfoList(CommandLineParameterInfoList * obj);
+void qapi_free_CommandLineParameterInfo(CommandLineParameterInfo * obj);
+
+struct CommandLineOptionInfo
+{
+ char * option;
+ CommandLineParameterInfoList * parameters;
+};
+
+void qapi_free_CommandLineOptionInfoList(CommandLineOptionInfoList * obj);
+void qapi_free_CommandLineOptionInfo(CommandLineOptionInfo * obj);
+
+void qapi_free_X86CPURegister32List(X86CPURegister32List * obj);
+
+struct X86CPUFeatureWordInfo
+{
+ int64_t cpuid_input_eax;
+ bool has_cpuid_input_ecx;
+ int64_t cpuid_input_ecx;
+ X86CPURegister32 cpuid_register;
+ int64_t features;
+};
+
+void qapi_free_X86CPUFeatureWordInfoList(X86CPUFeatureWordInfoList * obj);
+void qapi_free_X86CPUFeatureWordInfo(X86CPUFeatureWordInfo * obj);
+
+void qapi_free_RxStateList(RxStateList * obj);
+
+struct RxFilterInfo
+{
+ char * name;
+ bool promiscuous;
+ RxState multicast;
+ RxState unicast;
+ bool broadcast_allowed;
+ bool multicast_overflow;
+ bool unicast_overflow;
+ char * main_mac;
+ intList * vlan_table;
+ strList * unicast_table;
+ strList * multicast_table;
+};
+
+void qapi_free_RxFilterInfoList(RxFilterInfoList * obj);
+void qapi_free_RxFilterInfo(RxFilterInfo * obj);
+
+void qapi_free_BlockdevDiscardOptionsList(BlockdevDiscardOptionsList * obj);
+
+void qapi_free_BlockdevAioOptionsList(BlockdevAioOptionsList * obj);
+
+struct BlockdevCacheOptions
+{
+ bool has_writeback;
+ bool writeback;
+ bool has_direct;
+ bool direct;
+ bool has_no_flush;
+ bool no_flush;
+};
+
+void qapi_free_BlockdevCacheOptionsList(BlockdevCacheOptionsList * obj);
+void qapi_free_BlockdevCacheOptions(BlockdevCacheOptions * obj);
+
+struct BlockdevOptionsBase
+{
+ char * driver;
+ bool has_id;
+ char * id;
+ bool has_discard;
+ BlockdevDiscardOptions discard;
+ bool has_cache;
+ BlockdevCacheOptions * cache;
+ bool has_aio;
+ BlockdevAioOptions aio;
+ bool has_rerror;
+ BlockdevOnError rerror;
+ bool has_werror;
+ BlockdevOnError werror;
+ bool has_read_only;
+ bool read_only;
+};
+
+void qapi_free_BlockdevOptionsBaseList(BlockdevOptionsBaseList * obj);
+void qapi_free_BlockdevOptionsBase(BlockdevOptionsBase * obj);
+
+struct BlockdevOptionsFile
+{
+ char * filename;
+};
+
+void qapi_free_BlockdevOptionsFileList(BlockdevOptionsFileList * obj);
+void qapi_free_BlockdevOptionsFile(BlockdevOptionsFile * obj);
+
+struct BlockdevOptionsVVFAT
+{
+ char * dir;
+ bool has_fat_type;
+ int64_t fat_type;
+ bool has_floppy;
+ bool floppy;
+ bool has_rw;
+ bool rw;
+};
+
+void qapi_free_BlockdevOptionsVVFATList(BlockdevOptionsVVFATList * obj);
+void qapi_free_BlockdevOptionsVVFAT(BlockdevOptionsVVFAT * obj);
+
+struct BlockdevOptionsGenericFormat
+{
+ BlockdevRef * file;
+};
+
+void qapi_free_BlockdevOptionsGenericFormatList(BlockdevOptionsGenericFormatList * obj);
+void qapi_free_BlockdevOptionsGenericFormat(BlockdevOptionsGenericFormat * obj);
+
+struct BlockdevOptionsGenericCOWFormat
+{
+ BlockdevOptionsGenericFormat * base;
+ bool has_backing;
+ BlockdevRef * backing;
+};
+
+void qapi_free_BlockdevOptionsGenericCOWFormatList(BlockdevOptionsGenericCOWFormatList * obj);
+void qapi_free_BlockdevOptionsGenericCOWFormat(BlockdevOptionsGenericCOWFormat * obj);
+
+struct BlockdevOptionsQcow2
+{
+ BlockdevOptionsGenericCOWFormat * base;
+ bool has_lazy_refcounts;
+ bool lazy_refcounts;
+ bool has_pass_discard_request;
+ bool pass_discard_request;
+ bool has_pass_discard_snapshot;
+ bool pass_discard_snapshot;
+ bool has_pass_discard_other;
+ bool pass_discard_other;
+};
+
+void qapi_free_BlockdevOptionsQcow2List(BlockdevOptionsQcow2List * obj);
+void qapi_free_BlockdevOptionsQcow2(BlockdevOptionsQcow2 * obj);
+
+struct BlockdevOptions
+{
+ BlockdevOptionsKind kind;
+ union {
+ void *data;
+ BlockdevOptionsFile * file;
+ BlockdevOptionsFile * http;
+ BlockdevOptionsFile * https;
+ BlockdevOptionsFile * ftp;
+ BlockdevOptionsFile * ftps;
+ BlockdevOptionsFile * tftp;
+ BlockdevOptionsVVFAT * vvfat;
+ BlockdevOptionsGenericFormat * bochs;
+ BlockdevOptionsGenericFormat * cloop;
+ BlockdevOptionsGenericCOWFormat * cow;
+ BlockdevOptionsGenericFormat * dmg;
+ BlockdevOptionsGenericFormat * parallels;
+ BlockdevOptionsGenericCOWFormat * qcow;
+ BlockdevOptionsQcow2 * qcow2;
+ BlockdevOptionsGenericCOWFormat * qed;
+ BlockdevOptionsGenericFormat * raw;
+ BlockdevOptionsGenericFormat * vdi;
+ BlockdevOptionsGenericFormat * vhdx;
+ BlockdevOptionsGenericCOWFormat * vmdk;
+ BlockdevOptionsGenericFormat * vpc;
+ };
+ bool has_id;
+ char * id;
+ bool has_discard;
+ BlockdevDiscardOptions discard;
+ bool has_cache;
+ BlockdevCacheOptions * cache;
+ bool has_aio;
+ BlockdevAioOptions aio;
+ bool has_rerror;
+ BlockdevOnError rerror;
+ bool has_werror;
+ BlockdevOnError werror;
+ bool has_read_only;
+ bool read_only;
+};
+void qapi_free_BlockdevOptionsList(BlockdevOptionsList * obj);
+void qapi_free_BlockdevOptions(BlockdevOptions * obj);
+
+struct BlockdevRef
+{
+ BlockdevRefKind kind;
+ union {
+ void *data;
+ BlockdevOptions * definition;
+ char * reference;
+ };
+};
+extern const int BlockdevRef_qtypes[];
+void qapi_free_BlockdevRefList(BlockdevRefList * obj);
+void qapi_free_BlockdevRef(BlockdevRef * obj);
+
+#endif
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.c b/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.c
new file mode 100644
index 0000000000..af20d3ef16
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.c
@@ -0,0 +1,6982 @@
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * schema-defined QAPI visitor functions
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#include "qemu-common.h"
+#include "qapi-visit.h"
+
+#ifndef QAPI_VISIT_BUILTIN_VISITOR_DEF_H
+#define QAPI_VISIT_BUILTIN_VISITOR_DEF_H
+
+
+void visit_type_strList(Visitor *m, strList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ strList *native_i = (strList *)i;
+ visit_type_str(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_intList(Visitor *m, intList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ intList *native_i = (intList *)i;
+ visit_type_int(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_numberList(Visitor *m, numberList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ numberList *native_i = (numberList *)i;
+ visit_type_number(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_boolList(Visitor *m, boolList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ boolList *native_i = (boolList *)i;
+ visit_type_bool(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_int8List(Visitor *m, int8List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ int8List *native_i = (int8List *)i;
+ visit_type_int8(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_int16List(Visitor *m, int16List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ int16List *native_i = (int16List *)i;
+ visit_type_int16(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_int32List(Visitor *m, int32List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ int32List *native_i = (int32List *)i;
+ visit_type_int32(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_int64List(Visitor *m, int64List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ int64List *native_i = (int64List *)i;
+ visit_type_int64(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_uint8List(Visitor *m, uint8List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ uint8List *native_i = (uint8List *)i;
+ visit_type_uint8(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_uint16List(Visitor *m, uint16List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ uint16List *native_i = (uint16List *)i;
+ visit_type_uint16(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_uint32List(Visitor *m, uint32List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ uint32List *native_i = (uint32List *)i;
+ visit_type_uint32(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_uint64List(Visitor *m, uint64List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ uint64List *native_i = (uint64List *)i;
+ visit_type_uint64(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+#endif /* QAPI_VISIT_BUILTIN_VISITOR_DEF_H */
+
+
+void visit_type_ErrorClassList(Visitor *m, ErrorClassList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ErrorClassList *native_i = (ErrorClassList *)i;
+ visit_type_ErrorClass(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ErrorClass(Visitor *m, ErrorClass * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, ErrorClass_lookup, "ErrorClass", name, errp);
+}
+
+static void visit_type_NameInfo_fields(Visitor *m, NameInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_name : NULL, "name", &err);
+ if (obj && (*obj)->has_name) {
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NameInfo(Visitor *m, NameInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NameInfo", name, sizeof(NameInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NameInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NameInfoList(Visitor *m, NameInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NameInfoList *native_i = (NameInfoList *)i;
+ visit_type_NameInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_VersionInfo_qemu_fields(Visitor *m, VersionInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->qemu.major : NULL, "major", &err);
+ visit_type_int(m, obj ? &(*obj)->qemu.minor : NULL, "minor", &err);
+ visit_type_int(m, obj ? &(*obj)->qemu.micro : NULL, "micro", &err);
+
+ error_propagate(errp, err);
+}
+
+static void visit_type_VersionInfo_fields(Visitor *m, VersionInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ if (!error_is_set(errp)) {
+ Error **errp = &err; /* from outer scope */
+ Error *err = NULL;
+ visit_start_struct(m, NULL, "", "qemu", 0, &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_VersionInfo_qemu_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+ visit_type_str(m, obj ? &(*obj)->package : NULL, "package", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_VersionInfo(Visitor *m, VersionInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "VersionInfo", name, sizeof(VersionInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_VersionInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_VersionInfoList(Visitor *m, VersionInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ VersionInfoList *native_i = (VersionInfoList *)i;
+ visit_type_VersionInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_KvmInfo_fields(Visitor *m, KvmInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err);
+ visit_type_bool(m, obj ? &(*obj)->present : NULL, "present", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_KvmInfo(Visitor *m, KvmInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "KvmInfo", name, sizeof(KvmInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_KvmInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_KvmInfoList(Visitor *m, KvmInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ KvmInfoList *native_i = (KvmInfoList *)i;
+ visit_type_KvmInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_RunStateList(Visitor *m, RunStateList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ RunStateList *native_i = (RunStateList *)i;
+ visit_type_RunState(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_RunState(Visitor *m, RunState * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, RunState_lookup, "RunState", name, errp);
+}
+
+static void visit_type_SnapshotInfo_fields(Visitor *m, SnapshotInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_int(m, obj ? &(*obj)->vm_state_size : NULL, "vm-state-size", &err);
+ visit_type_int(m, obj ? &(*obj)->date_sec : NULL, "date-sec", &err);
+ visit_type_int(m, obj ? &(*obj)->date_nsec : NULL, "date-nsec", &err);
+ visit_type_int(m, obj ? &(*obj)->vm_clock_sec : NULL, "vm-clock-sec", &err);
+ visit_type_int(m, obj ? &(*obj)->vm_clock_nsec : NULL, "vm-clock-nsec", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_SnapshotInfo(Visitor *m, SnapshotInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "SnapshotInfo", name, sizeof(SnapshotInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_SnapshotInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SnapshotInfoList(Visitor *m, SnapshotInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ SnapshotInfoList *native_i = (SnapshotInfoList *)i;
+ visit_type_SnapshotInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ImageInfoSpecificQCow2_fields(Visitor *m, ImageInfoSpecificQCow2 ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->compat : NULL, "compat", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_lazy_refcounts : NULL, "lazy-refcounts", &err);
+ if (obj && (*obj)->has_lazy_refcounts) {
+ visit_type_bool(m, obj ? &(*obj)->lazy_refcounts : NULL, "lazy-refcounts", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2(Visitor *m, ImageInfoSpecificQCow2 ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ImageInfoSpecificQCow2", name, sizeof(ImageInfoSpecificQCow2), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ImageInfoSpecificQCow2_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageInfoSpecificQCow2List(Visitor *m, ImageInfoSpecificQCow2List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ImageInfoSpecificQCow2List *native_i = (ImageInfoSpecificQCow2List *)i;
+ visit_type_ImageInfoSpecificQCow2(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ImageInfoSpecificVmdk_fields(Visitor *m, ImageInfoSpecificVmdk ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->create_type : NULL, "create-type", &err);
+ visit_type_int(m, obj ? &(*obj)->cid : NULL, "cid", &err);
+ visit_type_int(m, obj ? &(*obj)->parent_cid : NULL, "parent-cid", &err);
+ visit_type_ImageInfoList(m, obj ? &(*obj)->extents : NULL, "extents", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificVmdk(Visitor *m, ImageInfoSpecificVmdk ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ImageInfoSpecificVmdk", name, sizeof(ImageInfoSpecificVmdk), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ImageInfoSpecificVmdk_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageInfoSpecificVmdkList(Visitor *m, ImageInfoSpecificVmdkList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ImageInfoSpecificVmdkList *native_i = (ImageInfoSpecificVmdkList *)i;
+ visit_type_ImageInfoSpecificVmdk(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageInfoSpecificKind(Visitor *m, ImageInfoSpecificKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, ImageInfoSpecificKind_lookup, "ImageInfoSpecificKind", name, errp);
+}
+
+void visit_type_ImageInfoSpecific(Visitor *m, ImageInfoSpecific ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "ImageInfoSpecific", name, sizeof(ImageInfoSpecific), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_ImageInfoSpecificKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case IMAGE_INFO_SPECIFIC_KIND_QCOW2:
+ visit_type_ImageInfoSpecificQCow2(m, &(*obj)->qcow2, "data", &err);
+ break;
+ case IMAGE_INFO_SPECIFIC_KIND_VMDK:
+ visit_type_ImageInfoSpecificVmdk(m, &(*obj)->vmdk, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageInfoSpecificList(Visitor *m, ImageInfoSpecificList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ImageInfoSpecificList *native_i = (ImageInfoSpecificList *)i;
+ visit_type_ImageInfoSpecific(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ImageInfo_fields(Visitor *m, ImageInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err);
+ visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_dirty_flag : NULL, "dirty-flag", &err);
+ if (obj && (*obj)->has_dirty_flag) {
+ visit_type_bool(m, obj ? &(*obj)->dirty_flag : NULL, "dirty-flag", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_actual_size : NULL, "actual-size", &err);
+ if (obj && (*obj)->has_actual_size) {
+ visit_type_int(m, obj ? &(*obj)->actual_size : NULL, "actual-size", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_int(m, obj ? &(*obj)->virtual_size : NULL, "virtual-size", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cluster_size : NULL, "cluster-size", &err);
+ if (obj && (*obj)->has_cluster_size) {
+ visit_type_int(m, obj ? &(*obj)->cluster_size : NULL, "cluster-size", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_encrypted : NULL, "encrypted", &err);
+ if (obj && (*obj)->has_encrypted) {
+ visit_type_bool(m, obj ? &(*obj)->encrypted : NULL, "encrypted", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_compressed : NULL, "compressed", &err);
+ if (obj && (*obj)->has_compressed) {
+ visit_type_bool(m, obj ? &(*obj)->compressed : NULL, "compressed", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_backing_filename : NULL, "backing-filename", &err);
+ if (obj && (*obj)->has_backing_filename) {
+ visit_type_str(m, obj ? &(*obj)->backing_filename : NULL, "backing-filename", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_full_backing_filename : NULL, "full-backing-filename", &err);
+ if (obj && (*obj)->has_full_backing_filename) {
+ visit_type_str(m, obj ? &(*obj)->full_backing_filename : NULL, "full-backing-filename", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_backing_filename_format : NULL, "backing-filename-format", &err);
+ if (obj && (*obj)->has_backing_filename_format) {
+ visit_type_str(m, obj ? &(*obj)->backing_filename_format : NULL, "backing-filename-format", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_snapshots : NULL, "snapshots", &err);
+ if (obj && (*obj)->has_snapshots) {
+ visit_type_SnapshotInfoList(m, obj ? &(*obj)->snapshots : NULL, "snapshots", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_backing_image : NULL, "backing-image", &err);
+ if (obj && (*obj)->has_backing_image) {
+ visit_type_ImageInfo(m, obj ? &(*obj)->backing_image : NULL, "backing-image", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_format_specific : NULL, "format-specific", &err);
+ if (obj && (*obj)->has_format_specific) {
+ visit_type_ImageInfoSpecific(m, obj ? &(*obj)->format_specific : NULL, "format-specific", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfo(Visitor *m, ImageInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ImageInfo", name, sizeof(ImageInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ImageInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageInfoList(Visitor *m, ImageInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ImageInfoList *native_i = (ImageInfoList *)i;
+ visit_type_ImageInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ImageCheck_fields(Visitor *m, ImageCheck ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err);
+ visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err);
+ visit_type_int(m, obj ? &(*obj)->check_errors : NULL, "check-errors", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_image_end_offset : NULL, "image-end-offset", &err);
+ if (obj && (*obj)->has_image_end_offset) {
+ visit_type_int(m, obj ? &(*obj)->image_end_offset : NULL, "image-end-offset", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_corruptions : NULL, "corruptions", &err);
+ if (obj && (*obj)->has_corruptions) {
+ visit_type_int(m, obj ? &(*obj)->corruptions : NULL, "corruptions", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_leaks : NULL, "leaks", &err);
+ if (obj && (*obj)->has_leaks) {
+ visit_type_int(m, obj ? &(*obj)->leaks : NULL, "leaks", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_corruptions_fixed : NULL, "corruptions-fixed", &err);
+ if (obj && (*obj)->has_corruptions_fixed) {
+ visit_type_int(m, obj ? &(*obj)->corruptions_fixed : NULL, "corruptions-fixed", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_leaks_fixed : NULL, "leaks-fixed", &err);
+ if (obj && (*obj)->has_leaks_fixed) {
+ visit_type_int(m, obj ? &(*obj)->leaks_fixed : NULL, "leaks-fixed", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_total_clusters : NULL, "total-clusters", &err);
+ if (obj && (*obj)->has_total_clusters) {
+ visit_type_int(m, obj ? &(*obj)->total_clusters : NULL, "total-clusters", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_allocated_clusters : NULL, "allocated-clusters", &err);
+ if (obj && (*obj)->has_allocated_clusters) {
+ visit_type_int(m, obj ? &(*obj)->allocated_clusters : NULL, "allocated-clusters", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_fragmented_clusters : NULL, "fragmented-clusters", &err);
+ if (obj && (*obj)->has_fragmented_clusters) {
+ visit_type_int(m, obj ? &(*obj)->fragmented_clusters : NULL, "fragmented-clusters", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_compressed_clusters : NULL, "compressed-clusters", &err);
+ if (obj && (*obj)->has_compressed_clusters) {
+ visit_type_int(m, obj ? &(*obj)->compressed_clusters : NULL, "compressed-clusters", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageCheck(Visitor *m, ImageCheck ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ImageCheck", name, sizeof(ImageCheck), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ImageCheck_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ImageCheckList(Visitor *m, ImageCheckList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ImageCheckList *native_i = (ImageCheckList *)i;
+ visit_type_ImageCheck(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_StatusInfo_fields(Visitor *m, StatusInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_bool(m, obj ? &(*obj)->running : NULL, "running", &err);
+ visit_type_bool(m, obj ? &(*obj)->singlestep : NULL, "singlestep", &err);
+ visit_type_RunState(m, obj ? &(*obj)->status : NULL, "status", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_StatusInfo(Visitor *m, StatusInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "StatusInfo", name, sizeof(StatusInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_StatusInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_StatusInfoList(Visitor *m, StatusInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ StatusInfoList *native_i = (StatusInfoList *)i;
+ visit_type_StatusInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_UuidInfo_fields(Visitor *m, UuidInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->UUID : NULL, "UUID", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_UuidInfo(Visitor *m, UuidInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "UuidInfo", name, sizeof(UuidInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_UuidInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_UuidInfoList(Visitor *m, UuidInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ UuidInfoList *native_i = (UuidInfoList *)i;
+ visit_type_UuidInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevInfo_fields(Visitor *m, ChardevInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->label : NULL, "label", &err);
+ visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevInfo(Visitor *m, ChardevInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevInfo", name, sizeof(ChardevInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevInfoList(Visitor *m, ChardevInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevInfoList *native_i = (ChardevInfoList *)i;
+ visit_type_ChardevInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_DataFormatList(Visitor *m, DataFormatList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ DataFormatList *native_i = (DataFormatList *)i;
+ visit_type_DataFormat(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_DataFormat(Visitor *m, DataFormat * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, DataFormat_lookup, "DataFormat", name, errp);
+}
+
+static void visit_type_CommandInfo_fields(Visitor *m, CommandInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandInfo(Visitor *m, CommandInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "CommandInfo", name, sizeof(CommandInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_CommandInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CommandInfoList(Visitor *m, CommandInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CommandInfoList *native_i = (CommandInfoList *)i;
+ visit_type_CommandInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_EventInfo_fields(Visitor *m, EventInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_EventInfo(Visitor *m, EventInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "EventInfo", name, sizeof(EventInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_EventInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_EventInfoList(Visitor *m, EventInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ EventInfoList *native_i = (EventInfoList *)i;
+ visit_type_EventInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_MigrationStats_fields(Visitor *m, MigrationStats ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->transferred : NULL, "transferred", &err);
+ visit_type_int(m, obj ? &(*obj)->remaining : NULL, "remaining", &err);
+ visit_type_int(m, obj ? &(*obj)->total : NULL, "total", &err);
+ visit_type_int(m, obj ? &(*obj)->duplicate : NULL, "duplicate", &err);
+ visit_type_int(m, obj ? &(*obj)->skipped : NULL, "skipped", &err);
+ visit_type_int(m, obj ? &(*obj)->normal : NULL, "normal", &err);
+ visit_type_int(m, obj ? &(*obj)->normal_bytes : NULL, "normal-bytes", &err);
+ visit_type_int(m, obj ? &(*obj)->dirty_pages_rate : NULL, "dirty-pages-rate", &err);
+ visit_type_number(m, obj ? &(*obj)->mbps : NULL, "mbps", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationStats(Visitor *m, MigrationStats ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "MigrationStats", name, sizeof(MigrationStats), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_MigrationStats_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MigrationStatsList(Visitor *m, MigrationStatsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MigrationStatsList *native_i = (MigrationStatsList *)i;
+ visit_type_MigrationStats(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_XBZRLECacheStats_fields(Visitor *m, XBZRLECacheStats ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->cache_size : NULL, "cache-size", &err);
+ visit_type_int(m, obj ? &(*obj)->bytes : NULL, "bytes", &err);
+ visit_type_int(m, obj ? &(*obj)->pages : NULL, "pages", &err);
+ visit_type_int(m, obj ? &(*obj)->cache_miss : NULL, "cache-miss", &err);
+ visit_type_int(m, obj ? &(*obj)->overflow : NULL, "overflow", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_XBZRLECacheStats(Visitor *m, XBZRLECacheStats ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "XBZRLECacheStats", name, sizeof(XBZRLECacheStats), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_XBZRLECacheStats_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_XBZRLECacheStatsList(Visitor *m, XBZRLECacheStatsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ XBZRLECacheStatsList *native_i = (XBZRLECacheStatsList *)i;
+ visit_type_XBZRLECacheStats(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_MigrationInfo_fields(Visitor *m, MigrationInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_status : NULL, "status", &err);
+ if (obj && (*obj)->has_status) {
+ visit_type_str(m, obj ? &(*obj)->status : NULL, "status", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_ram : NULL, "ram", &err);
+ if (obj && (*obj)->has_ram) {
+ visit_type_MigrationStats(m, obj ? &(*obj)->ram : NULL, "ram", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_disk : NULL, "disk", &err);
+ if (obj && (*obj)->has_disk) {
+ visit_type_MigrationStats(m, obj ? &(*obj)->disk : NULL, "disk", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_xbzrle_cache : NULL, "xbzrle-cache", &err);
+ if (obj && (*obj)->has_xbzrle_cache) {
+ visit_type_XBZRLECacheStats(m, obj ? &(*obj)->xbzrle_cache : NULL, "xbzrle-cache", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_total_time : NULL, "total-time", &err);
+ if (obj && (*obj)->has_total_time) {
+ visit_type_int(m, obj ? &(*obj)->total_time : NULL, "total-time", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_expected_downtime : NULL, "expected-downtime", &err);
+ if (obj && (*obj)->has_expected_downtime) {
+ visit_type_int(m, obj ? &(*obj)->expected_downtime : NULL, "expected-downtime", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_downtime : NULL, "downtime", &err);
+ if (obj && (*obj)->has_downtime) {
+ visit_type_int(m, obj ? &(*obj)->downtime : NULL, "downtime", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_setup_time : NULL, "setup-time", &err);
+ if (obj && (*obj)->has_setup_time) {
+ visit_type_int(m, obj ? &(*obj)->setup_time : NULL, "setup-time", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationInfo(Visitor *m, MigrationInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "MigrationInfo", name, sizeof(MigrationInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_MigrationInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MigrationInfoList(Visitor *m, MigrationInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MigrationInfoList *native_i = (MigrationInfoList *)i;
+ visit_type_MigrationInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MigrationCapabilityList(Visitor *m, MigrationCapabilityList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MigrationCapabilityList *native_i = (MigrationCapabilityList *)i;
+ visit_type_MigrationCapability(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MigrationCapability(Visitor *m, MigrationCapability * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, MigrationCapability_lookup, "MigrationCapability", name, errp);
+}
+
+static void visit_type_MigrationCapabilityStatus_fields(Visitor *m, MigrationCapabilityStatus ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_MigrationCapability(m, obj ? &(*obj)->capability : NULL, "capability", &err);
+ visit_type_bool(m, obj ? &(*obj)->state : NULL, "state", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationCapabilityStatus(Visitor *m, MigrationCapabilityStatus ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "MigrationCapabilityStatus", name, sizeof(MigrationCapabilityStatus), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_MigrationCapabilityStatus_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MigrationCapabilityStatusList(Visitor *m, MigrationCapabilityStatusList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MigrationCapabilityStatusList *native_i = (MigrationCapabilityStatusList *)i;
+ visit_type_MigrationCapabilityStatus(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_MouseInfo_fields(Visitor *m, MouseInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_int(m, obj ? &(*obj)->index : NULL, "index", &err);
+ visit_type_bool(m, obj ? &(*obj)->current : NULL, "current", &err);
+ visit_type_bool(m, obj ? &(*obj)->absolute : NULL, "absolute", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_MouseInfo(Visitor *m, MouseInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "MouseInfo", name, sizeof(MouseInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_MouseInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MouseInfoList(Visitor *m, MouseInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MouseInfoList *native_i = (MouseInfoList *)i;
+ visit_type_MouseInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_CpuInfo_fields(Visitor *m, CpuInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->CPU : NULL, "CPU", &err);
+ visit_type_bool(m, obj ? &(*obj)->current : NULL, "current", &err);
+ visit_type_bool(m, obj ? &(*obj)->halted : NULL, "halted", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_pc : NULL, "pc", &err);
+ if (obj && (*obj)->has_pc) {
+ visit_type_int(m, obj ? &(*obj)->pc : NULL, "pc", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_nip : NULL, "nip", &err);
+ if (obj && (*obj)->has_nip) {
+ visit_type_int(m, obj ? &(*obj)->nip : NULL, "nip", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_npc : NULL, "npc", &err);
+ if (obj && (*obj)->has_npc) {
+ visit_type_int(m, obj ? &(*obj)->npc : NULL, "npc", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_PC : NULL, "PC", &err);
+ if (obj && (*obj)->has_PC) {
+ visit_type_int(m, obj ? &(*obj)->PC : NULL, "PC", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_int(m, obj ? &(*obj)->thread_id : NULL, "thread_id", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfo(Visitor *m, CpuInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "CpuInfo", name, sizeof(CpuInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_CpuInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CpuInfoList(Visitor *m, CpuInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CpuInfoList *native_i = (CpuInfoList *)i;
+ visit_type_CpuInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockDeviceInfo_fields(Visitor *m, BlockDeviceInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err);
+ visit_type_bool(m, obj ? &(*obj)->ro : NULL, "ro", &err);
+ visit_type_str(m, obj ? &(*obj)->drv : NULL, "drv", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_backing_file : NULL, "backing_file", &err);
+ if (obj && (*obj)->has_backing_file) {
+ visit_type_str(m, obj ? &(*obj)->backing_file : NULL, "backing_file", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_int(m, obj ? &(*obj)->backing_file_depth : NULL, "backing_file_depth", &err);
+ visit_type_bool(m, obj ? &(*obj)->encrypted : NULL, "encrypted", &err);
+ visit_type_bool(m, obj ? &(*obj)->encryption_key_missing : NULL, "encryption_key_missing", &err);
+ visit_type_int(m, obj ? &(*obj)->bps : NULL, "bps", &err);
+ visit_type_int(m, obj ? &(*obj)->bps_rd : NULL, "bps_rd", &err);
+ visit_type_int(m, obj ? &(*obj)->bps_wr : NULL, "bps_wr", &err);
+ visit_type_int(m, obj ? &(*obj)->iops : NULL, "iops", &err);
+ visit_type_int(m, obj ? &(*obj)->iops_rd : NULL, "iops_rd", &err);
+ visit_type_int(m, obj ? &(*obj)->iops_wr : NULL, "iops_wr", &err);
+ visit_type_ImageInfo(m, obj ? &(*obj)->image : NULL, "image", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_bps_max : NULL, "bps_max", &err);
+ if (obj && (*obj)->has_bps_max) {
+ visit_type_int(m, obj ? &(*obj)->bps_max : NULL, "bps_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_bps_rd_max : NULL, "bps_rd_max", &err);
+ if (obj && (*obj)->has_bps_rd_max) {
+ visit_type_int(m, obj ? &(*obj)->bps_rd_max : NULL, "bps_rd_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_bps_wr_max : NULL, "bps_wr_max", &err);
+ if (obj && (*obj)->has_bps_wr_max) {
+ visit_type_int(m, obj ? &(*obj)->bps_wr_max : NULL, "bps_wr_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_iops_max : NULL, "iops_max", &err);
+ if (obj && (*obj)->has_iops_max) {
+ visit_type_int(m, obj ? &(*obj)->iops_max : NULL, "iops_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_iops_rd_max : NULL, "iops_rd_max", &err);
+ if (obj && (*obj)->has_iops_rd_max) {
+ visit_type_int(m, obj ? &(*obj)->iops_rd_max : NULL, "iops_rd_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_iops_wr_max : NULL, "iops_wr_max", &err);
+ if (obj && (*obj)->has_iops_wr_max) {
+ visit_type_int(m, obj ? &(*obj)->iops_wr_max : NULL, "iops_wr_max", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_iops_size : NULL, "iops_size", &err);
+ if (obj && (*obj)->has_iops_size) {
+ visit_type_int(m, obj ? &(*obj)->iops_size : NULL, "iops_size", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceInfo(Visitor *m, BlockDeviceInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockDeviceInfo", name, sizeof(BlockDeviceInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockDeviceInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDeviceInfoList(Visitor *m, BlockDeviceInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockDeviceInfoList *native_i = (BlockDeviceInfoList *)i;
+ visit_type_BlockDeviceInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDeviceIoStatusList(Visitor *m, BlockDeviceIoStatusList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockDeviceIoStatusList *native_i = (BlockDeviceIoStatusList *)i;
+ visit_type_BlockDeviceIoStatus(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDeviceIoStatus(Visitor *m, BlockDeviceIoStatus * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockDeviceIoStatus_lookup, "BlockDeviceIoStatus", name, errp);
+}
+
+static void visit_type_BlockDeviceMapEntry_fields(Visitor *m, BlockDeviceMapEntry ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->start : NULL, "start", &err);
+ visit_type_int(m, obj ? &(*obj)->length : NULL, "length", &err);
+ visit_type_int(m, obj ? &(*obj)->depth : NULL, "depth", &err);
+ visit_type_bool(m, obj ? &(*obj)->zero : NULL, "zero", &err);
+ visit_type_bool(m, obj ? &(*obj)->data : NULL, "data", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_offset : NULL, "offset", &err);
+ if (obj && (*obj)->has_offset) {
+ visit_type_int(m, obj ? &(*obj)->offset : NULL, "offset", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceMapEntry(Visitor *m, BlockDeviceMapEntry ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockDeviceMapEntry", name, sizeof(BlockDeviceMapEntry), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockDeviceMapEntry_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDeviceMapEntryList(Visitor *m, BlockDeviceMapEntryList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockDeviceMapEntryList *native_i = (BlockDeviceMapEntryList *)i;
+ visit_type_BlockDeviceMapEntry(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockDirtyInfo_fields(Visitor *m, BlockDirtyInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->count : NULL, "count", &err);
+ visit_type_int(m, obj ? &(*obj)->granularity : NULL, "granularity", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyInfo(Visitor *m, BlockDirtyInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockDirtyInfo", name, sizeof(BlockDirtyInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockDirtyInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDirtyInfoList(Visitor *m, BlockDirtyInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockDirtyInfoList *native_i = (BlockDirtyInfoList *)i;
+ visit_type_BlockDirtyInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockInfo_fields(Visitor *m, BlockInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+ visit_type_bool(m, obj ? &(*obj)->removable : NULL, "removable", &err);
+ visit_type_bool(m, obj ? &(*obj)->locked : NULL, "locked", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_inserted : NULL, "inserted", &err);
+ if (obj && (*obj)->has_inserted) {
+ visit_type_BlockDeviceInfo(m, obj ? &(*obj)->inserted : NULL, "inserted", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_tray_open : NULL, "tray_open", &err);
+ if (obj && (*obj)->has_tray_open) {
+ visit_type_bool(m, obj ? &(*obj)->tray_open : NULL, "tray_open", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_io_status : NULL, "io-status", &err);
+ if (obj && (*obj)->has_io_status) {
+ visit_type_BlockDeviceIoStatus(m, obj ? &(*obj)->io_status : NULL, "io-status", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_dirty_bitmaps : NULL, "dirty-bitmaps", &err);
+ if (obj && (*obj)->has_dirty_bitmaps) {
+ visit_type_BlockDirtyInfoList(m, obj ? &(*obj)->dirty_bitmaps : NULL, "dirty-bitmaps", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockInfo(Visitor *m, BlockInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockInfo", name, sizeof(BlockInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockInfoList(Visitor *m, BlockInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockInfoList *native_i = (BlockInfoList *)i;
+ visit_type_BlockInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockDeviceStats_fields(Visitor *m, BlockDeviceStats ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->rd_bytes : NULL, "rd_bytes", &err);
+ visit_type_int(m, obj ? &(*obj)->wr_bytes : NULL, "wr_bytes", &err);
+ visit_type_int(m, obj ? &(*obj)->rd_operations : NULL, "rd_operations", &err);
+ visit_type_int(m, obj ? &(*obj)->wr_operations : NULL, "wr_operations", &err);
+ visit_type_int(m, obj ? &(*obj)->flush_operations : NULL, "flush_operations", &err);
+ visit_type_int(m, obj ? &(*obj)->flush_total_time_ns : NULL, "flush_total_time_ns", &err);
+ visit_type_int(m, obj ? &(*obj)->wr_total_time_ns : NULL, "wr_total_time_ns", &err);
+ visit_type_int(m, obj ? &(*obj)->rd_total_time_ns : NULL, "rd_total_time_ns", &err);
+ visit_type_int(m, obj ? &(*obj)->wr_highest_offset : NULL, "wr_highest_offset", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceStats(Visitor *m, BlockDeviceStats ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockDeviceStats", name, sizeof(BlockDeviceStats), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockDeviceStats_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockDeviceStatsList(Visitor *m, BlockDeviceStatsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockDeviceStatsList *native_i = (BlockDeviceStatsList *)i;
+ visit_type_BlockDeviceStats(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockStats_fields(Visitor *m, BlockStats ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_device : NULL, "device", &err);
+ if (obj && (*obj)->has_device) {
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_BlockDeviceStats(m, obj ? &(*obj)->stats : NULL, "stats", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_parent : NULL, "parent", &err);
+ if (obj && (*obj)->has_parent) {
+ visit_type_BlockStats(m, obj ? &(*obj)->parent : NULL, "parent", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockStats(Visitor *m, BlockStats ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockStats", name, sizeof(BlockStats), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockStats_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockStatsList(Visitor *m, BlockStatsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockStatsList *native_i = (BlockStatsList *)i;
+ visit_type_BlockStats(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_VncClientInfo_fields(Visitor *m, VncClientInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err);
+ visit_type_str(m, obj ? &(*obj)->service : NULL, "service", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_x509_dname : NULL, "x509_dname", &err);
+ if (obj && (*obj)->has_x509_dname) {
+ visit_type_str(m, obj ? &(*obj)->x509_dname : NULL, "x509_dname", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_sasl_username : NULL, "sasl_username", &err);
+ if (obj && (*obj)->has_sasl_username) {
+ visit_type_str(m, obj ? &(*obj)->sasl_username : NULL, "sasl_username", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_VncClientInfo(Visitor *m, VncClientInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "VncClientInfo", name, sizeof(VncClientInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_VncClientInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_VncClientInfoList(Visitor *m, VncClientInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ VncClientInfoList *native_i = (VncClientInfoList *)i;
+ visit_type_VncClientInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_VncInfo_fields(Visitor *m, VncInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err);
+ if (obj && (*obj)->has_host) {
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_family : NULL, "family", &err);
+ if (obj && (*obj)->has_family) {
+ visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_service : NULL, "service", &err);
+ if (obj && (*obj)->has_service) {
+ visit_type_str(m, obj ? &(*obj)->service : NULL, "service", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_auth : NULL, "auth", &err);
+ if (obj && (*obj)->has_auth) {
+ visit_type_str(m, obj ? &(*obj)->auth : NULL, "auth", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_clients : NULL, "clients", &err);
+ if (obj && (*obj)->has_clients) {
+ visit_type_VncClientInfoList(m, obj ? &(*obj)->clients : NULL, "clients", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo(Visitor *m, VncInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "VncInfo", name, sizeof(VncInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_VncInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_VncInfoList(Visitor *m, VncInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ VncInfoList *native_i = (VncInfoList *)i;
+ visit_type_VncInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_SpiceChannel_fields(Visitor *m, SpiceChannel ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ visit_type_str(m, obj ? &(*obj)->family : NULL, "family", &err);
+ visit_type_str(m, obj ? &(*obj)->port : NULL, "port", &err);
+ visit_type_int(m, obj ? &(*obj)->connection_id : NULL, "connection-id", &err);
+ visit_type_int(m, obj ? &(*obj)->channel_type : NULL, "channel-type", &err);
+ visit_type_int(m, obj ? &(*obj)->channel_id : NULL, "channel-id", &err);
+ visit_type_bool(m, obj ? &(*obj)->tls : NULL, "tls", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceChannel(Visitor *m, SpiceChannel ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "SpiceChannel", name, sizeof(SpiceChannel), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_SpiceChannel_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SpiceChannelList(Visitor *m, SpiceChannelList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ SpiceChannelList *native_i = (SpiceChannelList *)i;
+ visit_type_SpiceChannel(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SpiceQueryMouseModeList(Visitor *m, SpiceQueryMouseModeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ SpiceQueryMouseModeList *native_i = (SpiceQueryMouseModeList *)i;
+ visit_type_SpiceQueryMouseMode(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SpiceQueryMouseMode(Visitor *m, SpiceQueryMouseMode * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, SpiceQueryMouseMode_lookup, "SpiceQueryMouseMode", name, errp);
+}
+
+static void visit_type_SpiceInfo_fields(Visitor *m, SpiceInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_bool(m, obj ? &(*obj)->enabled : NULL, "enabled", &err);
+ visit_type_bool(m, obj ? &(*obj)->migrated : NULL, "migrated", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err);
+ if (obj && (*obj)->has_host) {
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_port : NULL, "port", &err);
+ if (obj && (*obj)->has_port) {
+ visit_type_int(m, obj ? &(*obj)->port : NULL, "port", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_tls_port : NULL, "tls-port", &err);
+ if (obj && (*obj)->has_tls_port) {
+ visit_type_int(m, obj ? &(*obj)->tls_port : NULL, "tls-port", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_auth : NULL, "auth", &err);
+ if (obj && (*obj)->has_auth) {
+ visit_type_str(m, obj ? &(*obj)->auth : NULL, "auth", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_compiled_version : NULL, "compiled-version", &err);
+ if (obj && (*obj)->has_compiled_version) {
+ visit_type_str(m, obj ? &(*obj)->compiled_version : NULL, "compiled-version", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_SpiceQueryMouseMode(m, obj ? &(*obj)->mouse_mode : NULL, "mouse-mode", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_channels : NULL, "channels", &err);
+ if (obj && (*obj)->has_channels) {
+ visit_type_SpiceChannelList(m, obj ? &(*obj)->channels : NULL, "channels", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceInfo(Visitor *m, SpiceInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "SpiceInfo", name, sizeof(SpiceInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_SpiceInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SpiceInfoList(Visitor *m, SpiceInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ SpiceInfoList *native_i = (SpiceInfoList *)i;
+ visit_type_SpiceInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BalloonInfo_fields(Visitor *m, BalloonInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->actual : NULL, "actual", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BalloonInfo(Visitor *m, BalloonInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BalloonInfo", name, sizeof(BalloonInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BalloonInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BalloonInfoList(Visitor *m, BalloonInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BalloonInfoList *native_i = (BalloonInfoList *)i;
+ visit_type_BalloonInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_PciMemoryRange_fields(Visitor *m, PciMemoryRange ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->base : NULL, "base", &err);
+ visit_type_int(m, obj ? &(*obj)->limit : NULL, "limit", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRange(Visitor *m, PciMemoryRange ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "PciMemoryRange", name, sizeof(PciMemoryRange), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciMemoryRange_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_PciMemoryRangeList(Visitor *m, PciMemoryRangeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ PciMemoryRangeList *native_i = (PciMemoryRangeList *)i;
+ visit_type_PciMemoryRange(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_PciMemoryRegion_fields(Visitor *m, PciMemoryRegion ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->bar : NULL, "bar", &err);
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+ visit_type_int(m, obj ? &(*obj)->address : NULL, "address", &err);
+ visit_type_int(m, obj ? &(*obj)->size : NULL, "size", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_prefetch : NULL, "prefetch", &err);
+ if (obj && (*obj)->has_prefetch) {
+ visit_type_bool(m, obj ? &(*obj)->prefetch : NULL, "prefetch", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_mem_type_64 : NULL, "mem_type_64", &err);
+ if (obj && (*obj)->has_mem_type_64) {
+ visit_type_bool(m, obj ? &(*obj)->mem_type_64 : NULL, "mem_type_64", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRegion(Visitor *m, PciMemoryRegion ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "PciMemoryRegion", name, sizeof(PciMemoryRegion), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciMemoryRegion_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_PciMemoryRegionList(Visitor *m, PciMemoryRegionList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ PciMemoryRegionList *native_i = (PciMemoryRegionList *)i;
+ visit_type_PciMemoryRegion(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_PciBridgeInfo_bus_fields(Visitor *m, PciBridgeInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->bus.number : NULL, "number", &err);
+ visit_type_int(m, obj ? &(*obj)->bus.secondary : NULL, "secondary", &err);
+ visit_type_int(m, obj ? &(*obj)->bus.subordinate : NULL, "subordinate", &err);
+ visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.io_range : NULL, "io_range", &err);
+ visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.memory_range : NULL, "memory_range", &err);
+ visit_type_PciMemoryRange(m, obj ? &(*obj)->bus.prefetchable_range : NULL, "prefetchable_range", &err);
+
+ error_propagate(errp, err);
+}
+
+static void visit_type_PciBridgeInfo_fields(Visitor *m, PciBridgeInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ if (!error_is_set(errp)) {
+ Error **errp = &err; /* from outer scope */
+ Error *err = NULL;
+ visit_start_struct(m, NULL, "", "bus", 0, &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciBridgeInfo_bus_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+ visit_start_optional(m, obj ? &(*obj)->has_devices : NULL, "devices", &err);
+ if (obj && (*obj)->has_devices) {
+ visit_type_PciDeviceInfoList(m, obj ? &(*obj)->devices : NULL, "devices", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_PciBridgeInfo(Visitor *m, PciBridgeInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "PciBridgeInfo", name, sizeof(PciBridgeInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciBridgeInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_PciBridgeInfoList(Visitor *m, PciBridgeInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ PciBridgeInfoList *native_i = (PciBridgeInfoList *)i;
+ visit_type_PciBridgeInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_PciDeviceInfo_class_info_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->class_info.has_desc : NULL, "desc", &err);
+ if (obj && (*obj)->class_info.has_desc) {
+ visit_type_str(m, obj ? &(*obj)->class_info.desc : NULL, "desc", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_int(m, obj ? &(*obj)->class_info.q_class : NULL, "class", &err);
+
+ error_propagate(errp, err);
+}
+
+static void visit_type_PciDeviceInfo_id_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->id.device : NULL, "device", &err);
+ visit_type_int(m, obj ? &(*obj)->id.vendor : NULL, "vendor", &err);
+
+ error_propagate(errp, err);
+}
+
+static void visit_type_PciDeviceInfo_fields(Visitor *m, PciDeviceInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->bus : NULL, "bus", &err);
+ visit_type_int(m, obj ? &(*obj)->slot : NULL, "slot", &err);
+ visit_type_int(m, obj ? &(*obj)->function : NULL, "function", &err);
+ if (!error_is_set(errp)) {
+ Error **errp = &err; /* from outer scope */
+ Error *err = NULL;
+ visit_start_struct(m, NULL, "", "class_info", 0, &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciDeviceInfo_class_info_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+ if (!error_is_set(errp)) {
+ Error **errp = &err; /* from outer scope */
+ Error *err = NULL;
+ visit_start_struct(m, NULL, "", "id", 0, &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciDeviceInfo_id_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+ visit_start_optional(m, obj ? &(*obj)->has_irq : NULL, "irq", &err);
+ if (obj && (*obj)->has_irq) {
+ visit_type_int(m, obj ? &(*obj)->irq : NULL, "irq", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_str(m, obj ? &(*obj)->qdev_id : NULL, "qdev_id", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_pci_bridge : NULL, "pci_bridge", &err);
+ if (obj && (*obj)->has_pci_bridge) {
+ visit_type_PciBridgeInfo(m, obj ? &(*obj)->pci_bridge : NULL, "pci_bridge", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_PciMemoryRegionList(m, obj ? &(*obj)->regions : NULL, "regions", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceInfo(Visitor *m, PciDeviceInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "PciDeviceInfo", name, sizeof(PciDeviceInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciDeviceInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_PciDeviceInfoList(Visitor *m, PciDeviceInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ PciDeviceInfoList *native_i = (PciDeviceInfoList *)i;
+ visit_type_PciDeviceInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_PciInfo_fields(Visitor *m, PciInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->bus : NULL, "bus", &err);
+ visit_type_PciDeviceInfoList(m, obj ? &(*obj)->devices : NULL, "devices", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_PciInfo(Visitor *m, PciInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "PciInfo", name, sizeof(PciInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_PciInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_PciInfoList(Visitor *m, PciInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ PciInfoList *native_i = (PciInfoList *)i;
+ visit_type_PciInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOnErrorList(Visitor *m, BlockdevOnErrorList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOnErrorList *native_i = (BlockdevOnErrorList *)i;
+ visit_type_BlockdevOnError(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOnError(Visitor *m, BlockdevOnError * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockdevOnError_lookup, "BlockdevOnError", name, errp);
+}
+
+void visit_type_MirrorSyncModeList(Visitor *m, MirrorSyncModeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MirrorSyncModeList *native_i = (MirrorSyncModeList *)i;
+ visit_type_MirrorSyncMode(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MirrorSyncMode(Visitor *m, MirrorSyncMode * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, MirrorSyncMode_lookup, "MirrorSyncMode", name, errp);
+}
+
+void visit_type_BlockJobTypeList(Visitor *m, BlockJobTypeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockJobTypeList *native_i = (BlockJobTypeList *)i;
+ visit_type_BlockJobType(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockJobType(Visitor *m, BlockJobType * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockJobType_lookup, "BlockJobType", name, errp);
+}
+
+static void visit_type_BlockJobInfo_fields(Visitor *m, BlockJobInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ visit_type_int(m, obj ? &(*obj)->len : NULL, "len", &err);
+ visit_type_int(m, obj ? &(*obj)->offset : NULL, "offset", &err);
+ visit_type_bool(m, obj ? &(*obj)->busy : NULL, "busy", &err);
+ visit_type_bool(m, obj ? &(*obj)->paused : NULL, "paused", &err);
+ visit_type_int(m, obj ? &(*obj)->speed : NULL, "speed", &err);
+ visit_type_BlockDeviceIoStatus(m, obj ? &(*obj)->io_status : NULL, "io-status", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockJobInfo(Visitor *m, BlockJobInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockJobInfo", name, sizeof(BlockJobInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockJobInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockJobInfoList(Visitor *m, BlockJobInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockJobInfoList *native_i = (BlockJobInfoList *)i;
+ visit_type_BlockJobInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NewImageModeList(Visitor *m, NewImageModeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NewImageModeList *native_i = (NewImageModeList *)i;
+ visit_type_NewImageMode(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NewImageMode(Visitor *m, NewImageMode * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, NewImageMode_lookup, "NewImageMode", name, errp);
+}
+
+static void visit_type_BlockdevSnapshot_fields(Visitor *m, BlockdevSnapshot ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ visit_type_str(m, obj ? &(*obj)->snapshot_file : NULL, "snapshot-file", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_format : NULL, "format", &err);
+ if (obj && (*obj)->has_format) {
+ visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err);
+ if (obj && (*obj)->has_mode) {
+ visit_type_NewImageMode(m, obj ? &(*obj)->mode : NULL, "mode", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshot(Visitor *m, BlockdevSnapshot ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevSnapshot", name, sizeof(BlockdevSnapshot), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevSnapshot_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevSnapshotList(Visitor *m, BlockdevSnapshotList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevSnapshotList *native_i = (BlockdevSnapshotList *)i;
+ visit_type_BlockdevSnapshot(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevSnapshotInternal_fields(Visitor *m, BlockdevSnapshotInternal ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshotInternal(Visitor *m, BlockdevSnapshotInternal ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevSnapshotInternal", name, sizeof(BlockdevSnapshotInternal), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevSnapshotInternal_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevSnapshotInternalList(Visitor *m, BlockdevSnapshotInternalList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevSnapshotInternalList *native_i = (BlockdevSnapshotInternalList *)i;
+ visit_type_BlockdevSnapshotInternal(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_DriveBackup_fields(Visitor *m, DriveBackup ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+ visit_type_str(m, obj ? &(*obj)->target : NULL, "target", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_format : NULL, "format", &err);
+ if (obj && (*obj)->has_format) {
+ visit_type_str(m, obj ? &(*obj)->format : NULL, "format", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_MirrorSyncMode(m, obj ? &(*obj)->sync : NULL, "sync", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err);
+ if (obj && (*obj)->has_mode) {
+ visit_type_NewImageMode(m, obj ? &(*obj)->mode : NULL, "mode", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_speed : NULL, "speed", &err);
+ if (obj && (*obj)->has_speed) {
+ visit_type_int(m, obj ? &(*obj)->speed : NULL, "speed", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_on_source_error : NULL, "on-source-error", &err);
+ if (obj && (*obj)->has_on_source_error) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->on_source_error : NULL, "on-source-error", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_on_target_error : NULL, "on-target-error", &err);
+ if (obj && (*obj)->has_on_target_error) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->on_target_error : NULL, "on-target-error", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_DriveBackup(Visitor *m, DriveBackup ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "DriveBackup", name, sizeof(DriveBackup), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_DriveBackup_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_DriveBackupList(Visitor *m, DriveBackupList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ DriveBackupList *native_i = (DriveBackupList *)i;
+ visit_type_DriveBackup(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_Abort_fields(Visitor *m, Abort ** obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_Abort(Visitor *m, Abort ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "Abort", name, sizeof(Abort), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_Abort_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_AbortList(Visitor *m, AbortList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ AbortList *native_i = (AbortList *)i;
+ visit_type_Abort(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TransactionActionKind(Visitor *m, TransactionActionKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, TransactionActionKind_lookup, "TransactionActionKind", name, errp);
+}
+
+void visit_type_TransactionAction(Visitor *m, TransactionAction ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "TransactionAction", name, sizeof(TransactionAction), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_TransactionActionKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC:
+ visit_type_BlockdevSnapshot(m, &(*obj)->blockdev_snapshot_sync, "data", &err);
+ break;
+ case TRANSACTION_ACTION_KIND_DRIVE_BACKUP:
+ visit_type_DriveBackup(m, &(*obj)->drive_backup, "data", &err);
+ break;
+ case TRANSACTION_ACTION_KIND_ABORT:
+ visit_type_Abort(m, &(*obj)->abort, "data", &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC:
+ visit_type_BlockdevSnapshotInternal(m, &(*obj)->blockdev_snapshot_internal_sync, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TransactionActionList(Visitor *m, TransactionActionList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TransactionActionList *native_i = (TransactionActionList *)i;
+ visit_type_TransactionAction(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ObjectPropertyInfo_fields(Visitor *m, ObjectPropertyInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectPropertyInfo(Visitor *m, ObjectPropertyInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ObjectPropertyInfo", name, sizeof(ObjectPropertyInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ObjectPropertyInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ObjectPropertyInfoList(Visitor *m, ObjectPropertyInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ObjectPropertyInfoList *native_i = (ObjectPropertyInfoList *)i;
+ visit_type_ObjectPropertyInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ObjectTypeInfo_fields(Visitor *m, ObjectTypeInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectTypeInfo(Visitor *m, ObjectTypeInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ObjectTypeInfo", name, sizeof(ObjectTypeInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ObjectTypeInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ObjectTypeInfoList(Visitor *m, ObjectTypeInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ObjectTypeInfoList *native_i = (ObjectTypeInfoList *)i;
+ visit_type_ObjectTypeInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_DevicePropertyInfo_fields(Visitor *m, DevicePropertyInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_DevicePropertyInfo(Visitor *m, DevicePropertyInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "DevicePropertyInfo", name, sizeof(DevicePropertyInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_DevicePropertyInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_DevicePropertyInfoList(Visitor *m, DevicePropertyInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ DevicePropertyInfoList *native_i = (DevicePropertyInfoList *)i;
+ visit_type_DevicePropertyInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevNoneOptions_fields(Visitor *m, NetdevNoneOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNoneOptions(Visitor *m, NetdevNoneOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevNoneOptions", name, sizeof(NetdevNoneOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevNoneOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevNoneOptionsList(Visitor *m, NetdevNoneOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevNoneOptionsList *native_i = (NetdevNoneOptionsList *)i;
+ visit_type_NetdevNoneOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetLegacyNicOptions_fields(Visitor *m, NetLegacyNicOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_netdev : NULL, "netdev", &err);
+ if (obj && (*obj)->has_netdev) {
+ visit_type_str(m, obj ? &(*obj)->netdev : NULL, "netdev", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_macaddr : NULL, "macaddr", &err);
+ if (obj && (*obj)->has_macaddr) {
+ visit_type_str(m, obj ? &(*obj)->macaddr : NULL, "macaddr", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_model : NULL, "model", &err);
+ if (obj && (*obj)->has_model) {
+ visit_type_str(m, obj ? &(*obj)->model : NULL, "model", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_addr : NULL, "addr", &err);
+ if (obj && (*obj)->has_addr) {
+ visit_type_str(m, obj ? &(*obj)->addr : NULL, "addr", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vectors : NULL, "vectors", &err);
+ if (obj && (*obj)->has_vectors) {
+ visit_type_uint32(m, obj ? &(*obj)->vectors : NULL, "vectors", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyNicOptions(Visitor *m, NetLegacyNicOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetLegacyNicOptions", name, sizeof(NetLegacyNicOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetLegacyNicOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetLegacyNicOptionsList(Visitor *m, NetLegacyNicOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetLegacyNicOptionsList *native_i = (NetLegacyNicOptionsList *)i;
+ visit_type_NetLegacyNicOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_String_fields(Visitor *m, String ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->str : NULL, "str", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_String(Visitor *m, String ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "String", name, sizeof(String), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_String_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_StringList(Visitor *m, StringList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ StringList *native_i = (StringList *)i;
+ visit_type_String(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevUserOptions_fields(Visitor *m, NetdevUserOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_hostname : NULL, "hostname", &err);
+ if (obj && (*obj)->has_hostname) {
+ visit_type_str(m, obj ? &(*obj)->hostname : NULL, "hostname", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_q_restrict : NULL, "restrict", &err);
+ if (obj && (*obj)->has_q_restrict) {
+ visit_type_bool(m, obj ? &(*obj)->q_restrict : NULL, "restrict", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_ip : NULL, "ip", &err);
+ if (obj && (*obj)->has_ip) {
+ visit_type_str(m, obj ? &(*obj)->ip : NULL, "ip", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_net : NULL, "net", &err);
+ if (obj && (*obj)->has_net) {
+ visit_type_str(m, obj ? &(*obj)->net : NULL, "net", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_host : NULL, "host", &err);
+ if (obj && (*obj)->has_host) {
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_tftp : NULL, "tftp", &err);
+ if (obj && (*obj)->has_tftp) {
+ visit_type_str(m, obj ? &(*obj)->tftp : NULL, "tftp", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_bootfile : NULL, "bootfile", &err);
+ if (obj && (*obj)->has_bootfile) {
+ visit_type_str(m, obj ? &(*obj)->bootfile : NULL, "bootfile", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_dhcpstart : NULL, "dhcpstart", &err);
+ if (obj && (*obj)->has_dhcpstart) {
+ visit_type_str(m, obj ? &(*obj)->dhcpstart : NULL, "dhcpstart", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_dns : NULL, "dns", &err);
+ if (obj && (*obj)->has_dns) {
+ visit_type_str(m, obj ? &(*obj)->dns : NULL, "dns", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_dnssearch : NULL, "dnssearch", &err);
+ if (obj && (*obj)->has_dnssearch) {
+ visit_type_StringList(m, obj ? &(*obj)->dnssearch : NULL, "dnssearch", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_smb : NULL, "smb", &err);
+ if (obj && (*obj)->has_smb) {
+ visit_type_str(m, obj ? &(*obj)->smb : NULL, "smb", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_smbserver : NULL, "smbserver", &err);
+ if (obj && (*obj)->has_smbserver) {
+ visit_type_str(m, obj ? &(*obj)->smbserver : NULL, "smbserver", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_hostfwd : NULL, "hostfwd", &err);
+ if (obj && (*obj)->has_hostfwd) {
+ visit_type_StringList(m, obj ? &(*obj)->hostfwd : NULL, "hostfwd", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_guestfwd : NULL, "guestfwd", &err);
+ if (obj && (*obj)->has_guestfwd) {
+ visit_type_StringList(m, obj ? &(*obj)->guestfwd : NULL, "guestfwd", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevUserOptions(Visitor *m, NetdevUserOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevUserOptions", name, sizeof(NetdevUserOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevUserOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevUserOptionsList(Visitor *m, NetdevUserOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevUserOptionsList *native_i = (NetdevUserOptionsList *)i;
+ visit_type_NetdevUserOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevTapOptions_fields(Visitor *m, NetdevTapOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_ifname : NULL, "ifname", &err);
+ if (obj && (*obj)->has_ifname) {
+ visit_type_str(m, obj ? &(*obj)->ifname : NULL, "ifname", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_fd : NULL, "fd", &err);
+ if (obj && (*obj)->has_fd) {
+ visit_type_str(m, obj ? &(*obj)->fd : NULL, "fd", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_fds : NULL, "fds", &err);
+ if (obj && (*obj)->has_fds) {
+ visit_type_str(m, obj ? &(*obj)->fds : NULL, "fds", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_script : NULL, "script", &err);
+ if (obj && (*obj)->has_script) {
+ visit_type_str(m, obj ? &(*obj)->script : NULL, "script", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_downscript : NULL, "downscript", &err);
+ if (obj && (*obj)->has_downscript) {
+ visit_type_str(m, obj ? &(*obj)->downscript : NULL, "downscript", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_helper : NULL, "helper", &err);
+ if (obj && (*obj)->has_helper) {
+ visit_type_str(m, obj ? &(*obj)->helper : NULL, "helper", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_sndbuf : NULL, "sndbuf", &err);
+ if (obj && (*obj)->has_sndbuf) {
+ visit_type_size(m, obj ? &(*obj)->sndbuf : NULL, "sndbuf", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vnet_hdr : NULL, "vnet_hdr", &err);
+ if (obj && (*obj)->has_vnet_hdr) {
+ visit_type_bool(m, obj ? &(*obj)->vnet_hdr : NULL, "vnet_hdr", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vhost : NULL, "vhost", &err);
+ if (obj && (*obj)->has_vhost) {
+ visit_type_bool(m, obj ? &(*obj)->vhost : NULL, "vhost", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vhostfd : NULL, "vhostfd", &err);
+ if (obj && (*obj)->has_vhostfd) {
+ visit_type_str(m, obj ? &(*obj)->vhostfd : NULL, "vhostfd", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vhostfds : NULL, "vhostfds", &err);
+ if (obj && (*obj)->has_vhostfds) {
+ visit_type_str(m, obj ? &(*obj)->vhostfds : NULL, "vhostfds", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_vhostforce : NULL, "vhostforce", &err);
+ if (obj && (*obj)->has_vhostforce) {
+ visit_type_bool(m, obj ? &(*obj)->vhostforce : NULL, "vhostforce", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_queues : NULL, "queues", &err);
+ if (obj && (*obj)->has_queues) {
+ visit_type_uint32(m, obj ? &(*obj)->queues : NULL, "queues", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevTapOptions(Visitor *m, NetdevTapOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevTapOptions", name, sizeof(NetdevTapOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevTapOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevTapOptionsList(Visitor *m, NetdevTapOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevTapOptionsList *native_i = (NetdevTapOptionsList *)i;
+ visit_type_NetdevTapOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevSocketOptions_fields(Visitor *m, NetdevSocketOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_fd : NULL, "fd", &err);
+ if (obj && (*obj)->has_fd) {
+ visit_type_str(m, obj ? &(*obj)->fd : NULL, "fd", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_listen : NULL, "listen", &err);
+ if (obj && (*obj)->has_listen) {
+ visit_type_str(m, obj ? &(*obj)->listen : NULL, "listen", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_connect : NULL, "connect", &err);
+ if (obj && (*obj)->has_connect) {
+ visit_type_str(m, obj ? &(*obj)->connect : NULL, "connect", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_mcast : NULL, "mcast", &err);
+ if (obj && (*obj)->has_mcast) {
+ visit_type_str(m, obj ? &(*obj)->mcast : NULL, "mcast", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_localaddr : NULL, "localaddr", &err);
+ if (obj && (*obj)->has_localaddr) {
+ visit_type_str(m, obj ? &(*obj)->localaddr : NULL, "localaddr", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_udp : NULL, "udp", &err);
+ if (obj && (*obj)->has_udp) {
+ visit_type_str(m, obj ? &(*obj)->udp : NULL, "udp", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevSocketOptions(Visitor *m, NetdevSocketOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevSocketOptions", name, sizeof(NetdevSocketOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevSocketOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevSocketOptionsList(Visitor *m, NetdevSocketOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevSocketOptionsList *native_i = (NetdevSocketOptionsList *)i;
+ visit_type_NetdevSocketOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevVdeOptions_fields(Visitor *m, NetdevVdeOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_sock : NULL, "sock", &err);
+ if (obj && (*obj)->has_sock) {
+ visit_type_str(m, obj ? &(*obj)->sock : NULL, "sock", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_port : NULL, "port", &err);
+ if (obj && (*obj)->has_port) {
+ visit_type_uint16(m, obj ? &(*obj)->port : NULL, "port", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_group : NULL, "group", &err);
+ if (obj && (*obj)->has_group) {
+ visit_type_str(m, obj ? &(*obj)->group : NULL, "group", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_mode : NULL, "mode", &err);
+ if (obj && (*obj)->has_mode) {
+ visit_type_uint16(m, obj ? &(*obj)->mode : NULL, "mode", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevVdeOptions(Visitor *m, NetdevVdeOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevVdeOptions", name, sizeof(NetdevVdeOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevVdeOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevVdeOptionsList(Visitor *m, NetdevVdeOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevVdeOptionsList *native_i = (NetdevVdeOptionsList *)i;
+ visit_type_NetdevVdeOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevDumpOptions_fields(Visitor *m, NetdevDumpOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_len : NULL, "len", &err);
+ if (obj && (*obj)->has_len) {
+ visit_type_size(m, obj ? &(*obj)->len : NULL, "len", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_file : NULL, "file", &err);
+ if (obj && (*obj)->has_file) {
+ visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevDumpOptions(Visitor *m, NetdevDumpOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevDumpOptions", name, sizeof(NetdevDumpOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevDumpOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevDumpOptionsList(Visitor *m, NetdevDumpOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevDumpOptionsList *native_i = (NetdevDumpOptionsList *)i;
+ visit_type_NetdevDumpOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevBridgeOptions_fields(Visitor *m, NetdevBridgeOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_br : NULL, "br", &err);
+ if (obj && (*obj)->has_br) {
+ visit_type_str(m, obj ? &(*obj)->br : NULL, "br", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_helper : NULL, "helper", &err);
+ if (obj && (*obj)->has_helper) {
+ visit_type_str(m, obj ? &(*obj)->helper : NULL, "helper", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevBridgeOptions(Visitor *m, NetdevBridgeOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevBridgeOptions", name, sizeof(NetdevBridgeOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevBridgeOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevBridgeOptionsList(Visitor *m, NetdevBridgeOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevBridgeOptionsList *native_i = (NetdevBridgeOptionsList *)i;
+ visit_type_NetdevBridgeOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevHubPortOptions_fields(Visitor *m, NetdevHubPortOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int32(m, obj ? &(*obj)->hubid : NULL, "hubid", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevHubPortOptions(Visitor *m, NetdevHubPortOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevHubPortOptions", name, sizeof(NetdevHubPortOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevHubPortOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevHubPortOptionsList(Visitor *m, NetdevHubPortOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevHubPortOptionsList *native_i = (NetdevHubPortOptionsList *)i;
+ visit_type_NetdevHubPortOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetdevNetmapOptions_fields(Visitor *m, NetdevNetmapOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->ifname : NULL, "ifname", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_devname : NULL, "devname", &err);
+ if (obj && (*obj)->has_devname) {
+ visit_type_str(m, obj ? &(*obj)->devname : NULL, "devname", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNetmapOptions(Visitor *m, NetdevNetmapOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetdevNetmapOptions", name, sizeof(NetdevNetmapOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetdevNetmapOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevNetmapOptionsList(Visitor *m, NetdevNetmapOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevNetmapOptionsList *native_i = (NetdevNetmapOptionsList *)i;
+ visit_type_NetdevNetmapOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetClientOptionsKind(Visitor *m, NetClientOptionsKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, NetClientOptionsKind_lookup, "NetClientOptionsKind", name, errp);
+}
+
+void visit_type_NetClientOptions(Visitor *m, NetClientOptions ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "NetClientOptions", name, sizeof(NetClientOptions), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_NetClientOptionsKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case NET_CLIENT_OPTIONS_KIND_NONE:
+ visit_type_NetdevNoneOptions(m, &(*obj)->none, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_NIC:
+ visit_type_NetLegacyNicOptions(m, &(*obj)->nic, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_USER:
+ visit_type_NetdevUserOptions(m, &(*obj)->user, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_TAP:
+ visit_type_NetdevTapOptions(m, &(*obj)->tap, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_SOCKET:
+ visit_type_NetdevSocketOptions(m, &(*obj)->socket, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_VDE:
+ visit_type_NetdevVdeOptions(m, &(*obj)->vde, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_DUMP:
+ visit_type_NetdevDumpOptions(m, &(*obj)->dump, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_BRIDGE:
+ visit_type_NetdevBridgeOptions(m, &(*obj)->bridge, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_HUBPORT:
+ visit_type_NetdevHubPortOptions(m, &(*obj)->hubport, "data", &err);
+ break;
+ case NET_CLIENT_OPTIONS_KIND_NETMAP:
+ visit_type_NetdevNetmapOptions(m, &(*obj)->netmap, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetClientOptionsList(Visitor *m, NetClientOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetClientOptionsList *native_i = (NetClientOptionsList *)i;
+ visit_type_NetClientOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_NetLegacy_fields(Visitor *m, NetLegacy ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_vlan : NULL, "vlan", &err);
+ if (obj && (*obj)->has_vlan) {
+ visit_type_int32(m, obj ? &(*obj)->vlan : NULL, "vlan", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err);
+ if (obj && (*obj)->has_id) {
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_name : NULL, "name", &err);
+ if (obj && (*obj)->has_name) {
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_NetClientOptions(m, obj ? &(*obj)->opts : NULL, "opts", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacy(Visitor *m, NetLegacy ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "NetLegacy", name, sizeof(NetLegacy), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_NetLegacy_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetLegacyList(Visitor *m, NetLegacyList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetLegacyList *native_i = (NetLegacyList *)i;
+ visit_type_NetLegacy(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_Netdev_fields(Visitor *m, Netdev ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ visit_type_NetClientOptions(m, obj ? &(*obj)->opts : NULL, "opts", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_Netdev(Visitor *m, Netdev ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "Netdev", name, sizeof(Netdev), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_Netdev_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_NetdevList(Visitor *m, NetdevList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ NetdevList *native_i = (NetdevList *)i;
+ visit_type_Netdev(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_InetSocketAddress_fields(Visitor *m, InetSocketAddress ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->host : NULL, "host", &err);
+ visit_type_str(m, obj ? &(*obj)->port : NULL, "port", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_to : NULL, "to", &err);
+ if (obj && (*obj)->has_to) {
+ visit_type_uint16(m, obj ? &(*obj)->to : NULL, "to", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_ipv4 : NULL, "ipv4", &err);
+ if (obj && (*obj)->has_ipv4) {
+ visit_type_bool(m, obj ? &(*obj)->ipv4 : NULL, "ipv4", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_ipv6 : NULL, "ipv6", &err);
+ if (obj && (*obj)->has_ipv6) {
+ visit_type_bool(m, obj ? &(*obj)->ipv6 : NULL, "ipv6", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_InetSocketAddress(Visitor *m, InetSocketAddress ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "InetSocketAddress", name, sizeof(InetSocketAddress), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_InetSocketAddress_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_InetSocketAddressList(Visitor *m, InetSocketAddressList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ InetSocketAddressList *native_i = (InetSocketAddressList *)i;
+ visit_type_InetSocketAddress(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_UnixSocketAddress_fields(Visitor *m, UnixSocketAddress ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->path : NULL, "path", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_UnixSocketAddress(Visitor *m, UnixSocketAddress ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "UnixSocketAddress", name, sizeof(UnixSocketAddress), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_UnixSocketAddress_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_UnixSocketAddressList(Visitor *m, UnixSocketAddressList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ UnixSocketAddressList *native_i = (UnixSocketAddressList *)i;
+ visit_type_UnixSocketAddress(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SocketAddressKind(Visitor *m, SocketAddressKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, SocketAddressKind_lookup, "SocketAddressKind", name, errp);
+}
+
+void visit_type_SocketAddress(Visitor *m, SocketAddress ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "SocketAddress", name, sizeof(SocketAddress), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_SocketAddressKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case SOCKET_ADDRESS_KIND_INET:
+ visit_type_InetSocketAddress(m, &(*obj)->inet, "data", &err);
+ break;
+ case SOCKET_ADDRESS_KIND_UNIX:
+ visit_type_UnixSocketAddress(m, &(*obj)->q_unix, "data", &err);
+ break;
+ case SOCKET_ADDRESS_KIND_FD:
+ visit_type_String(m, &(*obj)->fd, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_SocketAddressList(Visitor *m, SocketAddressList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ SocketAddressList *native_i = (SocketAddressList *)i;
+ visit_type_SocketAddress(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_MachineInfo_fields(Visitor *m, MachineInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_alias : NULL, "alias", &err);
+ if (obj && (*obj)->has_alias) {
+ visit_type_str(m, obj ? &(*obj)->alias : NULL, "alias", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_is_default : NULL, "is-default", &err);
+ if (obj && (*obj)->has_is_default) {
+ visit_type_bool(m, obj ? &(*obj)->is_default : NULL, "is-default", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_int(m, obj ? &(*obj)->cpu_max : NULL, "cpu-max", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_MachineInfo(Visitor *m, MachineInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "MachineInfo", name, sizeof(MachineInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_MachineInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_MachineInfoList(Visitor *m, MachineInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ MachineInfoList *native_i = (MachineInfoList *)i;
+ visit_type_MachineInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_CpuDefinitionInfo_fields(Visitor *m, CpuDefinitionInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuDefinitionInfo(Visitor *m, CpuDefinitionInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "CpuDefinitionInfo", name, sizeof(CpuDefinitionInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_CpuDefinitionInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CpuDefinitionInfoList(Visitor *m, CpuDefinitionInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CpuDefinitionInfoList *native_i = (CpuDefinitionInfoList *)i;
+ visit_type_CpuDefinitionInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_AddfdInfo_fields(Visitor *m, AddfdInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->fdset_id : NULL, "fdset-id", &err);
+ visit_type_int(m, obj ? &(*obj)->fd : NULL, "fd", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_AddfdInfo(Visitor *m, AddfdInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "AddfdInfo", name, sizeof(AddfdInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_AddfdInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_AddfdInfoList(Visitor *m, AddfdInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ AddfdInfoList *native_i = (AddfdInfoList *)i;
+ visit_type_AddfdInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_FdsetFdInfo_fields(Visitor *m, FdsetFdInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->fd : NULL, "fd", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_opaque : NULL, "opaque", &err);
+ if (obj && (*obj)->has_opaque) {
+ visit_type_str(m, obj ? &(*obj)->opaque : NULL, "opaque", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetFdInfo(Visitor *m, FdsetFdInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "FdsetFdInfo", name, sizeof(FdsetFdInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_FdsetFdInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_FdsetFdInfoList(Visitor *m, FdsetFdInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ FdsetFdInfoList *native_i = (FdsetFdInfoList *)i;
+ visit_type_FdsetFdInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_FdsetInfo_fields(Visitor *m, FdsetInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->fdset_id : NULL, "fdset-id", &err);
+ visit_type_FdsetFdInfoList(m, obj ? &(*obj)->fds : NULL, "fds", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetInfo(Visitor *m, FdsetInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "FdsetInfo", name, sizeof(FdsetInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_FdsetInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_FdsetInfoList(Visitor *m, FdsetInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ FdsetInfoList *native_i = (FdsetInfoList *)i;
+ visit_type_FdsetInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_TargetInfo_fields(Visitor *m, TargetInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->arch : NULL, "arch", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_TargetInfo(Visitor *m, TargetInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "TargetInfo", name, sizeof(TargetInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_TargetInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TargetInfoList(Visitor *m, TargetInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TargetInfoList *native_i = (TargetInfoList *)i;
+ visit_type_TargetInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_QKeyCodeList(Visitor *m, QKeyCodeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ QKeyCodeList *native_i = (QKeyCodeList *)i;
+ visit_type_QKeyCode(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_QKeyCode(Visitor *m, QKeyCode * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, QKeyCode_lookup, "QKeyCode", name, errp);
+}
+
+void visit_type_KeyValueKind(Visitor *m, KeyValueKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, KeyValueKind_lookup, "KeyValueKind", name, errp);
+}
+
+void visit_type_KeyValue(Visitor *m, KeyValue ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "KeyValue", name, sizeof(KeyValue), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_KeyValueKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case KEY_VALUE_KIND_NUMBER:
+ visit_type_int(m, &(*obj)->number, "data", &err);
+ break;
+ case KEY_VALUE_KIND_QCODE:
+ visit_type_QKeyCode(m, &(*obj)->qcode, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_KeyValueList(Visitor *m, KeyValueList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ KeyValueList *native_i = (KeyValueList *)i;
+ visit_type_KeyValue(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevFile_fields(Visitor *m, ChardevFile ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_in : NULL, "in", &err);
+ if (obj && (*obj)->has_in) {
+ visit_type_str(m, obj ? &(*obj)->in : NULL, "in", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_str(m, obj ? &(*obj)->out : NULL, "out", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevFile(Visitor *m, ChardevFile ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevFile", name, sizeof(ChardevFile), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevFile_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevFileList(Visitor *m, ChardevFileList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevFileList *native_i = (ChardevFileList *)i;
+ visit_type_ChardevFile(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevHostdev_fields(Visitor *m, ChardevHostdev ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->device : NULL, "device", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevHostdev(Visitor *m, ChardevHostdev ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevHostdev", name, sizeof(ChardevHostdev), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevHostdev_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevHostdevList(Visitor *m, ChardevHostdevList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevHostdevList *native_i = (ChardevHostdevList *)i;
+ visit_type_ChardevHostdev(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevSocket_fields(Visitor *m, ChardevSocket ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_SocketAddress(m, obj ? &(*obj)->addr : NULL, "addr", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_server : NULL, "server", &err);
+ if (obj && (*obj)->has_server) {
+ visit_type_bool(m, obj ? &(*obj)->server : NULL, "server", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_wait : NULL, "wait", &err);
+ if (obj && (*obj)->has_wait) {
+ visit_type_bool(m, obj ? &(*obj)->wait : NULL, "wait", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_nodelay : NULL, "nodelay", &err);
+ if (obj && (*obj)->has_nodelay) {
+ visit_type_bool(m, obj ? &(*obj)->nodelay : NULL, "nodelay", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_telnet : NULL, "telnet", &err);
+ if (obj && (*obj)->has_telnet) {
+ visit_type_bool(m, obj ? &(*obj)->telnet : NULL, "telnet", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSocket(Visitor *m, ChardevSocket ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevSocket", name, sizeof(ChardevSocket), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevSocket_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevSocketList(Visitor *m, ChardevSocketList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevSocketList *native_i = (ChardevSocketList *)i;
+ visit_type_ChardevSocket(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevUdp_fields(Visitor *m, ChardevUdp ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_SocketAddress(m, obj ? &(*obj)->remote : NULL, "remote", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_local : NULL, "local", &err);
+ if (obj && (*obj)->has_local) {
+ visit_type_SocketAddress(m, obj ? &(*obj)->local : NULL, "local", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevUdp(Visitor *m, ChardevUdp ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevUdp", name, sizeof(ChardevUdp), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevUdp_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevUdpList(Visitor *m, ChardevUdpList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevUdpList *native_i = (ChardevUdpList *)i;
+ visit_type_ChardevUdp(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevMux_fields(Visitor *m, ChardevMux ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->chardev : NULL, "chardev", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevMux(Visitor *m, ChardevMux ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevMux", name, sizeof(ChardevMux), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevMux_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevMuxList(Visitor *m, ChardevMuxList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevMuxList *native_i = (ChardevMuxList *)i;
+ visit_type_ChardevMux(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevStdio_fields(Visitor *m, ChardevStdio ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_signal : NULL, "signal", &err);
+ if (obj && (*obj)->has_signal) {
+ visit_type_bool(m, obj ? &(*obj)->signal : NULL, "signal", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevStdio(Visitor *m, ChardevStdio ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevStdio", name, sizeof(ChardevStdio), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevStdio_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevStdioList(Visitor *m, ChardevStdioList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevStdioList *native_i = (ChardevStdioList *)i;
+ visit_type_ChardevStdio(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevSpiceChannel_fields(Visitor *m, ChardevSpiceChannel ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->type : NULL, "type", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpiceChannel(Visitor *m, ChardevSpiceChannel ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevSpiceChannel", name, sizeof(ChardevSpiceChannel), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevSpiceChannel_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevSpiceChannelList(Visitor *m, ChardevSpiceChannelList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevSpiceChannelList *native_i = (ChardevSpiceChannelList *)i;
+ visit_type_ChardevSpiceChannel(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevSpicePort_fields(Visitor *m, ChardevSpicePort ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->fqdn : NULL, "fqdn", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpicePort(Visitor *m, ChardevSpicePort ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevSpicePort", name, sizeof(ChardevSpicePort), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevSpicePort_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevSpicePortList(Visitor *m, ChardevSpicePortList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevSpicePortList *native_i = (ChardevSpicePortList *)i;
+ visit_type_ChardevSpicePort(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevVC_fields(Visitor *m, ChardevVC ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_width : NULL, "width", &err);
+ if (obj && (*obj)->has_width) {
+ visit_type_int(m, obj ? &(*obj)->width : NULL, "width", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_height : NULL, "height", &err);
+ if (obj && (*obj)->has_height) {
+ visit_type_int(m, obj ? &(*obj)->height : NULL, "height", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cols : NULL, "cols", &err);
+ if (obj && (*obj)->has_cols) {
+ visit_type_int(m, obj ? &(*obj)->cols : NULL, "cols", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_rows : NULL, "rows", &err);
+ if (obj && (*obj)->has_rows) {
+ visit_type_int(m, obj ? &(*obj)->rows : NULL, "rows", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevVC(Visitor *m, ChardevVC ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevVC", name, sizeof(ChardevVC), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevVC_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevVCList(Visitor *m, ChardevVCList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevVCList *native_i = (ChardevVCList *)i;
+ visit_type_ChardevVC(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevRingbuf_fields(Visitor *m, ChardevRingbuf ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_size : NULL, "size", &err);
+ if (obj && (*obj)->has_size) {
+ visit_type_int(m, obj ? &(*obj)->size : NULL, "size", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevRingbuf(Visitor *m, ChardevRingbuf ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevRingbuf", name, sizeof(ChardevRingbuf), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevRingbuf_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevRingbufList(Visitor *m, ChardevRingbufList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevRingbufList *native_i = (ChardevRingbufList *)i;
+ visit_type_ChardevRingbuf(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevDummy_fields(Visitor *m, ChardevDummy ** obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevDummy(Visitor *m, ChardevDummy ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevDummy", name, sizeof(ChardevDummy), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevDummy_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevDummyList(Visitor *m, ChardevDummyList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevDummyList *native_i = (ChardevDummyList *)i;
+ visit_type_ChardevDummy(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevBackendKind(Visitor *m, ChardevBackendKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, ChardevBackendKind_lookup, "ChardevBackendKind", name, errp);
+}
+
+void visit_type_ChardevBackend(Visitor *m, ChardevBackend ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "ChardevBackend", name, sizeof(ChardevBackend), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_ChardevBackendKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case CHARDEV_BACKEND_KIND_FILE:
+ visit_type_ChardevFile(m, &(*obj)->file, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SERIAL:
+ visit_type_ChardevHostdev(m, &(*obj)->serial, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PARALLEL:
+ visit_type_ChardevHostdev(m, &(*obj)->parallel, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PIPE:
+ visit_type_ChardevHostdev(m, &(*obj)->pipe, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SOCKET:
+ visit_type_ChardevSocket(m, &(*obj)->socket, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_UDP:
+ visit_type_ChardevUdp(m, &(*obj)->udp, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PTY:
+ visit_type_ChardevDummy(m, &(*obj)->pty, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_NULL:
+ visit_type_ChardevDummy(m, &(*obj)->null, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MUX:
+ visit_type_ChardevMux(m, &(*obj)->mux, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MSMOUSE:
+ visit_type_ChardevDummy(m, &(*obj)->msmouse, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_BRAILLE:
+ visit_type_ChardevDummy(m, &(*obj)->braille, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_STDIO:
+ visit_type_ChardevStdio(m, &(*obj)->stdio, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_CONSOLE:
+ visit_type_ChardevDummy(m, &(*obj)->console, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SPICEVMC:
+ visit_type_ChardevSpiceChannel(m, &(*obj)->spicevmc, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SPICEPORT:
+ visit_type_ChardevSpicePort(m, &(*obj)->spiceport, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_VC:
+ visit_type_ChardevVC(m, &(*obj)->vc, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_RINGBUF:
+ visit_type_ChardevRingbuf(m, &(*obj)->ringbuf, "data", &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MEMORY:
+ visit_type_ChardevRingbuf(m, &(*obj)->memory, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevBackendList(Visitor *m, ChardevBackendList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevBackendList *native_i = (ChardevBackendList *)i;
+ visit_type_ChardevBackend(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_ChardevReturn_fields(Visitor *m, ChardevReturn ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_pty : NULL, "pty", &err);
+ if (obj && (*obj)->has_pty) {
+ visit_type_str(m, obj ? &(*obj)->pty : NULL, "pty", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevReturn(Visitor *m, ChardevReturn ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "ChardevReturn", name, sizeof(ChardevReturn), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_ChardevReturn_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_ChardevReturnList(Visitor *m, ChardevReturnList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ ChardevReturnList *native_i = (ChardevReturnList *)i;
+ visit_type_ChardevReturn(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TpmModelList(Visitor *m, TpmModelList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TpmModelList *native_i = (TpmModelList *)i;
+ visit_type_TpmModel(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TpmModel(Visitor *m, TpmModel * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, TpmModel_lookup, "TpmModel", name, errp);
+}
+
+void visit_type_TpmTypeList(Visitor *m, TpmTypeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TpmTypeList *native_i = (TpmTypeList *)i;
+ visit_type_TpmType(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TpmType(Visitor *m, TpmType * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, TpmType_lookup, "TpmType", name, errp);
+}
+
+static void visit_type_TPMPassthroughOptions_fields(Visitor *m, TPMPassthroughOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_path : NULL, "path", &err);
+ if (obj && (*obj)->has_path) {
+ visit_type_str(m, obj ? &(*obj)->path : NULL, "path", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cancel_path : NULL, "cancel-path", &err);
+ if (obj && (*obj)->has_cancel_path) {
+ visit_type_str(m, obj ? &(*obj)->cancel_path : NULL, "cancel-path", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMPassthroughOptions(Visitor *m, TPMPassthroughOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "TPMPassthroughOptions", name, sizeof(TPMPassthroughOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_TPMPassthroughOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TPMPassthroughOptionsList(Visitor *m, TPMPassthroughOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TPMPassthroughOptionsList *native_i = (TPMPassthroughOptionsList *)i;
+ visit_type_TPMPassthroughOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TpmTypeOptionsKind(Visitor *m, TpmTypeOptionsKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, TpmTypeOptionsKind_lookup, "TpmTypeOptionsKind", name, errp);
+}
+
+void visit_type_TpmTypeOptions(Visitor *m, TpmTypeOptions ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "TpmTypeOptions", name, sizeof(TpmTypeOptions), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_TpmTypeOptionsKind(m, &(*obj)->kind, "type", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
+ visit_type_TPMPassthroughOptions(m, &(*obj)->passthrough, "data", &err);
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TpmTypeOptionsList(Visitor *m, TpmTypeOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TpmTypeOptionsList *native_i = (TpmTypeOptionsList *)i;
+ visit_type_TpmTypeOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_TPMInfo_fields(Visitor *m, TPMInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ visit_type_TpmModel(m, obj ? &(*obj)->model : NULL, "model", &err);
+ visit_type_TpmTypeOptions(m, obj ? &(*obj)->options : NULL, "options", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMInfo(Visitor *m, TPMInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "TPMInfo", name, sizeof(TPMInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_TPMInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_TPMInfoList(Visitor *m, TPMInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ TPMInfoList *native_i = (TPMInfoList *)i;
+ visit_type_TPMInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_AcpiTableOptions_fields(Visitor *m, AcpiTableOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_sig : NULL, "sig", &err);
+ if (obj && (*obj)->has_sig) {
+ visit_type_str(m, obj ? &(*obj)->sig : NULL, "sig", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_rev : NULL, "rev", &err);
+ if (obj && (*obj)->has_rev) {
+ visit_type_uint8(m, obj ? &(*obj)->rev : NULL, "rev", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_oem_id : NULL, "oem_id", &err);
+ if (obj && (*obj)->has_oem_id) {
+ visit_type_str(m, obj ? &(*obj)->oem_id : NULL, "oem_id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_oem_table_id : NULL, "oem_table_id", &err);
+ if (obj && (*obj)->has_oem_table_id) {
+ visit_type_str(m, obj ? &(*obj)->oem_table_id : NULL, "oem_table_id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_oem_rev : NULL, "oem_rev", &err);
+ if (obj && (*obj)->has_oem_rev) {
+ visit_type_uint32(m, obj ? &(*obj)->oem_rev : NULL, "oem_rev", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_asl_compiler_id : NULL, "asl_compiler_id", &err);
+ if (obj && (*obj)->has_asl_compiler_id) {
+ visit_type_str(m, obj ? &(*obj)->asl_compiler_id : NULL, "asl_compiler_id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_asl_compiler_rev : NULL, "asl_compiler_rev", &err);
+ if (obj && (*obj)->has_asl_compiler_rev) {
+ visit_type_uint32(m, obj ? &(*obj)->asl_compiler_rev : NULL, "asl_compiler_rev", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_file : NULL, "file", &err);
+ if (obj && (*obj)->has_file) {
+ visit_type_str(m, obj ? &(*obj)->file : NULL, "file", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_data : NULL, "data", &err);
+ if (obj && (*obj)->has_data) {
+ visit_type_str(m, obj ? &(*obj)->data : NULL, "data", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_AcpiTableOptions(Visitor *m, AcpiTableOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "AcpiTableOptions", name, sizeof(AcpiTableOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_AcpiTableOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_AcpiTableOptionsList(Visitor *m, AcpiTableOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ AcpiTableOptionsList *native_i = (AcpiTableOptionsList *)i;
+ visit_type_AcpiTableOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CommandLineParameterTypeList(Visitor *m, CommandLineParameterTypeList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CommandLineParameterTypeList *native_i = (CommandLineParameterTypeList *)i;
+ visit_type_CommandLineParameterType(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CommandLineParameterType(Visitor *m, CommandLineParameterType * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, CommandLineParameterType_lookup, "CommandLineParameterType", name, errp);
+}
+
+static void visit_type_CommandLineParameterInfo_fields(Visitor *m, CommandLineParameterInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_CommandLineParameterType(m, obj ? &(*obj)->type : NULL, "type", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_help : NULL, "help", &err);
+ if (obj && (*obj)->has_help) {
+ visit_type_str(m, obj ? &(*obj)->help : NULL, "help", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineParameterInfo(Visitor *m, CommandLineParameterInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "CommandLineParameterInfo", name, sizeof(CommandLineParameterInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_CommandLineParameterInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CommandLineParameterInfoList(Visitor *m, CommandLineParameterInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CommandLineParameterInfoList *native_i = (CommandLineParameterInfoList *)i;
+ visit_type_CommandLineParameterInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_CommandLineOptionInfo_fields(Visitor *m, CommandLineOptionInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->option : NULL, "option", &err);
+ visit_type_CommandLineParameterInfoList(m, obj ? &(*obj)->parameters : NULL, "parameters", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineOptionInfo(Visitor *m, CommandLineOptionInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "CommandLineOptionInfo", name, sizeof(CommandLineOptionInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_CommandLineOptionInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_CommandLineOptionInfoList(Visitor *m, CommandLineOptionInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ CommandLineOptionInfoList *native_i = (CommandLineOptionInfoList *)i;
+ visit_type_CommandLineOptionInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_X86CPURegister32List(Visitor *m, X86CPURegister32List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ X86CPURegister32List *native_i = (X86CPURegister32List *)i;
+ visit_type_X86CPURegister32(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_X86CPURegister32(Visitor *m, X86CPURegister32 * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, X86CPURegister32_lookup, "X86CPURegister32", name, errp);
+}
+
+static void visit_type_X86CPUFeatureWordInfo_fields(Visitor *m, X86CPUFeatureWordInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_int(m, obj ? &(*obj)->cpuid_input_eax : NULL, "cpuid-input-eax", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cpuid_input_ecx : NULL, "cpuid-input-ecx", &err);
+ if (obj && (*obj)->has_cpuid_input_ecx) {
+ visit_type_int(m, obj ? &(*obj)->cpuid_input_ecx : NULL, "cpuid-input-ecx", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_type_X86CPURegister32(m, obj ? &(*obj)->cpuid_register : NULL, "cpuid-register", &err);
+ visit_type_int(m, obj ? &(*obj)->features : NULL, "features", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_X86CPUFeatureWordInfo(Visitor *m, X86CPUFeatureWordInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "X86CPUFeatureWordInfo", name, sizeof(X86CPUFeatureWordInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_X86CPUFeatureWordInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_X86CPUFeatureWordInfoList(Visitor *m, X86CPUFeatureWordInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ X86CPUFeatureWordInfoList *native_i = (X86CPUFeatureWordInfoList *)i;
+ visit_type_X86CPUFeatureWordInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_RxStateList(Visitor *m, RxStateList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ RxStateList *native_i = (RxStateList *)i;
+ visit_type_RxState(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_RxState(Visitor *m, RxState * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, RxState_lookup, "RxState", name, errp);
+}
+
+static void visit_type_RxFilterInfo_fields(Visitor *m, RxFilterInfo ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->name : NULL, "name", &err);
+ visit_type_bool(m, obj ? &(*obj)->promiscuous : NULL, "promiscuous", &err);
+ visit_type_RxState(m, obj ? &(*obj)->multicast : NULL, "multicast", &err);
+ visit_type_RxState(m, obj ? &(*obj)->unicast : NULL, "unicast", &err);
+ visit_type_bool(m, obj ? &(*obj)->broadcast_allowed : NULL, "broadcast-allowed", &err);
+ visit_type_bool(m, obj ? &(*obj)->multicast_overflow : NULL, "multicast-overflow", &err);
+ visit_type_bool(m, obj ? &(*obj)->unicast_overflow : NULL, "unicast-overflow", &err);
+ visit_type_str(m, obj ? &(*obj)->main_mac : NULL, "main-mac", &err);
+ visit_type_intList(m, obj ? &(*obj)->vlan_table : NULL, "vlan-table", &err);
+ visit_type_strList(m, obj ? &(*obj)->unicast_table : NULL, "unicast-table", &err);
+ visit_type_strList(m, obj ? &(*obj)->multicast_table : NULL, "multicast-table", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_RxFilterInfo(Visitor *m, RxFilterInfo ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "RxFilterInfo", name, sizeof(RxFilterInfo), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_RxFilterInfo_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_RxFilterInfoList(Visitor *m, RxFilterInfoList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ RxFilterInfoList *native_i = (RxFilterInfoList *)i;
+ visit_type_RxFilterInfo(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevDiscardOptionsList(Visitor *m, BlockdevDiscardOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevDiscardOptionsList *native_i = (BlockdevDiscardOptionsList *)i;
+ visit_type_BlockdevDiscardOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevDiscardOptions(Visitor *m, BlockdevDiscardOptions * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockdevDiscardOptions_lookup, "BlockdevDiscardOptions", name, errp);
+}
+
+void visit_type_BlockdevAioOptionsList(Visitor *m, BlockdevAioOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevAioOptionsList *native_i = (BlockdevAioOptionsList *)i;
+ visit_type_BlockdevAioOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevAioOptions(Visitor *m, BlockdevAioOptions * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockdevAioOptions_lookup, "BlockdevAioOptions", name, errp);
+}
+
+static void visit_type_BlockdevCacheOptions_fields(Visitor *m, BlockdevCacheOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_writeback : NULL, "writeback", &err);
+ if (obj && (*obj)->has_writeback) {
+ visit_type_bool(m, obj ? &(*obj)->writeback : NULL, "writeback", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_direct : NULL, "direct", &err);
+ if (obj && (*obj)->has_direct) {
+ visit_type_bool(m, obj ? &(*obj)->direct : NULL, "direct", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_no_flush : NULL, "no-flush", &err);
+ if (obj && (*obj)->has_no_flush) {
+ visit_type_bool(m, obj ? &(*obj)->no_flush : NULL, "no-flush", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCacheOptions(Visitor *m, BlockdevCacheOptions ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevCacheOptions", name, sizeof(BlockdevCacheOptions), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevCacheOptions_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevCacheOptionsList(Visitor *m, BlockdevCacheOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevCacheOptionsList *native_i = (BlockdevCacheOptionsList *)i;
+ visit_type_BlockdevCacheOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsBase_fields(Visitor *m, BlockdevOptionsBase ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->driver : NULL, "driver", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err);
+ if (obj && (*obj)->has_id) {
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_discard : NULL, "discard", &err);
+ if (obj && (*obj)->has_discard) {
+ visit_type_BlockdevDiscardOptions(m, obj ? &(*obj)->discard : NULL, "discard", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cache : NULL, "cache", &err);
+ if (obj && (*obj)->has_cache) {
+ visit_type_BlockdevCacheOptions(m, obj ? &(*obj)->cache : NULL, "cache", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_aio : NULL, "aio", &err);
+ if (obj && (*obj)->has_aio) {
+ visit_type_BlockdevAioOptions(m, obj ? &(*obj)->aio : NULL, "aio", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_rerror : NULL, "rerror", &err);
+ if (obj && (*obj)->has_rerror) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->rerror : NULL, "rerror", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_werror : NULL, "werror", &err);
+ if (obj && (*obj)->has_werror) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->werror : NULL, "werror", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_read_only : NULL, "read-only", &err);
+ if (obj && (*obj)->has_read_only) {
+ visit_type_bool(m, obj ? &(*obj)->read_only : NULL, "read-only", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsBase(Visitor *m, BlockdevOptionsBase ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsBase", name, sizeof(BlockdevOptionsBase), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsBase_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsBaseList(Visitor *m, BlockdevOptionsBaseList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsBaseList *native_i = (BlockdevOptionsBaseList *)i;
+ visit_type_BlockdevOptionsBase(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsFile_fields(Visitor *m, BlockdevOptionsFile ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->filename : NULL, "filename", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsFile(Visitor *m, BlockdevOptionsFile ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsFile", name, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsFile_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsFileList(Visitor *m, BlockdevOptionsFileList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsFileList *native_i = (BlockdevOptionsFileList *)i;
+ visit_type_BlockdevOptionsFile(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsVVFAT_fields(Visitor *m, BlockdevOptionsVVFAT ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_str(m, obj ? &(*obj)->dir : NULL, "dir", &err);
+ visit_start_optional(m, obj ? &(*obj)->has_fat_type : NULL, "fat-type", &err);
+ if (obj && (*obj)->has_fat_type) {
+ visit_type_int(m, obj ? &(*obj)->fat_type : NULL, "fat-type", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_floppy : NULL, "floppy", &err);
+ if (obj && (*obj)->has_floppy) {
+ visit_type_bool(m, obj ? &(*obj)->floppy : NULL, "floppy", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_rw : NULL, "rw", &err);
+ if (obj && (*obj)->has_rw) {
+ visit_type_bool(m, obj ? &(*obj)->rw : NULL, "rw", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsVVFAT(Visitor *m, BlockdevOptionsVVFAT ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsVVFAT", name, sizeof(BlockdevOptionsVVFAT), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsVVFAT_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsVVFATList(Visitor *m, BlockdevOptionsVVFATList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsVVFATList *native_i = (BlockdevOptionsVVFATList *)i;
+ visit_type_BlockdevOptionsVVFAT(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsGenericFormat_fields(Visitor *m, BlockdevOptionsGenericFormat ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_type_BlockdevRef(m, obj ? &(*obj)->file : NULL, "file", &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericFormat(Visitor *m, BlockdevOptionsGenericFormat ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsGenericFormat", name, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsGenericFormatList(Visitor *m, BlockdevOptionsGenericFormatList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsGenericFormatList *native_i = (BlockdevOptionsGenericFormatList *)i;
+ visit_type_BlockdevOptionsGenericFormat(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsGenericCOWFormat_fields(Visitor *m, BlockdevOptionsGenericCOWFormat ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_implicit_struct(m, obj ? (void**) &(*obj)->base : NULL, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, obj ? &(*obj)->base : NULL, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ visit_start_optional(m, obj ? &(*obj)->has_backing : NULL, "backing", &err);
+ if (obj && (*obj)->has_backing) {
+ visit_type_BlockdevRef(m, obj ? &(*obj)->backing : NULL, "backing", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericCOWFormat(Visitor *m, BlockdevOptionsGenericCOWFormat ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsGenericCOWFormat", name, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsGenericCOWFormatList(Visitor *m, BlockdevOptionsGenericCOWFormatList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsGenericCOWFormatList *native_i = (BlockdevOptionsGenericCOWFormatList *)i;
+ visit_type_BlockdevOptionsGenericCOWFormat(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+static void visit_type_BlockdevOptionsQcow2_fields(Visitor *m, BlockdevOptionsQcow2 ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_implicit_struct(m, obj ? (void**) &(*obj)->base : NULL, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, obj ? &(*obj)->base : NULL, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ visit_start_optional(m, obj ? &(*obj)->has_lazy_refcounts : NULL, "lazy-refcounts", &err);
+ if (obj && (*obj)->has_lazy_refcounts) {
+ visit_type_bool(m, obj ? &(*obj)->lazy_refcounts : NULL, "lazy-refcounts", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_pass_discard_request : NULL, "pass-discard-request", &err);
+ if (obj && (*obj)->has_pass_discard_request) {
+ visit_type_bool(m, obj ? &(*obj)->pass_discard_request : NULL, "pass-discard-request", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_pass_discard_snapshot : NULL, "pass-discard-snapshot", &err);
+ if (obj && (*obj)->has_pass_discard_snapshot) {
+ visit_type_bool(m, obj ? &(*obj)->pass_discard_snapshot : NULL, "pass-discard-snapshot", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_pass_discard_other : NULL, "pass-discard-other", &err);
+ if (obj && (*obj)->has_pass_discard_other) {
+ visit_type_bool(m, obj ? &(*obj)->pass_discard_other : NULL, "pass-discard-other", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQcow2(Visitor *m, BlockdevOptionsQcow2 ** obj, const char *name, Error **errp)
+{
+ if (!error_is_set(errp)) {
+ Error *err = NULL;
+ visit_start_struct(m, (void **)obj, "BlockdevOptionsQcow2", name, sizeof(BlockdevOptionsQcow2), &err);
+ if (!err) {
+ if (!obj || *obj) {
+ visit_type_BlockdevOptionsQcow2_fields(m, obj, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsQcow2List(Visitor *m, BlockdevOptionsQcow2List ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsQcow2List *native_i = (BlockdevOptionsQcow2List *)i;
+ visit_type_BlockdevOptionsQcow2(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsKind(Visitor *m, BlockdevOptionsKind * obj, const char *name, Error **errp)
+{
+ visit_type_enum(m, (int *)obj, BlockdevOptionsKind_lookup, "BlockdevOptionsKind", name, errp);
+}
+
+static void visit_type_BlockdevOptions_fields(Visitor *m, BlockdevOptions ** obj, Error **errp)
+{
+ Error *err = NULL;
+ visit_start_optional(m, obj ? &(*obj)->has_id : NULL, "id", &err);
+ if (obj && (*obj)->has_id) {
+ visit_type_str(m, obj ? &(*obj)->id : NULL, "id", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_discard : NULL, "discard", &err);
+ if (obj && (*obj)->has_discard) {
+ visit_type_BlockdevDiscardOptions(m, obj ? &(*obj)->discard : NULL, "discard", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_cache : NULL, "cache", &err);
+ if (obj && (*obj)->has_cache) {
+ visit_type_BlockdevCacheOptions(m, obj ? &(*obj)->cache : NULL, "cache", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_aio : NULL, "aio", &err);
+ if (obj && (*obj)->has_aio) {
+ visit_type_BlockdevAioOptions(m, obj ? &(*obj)->aio : NULL, "aio", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_rerror : NULL, "rerror", &err);
+ if (obj && (*obj)->has_rerror) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->rerror : NULL, "rerror", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_werror : NULL, "werror", &err);
+ if (obj && (*obj)->has_werror) {
+ visit_type_BlockdevOnError(m, obj ? &(*obj)->werror : NULL, "werror", &err);
+ }
+ visit_end_optional(m, &err);
+ visit_start_optional(m, obj ? &(*obj)->has_read_only : NULL, "read-only", &err);
+ if (obj && (*obj)->has_read_only) {
+ visit_type_bool(m, obj ? &(*obj)->read_only : NULL, "read-only", &err);
+ }
+ visit_end_optional(m, &err);
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptions(Visitor *m, BlockdevOptions ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_struct(m, (void **)obj, "BlockdevOptions", name, sizeof(BlockdevOptions), &err);
+ if (!err) {
+ if (obj && *obj) {
+ visit_type_BlockdevOptions_fields(m, obj, &err);
+ visit_type_BlockdevOptionsKind(m, &(*obj)->kind, "driver", &err);
+ if (!err) {
+ switch ((*obj)->kind) {
+ case BLOCKDEV_OPTIONS_KIND_FILE:
+ visit_start_implicit_struct(m, (void**) &(*obj)->file, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->file, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_HTTP:
+ visit_start_implicit_struct(m, (void**) &(*obj)->http, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->http, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_HTTPS:
+ visit_start_implicit_struct(m, (void**) &(*obj)->https, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->https, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_FTP:
+ visit_start_implicit_struct(m, (void**) &(*obj)->ftp, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->ftp, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_FTPS:
+ visit_start_implicit_struct(m, (void**) &(*obj)->ftps, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->ftps, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_TFTP:
+ visit_start_implicit_struct(m, (void**) &(*obj)->tftp, sizeof(BlockdevOptionsFile), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsFile_fields(m, &(*obj)->tftp, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_VVFAT:
+ visit_start_implicit_struct(m, (void**) &(*obj)->vvfat, sizeof(BlockdevOptionsVVFAT), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsVVFAT_fields(m, &(*obj)->vvfat, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_BOCHS:
+ visit_start_implicit_struct(m, (void**) &(*obj)->bochs, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->bochs, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_CLOOP:
+ visit_start_implicit_struct(m, (void**) &(*obj)->cloop, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->cloop, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_COW:
+ visit_start_implicit_struct(m, (void**) &(*obj)->cow, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->cow, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_DMG:
+ visit_start_implicit_struct(m, (void**) &(*obj)->dmg, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->dmg, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_PARALLELS:
+ visit_start_implicit_struct(m, (void**) &(*obj)->parallels, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->parallels, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_QCOW:
+ visit_start_implicit_struct(m, (void**) &(*obj)->qcow, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->qcow, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_QCOW2:
+ visit_start_implicit_struct(m, (void**) &(*obj)->qcow2, sizeof(BlockdevOptionsQcow2), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsQcow2_fields(m, &(*obj)->qcow2, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_QED:
+ visit_start_implicit_struct(m, (void**) &(*obj)->qed, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->qed, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_RAW:
+ visit_start_implicit_struct(m, (void**) &(*obj)->raw, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->raw, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_VDI:
+ visit_start_implicit_struct(m, (void**) &(*obj)->vdi, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vdi, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_VHDX:
+ visit_start_implicit_struct(m, (void**) &(*obj)->vhdx, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vhdx, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_VMDK:
+ visit_start_implicit_struct(m, (void**) &(*obj)->vmdk, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericCOWFormat_fields(m, &(*obj)->vmdk, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ case BLOCKDEV_OPTIONS_KIND_VPC:
+ visit_start_implicit_struct(m, (void**) &(*obj)->vpc, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (!err) {
+ visit_type_BlockdevOptionsGenericFormat_fields(m, &(*obj)->vpc, &err);
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+ break;
+ default:
+ abort();
+ }
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ }
+ /* Always call end_struct if start_struct succeeded. */
+ visit_end_struct(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevOptionsList(Visitor *m, BlockdevOptionsList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevOptionsList *native_i = (BlockdevOptionsList *)i;
+ visit_type_BlockdevOptions(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
+
+void visit_type_BlockdevRef(Visitor *m, BlockdevRef ** obj, const char *name, Error **errp)
+{
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_implicit_struct(m, (void**) obj, sizeof(BlockdevRef), &err);
+ visit_get_next_type(m, (int*) &(*obj)->kind, BlockdevRef_qtypes, name, &err);
+ switch ((*obj)->kind) {
+ case BLOCKDEV_REF_KIND_DEFINITION:
+ visit_type_BlockdevOptions(m, &(*obj)->definition, name, &err);
+ break;
+ case BLOCKDEV_REF_KIND_REFERENCE:
+ visit_type_str(m, &(*obj)->reference, name, &err);
+ break;
+ default:
+ abort();
+ }
+ error_propagate(errp, err);
+ err = NULL;
+ visit_end_implicit_struct(m, &err);
+ }
+}
+
+void visit_type_BlockdevRefList(Visitor *m, BlockdevRefList ** obj, const char *name, Error **errp)
+{
+ GenericList *i, **prev = (GenericList **)obj;
+ Error *err = NULL;
+
+ if (!error_is_set(errp)) {
+ visit_start_list(m, name, &err);
+ if (!err) {
+ for (; (i = visit_next_list(m, prev, &err)) != NULL; prev = &i) {
+ BlockdevRefList *native_i = (BlockdevRefList *)i;
+ visit_type_BlockdevRef(m, &native_i->value, NULL, &err);
+ }
+ error_propagate(errp, err);
+ err = NULL;
+
+ /* Always call end_list if start_list succeeded. */
+ visit_end_list(m, &err);
+ }
+ error_propagate(errp, err);
+ }
+}
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.h b/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.h
new file mode 100644
index 0000000000..1bad1333a8
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qapi-visit.h
@@ -0,0 +1,411 @@
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * schema-defined QAPI visitor function
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#ifndef QAPI_VISIT_H
+#define QAPI_VISIT_H
+
+#include "qapi/visitor.h"
+#include "qapi-types.h"
+
+
+#ifndef QAPI_VISIT_BUILTIN_VISITOR_DECL_H
+#define QAPI_VISIT_BUILTIN_VISITOR_DECL_H
+
+void visit_type_strList(Visitor *m, strList ** obj, const char *name, Error **errp);
+void visit_type_intList(Visitor *m, intList ** obj, const char *name, Error **errp);
+void visit_type_numberList(Visitor *m, numberList ** obj, const char *name, Error **errp);
+void visit_type_boolList(Visitor *m, boolList ** obj, const char *name, Error **errp);
+void visit_type_int8List(Visitor *m, int8List ** obj, const char *name, Error **errp);
+void visit_type_int16List(Visitor *m, int16List ** obj, const char *name, Error **errp);
+void visit_type_int32List(Visitor *m, int32List ** obj, const char *name, Error **errp);
+void visit_type_int64List(Visitor *m, int64List ** obj, const char *name, Error **errp);
+void visit_type_uint8List(Visitor *m, uint8List ** obj, const char *name, Error **errp);
+void visit_type_uint16List(Visitor *m, uint16List ** obj, const char *name, Error **errp);
+void visit_type_uint32List(Visitor *m, uint32List ** obj, const char *name, Error **errp);
+void visit_type_uint64List(Visitor *m, uint64List ** obj, const char *name, Error **errp);
+
+#endif /* QAPI_VISIT_BUILTIN_VISITOR_DECL_H */
+
+
+void visit_type_ErrorClass(Visitor *m, ErrorClass * obj, const char *name, Error **errp);
+void visit_type_ErrorClassList(Visitor *m, ErrorClassList ** obj, const char *name, Error **errp);
+
+void visit_type_NameInfo(Visitor *m, NameInfo ** obj, const char *name, Error **errp);
+void visit_type_NameInfoList(Visitor *m, NameInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_VersionInfo(Visitor *m, VersionInfo ** obj, const char *name, Error **errp);
+void visit_type_VersionInfoList(Visitor *m, VersionInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_KvmInfo(Visitor *m, KvmInfo ** obj, const char *name, Error **errp);
+void visit_type_KvmInfoList(Visitor *m, KvmInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_RunState(Visitor *m, RunState * obj, const char *name, Error **errp);
+void visit_type_RunStateList(Visitor *m, RunStateList ** obj, const char *name, Error **errp);
+
+void visit_type_SnapshotInfo(Visitor *m, SnapshotInfo ** obj, const char *name, Error **errp);
+void visit_type_SnapshotInfoList(Visitor *m, SnapshotInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_ImageInfoSpecificQCow2(Visitor *m, ImageInfoSpecificQCow2 ** obj, const char *name, Error **errp);
+void visit_type_ImageInfoSpecificQCow2List(Visitor *m, ImageInfoSpecificQCow2List ** obj, const char *name, Error **errp);
+
+void visit_type_ImageInfoSpecificVmdk(Visitor *m, ImageInfoSpecificVmdk ** obj, const char *name, Error **errp);
+void visit_type_ImageInfoSpecificVmdkList(Visitor *m, ImageInfoSpecificVmdkList ** obj, const char *name, Error **errp);
+
+void visit_type_ImageInfoSpecificKind(Visitor *m, ImageInfoSpecificKind * obj, const char *name, Error **errp);
+
+void visit_type_ImageInfoSpecific(Visitor *m, ImageInfoSpecific ** obj, const char *name, Error **errp);
+void visit_type_ImageInfoSpecificList(Visitor *m, ImageInfoSpecificList ** obj, const char *name, Error **errp);
+
+void visit_type_ImageInfo(Visitor *m, ImageInfo ** obj, const char *name, Error **errp);
+void visit_type_ImageInfoList(Visitor *m, ImageInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_ImageCheck(Visitor *m, ImageCheck ** obj, const char *name, Error **errp);
+void visit_type_ImageCheckList(Visitor *m, ImageCheckList ** obj, const char *name, Error **errp);
+
+void visit_type_StatusInfo(Visitor *m, StatusInfo ** obj, const char *name, Error **errp);
+void visit_type_StatusInfoList(Visitor *m, StatusInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_UuidInfo(Visitor *m, UuidInfo ** obj, const char *name, Error **errp);
+void visit_type_UuidInfoList(Visitor *m, UuidInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevInfo(Visitor *m, ChardevInfo ** obj, const char *name, Error **errp);
+void visit_type_ChardevInfoList(Visitor *m, ChardevInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_DataFormat(Visitor *m, DataFormat * obj, const char *name, Error **errp);
+void visit_type_DataFormatList(Visitor *m, DataFormatList ** obj, const char *name, Error **errp);
+
+void visit_type_CommandInfo(Visitor *m, CommandInfo ** obj, const char *name, Error **errp);
+void visit_type_CommandInfoList(Visitor *m, CommandInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_EventInfo(Visitor *m, EventInfo ** obj, const char *name, Error **errp);
+void visit_type_EventInfoList(Visitor *m, EventInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_MigrationStats(Visitor *m, MigrationStats ** obj, const char *name, Error **errp);
+void visit_type_MigrationStatsList(Visitor *m, MigrationStatsList ** obj, const char *name, Error **errp);
+
+void visit_type_XBZRLECacheStats(Visitor *m, XBZRLECacheStats ** obj, const char *name, Error **errp);
+void visit_type_XBZRLECacheStatsList(Visitor *m, XBZRLECacheStatsList ** obj, const char *name, Error **errp);
+
+void visit_type_MigrationInfo(Visitor *m, MigrationInfo ** obj, const char *name, Error **errp);
+void visit_type_MigrationInfoList(Visitor *m, MigrationInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_MigrationCapability(Visitor *m, MigrationCapability * obj, const char *name, Error **errp);
+void visit_type_MigrationCapabilityList(Visitor *m, MigrationCapabilityList ** obj, const char *name, Error **errp);
+
+void visit_type_MigrationCapabilityStatus(Visitor *m, MigrationCapabilityStatus ** obj, const char *name, Error **errp);
+void visit_type_MigrationCapabilityStatusList(Visitor *m, MigrationCapabilityStatusList ** obj, const char *name, Error **errp);
+
+void visit_type_MouseInfo(Visitor *m, MouseInfo ** obj, const char *name, Error **errp);
+void visit_type_MouseInfoList(Visitor *m, MouseInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_CpuInfo(Visitor *m, CpuInfo ** obj, const char *name, Error **errp);
+void visit_type_CpuInfoList(Visitor *m, CpuInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockDeviceInfo(Visitor *m, BlockDeviceInfo ** obj, const char *name, Error **errp);
+void visit_type_BlockDeviceInfoList(Visitor *m, BlockDeviceInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockDeviceIoStatus(Visitor *m, BlockDeviceIoStatus * obj, const char *name, Error **errp);
+void visit_type_BlockDeviceIoStatusList(Visitor *m, BlockDeviceIoStatusList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockDeviceMapEntry(Visitor *m, BlockDeviceMapEntry ** obj, const char *name, Error **errp);
+void visit_type_BlockDeviceMapEntryList(Visitor *m, BlockDeviceMapEntryList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockDirtyInfo(Visitor *m, BlockDirtyInfo ** obj, const char *name, Error **errp);
+void visit_type_BlockDirtyInfoList(Visitor *m, BlockDirtyInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockInfo(Visitor *m, BlockInfo ** obj, const char *name, Error **errp);
+void visit_type_BlockInfoList(Visitor *m, BlockInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockDeviceStats(Visitor *m, BlockDeviceStats ** obj, const char *name, Error **errp);
+void visit_type_BlockDeviceStatsList(Visitor *m, BlockDeviceStatsList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockStats(Visitor *m, BlockStats ** obj, const char *name, Error **errp);
+void visit_type_BlockStatsList(Visitor *m, BlockStatsList ** obj, const char *name, Error **errp);
+
+void visit_type_VncClientInfo(Visitor *m, VncClientInfo ** obj, const char *name, Error **errp);
+void visit_type_VncClientInfoList(Visitor *m, VncClientInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_VncInfo(Visitor *m, VncInfo ** obj, const char *name, Error **errp);
+void visit_type_VncInfoList(Visitor *m, VncInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_SpiceChannel(Visitor *m, SpiceChannel ** obj, const char *name, Error **errp);
+void visit_type_SpiceChannelList(Visitor *m, SpiceChannelList ** obj, const char *name, Error **errp);
+
+void visit_type_SpiceQueryMouseMode(Visitor *m, SpiceQueryMouseMode * obj, const char *name, Error **errp);
+void visit_type_SpiceQueryMouseModeList(Visitor *m, SpiceQueryMouseModeList ** obj, const char *name, Error **errp);
+
+void visit_type_SpiceInfo(Visitor *m, SpiceInfo ** obj, const char *name, Error **errp);
+void visit_type_SpiceInfoList(Visitor *m, SpiceInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BalloonInfo(Visitor *m, BalloonInfo ** obj, const char *name, Error **errp);
+void visit_type_BalloonInfoList(Visitor *m, BalloonInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_PciMemoryRange(Visitor *m, PciMemoryRange ** obj, const char *name, Error **errp);
+void visit_type_PciMemoryRangeList(Visitor *m, PciMemoryRangeList ** obj, const char *name, Error **errp);
+
+void visit_type_PciMemoryRegion(Visitor *m, PciMemoryRegion ** obj, const char *name, Error **errp);
+void visit_type_PciMemoryRegionList(Visitor *m, PciMemoryRegionList ** obj, const char *name, Error **errp);
+
+void visit_type_PciBridgeInfo(Visitor *m, PciBridgeInfo ** obj, const char *name, Error **errp);
+void visit_type_PciBridgeInfoList(Visitor *m, PciBridgeInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_PciDeviceInfo(Visitor *m, PciDeviceInfo ** obj, const char *name, Error **errp);
+void visit_type_PciDeviceInfoList(Visitor *m, PciDeviceInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_PciInfo(Visitor *m, PciInfo ** obj, const char *name, Error **errp);
+void visit_type_PciInfoList(Visitor *m, PciInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOnError(Visitor *m, BlockdevOnError * obj, const char *name, Error **errp);
+void visit_type_BlockdevOnErrorList(Visitor *m, BlockdevOnErrorList ** obj, const char *name, Error **errp);
+
+void visit_type_MirrorSyncMode(Visitor *m, MirrorSyncMode * obj, const char *name, Error **errp);
+void visit_type_MirrorSyncModeList(Visitor *m, MirrorSyncModeList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockJobType(Visitor *m, BlockJobType * obj, const char *name, Error **errp);
+void visit_type_BlockJobTypeList(Visitor *m, BlockJobTypeList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockJobInfo(Visitor *m, BlockJobInfo ** obj, const char *name, Error **errp);
+void visit_type_BlockJobInfoList(Visitor *m, BlockJobInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_NewImageMode(Visitor *m, NewImageMode * obj, const char *name, Error **errp);
+void visit_type_NewImageModeList(Visitor *m, NewImageModeList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevSnapshot(Visitor *m, BlockdevSnapshot ** obj, const char *name, Error **errp);
+void visit_type_BlockdevSnapshotList(Visitor *m, BlockdevSnapshotList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevSnapshotInternal(Visitor *m, BlockdevSnapshotInternal ** obj, const char *name, Error **errp);
+void visit_type_BlockdevSnapshotInternalList(Visitor *m, BlockdevSnapshotInternalList ** obj, const char *name, Error **errp);
+
+void visit_type_DriveBackup(Visitor *m, DriveBackup ** obj, const char *name, Error **errp);
+void visit_type_DriveBackupList(Visitor *m, DriveBackupList ** obj, const char *name, Error **errp);
+
+void visit_type_Abort(Visitor *m, Abort ** obj, const char *name, Error **errp);
+void visit_type_AbortList(Visitor *m, AbortList ** obj, const char *name, Error **errp);
+
+void visit_type_TransactionActionKind(Visitor *m, TransactionActionKind * obj, const char *name, Error **errp);
+
+void visit_type_TransactionAction(Visitor *m, TransactionAction ** obj, const char *name, Error **errp);
+void visit_type_TransactionActionList(Visitor *m, TransactionActionList ** obj, const char *name, Error **errp);
+
+void visit_type_ObjectPropertyInfo(Visitor *m, ObjectPropertyInfo ** obj, const char *name, Error **errp);
+void visit_type_ObjectPropertyInfoList(Visitor *m, ObjectPropertyInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_ObjectTypeInfo(Visitor *m, ObjectTypeInfo ** obj, const char *name, Error **errp);
+void visit_type_ObjectTypeInfoList(Visitor *m, ObjectTypeInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_DevicePropertyInfo(Visitor *m, DevicePropertyInfo ** obj, const char *name, Error **errp);
+void visit_type_DevicePropertyInfoList(Visitor *m, DevicePropertyInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevNoneOptions(Visitor *m, NetdevNoneOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevNoneOptionsList(Visitor *m, NetdevNoneOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetLegacyNicOptions(Visitor *m, NetLegacyNicOptions ** obj, const char *name, Error **errp);
+void visit_type_NetLegacyNicOptionsList(Visitor *m, NetLegacyNicOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_String(Visitor *m, String ** obj, const char *name, Error **errp);
+void visit_type_StringList(Visitor *m, StringList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevUserOptions(Visitor *m, NetdevUserOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevUserOptionsList(Visitor *m, NetdevUserOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevTapOptions(Visitor *m, NetdevTapOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevTapOptionsList(Visitor *m, NetdevTapOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevSocketOptions(Visitor *m, NetdevSocketOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevSocketOptionsList(Visitor *m, NetdevSocketOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevVdeOptions(Visitor *m, NetdevVdeOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevVdeOptionsList(Visitor *m, NetdevVdeOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevDumpOptions(Visitor *m, NetdevDumpOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevDumpOptionsList(Visitor *m, NetdevDumpOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevBridgeOptions(Visitor *m, NetdevBridgeOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevBridgeOptionsList(Visitor *m, NetdevBridgeOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevHubPortOptions(Visitor *m, NetdevHubPortOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevHubPortOptionsList(Visitor *m, NetdevHubPortOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetdevNetmapOptions(Visitor *m, NetdevNetmapOptions ** obj, const char *name, Error **errp);
+void visit_type_NetdevNetmapOptionsList(Visitor *m, NetdevNetmapOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetClientOptionsKind(Visitor *m, NetClientOptionsKind * obj, const char *name, Error **errp);
+
+void visit_type_NetClientOptions(Visitor *m, NetClientOptions ** obj, const char *name, Error **errp);
+void visit_type_NetClientOptionsList(Visitor *m, NetClientOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_NetLegacy(Visitor *m, NetLegacy ** obj, const char *name, Error **errp);
+void visit_type_NetLegacyList(Visitor *m, NetLegacyList ** obj, const char *name, Error **errp);
+
+void visit_type_Netdev(Visitor *m, Netdev ** obj, const char *name, Error **errp);
+void visit_type_NetdevList(Visitor *m, NetdevList ** obj, const char *name, Error **errp);
+
+void visit_type_InetSocketAddress(Visitor *m, InetSocketAddress ** obj, const char *name, Error **errp);
+void visit_type_InetSocketAddressList(Visitor *m, InetSocketAddressList ** obj, const char *name, Error **errp);
+
+void visit_type_UnixSocketAddress(Visitor *m, UnixSocketAddress ** obj, const char *name, Error **errp);
+void visit_type_UnixSocketAddressList(Visitor *m, UnixSocketAddressList ** obj, const char *name, Error **errp);
+
+void visit_type_SocketAddressKind(Visitor *m, SocketAddressKind * obj, const char *name, Error **errp);
+
+void visit_type_SocketAddress(Visitor *m, SocketAddress ** obj, const char *name, Error **errp);
+void visit_type_SocketAddressList(Visitor *m, SocketAddressList ** obj, const char *name, Error **errp);
+
+void visit_type_MachineInfo(Visitor *m, MachineInfo ** obj, const char *name, Error **errp);
+void visit_type_MachineInfoList(Visitor *m, MachineInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_CpuDefinitionInfo(Visitor *m, CpuDefinitionInfo ** obj, const char *name, Error **errp);
+void visit_type_CpuDefinitionInfoList(Visitor *m, CpuDefinitionInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_AddfdInfo(Visitor *m, AddfdInfo ** obj, const char *name, Error **errp);
+void visit_type_AddfdInfoList(Visitor *m, AddfdInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_FdsetFdInfo(Visitor *m, FdsetFdInfo ** obj, const char *name, Error **errp);
+void visit_type_FdsetFdInfoList(Visitor *m, FdsetFdInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_FdsetInfo(Visitor *m, FdsetInfo ** obj, const char *name, Error **errp);
+void visit_type_FdsetInfoList(Visitor *m, FdsetInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_TargetInfo(Visitor *m, TargetInfo ** obj, const char *name, Error **errp);
+void visit_type_TargetInfoList(Visitor *m, TargetInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_QKeyCode(Visitor *m, QKeyCode * obj, const char *name, Error **errp);
+void visit_type_QKeyCodeList(Visitor *m, QKeyCodeList ** obj, const char *name, Error **errp);
+
+void visit_type_KeyValueKind(Visitor *m, KeyValueKind * obj, const char *name, Error **errp);
+
+void visit_type_KeyValue(Visitor *m, KeyValue ** obj, const char *name, Error **errp);
+void visit_type_KeyValueList(Visitor *m, KeyValueList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevFile(Visitor *m, ChardevFile ** obj, const char *name, Error **errp);
+void visit_type_ChardevFileList(Visitor *m, ChardevFileList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevHostdev(Visitor *m, ChardevHostdev ** obj, const char *name, Error **errp);
+void visit_type_ChardevHostdevList(Visitor *m, ChardevHostdevList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevSocket(Visitor *m, ChardevSocket ** obj, const char *name, Error **errp);
+void visit_type_ChardevSocketList(Visitor *m, ChardevSocketList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevUdp(Visitor *m, ChardevUdp ** obj, const char *name, Error **errp);
+void visit_type_ChardevUdpList(Visitor *m, ChardevUdpList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevMux(Visitor *m, ChardevMux ** obj, const char *name, Error **errp);
+void visit_type_ChardevMuxList(Visitor *m, ChardevMuxList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevStdio(Visitor *m, ChardevStdio ** obj, const char *name, Error **errp);
+void visit_type_ChardevStdioList(Visitor *m, ChardevStdioList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevSpiceChannel(Visitor *m, ChardevSpiceChannel ** obj, const char *name, Error **errp);
+void visit_type_ChardevSpiceChannelList(Visitor *m, ChardevSpiceChannelList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevSpicePort(Visitor *m, ChardevSpicePort ** obj, const char *name, Error **errp);
+void visit_type_ChardevSpicePortList(Visitor *m, ChardevSpicePortList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevVC(Visitor *m, ChardevVC ** obj, const char *name, Error **errp);
+void visit_type_ChardevVCList(Visitor *m, ChardevVCList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevRingbuf(Visitor *m, ChardevRingbuf ** obj, const char *name, Error **errp);
+void visit_type_ChardevRingbufList(Visitor *m, ChardevRingbufList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevDummy(Visitor *m, ChardevDummy ** obj, const char *name, Error **errp);
+void visit_type_ChardevDummyList(Visitor *m, ChardevDummyList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevBackendKind(Visitor *m, ChardevBackendKind * obj, const char *name, Error **errp);
+
+void visit_type_ChardevBackend(Visitor *m, ChardevBackend ** obj, const char *name, Error **errp);
+void visit_type_ChardevBackendList(Visitor *m, ChardevBackendList ** obj, const char *name, Error **errp);
+
+void visit_type_ChardevReturn(Visitor *m, ChardevReturn ** obj, const char *name, Error **errp);
+void visit_type_ChardevReturnList(Visitor *m, ChardevReturnList ** obj, const char *name, Error **errp);
+
+void visit_type_TpmModel(Visitor *m, TpmModel * obj, const char *name, Error **errp);
+void visit_type_TpmModelList(Visitor *m, TpmModelList ** obj, const char *name, Error **errp);
+
+void visit_type_TpmType(Visitor *m, TpmType * obj, const char *name, Error **errp);
+void visit_type_TpmTypeList(Visitor *m, TpmTypeList ** obj, const char *name, Error **errp);
+
+void visit_type_TPMPassthroughOptions(Visitor *m, TPMPassthroughOptions ** obj, const char *name, Error **errp);
+void visit_type_TPMPassthroughOptionsList(Visitor *m, TPMPassthroughOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_TpmTypeOptionsKind(Visitor *m, TpmTypeOptionsKind * obj, const char *name, Error **errp);
+
+void visit_type_TpmTypeOptions(Visitor *m, TpmTypeOptions ** obj, const char *name, Error **errp);
+void visit_type_TpmTypeOptionsList(Visitor *m, TpmTypeOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_TPMInfo(Visitor *m, TPMInfo ** obj, const char *name, Error **errp);
+void visit_type_TPMInfoList(Visitor *m, TPMInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_AcpiTableOptions(Visitor *m, AcpiTableOptions ** obj, const char *name, Error **errp);
+void visit_type_AcpiTableOptionsList(Visitor *m, AcpiTableOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_CommandLineParameterType(Visitor *m, CommandLineParameterType * obj, const char *name, Error **errp);
+void visit_type_CommandLineParameterTypeList(Visitor *m, CommandLineParameterTypeList ** obj, const char *name, Error **errp);
+
+void visit_type_CommandLineParameterInfo(Visitor *m, CommandLineParameterInfo ** obj, const char *name, Error **errp);
+void visit_type_CommandLineParameterInfoList(Visitor *m, CommandLineParameterInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_CommandLineOptionInfo(Visitor *m, CommandLineOptionInfo ** obj, const char *name, Error **errp);
+void visit_type_CommandLineOptionInfoList(Visitor *m, CommandLineOptionInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_X86CPURegister32(Visitor *m, X86CPURegister32 * obj, const char *name, Error **errp);
+void visit_type_X86CPURegister32List(Visitor *m, X86CPURegister32List ** obj, const char *name, Error **errp);
+
+void visit_type_X86CPUFeatureWordInfo(Visitor *m, X86CPUFeatureWordInfo ** obj, const char *name, Error **errp);
+void visit_type_X86CPUFeatureWordInfoList(Visitor *m, X86CPUFeatureWordInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_RxState(Visitor *m, RxState * obj, const char *name, Error **errp);
+void visit_type_RxStateList(Visitor *m, RxStateList ** obj, const char *name, Error **errp);
+
+void visit_type_RxFilterInfo(Visitor *m, RxFilterInfo ** obj, const char *name, Error **errp);
+void visit_type_RxFilterInfoList(Visitor *m, RxFilterInfoList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevDiscardOptions(Visitor *m, BlockdevDiscardOptions * obj, const char *name, Error **errp);
+void visit_type_BlockdevDiscardOptionsList(Visitor *m, BlockdevDiscardOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevAioOptions(Visitor *m, BlockdevAioOptions * obj, const char *name, Error **errp);
+void visit_type_BlockdevAioOptionsList(Visitor *m, BlockdevAioOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevCacheOptions(Visitor *m, BlockdevCacheOptions ** obj, const char *name, Error **errp);
+void visit_type_BlockdevCacheOptionsList(Visitor *m, BlockdevCacheOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsBase(Visitor *m, BlockdevOptionsBase ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsBaseList(Visitor *m, BlockdevOptionsBaseList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsFile(Visitor *m, BlockdevOptionsFile ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsFileList(Visitor *m, BlockdevOptionsFileList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsVVFAT(Visitor *m, BlockdevOptionsVVFAT ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsVVFATList(Visitor *m, BlockdevOptionsVVFATList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsGenericFormat(Visitor *m, BlockdevOptionsGenericFormat ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsGenericFormatList(Visitor *m, BlockdevOptionsGenericFormatList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsGenericCOWFormat(Visitor *m, BlockdevOptionsGenericCOWFormat ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsGenericCOWFormatList(Visitor *m, BlockdevOptionsGenericCOWFormatList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsQcow2(Visitor *m, BlockdevOptionsQcow2 ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsQcow2List(Visitor *m, BlockdevOptionsQcow2List ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptionsKind(Visitor *m, BlockdevOptionsKind * obj, const char *name, Error **errp);
+
+void visit_type_BlockdevOptions(Visitor *m, BlockdevOptions ** obj, const char *name, Error **errp);
+void visit_type_BlockdevOptionsList(Visitor *m, BlockdevOptionsList ** obj, const char *name, Error **errp);
+
+void visit_type_BlockdevRefKind(Visitor *m, BlockdevRefKind * obj, const char *name, Error **errp);
+
+void visit_type_BlockdevRef(Visitor *m, BlockdevRef ** obj, const char *name, Error **errp);
+void visit_type_BlockdevRefList(Visitor *m, BlockdevRefList ** obj, const char *name, Error **errp);
+
+#endif
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qmp-commands.h b/android/qemu1/qemu1-qapi-auto-generated/qmp-commands.h
new file mode 100644
index 0000000000..0b2f190f5c
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qmp-commands.h
@@ -0,0 +1,210 @@
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * schema-defined QAPI function prototypes
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#ifndef QMP_COMMANDS_H
+#define QMP_COMMANDS_H
+
+#include "qapi-types.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/error.h"
+
+void qmp_add_client(const char * protocol, const char * fdname, bool has_skipauth, bool skipauth, bool has_tls, bool tls, Error **errp);
+int qmp_marshal_input_add_client(Monitor *mon, const QDict *qdict, QObject **ret);
+NameInfo * qmp_query_name(Error **errp);
+int qmp_marshal_input_query_name(Monitor *mon, const QDict *qdict, QObject **ret);
+VersionInfo * qmp_query_version(Error **errp);
+int qmp_marshal_input_query_version(Monitor *mon, const QDict *qdict, QObject **ret);
+KvmInfo * qmp_query_kvm(Error **errp);
+int qmp_marshal_input_query_kvm(Monitor *mon, const QDict *qdict, QObject **ret);
+StatusInfo * qmp_query_status(Error **errp);
+int qmp_marshal_input_query_status(Monitor *mon, const QDict *qdict, QObject **ret);
+UuidInfo * qmp_query_uuid(Error **errp);
+int qmp_marshal_input_query_uuid(Monitor *mon, const QDict *qdict, QObject **ret);
+ChardevInfoList * qmp_query_chardev(Error **errp);
+int qmp_marshal_input_query_chardev(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_ringbuf_write(const char * device, const char * data, bool has_format, DataFormat format, Error **errp);
+int qmp_marshal_input_ringbuf_write(Monitor *mon, const QDict *qdict, QObject **ret);
+char * qmp_ringbuf_read(const char * device, int64_t size, bool has_format, DataFormat format, Error **errp);
+int qmp_marshal_input_ringbuf_read(Monitor *mon, const QDict *qdict, QObject **ret);
+CommandInfoList * qmp_query_commands(Error **errp);
+int qmp_marshal_input_query_commands(Monitor *mon, const QDict *qdict, QObject **ret);
+EventInfoList * qmp_query_events(Error **errp);
+int qmp_marshal_input_query_events(Monitor *mon, const QDict *qdict, QObject **ret);
+MigrationInfo * qmp_query_migrate(Error **errp);
+int qmp_marshal_input_query_migrate(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate_set_capabilities(MigrationCapabilityStatusList * capabilities, Error **errp);
+int qmp_marshal_input_migrate_set_capabilities(Monitor *mon, const QDict *qdict, QObject **ret);
+MigrationCapabilityStatusList * qmp_query_migrate_capabilities(Error **errp);
+int qmp_marshal_input_query_migrate_capabilities(Monitor *mon, const QDict *qdict, QObject **ret);
+MouseInfoList * qmp_query_mice(Error **errp);
+int qmp_marshal_input_query_mice(Monitor *mon, const QDict *qdict, QObject **ret);
+CpuInfoList * qmp_query_cpus(Error **errp);
+int qmp_marshal_input_query_cpus(Monitor *mon, const QDict *qdict, QObject **ret);
+BlockInfoList * qmp_query_block(Error **errp);
+int qmp_marshal_input_query_block(Monitor *mon, const QDict *qdict, QObject **ret);
+BlockStatsList * qmp_query_blockstats(Error **errp);
+int qmp_marshal_input_query_blockstats(Monitor *mon, const QDict *qdict, QObject **ret);
+VncInfo * qmp_query_vnc(Error **errp);
+int qmp_marshal_input_query_vnc(Monitor *mon, const QDict *qdict, QObject **ret);
+SpiceInfo * qmp_query_spice(Error **errp);
+int qmp_marshal_input_query_spice(Monitor *mon, const QDict *qdict, QObject **ret);
+BalloonInfo * qmp_query_balloon(Error **errp);
+int qmp_marshal_input_query_balloon(Monitor *mon, const QDict *qdict, QObject **ret);
+PciInfoList * qmp_query_pci(Error **errp);
+int qmp_marshal_input_query_pci(Monitor *mon, const QDict *qdict, QObject **ret);
+BlockJobInfoList * qmp_query_block_jobs(Error **errp);
+int qmp_marshal_input_query_block_jobs(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_quit(Error **errp);
+int qmp_marshal_input_quit(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_stop(Error **errp);
+int qmp_marshal_input_stop(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_system_reset(Error **errp);
+int qmp_marshal_input_system_reset(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_system_powerdown(Error **errp);
+int qmp_marshal_input_system_powerdown(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_cpu(int64_t index, Error **errp);
+int qmp_marshal_input_cpu(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_cpu_add(int64_t id, Error **errp);
+int qmp_marshal_input_cpu_add(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_memsave(int64_t val, int64_t size, const char * filename, bool has_cpu_index, int64_t cpu_index, Error **errp);
+int qmp_marshal_input_memsave(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_pmemsave(int64_t val, int64_t size, const char * filename, Error **errp);
+int qmp_marshal_input_pmemsave(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_cont(Error **errp);
+int qmp_marshal_input_cont(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_system_wakeup(Error **errp);
+int qmp_marshal_input_system_wakeup(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_inject_nmi(Error **errp);
+int qmp_marshal_input_inject_nmi(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_set_link(const char * name, bool up, Error **errp);
+int qmp_marshal_input_set_link(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_passwd(const char * device, const char * password, Error **errp);
+int qmp_marshal_input_block_passwd(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_balloon(int64_t value, Error **errp);
+int qmp_marshal_input_balloon(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_resize(const char * device, int64_t size, Error **errp);
+int qmp_marshal_input_block_resize(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_transaction(TransactionActionList * actions, Error **errp);
+int qmp_marshal_input_transaction(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_blockdev_snapshot_sync(const char * device, const char * snapshot_file, bool has_format, const char * format, bool has_mode, NewImageMode mode, Error **errp);
+int qmp_marshal_input_blockdev_snapshot_sync(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_blockdev_snapshot_internal_sync(const char * device, const char * name, Error **errp);
+int qmp_marshal_input_blockdev_snapshot_internal_sync(Monitor *mon, const QDict *qdict, QObject **ret);
+SnapshotInfo * qmp_blockdev_snapshot_delete_internal_sync(const char * device, bool has_id, const char * id, bool has_name, const char * name, Error **errp);
+int qmp_marshal_input_blockdev_snapshot_delete_internal_sync(Monitor *mon, const QDict *qdict, QObject **ret);
+char * qmp_human_monitor_command(const char * command_line, bool has_cpu_index, int64_t cpu_index, Error **errp);
+int qmp_marshal_input_human_monitor_command(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_commit(const char * device, bool has_base, const char * base, const char * top, bool has_speed, int64_t speed, Error **errp);
+int qmp_marshal_input_block_commit(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_drive_backup(const char * device, const char * target, bool has_format, const char * format, MirrorSyncMode sync, bool has_mode, NewImageMode mode, bool has_speed, int64_t speed, bool has_on_source_error, BlockdevOnError on_source_error, bool has_on_target_error, BlockdevOnError on_target_error, Error **errp);
+int qmp_marshal_input_drive_backup(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_drive_mirror(const char * device, const char * target, bool has_format, const char * format, MirrorSyncMode sync, bool has_mode, NewImageMode mode, bool has_speed, int64_t speed, bool has_granularity, uint32_t granularity, bool has_buf_size, int64_t buf_size, bool has_on_source_error, BlockdevOnError on_source_error, bool has_on_target_error, BlockdevOnError on_target_error, Error **errp);
+int qmp_marshal_input_drive_mirror(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate_cancel(Error **errp);
+int qmp_marshal_input_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate_set_downtime(double value, Error **errp);
+int qmp_marshal_input_migrate_set_downtime(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate_set_speed(int64_t value, Error **errp);
+int qmp_marshal_input_migrate_set_speed(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate_set_cache_size(int64_t value, Error **errp);
+int qmp_marshal_input_migrate_set_cache_size(Monitor *mon, const QDict *qdict, QObject **ret);
+int64_t qmp_query_migrate_cache_size(Error **errp);
+int qmp_marshal_input_query_migrate_cache_size(Monitor *mon, const QDict *qdict, QObject **ret);
+ObjectPropertyInfoList * qmp_qom_list(const char * path, Error **errp);
+int qmp_marshal_input_qom_list(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_set_password(const char * protocol, const char * password, bool has_connected, const char * connected, Error **errp);
+int qmp_marshal_input_set_password(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_expire_password(const char * protocol, const char * time, Error **errp);
+int qmp_marshal_input_expire_password(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_eject(const char * device, bool has_force, bool force, Error **errp);
+int qmp_marshal_input_eject(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_change_vnc_password(const char * password, Error **errp);
+int qmp_marshal_input_change_vnc_password(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_change(const char * device, const char * target, bool has_arg, const char * arg, Error **errp);
+int qmp_marshal_input_change(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_set_io_throttle(const char * device, int64_t bps, int64_t bps_rd, int64_t bps_wr, int64_t iops, int64_t iops_rd, int64_t iops_wr, bool has_bps_max, int64_t bps_max, bool has_bps_rd_max, int64_t bps_rd_max, bool has_bps_wr_max, int64_t bps_wr_max, bool has_iops_max, int64_t iops_max, bool has_iops_rd_max, int64_t iops_rd_max, bool has_iops_wr_max, int64_t iops_wr_max, bool has_iops_size, int64_t iops_size, Error **errp);
+int qmp_marshal_input_block_set_io_throttle(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_stream(const char * device, bool has_base, const char * base, bool has_speed, int64_t speed, bool has_on_error, BlockdevOnError on_error, Error **errp);
+int qmp_marshal_input_block_stream(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_job_set_speed(const char * device, int64_t speed, Error **errp);
+int qmp_marshal_input_block_job_set_speed(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_job_cancel(const char * device, bool has_force, bool force, Error **errp);
+int qmp_marshal_input_block_job_cancel(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_job_pause(const char * device, Error **errp);
+int qmp_marshal_input_block_job_pause(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_job_resume(const char * device, Error **errp);
+int qmp_marshal_input_block_job_resume(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_block_job_complete(const char * device, Error **errp);
+int qmp_marshal_input_block_job_complete(Monitor *mon, const QDict *qdict, QObject **ret);
+ObjectTypeInfoList * qmp_qom_list_types(bool has_implements, const char * implements, bool has_abstract, bool abstract, Error **errp);
+int qmp_marshal_input_qom_list_types(Monitor *mon, const QDict *qdict, QObject **ret);
+DevicePropertyInfoList * qmp_device_list_properties(const char * q_typename, Error **errp);
+int qmp_marshal_input_device_list_properties(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_migrate(const char * uri, bool has_blk, bool blk, bool has_inc, bool inc, bool has_detach, bool detach, Error **errp);
+int qmp_marshal_input_migrate(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_xen_save_devices_state(const char * filename, Error **errp);
+int qmp_marshal_input_xen_save_devices_state(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_xen_set_global_dirty_log(bool enable, Error **errp);
+int qmp_marshal_input_xen_set_global_dirty_log(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_device_del(const char * id, Error **errp);
+int qmp_marshal_input_device_del(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_dump_guest_memory(bool paging, const char * protocol, bool has_begin, int64_t begin, bool has_length, int64_t length, Error **errp);
+int qmp_marshal_input_dump_guest_memory(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_netdev_del(const char * id, Error **errp);
+int qmp_marshal_input_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_getfd(const char * fdname, Error **errp);
+int qmp_marshal_input_getfd(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_closefd(const char * fdname, Error **errp);
+int qmp_marshal_input_closefd(Monitor *mon, const QDict *qdict, QObject **ret);
+MachineInfoList * qmp_query_machines(Error **errp);
+int qmp_marshal_input_query_machines(Monitor *mon, const QDict *qdict, QObject **ret);
+CpuDefinitionInfoList * qmp_query_cpu_definitions(Error **errp);
+int qmp_marshal_input_query_cpu_definitions(Monitor *mon, const QDict *qdict, QObject **ret);
+AddfdInfo * qmp_add_fd(bool has_fdset_id, int64_t fdset_id, bool has_opaque, const char * opaque, Error **errp);
+int qmp_marshal_input_add_fd(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_remove_fd(int64_t fdset_id, bool has_fd, int64_t fd, Error **errp);
+int qmp_marshal_input_remove_fd(Monitor *mon, const QDict *qdict, QObject **ret);
+FdsetInfoList * qmp_query_fdsets(Error **errp);
+int qmp_marshal_input_query_fdsets(Monitor *mon, const QDict *qdict, QObject **ret);
+TargetInfo * qmp_query_target(Error **errp);
+int qmp_marshal_input_query_target(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_send_key(KeyValueList * keys, bool has_hold_time, int64_t hold_time, Error **errp);
+int qmp_marshal_input_send_key(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_screendump(const char * filename, Error **errp);
+int qmp_marshal_input_screendump(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_nbd_server_start(SocketAddress * addr, Error **errp);
+int qmp_marshal_input_nbd_server_start(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_nbd_server_add(const char * device, bool has_writable, bool writable, Error **errp);
+int qmp_marshal_input_nbd_server_add(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_nbd_server_stop(Error **errp);
+int qmp_marshal_input_nbd_server_stop(Monitor *mon, const QDict *qdict, QObject **ret);
+ChardevReturn * qmp_chardev_add(const char * id, ChardevBackend * backend, Error **errp);
+int qmp_marshal_input_chardev_add(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_chardev_remove(const char * id, Error **errp);
+int qmp_marshal_input_chardev_remove(Monitor *mon, const QDict *qdict, QObject **ret);
+TpmModelList * qmp_query_tpm_models(Error **errp);
+int qmp_marshal_input_query_tpm_models(Monitor *mon, const QDict *qdict, QObject **ret);
+TpmTypeList * qmp_query_tpm_types(Error **errp);
+int qmp_marshal_input_query_tpm_types(Monitor *mon, const QDict *qdict, QObject **ret);
+TPMInfoList * qmp_query_tpm(Error **errp);
+int qmp_marshal_input_query_tpm(Monitor *mon, const QDict *qdict, QObject **ret);
+CommandLineOptionInfoList * qmp_query_command_line_options(bool has_option, const char * option, Error **errp);
+int qmp_marshal_input_query_command_line_options(Monitor *mon, const QDict *qdict, QObject **ret);
+RxFilterInfoList * qmp_query_rx_filter(bool has_name, const char * name, Error **errp);
+int qmp_marshal_input_query_rx_filter(Monitor *mon, const QDict *qdict, QObject **ret);
+void qmp_blockdev_add(BlockdevOptions * options, Error **errp);
+int qmp_marshal_input_blockdev_add(Monitor *mon, const QDict *qdict, QObject **ret);
+
+#endif
diff --git a/android/qemu1/qemu1-qapi-auto-generated/qmp-marshal.c b/android/qemu1/qemu1-qapi-auto-generated/qmp-marshal.c
new file mode 100644
index 0000000000..8acee1ac73
--- /dev/null
+++ b/android/qemu1/qemu1-qapi-auto-generated/qmp-marshal.c
@@ -0,0 +1,4235 @@
+/* THIS FILE IS AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * schema-defined QMP->QAPI command dispatch
+ *
+ * Copyright IBM, Corp. 2011
+ *
+ * Authors:
+ * Anthony Liguori <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ *
+ */
+
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi/qmp/types.h"
+#include "qapi/qmp/dispatch.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp-output-visitor.h"
+#include "qapi/qmp-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types.h"
+#include "qapi-visit.h"
+
+#include "qmp-commands.h"
+
+int qmp_marshal_input_add_client(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * protocol = NULL;
+ char * fdname = NULL;
+ bool has_skipauth = false;
+ bool skipauth;
+ bool has_tls = false;
+ bool tls;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &protocol, "protocol", errp);
+ visit_type_str(v, &fdname, "fdname", errp);
+ visit_start_optional(v, &has_skipauth, "skipauth", errp);
+ if (has_skipauth) {
+ visit_type_bool(v, &skipauth, "skipauth", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_tls, "tls", errp);
+ if (has_tls) {
+ visit_type_bool(v, &tls, "tls", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_add_client(protocol, fdname, has_skipauth, skipauth, has_tls, tls, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &protocol, "protocol", NULL);
+ visit_type_str(v, &fdname, "fdname", NULL);
+ visit_start_optional(v, &has_skipauth, "skipauth", NULL);
+ if (has_skipauth) {
+ visit_type_bool(v, &skipauth, "skipauth", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_tls, "tls", NULL);
+ if (has_tls) {
+ visit_type_bool(v, &tls, "tls", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_name(NameInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_NameInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_NameInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_name(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ NameInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_name(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_name(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_version(VersionInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_VersionInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VersionInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_version(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ VersionInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_version(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_version(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_kvm(KvmInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_KvmInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KvmInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_kvm(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ KvmInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_kvm(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_kvm(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_status(StatusInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_StatusInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_StatusInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_status(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ StatusInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_status(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_status(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_uuid(UuidInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_UuidInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_UuidInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_uuid(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ UuidInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_uuid(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_uuid(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_chardev(ChardevInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_ChardevInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_chardev(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ ChardevInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_chardev(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_chardev(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_ringbuf_write(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * data = NULL;
+ bool has_format = false;
+ DataFormat format;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &data, "data", errp);
+ visit_start_optional(v, &has_format, "format", errp);
+ if (has_format) {
+ visit_type_DataFormat(v, &format, "format", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_ringbuf_write(device, data, has_format, format, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &data, "data", NULL);
+ visit_start_optional(v, &has_format, "format", NULL);
+ if (has_format) {
+ visit_type_DataFormat(v, &format, "format", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_ringbuf_read(char * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_str(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_ringbuf_read(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ char * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ int64_t size;
+ bool has_format = false;
+ DataFormat format;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_int(v, &size, "size", errp);
+ visit_start_optional(v, &has_format, "format", errp);
+ if (has_format) {
+ visit_type_DataFormat(v, &format, "format", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_ringbuf_read(device, size, has_format, format, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_ringbuf_read(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_int(v, &size, "size", NULL);
+ visit_start_optional(v, &has_format, "format", NULL);
+ if (has_format) {
+ visit_type_DataFormat(v, &format, "format", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_commands(CommandInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_CommandInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_commands(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ CommandInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_commands(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_commands(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_events(EventInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_EventInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_EventInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_events(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ EventInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_events(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_events(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_migrate(MigrationInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_MigrationInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_migrate(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ MigrationInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_migrate(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_migrate(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate_set_capabilities(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ MigrationCapabilityStatusList * capabilities = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_MigrationCapabilityStatusList(v, &capabilities, "capabilities", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate_set_capabilities(capabilities, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationCapabilityStatusList(v, &capabilities, "capabilities", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_migrate_capabilities(MigrationCapabilityStatusList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_MigrationCapabilityStatusList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MigrationCapabilityStatusList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_migrate_capabilities(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ MigrationCapabilityStatusList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_migrate_capabilities(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_migrate_capabilities(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_mice(MouseInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_MouseInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MouseInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_mice(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ MouseInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_mice(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_mice(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_cpus(CpuInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_CpuInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_cpus(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ CpuInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_cpus(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_cpus(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_block(BlockInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_BlockInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_block(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ BlockInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_block(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_block(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_blockstats(BlockStatsList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_BlockStatsList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockStatsList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_blockstats(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ BlockStatsList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_blockstats(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_blockstats(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_vnc(VncInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_VncInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_VncInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_vnc(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ VncInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_vnc(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_vnc(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_spice(SpiceInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_SpiceInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SpiceInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_spice(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ SpiceInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_spice(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_spice(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_balloon(BalloonInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_BalloonInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BalloonInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_balloon(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ BalloonInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_balloon(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_balloon(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_pci(PciInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_PciInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_PciInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_pci(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ PciInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_pci(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_pci(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_block_jobs(BlockJobInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_BlockJobInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockJobInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_block_jobs(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ BlockJobInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_block_jobs(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_block_jobs(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_quit(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_quit(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_stop(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_stop(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_system_reset(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_system_reset(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_system_powerdown(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_system_powerdown(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_cpu(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t index;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &index, "index", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_cpu(index, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &index, "index", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_cpu_add(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t id;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &id, "id", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_cpu_add(id, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &id, "id", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_memsave(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t val;
+ int64_t size;
+ char * filename = NULL;
+ bool has_cpu_index = false;
+ int64_t cpu_index;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &val, "val", errp);
+ visit_type_int(v, &size, "size", errp);
+ visit_type_str(v, &filename, "filename", errp);
+ visit_start_optional(v, &has_cpu_index, "cpu-index", errp);
+ if (has_cpu_index) {
+ visit_type_int(v, &cpu_index, "cpu-index", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_memsave(val, size, filename, has_cpu_index, cpu_index, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &val, "val", NULL);
+ visit_type_int(v, &size, "size", NULL);
+ visit_type_str(v, &filename, "filename", NULL);
+ visit_start_optional(v, &has_cpu_index, "cpu-index", NULL);
+ if (has_cpu_index) {
+ visit_type_int(v, &cpu_index, "cpu-index", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_pmemsave(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t val;
+ int64_t size;
+ char * filename = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &val, "val", errp);
+ visit_type_int(v, &size, "size", errp);
+ visit_type_str(v, &filename, "filename", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_pmemsave(val, size, filename, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &val, "val", NULL);
+ visit_type_int(v, &size, "size", NULL);
+ visit_type_str(v, &filename, "filename", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_cont(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_cont(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_system_wakeup(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_system_wakeup(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_inject_nmi(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_inject_nmi(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_set_link(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * name = NULL;
+ bool up;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &name, "name", errp);
+ visit_type_bool(v, &up, "up", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_set_link(name, up, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &name, "name", NULL);
+ visit_type_bool(v, &up, "up", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_passwd(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * password = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &password, "password", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_passwd(device, password, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &password, "password", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_balloon(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t value;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &value, "value", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_balloon(value, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &value, "value", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_resize(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ int64_t size;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_int(v, &size, "size", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_resize(device, size, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_int(v, &size, "size", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_transaction(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ TransactionActionList * actions = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_TransactionActionList(v, &actions, "actions", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_transaction(actions, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TransactionActionList(v, &actions, "actions", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_blockdev_snapshot_sync(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * snapshot_file = NULL;
+ bool has_format = false;
+ char * format = NULL;
+ bool has_mode = false;
+ NewImageMode mode;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &snapshot_file, "snapshot-file", errp);
+ visit_start_optional(v, &has_format, "format", errp);
+ if (has_format) {
+ visit_type_str(v, &format, "format", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_mode, "mode", errp);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_blockdev_snapshot_sync(device, snapshot_file, has_format, format, has_mode, mode, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &snapshot_file, "snapshot-file", NULL);
+ visit_start_optional(v, &has_format, "format", NULL);
+ if (has_format) {
+ visit_type_str(v, &format, "format", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_mode, "mode", NULL);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_blockdev_snapshot_internal_sync(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * name = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &name, "name", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_blockdev_snapshot_internal_sync(device, name, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &name, "name", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_blockdev_snapshot_delete_internal_sync(SnapshotInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_SnapshotInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SnapshotInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_blockdev_snapshot_delete_internal_sync(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ SnapshotInfo * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_id = false;
+ char * id = NULL;
+ bool has_name = false;
+ char * name = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_id, "id", errp);
+ if (has_id) {
+ visit_type_str(v, &id, "id", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_name, "name", errp);
+ if (has_name) {
+ visit_type_str(v, &name, "name", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_blockdev_snapshot_delete_internal_sync(device, has_id, id, has_name, name, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_blockdev_snapshot_delete_internal_sync(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_id, "id", NULL);
+ if (has_id) {
+ visit_type_str(v, &id, "id", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_name, "name", NULL);
+ if (has_name) {
+ visit_type_str(v, &name, "name", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_human_monitor_command(char * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_str(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_human_monitor_command(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ char * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * command_line = NULL;
+ bool has_cpu_index = false;
+ int64_t cpu_index;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &command_line, "command-line", errp);
+ visit_start_optional(v, &has_cpu_index, "cpu-index", errp);
+ if (has_cpu_index) {
+ visit_type_int(v, &cpu_index, "cpu-index", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_human_monitor_command(command_line, has_cpu_index, cpu_index, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_human_monitor_command(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &command_line, "command-line", NULL);
+ visit_start_optional(v, &has_cpu_index, "cpu-index", NULL);
+ if (has_cpu_index) {
+ visit_type_int(v, &cpu_index, "cpu-index", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_commit(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_base = false;
+ char * base = NULL;
+ char * top = NULL;
+ bool has_speed = false;
+ int64_t speed;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_base, "base", errp);
+ if (has_base) {
+ visit_type_str(v, &base, "base", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_type_str(v, &top, "top", errp);
+ visit_start_optional(v, &has_speed, "speed", errp);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_commit(device, has_base, base, top, has_speed, speed, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_base, "base", NULL);
+ if (has_base) {
+ visit_type_str(v, &base, "base", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_type_str(v, &top, "top", NULL);
+ visit_start_optional(v, &has_speed, "speed", NULL);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_drive_backup(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * target = NULL;
+ bool has_format = false;
+ char * format = NULL;
+ MirrorSyncMode sync;
+ bool has_mode = false;
+ NewImageMode mode;
+ bool has_speed = false;
+ int64_t speed;
+ bool has_on_source_error = false;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error = false;
+ BlockdevOnError on_target_error;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &target, "target", errp);
+ visit_start_optional(v, &has_format, "format", errp);
+ if (has_format) {
+ visit_type_str(v, &format, "format", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_type_MirrorSyncMode(v, &sync, "sync", errp);
+ visit_start_optional(v, &has_mode, "mode", errp);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_speed, "speed", errp);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_on_source_error, "on-source-error", errp);
+ if (has_on_source_error) {
+ visit_type_BlockdevOnError(v, &on_source_error, "on-source-error", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_on_target_error, "on-target-error", errp);
+ if (has_on_target_error) {
+ visit_type_BlockdevOnError(v, &on_target_error, "on-target-error", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_drive_backup(device, target, has_format, format, sync, has_mode, mode, has_speed, speed, has_on_source_error, on_source_error, has_on_target_error, on_target_error, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &target, "target", NULL);
+ visit_start_optional(v, &has_format, "format", NULL);
+ if (has_format) {
+ visit_type_str(v, &format, "format", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_type_MirrorSyncMode(v, &sync, "sync", NULL);
+ visit_start_optional(v, &has_mode, "mode", NULL);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_speed, "speed", NULL);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_on_source_error, "on-source-error", NULL);
+ if (has_on_source_error) {
+ visit_type_BlockdevOnError(v, &on_source_error, "on-source-error", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_on_target_error, "on-target-error", NULL);
+ if (has_on_target_error) {
+ visit_type_BlockdevOnError(v, &on_target_error, "on-target-error", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_drive_mirror(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * target = NULL;
+ bool has_format = false;
+ char * format = NULL;
+ MirrorSyncMode sync;
+ bool has_mode = false;
+ NewImageMode mode;
+ bool has_speed = false;
+ int64_t speed;
+ bool has_granularity = false;
+ uint32_t granularity;
+ bool has_buf_size = false;
+ int64_t buf_size;
+ bool has_on_source_error = false;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error = false;
+ BlockdevOnError on_target_error;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &target, "target", errp);
+ visit_start_optional(v, &has_format, "format", errp);
+ if (has_format) {
+ visit_type_str(v, &format, "format", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_type_MirrorSyncMode(v, &sync, "sync", errp);
+ visit_start_optional(v, &has_mode, "mode", errp);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_speed, "speed", errp);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_granularity, "granularity", errp);
+ if (has_granularity) {
+ visit_type_uint32(v, &granularity, "granularity", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_buf_size, "buf-size", errp);
+ if (has_buf_size) {
+ visit_type_int(v, &buf_size, "buf-size", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_on_source_error, "on-source-error", errp);
+ if (has_on_source_error) {
+ visit_type_BlockdevOnError(v, &on_source_error, "on-source-error", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_on_target_error, "on-target-error", errp);
+ if (has_on_target_error) {
+ visit_type_BlockdevOnError(v, &on_target_error, "on-target-error", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_drive_mirror(device, target, has_format, format, sync, has_mode, mode, has_speed, speed, has_granularity, granularity, has_buf_size, buf_size, has_on_source_error, on_source_error, has_on_target_error, on_target_error, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &target, "target", NULL);
+ visit_start_optional(v, &has_format, "format", NULL);
+ if (has_format) {
+ visit_type_str(v, &format, "format", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_type_MirrorSyncMode(v, &sync, "sync", NULL);
+ visit_start_optional(v, &has_mode, "mode", NULL);
+ if (has_mode) {
+ visit_type_NewImageMode(v, &mode, "mode", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_speed, "speed", NULL);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_granularity, "granularity", NULL);
+ if (has_granularity) {
+ visit_type_uint32(v, &granularity, "granularity", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_buf_size, "buf-size", NULL);
+ if (has_buf_size) {
+ visit_type_int(v, &buf_size, "buf-size", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_on_source_error, "on-source-error", NULL);
+ if (has_on_source_error) {
+ visit_type_BlockdevOnError(v, &on_source_error, "on-source-error", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_on_target_error, "on-target-error", NULL);
+ if (has_on_target_error) {
+ visit_type_BlockdevOnError(v, &on_target_error, "on-target-error", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate_cancel(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate_set_downtime(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ double value;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_number(v, &value, "value", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate_set_downtime(value, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_number(v, &value, "value", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate_set_speed(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t value;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &value, "value", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate_set_speed(value, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &value, "value", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate_set_cache_size(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t value;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &value, "value", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate_set_cache_size(value, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &value, "value", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_migrate_cache_size(int64_t ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_int(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_migrate_cache_size(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ int64_t retval;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_migrate_cache_size(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_migrate_cache_size(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_qom_list(ObjectPropertyInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_ObjectPropertyInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectPropertyInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_qom_list(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ ObjectPropertyInfoList * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * path = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &path, "path", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_qom_list(path, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_qom_list(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &path, "path", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_set_password(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * protocol = NULL;
+ char * password = NULL;
+ bool has_connected = false;
+ char * connected = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &protocol, "protocol", errp);
+ visit_type_str(v, &password, "password", errp);
+ visit_start_optional(v, &has_connected, "connected", errp);
+ if (has_connected) {
+ visit_type_str(v, &connected, "connected", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_set_password(protocol, password, has_connected, connected, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &protocol, "protocol", NULL);
+ visit_type_str(v, &password, "password", NULL);
+ visit_start_optional(v, &has_connected, "connected", NULL);
+ if (has_connected) {
+ visit_type_str(v, &connected, "connected", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_expire_password(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * protocol = NULL;
+ char * time = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &protocol, "protocol", errp);
+ visit_type_str(v, &time, "time", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_expire_password(protocol, time, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &protocol, "protocol", NULL);
+ visit_type_str(v, &time, "time", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_eject(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_force = false;
+ bool force;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_force, "force", errp);
+ if (has_force) {
+ visit_type_bool(v, &force, "force", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_eject(device, has_force, force, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_force, "force", NULL);
+ if (has_force) {
+ visit_type_bool(v, &force, "force", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_change_vnc_password(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * password = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &password, "password", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_change_vnc_password(password, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &password, "password", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_change(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ char * target = NULL;
+ bool has_arg = false;
+ char * arg = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_str(v, &target, "target", errp);
+ visit_start_optional(v, &has_arg, "arg", errp);
+ if (has_arg) {
+ visit_type_str(v, &arg, "arg", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_change(device, target, has_arg, arg, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_str(v, &target, "target", NULL);
+ visit_start_optional(v, &has_arg, "arg", NULL);
+ if (has_arg) {
+ visit_type_str(v, &arg, "arg", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_set_io_throttle(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ int64_t bps;
+ int64_t bps_rd;
+ int64_t bps_wr;
+ int64_t iops;
+ int64_t iops_rd;
+ int64_t iops_wr;
+ bool has_bps_max = false;
+ int64_t bps_max;
+ bool has_bps_rd_max = false;
+ int64_t bps_rd_max;
+ bool has_bps_wr_max = false;
+ int64_t bps_wr_max;
+ bool has_iops_max = false;
+ int64_t iops_max;
+ bool has_iops_rd_max = false;
+ int64_t iops_rd_max;
+ bool has_iops_wr_max = false;
+ int64_t iops_wr_max;
+ bool has_iops_size = false;
+ int64_t iops_size;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_int(v, &bps, "bps", errp);
+ visit_type_int(v, &bps_rd, "bps_rd", errp);
+ visit_type_int(v, &bps_wr, "bps_wr", errp);
+ visit_type_int(v, &iops, "iops", errp);
+ visit_type_int(v, &iops_rd, "iops_rd", errp);
+ visit_type_int(v, &iops_wr, "iops_wr", errp);
+ visit_start_optional(v, &has_bps_max, "bps_max", errp);
+ if (has_bps_max) {
+ visit_type_int(v, &bps_max, "bps_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_bps_rd_max, "bps_rd_max", errp);
+ if (has_bps_rd_max) {
+ visit_type_int(v, &bps_rd_max, "bps_rd_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_bps_wr_max, "bps_wr_max", errp);
+ if (has_bps_wr_max) {
+ visit_type_int(v, &bps_wr_max, "bps_wr_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_iops_max, "iops_max", errp);
+ if (has_iops_max) {
+ visit_type_int(v, &iops_max, "iops_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_iops_rd_max, "iops_rd_max", errp);
+ if (has_iops_rd_max) {
+ visit_type_int(v, &iops_rd_max, "iops_rd_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_iops_wr_max, "iops_wr_max", errp);
+ if (has_iops_wr_max) {
+ visit_type_int(v, &iops_wr_max, "iops_wr_max", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_iops_size, "iops_size", errp);
+ if (has_iops_size) {
+ visit_type_int(v, &iops_size, "iops_size", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_set_io_throttle(device, bps, bps_rd, bps_wr, iops, iops_rd, iops_wr, has_bps_max, bps_max, has_bps_rd_max, bps_rd_max, has_bps_wr_max, bps_wr_max, has_iops_max, iops_max, has_iops_rd_max, iops_rd_max, has_iops_wr_max, iops_wr_max, has_iops_size, iops_size, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_int(v, &bps, "bps", NULL);
+ visit_type_int(v, &bps_rd, "bps_rd", NULL);
+ visit_type_int(v, &bps_wr, "bps_wr", NULL);
+ visit_type_int(v, &iops, "iops", NULL);
+ visit_type_int(v, &iops_rd, "iops_rd", NULL);
+ visit_type_int(v, &iops_wr, "iops_wr", NULL);
+ visit_start_optional(v, &has_bps_max, "bps_max", NULL);
+ if (has_bps_max) {
+ visit_type_int(v, &bps_max, "bps_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_bps_rd_max, "bps_rd_max", NULL);
+ if (has_bps_rd_max) {
+ visit_type_int(v, &bps_rd_max, "bps_rd_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_bps_wr_max, "bps_wr_max", NULL);
+ if (has_bps_wr_max) {
+ visit_type_int(v, &bps_wr_max, "bps_wr_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_iops_max, "iops_max", NULL);
+ if (has_iops_max) {
+ visit_type_int(v, &iops_max, "iops_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_iops_rd_max, "iops_rd_max", NULL);
+ if (has_iops_rd_max) {
+ visit_type_int(v, &iops_rd_max, "iops_rd_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_iops_wr_max, "iops_wr_max", NULL);
+ if (has_iops_wr_max) {
+ visit_type_int(v, &iops_wr_max, "iops_wr_max", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_iops_size, "iops_size", NULL);
+ if (has_iops_size) {
+ visit_type_int(v, &iops_size, "iops_size", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_stream(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_base = false;
+ char * base = NULL;
+ bool has_speed = false;
+ int64_t speed;
+ bool has_on_error = false;
+ BlockdevOnError on_error;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_base, "base", errp);
+ if (has_base) {
+ visit_type_str(v, &base, "base", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_speed, "speed", errp);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_on_error, "on-error", errp);
+ if (has_on_error) {
+ visit_type_BlockdevOnError(v, &on_error, "on-error", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_stream(device, has_base, base, has_speed, speed, has_on_error, on_error, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_base, "base", NULL);
+ if (has_base) {
+ visit_type_str(v, &base, "base", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_speed, "speed", NULL);
+ if (has_speed) {
+ visit_type_int(v, &speed, "speed", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_on_error, "on-error", NULL);
+ if (has_on_error) {
+ visit_type_BlockdevOnError(v, &on_error, "on-error", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_job_set_speed(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ int64_t speed;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_type_int(v, &speed, "speed", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_job_set_speed(device, speed, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_type_int(v, &speed, "speed", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_job_cancel(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_force = false;
+ bool force;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_force, "force", errp);
+ if (has_force) {
+ visit_type_bool(v, &force, "force", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_job_cancel(device, has_force, force, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_force, "force", NULL);
+ if (has_force) {
+ visit_type_bool(v, &force, "force", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_job_pause(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_job_pause(device, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_job_resume(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_job_resume(device, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_block_job_complete(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_block_job_complete(device, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_qom_list_types(ObjectTypeInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_ObjectTypeInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ObjectTypeInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_qom_list_types(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ ObjectTypeInfoList * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool has_implements = false;
+ char * implements = NULL;
+ bool has_abstract = false;
+ bool abstract;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_start_optional(v, &has_implements, "implements", errp);
+ if (has_implements) {
+ visit_type_str(v, &implements, "implements", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_abstract, "abstract", errp);
+ if (has_abstract) {
+ visit_type_bool(v, &abstract, "abstract", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_qom_list_types(has_implements, implements, has_abstract, abstract, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_qom_list_types(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_start_optional(v, &has_implements, "implements", NULL);
+ if (has_implements) {
+ visit_type_str(v, &implements, "implements", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_abstract, "abstract", NULL);
+ if (has_abstract) {
+ visit_type_bool(v, &abstract, "abstract", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_device_list_properties(DevicePropertyInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_DevicePropertyInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_DevicePropertyInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_device_list_properties(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ DevicePropertyInfoList * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * q_typename = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &q_typename, "typename", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_device_list_properties(q_typename, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_device_list_properties(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &q_typename, "typename", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_migrate(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * uri = NULL;
+ bool has_blk = false;
+ bool blk;
+ bool has_inc = false;
+ bool inc;
+ bool has_detach = false;
+ bool detach;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &uri, "uri", errp);
+ visit_start_optional(v, &has_blk, "blk", errp);
+ if (has_blk) {
+ visit_type_bool(v, &blk, "blk", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_inc, "inc", errp);
+ if (has_inc) {
+ visit_type_bool(v, &inc, "inc", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_detach, "detach", errp);
+ if (has_detach) {
+ visit_type_bool(v, &detach, "detach", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_migrate(uri, has_blk, blk, has_inc, inc, has_detach, detach, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &uri, "uri", NULL);
+ visit_start_optional(v, &has_blk, "blk", NULL);
+ if (has_blk) {
+ visit_type_bool(v, &blk, "blk", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_inc, "inc", NULL);
+ if (has_inc) {
+ visit_type_bool(v, &inc, "inc", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_detach, "detach", NULL);
+ if (has_detach) {
+ visit_type_bool(v, &detach, "detach", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_xen_save_devices_state(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * filename = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &filename, "filename", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_xen_save_devices_state(filename, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &filename, "filename", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_xen_set_global_dirty_log(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool enable;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_bool(v, &enable, "enable", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_xen_set_global_dirty_log(enable, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_bool(v, &enable, "enable", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_device_del(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * id = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &id, "id", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_device_del(id, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &id, "id", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_dump_guest_memory(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool paging;
+ char * protocol = NULL;
+ bool has_begin = false;
+ int64_t begin;
+ bool has_length = false;
+ int64_t length;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_bool(v, &paging, "paging", errp);
+ visit_type_str(v, &protocol, "protocol", errp);
+ visit_start_optional(v, &has_begin, "begin", errp);
+ if (has_begin) {
+ visit_type_int(v, &begin, "begin", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_length, "length", errp);
+ if (has_length) {
+ visit_type_int(v, &length, "length", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_dump_guest_memory(paging, protocol, has_begin, begin, has_length, length, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_bool(v, &paging, "paging", NULL);
+ visit_type_str(v, &protocol, "protocol", NULL);
+ visit_start_optional(v, &has_begin, "begin", NULL);
+ if (has_begin) {
+ visit_type_int(v, &begin, "begin", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_length, "length", NULL);
+ if (has_length) {
+ visit_type_int(v, &length, "length", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * id = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &id, "id", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_netdev_del(id, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &id, "id", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_getfd(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * fdname = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &fdname, "fdname", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_getfd(fdname, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &fdname, "fdname", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_closefd(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * fdname = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &fdname, "fdname", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_closefd(fdname, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &fdname, "fdname", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_machines(MachineInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_MachineInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_MachineInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_machines(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ MachineInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_machines(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_machines(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_cpu_definitions(CpuDefinitionInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_CpuDefinitionInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CpuDefinitionInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_cpu_definitions(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ CpuDefinitionInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_cpu_definitions(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_cpu_definitions(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_add_fd(AddfdInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_AddfdInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_AddfdInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_add_fd(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ AddfdInfo * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool has_fdset_id = false;
+ int64_t fdset_id;
+ bool has_opaque = false;
+ char * opaque = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_start_optional(v, &has_fdset_id, "fdset-id", errp);
+ if (has_fdset_id) {
+ visit_type_int(v, &fdset_id, "fdset-id", errp);
+ }
+ visit_end_optional(v, errp);
+ visit_start_optional(v, &has_opaque, "opaque", errp);
+ if (has_opaque) {
+ visit_type_str(v, &opaque, "opaque", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_add_fd(has_fdset_id, fdset_id, has_opaque, opaque, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_add_fd(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_start_optional(v, &has_fdset_id, "fdset-id", NULL);
+ if (has_fdset_id) {
+ visit_type_int(v, &fdset_id, "fdset-id", NULL);
+ }
+ visit_end_optional(v, NULL);
+ visit_start_optional(v, &has_opaque, "opaque", NULL);
+ if (has_opaque) {
+ visit_type_str(v, &opaque, "opaque", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_remove_fd(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ int64_t fdset_id;
+ bool has_fd = false;
+ int64_t fd;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_int(v, &fdset_id, "fdset-id", errp);
+ visit_start_optional(v, &has_fd, "fd", errp);
+ if (has_fd) {
+ visit_type_int(v, &fd, "fd", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_remove_fd(fdset_id, has_fd, fd, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_int(v, &fdset_id, "fdset-id", NULL);
+ visit_start_optional(v, &has_fd, "fd", NULL);
+ if (has_fd) {
+ visit_type_int(v, &fd, "fd", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_fdsets(FdsetInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_FdsetInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_FdsetInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_fdsets(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ FdsetInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_fdsets(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_fdsets(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_target(TargetInfo * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_TargetInfo(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TargetInfo(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_target(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ TargetInfo * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_target(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_target(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_send_key(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ KeyValueList * keys = NULL;
+ bool has_hold_time = false;
+ int64_t hold_time;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_KeyValueList(v, &keys, "keys", errp);
+ visit_start_optional(v, &has_hold_time, "hold-time", errp);
+ if (has_hold_time) {
+ visit_type_int(v, &hold_time, "hold-time", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_send_key(keys, has_hold_time, hold_time, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_KeyValueList(v, &keys, "keys", NULL);
+ visit_start_optional(v, &has_hold_time, "hold-time", NULL);
+ if (has_hold_time) {
+ visit_type_int(v, &hold_time, "hold-time", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_screendump(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * filename = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &filename, "filename", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_screendump(filename, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &filename, "filename", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_nbd_server_start(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ SocketAddress * addr = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_SocketAddress(v, &addr, "addr", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_nbd_server_start(addr, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_SocketAddress(v, &addr, "addr", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_nbd_server_add(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * device = NULL;
+ bool has_writable = false;
+ bool writable;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &device, "device", errp);
+ visit_start_optional(v, &has_writable, "writable", errp);
+ if (has_writable) {
+ visit_type_bool(v, &writable, "writable", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_nbd_server_add(device, has_writable, writable, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &device, "device", NULL);
+ visit_start_optional(v, &has_writable, "writable", NULL);
+ if (has_writable) {
+ visit_type_bool(v, &writable, "writable", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_nbd_server_stop(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_nbd_server_stop(errp);
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_chardev_add(ChardevReturn * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_ChardevReturn(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_ChardevReturn(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_chardev_add(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ ChardevReturn * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * id = NULL;
+ ChardevBackend * backend = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &id, "id", errp);
+ visit_type_ChardevBackend(v, &backend, "backend", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_chardev_add(id, backend, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_chardev_add(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &id, "id", NULL);
+ visit_type_ChardevBackend(v, &backend, "backend", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_chardev_remove(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ char * id = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_str(v, &id, "id", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_chardev_remove(id, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_str(v, &id, "id", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_tpm_models(TpmModelList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_TpmModelList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmModelList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_tpm_models(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ TpmModelList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_tpm_models(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_tpm_models(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_tpm_types(TpmTypeList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_TpmTypeList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TpmTypeList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_tpm_types(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ TpmTypeList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_tpm_types(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_tpm_types(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_tpm(TPMInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_TPMInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_TPMInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_tpm(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ TPMInfoList * retval = NULL;
+ (void)args;
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_tpm(errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_tpm(retval, ret, errp);
+ }
+
+out:
+
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_command_line_options(CommandLineOptionInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_CommandLineOptionInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_CommandLineOptionInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_command_line_options(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ CommandLineOptionInfoList * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool has_option = false;
+ char * option = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_start_optional(v, &has_option, "option", errp);
+ if (has_option) {
+ visit_type_str(v, &option, "option", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_command_line_options(has_option, option, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_command_line_options(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_start_optional(v, &has_option, "option", NULL);
+ if (has_option) {
+ visit_type_str(v, &option, "option", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+static void qmp_marshal_output_query_rx_filter(RxFilterInfoList * ret_in, QObject **ret_out, Error **errp)
+{
+ QapiDeallocVisitor *md = qapi_dealloc_visitor_new();
+ QmpOutputVisitor *mo = qmp_output_visitor_new();
+ Visitor *v;
+
+ v = qmp_output_get_visitor(mo);
+ visit_type_RxFilterInfoList(v, &ret_in, "unused", errp);
+ if (!error_is_set(errp)) {
+ *ret_out = qmp_output_get_qobject(mo);
+ }
+ qmp_output_visitor_cleanup(mo);
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_RxFilterInfoList(v, &ret_in, "unused", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+}
+
+int qmp_marshal_input_query_rx_filter(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ RxFilterInfoList * retval = NULL;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ bool has_name = false;
+ char * name = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_start_optional(v, &has_name, "name", errp);
+ if (has_name) {
+ visit_type_str(v, &name, "name", errp);
+ }
+ visit_end_optional(v, errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ retval = qmp_query_rx_filter(has_name, name, errp);
+ if (!error_is_set(errp)) {
+ qmp_marshal_output_query_rx_filter(retval, ret, errp);
+ }
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_start_optional(v, &has_name, "name", NULL);
+ if (has_name) {
+ visit_type_str(v, &name, "name", NULL);
+ }
+ visit_end_optional(v, NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
+int qmp_marshal_input_blockdev_add(Monitor *mon, const QDict *qdict, QObject **ret)
+{
+ Error *local_err = NULL;
+ Error **errp = &local_err;
+ QDict *args = (QDict *)qdict;
+ QmpInputVisitor *mi;
+ QapiDeallocVisitor *md;
+ Visitor *v;
+ BlockdevOptions * options = NULL;
+
+ mi = qmp_input_visitor_new_strict(QOBJECT(args));
+ v = qmp_input_get_visitor(mi);
+ visit_type_BlockdevOptions(v, &options, "options", errp);
+ qmp_input_visitor_cleanup(mi);
+
+ if (error_is_set(errp)) {
+ goto out;
+ }
+ qmp_blockdev_add(options, errp);
+
+out:
+ md = qapi_dealloc_visitor_new();
+ v = qapi_dealloc_get_visitor(md);
+ visit_type_BlockdevOptions(v, &options, "options", NULL);
+ qapi_dealloc_visitor_cleanup(md);
+
+ if (local_err) {
+ qerror_report_err(local_err);
+ error_free(local_err);
+ return -1;
+ }
+ return 0;
+}
+
diff --git a/android/qemu1/vl-android.c b/android/qemu1/vl-android.c
index 920f48d172..58fafe6e96 100644
--- a/android/qemu1/vl-android.c
+++ b/android/qemu1/vl-android.c
@@ -390,6 +390,7 @@ extern int android_display_bpp;
extern void dprint( const char* format, ... );
static void android_check_for_updates();
+static void qemu1_android_emulation_teardown();
const char* dns_log_filename = NULL;
const char* drop_log_filename = NULL;
@@ -3650,7 +3651,7 @@ int main(int argc, char **argv, char **envp)
net_cleanup();
android_wear_agent_stop();
socket_drainer_stop();
- android_emulation_teardown();
+ qemu1_android_emulation_teardown();
return 0;
}
@@ -3658,9 +3659,8 @@ void android_check_for_updates() {
android_checkForUpdates(QEMU_CORE_VERSION);
}
-void
-android_emulation_teardown(void)
-{
+void qemu1_android_emulation_teardown() {
skin_charmap_done();
android_teardown_metrics();
+ qemu_android_emulation_teardown();
}
diff --git a/android/rebuild.sh b/android/rebuild.sh
index 9984a75893..c6a53c09f2 100755
--- a/android/rebuild.sh
+++ b/android/rebuild.sh
@@ -91,43 +91,6 @@ case $HOST_OS in
HOST_NUM_CPUS=1
esac
-# Return the type of a given file, using the /usr/bin/file command.
-# $1: executable path.
-# Out: file type string, or empty if the path is wrong.
-get_file_type () {
- /usr/bin/file "$1" 2>/dev/null
-}
-
-# Return true iff the file type string |$1| contains the expected
-# substring |$2|.
-# $1: executable file type
-# $2: expected file type substring
-check_file_type_substring () {
- printf "%s\n" "$1" | grep -q -E -e "$2"
-}
-
-# Define EXPECTED_32BIT_FILE_TYPE and EXPECTED_64BIT_FILE_TYPE depending
-# on the current target platform. Then EXPECTED_EMULATOR_BITNESS and
-# EXPECTED_EMULATOR_FILE_TYPE accordingly.
-if [ "$MINGW" ]; then
- EXPECTED_32BIT_FILE_TYPE="PE32 executable \(console\) Intel 80386"
- EXPECTED_64BIT_FILE_TYPE="PE32\+ executable \(console\) x86-64"
- EXPECTED_EMULATOR_BITNESS=32
- EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_32BIT_FILE_TYPE
- TARGET_OS=windows
-elif [ "$HOST_OS" = "Darwin" ]; then
- EXPECTED_64BIT_FILE_TYPE="Mach-O 64-bit executable x86_64"
- EXPECTED_EMULATOR_BITNESS=64
- EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_64BIT_FILE_TYPE
- TARGET_OS=darwin
-else
- EXPECTED_64BIT_FILE_TYPE="ELF 64-bit LSB +executable, x86-64"
- EXPECTED_EMULATOR_BITNESS=64
- EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_64BIT_FILE_TYPE
- TARGET_OS=linux
-fi
-
-
# Let's not remove the build directory when someone asks for help
if [ -z "$HELP" ]; then
cd "$PROGDIR"/..
@@ -151,143 +114,23 @@ echo "Building sources."
run make -j$HOST_NUM_CPUS BUILD_OBJS_DIR="$OUT_DIR" ||
panic "Could not build sources, please run 'make' to see why."
-RUN_EMUGEN_TESTS=true
-RUN_GEN_ENTRIES_TESTS=true
-
-EXE_SUFFIX=
-
-if [ "$MINGW" ]; then
- EXE_SUFFIX=.exe
-fi
-
-# Return the minimum OS X version that a Darwin binary targets.
-# $1: executable path
-# Out: minimum version (e.g. '10.8') or empty string on error.
-darwin_min_version () {
- otool -l "$1" 2>/dev/null | awk \
- 'BEGIN { CMD="" } $1 == "cmd" { CMD=$2 } $1 == "version" && CMD == "LC_VERSION_MIN_MACOSX" { print $2 }'
-}
-
-OSX_DEPLOYMENT_TARGET=10.8
-
-# List all executables to check later.
-EXECUTABLES="emulator emulator64-arm emulator64-x86 emulator64-mips"
-if [ "$HOST_OS" = "Linux" ]; then
- if [ -z "$MINGW" ]; then
- EXECUTABLES="$EXECUTABLES emulator-arm emulator-x86 emulator-mips"
- fi
-fi
if [ -z "$NO_TESTS" ]; then
- echo "Running tests"
- run make tests BUILD_OBJS_DIR="$OUT_DIR" ||
- panic "Failed to run unit tests, run make tests to see why."
-
- FAILURES=""
-
- echo "Checking for 'emulator' launcher program."
- EMULATOR=$OUT_DIR/emulator$EXE_SUFFIX
- if [ ! -f "$EMULATOR" ]; then
- echo " - FAIL: $EMULATOR is missing!"
- FAILURES="$FAILURES emulator"
- fi
-
- echo "Checking that 'emulator' is a $EXPECTED_EMULATOR_BITNESS-bit program."
- EMULATOR_FILE_TYPE=$(get_file_type "$EMULATOR")
- if ! check_file_type_substring "$EMULATOR_FILE_TYPE" "$EXPECTED_EMULATOR_FILE_TYPE"; then
- echo " - FAIL: $EMULATOR is not a 32-bit executable!"
- echo " File type: $EMULATOR_FILE_TYPE"
- echo " Expected : $EXPECTED_EMULATOR_FILE_TYPE"
- FAILURES="$FAILURES emulator-bitness-check"
- fi
-
- if [ "$HOST_OS" = "Darwin" ]; then
- echo "Checking that Darwin binaries target OSX $OSX_DEPLOYMENT_TARGET"
- for EXEC in $EXECUTABLES; do
- MIN_VERSION=$(darwin_min_version "$OUT_DIR/$EXEC")
- if [ "$MIN_VERSION" != "$OSX_DEPLOYMENT_TARGET" ]; then
- echo " - FAIL: $EXEC targets [$MIN_VERSION], expected [$OSX_DEPLOYMENT_TARGET]"
- FAILURES="$FAILURES $EXEC-darwin-target"
- fi
- done
- fi
-
-
- if [ "$RUN_EMUGEN_TESTS" ]; then
- EMUGEN_UNITTESTS=$OUT_DIR/build/intermediates64/emugen_unittests/emugen_unittests
- if [ ! -f "$EMUGEN_UNITTESTS" ]; then
- echo "FAIL: Missing binary: $EMUGEN_UNITTESTS"
- FAILURES="$FAILURES emugen_unittests-binary"
- else
- echo "Running emugen_unittests."
- run $EMUGEN_UNITTESTS ||
- FAILURES="$FAILURES emugen_unittests"
- fi
- echo "Running emugen regression test suite."
- # Note that the binary is always built for the 'build' machine type,
- # I.e. if --mingw is used, it's still a Linux executable.
- EMUGEN=$OUT_DIR/build/intermediates64/emugen/emugen
- if [ ! -f "$EMUGEN" ]; then
- echo "FAIL: Missing 'emugen' binary: $EMUGEN"
- FAILURES="$FAILURES emugen-binary"
- else
- # The first case is for a remote build with package-release.sh
- TEST_SCRIPT=$PROGDIR/../opengl/host/tools/emugen/tests/run-tests.sh
- if [ ! -f "$TEST_SCRIPT" ]; then
- # This is the usual location.
- TEST_SCRIPT=$PROGDIR/android-emugl/host/tools/emugen/tests/run-tests.sh
- fi
- if [ ! -f "$TEST_SCRIPT" ]; then
- echo " FAIL: Missing script: $TEST_SCRIPT"
- FAILURES="$FAILURES emugen-test-script"
- else
- run $TEST_SCRIPT --emugen=$EMUGEN ||
- FAILURES="$FAILURES emugen-test-suite"
- fi
- fi
- fi
-
- # Check the gen-entries.py script.
- if [ "$RUN_GEN_ENTRIES_TESTS" ]; then
- echo "Running gen-entries.py test suite."
- run android/scripts/tests/gen-entries/run-tests.sh ||
- FAILURES="$FAILURES gen-entries_tests"
- fi
-
- # Check that the windows executables all have icons.
- # First need to locate the windres tool.
- if [ "$MINGW" ]; then
- echo "Checking windows executables icons."
- if [ ! -f "$CONFIG_MAKE" ]; then
- echo "FAIL: Could not find \$CONFIG_MAKE !?"
- FAILURES="$FAILURES out-dir-config-make"
- else
- WINDRES=$(awk '/^BUILD_TARGET_WINDRES:=/ { print $2; } $1 == "BUILD_TARGET_WINDRES" { print $3; }' $CONFIG_MAKE) ||
- if true; then
- echo "FAIL: Could not find host 'windres' program"
- FAILURES="$FAILURES host-windres"
- fi
- EXPECTED_ICONS=14
- for EXEC in $EXECUTABLES; do
- EXEC=${EXEC}.exe
- if [ ! -f "$OUT_DIR"/$EXEC ]; then
- echo "FAIL: Missing windows executable: $EXEC"
- FAILURES="$FAILURES windows-$EXEC"
- else
- NUM_ICONS=$($WINDRES --input-format=coff --output-format=rc $OUT_DIR/$EXEC | grep RT_ICON | wc -l)
- if [ "$NUM_ICONS" != "$EXPECTED_ICONS" ]; then
- echo "FAIL: Invalid icon count in $EXEC ($NUM_ICONS, expected $EXPECTED_ICONS)"
- FAILURES="$FAILURES windows-$EXEC-icons"
- fi
- fi
- done
- fi
- fi
- if [ "$FAILURES" ]; then
- panic "Unit test failures: $FAILURES"
- fi
+ # Let's not run all the tests parallel..
+ run android/scripts/run_tests.sh --verbose --verbose --out-dir=$OUT_DIR --jobs=1
else
echo "Ignoring unit tests suite."
fi
echo "Done. !!"
+
+if [ "$OPTDEBUG" = "true" ]; then
+ overrides=`cat android/asan_overrides`
+ echo "Debug build enabled."
+ echo "ASAN may be in use; recommend disabling some ASAN checks as build is not"
+ echo "universally ASANified. This can be done with"
+ echo ""
+ echo ". android/envsetup.sh"
+ echo ""
+ echo "or export ASAN_OPTIONS=$overrides"
+fi
diff --git a/android/scripts/build-qemu-android.sh b/android/scripts/build-qemu-android.sh
index a03fbb691e..aff62781a3 100755
--- a/android/scripts/build-qemu-android.sh
+++ b/android/scripts/build-qemu-android.sh
@@ -461,6 +461,10 @@ EOF
# Now build everything else in parallel.
run make -j$NUM_JOBS $BUILD_FLAGS $LINKPROG_FLAGS V=1
+ # Now build the unit tests
+ run make check -j$NUM_JOBS $BUILD_FLAGS $LINKPROG_FLAGS V=1
+
+
for QEMU_EXE in $QEMU_TARGET_BUILDS; do
if [ ! -f "$QEMU_EXE" ]; then
panic "$(builder_text) Could not build $QEMU_EXE!!"
@@ -513,6 +517,17 @@ EOF
"$LINK_FILE" > $INSTALL_DIR/$1/$(basename "$LINK_FILE")
done
+ mkdir -p $INSTALL_DIR/$1/tests
+ # Copy all the test files
+ for LINK_FILE in "$BUILD_DIR"/LINK-tests/*; do
+ [ -f $LINK_FILE ] && \
+ sed \
+ -e 's|'${PREBUILTS_DIR}'|@PREBUILTS_DIR@|g' \
+ -e 's|'${QEMU_SRCDIR}'|@SRC_DIR@|g' \
+ -e 's|'${BUILD_DIR}'||g' \
+ "$LINK_FILE" > $INSTALL_DIR/$1/tests/$(basename "$LINK_FILE")
+ done
+
unset PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR SDL_CONFIG
unset LIBFFI_CFLAGS LIBFFI_LIBS GLIB_CFLAGS GLIB_LIBS
diff --git a/android/scripts/coverage.sh b/android/scripts/coverage.sh
index fdecd91a56..3e7bb9a545 100755
--- a/android/scripts/coverage.sh
+++ b/android/scripts/coverage.sh
@@ -18,6 +18,7 @@
PROGDIR=`dirname $0`
shell_import utils/aosp_dir.shi
+shell_import utils/temp_dir.shi
shell_import utils/option_parser.shi
PROGRAM_PARAMETERS=""
@@ -39,6 +40,9 @@ option_register_var "--csv" OPT_CSV "Produce a CSV instead of html"
OPT_BUILDID=-1
option_register_var "--buildid=<buildid>" OPT_BUILDID "Use the given build id for csv generation."
+OPT_COVERAGE=code-coverage.zip
+option_register_var "--coverage=<zipfile>" OPT_COVERAGE "Zip file with all the .gcno, .gcda coverage files."
+
aosp_dir_register_option
aosp_dir_parse_option
@@ -55,16 +59,27 @@ fi
OS=$(get_build_os)
CLANG_BINDIR=$AOSP_DIR/$(aosp_prebuilt_clang_dir_for $OS)
QEMU2_TOP_DIR=$(realpath $PROGDIR/../..)/.
-TITLE=$(git log --pretty=oneline -n 1)
-VENV=$OPT_OUT/build/venv
+ANDROID_SDK_TOOLS_CL_SHA1=$( git log -n 1 --pretty=format:"%H" )
-if [ ! -f $VENV/bin/activate ]; then
- run python -m virtualenv $VENV
-fi
+var_create_temp_dir CODE_COVERAGE_DIR codecoverage
+
+function prep_env() {
+ # Prepares the python virtual environment
+ VENV=$OPT_OUT/build/venv
-source $VENV/bin/activate
-run pip install gcovr
+ if [ ! -f $VENV/bin/activate ]; then
+ run python -m virtualenv $VENV
+ fi
+
+ source $VENV/bin/activate
+ run pip install gcovr
+}
+
+if [ "$OPT_BUILDID" ]; then
+ run unzip $OPT_COVERAGE -d $CODE_COVERAGE_DIR
+fi
+prep_env
run mkdir -p "$OPT_OUT/coverage"
if [ "$OPT_CSV" ]; then
@@ -78,11 +93,12 @@ if [ "$OPT_CSV" ]; then
--xml \
--xml-pretty \
--verbose \
- $OPT_OUT
- run xsltproc --param buildid $OPT_BUILDID \
+ $CODE_COVERAGE_DIR
+ xsltproc --param buildid $OPT_BUILDID \
$QEMU2_TOP_DIR/android/scripts/coverage.xsl \
$COVXML > "$OPT_OUT/coverage/emu-coverage.csv"
else
+ TITLE=$(git log --pretty=oneline -n 1 $ANDROID_SDK_TOOLS_CL_SHA1)
run gcovr \
-j $NUM_JOBS \
--root $QEMU2_TOP_DIR \
@@ -93,5 +109,5 @@ else
--html-details \
--html \
--verbose \
- $OPT_OUT
+ $CODE_COVERAGE_DIR
fi
diff --git a/android/scripts/gen-hw-config.py b/android/scripts/gen-hw-config.py
index 1cfc5d7efc..8753e20120 100755
--- a/android/scripts/gen-hw-config.py
+++ b/android/scripts/gen-hw-config.py
@@ -117,6 +117,9 @@ if lastItem:
if targetFile == '--':
out = sys.stdout
else:
+ targetDir = os.path.dirname(targetFile)
+ if not os.path.exists(targetDir):
+ os.makedirs(targetDir)
out = open(targetFile,"wb")
out.write(targetHeader)
diff --git a/android/scripts/generate-qemu1-sources.sh b/android/scripts/generate-qemu1-sources.sh
new file mode 100755
index 0000000000..6d4158eb54
--- /dev/null
+++ b/android/scripts/generate-qemu1-sources.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+. $(dirname "$0")/utils/common.shi
+
+shell_import utils/aosp_dir.shi
+shell_import utils/option_parser.shi
+
+PROGRAM_DESCRIPTION=\
+"Generates the QEMU1 sources
+
+You usually want to run this script after you have merged in new changes from the qemu
+branch.
+
+Since we are no longer actively developing QEMU1, you should not ever have to run this
+script.
+"
+
+aosp_dir_register_option
+option_parse "$@"
+aosp_dir_parse_option
+
+# Generate the QAPI headers and sources from qapi-schema.json
+# Ideally, this would be done in our Makefiles, but as far as I
+# understand, the platform build doesn't support a single tool
+# that generates several sources files, nor the standalone one.
+export PYTHONDONTWRITEBYTECODE=1
+PROGDIR=${AOSP_DIR}/external/qemu/android
+AUTOGENERATED_DIR=${PROGDIR}/qemu1/qemu1-qapi-auto-generated
+
+log "Generating: $AUTOGENERATED_DIR"
+QAPI_SCHEMA=$PROGDIR/qemu1/qapi-schema.json
+QAPI_SCRIPTS=$PROGDIR/qemu1/scripts
+make_if_not_exists "$AUTOGENERATED_DIR"
+run python $QAPI_SCRIPTS/qapi-types.py qapi.types --output-dir=$AUTOGENERATED_DIR -b < $QAPI_SCHEMA
+run python $QAPI_SCRIPTS/qapi-visit.py --output-dir=$AUTOGENERATED_DIR -b < $QAPI_SCHEMA
+run python $QAPI_SCRIPTS/qapi-commands.py --output-dir=$AUTOGENERATED_DIR -m < $QAPI_SCHEMA
+
+
diff --git a/android-qemu2-glue/build/configure.sh b/android/scripts/generate-qemu2-sources.sh
index f6ad328ac5..4e550b90b4 100644..100755
--- a/android-qemu2-glue/build/configure.sh
+++ b/android/scripts/generate-qemu2-sources.sh
@@ -1,31 +1,65 @@
-# This script is sourced from the top-level Android emulator
-# configuration script, and relies on the following macro
-# definitions:
+#!/bin/sh
+
+# Copyright 2018 The Android Open Source Project
#
-# QEMU2_TOP_DIR: top-level QEMU2 source directory.
-# QEMU2_TRACE: the tracers that should be enabled
-# OUT_DIR: top-level build output directory.
-
-if [ -z "$QEMU2_TOP_DIR" ] ||
- [ -z "$QEMU2_TRACE" ] ||
- [ -z "$OUT_DIR" ] ;
-then
- echo "This script needs to be sourced from configure.sh, with the proper variables set."
- exit 1
-fi
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+. $(dirname "$0")/utils/common.shi
+shell_import utils/aosp_dir.shi
+shell_import utils/option_parser.shi
+
+PROGRAM_DESCRIPTION=\
+"Generates the QEMU2 sources
+
+You usually want to run this script after you have merged in new changes from the qemu
+branch.
+
+During the QEMU configure phase a set of sources are created. These range from:
+
+- Tracers
+- Keymaps
+- Stubs
+"
+
+QEMU2_TRACE=nop
+option_register_var "--trace=<tracers>" QEMU2_TRACE "Tracers to enable [$QEMU2_TRACE]"
+
+aosp_dir_register_option
+option_parse "$@"
+aosp_dir_parse_option
+
+
+
+QEMU2_TOP_DIR=${AOSP_DIR}/external/qemu
+QEMU2_AUTOGENERATED_DIR=${QEMU2_TOP_DIR}/qemu2-auto-generated
+
+make_if_not_exists "$QEMU2_AUTOGENERATED_DIR"
+
+if [ "$OPTION_TRACE" = "yes" ] ; then
+ log "Enabling tracing"
+ QEMU2_TRACE=simple,log
+ echo "QEMU2_TRACE := yes" > $QEMU2_AUTOGENERATED_DIR/trace-config
+else
+ QEMU2_TRACE=nop
+ echo "QEMU2_TRACE :=" > $QEMU2_AUTOGENERATED_DIR/trace-config
+fi
-QEMU2_AUTOGENERATED_DIR=$OUT_DIR/build/qemu2-qapi-auto-generated
replace_with_if_different () {
cmp -s "$1" "$2" || mv "$2" "$1"
}
-probe_prebuilts_dir "QEMU2 Dependencies" \
- QEMU2_DEPS_PREBUILTS_DIR \
- qemu-android-deps
-
-echo "QEMU2_DEPS_PREBUILTS_DIR := $QEMU2_DEPS_PREBUILTS_DIR" >> $config_mk
## Generate the codeamp files.
KEYCODEMAP_FILES="\
@@ -52,7 +86,7 @@ KEYCODEMAP_CSV=$QEMU2_TOP_DIR/ui/keycodemapdb/data/keymaps.csv
for KEYMAP in $KEYCODEMAP_FILES; do
dest=$(dirname "${QEMU2_AUTOGENERATED_DIR}/${KEYMAP}")
- mkdir -p $dest
+ make_if_not_exists $dest
src=$(echo $KEYMAP | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$,\1,")
dst=$(echo $KEYMAP | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$,\2,")
log "GEN KEYAMP ${src} -> ${dst}"
@@ -62,20 +96,17 @@ for KEYMAP in $KEYCODEMAP_FILES; do
code-map ${KEYCODEMAP_CSV} ${src} ${dst} > ${QEMU2_AUTOGENERATED_DIR}/${KEYMAP}
done
-mkdir -p $QEMU2_AUTOGENERATED_DIR/qapi
-mkdir -p $QEMU2_AUTOGENERATED_DIR/tests
-
-python -B $QEMU2_TOP_DIR/scripts/qapi-gen.py \
+make_if_not_exists $QEMU2_AUTOGENERATED_DIR/qapi
+make_if_not_exists $QEMU2_AUTOGENERATED_DIR/tests
+run python -B $QEMU2_TOP_DIR/scripts/qapi-gen.py \
-o $QEMU2_AUTOGENERATED_DIR/qapi \
-b $QEMU2_TOP_DIR/qapi/qapi-schema.json || panic "Failed to generate types from qapi-schema.json"
-
-python -B $QEMU2_TOP_DIR/scripts/qapi-gen.py \
+run python -B $QEMU2_TOP_DIR/scripts/qapi-gen.py \
-o $QEMU2_AUTOGENERATED_DIR/tests \
-p "test-" \
-b $QEMU2_TOP_DIR/tests/qapi-schema/qapi-schema-test.json || panic "Failed to generate types from qapi-schema.json"
-
-python $QEMU2_TOP_DIR/scripts/modules/module_block.py \
- $QEMU2_TOP_DIR/module_block.h || panic "Failed to generate module.h"
+run python $QEMU2_TOP_DIR/scripts/modules/module_block.py \
+ $QEMU2_AUTOGENERATED_DIR/module_block.h || panic "Failed to generate module.h"
generate_trace() {
@@ -84,7 +115,7 @@ generate_trace() {
local FORMAT=$3
local TRACEFILE=$4
log "GEN $OUT"
- mkdir -p $(dirname $QEMU2_AUTOGENERATED_DIR/$OUT)
+ make_if_not_exists $(dirname $QEMU2_AUTOGENERATED_DIR/$OUT)
python $QEMU2_TOP_DIR/scripts/tracetool.py \
--group=$GROUP --format=$FORMAT --backends=$QEMU2_TRACE $TRACEFILE > $QEMU2_AUTOGENERATED_DIR/$OUT || panic "Failed to generate trace $OUT from $TRACEFILE"
}
@@ -95,7 +126,7 @@ append_trace() {
local FORMAT=$3
local TRACEFILE=$4
log "GEN $OUT"
- mkdir -p $(dirname $QEMU2_AUTOGENERATED_DIR/$OUT)
+ make_if_not_exists $(dirname $QEMU2_AUTOGENERATED_DIR/$OUT)
python $QEMU2_TOP_DIR/scripts/tracetool.py \
--group=$GROUP --format=$FORMAT --backends=$QEMU2_TRACE $TRACEFILE >> $QEMU2_AUTOGENERATED_DIR/$OUT
}
@@ -147,8 +178,8 @@ bash $QEMU2_TOP_DIR/scripts/hxtool -h \
< $QEMU2_TOP_DIR/qemu-img-cmds.hx \
> $QEMU2_AUTOGENERATED_DIR/qemu-img-cmds.h
-rm -f $QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm64.c
-bash $QEMU2_TOP_DIR/scripts/feature_to_c.sh \
+run rm -f $QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm64.c
+run bash $QEMU2_TOP_DIR/scripts/feature_to_c.sh \
$QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm64.c \
$QEMU2_TOP_DIR/gdb-xml/aarch64-core.xml \
$QEMU2_TOP_DIR/gdb-xml/aarch64-fpu.xml \
@@ -157,36 +188,14 @@ bash $QEMU2_TOP_DIR/scripts/feature_to_c.sh \
$QEMU2_TOP_DIR/gdb-xml/arm-vfp3.xml \
$QEMU2_TOP_DIR/gdb-xml/arm-neon.xml
-rm -f $QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm.c
-bash $QEMU2_TOP_DIR/scripts/feature_to_c.sh \
+run rm -f $QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm.c
+run bash $QEMU2_TOP_DIR/scripts/feature_to_c.sh \
$QEMU2_AUTOGENERATED_DIR/gdbstub-xml-arm.c \
$QEMU2_TOP_DIR/gdb-xml/arm-core.xml \
$QEMU2_TOP_DIR/gdb-xml/arm-vfp.xml \
$QEMU2_TOP_DIR/gdb-xml/arm-vfp3.xml \
$QEMU2_TOP_DIR/gdb-xml/arm-neon.xml
-if [ "$OPT_MINGW" ]; then
- $OUT_DIR/objs/build/toolchain/x86_64-mingw32-windres \
- -o $QEMU2_AUTOGENERATED_DIR/version.o \
- $QEMU2_TOP_DIR/version.rc
-fi
-
-# Generate qemu-version.h from Git history.
-QEMU_VERSION_H=$QEMU2_AUTOGENERATED_DIR/qemu-version.h
-QEMU_VERSION_H_TMP=$QEMU_VERSION_H.tmp
-rm -f "$QEMU_VERSION_H"
-if [ -d "$QEMU2_TOP_DIR/.git" ]; then
- QEMU_VERSION=$(cd "$QEMU2_TOP_DIR" && git describe --match 'v*' 2>/dev/null | tr -d '\n')
-else
- QEMU_VERSION=$(date "+%Y-%m-%d")
-fi
-
-echo "QEMU2 : Version [$QEMU_VERSION]"
-
-printf "#define QEMU_PKGVERSION \"(android-%s)\"\n" "$QEMU_VERSION" > $QEMU_VERSION_H_TMP
-printf '#define QEMU_FULL_VERSION QEMU_VERSION " (" QEMU_PKGVERSION ")"\n' >> $QEMU_VERSION_H_TMP
-replace_with_if_different "$QEMU_VERSION_H" "$QEMU_VERSION_H_TMP"
-rm -f "$QEMU_VERSION_TMP_H"
# Work-around for a QEMU2 bug:
# $QEMU2/linux-headers/linux/kvm.h includes <asm/kvm.h>
@@ -196,5 +205,13 @@ rm -f "$QEMU_VERSION_TMP_H"
# The end result is that the <asm/kvm.h> from the host system
# or toolchain sysroot is being included, which ends up in a
# conflict. Work around it by creating a symlink here
-rm -f $QEMU2_AUTOGENERATED_DIR/asm
-ln -sf $QEMU2_TOP_DIR/linux-headers/asm-x86 $QEMU2_AUTOGENERATED_DIR/asm
+[ -d $QEMU2_AUTOGENERATED_DIR/asm ] && run unlink $QEMU2_AUTOGENERATED_DIR/asm
+run ln -sf ../linux-headers/asm-x86 $QEMU2_AUTOGENERATED_DIR/asm
+
+README="This directory is auto-generated, DO NOT EDIT!
+
+You can recreate it by executing:
+
+$0 $@"
+
+echo $README > $QEMU2_AUTOGENERATED_DIR/README
diff --git a/android/scripts/run_tests.sh b/android/scripts/run_tests.sh
new file mode 100755
index 0000000000..334b6b4eb5
--- /dev/null
+++ b/android/scripts/run_tests.sh
@@ -0,0 +1,237 @@
+#!/bin/sh
+
+# Copyright 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+. $(dirname "$0")/utils/common.shi
+PROGDIR=`dirname $0`
+
+shell_import utils/aosp_dir.shi
+shell_import utils/temp_dir.shi
+shell_import utils/option_parser.shi
+
+# Fancy colors in the terminal
+if [ -t 1 ] ; then
+ RED=`tput setaf 1`
+ GREEN=`tput setaf 2`
+ RESET=`tput sgr0`
+else
+ RED=
+ GREEN=
+ RESET=
+fi
+
+
+PROGRAM_PARAMETERS=""
+
+PROGRAM_DESCRIPTION=\
+"Runs all the unit tests and basic checks."
+
+
+option_register_var "-j<count>" OPT_NUM_JOBS "Run <count> parallel build jobs [$(get_build_num_cores)]"
+option_register_var "--jobs=<count>" OPT_NUM_JOBS "Same as -j<count>."
+
+OPT_OUT=objs
+option_register_var "--out-dir=<dir>" OPT_OUT "Use specific output directory"
+
+aosp_dir_register_option
+option_parse "$@"
+aosp_dir_parse_option
+
+if [ "$OPT_NUM_JOBS" ]; then
+ NUM_JOBS=$OPT_NUM_JOBS
+ log2 "Parallel jobs count: $NUM_JOBS"
+else
+ NUM_JOBS=$(get_build_num_cores)
+ log2 "Auto-config: --jobs=$NUM_JOBS"
+fi
+
+cd $PROGDIR/../..
+
+QEMU2_TOP_DIR=${AOSP_DIR}/external/qemu
+HOST_OS=$(get_build_os)
+CONFIG_MAKE=${OPT_OUT}/build/config.make
+# Extract the target os from config.make.
+TARGET_OS=$(grep BUILD_TARGET_OS ${CONFIG_MAKE} | awk '{ print $3; }')
+FAILURES=""
+EXE_SUFFIX=
+OSX_DEPLOYMENT_TARGET=10.8
+RUN_EMUGEN_TESTS=true
+RUN_GEN_ENTRIES_TESTS=true
+
+
+echo "Running test on ${HOST_OS} for target: ${TARGET_OS}"
+
+# Return the type of a given file, using the /usr/bin/file command.
+# $1: executable path.
+# Out: file type string, or empty if the path is wrong.
+get_file_type () {
+ /usr/bin/file "$1" 2>/dev/null
+}
+
+# Prints a warning in red if possible
+warn() {
+ echo "${RED}$1${RESET}"
+}
+
+# Return true iff the file type string |$1| contains the expected
+# substring |$2|.
+# $1: executable file type
+# $2: expected file type substring
+check_file_type_substring () {
+ printf "%s\n" "$1" | grep -q -E -e "$2"
+}
+
+# Return the minimum OS X version that a darwin binary targets.
+# $1: executable path
+# Out: minimum version (e.g. '10.8') or empty string on error.
+darwin_min_version () {
+ otool -l "$1" 2>/dev/null | awk \
+ 'BEGIN { CMD="" } $1 == "cmd" { CMD=$2 } $1 == "version" && CMD == "LC_VERSION_MIN_MACOSX" { print $2 }'
+}
+
+# List all executables to check later.
+EXECUTABLES="emulator emulator64-arm emulator64-x86"
+if [ "$TARGET_OS" = "windows" ]; then
+ EXE_SUFFIX=.exe
+ EXECUTABLES="$EXECUTABLES emulator-arm emulator-x86"
+fi
+
+# Define EXPECTED_32BIT_FILE_TYPE and EXPECTED_64BIT_FILE_TYPE depending
+# on the current target platform. Then EXPECTED_EMULATOR_BITNESS and
+# EXPECTED_EMULATOR_FILE_TYPE accordingly.
+if [ "$TARGET_OS" = "windows" ]; then
+ EXPECTED_32BIT_FILE_TYPE="PE32 executable \(console\) Intel 80386"
+ EXPECTED_64BIT_FILE_TYPE="PE32\+ executable \(console\) x86-64"
+ EXPECTED_EMULATOR_BITNESS=32
+ EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_32BIT_FILE_TYPE
+ TARGET_OS=windows
+elif [ "$TARGET_OS" = "darwin" ]; then
+ EXPECTED_64BIT_FILE_TYPE="Mach-O 64-bit executable x86_64"
+ EXPECTED_EMULATOR_BITNESS=64
+ EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_64BIT_FILE_TYPE
+ TARGET_OS=darwin
+else
+ EXPECTED_64BIT_FILE_TYPE="ELF 64-bit LSB +executable, x86-64"
+ EXPECTED_EMULATOR_BITNESS=64
+ EXPECTED_EMULATOR_FILE_TYPE=$EXPECTED_64BIT_FILE_TYPE
+ TARGET_OS=linux
+fi
+
+
+run make tests BUILD_OBJS_DIR="$OPT_OUT" -j${NUM_JOBS} ||
+ FAILURES="$FAILURES unittests"
+
+log "Checking for 'emulator' launcher program."
+EMULATOR=$OPT_OUT/emulator$EXE_SUFFIX
+if [ ! -f "$EMULATOR" ]; then
+ warn " - FAIL: $EMULATOR is missing!"
+ FAILURES="$FAILURES emulator"
+fi
+
+log "Checking that 'emulator' is a $EXPECTED_EMULATOR_BITNESS-bit program."
+EMULATOR_FILE_TYPE=$(get_file_type "$EMULATOR")
+if ! check_file_type_substring "$EMULATOR_FILE_TYPE" "$EXPECTED_EMULATOR_FILE_TYPE"; then
+ warn " - FAIL: $EMULATOR is not a 32-bit executable!"
+ warn " File type: $EMULATOR_FILE_TYPE"
+ warn " Expected : $EXPECTED_EMULATOR_FILE_TYPE"
+ FAILURES="$FAILURES emulator-bitness-check"
+fi
+
+if [ "$HOST_OS" = "darwin" ]; then
+ log "Checking that darwin binaries target OSX $OSX_DEPLOYMENT_TARGET"
+ for EXEC in $EXECUTABLES; do
+ MIN_VERSION=$(darwin_min_version "$OPT_OUT/$EXEC")
+ if [ "$MIN_VERSION" != "$OSX_DEPLOYMENT_TARGET" ]; then
+ echo " - FAIL: $EXEC targets [$MIN_VERSION], expected [$OSX_DEPLOYMENT_TARGET]"
+ FAILURES="$FAILURES $EXEC-darwin-target"
+ fi
+ done
+fi
+
+
+if [ "$RUN_EMUGEN_TESTS" ]; then
+ EMUGEN_UNITTESTS=$OPT_OUT/emugen_unittests
+ if [ ! -f "$EMUGEN_UNITTESTS" ]; then
+ warn "FAIL: Missing binary: $EMUGEN_UNITTESTS"
+ FAILURES="$FAILURES emugen_unittests-binary"
+ else
+ log "Running emugen_unittests."
+ run $EMUGEN_UNITTESTS ||
+ FAILURES="$FAILURES emugen_unittests"
+ fi
+ log "Running emugen regression test suite."
+ # Note that the binary is always built for the 'build' machine type,
+ # I.e. if --mingw is used, it's still a Linux executable.
+ EMUGEN=$OPT_OUT/emugen
+ if [ ! -f "$EMUGEN" ]; then
+ echo "FAIL: Missing 'emugen' binary: $EMUGEN"
+ FAILURES="$FAILURES emugen-binary"
+ else
+ # The first case is for a remote build with package-release.sh
+ TEST_SCRIPT=$PROGDIR/../../opengl/host/tools/emugen/tests/run-tests.sh
+ if [ ! -f "$TEST_SCRIPT" ]; then
+ # This is the usual location.
+ TEST_SCRIPT=$QEMU2_TOP_DIR/android/android-emugl/host/tools/emugen/tests/run-tests.sh
+ fi
+ if [ ! -f "$TEST_SCRIPT" ]; then
+ echo " FAIL: Missing script: $TEST_SCRIPT"
+ FAILURES="$FAILURES emugen-test-script"
+ else
+ run $TEST_SCRIPT --emugen=$EMUGEN ||
+ FAILURES="$FAILURES emugen-test-suite"
+ fi
+ fi
+fi
+
+# Check the gen-entries.py script.
+if [ "$RUN_GEN_ENTRIES_TESTS" ]; then
+ log "Running gen-entries.py test suite."
+ run android/scripts/tests/gen-entries/run-tests.sh ||
+ FAILURES="$FAILURES gen-entries_tests"
+fi
+
+# Check that the windows executables all have icons.
+# First need to locate the windres tool.
+if [ "$TARGET_OS" = "windows" ]; then
+ log "Checking windows executables icons."
+ if [ ! -f "$CONFIG_MAKE" ]; then
+ echo "FAIL: Could not find \$CONFIG_MAKE !?"
+ FAILURES="$FAILURES out-dir-config-make"
+ else
+ WINDRES=$(awk '/^BUILD_TARGET_WINDRES:=/ { print $2; } $1 == "BUILD_TARGET_WINDRES" { print $3; }' $CONFIG_MAKE) ||
+ if true; then
+ echo "FAIL: Could not find host 'windres' program"
+ FAILURES="$FAILURES host-windres"
+ fi
+ EXPECTED_ICONS=14
+ for EXEC in $EXECUTABLES; do
+ EXEC=${EXEC}.exe
+ if [ ! -f "$OPT_OUT"/$EXEC ]; then
+ warn "FAIL: Missing windows executable: $EXEC"
+ FAILURES="$FAILURES windows-$EXEC"
+ else
+ NUM_ICONS=$($WINDRES --input-format=coff --output-format=rc $OPT_OUT/$EXEC | grep RT_ICON | wc -l)
+ if [ "$NUM_ICONS" != "$EXPECTED_ICONS" ]; then
+ warn "FAIL: Invalid icon count in $EXEC ($NUM_ICONS, expected $EXPECTED_ICONS)"
+ FAILURES="$FAILURES windows-$EXEC-icons"
+ fi
+ fi
+ done
+ fi
+fi
+if [ "$FAILURES" ]; then
+ panic "Unit test failures: ${RED}$FAILURES${RESET}"
+fi
+
diff --git a/android/scripts/utils/common.shi b/android/scripts/utils/common.shi
index fd10607e9f..0fdd848174 100644
--- a/android/scripts/utils/common.shi
+++ b/android/scripts/utils/common.shi
@@ -440,6 +440,18 @@ copy_directory_files ()
panic "Cannot copy to directory: $DSTDIR"
}
+# Creates the given directory if it doesn't exist yet
+# $1: Directory to create
+make_if_not_exists()
+{
+ local DESTDIR="$1"
+ if [ ! -d $DESTDIR ]; then
+ run mkdir -p ${DESTDIR} || panic "Unable to create ${DESTDIR}"
+ else
+ log2 "Directory: ${DESTDIR} already exists"
+ fi
+}
+
# Compute the SHA-1 sum of a given file. Implementation depends on the
# current host machine.
# $1: File path
diff --git a/android/tests/Makefile.end2end.mk b/android/tests/Makefile.end2end.mk
new file mode 100644
index 0000000000..6461848786
--- /dev/null
+++ b/android/tests/Makefile.end2end.mk
@@ -0,0 +1,14 @@
+emulator-end2end-test = \
+ $(eval $(call start-emulator-program, $1_end2endtest)) \
+ $(eval LOCAL_C_INCLUDES += $(ANDROID_EMU_INCLUDES) $(EMULATOR_GTEST_INCLUDES)) \
+ $(eval LOCAL_STATIC_LIBRARIES += $(ANDROID_EMU_STATIC_LIBRARIES) $(EMULATOR_GTEST_STATIC_LIBRARIES)) \
+ $(eval LOCAL_SRC_FILES := android/tests/end2end/$1.cpp) \
+ $(eval LOCAL_LDLIBS += $(ANDROID_EMU_BASE_LDLIBS)) \
+ $(call local-link-static-c++lib) \
+ $(eval $(call end-emulator-program)) \
+
+ifeq ($(BUILD_TARGET_SUFFIX),64)
+
+$(call emulator-end2end-test,HelloEmulator)
+
+endif
diff --git a/android/tests/end2end/HelloEmulator.cpp b/android/tests/end2end/HelloEmulator.cpp
new file mode 100644
index 0000000000..39b07245a3
--- /dev/null
+++ b/android/tests/end2end/HelloEmulator.cpp
@@ -0,0 +1,387 @@
+// Copyright 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "android/avd/generate.h"
+#include "android/base/files/PathUtils.h"
+#include "android/base/misc/FileUtils.h"
+#include "android/base/StringView.h"
+#include "android/base/system/System.h"
+#include "android/base/testing/TestTempDir.h"
+#include "android/emulation/ConfigDirs.h"
+#include "android/utils/path.h"
+
+#include <memory>
+
+#include <gtest/gtest.h>
+
+#define EMU_BINARY_BASENAME "emulator"
+
+#ifdef _WIN32
+#define EMU_BINARY_SUFFIX ".exe"
+#else
+#define EMU_BINARY_SUFFIX ""
+#endif
+
+static const int kLaunchTimeoutMs = 10000;
+
+namespace android {
+namespace base {
+
+class EmulatorEnvironmentTest : public ::testing::Test {
+protected:
+ void SetUp() override {
+ if (!mCollectedPrevEnv) {
+ prevEnvSdkRoot = System::get()->envGet("ANDROID_SDK_ROOT");
+ prevEnvSdkHome = System::get()->envGet("ANDROID_SDK_HOME");
+ prevEnvAndroidHome = System::get()->envGet("ANDROID_HOME");
+ mCollectedPrevEnv = true;
+ }
+
+ System::get()->envSet("ANDROID_SDK_ROOT", "");
+ System::get()->envSet("ANDROID_SDK_HOME", "");
+ System::get()->envSet("ANDROID_HOME", "");
+
+ mTempDir.reset(new TestTempDir("emuenvtest"));
+ }
+
+ void TearDown() override {
+ mTempDir.reset();
+
+ for (const auto& dir: mCustomDirs) {
+ path_delete_dir(dir.c_str());
+ }
+ mCustomDirs.clear();
+
+ System::get()->envSet("ANDROID_SDK_ROOT", prevEnvSdkRoot);
+ System::get()->envSet("ANDROID_SDK_HOME", prevEnvSdkHome);
+ System::get()->envSet("ANDROID_HOME", prevEnvAndroidHome);
+ }
+
+ std::string makeSdkAt(StringView dir) {
+ std::string root = mTempDir->makeSubPath(dir);
+ std::string platforms = PathUtils::join(root, "platforms");
+ std::string platformTools = PathUtils::join(root, "platform-tools");
+
+ EXPECT_TRUE(path_mkdir_if_needed(platforms.c_str(), 0755) == 0);
+ EXPECT_TRUE(path_mkdir_if_needed(platformTools.c_str(), 0755) == 0);
+
+ mCustomDirs.push_back(root);
+
+ sdkSetup_copySkinFiles(root);
+ sdkSetup_copySystemImageFiles(root);
+
+
+ return root;
+ }
+
+ std::string makeSdkHomeAt(StringView dir) {
+ std::string root = mTempDir->makeSubPath(dir);
+ std::string avdRoot = PathUtils::join(root, "avd");
+
+ EXPECT_TRUE(path_mkdir_if_needed(root.c_str(), 0755) == 0);
+ EXPECT_TRUE(path_mkdir_if_needed(avdRoot.c_str(), 0755) == 0);
+
+ mCustomDirs.push_back(root);
+
+ return root;
+ }
+
+ void setSdkRoot(StringView sdkRoot) {
+ System::get()->envSet("ANDROID_SDK_ROOT", sdkRoot);
+ }
+
+ void setSdkHome(StringView sdkHome) {
+ System::get()->envSet("ANDROID_SDK_HOME", sdkHome);
+ }
+
+ std::string launchEmulatorWithResult(
+ const std::vector<std::string>& args,
+ int timeoutMs,
+ std::string* kernelOutput = nullptr) {
+
+ auto dir = System::get()->getLauncherDirectory();
+
+ auto outFilePath = pj(dir, "emuOutput.txt");
+ auto outKernelPath = pj(dir, "emuKernelOutput.txt");
+
+ path_delete_file(outFilePath.c_str());
+ path_delete_file(outKernelPath.c_str());
+
+ std::string shellSerialFileArg = "file:" + outKernelPath;
+
+ std::string emulatorBinaryFilename(EMU_BINARY_BASENAME EMU_BINARY_SUFFIX);
+ auto emuLauncherPath = PathUtils::join(dir, emulatorBinaryFilename);
+ EXPECT_TRUE(path_exists(emuLauncherPath.c_str()));
+
+ std::vector<std::string> allArgs = {
+ emuLauncherPath,
+ };
+
+ for (const auto a: args) {
+ allArgs.push_back(a);
+ }
+
+ std::vector<std::string> launchOpts = {
+ "-no-accel",
+ "-no-snapshot",
+ "-no-window",
+ "-verbose",
+ "-show-kernel",
+ "-shell-serial",
+ shellSerialFileArg,
+ "-qemu",
+ "-no-reboot",
+ "-append",
+ "kernel.panic=-1",
+ };
+
+ for (const auto a: launchOpts) {
+ allArgs.push_back(a);
+ }
+
+ bool result =
+ System::get()->runCommand(
+ allArgs,
+ RunOptions::WaitForCompletion |
+ RunOptions::TerminateOnTimeout |
+ RunOptions::DumpOutputToFile,
+ timeoutMs,
+ nullptr,
+ nullptr,
+ outFilePath);
+
+ (void)result;
+
+ auto output = readFileIntoString(outFilePath);
+
+ if (kernelOutput) {
+ auto kernelContents = readFileIntoString(outKernelPath);
+ if (kernelContents) {
+ *kernelOutput = *kernelContents;
+ }
+ }
+
+ path_delete_file(outFilePath.c_str());
+ path_delete_file(outKernelPath.c_str());
+
+ if (output) {
+ return *output;
+ } else {
+ return "";
+ }
+ }
+
+ bool doSdkCheck() {
+ auto result =
+ launchEmulatorWithResult(
+ {"-launcher-test", "sdkCheck"},
+ kLaunchTimeoutMs);
+ return didSdkCheckSucceed(result);
+ }
+
+ bool didSdkCheckSucceed(const std::string& output) {
+ return output != "" &&
+ (output.find("(does not exist)") == std::string::npos);
+ }
+
+
+ bool didEmulatorKernelStartup(const std::string& output) {
+ // Look for markers of success---note, may be configuration
+ // or implementation dependent
+ bool hasMainLoopStartup =
+ output.find("Starting QEMU main loop") != std::string::npos;
+
+ bool hasColdBootChoice =
+ output.find("Cold boot: requested by the user") !=
+ std::string::npos;
+
+ return hasMainLoopStartup && hasColdBootChoice;
+ }
+
+ void runAvdTest(StringView avdName,
+ StringView sdkRoot,
+ StringView sdkHome,
+ StringView androidTarget,
+ StringView variant,
+ StringView abi) {
+
+ auto sdkRootPath = makeSdkAt(sdkRoot);
+ auto sdkHomePath = makeSdkHomeAt(sdkHome);
+
+ setSdkRoot(sdkRootPath);
+ setSdkHome(sdkHomePath);
+
+ deleteAvd(avdName, sdkHomePath);
+ generateAvdWithDefaults(
+ avdName, sdkRootPath, sdkHomePath,
+ androidTarget, variant, abi);
+
+ std::string kernelOutput;
+ auto result =
+ launchEmulatorWithResult(
+ {"-avd", avdName},
+ kLaunchTimeoutMs,
+ &kernelOutput);
+
+ // Print the result for posterity.
+ std::string avdNameAsStr = avdName.str();
+ printf("Kernel startup run result for avd %s:\n", avdNameAsStr.c_str());
+ printf("%s\n", result.c_str());
+ printf("Kernel output: %s\n", kernelOutput.c_str());
+
+ deleteAvd(avdName, sdkHomePath);
+
+ // TODO: Work out what's flaking here
+ if (!didEmulatorKernelStartup(result + kernelOutput)) {
+ printf("You done goofed, kernel didn't start up!\n");
+ }
+
+ System::stopAllEmulatorProcesses();
+ }
+
+ std::unique_ptr<TestTempDir> mTempDir;
+
+private:
+ bool mCollectedPrevEnv = false;
+ std::string prevEnvSdkRoot;
+ std::string prevEnvSdkHome;
+ std::string prevEnvAndroidHome;
+ std::vector<std::string> mCustomDirs;
+
+ std::string testdataSdkDir() {
+ return pj(System::get()->getProgramDirectory(),
+ "testdata", "test-sdk");
+ }
+
+ // Copy the skin files over. Only nexus_5x supported for now.
+ void sdkSetup_copySkinFiles(StringView sdkRoot) {
+ auto skinDirSrc = pj(testdataSdkDir(), "skins", "nexus_5x");
+ auto skinDirDst = pj(sdkRoot, "skins", "nexus_5x");
+
+ path_mkdir_if_needed(skinDirDst.c_str(), 0755);
+
+ std::vector<std::string> skinFiles = {
+ "land_back.webp",
+ "land_fore.webp",
+ "land_shadow.webp",
+ "layout",
+ "port_back.webp",
+ "port_fore.webp",
+ "port_shadow.webp",
+ };
+
+ for (const auto f: skinFiles) {
+ auto src = pj(skinDirSrc, f);
+ auto dst = pj(skinDirDst, f);
+ path_copy_file(dst.c_str(), src.c_str());
+ }
+ }
+
+ void sdkSetup_copySystemImageFiles(StringView sdkRoot) {
+ // Only API 19 Google APIs ARMv7 supported for now.
+ sdkSetup_copySystemImage(
+ sdkRoot, "android-19", "google_apis", "armeabi-v7a");
+ }
+
+ void sdkSetup_copySystemImage(StringView sdkRoot,
+ StringView androidTarget,
+ StringView variant,
+ StringView abi) {
+ auto testSdkSysImgDir =
+ pj(testdataSdkDir(),
+ "system-images",
+ androidTarget,
+ variant,
+ abi);
+
+ auto testSdkSysImgDstDir =
+ pj(sdkRoot,
+ "system-images",
+ androidTarget,
+ variant,
+ abi);
+
+ path_mkdir_if_needed(testSdkSysImgDstDir.c_str(), 0755);
+
+ std::vector<std::string> sysimgFiles = {
+ "NOTICE.txt",
+ "build.prop",
+ "kernel-ranchu",
+ "package.xml",
+ "ramdisk.img",
+ "source.properties",
+ "system.img",
+ "userdata.img",
+ };
+
+ for (const auto f: sysimgFiles) {
+ auto src = pj(testSdkSysImgDir, f);
+ auto dst = pj(testSdkSysImgDstDir, f);
+ path_copy_file(dst.c_str(), src.c_str());
+ }
+ }
+};
+
+TEST_F(EmulatorEnvironmentTest, BasicAccelCheck) {
+ EXPECT_FALSE(
+ launchEmulatorWithResult(
+ {"-accel-check"},
+ kLaunchTimeoutMs) == "");
+}
+
+TEST_F(EmulatorEnvironmentTest, BasicASCII) {
+ auto sdkRootPath = makeSdkAt("testSdk");
+ auto sdkHomePath = makeSdkHomeAt("testSdkHome");
+
+ setSdkRoot(sdkRootPath);
+ setSdkHome(sdkHomePath);
+
+ EXPECT_TRUE(doSdkCheck());
+}
+
+TEST_F(EmulatorEnvironmentTest, BasicNonASCII) {
+ const char* sdkName = "\xF0\x9F\xA4\x94";
+ const char* sdkHomeName = "foo\xE1\x80\x80 bar";
+
+ auto sdkRootPath = makeSdkAt(sdkName);
+ auto sdkHomePath = makeSdkHomeAt(sdkHomeName);
+
+ setSdkRoot(sdkRootPath);
+ setSdkHome(sdkHomePath);
+
+ EXPECT_TRUE(doSdkCheck());
+}
+
+TEST_F(EmulatorEnvironmentTest, BasicAvd) {
+ runAvdTest(
+ "api19Ascii",
+ "testSdk", "testSdkHome",
+ "android-19", "google_apis",
+ "armeabi-v7a");
+}
+
+TEST_F(EmulatorEnvironmentTest, NonASCIIAvd) {
+ const char* sdkName = "\xF0\x9F\xA4\x94";
+ const char* sdkHomeName = "foo\xE1\x80\x80 bar";
+
+ runAvdTest(
+ "api19NonAscii",
+ sdkName, sdkHomeName,
+ "android-19", "google_apis",
+ "armeabi-v7a");
+}
+
+
+
+} // namespace base
+} // namespace android
diff --git a/android/third_party/CMakeLists.txt b/android/third_party/CMakeLists.txt
new file mode 100644
index 0000000000..ceff0d453a
--- /dev/null
+++ b/android/third_party/CMakeLists.txt
@@ -0,0 +1,53 @@
+cmake_minimum_required(VERSION 3.5)
+
+# COMPILER + PATH CONFIGURATION
+# =============================
+# TODO(jansene): This section is needed as a bridge
+# to the android build system.
+
+# Please do not try to test compile an executable..
+# We cannot run .exe on linux
+if (DEFINED LOCAL_C_INCLUDES)
+ string(REPLACE " " ";" INCLUDES ${LOCAL_C_INCLUDES})
+endif()
+
+# Use same compiler config as android build system
+set(CMAKE_C_FLAGS ${LOCAL_CFLAGS})
+set(CMAKE_CXX_FLAGS "${LOCAL_CFLAGS} ${LOCAL_CXXFLAGS}")
+
+# Work around some gcc/mingw issues
+if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
+
+# Make sure we create archives in the same way..
+set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+if (DEFINED LOCAL_INSTALL)
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${LOCAL_INSTALL}")
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${LOCAL_INSTALL}")
+endif()
+# END COMPILER CONFIGURATION
+# ==========================
+
+
+
+add_library(emulator-tinyobjloader ../../../tinyobjloader/tiny_obj_loader.cc)
+target_include_directories(emulator-tinyobjloader PUBLIC ../../../tinyobjloader)
+
+add_subdirectory(astc-codec)
+add_subdirectory(jpeg-6b)
+add_subdirectory(libdtb)
+add_subdirectory(libselinux)
+add_subdirectory(libsparse)
+add_subdirectory(libwebp)
+add_subdirectory(libyuv)
+add_subdirectory(murmurhash)
+add_subdirectory(tinyepoxy)
+add_subdirectory(libkeymaster3)
+
+if(WIN32 OR ("${LOCAL_OS}" STREQUAL "windows") )
+ add_subdirectory(mman-win32)
+endif()
diff --git a/android/third_party/astc-codec/Android.mk b/android/third_party/astc-codec/Android.mk
deleted file mode 100644
index d12a0f5324..0000000000
--- a/android/third_party/astc-codec/Android.mk
+++ /dev/null
@@ -1,87 +0,0 @@
-### astc-codec library, used for ASTC texture decompression in software.
-### The sources are located under $ANDROID/external/astc-codec.
-
-EMULATOR_ASTC_CODEC_SOURCES_DIR ?= $(LOCAL_PATH)/../astc-codec
-ifeq (,$(strip $(wildcard $(EMULATOR_ASTC_CODEC_SOURCES_DIR))))
- $(error Cannot find astc-codec sources directory: $(EMULATOR_ASTC_CODEC_SOURCES_DIR))
-endif
-
-EMULATOR_ASTC_CODEC_INCLUDES := $(EMULATOR_ASTC_CODEC_SOURCES_DIR)/include
-EMULATOR_ASTC_CODEC_SOURCES := \
- src/decoder/astc_file.cc \
- src/decoder/codec.cc \
- src/decoder/endpoint_codec.cc \
- src/decoder/footprint.cc \
- src/decoder/integer_sequence_codec.cc \
- src/decoder/intermediate_astc_block.cc \
- src/decoder/logical_astc_block.cc \
- src/decoder/partition.cc \
- src/decoder/physical_astc_block.cc \
- src/decoder/quantization.cc \
- src/decoder/weight_infill.cc \
-
-old_LOCAL_PATH := $(LOCAL_PATH)
-
-LOCAL_PATH := $(EMULATOR_ASTC_CODEC_SOURCES_DIR)
-
-$(call start-emulator-library, emulator-astc-codec)
-ifeq (windows,$(BUILD_TARGET_OS))
- # MinGW has some additional warnings that are safe to ignore:
- # - maybe-uninitialized in intermediate_astc_block.cc, for a std::array
- # that is safely uninitialzed by a helper function.
- # - unused-variable in release builds due to asserts. clang doesn't have
- # this warning enabled, so it's safe to disable here.
- LOCAL_CFLAGS += -Wno-error=unused-variable -Wno-error=maybe-uninitialized
-endif
-LOCAL_C_INCLUDES += $(EMULATOR_ASTC_CODEC_SOURCES_DIR)
-LOCAL_CPP_EXTENSION := .cc
-LOCAL_SRC_FILES := $(EMULATOR_ASTC_CODEC_SOURCES)
-$(call end-emulator-library)
-
-
-$(call start-emulator-program, emulator$(BUILD_TARGET_SUFFIX)_astc_unittests)
-$(call gen-hw-config-defs)
-
-LOCAL_C_INCLUDES += \
- $(EMULATOR_ASTC_CODEC_INCLUDES) \
- $(EMULATOR_GTEST_INCLUDES) \
-
-LOCAL_SRC_FILES := \
- src/base/test/bit_stream_test.cpp \
- src/base/test/bottom_n_test.cpp \
- src/base/test/math_utils_test.cpp \
- src/base/test/optional_test.cpp \
- src/base/test/string_utils_test.cpp \
- src/base/test/type_traits_test.cpp \
- src/base/test/uint128_test.cpp \
- src/decoder/test/partition_test.cc \
- src/decoder/test/physical_astc_block_test.cc \
- src/decoder/test/integer_sequence_codec_test.cc \
- src/decoder/test/intermediate_astc_block_test.cc \
- src/decoder/test/quantization_test.cc \
- src/decoder/test/weight_infill_test.cc \
- src/decoder/test/endpoint_codec_test.cc \
- src/decoder/test/logical_astc_block_test.cc \
- src/decoder/test/codec_test.cc \
- src/decoder/test/footprint_test.cc \
-
-LOCAL_COPY_FILES := \
- $(subst $(LOCAL_PATH),,$(wildcard $(LOCAL_PATH)/src/decoder/testdata/*.astc)) \
- $(subst $(LOCAL_PATH),,$(wildcard $(LOCAL_PATH)/src/decoder/testdata/*.bmp)) \
-
-LOCAL_STATIC_LIBRARIES += \
- emulator-astc-codec \
- $(EMULATOR_GTEST_STATIC_LIBRARIES) \
-
-LOCAL_LDLIBS += \
- $(ANDROID_EMU_LDLIBS) \
-
-# Link against static libstdc++ on Linux and Windows since the unit-tests
-# cannot pick up our custom versions of the library from
-# $(BUILD_OBJS_DIR)/lib[64]/
-$(call local-link-static-c++lib)
-
-$(call end-emulator-program)
-
-LOCAL_PATH := $(old_LOCAL_PATH)
-
diff --git a/android/third_party/astc-codec/CMakeLists.txt b/android/third_party/astc-codec/CMakeLists.txt
new file mode 100644
index 0000000000..a0c1d28be9
--- /dev/null
+++ b/android/third_party/astc-codec/CMakeLists.txt
@@ -0,0 +1,65 @@
+cmake_minimum_required(VERSION 3.5)
+
+set(src "../../../../astc-codec/src")
+
+add_library(emulator-astc-codec
+ ${src}/decoder/astc_file.cc
+ ${src}/decoder/codec.cc
+ ${src}/decoder/endpoint_codec.cc
+ ${src}/decoder/footprint.cc
+ ${src}/decoder/integer_sequence_codec.cc
+ ${src}/decoder/intermediate_astc_block.cc
+ ${src}/decoder/logical_astc_block.cc
+ ${src}/decoder/partition.cc
+ ${src}/decoder/physical_astc_block.cc
+ ${src}/decoder/quantization.cc
+ ${src}/decoder/weight_infill.cc
+ )
+
+target_include_directories(emulator-astc-codec PUBLIC ${src}/../include)
+target_include_directories(emulator-astc-codec PRIVATE ${src}/..)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ # MinGW has some additional warnings that are safe to ignore:
+ # - maybe-uninitialized in intermediate_astc_block.cc, for a std::array
+ # that is safely uninitialzed by a helper function.
+ # - unused-variable in release builds due to asserts. clang doesn't have
+ # this warning enabled, so it's safe to disable here.
+ target_compile_definitions(emulator-astc-codec PRIVATE -DLIBYUV_DISABLE_X86)
+ target_compile_options(emulator-astc-codec PRIVATE
+ -Wno-error=unused-variable
+ -Wno-error=maybe-uninitialized)
+ endif ()
+endif ()
+
+enable_testing()
+add_subdirectory(../../../../googletest build/googletest)
+
+add_executable(emulator_astc_unittests
+ ${src}/base/test/bit_stream_test.cpp
+ ${src}/base/test/bottom_n_test.cpp
+ ${src}/base/test/math_utils_test.cpp
+ ${src}/base/test/optional_test.cpp
+ ${src}/base/test/string_utils_test.cpp
+ ${src}/base/test/type_traits_test.cpp
+ ${src}/base/test/uint128_test.cpp
+ ${src}/decoder/test/partition_test.cc
+ ${src}/decoder/test/physical_astc_block_test.cc
+ ${src}/decoder/test/integer_sequence_codec_test.cc
+ ${src}/decoder/test/intermediate_astc_block_test.cc
+ ${src}/decoder/test/quantization_test.cc
+ ${src}/decoder/test/weight_infill_test.cc
+ ${src}/decoder/test/endpoint_codec_test.cc
+ ${src}/decoder/test/logical_astc_block_test.cc
+ ${src}/decoder/test/codec_test.cc
+ ${src}/decoder/test/footprint_test.cc
+ )
+target_include_directories(emulator_astc_unittests PRIVATE ${src}/..)
+target_link_libraries(emulator_astc_unittests emulator-astc-codec gmock_main)
+
+IF (UNIX AND NOT APPLE)
+ set_target_properties(emulator_astc_unittests PROPERTIES LINK_FLAGS "-Wl,-rpath=$ORIGIN/lib64:$ORIGIN/lib:$ORIGIN/intermediates64")
+ENDIF (UNIX AND NOT APPLE)
+
diff --git a/android/third_party/ext4_utils/CMakeLists.txt b/android/third_party/ext4_utils/CMakeLists.txt
new file mode 100644
index 0000000000..035a16b18a
--- /dev/null
+++ b/android/third_party/ext4_utils/CMakeLists.txt
@@ -0,0 +1,63 @@
+cmake_minimum_required(VERSION 3.5)
+# COMPILER + PATH CONFIGURATION
+# =============================
+# TODO(jansene): This section is needed as a bridge
+# to the android build system.
+
+# Please do not try to test compile an executable..
+# We cannot run .exe on linux
+if (DEFINED LOCAL_C_INCLUDES)
+ string(REPLACE " " ";" INCLUDES ${LOCAL_C_INCLUDES})
+endif()
+
+# Use same compiler config as android build system
+set(CMAKE_C_FLAGS ${LOCAL_CFLAGS})
+set(CMAKE_CXX_FLAGS "${LOCAL_CFLAGS} ${LOCAL_CXXFLAGS}")
+
+# Work around some gcc/mingw issues
+if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
+
+# Make sure we create archives in the same way..
+set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> crs <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+if (DEFINED LOCAL_INSTALL)
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${LOCAL_INSTALL}")
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${LOCAL_INSTALL}")
+endif()
+# END COMPILER CONFIGURATION
+# ==========================
+
+add_library(emulator-libext4_utils
+ src/allocate.c
+ src/contents.c
+ src/crc16.c
+ src/ext4_sb.c
+ src/ext4_utils.c
+ src/extent.c
+ src/fs_config.c
+ src/indirect.c
+ src/make_ext4fs.c
+ src/sha1.c
+ src/uuid.c
+ src/wipe.c
+ )
+
+target_include_directories(emulator-libext4_utils PUBLIC include)
+target_include_directories(emulator-libext4_utils PRIVATE ../libselinux/include)
+
+target_include_directories(emulator-libext4_utils PRIVATE ../libsparse/include)
+target_include_directories(emulator-libext4_utils PRIVATE ../../android-emu/)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_definitions(emulator-libext4_utils PRIVATE -DUSE_MINGW=1)
+ endif ()
+endif ()
+target_compile_options(emulator-libext4_utils PRIVATE -Wno-error)
+target_compile_definitions(emulator-libext4_utils PRIVATE -DHOST)
+
diff --git a/android/third_party/ext4_utils/sources.mk b/android/third_party/ext4_utils/sources.mk
index d27080e6c1..22cb124c95 100644
--- a/android/third_party/ext4_utils/sources.mk
+++ b/android/third_party/ext4_utils/sources.mk
@@ -2,7 +2,6 @@ OLD_LOCAL_PATH := $(LOCAL_PATH)
LOCAL_PATH := $(call my-dir)
LIBEXT4_UTILS_INCLUDES := $(LOCAL_PATH)/include
-
LIBEXT4_UTILS_CFLAGS := -DHOST
LIBEXT4_UTILS_CFLAGS += -Wno-error
@@ -10,30 +9,16 @@ ifeq ($(BUILD_TARGET_OS),windows)
LIBEXT4_UTILS_CFLAGS += -DUSE_MINGW=1
endif
-$(call start-emulator-library,emulator-libext4_utils)
-
-LOCAL_SRC_FILES := \
- src/allocate.c \
- src/contents.c \
- src/crc16.c \
- src/ext4_sb.c \
- src/ext4_utils.c \
- src/extent.c \
- src/fs_config.c \
- src/indirect.c \
- src/make_ext4fs.c \
- src/sha1.c \
- src/uuid.c \
- src/wipe.c \
+$(call start-cmake-project,emulator-libext4_utils)
+PRODUCED_STATIC_LIBS := emulator-libext4_utils
LOCAL_C_INCLUDES := \
- $(LIBEXT4_UTILS_INCLUDES) \
$(LIBSPARSE_INCLUDES) \
$(LIBSELINUX_INCLUDES) \
$(LOCAL_PATH)/../../../android/android-emu
+$(call end-cmake-project)
+
-LOCAL_CFLAGS := $(LIBEXT4_UTILS_CFLAGS)
-$(call end-emulator-library)
$(call start-emulator-program,emulator$(BUILD_TARGET_SUFFIX)_make_ext4fs)
LOCAL_SRC_FILES := src/make_ext4fs_main.c
diff --git a/android/third_party/jpeg-6b/CMakeLists.txt b/android/third_party/jpeg-6b/CMakeLists.txt
new file mode 100644
index 0000000000..5570dc5438
--- /dev/null
+++ b/android/third_party/jpeg-6b/CMakeLists.txt
@@ -0,0 +1,64 @@
+cmake_minimum_required(VERSION 3.5)
+
+add_library(emulator-libjpeg
+ jcapimin.c
+ jcapistd.c
+ jccoefct.c
+ jccolor.c
+ jcdctmgr.c
+ jchuff.c
+ jcinit.c
+ jcmainct.c
+ jcmarker.c
+ jcmaster.c
+ jcomapi.c
+ jcparam.c
+ jcphuff.c
+ jcprepct.c
+ jcsample.c
+ jctrans.c
+ jdapimin.c
+ jdapistd.c
+ jdatadst.c
+ jdatasrc.c
+ jdcoefct.c
+ jdcolor.c
+ jddctmgr.c
+ jdhuff.c
+ jdinput.c
+ jdmainct.c
+ jdmarker.c
+ jdmaster.c
+ jdmerge.c
+ jdphuff.c
+ jdpostct.c
+ jdsample.c
+ jdtrans.c
+ jerror.c
+ jfdctflt.c
+ jfdctfst.c
+ jfdctint.c
+ jidctflt.c
+ jidctfst.c
+ jidctint.c
+ jidctintelsse.c
+ jidctred.c
+ jmemmgr.c
+ jmem-android.c
+ jquant1.c
+ jquant2.c
+ jutils.c
+)
+target_include_directories(emulator-libjpeg PRIVATE .)
+target_compile_options(emulator-libjpeg PRIVATE
+ -O3
+ -fstrict-aliasing
+ -msse2
+ -Wno-all)
+target_compile_definitions(emulator-libjpeg PRIVATE
+ -DAVOID_TABLES
+ -DANDROID_INTELSSE2_IDCT
+ -DANDROID_TILE_BASED_DECODE)
+
+
+
diff --git a/android/third_party/jpeg-6b/libjpeg.mk b/android/third_party/jpeg-6b/libjpeg.mk
deleted file mode 100644
index 1ec64946cd..0000000000
--- a/android/third_party/jpeg-6b/libjpeg.mk
+++ /dev/null
@@ -1,70 +0,0 @@
-# this file is included by various Makefiles and defines the set of sources used by our version of LibPng
-#
-OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-$(call start-emulator-library,emulator-libjpeg)
-
-LOCAL_SRC_FILES := \
- jcapimin.c \
- jcapistd.c \
- jccoefct.c \
- jccolor.c \
- jcdctmgr.c \
- jchuff.c \
- jcinit.c \
- jcmainct.c \
- jcmarker.c \
- jcmaster.c \
- jcomapi.c \
- jcparam.c \
- jcphuff.c \
- jcprepct.c \
- jcsample.c \
- jctrans.c \
- jdapimin.c \
- jdapistd.c \
- jdatadst.c \
- jdatasrc.c \
- jdcoefct.c \
- jdcolor.c \
- jddctmgr.c \
- jdhuff.c \
- jdinput.c \
- jdmainct.c \
- jdmarker.c \
- jdmaster.c \
- jdmerge.c \
- jdphuff.c \
- jdpostct.c \
- jdsample.c \
- jdtrans.c \
- jerror.c \
- jfdctflt.c \
- jfdctfst.c \
- jfdctint.c \
- jidctflt.c \
- jidctfst.c \
- jidctint.c \
- jidctintelsse.c \
- jidctred.c \
- jmemmgr.c \
- jmem-android.c \
- jquant1.c \
- jquant2.c \
- jutils.c \
-
-LOCAL_CFLAGS += \
- -DAVOID_TABLES \
- -O3 \
- -fstrict-aliasing \
- -DANDROID_INTELSSE2_IDCT \
- -msse2 \
- -DANDROID_TILE_BASED_DECODE \
- -Wno-all \
-
-$(call end-emulator-library)
-
-LIBJPEG_INCLUDES := $(LOCAL_PATH)
-
-LOCAL_PATH := $(OLD_LOCAL_PATH)
diff --git a/android/third_party/libdtb/CMakeLists.txt b/android/third_party/libdtb/CMakeLists.txt
new file mode 100644
index 0000000000..615e2bd9d5
--- /dev/null
+++ b/android/third_party/libdtb/CMakeLists.txt
@@ -0,0 +1,16 @@
+cmake_minimum_required(VERSION 3.5)
+
+add_library(emulator-libdtb src/libdtb.c)
+
+target_include_directories(emulator-libdtb PUBLIC include)
+target_include_directories(emulator-libdtb PRIVATE .)
+target_compile_definitions(emulator-libdtb PRIVATE -DHOST)
+target_compile_options(emulator-libdtb PRIVATE -Wno-error)
+
+if(WIN32 OR ("${LOCAL_OS}" STREQUAL "windows") )
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_definitions(emulator-libdtb PRIVATE -DUSE_MINGW=1)
+ endif()
+endif()
+
diff --git a/android/third_party/libdtb/libdtb.mk b/android/third_party/libdtb/libdtb.mk
deleted file mode 100644
index 752b3cf0e1..0000000000
--- a/android/third_party/libdtb/libdtb.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-LIBDTB_UTILS_INCLUDES := $(LOCAL_PATH)/include
-
-LIBDTB_UTILS_CFLAGS := -DHOST
-LIBDTB_UTILS_CFLAGS += -Wno-error
-
-ifeq ($(BUILD_TARGET_OS),windows)
- LIBDTB_UTILS_CFLAGS += -DUSE_MINGW=1
-endif
-
-$(call start-emulator-library,emulator-libdtb)
-
-LOCAL_SRC_FILES := src/libdtb.c
-
-LOCAL_C_INCLUDES := \
- $(LIBDTB_UTILS_INCLUDES) \
- $(LIBSPARSE_INCLUDES) \
- $(LIBSELINUX_INCLUDES)
-LOCAL_CFLAGS := $(LIBDTB_UTILS_CFLAGS)
-$(call end-emulator-library)
-
-LOCAL_PATH := $(OLD_LOCAL_PATH)
-
diff --git a/android/third_party/libkeymaster3/CMakeLists.txt b/android/third_party/libkeymaster3/CMakeLists.txt
new file mode 100644
index 0000000000..965f01029d
--- /dev/null
+++ b/android/third_party/libkeymaster3/CMakeLists.txt
@@ -0,0 +1,122 @@
+cmake_minimum_required(VERSION 3.5)
+
+# TODO(jansene): Move to a function
+if (DEFINED LOCAL_QEMU2_TOP_DIR)
+ get_filename_component(REPO_ROOT "${LOCAL_QEMU2_TOP_DIR}/../.." ABSOLUTE)
+ set(CURL_ROOT "${REPO_ROOT}/prebuilts/android-emulator-build/curl/${LOCAL_TARGET_TAG}")
+ set(CURL_LIBRARY ${CURL_ROOT}/lib/libcurl.a)
+ set(CURL_INCLUDE_DIR ${CURL_ROOT}/include)
+
+ # We will now find the prebuilt package.
+ find_package(CURL REQUIRED)
+ if (NOT CURL_LIBRARIES MATCHES "${REPO_ROOT}.*")
+ message(FATAL_ERROR "Discovered curl at: ${CURL_LIBRARIES}, ${CURL_INCLUDE_DIRS} which is outside of tree ${REPO_ROOT}!")
+ endif ()
+else ()
+ message(WARNING "Building outside the make system!")
+ find_package(CURL REQUIRED)
+
+ include (ExternalProject)
+
+ set(boringssl_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/boringssl/src/boringssl/include)
+ set(boringssl_URL https://boringssl.googlesource.com/boringssl)
+ set(boringssl_TAG chromium-stable)
+ set(boringssl_BUILD ${CMAKE_BINARY_DIR}/boringssl/src/boringssl-build)
+ #set(boringssl_LIBRARIES ${boringssl_BUILD}/obj/so/libboringssl.so)
+ set(boringssl_STATIC_LIBRARIES
+ ${boringssl_BUILD}/ssl/libssl.a
+ ${boringssl_BUILD}/crypto/libcrypto.a
+ ${boringssl_BUILD}/decrepit/libdecrepit.a
+ )
+ set(boringssl_INCLUDES ${boringssl_BUILD})
+
+ set(boringssl_HEADERS
+ "${boringssl_INCLUDE_DIR}/include/*.h"
+ )
+
+ ExternalProject_Add(boringssl
+ PREFIX boringssl
+ GIT_REPOSITORY ${boringssl_URL}
+ GIT_TAG ${boringssl_TAG}
+ DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
+ # BUILD_IN_SOURCE 1
+ BUILD_BYPRODUCTS ${boringssl_STATIC_LIBRARIES}
+ INSTALL_COMMAND ""
+ CMAKE_CACHE_ARGS
+ -DCMAKE_BUILD_TYPE:STRING=Release
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF
+ )
+
+ set(CURL_INCLUDE_DIRS "${CURL_INCLUDE_DIRS};${boringssl_INCLUDE_DIR}")
+ set(CURL_LIBRARIES} "${CURL_LIBRARIES});${boringssl_STATIC_LIBRARIES}")
+endif ()
+
+
+add_library(emulator-libkeymaster3
+ aes_key.cpp
+ aes_operation.cpp
+ android_keymaster.cpp
+ android_keymaster_messages.cpp
+ android_keymaster_utils.cpp
+ asymmetric_key.cpp
+ asymmetric_key_factory.cpp
+ attestation_record.cpp
+ auth_encrypted_key_blob.cpp
+ authorization_set.cpp
+ ecdsa_keymaster1_operation.cpp
+ ecdsa_operation.cpp
+ ecies_kem.cpp
+ ec_key.cpp
+ ec_key_factory.cpp
+ ec_keymaster0_key.cpp
+ ec_keymaster1_key.cpp
+ hkdf.cpp
+ hmac.cpp
+ hmac_key.cpp
+ hmac_operation.cpp
+ integrity_assured_key_blob.cpp
+ iso18033kdf.cpp
+ kdf.cpp
+ key.cpp
+ keymaster0_engine.cpp
+ keymaster1_engine.cpp
+ keymaster_enforcement.cpp
+ keymaster_ipc.cpp
+ keymaster_tags.cpp
+ logger.cpp
+ nist_curve_key_exchange.cpp
+ ocb.c
+ ocb_utils.cpp
+ openssl_err.cpp
+ openssl_utils.cpp
+ operation.cpp
+ operation_table.cpp
+ rsa_key.cpp
+ rsa_key_factory.cpp
+ rsa_keymaster0_key.cpp
+ rsa_keymaster1_key.cpp
+ rsa_keymaster1_operation.cpp
+ rsa_operation.cpp
+ serializable.cpp
+ soft_keymaster_context.cpp
+ soft_keymaster_device.cpp
+ symmetric_key.cpp
+ trusty_keymaster_context.cpp
+ trusty_keymaster_enforcement.cpp
+ trusty_rng.c
+ )
+
+target_include_directories(emulator-libkeymaster3 PUBLIC .)
+target_include_directories(emulator-libkeymaster3 PUBLIC ${CURL_INCLUDE_DIRS})
+target_include_directories(emulator-libkeymaster3 PRIVATE src include)
+target_include_directories(emulator-libkeymaster3 PRIVATE ../../android-emu)
+target_link_libraries(emulator-libkeymaster3 PUBLIC ${CURL_LIBRARIES})
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows") AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
+ target_compile_definitions(emulator-libkeymaster3 PRIVATE -DUSE_MINGW=1)
+endif ()
+
+if (NOT DEFINED LOCAL_QEMU2_TOP_DIR)
+ add_dependencies(emulator-libkeymaster3 boringssl)
+endif ()
+
diff --git a/android/third_party/libkeymaster3/sources.mk b/android/third_party/libkeymaster3/sources.mk
deleted file mode 100644
index 9ca74888d5..0000000000
--- a/android/third_party/libkeymaster3/sources.mk
+++ /dev/null
@@ -1,81 +0,0 @@
-# Build file for libkeymaster3
-
-# Update LOCAL_PATH after saving old value.
-LIBKEYMASTER3_OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-LIBCURL_TOP_DIR := $(LIBCURL_PREBUILTS_DIR)/$(BUILD_TARGET_TAG)
-
-LIBKEYMASTER3_INCLUDES := $(LOCAL_PATH)
-LIBKEYMASTER3_STATIC_LIBRARIES := emulator-libkeymaster3 emulator-libcrypto android-emu
-
-$(call start-emulator-library,emulator-libkeymaster3)
-
-LOCAL_SRC_FILES := \
- aes_key.cpp \
- aes_operation.cpp \
- android_keymaster.cpp \
- android_keymaster_messages.cpp \
- android_keymaster_utils.cpp \
- asymmetric_key.cpp \
- asymmetric_key_factory.cpp \
- attestation_record.cpp \
- auth_encrypted_key_blob.cpp \
- authorization_set.cpp \
- ecdsa_keymaster1_operation.cpp \
- ecdsa_operation.cpp \
- ecies_kem.cpp \
- ec_key.cpp \
- ec_key_factory.cpp \
- ec_keymaster0_key.cpp \
- ec_keymaster1_key.cpp \
- hkdf.cpp \
- hmac.cpp \
- hmac_key.cpp \
- hmac_operation.cpp \
- integrity_assured_key_blob.cpp \
- iso18033kdf.cpp \
- kdf.cpp \
- key.cpp \
- keymaster0_engine.cpp \
- keymaster1_engine.cpp \
- keymaster_enforcement.cpp \
- keymaster_ipc.cpp \
- keymaster_tags.cpp \
- logger.cpp \
- nist_curve_key_exchange.cpp \
- ocb.c \
- ocb_utils.cpp \
- openssl_err.cpp \
- openssl_utils.cpp \
- operation.cpp \
- operation_table.cpp \
- rsa_key.cpp \
- rsa_key_factory.cpp \
- rsa_keymaster0_key.cpp \
- rsa_keymaster1_key.cpp \
- rsa_keymaster1_operation.cpp \
- rsa_operation.cpp \
- serializable.cpp \
- soft_keymaster_context.cpp \
- soft_keymaster_device.cpp \
- symmetric_key.cpp \
- trusty_keymaster_context.cpp \
- trusty_keymaster_enforcement.cpp \
- trusty_rng.c \
-
-
-LOCAL_C_INCLUDES := $(LIBKEYMASTER3_INCLUDES) \
- $(LOCAL_PATH)/src \
- $(LOCAL_PATH)/include \
- $(LIBCURL_TOP_DIR)/include \
- $(LOCAL_PATH)/../../../android/android-emu
-
-ifeq (windows,$(BUILD_TARGET_OS))
-LOCAL_CFLAGS := -DUSE_MINGW=1
-endif
-
-$(call end-emulator-library)
-
-# Reset LOCAL_PATH before exiting this build file.
-LOCAL_PATH := $(LIBKEYMASTER3_OLD_LOCAL_PATH)
diff --git a/android/third_party/libselinux/CMakeLists.txt b/android/third_party/libselinux/CMakeLists.txt
new file mode 100644
index 0000000000..8dc48ca7f0
--- /dev/null
+++ b/android/third_party/libselinux/CMakeLists.txt
@@ -0,0 +1,24 @@
+cmake_minimum_required(VERSION 3.5)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Create an empty dummy lib..
+ add_library(emulator-libselinux src/label_internal.h)
+ set_property(TARGET emulator-libselinux PROPERTY LINKER_LANGUAGE CXX)
+else ()
+ add_library(emulator-libselinux
+ src/callbacks.c
+ src/check_context.c
+ src/freecon.c
+ src/init.c
+ src/label.c
+ src/label_file.c
+ src/label_android_property.c
+ )
+ target_include_directories(emulator-libselinux PUBLIC include)
+ target_include_directories(emulator-libselinux PRIVATE .)
+ if (APPLE)
+ target_compile_definitions(emulator-libselinux PRIVATE -DDARWIN)
+ endif ()
+ target_compile_definitions(emulator-libselinux PUBLIC -DHOST)
+endif ()
+
diff --git a/android/third_party/libselinux/sources.mk b/android/third_party/libselinux/sources.mk
deleted file mode 100644
index 05daede2a9..0000000000
--- a/android/third_party/libselinux/sources.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-LIBSELINUX_SOURCES := \
- src/callbacks.c \
- src/check_context.c \
- src/freecon.c \
- src/init.c \
- src/label.c \
- src/label_file.c \
- src/label_android_property.c
-
-ifeq ($(BUILD_TARGET_OS),windows)
- # This code doesn't not build on Windows, so create empty
- # libraries on this platform, this simplifies the build
- # configuration.
- LIBSELINUX_SOURCES :=
-endif
-
-LIBSELINUX_INCLUDES := $(LOCAL_PATH)/include
-
-LIBSELINUX_CFLAGS := -DHOST
-ifeq (darwin,$(BUILD_TARGET_OS))
- LIBSELINUX_CFLAGS += -DDARWIN
-endif
-
-$(call start-emulator-library,emulator-libselinux)
-LOCAL_SRC_FILES := $(LIBSELINUX_SOURCES)
-LOCAL_C_INCLUDES := $(LIBSELINUX_INCLUDES)
-LOCAL_CFLAGS := $(LIBSELINUX_CFLAGS)
-$(call end-emulator-library)
-
-LOCAL_PATH := $(OLD_LOCAL_PATH)
diff --git a/android/third_party/libsparse/CMakeLists.txt b/android/third_party/libsparse/CMakeLists.txt
new file mode 100644
index 0000000000..1439920bc1
--- /dev/null
+++ b/android/third_party/libsparse/CMakeLists.txt
@@ -0,0 +1,59 @@
+cmake_minimum_required(VERSION 3.5)
+
+# TODO(jansene): Move to a function
+if (DEFINED LOCAL_QEMU2_TOP_DIR)
+ get_filename_component(REPO_ROOT "${LOCAL_QEMU2_TOP_DIR}/../.." ABSOLUTE)
+ set(ZLIB_ROOT "${REPO_ROOT}/prebuilts/android-emulator-build/qemu-android-deps/${LOCAL_TARGET_TAG}")
+ set(ZLIB_LIBRARY ${ZLIB_ROOT}/lib/libz.a)
+ set(ZLIB_INCLUDE_DIR ${ZLIB_ROOT}/include)
+
+ # We will now find the prebuilt package.
+ find_package(ZLIB REQUIRED)
+ if (NOT ZLIB_LIBRARIES MATCHES "${REPO_ROOT}.*")
+ message(FATAL_ERROR "Discovered libz at: ${ZLIB_LIBRARIES}, ${ZLIB_INCLUDE_DIRS} which is outside of tree ${REPO_ROOT}!")
+ endif ()
+else ()
+ message(WARNING "Building outside the make system!")
+ find_package(ZLIB REQUIRED)
+endif ()
+
+
+add_library(emulator-libsparse
+ src/backed_block.c
+ src/output_file.c
+ src/sparse.c
+ src/sparse_crc32.c
+ src/sparse_err.c
+ src/sparse_read.c
+ )
+
+target_include_directories(emulator-libsparse PUBLIC include)
+target_include_directories(emulator-libsparse PRIVATE src)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_definitions(emulator-libsparse PRIVATE -DUSE_MINGW=1)
+ endif ()
+ target_include_directories(emulator-libsparse PRIVATE ../mman-win32/includes)
+ target_include_directories(emulator-libsparse PUBLIC ${ZLIB_INCLUDE_DIRS})
+endif ()
+
+target_compile_options(emulator-libsparse PRIVATE -Wno-error)
+
+message("Using ${ZLIB_LIBRARIES}")
+
+add_executable(emulator_img2simg src/img2simg.c)
+target_link_libraries(emulator_img2simg PRIVATE emulator-libsparse)
+target_link_libraries(emulator_img2simg PRIVATE ${ZLIB_LIBRARIES})
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ target_link_libraries(emulator_img2simg PRIVATE emulator-libmman-win32)
+endif ()
+
+add_executable(emulator_simg2img src/simg2img.c)
+target_link_libraries(emulator_simg2img PRIVATE emulator-libsparse)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ target_link_libraries(emulator_simg2img PRIVATE emulator-libmman-win32)
+endif ()
+target_link_libraries(emulator_simg2img PRIVATE ${ZLIB_LIBRARIES})
diff --git a/android/third_party/libwebp/CMakeLists.txt b/android/third_party/libwebp/CMakeLists.txt
new file mode 100644
index 0000000000..6a5bdc0aa7
--- /dev/null
+++ b/android/third_party/libwebp/CMakeLists.txt
@@ -0,0 +1,110 @@
+cmake_minimum_required(VERSION 3.5)
+
+add_library(emulator-libwebp
+ loadwebp.c
+ third_party/chromium_headless/libwebp/dec/alpha.c
+ third_party/chromium_headless/libwebp/dec/buffer.c
+ third_party/chromium_headless/libwebp/dec/frame.c
+ third_party/chromium_headless/libwebp/dec/idec.c
+ third_party/chromium_headless/libwebp/dec/io.c
+ third_party/chromium_headless/libwebp/dec/quant.c
+ third_party/chromium_headless/libwebp/dec/tree.c
+ third_party/chromium_headless/libwebp/dec/vp8.c
+ third_party/chromium_headless/libwebp/dec/vp8l.c
+ third_party/chromium_headless/libwebp/dec/webp.c
+ third_party/chromium_headless/libwebp/demux/demux.c
+ third_party/chromium_headless/libwebp/dsp/alpha_processing.c
+ third_party/chromium_headless/libwebp/dsp/alpha_processing_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/alpha_processing_sse2.c
+ third_party/chromium_headless/libwebp/dsp/alpha_processing_sse41.c
+ third_party/chromium_headless/libwebp/dsp/argb.c
+ third_party/chromium_headless/libwebp/dsp/argb_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/argb_sse2.c
+ third_party/chromium_headless/libwebp/dsp/cost.c
+ third_party/chromium_headless/libwebp/dsp/cost_mips32.c
+ third_party/chromium_headless/libwebp/dsp/cost_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/cost_sse2.c
+ third_party/chromium_headless/libwebp/dsp/cpu.c
+ third_party/chromium_headless/libwebp/dsp/dec.c
+ third_party/chromium_headless/libwebp/dsp/dec_clip_tables.c
+ third_party/chromium_headless/libwebp/dsp/dec_mips32.c
+ third_party/chromium_headless/libwebp/dsp/dec_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/dec_msa.c
+ third_party/chromium_headless/libwebp/dsp/dec_sse2.c
+ third_party/chromium_headless/libwebp/dsp/dec_sse41.c
+ third_party/chromium_headless/libwebp/dsp/enc.c
+ third_party/chromium_headless/libwebp/dsp/enc_avx2.c
+ third_party/chromium_headless/libwebp/dsp/enc_mips32.c
+ third_party/chromium_headless/libwebp/dsp/enc_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/enc_sse2.c
+ third_party/chromium_headless/libwebp/dsp/enc_sse41.c
+ third_party/chromium_headless/libwebp/dsp/filters.c
+ third_party/chromium_headless/libwebp/dsp/filters_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/filters_sse2.c
+ third_party/chromium_headless/libwebp/dsp/lossless.c
+ third_party/chromium_headless/libwebp/dsp/lossless_enc.c
+ third_party/chromium_headless/libwebp/dsp/lossless_enc_mips32.c
+ third_party/chromium_headless/libwebp/dsp/lossless_enc_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/lossless_enc_sse2.c
+ third_party/chromium_headless/libwebp/dsp/lossless_enc_sse41.c
+ third_party/chromium_headless/libwebp/dsp/lossless_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/lossless_sse2.c
+ third_party/chromium_headless/libwebp/dsp/rescaler.c
+ third_party/chromium_headless/libwebp/dsp/rescaler_mips32.c
+ third_party/chromium_headless/libwebp/dsp/rescaler_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/rescaler_sse2.c
+ third_party/chromium_headless/libwebp/dsp/upsampling.c
+ third_party/chromium_headless/libwebp/dsp/upsampling_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/upsampling_sse2.c
+ third_party/chromium_headless/libwebp/dsp/yuv.c
+ third_party/chromium_headless/libwebp/dsp/yuv_mips32.c
+ third_party/chromium_headless/libwebp/dsp/yuv_mips_dsp_r2.c
+ third_party/chromium_headless/libwebp/dsp/yuv_sse2.c
+ third_party/chromium_headless/libwebp/enc/alpha.c
+ third_party/chromium_headless/libwebp/enc/analysis.c
+ third_party/chromium_headless/libwebp/enc/backward_references.c
+ third_party/chromium_headless/libwebp/enc/config.c
+ third_party/chromium_headless/libwebp/enc/cost.c
+ third_party/chromium_headless/libwebp/enc/delta_palettization.c
+ third_party/chromium_headless/libwebp/enc/filter.c
+ third_party/chromium_headless/libwebp/enc/frame.c
+ third_party/chromium_headless/libwebp/enc/histogram.c
+ third_party/chromium_headless/libwebp/enc/iterator.c
+ third_party/chromium_headless/libwebp/enc/near_lossless.c
+ third_party/chromium_headless/libwebp/enc/picture.c
+ third_party/chromium_headless/libwebp/enc/picture_csp.c
+ third_party/chromium_headless/libwebp/enc/picture_psnr.c
+ third_party/chromium_headless/libwebp/enc/picture_rescale.c
+ third_party/chromium_headless/libwebp/enc/picture_tools.c
+ third_party/chromium_headless/libwebp/enc/quant.c
+ third_party/chromium_headless/libwebp/enc/syntax.c
+ third_party/chromium_headless/libwebp/enc/token.c
+ third_party/chromium_headless/libwebp/enc/tree.c
+ third_party/chromium_headless/libwebp/enc/vp8l.c
+ third_party/chromium_headless/libwebp/enc/webpenc.c
+ third_party/chromium_headless/libwebp/utils/bit_reader.c
+ third_party/chromium_headless/libwebp/utils/bit_writer.c
+ third_party/chromium_headless/libwebp/utils/color_cache.c
+ third_party/chromium_headless/libwebp/utils/filters.c
+ third_party/chromium_headless/libwebp/utils/huffman.c
+ third_party/chromium_headless/libwebp/utils/huffman_encode.c
+ third_party/chromium_headless/libwebp/utils/quant_levels.c
+ third_party/chromium_headless/libwebp/utils/quant_levels_dec.c
+ third_party/chromium_headless/libwebp/utils/random.c
+ third_party/chromium_headless/libwebp/utils/rescaler.c
+ third_party/chromium_headless/libwebp/utils/thread.c
+ third_party/chromium_headless/libwebp/utils/utils.c
+ )
+
+target_include_directories(emulator-libwebp PUBLIC include)
+target_include_directories(emulator-libwebp PRIVATE src)
+target_include_directories(emulator-libwebp PRIVATE .)
+target_compile_options(emulator-libwebp PRIVATE -Wno-error)
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ target_compile_definitions(emulator-libwebp PRIVATE -DUSE_MINGW=1)
+ endif ()
+endif ()
+
diff --git a/android/third_party/libwebp/sources.mk b/android/third_party/libwebp/sources.mk
deleted file mode 100644
index a9a7d1adb8..0000000000
--- a/android/third_party/libwebp/sources.mk
+++ /dev/null
@@ -1,116 +0,0 @@
-# Build file for libwebp
-
-# Update LOCAL_PATH after saving old value.
-LIBWEBP_OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-LIBWEBP_INCLUDES := $(LOCAL_PATH)/include
-
-$(call start-emulator-library,emulator-libwebp)
-
-LOCAL_SRC_FILES := \
- loadwebp.c \
- third_party/chromium_headless/libwebp/dec/alpha.c \
- third_party/chromium_headless/libwebp/dec/buffer.c \
- third_party/chromium_headless/libwebp/dec/frame.c \
- third_party/chromium_headless/libwebp/dec/idec.c \
- third_party/chromium_headless/libwebp/dec/io.c \
- third_party/chromium_headless/libwebp/dec/quant.c \
- third_party/chromium_headless/libwebp/dec/tree.c \
- third_party/chromium_headless/libwebp/dec/vp8.c \
- third_party/chromium_headless/libwebp/dec/vp8l.c \
- third_party/chromium_headless/libwebp/dec/webp.c \
- third_party/chromium_headless/libwebp/demux/demux.c \
- third_party/chromium_headless/libwebp/dsp/alpha_processing.c \
- third_party/chromium_headless/libwebp/dsp/alpha_processing_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/alpha_processing_sse2.c \
- third_party/chromium_headless/libwebp/dsp/alpha_processing_sse41.c \
- third_party/chromium_headless/libwebp/dsp/argb.c \
- third_party/chromium_headless/libwebp/dsp/argb_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/argb_sse2.c \
- third_party/chromium_headless/libwebp/dsp/cost.c \
- third_party/chromium_headless/libwebp/dsp/cost_mips32.c \
- third_party/chromium_headless/libwebp/dsp/cost_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/cost_sse2.c \
- third_party/chromium_headless/libwebp/dsp/cpu.c \
- third_party/chromium_headless/libwebp/dsp/dec.c \
- third_party/chromium_headless/libwebp/dsp/dec_clip_tables.c \
- third_party/chromium_headless/libwebp/dsp/dec_mips32.c \
- third_party/chromium_headless/libwebp/dsp/dec_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/dec_msa.c \
- third_party/chromium_headless/libwebp/dsp/dec_sse2.c \
- third_party/chromium_headless/libwebp/dsp/dec_sse41.c \
- third_party/chromium_headless/libwebp/dsp/enc.c \
- third_party/chromium_headless/libwebp/dsp/enc_avx2.c \
- third_party/chromium_headless/libwebp/dsp/enc_mips32.c \
- third_party/chromium_headless/libwebp/dsp/enc_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/enc_sse2.c \
- third_party/chromium_headless/libwebp/dsp/enc_sse41.c \
- third_party/chromium_headless/libwebp/dsp/filters.c \
- third_party/chromium_headless/libwebp/dsp/filters_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/filters_sse2.c \
- third_party/chromium_headless/libwebp/dsp/lossless.c \
- third_party/chromium_headless/libwebp/dsp/lossless_enc.c \
- third_party/chromium_headless/libwebp/dsp/lossless_enc_mips32.c \
- third_party/chromium_headless/libwebp/dsp/lossless_enc_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/lossless_enc_sse2.c \
- third_party/chromium_headless/libwebp/dsp/lossless_enc_sse41.c \
- third_party/chromium_headless/libwebp/dsp/lossless_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/lossless_sse2.c \
- third_party/chromium_headless/libwebp/dsp/rescaler.c \
- third_party/chromium_headless/libwebp/dsp/rescaler_mips32.c \
- third_party/chromium_headless/libwebp/dsp/rescaler_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/rescaler_sse2.c \
- third_party/chromium_headless/libwebp/dsp/upsampling.c \
- third_party/chromium_headless/libwebp/dsp/upsampling_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/upsampling_sse2.c \
- third_party/chromium_headless/libwebp/dsp/yuv.c \
- third_party/chromium_headless/libwebp/dsp/yuv_mips32.c \
- third_party/chromium_headless/libwebp/dsp/yuv_mips_dsp_r2.c \
- third_party/chromium_headless/libwebp/dsp/yuv_sse2.c \
- third_party/chromium_headless/libwebp/enc/alpha.c \
- third_party/chromium_headless/libwebp/enc/analysis.c \
- third_party/chromium_headless/libwebp/enc/backward_references.c \
- third_party/chromium_headless/libwebp/enc/config.c \
- third_party/chromium_headless/libwebp/enc/cost.c \
- third_party/chromium_headless/libwebp/enc/delta_palettization.c \
- third_party/chromium_headless/libwebp/enc/filter.c \
- third_party/chromium_headless/libwebp/enc/frame.c \
- third_party/chromium_headless/libwebp/enc/histogram.c \
- third_party/chromium_headless/libwebp/enc/iterator.c \
- third_party/chromium_headless/libwebp/enc/near_lossless.c \
- third_party/chromium_headless/libwebp/enc/picture.c \
- third_party/chromium_headless/libwebp/enc/picture_csp.c \
- third_party/chromium_headless/libwebp/enc/picture_psnr.c \
- third_party/chromium_headless/libwebp/enc/picture_rescale.c \
- third_party/chromium_headless/libwebp/enc/picture_tools.c \
- third_party/chromium_headless/libwebp/enc/quant.c \
- third_party/chromium_headless/libwebp/enc/syntax.c \
- third_party/chromium_headless/libwebp/enc/token.c \
- third_party/chromium_headless/libwebp/enc/tree.c \
- third_party/chromium_headless/libwebp/enc/vp8l.c \
- third_party/chromium_headless/libwebp/enc/webpenc.c \
- third_party/chromium_headless/libwebp/utils/bit_reader.c \
- third_party/chromium_headless/libwebp/utils/bit_writer.c \
- third_party/chromium_headless/libwebp/utils/color_cache.c \
- third_party/chromium_headless/libwebp/utils/filters.c \
- third_party/chromium_headless/libwebp/utils/huffman.c \
- third_party/chromium_headless/libwebp/utils/huffman_encode.c \
- third_party/chromium_headless/libwebp/utils/quant_levels.c \
- third_party/chromium_headless/libwebp/utils/quant_levels_dec.c \
- third_party/chromium_headless/libwebp/utils/random.c \
- third_party/chromium_headless/libwebp/utils/rescaler.c \
- third_party/chromium_headless/libwebp/utils/thread.c \
- third_party/chromium_headless/libwebp/utils/utils.c \
-
-
-LOCAL_C_INCLUDES := $(LIBWEBP_INCLUDES) $(LOCAL_PATH)/src
-
-ifeq (windows,$(BUILD_TARGET_OS))
-LOCAL_CFLAGS := -DUSE_MINGW=1
-endif
-
-$(call end-emulator-library)
-
-# Reset LOCAL_PATH before exiting this build file.
-LOCAL_PATH := $(LIBWEBP_OLD_LOCAL_PATH)
diff --git a/android/third_party/libyuv/Android.mk b/android/third_party/libyuv/Android.mk
deleted file mode 100644
index f20edc07f1..0000000000
--- a/android/third_party/libyuv/Android.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-###########################################################
-###########################################################
-###
-### libyuv library.
-###
-### libyuv is used by the host for optimized colorspace
-### conversion on the host. The sources are located under
-### $ANDROID/external/libyuv, but because we need to build
-### both 32-bit and 64-bit host libraries, don't use the
-### .mk file there, define a module here instead.
-
-EMULATOR_LIBYUV_SOURCES_DIR ?= $(LOCAL_PATH)/../libyuv/files
-EMULATOR_LIBYUV_SOURCES_DIR := $(EMULATOR_LIBYUV_SOURCES_DIR)
-ifeq (,$(strip $(wildcard $(EMULATOR_LIBYUV_SOURCES_DIR))))
- $(error Cannot find libyuv sources directory: $(EMULATOR_LIBYUV_SOURCES_DIR))
-endif
-
-EMULATOR_LIBYUV_INCLUDES := $(EMULATOR_LIBYUV_SOURCES_DIR)/include
-EMULATOR_LIBYUV_SOURCES := \
- source/compare.cc \
- source/compare_common.cc \
- source/compare_gcc.cc \
- source/compare_neon64.cc \
- source/compare_neon.cc \
- source/convert_argb.cc \
- source/convert.cc \
- source/convert_from_argb.cc \
- source/convert_from.cc \
- source/convert_jpeg.cc \
- source/convert_to_argb.cc \
- source/convert_to_i420.cc \
- source/cpu_id.cc \
- source/mjpeg_decoder.cc \
- source/mjpeg_validate.cc \
- source/planar_functions.cc \
- source/rotate_any.cc \
- source/rotate_argb.cc \
- source/rotate.cc \
- source/rotate_common.cc \
- source/rotate_gcc.cc \
- source/rotate_dspr2.cc \
- source/rotate_neon64.cc \
- source/rotate_neon.cc \
- source/rotate_win.cc \
- source/row_any.cc \
- source/row_common.cc \
- source/row_gcc.cc \
- source/row_dspr2.cc \
- source/row_neon64.cc \
- source/row_neon.cc \
- source/row_win.cc \
- source/scale_any.cc \
- source/scale_argb.cc \
- source/scale.cc \
- source/scale_common.cc \
- source/scale_gcc.cc \
- source/scale_dspr2.cc \
- source/scale_neon64.cc \
- source/scale_neon.cc \
- source/scale_win.cc \
- source/video_common.cc
-
-old_LOCAL_PATH := $(LOCAL_PATH)
-
-LOCAL_PATH := $(EMULATOR_LIBYUV_SOURCES_DIR)
-
-$(call start-emulator-library, emulator-libyuv)
-LOCAL_C_INCLUDES += $(EMULATOR_LIBYUV_INCLUDES)
-LOCAL_CPP_EXTENSION := .cc
-ifeq ($(BUILD_TARGET_OS),windows)
- # Turn off libyuv assembly on Windows x86, libyuv assembly fails to compile
- # on that flavor.
- LOCAL_CFLAGS += -DLIBYUV_DISABLE_X86
-endif
-LOCAL_CFLAGS += -fno-strict-aliasing
-LOCAL_SRC_FILES := $(EMULATOR_LIBYUV_SOURCES)
-$(call end-emulator-library)
-
-LOCAL_PATH := $(old_LOCAL_PATH)
-
diff --git a/android/third_party/libyuv/CMakeLists.txt b/android/third_party/libyuv/CMakeLists.txt
new file mode 100644
index 0000000000..d07e0d2071
--- /dev/null
+++ b/android/third_party/libyuv/CMakeLists.txt
@@ -0,0 +1,61 @@
+cmake_minimum_required(VERSION 3.5)
+
+set(src "../../../../libyuv/files/source")
+
+add_library(emulator-libyuv
+ ${src}/compare.cc
+ ${src}/compare_common.cc
+ ${src}/compare_gcc.cc
+ ${src}/compare_neon64.cc
+ ${src}/compare_neon.cc
+ ${src}/convert_argb.cc
+ ${src}/convert.cc
+ ${src}/convert_from_argb.cc
+ ${src}/convert_from.cc
+ ${src}/convert_jpeg.cc
+ ${src}/convert_to_argb.cc
+ ${src}/convert_to_i420.cc
+ ${src}/cpu_id.cc
+ ${src}/mjpeg_decoder.cc
+ ${src}/mjpeg_validate.cc
+ ${src}/planar_functions.cc
+ ${src}/rotate_any.cc
+ ${src}/rotate_argb.cc
+ ${src}/rotate.cc
+ ${src}/rotate_common.cc
+ ${src}/rotate_gcc.cc
+ ${src}/rotate_dspr2.cc
+ ${src}/rotate_neon64.cc
+ ${src}/rotate_neon.cc
+ ${src}/rotate_win.cc
+ ${src}/row_any.cc
+ ${src}/row_common.cc
+ ${src}/row_gcc.cc
+ ${src}/row_dspr2.cc
+ ${src}/row_neon64.cc
+ ${src}/row_neon.cc
+ ${src}/row_win.cc
+ ${src}/scale_any.cc
+ ${src}/scale_argb.cc
+ ${src}/scale.cc
+ ${src}/scale_common.cc
+ ${src}/scale_gcc.cc
+ ${src}/scale_dspr2.cc
+ ${src}/scale_neon64.cc
+ ${src}/scale_neon.cc
+ ${src}/scale_win.cc
+ ${src}/video_common.cc
+ )
+
+target_include_directories(emulator-libyuv PUBLIC ${src}/../include)
+target_compile_options(emulator-libyuv PRIVATE -fno-strict-aliasing)
+
+
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ # Work around some gcc/mingw issues
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ # Assembly not worning with mingw, maybe on VS?
+ target_compile_definitions(emulator-libyuv PRIVATE -DLIBYUV_DISABLE_X86)
+ endif ()
+endif ()
+
diff --git a/android/third_party/mini-glib/sources.make b/android/third_party/mini-glib/sources.make
index 412413f52f..e236fc6018 100644
--- a/android/third_party/mini-glib/sources.make
+++ b/android/third_party/mini-glib/sources.make
@@ -7,6 +7,8 @@ MINIGLIB_DIR := $(LOCAL_PATH)
MINIGLIB_INCLUDES := $(MINIGLIB_DIR)/include
MINIGLIB_STATIC_LIBRARIES := emulator-miniglib
+
+# Qemu1, let's not convert to cmake..
$(call start-emulator-library,emulator-miniglib)
LOCAL_C_INCLUDES := $(MINIGLIB_INCLUDES)
diff --git a/android/third_party/mman-win32/CMakeLists.txt b/android/third_party/mman-win32/CMakeLists.txt
new file mode 100644
index 0000000000..a0703fd261
--- /dev/null
+++ b/android/third_party/mman-win32/CMakeLists.txt
@@ -0,0 +1,10 @@
+cmake_minimum_required(VERSION 3.5)
+
+# This is a windows only library.
+if (WIN32 OR ("${LOCAL_OS}" STREQUAL "windows"))
+ add_library(emulator-libmman-win32 mman.c)
+ target_include_directories(emulator-libmman-win32 PUBLIC includes)
+endif ()
+
+
+
diff --git a/android/third_party/murmurhash/CMakeLists.txt b/android/third_party/murmurhash/CMakeLists.txt
new file mode 100644
index 0000000000..fd3df03ca9
--- /dev/null
+++ b/android/third_party/murmurhash/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 3.5)
+
+add_library(emulator-murmurhash MurmurHash3.cpp)
+
+target_include_directories(emulator-murmurhash PUBLIC .)
diff --git a/android/third_party/murmurhash/libmurmurhash.mk b/android/third_party/murmurhash/libmurmurhash.mk
deleted file mode 100644
index f38046a4c9..0000000000
--- a/android/third_party/murmurhash/libmurmurhash.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build rules for the murmurhash library
-OLD_LOCAL_PATH := $(LOCAL_PATH)
-LOCAL_PATH := $(call my-dir)
-
-MURMURHASH_DIR := $(LOCAL_PATH)
-MURMURHASH_INCLUDES := $(MURMURHASH_DIR)
-MURMURHASH_STATIC_LIBRARIES := emulator-murmurhash
-
-$(call start-emulator-library,emulator-murmurhash)
- LOCAL_C_INCLUDES := $(MURMURHASH_INCLUDES)
- LOCAL_SRC_FILES := MurmurHash3.cpp
-$(call end-emulator-library)
-
-LOCAL_PATH := $(OLD_LOCAL_PATH)
diff --git a/android/third_party/third_party_libs.mk b/android/third_party/third_party_libs.mk
new file mode 100644
index 0000000000..801694d584
--- /dev/null
+++ b/android/third_party/third_party_libs.mk
@@ -0,0 +1,53 @@
+OLD_LOCAL_PATH := $(LOCAL_PATH)
+LOCAL_PATH := $(call my-dir)
+
+$(call start-cmake-project,third_party)
+
+#(TODO: Jansene) Once we have prebuilt support we should remove
+# These compiler includes, so they can become project specific.
+LOCAL_C_INCLUDES := $(ZLIB_INCLUDES)
+LOCAL_C_INCLUDES += $(LIBCURL_TOP_DIR)/include \
+
+PRODUCED_STATIC_LIBS := emulator-tinyobjloader \
+ emulator-murmurhash \
+ emulator-libselinux \
+ emulator-libwebp \
+ emulator-tinyepoxy \
+ emulator-astc-codec \
+ emulator-libyuv \
+ emulator-libjpeg \
+ emulator-libsparse \
+ emulator-libkeymaster3 \
+ emulator-libdtb
+
+PRODUCED_EXECUTABLES := emulator_astc_unittests=emulator$(BUILD_TARGET_SUFFIX)_astc_unittests \
+ emulator_img2simg=emulator$(BUILD_TARGET_SUFFIX)_img2simg \
+ emulator_simg2img=emulator$(BUILD_TARGET_SUFFIX)_simg2img)
+
+# Since we are using a cross build system, we need to declare the static libs that
+# are consumed
+CONSUMED_STATIC_LIBS := emulator-libsparse
+
+ifeq ($(BUILD_TARGET_OS),windows)
+ PRODUCED_STATIC_LIBS += emulator-libmman-win32
+endif
+
+$(call end-cmake-project)
+
+# Set of defines needed for the rest of the build system
+LIBDTB_UTILS_INCLUDES := android/third_party/libdtb/include
+LIBSELINUX_INCLUDES := android/third_party/libselinux/include
+LIBJPEG_INCLUDES := android/third_party/jpeg-6b
+EMULATOR_LIBYUV_INCLUDES := ../libyuv/files/include
+MURMURHASH_INCLUDES := android/third_party/murmurhash
+TINYOBJLOADER_INCLUDES := ../tinyobjloader
+LIBKEYMASTER3_INCLUDES := android/third_party/libkeymaster3
+LIBKEYMASTER3_STATIC_LIBRARIES := emulator-libkeymaster3 emulator-libcrypto android-emu
+MURMURHASH_STATIC_LIBRARIES := emulator-murmurhash
+
+ifeq ($(BUILD_TARGET_OS),windows)
+ LIBMMAN_WIN32_INCLUDES := android/third_party/mman-win32/includes
+ LIBMMAN_WIN32_STATIC_LIBRARIES := emulator-libmman-win32
+endif
+# Reset LOCAL_PATH before exiting this build file.
+LOCAL_PATH := $(OLD_LOCAL_PATH)
diff --git a/android/third_party/tinyepoxy/CMakeLists.txt b/android/third_party/tinyepoxy/CMakeLists.txt
new file mode 100644
index 0000000000..0fbb7d9e62
--- /dev/null
+++ b/android/third_party/tinyepoxy/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 3.5)
+
+add_library(emulator-tinyepoxy tinyepoxy.cpp)
+
+target_include_directories(emulator-tinyepoxy PRIVATE ../../android-emugl/host/include)
diff --git a/android/third_party/tinyepoxy/tinyepoxy.mk b/android/third_party/tinyepoxy/tinyepoxy.mk
deleted file mode 100644
index 4924a76488..0000000000
--- a/android/third_party/tinyepoxy/tinyepoxy.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-# Build file for tinyepoxy library.
-
-$(call start-emulator-library, emulator-tinyepoxy)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/android/android-emugl/host/include
-LOCAL_SRC_FILES := android/third_party/tinyepoxy/tinyepoxy.cpp
-$(call end-emulator-library)
diff --git a/android/third_party/tinyobjloader.mk b/android/third_party/tinyobjloader.mk
deleted file mode 100644
index 97ac779cef..0000000000
--- a/android/third_party/tinyobjloader.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-###########################################################
-###########################################################
-###
-### Tinyobjloader library.
-###
-### Tinyobjloader is a wavefront obj loader written in C++
-### with no dependency except for STL. This is a
-### header-only library, the implementation is brought in
-### by defining TINYOBJLOADER_IMPLEMENTATION before
-### including the header.
-
-TINYOBJLOADER_SOURCES_DIR := $(LOCAL_PATH)/../tinyobjloader
-TINYOBJLOADER_SOURCES_DIR := $(TINYOBJLOADER_SOURCES_DIR)
-ifeq (,$(strip $(wildcard $(TINYOBJLOADER_SOURCES_DIR))))
- $(error Cannot find tinyobjloader sources directory: $(TINYOBJLOADER_SOURCES_DIR))
-endif
-
-TINYOBJLOADER_INCLUDES := $(TINYOBJLOADER_SOURCES_DIR)
-
-TINYOBJLOADER_SOURCES := \
- tiny_obj_loader.cc
-
-old_LOCAL_PATH := $(LOCAL_PATH)
-
-LOCAL_PATH := $(TINYOBJLOADER_SOURCES_DIR)
-
-$(call start-emulator-library, emulator-tinyobjloader)
-LOCAL_C_INCLUDES += $(TINYOBJLOADER_INCLUDES)
-LOCAL_CPP_EXTENSION := .cc
-LOCAL_SRC_FILES := $(TINYOBJLOADER_SOURCES)
-$(call end-emulator-library)
-
-LOCAL_PATH := $(old_LOCAL_PATH)
-
diff --git a/build.gradle b/build.gradle
index 64cf10c5b2..6de234fb3c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -109,11 +109,6 @@ sdk {
builtBy buildDefaultEmulator
}
- item("$buildDefaultEmulator.output/emulator64-mips") {
- executable true
- builtBy buildDefaultEmulator
- }
-
item("$buildDefaultEmulator.output/emulator64-x86") {
executable true
builtBy buildDefaultEmulator
@@ -216,10 +211,6 @@ sdk {
executable true
builtBy buildWindowsEmulator
}
- item("$buildWindowsEmulator.output/emulator-mips.exe") {
- executable true
- builtBy buildWindowsEmulator
- }
item("$buildWindowsEmulator.output/emulator-x86.exe") {
executable true
builtBy buildWindowsEmulator
@@ -239,11 +230,6 @@ sdk {
builtBy buildWindowsEmulator
}
- item("$buildWindowsEmulator.output/emulator64-mips.exe") {
- executable true
- builtBy buildWindowsEmulator
- }
-
item("$buildWindowsEmulator.output/emulator64-x86.exe") {
executable true
builtBy buildWindowsEmulator
diff --git a/chardev/char-file.c b/chardev/char-file.c
index 87fb61088c..bfbb1e95b5 100644
--- a/chardev/char-file.c
+++ b/chardev/char-file.c
@@ -59,8 +59,8 @@ static void qmp_chardev_open_file(Chardev *chr,
flags = CREATE_ALWAYS;
}
- out = CreateFile(file->out, accessmode, FILE_SHARE_READ, NULL, flags,
- FILE_ATTRIBUTE_NORMAL, NULL);
+ out = win32CreateFile(file->out, accessmode, FILE_SHARE_READ, NULL, flags,
+ FILE_ATTRIBUTE_NORMAL, NULL);
if (out == INVALID_HANDLE_VALUE) {
error_setg(errp, "open %s failed", file->out);
return;
diff --git a/chardev/char-win.c b/chardev/char-win.c
index 05518e0958..a31b3ccb69 100644
--- a/chardev/char-win.c
+++ b/chardev/char-win.c
@@ -91,8 +91,8 @@ int win_chr_serial_init(Chardev *chr, const char *filename, Error **errp)
goto fail;
}
- s->file = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
- OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+ s->file = win32CreateFile(filename, GENERIC_READ | GENERIC_WRITE, 0, NULL,
+ OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
if (s->file == INVALID_HANDLE_VALUE) {
error_setg(errp, "Failed CreateFile (%lu)", GetLastError());
s->file = NULL;
diff --git a/exec.c b/exec.c
index 254fe68c8f..770ae9ab97 100644
--- a/exec.c
+++ b/exec.c
@@ -19,6 +19,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
+#include "qemu/abort.h"
#include "qemu/cutils.h"
#include "cpu.h"
#include "exec/exec-all.h"
@@ -40,6 +41,7 @@
#else /* !CONFIG_USER_ONLY */
#include "hw/hw.h"
#include "exec/memory.h"
+#include "exec/memory-remap.h"
#include "exec/ioport.h"
#include "sysemu/dma.h"
#include "sysemu/numa.h"
@@ -71,6 +73,8 @@
//#define DEBUG_SUBPAGE
+#define FLATVIEW_UNUSUAL_ITER_COUNT 128
+
#if !defined(CONFIG_USER_ONLY)
/* ram_list is read under rcu_read_lock()/rcu_read_unlock(). Writes
* are protected by the ramlist lock.
@@ -462,6 +466,113 @@ address_space_translate_internal(AddressSpaceDispatch *d, hwaddr addr, hwaddr *x
return section;
}
+static const char* memory_region_get_name_safe(MemoryRegion* mr) {
+ if (!mr) {
+ return "(null region)";
+ }
+
+ if (!mr->name) {
+ return "(none)";
+ }
+
+ return mr->name;
+}
+
+static void flatview_spin_warning(
+ const char* label,
+ uint32_t iters,
+ hwaddr first_addr,
+ hwaddr addr,
+ MemoryRegion* first_mr,
+ MemoryRegion* mr) {
+
+ qemu_spin_warning(
+ iters, FLATVIEW_UNUSUAL_ITER_COUNT,
+ "Warning: %s has iterated %u times. "
+ "First addr: 0x%llx. Last addr: 0x%llx. "
+ "First mr: %p (%s). Last mr: %p (%s)\n",
+ label,
+ iters,
+ (unsigned long long)first_addr,
+ (unsigned long long)addr,
+ first_mr, memory_region_get_name_safe(first_mr),
+ mr, memory_region_get_name_safe(mr));
+}
+
+/**
+ * address_space_translate_iommu - translate an address through an IOMMU
+ * memory region and then through the target address space.
+ *
+ * @iommu_mr: the IOMMU memory region that we start the translation from
+ * @addr: the address to be translated through the MMU
+ * @xlat: the translated address offset within the destination memory region.
+ * It cannot be %NULL.
+ * @plen_out: valid read/write length of the translated address. It
+ * cannot be %NULL.
+ * @page_mask_out: page mask for the translated address. This
+ * should only be meaningful for IOMMU translated
+ * addresses, since there may be huge pages that this bit
+ * would tell. It can be %NULL if we don't care about it.
+ * @is_write: whether the translation operation is for write
+ * @is_mmio: whether this can be MMIO, set true if it can
+ * @target_as: the address space targeted by the IOMMU
+ *
+ * This function is called from RCU critical section. It is the common
+ * part of flatview_do_translate and address_space_translate_cached.
+ */
+static MemoryRegionSection address_space_translate_iommu(IOMMUMemoryRegion *iommu_mr,
+ hwaddr *xlat,
+ hwaddr *plen_out,
+ hwaddr *page_mask_out,
+ bool is_write,
+ bool is_mmio,
+ AddressSpace **target_as)
+{
+ MemoryRegionSection *section;
+ hwaddr page_mask = (hwaddr)-1;
+ uint32_t iters = 0;
+ hwaddr first_addr = *xlat;
+
+ do {
+ hwaddr addr = *xlat;
+
+ ++iters;
+ flatview_spin_warning(
+ "address_space_translate_iommu",
+ iters,
+ first_addr, addr,
+ NULL, section ? section->mr : NULL);
+
+ IOMMUMemoryRegionClass *imrc = memory_region_get_iommu_class_nocheck(iommu_mr);
+ IOMMUTLBEntry iotlb = imrc->translate(iommu_mr, addr, is_write ?
+ IOMMU_WO : IOMMU_RO);
+
+ if (!(iotlb.perm & (1 << is_write))) {
+ goto unassigned;
+ }
+
+ addr = ((iotlb.translated_addr & ~iotlb.addr_mask)
+ | (addr & iotlb.addr_mask));
+ page_mask &= iotlb.addr_mask;
+ *plen_out = MIN(*plen_out, (addr | iotlb.addr_mask) - addr + 1);
+ *target_as = iotlb.target_as;
+
+ section = address_space_translate_internal(
+ address_space_to_dispatch(iotlb.target_as), addr, xlat,
+ plen_out, is_mmio);
+
+ iommu_mr = memory_region_get_iommu(section->mr);
+ } while (unlikely(iommu_mr));
+
+ if (page_mask_out) {
+ *page_mask_out = page_mask;
+ }
+ return *section;
+
+ unassigned:
+ return (MemoryRegionSection) { .mr = &io_mem_unassigned };
+}
+
/**
* flatview_do_translate - translate an address in FlatView
*
@@ -489,61 +600,31 @@ static MemoryRegionSection flatview_do_translate(FlatView *fv,
bool is_mmio,
AddressSpace **target_as)
{
- IOMMUTLBEntry iotlb;
- MemoryRegionSection *section;
+ MemoryRegionSection *section = NULL;
IOMMUMemoryRegion *iommu_mr;
- IOMMUMemoryRegionClass *imrc;
- hwaddr page_mask = (hwaddr)(-1);
hwaddr plen = (hwaddr)(-1);
- if (plen_out) {
- plen = *plen_out;
+ if (!plen_out) {
+ plen_out = &plen;
}
- for (;;) {
- section = address_space_translate_internal(
- flatview_to_dispatch(fv), addr, &addr,
- &plen, is_mmio);
-
- iommu_mr = memory_region_get_iommu(section->mr);
- if (!iommu_mr) {
- break;
- }
- imrc = memory_region_get_iommu_class_nocheck(iommu_mr);
-
- iotlb = imrc->translate(iommu_mr, addr, is_write ?
- IOMMU_WO : IOMMU_RO);
- addr = ((iotlb.translated_addr & ~iotlb.addr_mask)
- | (addr & iotlb.addr_mask));
- page_mask &= iotlb.addr_mask;
- plen = MIN(plen, (addr | iotlb.addr_mask) - addr + 1);
- if (!(iotlb.perm & (1 << is_write))) {
- goto translate_fail;
- }
-
- fv = address_space_to_flatview(iotlb.target_as);
- *target_as = iotlb.target_as;
- }
-
- *xlat = addr;
-
- if (page_mask == (hwaddr)(-1)) {
- /* Not behind an IOMMU, use default page size. */
- page_mask = ~TARGET_PAGE_MASK;
+ section = address_space_translate_internal(
+ flatview_to_dispatch(fv), addr, xlat,
+ plen_out, is_mmio);
+ iommu_mr = memory_region_get_iommu(section->mr);
+ if (unlikely(iommu_mr)) {
+ return address_space_translate_iommu(iommu_mr, xlat,
+ plen_out, page_mask_out,
+ is_write, is_mmio,
+ target_as);
}
if (page_mask_out) {
- *page_mask_out = page_mask;
- }
-
- if (plen_out) {
- *plen_out = plen;
+ /* Not behind an IOMMU, use default page size. */
+ *page_mask_out = ~TARGET_PAGE_MASK;
}
return *section;
-
-translate_fail:
- return (MemoryRegionSection) { .mr = &io_mem_unassigned };
}
/* Called from RCU critical section */
@@ -1572,6 +1653,35 @@ static int64_t get_file_size(int fd)
return size;
}
+static int try_open_existing_ram_file(const char* path) {
+ int fd = -1;
+
+ // If an existing file is 4GB, Windows open() by itself fails.
+ // So use CreateFile() instead.
+#ifdef _WIN32
+ HANDLE fh =
+ win32CreateFile(
+ path,
+ // Must be both, or we cannot CreateFileMapping with PAGE_READWRITE
+ GENERIC_READ | GENERIC_WRITE,
+ // Need both read and write sharing to enable multiple instances.
+ // Even though we will not really be writing to the RAM file with
+ // multiple instances, the file needs to be opened to allow us to
+ // proceed.
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ // Need to fail on file-not-found to follow the same path as QEMU
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL);
+ fd = _open_osfhandle((intptr_t)fh, _O_RDWR);
+#else
+ fd = open(path, O_RDWR);
+#endif
+
+ return fd;
+}
+
static int file_ram_open(const char *path,
const char *region_name,
bool *created,
@@ -1584,28 +1694,9 @@ static int file_ram_open(const char *path,
*created = false;
for (;;) {
- // If an existing file is 4GB, Windows open() by itself fails.
- // So use CreateFile() instead.
-#ifdef _WIN32
- HANDLE fh =
- CreateFile(
- path,
- // Must be both, or we cannot CreateFileMapping with PAGE_READWRITE
- GENERIC_READ | GENERIC_WRITE,
- // Need both read and write sharing to enable multiple instances.
- // Even though we will not really be writing to the RAM file with
- // multiple instances, the file needs to be opened to allow us to
- // proceed.
- FILE_SHARE_READ | FILE_SHARE_WRITE,
- NULL,
- // Need to fail on file-not-found to follow the same path as QEMU
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
- fd = _open_osfhandle((intptr_t)fh, _O_RDWR);
-#else
- fd = open(path, O_RDWR);
-#endif
+
+ fd = try_open_existing_ram_file(path);
+
if (fd >= 0) {
/* @path names an existing file, use it */
break;
@@ -1725,6 +1816,7 @@ static void *file_ram_alloc(RAMBlock *block,
}
block->fd = fd;
+ block->mapped_size = memory;
return area;
}
@@ -2171,7 +2263,7 @@ RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr,
return NULL;
}
- block->path = mem_path;
+ block->path = g_strdup(mem_path);
return block;
}
@@ -2324,6 +2416,119 @@ void qemu_ram_remap(ram_addr_t addr, ram_addr_t length)
}
#endif /* !_WIN32 */
+static void ram_block_teardown_backing(RAMBlock* block) {
+
+ if (block->fd >= 0) {
+ qemu_ram_munmap(block->host, block->max_length);
+#ifdef _WIN32
+ _close(block->fd);
+#else
+ close(block->fd);
+#endif
+ block->fd = -1;
+ } else {
+ qemu_anon_ram_free(block->host, block->max_length);
+ }
+
+ if (block->path) {
+ g_free((void*)block->path);
+ block->path = NULL;
+ }
+
+ block->flags = 0;
+}
+
+void ram_block_remap_backing(RAMBlock* block, const char* mem_path, int shared)
+{
+ rcu_read_lock();
+
+ // Check against bad usage, since the first move of this function
+ // is to free |block->path|.
+ if (mem_path && block->path &&
+ (mem_path == block->path)) {
+ qemu_abort(
+ "%s: Not allowed to alias mem_path and block->path!\n",
+ __func__);
+ }
+
+ ram_block_teardown_backing(block);
+
+ if (mem_path) {
+ block->path = g_strdup(mem_path);
+ block->flags = RAM_MAPPED | (shared ? RAM_SHARED : 0);
+
+ // Assume it exists
+ block->fd = try_open_existing_ram_file(block->path);
+
+ if (block->fd < 0) {
+ rcu_read_unlock();
+ qemu_abort(
+ "error opening new ram file "
+ "for guest memory '%s' at %s\n",
+ memory_region_name(block->mr),
+ block->path);
+ abort();
+ }
+
+ // Assume the mapped size hasn't changed
+ block->host =
+ qemu_ram_mmap(
+ block->fd,
+ block->mapped_size,
+ block->mr->align,
+ block->flags & RAM_SHARED);
+
+ if (!block->host) {
+ rcu_read_unlock();
+ qemu_abort("cannot remap backing for guest memory '%s' "
+ "to new file (shared: %d)",
+ memory_region_name(block->mr),
+ shared);
+ }
+ } else {
+ block->host =
+ phys_mem_alloc(
+ block->max_length,
+ &block->mr->align,
+ shared);
+
+ if (!block->host) {
+ rcu_read_unlock();
+
+ if (insufficientMemMessage) {
+ // Insufficient for allocation; exit.
+ _exit(1);
+ }
+
+ // Fatal error in allocation.
+ qemu_abort(
+ "cannot remap backing for guest memory '%s' "
+ "to anonymous backing",
+ memory_region_name(block->mr));
+ abort();
+ }
+ }
+
+ rcu_read_unlock();
+}
+
+void ram_blocks_remap_shared(int shared)
+{
+ RAMBlock *block;
+
+ RAMBLOCK_FOREACH(block) {
+ char* remap_path;
+
+ if (!block->path) continue;
+
+ remap_path = g_strdup(block->path);
+ ram_block_remap_backing(block, remap_path, shared);
+ g_free(remap_path);
+ }
+
+ memory_listeners_refresh_topology();
+}
+
/* Return a host pointer to ram allocated with qemu_ram_alloc.
* This should not be used for general purpose DMA. Use address_space_map
* or address_space_rw instead. For local memory (e.g. video ram) that the
@@ -3120,8 +3325,18 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
uint64_t val;
MemTxResult result = MEMTX_OK;
bool release_lock = false;
+ uint32_t iters = 0;
+ hwaddr first_addr = addr;
+ MemoryRegion* first_mr = mr;
for (;;) {
+ ++iters;
+ flatview_spin_warning(
+ "flatview_write_continue",
+ iters,
+ first_addr, addr,
+ first_mr, mr);
+
if (!memory_access_is_direct(mr, true)) {
release_lock |= prepare_mmio_access(mr);
l = memory_access_size(mr, l, addr1);
@@ -3209,8 +3424,18 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
uint64_t val;
MemTxResult result = MEMTX_OK;
bool release_lock = false;
+ uint32_t iters = 0;
+ hwaddr first_addr = addr;
+ MemoryRegion* first_mr = mr;
for (;;) {
+ ++iters;
+ flatview_spin_warning(
+ "flatview_read_continue",
+ iters,
+ first_addr, addr,
+ first_mr, mr);
+
if (!memory_access_is_direct(mr, false)) {
/* I/O case */
release_lock |= prepare_mmio_access(mr);
@@ -3495,6 +3720,7 @@ static bool flatview_access_valid(FlatView *fv, hwaddr addr, int len,
if (!memory_access_is_direct(mr, is_write)) {
l = memory_access_size(mr, l, addr);
if (!memory_region_access_valid(mr, xlat, l, is_write)) {
+ rcu_read_unlock();
return false;
}
}
diff --git a/hw/arm/ranchu.c b/hw/arm/ranchu.c
index bc26cd1525..6eb02e1a34 100644
--- a/hw/arm/ranchu.c
+++ b/hw/arm/ranchu.c
@@ -473,6 +473,23 @@ static void *ranchu_dtb(const struct arm_boot_info *binfo, int *fdt_size)
return board->fdt;
}
+#define DEFAULT_ARM_CPU_MODEL "cortex-a15"
+
+static char* splice_out_cpu_model(const char* cpu_type) {
+ // We rely on the model being encoded in the cpu_type, so we validate
+ // the assumption here.
+ assert(cpu_type &&
+ strcmp(cpu_type + (strlen(cpu_type) - strlen(TYPE_ARM_CPU)), TYPE_ARM_CPU) == 0);
+
+ if (!cpu_type) {
+ fprintf(stderr, "%s: WARNING, unknown cpu type, defaulting to cortex-a15\n", __func__);
+ return g_strdup(DEFAULT_ARM_CPU_MODEL);
+ }
+
+ // cpu model is the cpy type minus the ARM postfix.
+ return g_strndup(cpu_type, strlen(cpu_type) - strlen(TYPE_ARM_CPU) - 1);
+}
+
static void ranchu_init(MachineState *machine)
{
qemu_irq pic[NUM_IRQS];
@@ -481,7 +498,8 @@ static void ranchu_init(MachineState *machine)
MemoryRegion *ram = g_new(MemoryRegion, 1);
VirtBoardInfo *vbi;
- const char *cpu_model = "cortex-a57";
+ // Cpu type contains cpu model, so we have to splice it out.
+ char *cpu_model = splice_out_cpu_model(machine->cpu_type);
vbi = g_new0(VirtBoardInfo, 1);
@@ -561,6 +579,8 @@ static void ranchu_init(MachineState *machine)
vbi->bootinfo.loader_start = memmap[RANCHU_MEM].base;
vbi->bootinfo.get_dtb = ranchu_dtb;
arm_load_kernel(ARM_CPU(first_cpu), &vbi->bootinfo);
+
+ g_free(cpu_model);
}
static void ranchu_machine_init(MachineClass *mc)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index b1532e4e91..e00279088f 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -592,27 +592,46 @@ static int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
return 0;
}
+#define VIRTIO_BLK_UNUSUAL_ITER_COUNT 1024
+
bool virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq)
{
VirtIOBlockReq *req;
MultiReqBuffer mrb = {};
bool progress = false;
+ uint32_t all_iters = 0;
+ uint32_t progress_iters = 0;
aio_context_acquire(blk_get_aio_context(s->blk));
blk_io_plug(s->blk);
do {
+ ++all_iters;
+
virtio_queue_set_notification(vq, 0);
while ((req = virtio_blk_get_request(s, vq))) {
progress = true;
+ ++progress_iters;
if (virtio_blk_handle_request(req, &mrb)) {
virtqueue_detach_element(req->vq, &req->elem, 0);
virtio_blk_free_request(req);
break;
}
+
+ qemu_spin_warning(
+ progress_iters,
+ VIRTIO_BLK_UNUSUAL_ITER_COUNT,
+ "Warning: virtio_blk_handle_vq spun %u times with progress.\n",
+ progress_iters);
}
+ qemu_spin_warning(
+ all_iters,
+ VIRTIO_BLK_UNUSUAL_ITER_COUNT,
+ "Warning: virtio_blk_handle_vq spun %u times total.\n",
+ all_iters);
+
virtio_queue_set_notification(vq, 1);
} while (!virtio_queue_empty(vq));
diff --git a/hw/misc/goldfish_pipe.c b/hw/misc/goldfish_pipe.c
index 24b50e11b3..97eaf4e5e2 100755
--- a/hw/misc/goldfish_pipe.c
+++ b/hw/misc/goldfish_pipe.c
@@ -582,7 +582,29 @@ static void close_all_pipes_v2(PipeDevice* dev, GoldfishPipeCloseReason reason)
for (; i < dev->pipes_capacity; ++i) {
HwPipe* pipe = dev->pipes[i];
if (pipe) {
- unmap_command_buffer(pipe->command_buffer);
+ // Make sure to use the guest physical address to
+ // obtain the host address to unmap;
+ // it is possible a remap occurred.
+ //
+ // map_guest_buffer increments refcount
+ // on the memory region, so we need to explicitly
+ // unmap this.
+ void* current_buffer =
+ map_guest_buffer(
+ pipe->command_buffer_addr,
+ COMMAND_BUFFER_SIZE, 1);
+
+ // Unref for telling QEMU we are done with this command buffer.
+ cpu_physical_memory_unmap(
+ current_buffer, COMMAND_BUFFER_SIZE, 1,
+ COMMAND_BUFFER_SIZE);
+
+ // Explicitly unmap again because we just called
+ // map_guest_buffer.
+ cpu_physical_memory_unmap(
+ current_buffer, COMMAND_BUFFER_SIZE, 1,
+ COMMAND_BUFFER_SIZE);
+
hwpipe_free(pipe, reason);
dev->pipes[i] = NULL;
}
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 172698508a..717c823606 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -123,11 +123,21 @@ static void virtio_free_region_cache(VRingMemoryRegionCaches *caches)
g_free(caches);
}
+static void virtio_virtqueue_reset_region_cache(struct VirtQueue *vq)
+{
+ VRingMemoryRegionCaches *caches;
+ caches = atomic_read(&vq->vring.caches);
+ atomic_rcu_set(&vq->vring.caches, NULL);
+ if (caches) {
+ call_rcu(caches, virtio_free_region_cache, rcu);
+ }
+}
+
static void virtio_init_region_cache(VirtIODevice *vdev, int n)
{
VirtQueue *vq = &vdev->vq[n];
VRingMemoryRegionCaches *old = vq->vring.caches;
- VRingMemoryRegionCaches *new;
+ VRingMemoryRegionCaches *new = NULL;
hwaddr addr, size;
int event_size;
int64_t len;
@@ -136,7 +146,7 @@ static void virtio_init_region_cache(VirtIODevice *vdev, int n)
addr = vq->vring.desc;
if (!addr) {
- return;
+ goto out_no_cache;
}
new = g_new0(VRingMemoryRegionCaches, 1);
size = virtio_queue_get_desc_size(vdev, n);
@@ -170,11 +180,14 @@ static void virtio_init_region_cache(VirtIODevice *vdev, int n)
return;
err_avail:
- address_space_cache_destroy(&new->used);
+ address_space_cache_destroy(&new->avail);
err_used:
- address_space_cache_destroy(&new->desc);
+ address_space_cache_destroy(&new->used);
err_desc:
+ address_space_cache_destroy(&new->desc);
+out_no_cache:
g_free(new);
+ virtio_virtqueue_reset_region_cache(vq);
}
/* virt queue functions */
@@ -1173,17 +1186,6 @@ static enum virtio_device_endian virtio_current_cpu_endian(void)
}
}
-static void virtio_virtqueue_reset_region_cache(struct VirtQueue *vq)
-{
- VRingMemoryRegionCaches *caches;
-
- caches = atomic_read(&vq->vring.caches);
- atomic_rcu_set(&vq->vring.caches, NULL);
- if (caches) {
- call_rcu(caches, virtio_free_region_cache, rcu);
- }
-}
-
void virtio_reset(void *opaque)
{
VirtIODevice *vdev = opaque;
@@ -1517,6 +1519,12 @@ static bool virtio_queue_notify_aio_vq(VirtQueue *vq)
if (vq->vring.desc && vq->handle_aio_output) {
VirtIODevice *vdev = vq->vdev;
+ // bug: 113890671
+ // Based on https://lists.gnu.org/archive/html/qemu-devel/2016-11/msg03259.html
+ if (unlikely(vq->vdev->broken)) {
+ return false;
+ }
+
trace_virtio_queue_notify(vdev, vq - vdev->vq, vq);
return vq->handle_aio_output(vdev, vq);
}
@@ -2580,7 +2588,6 @@ static int virtio_device_start_ioeventfd_impl(VirtIODevice *vdev)
VirtioBusState *qbus = VIRTIO_BUS(qdev_get_parent_bus(DEVICE(vdev)));
int i, n, r, err;
- memory_region_transaction_begin();
for (n = 0; n < VIRTIO_QUEUE_MAX; n++) {
VirtQueue *vq = &vdev->vq[n];
if (!virtio_queue_get_num(vdev, n)) {
@@ -2603,7 +2610,6 @@ static int virtio_device_start_ioeventfd_impl(VirtIODevice *vdev)
}
event_notifier_set(&vq->host_notifier);
}
- memory_region_transaction_commit();
return 0;
assign_error:
@@ -2618,7 +2624,6 @@ assign_error:
r = virtio_bus_set_host_notifier(qbus, n, false);
assert(r >= 0);
}
- memory_region_transaction_commit();
while (--i >= 0) {
if (!virtio_queue_get_num(vdev, i)) {
@@ -2642,7 +2647,6 @@ static void virtio_device_stop_ioeventfd_impl(VirtIODevice *vdev)
VirtioBusState *qbus = VIRTIO_BUS(qdev_get_parent_bus(DEVICE(vdev)));
int n, r;
- memory_region_transaction_begin();
for (n = 0; n < VIRTIO_QUEUE_MAX; n++) {
VirtQueue *vq = &vdev->vq[n];
@@ -2653,7 +2657,6 @@ static void virtio_device_stop_ioeventfd_impl(VirtIODevice *vdev)
r = virtio_bus_set_host_notifier(qbus, n, false);
assert(r >= 0);
}
- memory_region_transaction_commit();
for (n = 0; n < VIRTIO_QUEUE_MAX; n++) {
if (!virtio_queue_get_num(vdev, n)) {
diff --git a/include/exec/memory-remap.h b/include/exec/memory-remap.h
new file mode 100644
index 0000000000..1dd41acdc0
--- /dev/null
+++ b/include/exec/memory-remap.h
@@ -0,0 +1,23 @@
+struct RAMBlock;
+
+/*
+ * TODO(lfy@google.com):
+ * General function to remap a RAM block's backing store, if any.
+ * It is assumed the size of the RAMBlock will be the same before and after,
+ * otherwise, there will be an abort.
+ *
+ * If mem_path is null, then we remap to an anonymous mapping.
+ * If mem_path is not null, then the RAMBlock will be remapped to the
+ * given mem_path and will be mapped privately unless |shared| is set.
+ */
+void ram_block_remap_backing(RAMBlock* block, const char* mem_path, int shared);
+
+/* Remaps all RAMBlocks with file backing, preserving all other settings
+ * except for |shared|: whether the file is mapped shared or private.*/
+void ram_blocks_remap_shared(int shared);
+
+/*
+ * Calls region_del and region_add for registered memory listeners.
+ * Purpose: to refresh hypervisor memory mappings, primarily.
+ */
+void memory_listeners_refresh_topology();
diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h
index 739fdb41d3..297732ea90 100644
--- a/include/exec/ram_addr.h
+++ b/include/exec/ram_addr.h
@@ -30,6 +30,7 @@ struct RAMBlock {
ram_addr_t offset;
ram_addr_t used_length;
ram_addr_t max_length;
+ size_t mapped_size;
void (*resized)(const char*, uint64_t length, void *host);
uint32_t flags;
/* Protected by iothread lock. */
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index b38538fe8a..f0d8a6a037 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -551,4 +551,13 @@ extern intptr_t qemu_real_host_page_mask;
extern int qemu_icache_linesize;
extern int qemu_dcache_linesize;
+/* Formatted message function pointer. */
+typedef void (*QemuCrashDumpMessageFunc)(const char *format, va_list args);
+
+void qemu_crash_dump_message_func_set(QemuCrashDumpMessageFunc func);
+void qemu_crash_dump_message(const char* format, ...);
+
+void qemu_spin_warning(uint32_t spinInterval,
+ uint32_t spinValue,
+ const char* format, ...);
#endif
diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index c8a21531a6..c9d0f66019 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -229,6 +229,10 @@ DWORD win32GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize);
+
+int win32_stat(const char* filepath, struct stat* st);
+int win32_lstat(const char* filepath, struct stat* st);
+
// ANDROID_END
#endif
diff --git a/mac.source.properties b/mac.source.properties
index a3066bc7d4..68c8d25a32 100644
--- a/mac.source.properties
+++ b/mac.source.properties
@@ -1,5 +1,5 @@
Pkg.UserSrc=false
-Pkg.Revision=28.0.5
+Pkg.Revision=28.0.10
Pkg.Path=emulator
Pkg.Desc=Android Emulator
Pkg.Dependencies=tools#25.3
diff --git a/memory.c b/memory.c
index 1b01f7e8e4..d5218d524e 100644
--- a/memory.c
+++ b/memory.c
@@ -18,16 +18,19 @@
#include "qemu-common.h"
#include "cpu.h"
#include "exec/memory.h"
+#include "exec/memory-remap.h"
#include "exec/address-spaces.h"
#include "exec/ioport.h"
#include "qapi/visitor.h"
#include "qemu/bitops.h"
#include "qemu/error-report.h"
+#include "qemu/mmap-alloc.h"
#include "qom/object.h"
#include "trace-root.h"
#include "exec/memory-internal.h"
#include "exec/ram_addr.h"
+#include "exec/ramlist.h"
#include "sysemu/kvm.h"
#include "sysemu/sysemu.h"
#include "hw/misc/mmio_interface.h"
@@ -938,6 +941,37 @@ static void address_space_update_topology_pass(AddressSpace *as,
}
}
+void address_space_refresh_topology(AddressSpace *as)
+{
+ FlatView *curr_view = address_space_to_flatview(as);
+ unsigned i = 0;
+ FlatRange *fr = NULL;
+
+ assert(curr_view);
+
+ for (; i < curr_view->nr; ++i) {
+ fr = &curr_view->ranges[i];
+ MEMORY_LISTENER_UPDATE_REGION(fr, as, Reverse, region_del);
+ }
+
+ i = 0;
+
+ for (; i < curr_view->nr; ++i) {
+ fr = &curr_view->ranges[i];
+ MEMORY_LISTENER_UPDATE_REGION(fr, as, Forward, region_add);
+ }
+
+}
+
+void memory_listeners_refresh_topology()
+{
+ AddressSpace *as;
+
+ QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) {
+ address_space_refresh_topology(as);
+ }
+}
+
static void flatviews_init(void)
{
static FlatView *empty_view;
diff --git a/qemu2-auto-generated/README b/qemu2-auto-generated/README
new file mode 100644
index 0000000000..0b2ebf85c6
--- /dev/null
+++ b/qemu2-auto-generated/README
@@ -0,0 +1 @@
+This directory is auto-generated, DO NOT EDIT! You can recreate it by executing: ./android/scripts/generate-qemu2-sources.sh --verbose
diff --git a/qemu2-auto-generated/accel/kvm/trace.c b/qemu2-auto-generated/accel/kvm/trace.c
new file mode 100644
index 0000000000..eea0f30913
--- /dev/null
+++ b/qemu2-auto-generated/accel/kvm/trace.c
@@ -0,0 +1,122 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_KVM_IOCTL_DSTATE;
+uint16_t _TRACE_KVM_VM_IOCTL_DSTATE;
+uint16_t _TRACE_KVM_VCPU_IOCTL_DSTATE;
+uint16_t _TRACE_KVM_RUN_EXIT_DSTATE;
+uint16_t _TRACE_KVM_DEVICE_IOCTL_DSTATE;
+uint16_t _TRACE_KVM_FAILED_REG_GET_DSTATE;
+uint16_t _TRACE_KVM_FAILED_REG_SET_DSTATE;
+uint16_t _TRACE_KVM_IRQCHIP_COMMIT_ROUTES_DSTATE;
+uint16_t _TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_DSTATE;
+uint16_t _TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_DSTATE;
+uint16_t _TRACE_KVM_IRQCHIP_RELEASE_VIRQ_DSTATE;
+uint16_t _TRACE_KVM_SET_USER_MEMORY_DSTATE;
+TraceEvent _TRACE_KVM_IOCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_ioctl",
+ .sstate = TRACE_KVM_IOCTL_ENABLED,
+ .dstate = &_TRACE_KVM_IOCTL_DSTATE
+};
+TraceEvent _TRACE_KVM_VM_IOCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_vm_ioctl",
+ .sstate = TRACE_KVM_VM_IOCTL_ENABLED,
+ .dstate = &_TRACE_KVM_VM_IOCTL_DSTATE
+};
+TraceEvent _TRACE_KVM_VCPU_IOCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_vcpu_ioctl",
+ .sstate = TRACE_KVM_VCPU_IOCTL_ENABLED,
+ .dstate = &_TRACE_KVM_VCPU_IOCTL_DSTATE
+};
+TraceEvent _TRACE_KVM_RUN_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_run_exit",
+ .sstate = TRACE_KVM_RUN_EXIT_ENABLED,
+ .dstate = &_TRACE_KVM_RUN_EXIT_DSTATE
+};
+TraceEvent _TRACE_KVM_DEVICE_IOCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_device_ioctl",
+ .sstate = TRACE_KVM_DEVICE_IOCTL_ENABLED,
+ .dstate = &_TRACE_KVM_DEVICE_IOCTL_DSTATE
+};
+TraceEvent _TRACE_KVM_FAILED_REG_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_failed_reg_get",
+ .sstate = TRACE_KVM_FAILED_REG_GET_ENABLED,
+ .dstate = &_TRACE_KVM_FAILED_REG_GET_DSTATE
+};
+TraceEvent _TRACE_KVM_FAILED_REG_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_failed_reg_set",
+ .sstate = TRACE_KVM_FAILED_REG_SET_ENABLED,
+ .dstate = &_TRACE_KVM_FAILED_REG_SET_DSTATE
+};
+TraceEvent _TRACE_KVM_IRQCHIP_COMMIT_ROUTES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_irqchip_commit_routes",
+ .sstate = TRACE_KVM_IRQCHIP_COMMIT_ROUTES_ENABLED,
+ .dstate = &_TRACE_KVM_IRQCHIP_COMMIT_ROUTES_DSTATE
+};
+TraceEvent _TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_irqchip_add_msi_route",
+ .sstate = TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_ENABLED,
+ .dstate = &_TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_DSTATE
+};
+TraceEvent _TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_irqchip_update_msi_route",
+ .sstate = TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_ENABLED,
+ .dstate = &_TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_DSTATE
+};
+TraceEvent _TRACE_KVM_IRQCHIP_RELEASE_VIRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_irqchip_release_virq",
+ .sstate = TRACE_KVM_IRQCHIP_RELEASE_VIRQ_ENABLED,
+ .dstate = &_TRACE_KVM_IRQCHIP_RELEASE_VIRQ_DSTATE
+};
+TraceEvent _TRACE_KVM_SET_USER_MEMORY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_set_user_memory",
+ .sstate = TRACE_KVM_SET_USER_MEMORY_ENABLED,
+ .dstate = &_TRACE_KVM_SET_USER_MEMORY_DSTATE
+};
+TraceEvent *accel_kvm_trace_events[] = {
+ &_TRACE_KVM_IOCTL_EVENT,
+ &_TRACE_KVM_VM_IOCTL_EVENT,
+ &_TRACE_KVM_VCPU_IOCTL_EVENT,
+ &_TRACE_KVM_RUN_EXIT_EVENT,
+ &_TRACE_KVM_DEVICE_IOCTL_EVENT,
+ &_TRACE_KVM_FAILED_REG_GET_EVENT,
+ &_TRACE_KVM_FAILED_REG_SET_EVENT,
+ &_TRACE_KVM_IRQCHIP_COMMIT_ROUTES_EVENT,
+ &_TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_EVENT,
+ &_TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_EVENT,
+ &_TRACE_KVM_IRQCHIP_RELEASE_VIRQ_EVENT,
+ &_TRACE_KVM_SET_USER_MEMORY_EVENT,
+ NULL,
+};
+
+static void trace_accel_kvm_register_events(void)
+{
+ trace_event_register_group(accel_kvm_trace_events);
+}
+trace_init(trace_accel_kvm_register_events)
diff --git a/qemu2-auto-generated/accel/kvm/trace.h b/qemu2-auto-generated/accel/kvm/trace.h
new file mode 100644
index 0000000000..8bfb5caf1d
--- /dev/null
+++ b/qemu2-auto-generated/accel/kvm/trace.h
@@ -0,0 +1,213 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_ACCEL_KVM_GENERATED_TRACERS_H
+#define TRACE_ACCEL_KVM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_KVM_IOCTL_EVENT;
+extern TraceEvent _TRACE_KVM_VM_IOCTL_EVENT;
+extern TraceEvent _TRACE_KVM_VCPU_IOCTL_EVENT;
+extern TraceEvent _TRACE_KVM_RUN_EXIT_EVENT;
+extern TraceEvent _TRACE_KVM_DEVICE_IOCTL_EVENT;
+extern TraceEvent _TRACE_KVM_FAILED_REG_GET_EVENT;
+extern TraceEvent _TRACE_KVM_FAILED_REG_SET_EVENT;
+extern TraceEvent _TRACE_KVM_IRQCHIP_COMMIT_ROUTES_EVENT;
+extern TraceEvent _TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_EVENT;
+extern TraceEvent _TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_EVENT;
+extern TraceEvent _TRACE_KVM_IRQCHIP_RELEASE_VIRQ_EVENT;
+extern TraceEvent _TRACE_KVM_SET_USER_MEMORY_EVENT;
+extern uint16_t _TRACE_KVM_IOCTL_DSTATE;
+extern uint16_t _TRACE_KVM_VM_IOCTL_DSTATE;
+extern uint16_t _TRACE_KVM_VCPU_IOCTL_DSTATE;
+extern uint16_t _TRACE_KVM_RUN_EXIT_DSTATE;
+extern uint16_t _TRACE_KVM_DEVICE_IOCTL_DSTATE;
+extern uint16_t _TRACE_KVM_FAILED_REG_GET_DSTATE;
+extern uint16_t _TRACE_KVM_FAILED_REG_SET_DSTATE;
+extern uint16_t _TRACE_KVM_IRQCHIP_COMMIT_ROUTES_DSTATE;
+extern uint16_t _TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_DSTATE;
+extern uint16_t _TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_DSTATE;
+extern uint16_t _TRACE_KVM_IRQCHIP_RELEASE_VIRQ_DSTATE;
+extern uint16_t _TRACE_KVM_SET_USER_MEMORY_DSTATE;
+#define TRACE_KVM_IOCTL_ENABLED 1
+#define TRACE_KVM_VM_IOCTL_ENABLED 1
+#define TRACE_KVM_VCPU_IOCTL_ENABLED 1
+#define TRACE_KVM_RUN_EXIT_ENABLED 1
+#define TRACE_KVM_DEVICE_IOCTL_ENABLED 1
+#define TRACE_KVM_FAILED_REG_GET_ENABLED 1
+#define TRACE_KVM_FAILED_REG_SET_ENABLED 1
+#define TRACE_KVM_IRQCHIP_COMMIT_ROUTES_ENABLED 1
+#define TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_ENABLED 1
+#define TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_ENABLED 1
+#define TRACE_KVM_IRQCHIP_RELEASE_VIRQ_ENABLED 1
+#define TRACE_KVM_SET_USER_MEMORY_ENABLED 1
+
+#define TRACE_KVM_IOCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_ioctl(int type, void * arg)
+{
+}
+
+static inline void trace_kvm_ioctl(int type, void * arg)
+{
+ if (true) {
+ _nocheck__trace_kvm_ioctl(type, arg);
+ }
+}
+
+#define TRACE_KVM_VM_IOCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_vm_ioctl(int type, void * arg)
+{
+}
+
+static inline void trace_kvm_vm_ioctl(int type, void * arg)
+{
+ if (true) {
+ _nocheck__trace_kvm_vm_ioctl(type, arg);
+ }
+}
+
+#define TRACE_KVM_VCPU_IOCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_vcpu_ioctl(int cpu_index, int type, void * arg)
+{
+}
+
+static inline void trace_kvm_vcpu_ioctl(int cpu_index, int type, void * arg)
+{
+ if (true) {
+ _nocheck__trace_kvm_vcpu_ioctl(cpu_index, type, arg);
+ }
+}
+
+#define TRACE_KVM_RUN_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_run_exit(int cpu_index, uint32_t reason)
+{
+}
+
+static inline void trace_kvm_run_exit(int cpu_index, uint32_t reason)
+{
+ if (true) {
+ _nocheck__trace_kvm_run_exit(cpu_index, reason);
+ }
+}
+
+#define TRACE_KVM_DEVICE_IOCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_device_ioctl(int fd, int type, void * arg)
+{
+}
+
+static inline void trace_kvm_device_ioctl(int fd, int type, void * arg)
+{
+ if (true) {
+ _nocheck__trace_kvm_device_ioctl(fd, type, arg);
+ }
+}
+
+#define TRACE_KVM_FAILED_REG_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_failed_reg_get(uint64_t id, const char * msg)
+{
+}
+
+static inline void trace_kvm_failed_reg_get(uint64_t id, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_kvm_failed_reg_get(id, msg);
+ }
+}
+
+#define TRACE_KVM_FAILED_REG_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_failed_reg_set(uint64_t id, const char * msg)
+{
+}
+
+static inline void trace_kvm_failed_reg_set(uint64_t id, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_kvm_failed_reg_set(id, msg);
+ }
+}
+
+#define TRACE_KVM_IRQCHIP_COMMIT_ROUTES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_irqchip_commit_routes(void)
+{
+}
+
+static inline void trace_kvm_irqchip_commit_routes(void)
+{
+ if (true) {
+ _nocheck__trace_kvm_irqchip_commit_routes();
+ }
+}
+
+#define TRACE_KVM_IRQCHIP_ADD_MSI_ROUTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_irqchip_add_msi_route(char * name, int vector, int virq)
+{
+}
+
+static inline void trace_kvm_irqchip_add_msi_route(char * name, int vector, int virq)
+{
+ if (true) {
+ _nocheck__trace_kvm_irqchip_add_msi_route(name, vector, virq);
+ }
+}
+
+#define TRACE_KVM_IRQCHIP_UPDATE_MSI_ROUTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_irqchip_update_msi_route(int virq)
+{
+}
+
+static inline void trace_kvm_irqchip_update_msi_route(int virq)
+{
+ if (true) {
+ _nocheck__trace_kvm_irqchip_update_msi_route(virq);
+ }
+}
+
+#define TRACE_KVM_IRQCHIP_RELEASE_VIRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_irqchip_release_virq(int virq)
+{
+}
+
+static inline void trace_kvm_irqchip_release_virq(int virq)
+{
+ if (true) {
+ _nocheck__trace_kvm_irqchip_release_virq(virq);
+ }
+}
+
+#define TRACE_KVM_SET_USER_MEMORY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_set_user_memory(uint32_t slot, uint32_t flags, uint64_t guest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret)
+{
+}
+
+static inline void trace_kvm_set_user_memory(uint32_t slot, uint32_t flags, uint64_t guest_phys_addr, uint64_t memory_size, uint64_t userspace_addr, int ret)
+{
+ if (true) {
+ _nocheck__trace_kvm_set_user_memory(slot, flags, guest_phys_addr, memory_size, userspace_addr, ret);
+ }
+}
+#endif /* TRACE_ACCEL_KVM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/accel/tcg/trace.c b/qemu2-auto-generated/accel/tcg/trace.c
new file mode 100644
index 0000000000..79522abe5d
--- /dev/null
+++ b/qemu2-auto-generated/accel/tcg/trace.c
@@ -0,0 +1,50 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_EXEC_TB_DSTATE;
+uint16_t _TRACE_EXEC_TB_NOCACHE_DSTATE;
+uint16_t _TRACE_EXEC_TB_EXIT_DSTATE;
+uint16_t _TRACE_TRANSLATE_BLOCK_DSTATE;
+TraceEvent _TRACE_EXEC_TB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "exec_tb",
+ .sstate = TRACE_EXEC_TB_ENABLED,
+ .dstate = &_TRACE_EXEC_TB_DSTATE
+};
+TraceEvent _TRACE_EXEC_TB_NOCACHE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "exec_tb_nocache",
+ .sstate = TRACE_EXEC_TB_NOCACHE_ENABLED,
+ .dstate = &_TRACE_EXEC_TB_NOCACHE_DSTATE
+};
+TraceEvent _TRACE_EXEC_TB_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "exec_tb_exit",
+ .sstate = TRACE_EXEC_TB_EXIT_ENABLED,
+ .dstate = &_TRACE_EXEC_TB_EXIT_DSTATE
+};
+TraceEvent _TRACE_TRANSLATE_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "translate_block",
+ .sstate = TRACE_TRANSLATE_BLOCK_ENABLED,
+ .dstate = &_TRACE_TRANSLATE_BLOCK_DSTATE
+};
+TraceEvent *accel_tcg_trace_events[] = {
+ &_TRACE_EXEC_TB_EVENT,
+ &_TRACE_EXEC_TB_NOCACHE_EVENT,
+ &_TRACE_EXEC_TB_EXIT_EVENT,
+ &_TRACE_TRANSLATE_BLOCK_EVENT,
+ NULL,
+};
+
+static void trace_accel_tcg_register_events(void)
+{
+ trace_event_register_group(accel_tcg_trace_events);
+}
+trace_init(trace_accel_tcg_register_events)
diff --git a/qemu2-auto-generated/accel/tcg/trace.h b/qemu2-auto-generated/accel/tcg/trace.h
new file mode 100644
index 0000000000..5d6fbc050b
--- /dev/null
+++ b/qemu2-auto-generated/accel/tcg/trace.h
@@ -0,0 +1,77 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_ACCEL_TCG_GENERATED_TRACERS_H
+#define TRACE_ACCEL_TCG_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_EXEC_TB_EVENT;
+extern TraceEvent _TRACE_EXEC_TB_NOCACHE_EVENT;
+extern TraceEvent _TRACE_EXEC_TB_EXIT_EVENT;
+extern TraceEvent _TRACE_TRANSLATE_BLOCK_EVENT;
+extern uint16_t _TRACE_EXEC_TB_DSTATE;
+extern uint16_t _TRACE_EXEC_TB_NOCACHE_DSTATE;
+extern uint16_t _TRACE_EXEC_TB_EXIT_DSTATE;
+extern uint16_t _TRACE_TRANSLATE_BLOCK_DSTATE;
+#define TRACE_EXEC_TB_ENABLED 0
+#define TRACE_EXEC_TB_NOCACHE_ENABLED 0
+#define TRACE_EXEC_TB_EXIT_ENABLED 0
+#define TRACE_TRANSLATE_BLOCK_ENABLED 1
+
+#define TRACE_EXEC_TB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_exec_tb(void * tb, uintptr_t pc)
+{
+}
+
+static inline void trace_exec_tb(void * tb, uintptr_t pc)
+{
+ if (true) {
+ _nocheck__trace_exec_tb(tb, pc);
+ }
+}
+
+#define TRACE_EXEC_TB_NOCACHE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_exec_tb_nocache(void * tb, uintptr_t pc)
+{
+}
+
+static inline void trace_exec_tb_nocache(void * tb, uintptr_t pc)
+{
+ if (true) {
+ _nocheck__trace_exec_tb_nocache(tb, pc);
+ }
+}
+
+#define TRACE_EXEC_TB_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_exec_tb_exit(void * last_tb, unsigned int flags)
+{
+}
+
+static inline void trace_exec_tb_exit(void * last_tb, unsigned int flags)
+{
+ if (true) {
+ _nocheck__trace_exec_tb_exit(last_tb, flags);
+ }
+}
+
+#define TRACE_TRANSLATE_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_translate_block(void * tb, uintptr_t pc, uint8_t * tb_code)
+{
+}
+
+static inline void trace_translate_block(void * tb, uintptr_t pc, uint8_t * tb_code)
+{
+ if (true) {
+ _nocheck__trace_translate_block(tb, pc, tb_code);
+ }
+}
+#endif /* TRACE_ACCEL_TCG_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/asm b/qemu2-auto-generated/asm
new file mode 120000
index 0000000000..3461e629ae
--- /dev/null
+++ b/qemu2-auto-generated/asm
@@ -0,0 +1 @@
+../linux-headers/asm-x86 \ No newline at end of file
diff --git a/qemu2-auto-generated/audio/trace.c b/qemu2-auto-generated/audio/trace.c
new file mode 100644
index 0000000000..b8364be6cc
--- /dev/null
+++ b/qemu2-auto-generated/audio/trace.c
@@ -0,0 +1,122 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_ALSA_REVENTS_DSTATE;
+uint16_t _TRACE_ALSA_POLLOUT_DSTATE;
+uint16_t _TRACE_ALSA_SET_HANDLER_DSTATE;
+uint16_t _TRACE_ALSA_WROTE_ZERO_DSTATE;
+uint16_t _TRACE_ALSA_READ_ZERO_DSTATE;
+uint16_t _TRACE_ALSA_XRUN_OUT_DSTATE;
+uint16_t _TRACE_ALSA_XRUN_IN_DSTATE;
+uint16_t _TRACE_ALSA_RESUME_OUT_DSTATE;
+uint16_t _TRACE_ALSA_RESUME_IN_DSTATE;
+uint16_t _TRACE_ALSA_NO_FRAMES_DSTATE;
+uint16_t _TRACE_OSS_VERSION_DSTATE;
+uint16_t _TRACE_OSS_INVALID_AVAILABLE_SIZE_DSTATE;
+TraceEvent _TRACE_ALSA_REVENTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_revents",
+ .sstate = TRACE_ALSA_REVENTS_ENABLED,
+ .dstate = &_TRACE_ALSA_REVENTS_DSTATE
+};
+TraceEvent _TRACE_ALSA_POLLOUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_pollout",
+ .sstate = TRACE_ALSA_POLLOUT_ENABLED,
+ .dstate = &_TRACE_ALSA_POLLOUT_DSTATE
+};
+TraceEvent _TRACE_ALSA_SET_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_set_handler",
+ .sstate = TRACE_ALSA_SET_HANDLER_ENABLED,
+ .dstate = &_TRACE_ALSA_SET_HANDLER_DSTATE
+};
+TraceEvent _TRACE_ALSA_WROTE_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_wrote_zero",
+ .sstate = TRACE_ALSA_WROTE_ZERO_ENABLED,
+ .dstate = &_TRACE_ALSA_WROTE_ZERO_DSTATE
+};
+TraceEvent _TRACE_ALSA_READ_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_read_zero",
+ .sstate = TRACE_ALSA_READ_ZERO_ENABLED,
+ .dstate = &_TRACE_ALSA_READ_ZERO_DSTATE
+};
+TraceEvent _TRACE_ALSA_XRUN_OUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_xrun_out",
+ .sstate = TRACE_ALSA_XRUN_OUT_ENABLED,
+ .dstate = &_TRACE_ALSA_XRUN_OUT_DSTATE
+};
+TraceEvent _TRACE_ALSA_XRUN_IN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_xrun_in",
+ .sstate = TRACE_ALSA_XRUN_IN_ENABLED,
+ .dstate = &_TRACE_ALSA_XRUN_IN_DSTATE
+};
+TraceEvent _TRACE_ALSA_RESUME_OUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_resume_out",
+ .sstate = TRACE_ALSA_RESUME_OUT_ENABLED,
+ .dstate = &_TRACE_ALSA_RESUME_OUT_DSTATE
+};
+TraceEvent _TRACE_ALSA_RESUME_IN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_resume_in",
+ .sstate = TRACE_ALSA_RESUME_IN_ENABLED,
+ .dstate = &_TRACE_ALSA_RESUME_IN_DSTATE
+};
+TraceEvent _TRACE_ALSA_NO_FRAMES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alsa_no_frames",
+ .sstate = TRACE_ALSA_NO_FRAMES_ENABLED,
+ .dstate = &_TRACE_ALSA_NO_FRAMES_DSTATE
+};
+TraceEvent _TRACE_OSS_VERSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "oss_version",
+ .sstate = TRACE_OSS_VERSION_ENABLED,
+ .dstate = &_TRACE_OSS_VERSION_DSTATE
+};
+TraceEvent _TRACE_OSS_INVALID_AVAILABLE_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "oss_invalid_available_size",
+ .sstate = TRACE_OSS_INVALID_AVAILABLE_SIZE_ENABLED,
+ .dstate = &_TRACE_OSS_INVALID_AVAILABLE_SIZE_DSTATE
+};
+TraceEvent *audio_trace_events[] = {
+ &_TRACE_ALSA_REVENTS_EVENT,
+ &_TRACE_ALSA_POLLOUT_EVENT,
+ &_TRACE_ALSA_SET_HANDLER_EVENT,
+ &_TRACE_ALSA_WROTE_ZERO_EVENT,
+ &_TRACE_ALSA_READ_ZERO_EVENT,
+ &_TRACE_ALSA_XRUN_OUT_EVENT,
+ &_TRACE_ALSA_XRUN_IN_EVENT,
+ &_TRACE_ALSA_RESUME_OUT_EVENT,
+ &_TRACE_ALSA_RESUME_IN_EVENT,
+ &_TRACE_ALSA_NO_FRAMES_EVENT,
+ &_TRACE_OSS_VERSION_EVENT,
+ &_TRACE_OSS_INVALID_AVAILABLE_SIZE_EVENT,
+ NULL,
+};
+
+static void trace_audio_register_events(void)
+{
+ trace_event_register_group(audio_trace_events);
+}
+trace_init(trace_audio_register_events)
diff --git a/qemu2-auto-generated/audio/trace.h b/qemu2-auto-generated/audio/trace.h
new file mode 100644
index 0000000000..48b51cd7e3
--- /dev/null
+++ b/qemu2-auto-generated/audio/trace.h
@@ -0,0 +1,213 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_AUDIO_GENERATED_TRACERS_H
+#define TRACE_AUDIO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_ALSA_REVENTS_EVENT;
+extern TraceEvent _TRACE_ALSA_POLLOUT_EVENT;
+extern TraceEvent _TRACE_ALSA_SET_HANDLER_EVENT;
+extern TraceEvent _TRACE_ALSA_WROTE_ZERO_EVENT;
+extern TraceEvent _TRACE_ALSA_READ_ZERO_EVENT;
+extern TraceEvent _TRACE_ALSA_XRUN_OUT_EVENT;
+extern TraceEvent _TRACE_ALSA_XRUN_IN_EVENT;
+extern TraceEvent _TRACE_ALSA_RESUME_OUT_EVENT;
+extern TraceEvent _TRACE_ALSA_RESUME_IN_EVENT;
+extern TraceEvent _TRACE_ALSA_NO_FRAMES_EVENT;
+extern TraceEvent _TRACE_OSS_VERSION_EVENT;
+extern TraceEvent _TRACE_OSS_INVALID_AVAILABLE_SIZE_EVENT;
+extern uint16_t _TRACE_ALSA_REVENTS_DSTATE;
+extern uint16_t _TRACE_ALSA_POLLOUT_DSTATE;
+extern uint16_t _TRACE_ALSA_SET_HANDLER_DSTATE;
+extern uint16_t _TRACE_ALSA_WROTE_ZERO_DSTATE;
+extern uint16_t _TRACE_ALSA_READ_ZERO_DSTATE;
+extern uint16_t _TRACE_ALSA_XRUN_OUT_DSTATE;
+extern uint16_t _TRACE_ALSA_XRUN_IN_DSTATE;
+extern uint16_t _TRACE_ALSA_RESUME_OUT_DSTATE;
+extern uint16_t _TRACE_ALSA_RESUME_IN_DSTATE;
+extern uint16_t _TRACE_ALSA_NO_FRAMES_DSTATE;
+extern uint16_t _TRACE_OSS_VERSION_DSTATE;
+extern uint16_t _TRACE_OSS_INVALID_AVAILABLE_SIZE_DSTATE;
+#define TRACE_ALSA_REVENTS_ENABLED 1
+#define TRACE_ALSA_POLLOUT_ENABLED 1
+#define TRACE_ALSA_SET_HANDLER_ENABLED 1
+#define TRACE_ALSA_WROTE_ZERO_ENABLED 1
+#define TRACE_ALSA_READ_ZERO_ENABLED 1
+#define TRACE_ALSA_XRUN_OUT_ENABLED 1
+#define TRACE_ALSA_XRUN_IN_ENABLED 1
+#define TRACE_ALSA_RESUME_OUT_ENABLED 1
+#define TRACE_ALSA_RESUME_IN_ENABLED 1
+#define TRACE_ALSA_NO_FRAMES_ENABLED 1
+#define TRACE_OSS_VERSION_ENABLED 1
+#define TRACE_OSS_INVALID_AVAILABLE_SIZE_ENABLED 1
+
+#define TRACE_ALSA_REVENTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_revents(int revents)
+{
+}
+
+static inline void trace_alsa_revents(int revents)
+{
+ if (true) {
+ _nocheck__trace_alsa_revents(revents);
+ }
+}
+
+#define TRACE_ALSA_POLLOUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_pollout(int i, int fd)
+{
+}
+
+static inline void trace_alsa_pollout(int i, int fd)
+{
+ if (true) {
+ _nocheck__trace_alsa_pollout(i, fd);
+ }
+}
+
+#define TRACE_ALSA_SET_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_set_handler(int events, int index, int fd, int err)
+{
+}
+
+static inline void trace_alsa_set_handler(int events, int index, int fd, int err)
+{
+ if (true) {
+ _nocheck__trace_alsa_set_handler(events, index, fd, err);
+ }
+}
+
+#define TRACE_ALSA_WROTE_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_wrote_zero(int len)
+{
+}
+
+static inline void trace_alsa_wrote_zero(int len)
+{
+ if (true) {
+ _nocheck__trace_alsa_wrote_zero(len);
+ }
+}
+
+#define TRACE_ALSA_READ_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_read_zero(long len)
+{
+}
+
+static inline void trace_alsa_read_zero(long len)
+{
+ if (true) {
+ _nocheck__trace_alsa_read_zero(len);
+ }
+}
+
+#define TRACE_ALSA_XRUN_OUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_xrun_out(void)
+{
+}
+
+static inline void trace_alsa_xrun_out(void)
+{
+ if (true) {
+ _nocheck__trace_alsa_xrun_out();
+ }
+}
+
+#define TRACE_ALSA_XRUN_IN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_xrun_in(void)
+{
+}
+
+static inline void trace_alsa_xrun_in(void)
+{
+ if (true) {
+ _nocheck__trace_alsa_xrun_in();
+ }
+}
+
+#define TRACE_ALSA_RESUME_OUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_resume_out(void)
+{
+}
+
+static inline void trace_alsa_resume_out(void)
+{
+ if (true) {
+ _nocheck__trace_alsa_resume_out();
+ }
+}
+
+#define TRACE_ALSA_RESUME_IN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_resume_in(void)
+{
+}
+
+static inline void trace_alsa_resume_in(void)
+{
+ if (true) {
+ _nocheck__trace_alsa_resume_in();
+ }
+}
+
+#define TRACE_ALSA_NO_FRAMES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alsa_no_frames(int state)
+{
+}
+
+static inline void trace_alsa_no_frames(int state)
+{
+ if (true) {
+ _nocheck__trace_alsa_no_frames(state);
+ }
+}
+
+#define TRACE_OSS_VERSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_oss_version(int version)
+{
+}
+
+static inline void trace_oss_version(int version)
+{
+ if (true) {
+ _nocheck__trace_oss_version(version);
+ }
+}
+
+#define TRACE_OSS_INVALID_AVAILABLE_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_oss_invalid_available_size(int size, int bufsize)
+{
+}
+
+static inline void trace_oss_invalid_available_size(int size, int bufsize)
+{
+ if (true) {
+ _nocheck__trace_oss_invalid_available_size(size, bufsize);
+ }
+}
+#endif /* TRACE_AUDIO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/block/trace.c b/qemu2-auto-generated/block/trace.c
new file mode 100644
index 0000000000..b4d024a922
--- /dev/null
+++ b/qemu2-auto-generated/block/trace.c
@@ -0,0 +1,1067 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_BDRV_OPEN_COMMON_DSTATE;
+uint16_t _TRACE_BDRV_LOCK_MEDIUM_DSTATE;
+uint16_t _TRACE_BLOCK_JOB_COMPLETED_DSTATE;
+uint16_t _TRACE_BLOCK_JOB_STATE_TRANSITION_DSTATE;
+uint16_t _TRACE_BLOCK_JOB_APPLY_VERB_DSTATE;
+uint16_t _TRACE_BLK_CO_PREADV_DSTATE;
+uint16_t _TRACE_BLK_CO_PWRITEV_DSTATE;
+uint16_t _TRACE_BLK_ROOT_ATTACH_DSTATE;
+uint16_t _TRACE_BLK_ROOT_DETACH_DSTATE;
+uint16_t _TRACE_BDRV_CO_PREADV_DSTATE;
+uint16_t _TRACE_BDRV_CO_PWRITEV_DSTATE;
+uint16_t _TRACE_BDRV_CO_PWRITE_ZEROES_DSTATE;
+uint16_t _TRACE_BDRV_CO_DO_COPY_ON_READV_DSTATE;
+uint16_t _TRACE_STREAM_ONE_ITERATION_DSTATE;
+uint16_t _TRACE_STREAM_START_DSTATE;
+uint16_t _TRACE_COMMIT_ONE_ITERATION_DSTATE;
+uint16_t _TRACE_COMMIT_START_DSTATE;
+uint16_t _TRACE_MIRROR_START_DSTATE;
+uint16_t _TRACE_MIRROR_RESTART_ITER_DSTATE;
+uint16_t _TRACE_MIRROR_BEFORE_FLUSH_DSTATE;
+uint16_t _TRACE_MIRROR_BEFORE_DRAIN_DSTATE;
+uint16_t _TRACE_MIRROR_BEFORE_SLEEP_DSTATE;
+uint16_t _TRACE_MIRROR_ONE_ITERATION_DSTATE;
+uint16_t _TRACE_MIRROR_ITERATION_DONE_DSTATE;
+uint16_t _TRACE_MIRROR_YIELD_DSTATE;
+uint16_t _TRACE_MIRROR_YIELD_IN_FLIGHT_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_ENTER_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_RETURN_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_SKIP_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_PROCESS_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_READ_FAIL_DSTATE;
+uint16_t _TRACE_BACKUP_DO_COW_WRITE_FAIL_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_CANCEL_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_PAUSE_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_RESUME_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_COMPLETE_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_FINALIZE_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_JOB_DISMISS_DSTATE;
+uint16_t _TRACE_QMP_BLOCK_STREAM_DSTATE;
+uint16_t _TRACE_PAIO_SUBMIT_CO_DSTATE;
+uint16_t _TRACE_PAIO_SUBMIT_DSTATE;
+uint16_t _TRACE_QCOW2_WRITEV_START_REQ_DSTATE;
+uint16_t _TRACE_QCOW2_WRITEV_DONE_REQ_DSTATE;
+uint16_t _TRACE_QCOW2_WRITEV_START_PART_DSTATE;
+uint16_t _TRACE_QCOW2_WRITEV_DONE_PART_DSTATE;
+uint16_t _TRACE_QCOW2_WRITEV_DATA_DSTATE;
+uint16_t _TRACE_QCOW2_PWRITE_ZEROES_START_REQ_DSTATE;
+uint16_t _TRACE_QCOW2_PWRITE_ZEROES_DSTATE;
+uint16_t _TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_DSTATE;
+uint16_t _TRACE_QCOW2_HANDLE_COPIED_DSTATE;
+uint16_t _TRACE_QCOW2_HANDLE_ALLOC_DSTATE;
+uint16_t _TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_DSTATE;
+uint16_t _TRACE_QCOW2_CLUSTER_ALLOC_PHYS_DSTATE;
+uint16_t _TRACE_QCOW2_CLUSTER_LINK_L2_DSTATE;
+uint16_t _TRACE_QCOW2_L2_ALLOCATE_DSTATE;
+uint16_t _TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_DSTATE;
+uint16_t _TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_DSTATE;
+uint16_t _TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_DSTATE;
+uint16_t _TRACE_QCOW2_L2_ALLOCATE_DONE_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_GET_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_GET_READ_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_GET_DONE_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_FLUSH_DSTATE;
+uint16_t _TRACE_QCOW2_CACHE_ENTRY_FLUSH_DSTATE;
+uint16_t _TRACE_QED_ALLOC_L2_CACHE_ENTRY_DSTATE;
+uint16_t _TRACE_QED_UNREF_L2_CACHE_ENTRY_DSTATE;
+uint16_t _TRACE_QED_FIND_L2_CACHE_ENTRY_DSTATE;
+uint16_t _TRACE_QED_READ_TABLE_DSTATE;
+uint16_t _TRACE_QED_READ_TABLE_CB_DSTATE;
+uint16_t _TRACE_QED_WRITE_TABLE_DSTATE;
+uint16_t _TRACE_QED_WRITE_TABLE_CB_DSTATE;
+uint16_t _TRACE_QED_NEED_CHECK_TIMER_CB_DSTATE;
+uint16_t _TRACE_QED_START_NEED_CHECK_TIMER_DSTATE;
+uint16_t _TRACE_QED_CANCEL_NEED_CHECK_TIMER_DSTATE;
+uint16_t _TRACE_QED_AIO_COMPLETE_DSTATE;
+uint16_t _TRACE_QED_AIO_SETUP_DSTATE;
+uint16_t _TRACE_QED_AIO_NEXT_IO_DSTATE;
+uint16_t _TRACE_QED_AIO_READ_DATA_DSTATE;
+uint16_t _TRACE_QED_AIO_WRITE_DATA_DSTATE;
+uint16_t _TRACE_QED_AIO_WRITE_PREFILL_DSTATE;
+uint16_t _TRACE_QED_AIO_WRITE_POSTFILL_DSTATE;
+uint16_t _TRACE_QED_AIO_WRITE_MAIN_DSTATE;
+uint16_t _TRACE_VXHS_IIO_CALLBACK_DSTATE;
+uint16_t _TRACE_VXHS_IIO_CALLBACK_CHNFAIL_DSTATE;
+uint16_t _TRACE_VXHS_IIO_CALLBACK_UNKNWN_DSTATE;
+uint16_t _TRACE_VXHS_AIO_RW_INVALID_DSTATE;
+uint16_t _TRACE_VXHS_AIO_RW_IOERR_DSTATE;
+uint16_t _TRACE_VXHS_GET_VDISK_STAT_ERR_DSTATE;
+uint16_t _TRACE_VXHS_GET_VDISK_STAT_DSTATE;
+uint16_t _TRACE_VXHS_COMPLETE_AIO_DSTATE;
+uint16_t _TRACE_VXHS_PARSE_URI_FILENAME_DSTATE;
+uint16_t _TRACE_VXHS_OPEN_VDISKID_DSTATE;
+uint16_t _TRACE_VXHS_OPEN_HOSTINFO_DSTATE;
+uint16_t _TRACE_VXHS_OPEN_IIO_OPEN_DSTATE;
+uint16_t _TRACE_VXHS_PARSE_URI_HOSTINFO_DSTATE;
+uint16_t _TRACE_VXHS_CLOSE_DSTATE;
+uint16_t _TRACE_VXHS_GET_CREDS_DSTATE;
+uint16_t _TRACE_NVME_KICK_DSTATE;
+uint16_t _TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_DSTATE;
+uint16_t _TRACE_NVME_ERROR_DSTATE;
+uint16_t _TRACE_NVME_PROCESS_COMPLETION_DSTATE;
+uint16_t _TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_DSTATE;
+uint16_t _TRACE_NVME_COMPLETE_COMMAND_DSTATE;
+uint16_t _TRACE_NVME_SUBMIT_COMMAND_DSTATE;
+uint16_t _TRACE_NVME_SUBMIT_COMMAND_RAW_DSTATE;
+uint16_t _TRACE_NVME_HANDLE_EVENT_DSTATE;
+uint16_t _TRACE_NVME_POLL_CB_DSTATE;
+uint16_t _TRACE_NVME_PRW_ALIGNED_DSTATE;
+uint16_t _TRACE_NVME_QIOV_UNALIGNED_DSTATE;
+uint16_t _TRACE_NVME_PRW_BUFFERED_DSTATE;
+uint16_t _TRACE_NVME_RW_DONE_DSTATE;
+uint16_t _TRACE_NVME_DMA_MAP_FLUSH_DSTATE;
+uint16_t _TRACE_NVME_FREE_REQ_QUEUE_WAIT_DSTATE;
+uint16_t _TRACE_NVME_CMD_MAP_QIOV_DSTATE;
+uint16_t _TRACE_NVME_CMD_MAP_QIOV_PAGES_DSTATE;
+uint16_t _TRACE_NVME_CMD_MAP_QIOV_IOV_DSTATE;
+TraceEvent _TRACE_BDRV_OPEN_COMMON_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_open_common",
+ .sstate = TRACE_BDRV_OPEN_COMMON_ENABLED,
+ .dstate = &_TRACE_BDRV_OPEN_COMMON_DSTATE
+};
+TraceEvent _TRACE_BDRV_LOCK_MEDIUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_lock_medium",
+ .sstate = TRACE_BDRV_LOCK_MEDIUM_ENABLED,
+ .dstate = &_TRACE_BDRV_LOCK_MEDIUM_DSTATE
+};
+TraceEvent _TRACE_BLOCK_JOB_COMPLETED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "block_job_completed",
+ .sstate = TRACE_BLOCK_JOB_COMPLETED_ENABLED,
+ .dstate = &_TRACE_BLOCK_JOB_COMPLETED_DSTATE
+};
+TraceEvent _TRACE_BLOCK_JOB_STATE_TRANSITION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "block_job_state_transition",
+ .sstate = TRACE_BLOCK_JOB_STATE_TRANSITION_ENABLED,
+ .dstate = &_TRACE_BLOCK_JOB_STATE_TRANSITION_DSTATE
+};
+TraceEvent _TRACE_BLOCK_JOB_APPLY_VERB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "block_job_apply_verb",
+ .sstate = TRACE_BLOCK_JOB_APPLY_VERB_ENABLED,
+ .dstate = &_TRACE_BLOCK_JOB_APPLY_VERB_DSTATE
+};
+TraceEvent _TRACE_BLK_CO_PREADV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "blk_co_preadv",
+ .sstate = TRACE_BLK_CO_PREADV_ENABLED,
+ .dstate = &_TRACE_BLK_CO_PREADV_DSTATE
+};
+TraceEvent _TRACE_BLK_CO_PWRITEV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "blk_co_pwritev",
+ .sstate = TRACE_BLK_CO_PWRITEV_ENABLED,
+ .dstate = &_TRACE_BLK_CO_PWRITEV_DSTATE
+};
+TraceEvent _TRACE_BLK_ROOT_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "blk_root_attach",
+ .sstate = TRACE_BLK_ROOT_ATTACH_ENABLED,
+ .dstate = &_TRACE_BLK_ROOT_ATTACH_DSTATE
+};
+TraceEvent _TRACE_BLK_ROOT_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "blk_root_detach",
+ .sstate = TRACE_BLK_ROOT_DETACH_ENABLED,
+ .dstate = &_TRACE_BLK_ROOT_DETACH_DSTATE
+};
+TraceEvent _TRACE_BDRV_CO_PREADV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_co_preadv",
+ .sstate = TRACE_BDRV_CO_PREADV_ENABLED,
+ .dstate = &_TRACE_BDRV_CO_PREADV_DSTATE
+};
+TraceEvent _TRACE_BDRV_CO_PWRITEV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_co_pwritev",
+ .sstate = TRACE_BDRV_CO_PWRITEV_ENABLED,
+ .dstate = &_TRACE_BDRV_CO_PWRITEV_DSTATE
+};
+TraceEvent _TRACE_BDRV_CO_PWRITE_ZEROES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_co_pwrite_zeroes",
+ .sstate = TRACE_BDRV_CO_PWRITE_ZEROES_ENABLED,
+ .dstate = &_TRACE_BDRV_CO_PWRITE_ZEROES_DSTATE
+};
+TraceEvent _TRACE_BDRV_CO_DO_COPY_ON_READV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bdrv_co_do_copy_on_readv",
+ .sstate = TRACE_BDRV_CO_DO_COPY_ON_READV_ENABLED,
+ .dstate = &_TRACE_BDRV_CO_DO_COPY_ON_READV_DSTATE
+};
+TraceEvent _TRACE_STREAM_ONE_ITERATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "stream_one_iteration",
+ .sstate = TRACE_STREAM_ONE_ITERATION_ENABLED,
+ .dstate = &_TRACE_STREAM_ONE_ITERATION_DSTATE
+};
+TraceEvent _TRACE_STREAM_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "stream_start",
+ .sstate = TRACE_STREAM_START_ENABLED,
+ .dstate = &_TRACE_STREAM_START_DSTATE
+};
+TraceEvent _TRACE_COMMIT_ONE_ITERATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "commit_one_iteration",
+ .sstate = TRACE_COMMIT_ONE_ITERATION_ENABLED,
+ .dstate = &_TRACE_COMMIT_ONE_ITERATION_DSTATE
+};
+TraceEvent _TRACE_COMMIT_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "commit_start",
+ .sstate = TRACE_COMMIT_START_ENABLED,
+ .dstate = &_TRACE_COMMIT_START_DSTATE
+};
+TraceEvent _TRACE_MIRROR_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_start",
+ .sstate = TRACE_MIRROR_START_ENABLED,
+ .dstate = &_TRACE_MIRROR_START_DSTATE
+};
+TraceEvent _TRACE_MIRROR_RESTART_ITER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_restart_iter",
+ .sstate = TRACE_MIRROR_RESTART_ITER_ENABLED,
+ .dstate = &_TRACE_MIRROR_RESTART_ITER_DSTATE
+};
+TraceEvent _TRACE_MIRROR_BEFORE_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_before_flush",
+ .sstate = TRACE_MIRROR_BEFORE_FLUSH_ENABLED,
+ .dstate = &_TRACE_MIRROR_BEFORE_FLUSH_DSTATE
+};
+TraceEvent _TRACE_MIRROR_BEFORE_DRAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_before_drain",
+ .sstate = TRACE_MIRROR_BEFORE_DRAIN_ENABLED,
+ .dstate = &_TRACE_MIRROR_BEFORE_DRAIN_DSTATE
+};
+TraceEvent _TRACE_MIRROR_BEFORE_SLEEP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_before_sleep",
+ .sstate = TRACE_MIRROR_BEFORE_SLEEP_ENABLED,
+ .dstate = &_TRACE_MIRROR_BEFORE_SLEEP_DSTATE
+};
+TraceEvent _TRACE_MIRROR_ONE_ITERATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_one_iteration",
+ .sstate = TRACE_MIRROR_ONE_ITERATION_ENABLED,
+ .dstate = &_TRACE_MIRROR_ONE_ITERATION_DSTATE
+};
+TraceEvent _TRACE_MIRROR_ITERATION_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_iteration_done",
+ .sstate = TRACE_MIRROR_ITERATION_DONE_ENABLED,
+ .dstate = &_TRACE_MIRROR_ITERATION_DONE_DSTATE
+};
+TraceEvent _TRACE_MIRROR_YIELD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_yield",
+ .sstate = TRACE_MIRROR_YIELD_ENABLED,
+ .dstate = &_TRACE_MIRROR_YIELD_DSTATE
+};
+TraceEvent _TRACE_MIRROR_YIELD_IN_FLIGHT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mirror_yield_in_flight",
+ .sstate = TRACE_MIRROR_YIELD_IN_FLIGHT_ENABLED,
+ .dstate = &_TRACE_MIRROR_YIELD_IN_FLIGHT_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_enter",
+ .sstate = TRACE_BACKUP_DO_COW_ENTER_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_ENTER_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_return",
+ .sstate = TRACE_BACKUP_DO_COW_RETURN_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_RETURN_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_skip",
+ .sstate = TRACE_BACKUP_DO_COW_SKIP_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_SKIP_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_PROCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_process",
+ .sstate = TRACE_BACKUP_DO_COW_PROCESS_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_PROCESS_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_READ_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_read_fail",
+ .sstate = TRACE_BACKUP_DO_COW_READ_FAIL_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_READ_FAIL_DSTATE
+};
+TraceEvent _TRACE_BACKUP_DO_COW_WRITE_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "backup_do_cow_write_fail",
+ .sstate = TRACE_BACKUP_DO_COW_WRITE_FAIL_ENABLED,
+ .dstate = &_TRACE_BACKUP_DO_COW_WRITE_FAIL_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_cancel",
+ .sstate = TRACE_QMP_BLOCK_JOB_CANCEL_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_CANCEL_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_PAUSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_pause",
+ .sstate = TRACE_QMP_BLOCK_JOB_PAUSE_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_PAUSE_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_RESUME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_resume",
+ .sstate = TRACE_QMP_BLOCK_JOB_RESUME_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_RESUME_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_complete",
+ .sstate = TRACE_QMP_BLOCK_JOB_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_FINALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_finalize",
+ .sstate = TRACE_QMP_BLOCK_JOB_FINALIZE_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_FINALIZE_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_JOB_DISMISS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_job_dismiss",
+ .sstate = TRACE_QMP_BLOCK_JOB_DISMISS_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_JOB_DISMISS_DSTATE
+};
+TraceEvent _TRACE_QMP_BLOCK_STREAM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qmp_block_stream",
+ .sstate = TRACE_QMP_BLOCK_STREAM_ENABLED,
+ .dstate = &_TRACE_QMP_BLOCK_STREAM_DSTATE
+};
+TraceEvent _TRACE_PAIO_SUBMIT_CO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "paio_submit_co",
+ .sstate = TRACE_PAIO_SUBMIT_CO_ENABLED,
+ .dstate = &_TRACE_PAIO_SUBMIT_CO_DSTATE
+};
+TraceEvent _TRACE_PAIO_SUBMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "paio_submit",
+ .sstate = TRACE_PAIO_SUBMIT_ENABLED,
+ .dstate = &_TRACE_PAIO_SUBMIT_DSTATE
+};
+TraceEvent _TRACE_QCOW2_WRITEV_START_REQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_writev_start_req",
+ .sstate = TRACE_QCOW2_WRITEV_START_REQ_ENABLED,
+ .dstate = &_TRACE_QCOW2_WRITEV_START_REQ_DSTATE
+};
+TraceEvent _TRACE_QCOW2_WRITEV_DONE_REQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_writev_done_req",
+ .sstate = TRACE_QCOW2_WRITEV_DONE_REQ_ENABLED,
+ .dstate = &_TRACE_QCOW2_WRITEV_DONE_REQ_DSTATE
+};
+TraceEvent _TRACE_QCOW2_WRITEV_START_PART_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_writev_start_part",
+ .sstate = TRACE_QCOW2_WRITEV_START_PART_ENABLED,
+ .dstate = &_TRACE_QCOW2_WRITEV_START_PART_DSTATE
+};
+TraceEvent _TRACE_QCOW2_WRITEV_DONE_PART_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_writev_done_part",
+ .sstate = TRACE_QCOW2_WRITEV_DONE_PART_ENABLED,
+ .dstate = &_TRACE_QCOW2_WRITEV_DONE_PART_DSTATE
+};
+TraceEvent _TRACE_QCOW2_WRITEV_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_writev_data",
+ .sstate = TRACE_QCOW2_WRITEV_DATA_ENABLED,
+ .dstate = &_TRACE_QCOW2_WRITEV_DATA_DSTATE
+};
+TraceEvent _TRACE_QCOW2_PWRITE_ZEROES_START_REQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_pwrite_zeroes_start_req",
+ .sstate = TRACE_QCOW2_PWRITE_ZEROES_START_REQ_ENABLED,
+ .dstate = &_TRACE_QCOW2_PWRITE_ZEROES_START_REQ_DSTATE
+};
+TraceEvent _TRACE_QCOW2_PWRITE_ZEROES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_pwrite_zeroes",
+ .sstate = TRACE_QCOW2_PWRITE_ZEROES_ENABLED,
+ .dstate = &_TRACE_QCOW2_PWRITE_ZEROES_DSTATE
+};
+TraceEvent _TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_alloc_clusters_offset",
+ .sstate = TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_ENABLED,
+ .dstate = &_TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_DSTATE
+};
+TraceEvent _TRACE_QCOW2_HANDLE_COPIED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_handle_copied",
+ .sstate = TRACE_QCOW2_HANDLE_COPIED_ENABLED,
+ .dstate = &_TRACE_QCOW2_HANDLE_COPIED_DSTATE
+};
+TraceEvent _TRACE_QCOW2_HANDLE_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_handle_alloc",
+ .sstate = TRACE_QCOW2_HANDLE_ALLOC_ENABLED,
+ .dstate = &_TRACE_QCOW2_HANDLE_ALLOC_DSTATE
+};
+TraceEvent _TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_do_alloc_clusters_offset",
+ .sstate = TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_ENABLED,
+ .dstate = &_TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CLUSTER_ALLOC_PHYS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cluster_alloc_phys",
+ .sstate = TRACE_QCOW2_CLUSTER_ALLOC_PHYS_ENABLED,
+ .dstate = &_TRACE_QCOW2_CLUSTER_ALLOC_PHYS_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CLUSTER_LINK_L2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cluster_link_l2",
+ .sstate = TRACE_QCOW2_CLUSTER_LINK_L2_ENABLED,
+ .dstate = &_TRACE_QCOW2_CLUSTER_LINK_L2_DSTATE
+};
+TraceEvent _TRACE_QCOW2_L2_ALLOCATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_l2_allocate",
+ .sstate = TRACE_QCOW2_L2_ALLOCATE_ENABLED,
+ .dstate = &_TRACE_QCOW2_L2_ALLOCATE_DSTATE
+};
+TraceEvent _TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_l2_allocate_get_empty",
+ .sstate = TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_ENABLED,
+ .dstate = &_TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_DSTATE
+};
+TraceEvent _TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_l2_allocate_write_l2",
+ .sstate = TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_ENABLED,
+ .dstate = &_TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_DSTATE
+};
+TraceEvent _TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_l2_allocate_write_l1",
+ .sstate = TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_ENABLED,
+ .dstate = &_TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_DSTATE
+};
+TraceEvent _TRACE_QCOW2_L2_ALLOCATE_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_l2_allocate_done",
+ .sstate = TRACE_QCOW2_L2_ALLOCATE_DONE_ENABLED,
+ .dstate = &_TRACE_QCOW2_L2_ALLOCATE_DONE_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_get",
+ .sstate = TRACE_QCOW2_CACHE_GET_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_GET_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_get_replace_entry",
+ .sstate = TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_GET_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_get_read",
+ .sstate = TRACE_QCOW2_CACHE_GET_READ_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_GET_READ_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_GET_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_get_done",
+ .sstate = TRACE_QCOW2_CACHE_GET_DONE_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_GET_DONE_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_flush",
+ .sstate = TRACE_QCOW2_CACHE_FLUSH_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_FLUSH_DSTATE
+};
+TraceEvent _TRACE_QCOW2_CACHE_ENTRY_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcow2_cache_entry_flush",
+ .sstate = TRACE_QCOW2_CACHE_ENTRY_FLUSH_ENABLED,
+ .dstate = &_TRACE_QCOW2_CACHE_ENTRY_FLUSH_DSTATE
+};
+TraceEvent _TRACE_QED_ALLOC_L2_CACHE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_alloc_l2_cache_entry",
+ .sstate = TRACE_QED_ALLOC_L2_CACHE_ENTRY_ENABLED,
+ .dstate = &_TRACE_QED_ALLOC_L2_CACHE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QED_UNREF_L2_CACHE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_unref_l2_cache_entry",
+ .sstate = TRACE_QED_UNREF_L2_CACHE_ENTRY_ENABLED,
+ .dstate = &_TRACE_QED_UNREF_L2_CACHE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QED_FIND_L2_CACHE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_find_l2_cache_entry",
+ .sstate = TRACE_QED_FIND_L2_CACHE_ENTRY_ENABLED,
+ .dstate = &_TRACE_QED_FIND_L2_CACHE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QED_READ_TABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_read_table",
+ .sstate = TRACE_QED_READ_TABLE_ENABLED,
+ .dstate = &_TRACE_QED_READ_TABLE_DSTATE
+};
+TraceEvent _TRACE_QED_READ_TABLE_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_read_table_cb",
+ .sstate = TRACE_QED_READ_TABLE_CB_ENABLED,
+ .dstate = &_TRACE_QED_READ_TABLE_CB_DSTATE
+};
+TraceEvent _TRACE_QED_WRITE_TABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_write_table",
+ .sstate = TRACE_QED_WRITE_TABLE_ENABLED,
+ .dstate = &_TRACE_QED_WRITE_TABLE_DSTATE
+};
+TraceEvent _TRACE_QED_WRITE_TABLE_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_write_table_cb",
+ .sstate = TRACE_QED_WRITE_TABLE_CB_ENABLED,
+ .dstate = &_TRACE_QED_WRITE_TABLE_CB_DSTATE
+};
+TraceEvent _TRACE_QED_NEED_CHECK_TIMER_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_need_check_timer_cb",
+ .sstate = TRACE_QED_NEED_CHECK_TIMER_CB_ENABLED,
+ .dstate = &_TRACE_QED_NEED_CHECK_TIMER_CB_DSTATE
+};
+TraceEvent _TRACE_QED_START_NEED_CHECK_TIMER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_start_need_check_timer",
+ .sstate = TRACE_QED_START_NEED_CHECK_TIMER_ENABLED,
+ .dstate = &_TRACE_QED_START_NEED_CHECK_TIMER_DSTATE
+};
+TraceEvent _TRACE_QED_CANCEL_NEED_CHECK_TIMER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_cancel_need_check_timer",
+ .sstate = TRACE_QED_CANCEL_NEED_CHECK_TIMER_ENABLED,
+ .dstate = &_TRACE_QED_CANCEL_NEED_CHECK_TIMER_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_complete",
+ .sstate = TRACE_QED_AIO_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QED_AIO_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_setup",
+ .sstate = TRACE_QED_AIO_SETUP_ENABLED,
+ .dstate = &_TRACE_QED_AIO_SETUP_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_NEXT_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_next_io",
+ .sstate = TRACE_QED_AIO_NEXT_IO_ENABLED,
+ .dstate = &_TRACE_QED_AIO_NEXT_IO_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_READ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_read_data",
+ .sstate = TRACE_QED_AIO_READ_DATA_ENABLED,
+ .dstate = &_TRACE_QED_AIO_READ_DATA_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_WRITE_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_write_data",
+ .sstate = TRACE_QED_AIO_WRITE_DATA_ENABLED,
+ .dstate = &_TRACE_QED_AIO_WRITE_DATA_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_WRITE_PREFILL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_write_prefill",
+ .sstate = TRACE_QED_AIO_WRITE_PREFILL_ENABLED,
+ .dstate = &_TRACE_QED_AIO_WRITE_PREFILL_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_WRITE_POSTFILL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_write_postfill",
+ .sstate = TRACE_QED_AIO_WRITE_POSTFILL_ENABLED,
+ .dstate = &_TRACE_QED_AIO_WRITE_POSTFILL_DSTATE
+};
+TraceEvent _TRACE_QED_AIO_WRITE_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qed_aio_write_main",
+ .sstate = TRACE_QED_AIO_WRITE_MAIN_ENABLED,
+ .dstate = &_TRACE_QED_AIO_WRITE_MAIN_DSTATE
+};
+TraceEvent _TRACE_VXHS_IIO_CALLBACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_iio_callback",
+ .sstate = TRACE_VXHS_IIO_CALLBACK_ENABLED,
+ .dstate = &_TRACE_VXHS_IIO_CALLBACK_DSTATE
+};
+TraceEvent _TRACE_VXHS_IIO_CALLBACK_CHNFAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_iio_callback_chnfail",
+ .sstate = TRACE_VXHS_IIO_CALLBACK_CHNFAIL_ENABLED,
+ .dstate = &_TRACE_VXHS_IIO_CALLBACK_CHNFAIL_DSTATE
+};
+TraceEvent _TRACE_VXHS_IIO_CALLBACK_UNKNWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_iio_callback_unknwn",
+ .sstate = TRACE_VXHS_IIO_CALLBACK_UNKNWN_ENABLED,
+ .dstate = &_TRACE_VXHS_IIO_CALLBACK_UNKNWN_DSTATE
+};
+TraceEvent _TRACE_VXHS_AIO_RW_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_aio_rw_invalid",
+ .sstate = TRACE_VXHS_AIO_RW_INVALID_ENABLED,
+ .dstate = &_TRACE_VXHS_AIO_RW_INVALID_DSTATE
+};
+TraceEvent _TRACE_VXHS_AIO_RW_IOERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_aio_rw_ioerr",
+ .sstate = TRACE_VXHS_AIO_RW_IOERR_ENABLED,
+ .dstate = &_TRACE_VXHS_AIO_RW_IOERR_DSTATE
+};
+TraceEvent _TRACE_VXHS_GET_VDISK_STAT_ERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_get_vdisk_stat_err",
+ .sstate = TRACE_VXHS_GET_VDISK_STAT_ERR_ENABLED,
+ .dstate = &_TRACE_VXHS_GET_VDISK_STAT_ERR_DSTATE
+};
+TraceEvent _TRACE_VXHS_GET_VDISK_STAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_get_vdisk_stat",
+ .sstate = TRACE_VXHS_GET_VDISK_STAT_ENABLED,
+ .dstate = &_TRACE_VXHS_GET_VDISK_STAT_DSTATE
+};
+TraceEvent _TRACE_VXHS_COMPLETE_AIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_complete_aio",
+ .sstate = TRACE_VXHS_COMPLETE_AIO_ENABLED,
+ .dstate = &_TRACE_VXHS_COMPLETE_AIO_DSTATE
+};
+TraceEvent _TRACE_VXHS_PARSE_URI_FILENAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_parse_uri_filename",
+ .sstate = TRACE_VXHS_PARSE_URI_FILENAME_ENABLED,
+ .dstate = &_TRACE_VXHS_PARSE_URI_FILENAME_DSTATE
+};
+TraceEvent _TRACE_VXHS_OPEN_VDISKID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_open_vdiskid",
+ .sstate = TRACE_VXHS_OPEN_VDISKID_ENABLED,
+ .dstate = &_TRACE_VXHS_OPEN_VDISKID_DSTATE
+};
+TraceEvent _TRACE_VXHS_OPEN_HOSTINFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_open_hostinfo",
+ .sstate = TRACE_VXHS_OPEN_HOSTINFO_ENABLED,
+ .dstate = &_TRACE_VXHS_OPEN_HOSTINFO_DSTATE
+};
+TraceEvent _TRACE_VXHS_OPEN_IIO_OPEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_open_iio_open",
+ .sstate = TRACE_VXHS_OPEN_IIO_OPEN_ENABLED,
+ .dstate = &_TRACE_VXHS_OPEN_IIO_OPEN_DSTATE
+};
+TraceEvent _TRACE_VXHS_PARSE_URI_HOSTINFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_parse_uri_hostinfo",
+ .sstate = TRACE_VXHS_PARSE_URI_HOSTINFO_ENABLED,
+ .dstate = &_TRACE_VXHS_PARSE_URI_HOSTINFO_DSTATE
+};
+TraceEvent _TRACE_VXHS_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_close",
+ .sstate = TRACE_VXHS_CLOSE_ENABLED,
+ .dstate = &_TRACE_VXHS_CLOSE_DSTATE
+};
+TraceEvent _TRACE_VXHS_GET_CREDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vxhs_get_creds",
+ .sstate = TRACE_VXHS_GET_CREDS_ENABLED,
+ .dstate = &_TRACE_VXHS_GET_CREDS_DSTATE
+};
+TraceEvent _TRACE_NVME_KICK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_kick",
+ .sstate = TRACE_NVME_KICK_ENABLED,
+ .dstate = &_TRACE_NVME_KICK_DSTATE
+};
+TraceEvent _TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_dma_flush_queue_wait",
+ .sstate = TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_ENABLED,
+ .dstate = &_TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_DSTATE
+};
+TraceEvent _TRACE_NVME_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_error",
+ .sstate = TRACE_NVME_ERROR_ENABLED,
+ .dstate = &_TRACE_NVME_ERROR_DSTATE
+};
+TraceEvent _TRACE_NVME_PROCESS_COMPLETION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_process_completion",
+ .sstate = TRACE_NVME_PROCESS_COMPLETION_ENABLED,
+ .dstate = &_TRACE_NVME_PROCESS_COMPLETION_DSTATE
+};
+TraceEvent _TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_process_completion_queue_busy",
+ .sstate = TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_ENABLED,
+ .dstate = &_TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_DSTATE
+};
+TraceEvent _TRACE_NVME_COMPLETE_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_complete_command",
+ .sstate = TRACE_NVME_COMPLETE_COMMAND_ENABLED,
+ .dstate = &_TRACE_NVME_COMPLETE_COMMAND_DSTATE
+};
+TraceEvent _TRACE_NVME_SUBMIT_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_submit_command",
+ .sstate = TRACE_NVME_SUBMIT_COMMAND_ENABLED,
+ .dstate = &_TRACE_NVME_SUBMIT_COMMAND_DSTATE
+};
+TraceEvent _TRACE_NVME_SUBMIT_COMMAND_RAW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_submit_command_raw",
+ .sstate = TRACE_NVME_SUBMIT_COMMAND_RAW_ENABLED,
+ .dstate = &_TRACE_NVME_SUBMIT_COMMAND_RAW_DSTATE
+};
+TraceEvent _TRACE_NVME_HANDLE_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_handle_event",
+ .sstate = TRACE_NVME_HANDLE_EVENT_ENABLED,
+ .dstate = &_TRACE_NVME_HANDLE_EVENT_DSTATE
+};
+TraceEvent _TRACE_NVME_POLL_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_poll_cb",
+ .sstate = TRACE_NVME_POLL_CB_ENABLED,
+ .dstate = &_TRACE_NVME_POLL_CB_DSTATE
+};
+TraceEvent _TRACE_NVME_PRW_ALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_prw_aligned",
+ .sstate = TRACE_NVME_PRW_ALIGNED_ENABLED,
+ .dstate = &_TRACE_NVME_PRW_ALIGNED_DSTATE
+};
+TraceEvent _TRACE_NVME_QIOV_UNALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_qiov_unaligned",
+ .sstate = TRACE_NVME_QIOV_UNALIGNED_ENABLED,
+ .dstate = &_TRACE_NVME_QIOV_UNALIGNED_DSTATE
+};
+TraceEvent _TRACE_NVME_PRW_BUFFERED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_prw_buffered",
+ .sstate = TRACE_NVME_PRW_BUFFERED_ENABLED,
+ .dstate = &_TRACE_NVME_PRW_BUFFERED_DSTATE
+};
+TraceEvent _TRACE_NVME_RW_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_rw_done",
+ .sstate = TRACE_NVME_RW_DONE_ENABLED,
+ .dstate = &_TRACE_NVME_RW_DONE_DSTATE
+};
+TraceEvent _TRACE_NVME_DMA_MAP_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_dma_map_flush",
+ .sstate = TRACE_NVME_DMA_MAP_FLUSH_ENABLED,
+ .dstate = &_TRACE_NVME_DMA_MAP_FLUSH_DSTATE
+};
+TraceEvent _TRACE_NVME_FREE_REQ_QUEUE_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_free_req_queue_wait",
+ .sstate = TRACE_NVME_FREE_REQ_QUEUE_WAIT_ENABLED,
+ .dstate = &_TRACE_NVME_FREE_REQ_QUEUE_WAIT_DSTATE
+};
+TraceEvent _TRACE_NVME_CMD_MAP_QIOV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_cmd_map_qiov",
+ .sstate = TRACE_NVME_CMD_MAP_QIOV_ENABLED,
+ .dstate = &_TRACE_NVME_CMD_MAP_QIOV_DSTATE
+};
+TraceEvent _TRACE_NVME_CMD_MAP_QIOV_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_cmd_map_qiov_pages",
+ .sstate = TRACE_NVME_CMD_MAP_QIOV_PAGES_ENABLED,
+ .dstate = &_TRACE_NVME_CMD_MAP_QIOV_PAGES_DSTATE
+};
+TraceEvent _TRACE_NVME_CMD_MAP_QIOV_IOV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_cmd_map_qiov_iov",
+ .sstate = TRACE_NVME_CMD_MAP_QIOV_IOV_ENABLED,
+ .dstate = &_TRACE_NVME_CMD_MAP_QIOV_IOV_DSTATE
+};
+TraceEvent *block_trace_events[] = {
+ &_TRACE_BDRV_OPEN_COMMON_EVENT,
+ &_TRACE_BDRV_LOCK_MEDIUM_EVENT,
+ &_TRACE_BLOCK_JOB_COMPLETED_EVENT,
+ &_TRACE_BLOCK_JOB_STATE_TRANSITION_EVENT,
+ &_TRACE_BLOCK_JOB_APPLY_VERB_EVENT,
+ &_TRACE_BLK_CO_PREADV_EVENT,
+ &_TRACE_BLK_CO_PWRITEV_EVENT,
+ &_TRACE_BLK_ROOT_ATTACH_EVENT,
+ &_TRACE_BLK_ROOT_DETACH_EVENT,
+ &_TRACE_BDRV_CO_PREADV_EVENT,
+ &_TRACE_BDRV_CO_PWRITEV_EVENT,
+ &_TRACE_BDRV_CO_PWRITE_ZEROES_EVENT,
+ &_TRACE_BDRV_CO_DO_COPY_ON_READV_EVENT,
+ &_TRACE_STREAM_ONE_ITERATION_EVENT,
+ &_TRACE_STREAM_START_EVENT,
+ &_TRACE_COMMIT_ONE_ITERATION_EVENT,
+ &_TRACE_COMMIT_START_EVENT,
+ &_TRACE_MIRROR_START_EVENT,
+ &_TRACE_MIRROR_RESTART_ITER_EVENT,
+ &_TRACE_MIRROR_BEFORE_FLUSH_EVENT,
+ &_TRACE_MIRROR_BEFORE_DRAIN_EVENT,
+ &_TRACE_MIRROR_BEFORE_SLEEP_EVENT,
+ &_TRACE_MIRROR_ONE_ITERATION_EVENT,
+ &_TRACE_MIRROR_ITERATION_DONE_EVENT,
+ &_TRACE_MIRROR_YIELD_EVENT,
+ &_TRACE_MIRROR_YIELD_IN_FLIGHT_EVENT,
+ &_TRACE_BACKUP_DO_COW_ENTER_EVENT,
+ &_TRACE_BACKUP_DO_COW_RETURN_EVENT,
+ &_TRACE_BACKUP_DO_COW_SKIP_EVENT,
+ &_TRACE_BACKUP_DO_COW_PROCESS_EVENT,
+ &_TRACE_BACKUP_DO_COW_READ_FAIL_EVENT,
+ &_TRACE_BACKUP_DO_COW_WRITE_FAIL_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_CANCEL_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_PAUSE_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_RESUME_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_COMPLETE_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_FINALIZE_EVENT,
+ &_TRACE_QMP_BLOCK_JOB_DISMISS_EVENT,
+ &_TRACE_QMP_BLOCK_STREAM_EVENT,
+ &_TRACE_PAIO_SUBMIT_CO_EVENT,
+ &_TRACE_PAIO_SUBMIT_EVENT,
+ &_TRACE_QCOW2_WRITEV_START_REQ_EVENT,
+ &_TRACE_QCOW2_WRITEV_DONE_REQ_EVENT,
+ &_TRACE_QCOW2_WRITEV_START_PART_EVENT,
+ &_TRACE_QCOW2_WRITEV_DONE_PART_EVENT,
+ &_TRACE_QCOW2_WRITEV_DATA_EVENT,
+ &_TRACE_QCOW2_PWRITE_ZEROES_START_REQ_EVENT,
+ &_TRACE_QCOW2_PWRITE_ZEROES_EVENT,
+ &_TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_EVENT,
+ &_TRACE_QCOW2_HANDLE_COPIED_EVENT,
+ &_TRACE_QCOW2_HANDLE_ALLOC_EVENT,
+ &_TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_EVENT,
+ &_TRACE_QCOW2_CLUSTER_ALLOC_PHYS_EVENT,
+ &_TRACE_QCOW2_CLUSTER_LINK_L2_EVENT,
+ &_TRACE_QCOW2_L2_ALLOCATE_EVENT,
+ &_TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_EVENT,
+ &_TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_EVENT,
+ &_TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_EVENT,
+ &_TRACE_QCOW2_L2_ALLOCATE_DONE_EVENT,
+ &_TRACE_QCOW2_CACHE_GET_EVENT,
+ &_TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_EVENT,
+ &_TRACE_QCOW2_CACHE_GET_READ_EVENT,
+ &_TRACE_QCOW2_CACHE_GET_DONE_EVENT,
+ &_TRACE_QCOW2_CACHE_FLUSH_EVENT,
+ &_TRACE_QCOW2_CACHE_ENTRY_FLUSH_EVENT,
+ &_TRACE_QED_ALLOC_L2_CACHE_ENTRY_EVENT,
+ &_TRACE_QED_UNREF_L2_CACHE_ENTRY_EVENT,
+ &_TRACE_QED_FIND_L2_CACHE_ENTRY_EVENT,
+ &_TRACE_QED_READ_TABLE_EVENT,
+ &_TRACE_QED_READ_TABLE_CB_EVENT,
+ &_TRACE_QED_WRITE_TABLE_EVENT,
+ &_TRACE_QED_WRITE_TABLE_CB_EVENT,
+ &_TRACE_QED_NEED_CHECK_TIMER_CB_EVENT,
+ &_TRACE_QED_START_NEED_CHECK_TIMER_EVENT,
+ &_TRACE_QED_CANCEL_NEED_CHECK_TIMER_EVENT,
+ &_TRACE_QED_AIO_COMPLETE_EVENT,
+ &_TRACE_QED_AIO_SETUP_EVENT,
+ &_TRACE_QED_AIO_NEXT_IO_EVENT,
+ &_TRACE_QED_AIO_READ_DATA_EVENT,
+ &_TRACE_QED_AIO_WRITE_DATA_EVENT,
+ &_TRACE_QED_AIO_WRITE_PREFILL_EVENT,
+ &_TRACE_QED_AIO_WRITE_POSTFILL_EVENT,
+ &_TRACE_QED_AIO_WRITE_MAIN_EVENT,
+ &_TRACE_VXHS_IIO_CALLBACK_EVENT,
+ &_TRACE_VXHS_IIO_CALLBACK_CHNFAIL_EVENT,
+ &_TRACE_VXHS_IIO_CALLBACK_UNKNWN_EVENT,
+ &_TRACE_VXHS_AIO_RW_INVALID_EVENT,
+ &_TRACE_VXHS_AIO_RW_IOERR_EVENT,
+ &_TRACE_VXHS_GET_VDISK_STAT_ERR_EVENT,
+ &_TRACE_VXHS_GET_VDISK_STAT_EVENT,
+ &_TRACE_VXHS_COMPLETE_AIO_EVENT,
+ &_TRACE_VXHS_PARSE_URI_FILENAME_EVENT,
+ &_TRACE_VXHS_OPEN_VDISKID_EVENT,
+ &_TRACE_VXHS_OPEN_HOSTINFO_EVENT,
+ &_TRACE_VXHS_OPEN_IIO_OPEN_EVENT,
+ &_TRACE_VXHS_PARSE_URI_HOSTINFO_EVENT,
+ &_TRACE_VXHS_CLOSE_EVENT,
+ &_TRACE_VXHS_GET_CREDS_EVENT,
+ &_TRACE_NVME_KICK_EVENT,
+ &_TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_EVENT,
+ &_TRACE_NVME_ERROR_EVENT,
+ &_TRACE_NVME_PROCESS_COMPLETION_EVENT,
+ &_TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_EVENT,
+ &_TRACE_NVME_COMPLETE_COMMAND_EVENT,
+ &_TRACE_NVME_SUBMIT_COMMAND_EVENT,
+ &_TRACE_NVME_SUBMIT_COMMAND_RAW_EVENT,
+ &_TRACE_NVME_HANDLE_EVENT_EVENT,
+ &_TRACE_NVME_POLL_CB_EVENT,
+ &_TRACE_NVME_PRW_ALIGNED_EVENT,
+ &_TRACE_NVME_QIOV_UNALIGNED_EVENT,
+ &_TRACE_NVME_PRW_BUFFERED_EVENT,
+ &_TRACE_NVME_RW_DONE_EVENT,
+ &_TRACE_NVME_DMA_MAP_FLUSH_EVENT,
+ &_TRACE_NVME_FREE_REQ_QUEUE_WAIT_EVENT,
+ &_TRACE_NVME_CMD_MAP_QIOV_EVENT,
+ &_TRACE_NVME_CMD_MAP_QIOV_PAGES_EVENT,
+ &_TRACE_NVME_CMD_MAP_QIOV_IOV_EVENT,
+ NULL,
+};
+
+static void trace_block_register_events(void)
+{
+ trace_event_register_group(block_trace_events);
+}
+trace_init(trace_block_register_events)
diff --git a/qemu2-auto-generated/block/trace.h b/qemu2-auto-generated/block/trace.h
new file mode 100644
index 0000000000..946d1d708a
--- /dev/null
+++ b/qemu2-auto-generated/block/trace.h
@@ -0,0 +1,1998 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_BLOCK_GENERATED_TRACERS_H
+#define TRACE_BLOCK_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_BDRV_OPEN_COMMON_EVENT;
+extern TraceEvent _TRACE_BDRV_LOCK_MEDIUM_EVENT;
+extern TraceEvent _TRACE_BLOCK_JOB_COMPLETED_EVENT;
+extern TraceEvent _TRACE_BLOCK_JOB_STATE_TRANSITION_EVENT;
+extern TraceEvent _TRACE_BLOCK_JOB_APPLY_VERB_EVENT;
+extern TraceEvent _TRACE_BLK_CO_PREADV_EVENT;
+extern TraceEvent _TRACE_BLK_CO_PWRITEV_EVENT;
+extern TraceEvent _TRACE_BLK_ROOT_ATTACH_EVENT;
+extern TraceEvent _TRACE_BLK_ROOT_DETACH_EVENT;
+extern TraceEvent _TRACE_BDRV_CO_PREADV_EVENT;
+extern TraceEvent _TRACE_BDRV_CO_PWRITEV_EVENT;
+extern TraceEvent _TRACE_BDRV_CO_PWRITE_ZEROES_EVENT;
+extern TraceEvent _TRACE_BDRV_CO_DO_COPY_ON_READV_EVENT;
+extern TraceEvent _TRACE_STREAM_ONE_ITERATION_EVENT;
+extern TraceEvent _TRACE_STREAM_START_EVENT;
+extern TraceEvent _TRACE_COMMIT_ONE_ITERATION_EVENT;
+extern TraceEvent _TRACE_COMMIT_START_EVENT;
+extern TraceEvent _TRACE_MIRROR_START_EVENT;
+extern TraceEvent _TRACE_MIRROR_RESTART_ITER_EVENT;
+extern TraceEvent _TRACE_MIRROR_BEFORE_FLUSH_EVENT;
+extern TraceEvent _TRACE_MIRROR_BEFORE_DRAIN_EVENT;
+extern TraceEvent _TRACE_MIRROR_BEFORE_SLEEP_EVENT;
+extern TraceEvent _TRACE_MIRROR_ONE_ITERATION_EVENT;
+extern TraceEvent _TRACE_MIRROR_ITERATION_DONE_EVENT;
+extern TraceEvent _TRACE_MIRROR_YIELD_EVENT;
+extern TraceEvent _TRACE_MIRROR_YIELD_IN_FLIGHT_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_ENTER_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_RETURN_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_SKIP_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_PROCESS_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_READ_FAIL_EVENT;
+extern TraceEvent _TRACE_BACKUP_DO_COW_WRITE_FAIL_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_CANCEL_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_PAUSE_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_RESUME_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_FINALIZE_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_JOB_DISMISS_EVENT;
+extern TraceEvent _TRACE_QMP_BLOCK_STREAM_EVENT;
+extern TraceEvent _TRACE_PAIO_SUBMIT_CO_EVENT;
+extern TraceEvent _TRACE_PAIO_SUBMIT_EVENT;
+extern TraceEvent _TRACE_QCOW2_WRITEV_START_REQ_EVENT;
+extern TraceEvent _TRACE_QCOW2_WRITEV_DONE_REQ_EVENT;
+extern TraceEvent _TRACE_QCOW2_WRITEV_START_PART_EVENT;
+extern TraceEvent _TRACE_QCOW2_WRITEV_DONE_PART_EVENT;
+extern TraceEvent _TRACE_QCOW2_WRITEV_DATA_EVENT;
+extern TraceEvent _TRACE_QCOW2_PWRITE_ZEROES_START_REQ_EVENT;
+extern TraceEvent _TRACE_QCOW2_PWRITE_ZEROES_EVENT;
+extern TraceEvent _TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_EVENT;
+extern TraceEvent _TRACE_QCOW2_HANDLE_COPIED_EVENT;
+extern TraceEvent _TRACE_QCOW2_HANDLE_ALLOC_EVENT;
+extern TraceEvent _TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_EVENT;
+extern TraceEvent _TRACE_QCOW2_CLUSTER_ALLOC_PHYS_EVENT;
+extern TraceEvent _TRACE_QCOW2_CLUSTER_LINK_L2_EVENT;
+extern TraceEvent _TRACE_QCOW2_L2_ALLOCATE_EVENT;
+extern TraceEvent _TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_EVENT;
+extern TraceEvent _TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_EVENT;
+extern TraceEvent _TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_EVENT;
+extern TraceEvent _TRACE_QCOW2_L2_ALLOCATE_DONE_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_GET_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_GET_READ_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_GET_DONE_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_FLUSH_EVENT;
+extern TraceEvent _TRACE_QCOW2_CACHE_ENTRY_FLUSH_EVENT;
+extern TraceEvent _TRACE_QED_ALLOC_L2_CACHE_ENTRY_EVENT;
+extern TraceEvent _TRACE_QED_UNREF_L2_CACHE_ENTRY_EVENT;
+extern TraceEvent _TRACE_QED_FIND_L2_CACHE_ENTRY_EVENT;
+extern TraceEvent _TRACE_QED_READ_TABLE_EVENT;
+extern TraceEvent _TRACE_QED_READ_TABLE_CB_EVENT;
+extern TraceEvent _TRACE_QED_WRITE_TABLE_EVENT;
+extern TraceEvent _TRACE_QED_WRITE_TABLE_CB_EVENT;
+extern TraceEvent _TRACE_QED_NEED_CHECK_TIMER_CB_EVENT;
+extern TraceEvent _TRACE_QED_START_NEED_CHECK_TIMER_EVENT;
+extern TraceEvent _TRACE_QED_CANCEL_NEED_CHECK_TIMER_EVENT;
+extern TraceEvent _TRACE_QED_AIO_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QED_AIO_SETUP_EVENT;
+extern TraceEvent _TRACE_QED_AIO_NEXT_IO_EVENT;
+extern TraceEvent _TRACE_QED_AIO_READ_DATA_EVENT;
+extern TraceEvent _TRACE_QED_AIO_WRITE_DATA_EVENT;
+extern TraceEvent _TRACE_QED_AIO_WRITE_PREFILL_EVENT;
+extern TraceEvent _TRACE_QED_AIO_WRITE_POSTFILL_EVENT;
+extern TraceEvent _TRACE_QED_AIO_WRITE_MAIN_EVENT;
+extern TraceEvent _TRACE_VXHS_IIO_CALLBACK_EVENT;
+extern TraceEvent _TRACE_VXHS_IIO_CALLBACK_CHNFAIL_EVENT;
+extern TraceEvent _TRACE_VXHS_IIO_CALLBACK_UNKNWN_EVENT;
+extern TraceEvent _TRACE_VXHS_AIO_RW_INVALID_EVENT;
+extern TraceEvent _TRACE_VXHS_AIO_RW_IOERR_EVENT;
+extern TraceEvent _TRACE_VXHS_GET_VDISK_STAT_ERR_EVENT;
+extern TraceEvent _TRACE_VXHS_GET_VDISK_STAT_EVENT;
+extern TraceEvent _TRACE_VXHS_COMPLETE_AIO_EVENT;
+extern TraceEvent _TRACE_VXHS_PARSE_URI_FILENAME_EVENT;
+extern TraceEvent _TRACE_VXHS_OPEN_VDISKID_EVENT;
+extern TraceEvent _TRACE_VXHS_OPEN_HOSTINFO_EVENT;
+extern TraceEvent _TRACE_VXHS_OPEN_IIO_OPEN_EVENT;
+extern TraceEvent _TRACE_VXHS_PARSE_URI_HOSTINFO_EVENT;
+extern TraceEvent _TRACE_VXHS_CLOSE_EVENT;
+extern TraceEvent _TRACE_VXHS_GET_CREDS_EVENT;
+extern TraceEvent _TRACE_NVME_KICK_EVENT;
+extern TraceEvent _TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_EVENT;
+extern TraceEvent _TRACE_NVME_ERROR_EVENT;
+extern TraceEvent _TRACE_NVME_PROCESS_COMPLETION_EVENT;
+extern TraceEvent _TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_EVENT;
+extern TraceEvent _TRACE_NVME_COMPLETE_COMMAND_EVENT;
+extern TraceEvent _TRACE_NVME_SUBMIT_COMMAND_EVENT;
+extern TraceEvent _TRACE_NVME_SUBMIT_COMMAND_RAW_EVENT;
+extern TraceEvent _TRACE_NVME_HANDLE_EVENT_EVENT;
+extern TraceEvent _TRACE_NVME_POLL_CB_EVENT;
+extern TraceEvent _TRACE_NVME_PRW_ALIGNED_EVENT;
+extern TraceEvent _TRACE_NVME_QIOV_UNALIGNED_EVENT;
+extern TraceEvent _TRACE_NVME_PRW_BUFFERED_EVENT;
+extern TraceEvent _TRACE_NVME_RW_DONE_EVENT;
+extern TraceEvent _TRACE_NVME_DMA_MAP_FLUSH_EVENT;
+extern TraceEvent _TRACE_NVME_FREE_REQ_QUEUE_WAIT_EVENT;
+extern TraceEvent _TRACE_NVME_CMD_MAP_QIOV_EVENT;
+extern TraceEvent _TRACE_NVME_CMD_MAP_QIOV_PAGES_EVENT;
+extern TraceEvent _TRACE_NVME_CMD_MAP_QIOV_IOV_EVENT;
+extern uint16_t _TRACE_BDRV_OPEN_COMMON_DSTATE;
+extern uint16_t _TRACE_BDRV_LOCK_MEDIUM_DSTATE;
+extern uint16_t _TRACE_BLOCK_JOB_COMPLETED_DSTATE;
+extern uint16_t _TRACE_BLOCK_JOB_STATE_TRANSITION_DSTATE;
+extern uint16_t _TRACE_BLOCK_JOB_APPLY_VERB_DSTATE;
+extern uint16_t _TRACE_BLK_CO_PREADV_DSTATE;
+extern uint16_t _TRACE_BLK_CO_PWRITEV_DSTATE;
+extern uint16_t _TRACE_BLK_ROOT_ATTACH_DSTATE;
+extern uint16_t _TRACE_BLK_ROOT_DETACH_DSTATE;
+extern uint16_t _TRACE_BDRV_CO_PREADV_DSTATE;
+extern uint16_t _TRACE_BDRV_CO_PWRITEV_DSTATE;
+extern uint16_t _TRACE_BDRV_CO_PWRITE_ZEROES_DSTATE;
+extern uint16_t _TRACE_BDRV_CO_DO_COPY_ON_READV_DSTATE;
+extern uint16_t _TRACE_STREAM_ONE_ITERATION_DSTATE;
+extern uint16_t _TRACE_STREAM_START_DSTATE;
+extern uint16_t _TRACE_COMMIT_ONE_ITERATION_DSTATE;
+extern uint16_t _TRACE_COMMIT_START_DSTATE;
+extern uint16_t _TRACE_MIRROR_START_DSTATE;
+extern uint16_t _TRACE_MIRROR_RESTART_ITER_DSTATE;
+extern uint16_t _TRACE_MIRROR_BEFORE_FLUSH_DSTATE;
+extern uint16_t _TRACE_MIRROR_BEFORE_DRAIN_DSTATE;
+extern uint16_t _TRACE_MIRROR_BEFORE_SLEEP_DSTATE;
+extern uint16_t _TRACE_MIRROR_ONE_ITERATION_DSTATE;
+extern uint16_t _TRACE_MIRROR_ITERATION_DONE_DSTATE;
+extern uint16_t _TRACE_MIRROR_YIELD_DSTATE;
+extern uint16_t _TRACE_MIRROR_YIELD_IN_FLIGHT_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_ENTER_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_RETURN_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_SKIP_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_PROCESS_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_READ_FAIL_DSTATE;
+extern uint16_t _TRACE_BACKUP_DO_COW_WRITE_FAIL_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_CANCEL_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_PAUSE_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_RESUME_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_FINALIZE_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_JOB_DISMISS_DSTATE;
+extern uint16_t _TRACE_QMP_BLOCK_STREAM_DSTATE;
+extern uint16_t _TRACE_PAIO_SUBMIT_CO_DSTATE;
+extern uint16_t _TRACE_PAIO_SUBMIT_DSTATE;
+extern uint16_t _TRACE_QCOW2_WRITEV_START_REQ_DSTATE;
+extern uint16_t _TRACE_QCOW2_WRITEV_DONE_REQ_DSTATE;
+extern uint16_t _TRACE_QCOW2_WRITEV_START_PART_DSTATE;
+extern uint16_t _TRACE_QCOW2_WRITEV_DONE_PART_DSTATE;
+extern uint16_t _TRACE_QCOW2_WRITEV_DATA_DSTATE;
+extern uint16_t _TRACE_QCOW2_PWRITE_ZEROES_START_REQ_DSTATE;
+extern uint16_t _TRACE_QCOW2_PWRITE_ZEROES_DSTATE;
+extern uint16_t _TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_DSTATE;
+extern uint16_t _TRACE_QCOW2_HANDLE_COPIED_DSTATE;
+extern uint16_t _TRACE_QCOW2_HANDLE_ALLOC_DSTATE;
+extern uint16_t _TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_DSTATE;
+extern uint16_t _TRACE_QCOW2_CLUSTER_ALLOC_PHYS_DSTATE;
+extern uint16_t _TRACE_QCOW2_CLUSTER_LINK_L2_DSTATE;
+extern uint16_t _TRACE_QCOW2_L2_ALLOCATE_DSTATE;
+extern uint16_t _TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_DSTATE;
+extern uint16_t _TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_DSTATE;
+extern uint16_t _TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_DSTATE;
+extern uint16_t _TRACE_QCOW2_L2_ALLOCATE_DONE_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_GET_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_GET_READ_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_GET_DONE_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_FLUSH_DSTATE;
+extern uint16_t _TRACE_QCOW2_CACHE_ENTRY_FLUSH_DSTATE;
+extern uint16_t _TRACE_QED_ALLOC_L2_CACHE_ENTRY_DSTATE;
+extern uint16_t _TRACE_QED_UNREF_L2_CACHE_ENTRY_DSTATE;
+extern uint16_t _TRACE_QED_FIND_L2_CACHE_ENTRY_DSTATE;
+extern uint16_t _TRACE_QED_READ_TABLE_DSTATE;
+extern uint16_t _TRACE_QED_READ_TABLE_CB_DSTATE;
+extern uint16_t _TRACE_QED_WRITE_TABLE_DSTATE;
+extern uint16_t _TRACE_QED_WRITE_TABLE_CB_DSTATE;
+extern uint16_t _TRACE_QED_NEED_CHECK_TIMER_CB_DSTATE;
+extern uint16_t _TRACE_QED_START_NEED_CHECK_TIMER_DSTATE;
+extern uint16_t _TRACE_QED_CANCEL_NEED_CHECK_TIMER_DSTATE;
+extern uint16_t _TRACE_QED_AIO_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QED_AIO_SETUP_DSTATE;
+extern uint16_t _TRACE_QED_AIO_NEXT_IO_DSTATE;
+extern uint16_t _TRACE_QED_AIO_READ_DATA_DSTATE;
+extern uint16_t _TRACE_QED_AIO_WRITE_DATA_DSTATE;
+extern uint16_t _TRACE_QED_AIO_WRITE_PREFILL_DSTATE;
+extern uint16_t _TRACE_QED_AIO_WRITE_POSTFILL_DSTATE;
+extern uint16_t _TRACE_QED_AIO_WRITE_MAIN_DSTATE;
+extern uint16_t _TRACE_VXHS_IIO_CALLBACK_DSTATE;
+extern uint16_t _TRACE_VXHS_IIO_CALLBACK_CHNFAIL_DSTATE;
+extern uint16_t _TRACE_VXHS_IIO_CALLBACK_UNKNWN_DSTATE;
+extern uint16_t _TRACE_VXHS_AIO_RW_INVALID_DSTATE;
+extern uint16_t _TRACE_VXHS_AIO_RW_IOERR_DSTATE;
+extern uint16_t _TRACE_VXHS_GET_VDISK_STAT_ERR_DSTATE;
+extern uint16_t _TRACE_VXHS_GET_VDISK_STAT_DSTATE;
+extern uint16_t _TRACE_VXHS_COMPLETE_AIO_DSTATE;
+extern uint16_t _TRACE_VXHS_PARSE_URI_FILENAME_DSTATE;
+extern uint16_t _TRACE_VXHS_OPEN_VDISKID_DSTATE;
+extern uint16_t _TRACE_VXHS_OPEN_HOSTINFO_DSTATE;
+extern uint16_t _TRACE_VXHS_OPEN_IIO_OPEN_DSTATE;
+extern uint16_t _TRACE_VXHS_PARSE_URI_HOSTINFO_DSTATE;
+extern uint16_t _TRACE_VXHS_CLOSE_DSTATE;
+extern uint16_t _TRACE_VXHS_GET_CREDS_DSTATE;
+extern uint16_t _TRACE_NVME_KICK_DSTATE;
+extern uint16_t _TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_DSTATE;
+extern uint16_t _TRACE_NVME_ERROR_DSTATE;
+extern uint16_t _TRACE_NVME_PROCESS_COMPLETION_DSTATE;
+extern uint16_t _TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_DSTATE;
+extern uint16_t _TRACE_NVME_COMPLETE_COMMAND_DSTATE;
+extern uint16_t _TRACE_NVME_SUBMIT_COMMAND_DSTATE;
+extern uint16_t _TRACE_NVME_SUBMIT_COMMAND_RAW_DSTATE;
+extern uint16_t _TRACE_NVME_HANDLE_EVENT_DSTATE;
+extern uint16_t _TRACE_NVME_POLL_CB_DSTATE;
+extern uint16_t _TRACE_NVME_PRW_ALIGNED_DSTATE;
+extern uint16_t _TRACE_NVME_QIOV_UNALIGNED_DSTATE;
+extern uint16_t _TRACE_NVME_PRW_BUFFERED_DSTATE;
+extern uint16_t _TRACE_NVME_RW_DONE_DSTATE;
+extern uint16_t _TRACE_NVME_DMA_MAP_FLUSH_DSTATE;
+extern uint16_t _TRACE_NVME_FREE_REQ_QUEUE_WAIT_DSTATE;
+extern uint16_t _TRACE_NVME_CMD_MAP_QIOV_DSTATE;
+extern uint16_t _TRACE_NVME_CMD_MAP_QIOV_PAGES_DSTATE;
+extern uint16_t _TRACE_NVME_CMD_MAP_QIOV_IOV_DSTATE;
+#define TRACE_BDRV_OPEN_COMMON_ENABLED 1
+#define TRACE_BDRV_LOCK_MEDIUM_ENABLED 1
+#define TRACE_BLOCK_JOB_COMPLETED_ENABLED 1
+#define TRACE_BLOCK_JOB_STATE_TRANSITION_ENABLED 1
+#define TRACE_BLOCK_JOB_APPLY_VERB_ENABLED 1
+#define TRACE_BLK_CO_PREADV_ENABLED 1
+#define TRACE_BLK_CO_PWRITEV_ENABLED 1
+#define TRACE_BLK_ROOT_ATTACH_ENABLED 1
+#define TRACE_BLK_ROOT_DETACH_ENABLED 1
+#define TRACE_BDRV_CO_PREADV_ENABLED 1
+#define TRACE_BDRV_CO_PWRITEV_ENABLED 1
+#define TRACE_BDRV_CO_PWRITE_ZEROES_ENABLED 1
+#define TRACE_BDRV_CO_DO_COPY_ON_READV_ENABLED 1
+#define TRACE_STREAM_ONE_ITERATION_ENABLED 1
+#define TRACE_STREAM_START_ENABLED 1
+#define TRACE_COMMIT_ONE_ITERATION_ENABLED 1
+#define TRACE_COMMIT_START_ENABLED 1
+#define TRACE_MIRROR_START_ENABLED 1
+#define TRACE_MIRROR_RESTART_ITER_ENABLED 1
+#define TRACE_MIRROR_BEFORE_FLUSH_ENABLED 1
+#define TRACE_MIRROR_BEFORE_DRAIN_ENABLED 1
+#define TRACE_MIRROR_BEFORE_SLEEP_ENABLED 1
+#define TRACE_MIRROR_ONE_ITERATION_ENABLED 1
+#define TRACE_MIRROR_ITERATION_DONE_ENABLED 1
+#define TRACE_MIRROR_YIELD_ENABLED 1
+#define TRACE_MIRROR_YIELD_IN_FLIGHT_ENABLED 1
+#define TRACE_BACKUP_DO_COW_ENTER_ENABLED 1
+#define TRACE_BACKUP_DO_COW_RETURN_ENABLED 1
+#define TRACE_BACKUP_DO_COW_SKIP_ENABLED 1
+#define TRACE_BACKUP_DO_COW_PROCESS_ENABLED 1
+#define TRACE_BACKUP_DO_COW_READ_FAIL_ENABLED 1
+#define TRACE_BACKUP_DO_COW_WRITE_FAIL_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_CANCEL_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_PAUSE_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_RESUME_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_COMPLETE_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_FINALIZE_ENABLED 1
+#define TRACE_QMP_BLOCK_JOB_DISMISS_ENABLED 1
+#define TRACE_QMP_BLOCK_STREAM_ENABLED 1
+#define TRACE_PAIO_SUBMIT_CO_ENABLED 1
+#define TRACE_PAIO_SUBMIT_ENABLED 1
+#define TRACE_QCOW2_WRITEV_START_REQ_ENABLED 1
+#define TRACE_QCOW2_WRITEV_DONE_REQ_ENABLED 1
+#define TRACE_QCOW2_WRITEV_START_PART_ENABLED 1
+#define TRACE_QCOW2_WRITEV_DONE_PART_ENABLED 1
+#define TRACE_QCOW2_WRITEV_DATA_ENABLED 1
+#define TRACE_QCOW2_PWRITE_ZEROES_START_REQ_ENABLED 1
+#define TRACE_QCOW2_PWRITE_ZEROES_ENABLED 1
+#define TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_ENABLED 1
+#define TRACE_QCOW2_HANDLE_COPIED_ENABLED 1
+#define TRACE_QCOW2_HANDLE_ALLOC_ENABLED 1
+#define TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_ENABLED 1
+#define TRACE_QCOW2_CLUSTER_ALLOC_PHYS_ENABLED 1
+#define TRACE_QCOW2_CLUSTER_LINK_L2_ENABLED 1
+#define TRACE_QCOW2_L2_ALLOCATE_ENABLED 1
+#define TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_ENABLED 1
+#define TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_ENABLED 1
+#define TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_ENABLED 1
+#define TRACE_QCOW2_L2_ALLOCATE_DONE_ENABLED 1
+#define TRACE_QCOW2_CACHE_GET_ENABLED 1
+#define TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_ENABLED 1
+#define TRACE_QCOW2_CACHE_GET_READ_ENABLED 1
+#define TRACE_QCOW2_CACHE_GET_DONE_ENABLED 1
+#define TRACE_QCOW2_CACHE_FLUSH_ENABLED 1
+#define TRACE_QCOW2_CACHE_ENTRY_FLUSH_ENABLED 1
+#define TRACE_QED_ALLOC_L2_CACHE_ENTRY_ENABLED 1
+#define TRACE_QED_UNREF_L2_CACHE_ENTRY_ENABLED 1
+#define TRACE_QED_FIND_L2_CACHE_ENTRY_ENABLED 1
+#define TRACE_QED_READ_TABLE_ENABLED 1
+#define TRACE_QED_READ_TABLE_CB_ENABLED 1
+#define TRACE_QED_WRITE_TABLE_ENABLED 1
+#define TRACE_QED_WRITE_TABLE_CB_ENABLED 1
+#define TRACE_QED_NEED_CHECK_TIMER_CB_ENABLED 1
+#define TRACE_QED_START_NEED_CHECK_TIMER_ENABLED 1
+#define TRACE_QED_CANCEL_NEED_CHECK_TIMER_ENABLED 1
+#define TRACE_QED_AIO_COMPLETE_ENABLED 1
+#define TRACE_QED_AIO_SETUP_ENABLED 1
+#define TRACE_QED_AIO_NEXT_IO_ENABLED 1
+#define TRACE_QED_AIO_READ_DATA_ENABLED 1
+#define TRACE_QED_AIO_WRITE_DATA_ENABLED 1
+#define TRACE_QED_AIO_WRITE_PREFILL_ENABLED 1
+#define TRACE_QED_AIO_WRITE_POSTFILL_ENABLED 1
+#define TRACE_QED_AIO_WRITE_MAIN_ENABLED 1
+#define TRACE_VXHS_IIO_CALLBACK_ENABLED 1
+#define TRACE_VXHS_IIO_CALLBACK_CHNFAIL_ENABLED 1
+#define TRACE_VXHS_IIO_CALLBACK_UNKNWN_ENABLED 1
+#define TRACE_VXHS_AIO_RW_INVALID_ENABLED 1
+#define TRACE_VXHS_AIO_RW_IOERR_ENABLED 1
+#define TRACE_VXHS_GET_VDISK_STAT_ERR_ENABLED 1
+#define TRACE_VXHS_GET_VDISK_STAT_ENABLED 1
+#define TRACE_VXHS_COMPLETE_AIO_ENABLED 1
+#define TRACE_VXHS_PARSE_URI_FILENAME_ENABLED 1
+#define TRACE_VXHS_OPEN_VDISKID_ENABLED 1
+#define TRACE_VXHS_OPEN_HOSTINFO_ENABLED 1
+#define TRACE_VXHS_OPEN_IIO_OPEN_ENABLED 1
+#define TRACE_VXHS_PARSE_URI_HOSTINFO_ENABLED 1
+#define TRACE_VXHS_CLOSE_ENABLED 1
+#define TRACE_VXHS_GET_CREDS_ENABLED 1
+#define TRACE_NVME_KICK_ENABLED 1
+#define TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_ENABLED 1
+#define TRACE_NVME_ERROR_ENABLED 1
+#define TRACE_NVME_PROCESS_COMPLETION_ENABLED 1
+#define TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_ENABLED 1
+#define TRACE_NVME_COMPLETE_COMMAND_ENABLED 1
+#define TRACE_NVME_SUBMIT_COMMAND_ENABLED 1
+#define TRACE_NVME_SUBMIT_COMMAND_RAW_ENABLED 1
+#define TRACE_NVME_HANDLE_EVENT_ENABLED 1
+#define TRACE_NVME_POLL_CB_ENABLED 1
+#define TRACE_NVME_PRW_ALIGNED_ENABLED 1
+#define TRACE_NVME_QIOV_UNALIGNED_ENABLED 1
+#define TRACE_NVME_PRW_BUFFERED_ENABLED 1
+#define TRACE_NVME_RW_DONE_ENABLED 1
+#define TRACE_NVME_DMA_MAP_FLUSH_ENABLED 1
+#define TRACE_NVME_FREE_REQ_QUEUE_WAIT_ENABLED 1
+#define TRACE_NVME_CMD_MAP_QIOV_ENABLED 1
+#define TRACE_NVME_CMD_MAP_QIOV_PAGES_ENABLED 1
+#define TRACE_NVME_CMD_MAP_QIOV_IOV_ENABLED 1
+
+#define TRACE_BDRV_OPEN_COMMON_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_open_common(void * bs, const char * filename, int flags, const char * format_name)
+{
+}
+
+static inline void trace_bdrv_open_common(void * bs, const char * filename, int flags, const char * format_name)
+{
+ if (true) {
+ _nocheck__trace_bdrv_open_common(bs, filename, flags, format_name);
+ }
+}
+
+#define TRACE_BDRV_LOCK_MEDIUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_lock_medium(void * bs, bool locked)
+{
+}
+
+static inline void trace_bdrv_lock_medium(void * bs, bool locked)
+{
+ if (true) {
+ _nocheck__trace_bdrv_lock_medium(bs, locked);
+ }
+}
+
+#define TRACE_BLOCK_JOB_COMPLETED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_block_job_completed(void * job, int ret, int jret)
+{
+}
+
+static inline void trace_block_job_completed(void * job, int ret, int jret)
+{
+ if (true) {
+ _nocheck__trace_block_job_completed(job, ret, jret);
+ }
+}
+
+#define TRACE_BLOCK_JOB_STATE_TRANSITION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_block_job_state_transition(void * job, int ret, const char * legal, const char * s0, const char * s1)
+{
+}
+
+static inline void trace_block_job_state_transition(void * job, int ret, const char * legal, const char * s0, const char * s1)
+{
+ if (true) {
+ _nocheck__trace_block_job_state_transition(job, ret, legal, s0, s1);
+ }
+}
+
+#define TRACE_BLOCK_JOB_APPLY_VERB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_block_job_apply_verb(void * job, const char * state, const char * verb, const char * legal)
+{
+}
+
+static inline void trace_block_job_apply_verb(void * job, const char * state, const char * verb, const char * legal)
+{
+ if (true) {
+ _nocheck__trace_block_job_apply_verb(job, state, verb, legal);
+ }
+}
+
+#define TRACE_BLK_CO_PREADV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_blk_co_preadv(void * blk, void * bs, int64_t offset, unsigned int bytes, int flags)
+{
+}
+
+static inline void trace_blk_co_preadv(void * blk, void * bs, int64_t offset, unsigned int bytes, int flags)
+{
+ if (true) {
+ _nocheck__trace_blk_co_preadv(blk, bs, offset, bytes, flags);
+ }
+}
+
+#define TRACE_BLK_CO_PWRITEV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_blk_co_pwritev(void * blk, void * bs, int64_t offset, unsigned int bytes, int flags)
+{
+}
+
+static inline void trace_blk_co_pwritev(void * blk, void * bs, int64_t offset, unsigned int bytes, int flags)
+{
+ if (true) {
+ _nocheck__trace_blk_co_pwritev(blk, bs, offset, bytes, flags);
+ }
+}
+
+#define TRACE_BLK_ROOT_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_blk_root_attach(void * child, void * blk, void * bs)
+{
+}
+
+static inline void trace_blk_root_attach(void * child, void * blk, void * bs)
+{
+ if (true) {
+ _nocheck__trace_blk_root_attach(child, blk, bs);
+ }
+}
+
+#define TRACE_BLK_ROOT_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_blk_root_detach(void * child, void * blk, void * bs)
+{
+}
+
+static inline void trace_blk_root_detach(void * child, void * blk, void * bs)
+{
+ if (true) {
+ _nocheck__trace_blk_root_detach(child, blk, bs);
+ }
+}
+
+#define TRACE_BDRV_CO_PREADV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_co_preadv(void * bs, int64_t offset, int64_t nbytes, unsigned int flags)
+{
+}
+
+static inline void trace_bdrv_co_preadv(void * bs, int64_t offset, int64_t nbytes, unsigned int flags)
+{
+ if (true) {
+ _nocheck__trace_bdrv_co_preadv(bs, offset, nbytes, flags);
+ }
+}
+
+#define TRACE_BDRV_CO_PWRITEV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_co_pwritev(void * bs, int64_t offset, int64_t nbytes, unsigned int flags)
+{
+}
+
+static inline void trace_bdrv_co_pwritev(void * bs, int64_t offset, int64_t nbytes, unsigned int flags)
+{
+ if (true) {
+ _nocheck__trace_bdrv_co_pwritev(bs, offset, nbytes, flags);
+ }
+}
+
+#define TRACE_BDRV_CO_PWRITE_ZEROES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_co_pwrite_zeroes(void * bs, int64_t offset, int count, int flags)
+{
+}
+
+static inline void trace_bdrv_co_pwrite_zeroes(void * bs, int64_t offset, int count, int flags)
+{
+ if (true) {
+ _nocheck__trace_bdrv_co_pwrite_zeroes(bs, offset, count, flags);
+ }
+}
+
+#define TRACE_BDRV_CO_DO_COPY_ON_READV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bdrv_co_do_copy_on_readv(void * bs, int64_t offset, unsigned int bytes, int64_t cluster_offset, int64_t cluster_bytes)
+{
+}
+
+static inline void trace_bdrv_co_do_copy_on_readv(void * bs, int64_t offset, unsigned int bytes, int64_t cluster_offset, int64_t cluster_bytes)
+{
+ if (true) {
+ _nocheck__trace_bdrv_co_do_copy_on_readv(bs, offset, bytes, cluster_offset, cluster_bytes);
+ }
+}
+
+#define TRACE_STREAM_ONE_ITERATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_stream_one_iteration(void * s, int64_t offset, uint64_t bytes, int is_allocated)
+{
+}
+
+static inline void trace_stream_one_iteration(void * s, int64_t offset, uint64_t bytes, int is_allocated)
+{
+ if (true) {
+ _nocheck__trace_stream_one_iteration(s, offset, bytes, is_allocated);
+ }
+}
+
+#define TRACE_STREAM_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_stream_start(void * bs, void * base, void * s)
+{
+}
+
+static inline void trace_stream_start(void * bs, void * base, void * s)
+{
+ if (true) {
+ _nocheck__trace_stream_start(bs, base, s);
+ }
+}
+
+#define TRACE_COMMIT_ONE_ITERATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_commit_one_iteration(void * s, int64_t offset, uint64_t bytes, int is_allocated)
+{
+}
+
+static inline void trace_commit_one_iteration(void * s, int64_t offset, uint64_t bytes, int is_allocated)
+{
+ if (true) {
+ _nocheck__trace_commit_one_iteration(s, offset, bytes, is_allocated);
+ }
+}
+
+#define TRACE_COMMIT_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_commit_start(void * bs, void * base, void * top, void * s)
+{
+}
+
+static inline void trace_commit_start(void * bs, void * base, void * top, void * s)
+{
+ if (true) {
+ _nocheck__trace_commit_start(bs, base, top, s);
+ }
+}
+
+#define TRACE_MIRROR_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_start(void * bs, void * s, void * opaque)
+{
+}
+
+static inline void trace_mirror_start(void * bs, void * s, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_mirror_start(bs, s, opaque);
+ }
+}
+
+#define TRACE_MIRROR_RESTART_ITER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_restart_iter(void * s, int64_t cnt)
+{
+}
+
+static inline void trace_mirror_restart_iter(void * s, int64_t cnt)
+{
+ if (true) {
+ _nocheck__trace_mirror_restart_iter(s, cnt);
+ }
+}
+
+#define TRACE_MIRROR_BEFORE_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_before_flush(void * s)
+{
+}
+
+static inline void trace_mirror_before_flush(void * s)
+{
+ if (true) {
+ _nocheck__trace_mirror_before_flush(s);
+ }
+}
+
+#define TRACE_MIRROR_BEFORE_DRAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_before_drain(void * s, int64_t cnt)
+{
+}
+
+static inline void trace_mirror_before_drain(void * s, int64_t cnt)
+{
+ if (true) {
+ _nocheck__trace_mirror_before_drain(s, cnt);
+ }
+}
+
+#define TRACE_MIRROR_BEFORE_SLEEP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_before_sleep(void * s, int64_t cnt, int synced, uint64_t delay_ns)
+{
+}
+
+static inline void trace_mirror_before_sleep(void * s, int64_t cnt, int synced, uint64_t delay_ns)
+{
+ if (true) {
+ _nocheck__trace_mirror_before_sleep(s, cnt, synced, delay_ns);
+ }
+}
+
+#define TRACE_MIRROR_ONE_ITERATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_one_iteration(void * s, int64_t offset, uint64_t bytes)
+{
+}
+
+static inline void trace_mirror_one_iteration(void * s, int64_t offset, uint64_t bytes)
+{
+ if (true) {
+ _nocheck__trace_mirror_one_iteration(s, offset, bytes);
+ }
+}
+
+#define TRACE_MIRROR_ITERATION_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_iteration_done(void * s, int64_t offset, uint64_t bytes, int ret)
+{
+}
+
+static inline void trace_mirror_iteration_done(void * s, int64_t offset, uint64_t bytes, int ret)
+{
+ if (true) {
+ _nocheck__trace_mirror_iteration_done(s, offset, bytes, ret);
+ }
+}
+
+#define TRACE_MIRROR_YIELD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_yield(void * s, int64_t cnt, int buf_free_count, int in_flight)
+{
+}
+
+static inline void trace_mirror_yield(void * s, int64_t cnt, int buf_free_count, int in_flight)
+{
+ if (true) {
+ _nocheck__trace_mirror_yield(s, cnt, buf_free_count, in_flight);
+ }
+}
+
+#define TRACE_MIRROR_YIELD_IN_FLIGHT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mirror_yield_in_flight(void * s, int64_t offset, int in_flight)
+{
+}
+
+static inline void trace_mirror_yield_in_flight(void * s, int64_t offset, int in_flight)
+{
+ if (true) {
+ _nocheck__trace_mirror_yield_in_flight(s, offset, in_flight);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_enter(void * job, int64_t start, int64_t offset, uint64_t bytes)
+{
+}
+
+static inline void trace_backup_do_cow_enter(void * job, int64_t start, int64_t offset, uint64_t bytes)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_enter(job, start, offset, bytes);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_return(void * job, int64_t offset, uint64_t bytes, int ret)
+{
+}
+
+static inline void trace_backup_do_cow_return(void * job, int64_t offset, uint64_t bytes, int ret)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_return(job, offset, bytes, ret);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_skip(void * job, int64_t start)
+{
+}
+
+static inline void trace_backup_do_cow_skip(void * job, int64_t start)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_skip(job, start);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_PROCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_process(void * job, int64_t start)
+{
+}
+
+static inline void trace_backup_do_cow_process(void * job, int64_t start)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_process(job, start);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_READ_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_read_fail(void * job, int64_t start, int ret)
+{
+}
+
+static inline void trace_backup_do_cow_read_fail(void * job, int64_t start, int ret)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_read_fail(job, start, ret);
+ }
+}
+
+#define TRACE_BACKUP_DO_COW_WRITE_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_backup_do_cow_write_fail(void * job, int64_t start, int ret)
+{
+}
+
+static inline void trace_backup_do_cow_write_fail(void * job, int64_t start, int ret)
+{
+ if (true) {
+ _nocheck__trace_backup_do_cow_write_fail(job, start, ret);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_cancel(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_cancel(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_cancel(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_PAUSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_pause(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_pause(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_pause(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_RESUME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_resume(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_resume(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_resume(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_complete(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_complete(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_complete(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_FINALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_finalize(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_finalize(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_finalize(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_JOB_DISMISS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_job_dismiss(void * job)
+{
+}
+
+static inline void trace_qmp_block_job_dismiss(void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_job_dismiss(job);
+ }
+}
+
+#define TRACE_QMP_BLOCK_STREAM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qmp_block_stream(void * bs, void * job)
+{
+}
+
+static inline void trace_qmp_block_stream(void * bs, void * job)
+{
+ if (true) {
+ _nocheck__trace_qmp_block_stream(bs, job);
+ }
+}
+
+#define TRACE_PAIO_SUBMIT_CO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_paio_submit_co(int64_t offset, int count, int type)
+{
+}
+
+static inline void trace_paio_submit_co(int64_t offset, int count, int type)
+{
+ if (true) {
+ _nocheck__trace_paio_submit_co(offset, count, type);
+ }
+}
+
+#define TRACE_PAIO_SUBMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_paio_submit(void * acb, void * opaque, int64_t offset, int count, int type)
+{
+}
+
+static inline void trace_paio_submit(void * acb, void * opaque, int64_t offset, int count, int type)
+{
+ if (true) {
+ _nocheck__trace_paio_submit(acb, opaque, offset, count, type);
+ }
+}
+
+#define TRACE_QCOW2_WRITEV_START_REQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_writev_start_req(void * co, int64_t offset, int bytes)
+{
+}
+
+static inline void trace_qcow2_writev_start_req(void * co, int64_t offset, int bytes)
+{
+ if (true) {
+ _nocheck__trace_qcow2_writev_start_req(co, offset, bytes);
+ }
+}
+
+#define TRACE_QCOW2_WRITEV_DONE_REQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_writev_done_req(void * co, int ret)
+{
+}
+
+static inline void trace_qcow2_writev_done_req(void * co, int ret)
+{
+ if (true) {
+ _nocheck__trace_qcow2_writev_done_req(co, ret);
+ }
+}
+
+#define TRACE_QCOW2_WRITEV_START_PART_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_writev_start_part(void * co)
+{
+}
+
+static inline void trace_qcow2_writev_start_part(void * co)
+{
+ if (true) {
+ _nocheck__trace_qcow2_writev_start_part(co);
+ }
+}
+
+#define TRACE_QCOW2_WRITEV_DONE_PART_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_writev_done_part(void * co, int cur_bytes)
+{
+}
+
+static inline void trace_qcow2_writev_done_part(void * co, int cur_bytes)
+{
+ if (true) {
+ _nocheck__trace_qcow2_writev_done_part(co, cur_bytes);
+ }
+}
+
+#define TRACE_QCOW2_WRITEV_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_writev_data(void * co, uint64_t offset)
+{
+}
+
+static inline void trace_qcow2_writev_data(void * co, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qcow2_writev_data(co, offset);
+ }
+}
+
+#define TRACE_QCOW2_PWRITE_ZEROES_START_REQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_pwrite_zeroes_start_req(void * co, int64_t offset, int count)
+{
+}
+
+static inline void trace_qcow2_pwrite_zeroes_start_req(void * co, int64_t offset, int count)
+{
+ if (true) {
+ _nocheck__trace_qcow2_pwrite_zeroes_start_req(co, offset, count);
+ }
+}
+
+#define TRACE_QCOW2_PWRITE_ZEROES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_pwrite_zeroes(void * co, int64_t offset, int count)
+{
+}
+
+static inline void trace_qcow2_pwrite_zeroes(void * co, int64_t offset, int count)
+{
+ if (true) {
+ _nocheck__trace_qcow2_pwrite_zeroes(co, offset, count);
+ }
+}
+
+#define TRACE_QCOW2_ALLOC_CLUSTERS_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_alloc_clusters_offset(void * co, uint64_t offset, int bytes)
+{
+}
+
+static inline void trace_qcow2_alloc_clusters_offset(void * co, uint64_t offset, int bytes)
+{
+ if (true) {
+ _nocheck__trace_qcow2_alloc_clusters_offset(co, offset, bytes);
+ }
+}
+
+#define TRACE_QCOW2_HANDLE_COPIED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_handle_copied(void * co, uint64_t guest_offset, uint64_t host_offset, uint64_t bytes)
+{
+}
+
+static inline void trace_qcow2_handle_copied(void * co, uint64_t guest_offset, uint64_t host_offset, uint64_t bytes)
+{
+ if (true) {
+ _nocheck__trace_qcow2_handle_copied(co, guest_offset, host_offset, bytes);
+ }
+}
+
+#define TRACE_QCOW2_HANDLE_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_handle_alloc(void * co, uint64_t guest_offset, uint64_t host_offset, uint64_t bytes)
+{
+}
+
+static inline void trace_qcow2_handle_alloc(void * co, uint64_t guest_offset, uint64_t host_offset, uint64_t bytes)
+{
+ if (true) {
+ _nocheck__trace_qcow2_handle_alloc(co, guest_offset, host_offset, bytes);
+ }
+}
+
+#define TRACE_QCOW2_DO_ALLOC_CLUSTERS_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_do_alloc_clusters_offset(void * co, uint64_t guest_offset, uint64_t host_offset, int nb_clusters)
+{
+}
+
+static inline void trace_qcow2_do_alloc_clusters_offset(void * co, uint64_t guest_offset, uint64_t host_offset, int nb_clusters)
+{
+ if (true) {
+ _nocheck__trace_qcow2_do_alloc_clusters_offset(co, guest_offset, host_offset, nb_clusters);
+ }
+}
+
+#define TRACE_QCOW2_CLUSTER_ALLOC_PHYS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cluster_alloc_phys(void * co)
+{
+}
+
+static inline void trace_qcow2_cluster_alloc_phys(void * co)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cluster_alloc_phys(co);
+ }
+}
+
+#define TRACE_QCOW2_CLUSTER_LINK_L2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cluster_link_l2(void * co, int nb_clusters)
+{
+}
+
+static inline void trace_qcow2_cluster_link_l2(void * co, int nb_clusters)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cluster_link_l2(co, nb_clusters);
+ }
+}
+
+#define TRACE_QCOW2_L2_ALLOCATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_l2_allocate(void * bs, int l1_index)
+{
+}
+
+static inline void trace_qcow2_l2_allocate(void * bs, int l1_index)
+{
+ if (true) {
+ _nocheck__trace_qcow2_l2_allocate(bs, l1_index);
+ }
+}
+
+#define TRACE_QCOW2_L2_ALLOCATE_GET_EMPTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_l2_allocate_get_empty(void * bs, int l1_index)
+{
+}
+
+static inline void trace_qcow2_l2_allocate_get_empty(void * bs, int l1_index)
+{
+ if (true) {
+ _nocheck__trace_qcow2_l2_allocate_get_empty(bs, l1_index);
+ }
+}
+
+#define TRACE_QCOW2_L2_ALLOCATE_WRITE_L2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_l2_allocate_write_l2(void * bs, int l1_index)
+{
+}
+
+static inline void trace_qcow2_l2_allocate_write_l2(void * bs, int l1_index)
+{
+ if (true) {
+ _nocheck__trace_qcow2_l2_allocate_write_l2(bs, l1_index);
+ }
+}
+
+#define TRACE_QCOW2_L2_ALLOCATE_WRITE_L1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_l2_allocate_write_l1(void * bs, int l1_index)
+{
+}
+
+static inline void trace_qcow2_l2_allocate_write_l1(void * bs, int l1_index)
+{
+ if (true) {
+ _nocheck__trace_qcow2_l2_allocate_write_l1(bs, l1_index);
+ }
+}
+
+#define TRACE_QCOW2_L2_ALLOCATE_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_l2_allocate_done(void * bs, int l1_index, int ret)
+{
+}
+
+static inline void trace_qcow2_l2_allocate_done(void * bs, int l1_index, int ret)
+{
+ if (true) {
+ _nocheck__trace_qcow2_l2_allocate_done(bs, l1_index, ret);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_get(void * co, int c, uint64_t offset, bool read_from_disk)
+{
+}
+
+static inline void trace_qcow2_cache_get(void * co, int c, uint64_t offset, bool read_from_disk)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_get(co, c, offset, read_from_disk);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_GET_REPLACE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_get_replace_entry(void * co, int c, int i)
+{
+}
+
+static inline void trace_qcow2_cache_get_replace_entry(void * co, int c, int i)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_get_replace_entry(co, c, i);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_GET_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_get_read(void * co, int c, int i)
+{
+}
+
+static inline void trace_qcow2_cache_get_read(void * co, int c, int i)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_get_read(co, c, i);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_GET_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_get_done(void * co, int c, int i)
+{
+}
+
+static inline void trace_qcow2_cache_get_done(void * co, int c, int i)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_get_done(co, c, i);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_flush(void * co, int c)
+{
+}
+
+static inline void trace_qcow2_cache_flush(void * co, int c)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_flush(co, c);
+ }
+}
+
+#define TRACE_QCOW2_CACHE_ENTRY_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcow2_cache_entry_flush(void * co, int c, int i)
+{
+}
+
+static inline void trace_qcow2_cache_entry_flush(void * co, int c, int i)
+{
+ if (true) {
+ _nocheck__trace_qcow2_cache_entry_flush(co, c, i);
+ }
+}
+
+#define TRACE_QED_ALLOC_L2_CACHE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_alloc_l2_cache_entry(void * l2_cache, void * entry)
+{
+}
+
+static inline void trace_qed_alloc_l2_cache_entry(void * l2_cache, void * entry)
+{
+ if (true) {
+ _nocheck__trace_qed_alloc_l2_cache_entry(l2_cache, entry);
+ }
+}
+
+#define TRACE_QED_UNREF_L2_CACHE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_unref_l2_cache_entry(void * entry, int ref)
+{
+}
+
+static inline void trace_qed_unref_l2_cache_entry(void * entry, int ref)
+{
+ if (true) {
+ _nocheck__trace_qed_unref_l2_cache_entry(entry, ref);
+ }
+}
+
+#define TRACE_QED_FIND_L2_CACHE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_find_l2_cache_entry(void * l2_cache, void * entry, uint64_t offset, int ref)
+{
+}
+
+static inline void trace_qed_find_l2_cache_entry(void * l2_cache, void * entry, uint64_t offset, int ref)
+{
+ if (true) {
+ _nocheck__trace_qed_find_l2_cache_entry(l2_cache, entry, offset, ref);
+ }
+}
+
+#define TRACE_QED_READ_TABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_read_table(void * s, uint64_t offset, void * table)
+{
+}
+
+static inline void trace_qed_read_table(void * s, uint64_t offset, void * table)
+{
+ if (true) {
+ _nocheck__trace_qed_read_table(s, offset, table);
+ }
+}
+
+#define TRACE_QED_READ_TABLE_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_read_table_cb(void * s, void * table, int ret)
+{
+}
+
+static inline void trace_qed_read_table_cb(void * s, void * table, int ret)
+{
+ if (true) {
+ _nocheck__trace_qed_read_table_cb(s, table, ret);
+ }
+}
+
+#define TRACE_QED_WRITE_TABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_write_table(void * s, uint64_t offset, void * table, unsigned int index, unsigned int n)
+{
+}
+
+static inline void trace_qed_write_table(void * s, uint64_t offset, void * table, unsigned int index, unsigned int n)
+{
+ if (true) {
+ _nocheck__trace_qed_write_table(s, offset, table, index, n);
+ }
+}
+
+#define TRACE_QED_WRITE_TABLE_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_write_table_cb(void * s, void * table, int flush, int ret)
+{
+}
+
+static inline void trace_qed_write_table_cb(void * s, void * table, int flush, int ret)
+{
+ if (true) {
+ _nocheck__trace_qed_write_table_cb(s, table, flush, ret);
+ }
+}
+
+#define TRACE_QED_NEED_CHECK_TIMER_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_need_check_timer_cb(void * s)
+{
+}
+
+static inline void trace_qed_need_check_timer_cb(void * s)
+{
+ if (true) {
+ _nocheck__trace_qed_need_check_timer_cb(s);
+ }
+}
+
+#define TRACE_QED_START_NEED_CHECK_TIMER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_start_need_check_timer(void * s)
+{
+}
+
+static inline void trace_qed_start_need_check_timer(void * s)
+{
+ if (true) {
+ _nocheck__trace_qed_start_need_check_timer(s);
+ }
+}
+
+#define TRACE_QED_CANCEL_NEED_CHECK_TIMER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_cancel_need_check_timer(void * s)
+{
+}
+
+static inline void trace_qed_cancel_need_check_timer(void * s)
+{
+ if (true) {
+ _nocheck__trace_qed_cancel_need_check_timer(s);
+ }
+}
+
+#define TRACE_QED_AIO_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_complete(void * s, void * acb, int ret)
+{
+}
+
+static inline void trace_qed_aio_complete(void * s, void * acb, int ret)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_complete(s, acb, ret);
+ }
+}
+
+#define TRACE_QED_AIO_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_setup(void * s, void * acb, int64_t sector_num, int nb_sectors, void * opaque, int flags)
+{
+}
+
+static inline void trace_qed_aio_setup(void * s, void * acb, int64_t sector_num, int nb_sectors, void * opaque, int flags)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_setup(s, acb, sector_num, nb_sectors, opaque, flags);
+ }
+}
+
+#define TRACE_QED_AIO_NEXT_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_next_io(void * s, void * acb, int ret, uint64_t cur_pos)
+{
+}
+
+static inline void trace_qed_aio_next_io(void * s, void * acb, int ret, uint64_t cur_pos)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_next_io(s, acb, ret, cur_pos);
+ }
+}
+
+#define TRACE_QED_AIO_READ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_read_data(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+}
+
+static inline void trace_qed_aio_read_data(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_read_data(s, acb, ret, offset, len);
+ }
+}
+
+#define TRACE_QED_AIO_WRITE_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_write_data(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+}
+
+static inline void trace_qed_aio_write_data(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_write_data(s, acb, ret, offset, len);
+ }
+}
+
+#define TRACE_QED_AIO_WRITE_PREFILL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_write_prefill(void * s, void * acb, uint64_t start, size_t len, uint64_t offset)
+{
+}
+
+static inline void trace_qed_aio_write_prefill(void * s, void * acb, uint64_t start, size_t len, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_write_prefill(s, acb, start, len, offset);
+ }
+}
+
+#define TRACE_QED_AIO_WRITE_POSTFILL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_write_postfill(void * s, void * acb, uint64_t start, size_t len, uint64_t offset)
+{
+}
+
+static inline void trace_qed_aio_write_postfill(void * s, void * acb, uint64_t start, size_t len, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_write_postfill(s, acb, start, len, offset);
+ }
+}
+
+#define TRACE_QED_AIO_WRITE_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qed_aio_write_main(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+}
+
+static inline void trace_qed_aio_write_main(void * s, void * acb, int ret, uint64_t offset, size_t len)
+{
+ if (true) {
+ _nocheck__trace_qed_aio_write_main(s, acb, ret, offset, len);
+ }
+}
+
+#define TRACE_VXHS_IIO_CALLBACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_iio_callback(int error)
+{
+}
+
+static inline void trace_vxhs_iio_callback(int error)
+{
+ if (true) {
+ _nocheck__trace_vxhs_iio_callback(error);
+ }
+}
+
+#define TRACE_VXHS_IIO_CALLBACK_CHNFAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_iio_callback_chnfail(int err, int error)
+{
+}
+
+static inline void trace_vxhs_iio_callback_chnfail(int err, int error)
+{
+ if (true) {
+ _nocheck__trace_vxhs_iio_callback_chnfail(err, error);
+ }
+}
+
+#define TRACE_VXHS_IIO_CALLBACK_UNKNWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_iio_callback_unknwn(int opcode, int err)
+{
+}
+
+static inline void trace_vxhs_iio_callback_unknwn(int opcode, int err)
+{
+ if (true) {
+ _nocheck__trace_vxhs_iio_callback_unknwn(opcode, err);
+ }
+}
+
+#define TRACE_VXHS_AIO_RW_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_aio_rw_invalid(int req)
+{
+}
+
+static inline void trace_vxhs_aio_rw_invalid(int req)
+{
+ if (true) {
+ _nocheck__trace_vxhs_aio_rw_invalid(req);
+ }
+}
+
+#define TRACE_VXHS_AIO_RW_IOERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_aio_rw_ioerr(char * guid, int iodir, uint64_t size, uint64_t off, void * acb, int ret, int err)
+{
+}
+
+static inline void trace_vxhs_aio_rw_ioerr(char * guid, int iodir, uint64_t size, uint64_t off, void * acb, int ret, int err)
+{
+ if (true) {
+ _nocheck__trace_vxhs_aio_rw_ioerr(guid, iodir, size, off, acb, ret, err);
+ }
+}
+
+#define TRACE_VXHS_GET_VDISK_STAT_ERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_get_vdisk_stat_err(char * guid, int ret, int err)
+{
+}
+
+static inline void trace_vxhs_get_vdisk_stat_err(char * guid, int ret, int err)
+{
+ if (true) {
+ _nocheck__trace_vxhs_get_vdisk_stat_err(guid, ret, err);
+ }
+}
+
+#define TRACE_VXHS_GET_VDISK_STAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_get_vdisk_stat(char * vdisk_guid, uint64_t vdisk_size)
+{
+}
+
+static inline void trace_vxhs_get_vdisk_stat(char * vdisk_guid, uint64_t vdisk_size)
+{
+ if (true) {
+ _nocheck__trace_vxhs_get_vdisk_stat(vdisk_guid, vdisk_size);
+ }
+}
+
+#define TRACE_VXHS_COMPLETE_AIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_complete_aio(void * acb, uint64_t ret)
+{
+}
+
+static inline void trace_vxhs_complete_aio(void * acb, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_vxhs_complete_aio(acb, ret);
+ }
+}
+
+#define TRACE_VXHS_PARSE_URI_FILENAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_parse_uri_filename(const char * filename)
+{
+}
+
+static inline void trace_vxhs_parse_uri_filename(const char * filename)
+{
+ if (true) {
+ _nocheck__trace_vxhs_parse_uri_filename(filename);
+ }
+}
+
+#define TRACE_VXHS_OPEN_VDISKID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_open_vdiskid(const char * vdisk_id)
+{
+}
+
+static inline void trace_vxhs_open_vdiskid(const char * vdisk_id)
+{
+ if (true) {
+ _nocheck__trace_vxhs_open_vdiskid(vdisk_id);
+ }
+}
+
+#define TRACE_VXHS_OPEN_HOSTINFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_open_hostinfo(char * of_vsa_addr, int port)
+{
+}
+
+static inline void trace_vxhs_open_hostinfo(char * of_vsa_addr, int port)
+{
+ if (true) {
+ _nocheck__trace_vxhs_open_hostinfo(of_vsa_addr, port);
+ }
+}
+
+#define TRACE_VXHS_OPEN_IIO_OPEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_open_iio_open(const char * host)
+{
+}
+
+static inline void trace_vxhs_open_iio_open(const char * host)
+{
+ if (true) {
+ _nocheck__trace_vxhs_open_iio_open(host);
+ }
+}
+
+#define TRACE_VXHS_PARSE_URI_HOSTINFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_parse_uri_hostinfo(char * host, int port)
+{
+}
+
+static inline void trace_vxhs_parse_uri_hostinfo(char * host, int port)
+{
+ if (true) {
+ _nocheck__trace_vxhs_parse_uri_hostinfo(host, port);
+ }
+}
+
+#define TRACE_VXHS_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_close(char * vdisk_guid)
+{
+}
+
+static inline void trace_vxhs_close(char * vdisk_guid)
+{
+ if (true) {
+ _nocheck__trace_vxhs_close(vdisk_guid);
+ }
+}
+
+#define TRACE_VXHS_GET_CREDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vxhs_get_creds(const char * cacert, const char * client_key, const char * client_cert)
+{
+}
+
+static inline void trace_vxhs_get_creds(const char * cacert, const char * client_key, const char * client_cert)
+{
+ if (true) {
+ _nocheck__trace_vxhs_get_creds(cacert, client_key, client_cert);
+ }
+}
+
+#define TRACE_NVME_KICK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_kick(void * s, int queue)
+{
+}
+
+static inline void trace_nvme_kick(void * s, int queue)
+{
+ if (true) {
+ _nocheck__trace_nvme_kick(s, queue);
+ }
+}
+
+#define TRACE_NVME_DMA_FLUSH_QUEUE_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_dma_flush_queue_wait(void * s)
+{
+}
+
+static inline void trace_nvme_dma_flush_queue_wait(void * s)
+{
+ if (true) {
+ _nocheck__trace_nvme_dma_flush_queue_wait(s);
+ }
+}
+
+#define TRACE_NVME_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_error(int cmd_specific, int sq_head, int sqid, int cid, int status)
+{
+}
+
+static inline void trace_nvme_error(int cmd_specific, int sq_head, int sqid, int cid, int status)
+{
+ if (true) {
+ _nocheck__trace_nvme_error(cmd_specific, sq_head, sqid, cid, status);
+ }
+}
+
+#define TRACE_NVME_PROCESS_COMPLETION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_process_completion(void * s, int index, int inflight)
+{
+}
+
+static inline void trace_nvme_process_completion(void * s, int index, int inflight)
+{
+ if (true) {
+ _nocheck__trace_nvme_process_completion(s, index, inflight);
+ }
+}
+
+#define TRACE_NVME_PROCESS_COMPLETION_QUEUE_BUSY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_process_completion_queue_busy(void * s, int index)
+{
+}
+
+static inline void trace_nvme_process_completion_queue_busy(void * s, int index)
+{
+ if (true) {
+ _nocheck__trace_nvme_process_completion_queue_busy(s, index);
+ }
+}
+
+#define TRACE_NVME_COMPLETE_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_complete_command(void * s, int index, int cid)
+{
+}
+
+static inline void trace_nvme_complete_command(void * s, int index, int cid)
+{
+ if (true) {
+ _nocheck__trace_nvme_complete_command(s, index, cid);
+ }
+}
+
+#define TRACE_NVME_SUBMIT_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_submit_command(void * s, int index, int cid)
+{
+}
+
+static inline void trace_nvme_submit_command(void * s, int index, int cid)
+{
+ if (true) {
+ _nocheck__trace_nvme_submit_command(s, index, cid);
+ }
+}
+
+#define TRACE_NVME_SUBMIT_COMMAND_RAW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_submit_command_raw(int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7)
+{
+}
+
+static inline void trace_nvme_submit_command_raw(int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7)
+{
+ if (true) {
+ _nocheck__trace_nvme_submit_command_raw(c0, c1, c2, c3, c4, c5, c6, c7);
+ }
+}
+
+#define TRACE_NVME_HANDLE_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_handle_event(void * s)
+{
+}
+
+static inline void trace_nvme_handle_event(void * s)
+{
+ if (true) {
+ _nocheck__trace_nvme_handle_event(s);
+ }
+}
+
+#define TRACE_NVME_POLL_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_poll_cb(void * s)
+{
+}
+
+static inline void trace_nvme_poll_cb(void * s)
+{
+ if (true) {
+ _nocheck__trace_nvme_poll_cb(s);
+ }
+}
+
+#define TRACE_NVME_PRW_ALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_prw_aligned(void * s, int is_write, uint64_t offset, uint64_t bytes, int flags, int niov)
+{
+}
+
+static inline void trace_nvme_prw_aligned(void * s, int is_write, uint64_t offset, uint64_t bytes, int flags, int niov)
+{
+ if (true) {
+ _nocheck__trace_nvme_prw_aligned(s, is_write, offset, bytes, flags, niov);
+ }
+}
+
+#define TRACE_NVME_QIOV_UNALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_qiov_unaligned(const void * qiov, int n, void * base, size_t size, int align)
+{
+}
+
+static inline void trace_nvme_qiov_unaligned(const void * qiov, int n, void * base, size_t size, int align)
+{
+ if (true) {
+ _nocheck__trace_nvme_qiov_unaligned(qiov, n, base, size, align);
+ }
+}
+
+#define TRACE_NVME_PRW_BUFFERED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_prw_buffered(void * s, uint64_t offset, uint64_t bytes, int niov, int is_write)
+{
+}
+
+static inline void trace_nvme_prw_buffered(void * s, uint64_t offset, uint64_t bytes, int niov, int is_write)
+{
+ if (true) {
+ _nocheck__trace_nvme_prw_buffered(s, offset, bytes, niov, is_write);
+ }
+}
+
+#define TRACE_NVME_RW_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_rw_done(void * s, int is_write, uint64_t offset, uint64_t bytes, int ret)
+{
+}
+
+static inline void trace_nvme_rw_done(void * s, int is_write, uint64_t offset, uint64_t bytes, int ret)
+{
+ if (true) {
+ _nocheck__trace_nvme_rw_done(s, is_write, offset, bytes, ret);
+ }
+}
+
+#define TRACE_NVME_DMA_MAP_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_dma_map_flush(void * s)
+{
+}
+
+static inline void trace_nvme_dma_map_flush(void * s)
+{
+ if (true) {
+ _nocheck__trace_nvme_dma_map_flush(s);
+ }
+}
+
+#define TRACE_NVME_FREE_REQ_QUEUE_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_free_req_queue_wait(void * q)
+{
+}
+
+static inline void trace_nvme_free_req_queue_wait(void * q)
+{
+ if (true) {
+ _nocheck__trace_nvme_free_req_queue_wait(q);
+ }
+}
+
+#define TRACE_NVME_CMD_MAP_QIOV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_cmd_map_qiov(void * s, void * cmd, void * req, void * qiov, int entries)
+{
+}
+
+static inline void trace_nvme_cmd_map_qiov(void * s, void * cmd, void * req, void * qiov, int entries)
+{
+ if (true) {
+ _nocheck__trace_nvme_cmd_map_qiov(s, cmd, req, qiov, entries);
+ }
+}
+
+#define TRACE_NVME_CMD_MAP_QIOV_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_cmd_map_qiov_pages(void * s, int i, uint64_t page)
+{
+}
+
+static inline void trace_nvme_cmd_map_qiov_pages(void * s, int i, uint64_t page)
+{
+ if (true) {
+ _nocheck__trace_nvme_cmd_map_qiov_pages(s, i, page);
+ }
+}
+
+#define TRACE_NVME_CMD_MAP_QIOV_IOV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_cmd_map_qiov_iov(void * s, int i, void * page, int pages)
+{
+}
+
+static inline void trace_nvme_cmd_map_qiov_iov(void * s, int i, void * page, int pages)
+{
+ if (true) {
+ _nocheck__trace_nvme_cmd_map_qiov_iov(s, i, page, pages);
+ }
+}
+#endif /* TRACE_BLOCK_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/chardev/trace.c b/qemu2-auto-generated/chardev/trace.c
new file mode 100644
index 0000000000..80bfc1c914
--- /dev/null
+++ b/qemu2-auto-generated/chardev/trace.c
@@ -0,0 +1,122 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_WCT_INIT_DSTATE;
+uint16_t _TRACE_WCT_CMD_RE_DSTATE;
+uint16_t _TRACE_WCT_CMD_ST_DSTATE;
+uint16_t _TRACE_WCT_CMD_SP_DSTATE;
+uint16_t _TRACE_WCT_CMD_TS_DSTATE;
+uint16_t _TRACE_WCT_CMD_OTHER_DSTATE;
+uint16_t _TRACE_WCT_SPEED_DSTATE;
+uint16_t _TRACE_SPICE_VMC_WRITE_DSTATE;
+uint16_t _TRACE_SPICE_VMC_READ_DSTATE;
+uint16_t _TRACE_SPICE_VMC_REGISTER_INTERFACE_DSTATE;
+uint16_t _TRACE_SPICE_VMC_UNREGISTER_INTERFACE_DSTATE;
+uint16_t _TRACE_SPICE_VMC_EVENT_DSTATE;
+TraceEvent _TRACE_WCT_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_init",
+ .sstate = TRACE_WCT_INIT_ENABLED,
+ .dstate = &_TRACE_WCT_INIT_DSTATE
+};
+TraceEvent _TRACE_WCT_CMD_RE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_cmd_re",
+ .sstate = TRACE_WCT_CMD_RE_ENABLED,
+ .dstate = &_TRACE_WCT_CMD_RE_DSTATE
+};
+TraceEvent _TRACE_WCT_CMD_ST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_cmd_st",
+ .sstate = TRACE_WCT_CMD_ST_ENABLED,
+ .dstate = &_TRACE_WCT_CMD_ST_DSTATE
+};
+TraceEvent _TRACE_WCT_CMD_SP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_cmd_sp",
+ .sstate = TRACE_WCT_CMD_SP_ENABLED,
+ .dstate = &_TRACE_WCT_CMD_SP_DSTATE
+};
+TraceEvent _TRACE_WCT_CMD_TS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_cmd_ts",
+ .sstate = TRACE_WCT_CMD_TS_ENABLED,
+ .dstate = &_TRACE_WCT_CMD_TS_DSTATE
+};
+TraceEvent _TRACE_WCT_CMD_OTHER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_cmd_other",
+ .sstate = TRACE_WCT_CMD_OTHER_ENABLED,
+ .dstate = &_TRACE_WCT_CMD_OTHER_DSTATE
+};
+TraceEvent _TRACE_WCT_SPEED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "wct_speed",
+ .sstate = TRACE_WCT_SPEED_ENABLED,
+ .dstate = &_TRACE_WCT_SPEED_DSTATE
+};
+TraceEvent _TRACE_SPICE_VMC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spice_vmc_write",
+ .sstate = TRACE_SPICE_VMC_WRITE_ENABLED,
+ .dstate = &_TRACE_SPICE_VMC_WRITE_DSTATE
+};
+TraceEvent _TRACE_SPICE_VMC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spice_vmc_read",
+ .sstate = TRACE_SPICE_VMC_READ_ENABLED,
+ .dstate = &_TRACE_SPICE_VMC_READ_DSTATE
+};
+TraceEvent _TRACE_SPICE_VMC_REGISTER_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spice_vmc_register_interface",
+ .sstate = TRACE_SPICE_VMC_REGISTER_INTERFACE_ENABLED,
+ .dstate = &_TRACE_SPICE_VMC_REGISTER_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_SPICE_VMC_UNREGISTER_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spice_vmc_unregister_interface",
+ .sstate = TRACE_SPICE_VMC_UNREGISTER_INTERFACE_ENABLED,
+ .dstate = &_TRACE_SPICE_VMC_UNREGISTER_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_SPICE_VMC_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spice_vmc_event",
+ .sstate = TRACE_SPICE_VMC_EVENT_ENABLED,
+ .dstate = &_TRACE_SPICE_VMC_EVENT_DSTATE
+};
+TraceEvent *chardev_trace_events[] = {
+ &_TRACE_WCT_INIT_EVENT,
+ &_TRACE_WCT_CMD_RE_EVENT,
+ &_TRACE_WCT_CMD_ST_EVENT,
+ &_TRACE_WCT_CMD_SP_EVENT,
+ &_TRACE_WCT_CMD_TS_EVENT,
+ &_TRACE_WCT_CMD_OTHER_EVENT,
+ &_TRACE_WCT_SPEED_EVENT,
+ &_TRACE_SPICE_VMC_WRITE_EVENT,
+ &_TRACE_SPICE_VMC_READ_EVENT,
+ &_TRACE_SPICE_VMC_REGISTER_INTERFACE_EVENT,
+ &_TRACE_SPICE_VMC_UNREGISTER_INTERFACE_EVENT,
+ &_TRACE_SPICE_VMC_EVENT_EVENT,
+ NULL,
+};
+
+static void trace_chardev_register_events(void)
+{
+ trace_event_register_group(chardev_trace_events);
+}
+trace_init(trace_chardev_register_events)
diff --git a/qemu2-auto-generated/chardev/trace.h b/qemu2-auto-generated/chardev/trace.h
new file mode 100644
index 0000000000..bc6f5730c2
--- /dev/null
+++ b/qemu2-auto-generated/chardev/trace.h
@@ -0,0 +1,213 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_CHARDEV_GENERATED_TRACERS_H
+#define TRACE_CHARDEV_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_WCT_INIT_EVENT;
+extern TraceEvent _TRACE_WCT_CMD_RE_EVENT;
+extern TraceEvent _TRACE_WCT_CMD_ST_EVENT;
+extern TraceEvent _TRACE_WCT_CMD_SP_EVENT;
+extern TraceEvent _TRACE_WCT_CMD_TS_EVENT;
+extern TraceEvent _TRACE_WCT_CMD_OTHER_EVENT;
+extern TraceEvent _TRACE_WCT_SPEED_EVENT;
+extern TraceEvent _TRACE_SPICE_VMC_WRITE_EVENT;
+extern TraceEvent _TRACE_SPICE_VMC_READ_EVENT;
+extern TraceEvent _TRACE_SPICE_VMC_REGISTER_INTERFACE_EVENT;
+extern TraceEvent _TRACE_SPICE_VMC_UNREGISTER_INTERFACE_EVENT;
+extern TraceEvent _TRACE_SPICE_VMC_EVENT_EVENT;
+extern uint16_t _TRACE_WCT_INIT_DSTATE;
+extern uint16_t _TRACE_WCT_CMD_RE_DSTATE;
+extern uint16_t _TRACE_WCT_CMD_ST_DSTATE;
+extern uint16_t _TRACE_WCT_CMD_SP_DSTATE;
+extern uint16_t _TRACE_WCT_CMD_TS_DSTATE;
+extern uint16_t _TRACE_WCT_CMD_OTHER_DSTATE;
+extern uint16_t _TRACE_WCT_SPEED_DSTATE;
+extern uint16_t _TRACE_SPICE_VMC_WRITE_DSTATE;
+extern uint16_t _TRACE_SPICE_VMC_READ_DSTATE;
+extern uint16_t _TRACE_SPICE_VMC_REGISTER_INTERFACE_DSTATE;
+extern uint16_t _TRACE_SPICE_VMC_UNREGISTER_INTERFACE_DSTATE;
+extern uint16_t _TRACE_SPICE_VMC_EVENT_DSTATE;
+#define TRACE_WCT_INIT_ENABLED 1
+#define TRACE_WCT_CMD_RE_ENABLED 1
+#define TRACE_WCT_CMD_ST_ENABLED 1
+#define TRACE_WCT_CMD_SP_ENABLED 1
+#define TRACE_WCT_CMD_TS_ENABLED 1
+#define TRACE_WCT_CMD_OTHER_ENABLED 1
+#define TRACE_WCT_SPEED_ENABLED 1
+#define TRACE_SPICE_VMC_WRITE_ENABLED 1
+#define TRACE_SPICE_VMC_READ_ENABLED 1
+#define TRACE_SPICE_VMC_REGISTER_INTERFACE_ENABLED 1
+#define TRACE_SPICE_VMC_UNREGISTER_INTERFACE_ENABLED 1
+#define TRACE_SPICE_VMC_EVENT_ENABLED 1
+
+#define TRACE_WCT_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_init(void)
+{
+}
+
+static inline void trace_wct_init(void)
+{
+ if (true) {
+ _nocheck__trace_wct_init();
+ }
+}
+
+#define TRACE_WCT_CMD_RE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_cmd_re(void)
+{
+}
+
+static inline void trace_wct_cmd_re(void)
+{
+ if (true) {
+ _nocheck__trace_wct_cmd_re();
+ }
+}
+
+#define TRACE_WCT_CMD_ST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_cmd_st(void)
+{
+}
+
+static inline void trace_wct_cmd_st(void)
+{
+ if (true) {
+ _nocheck__trace_wct_cmd_st();
+ }
+}
+
+#define TRACE_WCT_CMD_SP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_cmd_sp(void)
+{
+}
+
+static inline void trace_wct_cmd_sp(void)
+{
+ if (true) {
+ _nocheck__trace_wct_cmd_sp();
+ }
+}
+
+#define TRACE_WCT_CMD_TS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_cmd_ts(int input)
+{
+}
+
+static inline void trace_wct_cmd_ts(int input)
+{
+ if (true) {
+ _nocheck__trace_wct_cmd_ts(input);
+ }
+}
+
+#define TRACE_WCT_CMD_OTHER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_cmd_other(const char * cmd)
+{
+}
+
+static inline void trace_wct_cmd_other(const char * cmd)
+{
+ if (true) {
+ _nocheck__trace_wct_cmd_other(cmd);
+ }
+}
+
+#define TRACE_WCT_SPEED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_wct_speed(int speed)
+{
+}
+
+static inline void trace_wct_speed(int speed)
+{
+ if (true) {
+ _nocheck__trace_wct_speed(speed);
+ }
+}
+
+#define TRACE_SPICE_VMC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spice_vmc_write(ssize_t out, int len)
+{
+}
+
+static inline void trace_spice_vmc_write(ssize_t out, int len)
+{
+ if (true) {
+ _nocheck__trace_spice_vmc_write(out, len);
+ }
+}
+
+#define TRACE_SPICE_VMC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spice_vmc_read(int bytes, int len)
+{
+}
+
+static inline void trace_spice_vmc_read(int bytes, int len)
+{
+ if (true) {
+ _nocheck__trace_spice_vmc_read(bytes, len);
+ }
+}
+
+#define TRACE_SPICE_VMC_REGISTER_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spice_vmc_register_interface(void * scd)
+{
+}
+
+static inline void trace_spice_vmc_register_interface(void * scd)
+{
+ if (true) {
+ _nocheck__trace_spice_vmc_register_interface(scd);
+ }
+}
+
+#define TRACE_SPICE_VMC_UNREGISTER_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spice_vmc_unregister_interface(void * scd)
+{
+}
+
+static inline void trace_spice_vmc_unregister_interface(void * scd)
+{
+ if (true) {
+ _nocheck__trace_spice_vmc_unregister_interface(scd);
+ }
+}
+
+#define TRACE_SPICE_VMC_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spice_vmc_event(int event)
+{
+}
+
+static inline void trace_spice_vmc_event(int event)
+{
+ if (true) {
+ _nocheck__trace_spice_vmc_event(event);
+ }
+}
+#endif /* TRACE_CHARDEV_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/crypto/trace.c b/qemu2-auto-generated/crypto/trace.c
new file mode 100644
index 0000000000..0eb0acf370
--- /dev/null
+++ b/qemu2-auto-generated/crypto/trace.c
@@ -0,0 +1,113 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_GET_PATH_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_SESSION_NEW_DSTATE;
+uint16_t _TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_DSTATE;
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_load_dh",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_GET_PATH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_get_path",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_GET_PATH_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_GET_PATH_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_anon_load",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_load",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_check_basic_constraints",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_check_key_usage",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_check_key_purpose",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_load_cert",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_creds_x509_load_cert_list",
+ .sstate = TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_SESSION_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_session_new",
+ .sstate = TRACE_QCRYPTO_TLS_SESSION_NEW_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_SESSION_NEW_DSTATE
+};
+TraceEvent _TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qcrypto_tls_session_check_creds",
+ .sstate = TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_ENABLED,
+ .dstate = &_TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_DSTATE
+};
+TraceEvent *crypto_trace_events[] = {
+ &_TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_GET_PATH_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_EVENT,
+ &_TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_EVENT,
+ &_TRACE_QCRYPTO_TLS_SESSION_NEW_EVENT,
+ &_TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_EVENT,
+ NULL,
+};
+
+static void trace_crypto_register_events(void)
+{
+ trace_event_register_group(crypto_trace_events);
+}
+trace_init(trace_crypto_register_events)
diff --git a/qemu2-auto-generated/crypto/trace.h b/qemu2-auto-generated/crypto/trace.h
new file mode 100644
index 0000000000..1ae79b4bf9
--- /dev/null
+++ b/qemu2-auto-generated/crypto/trace.h
@@ -0,0 +1,196 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_CRYPTO_GENERATED_TRACERS_H
+#define TRACE_CRYPTO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_GET_PATH_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_SESSION_NEW_EVENT;
+extern TraceEvent _TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_EVENT;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_GET_PATH_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_SESSION_NEW_DSTATE;
+extern uint16_t _TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_DSTATE;
+#define TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_GET_PATH_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_ENABLED 1
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_ENABLED 1
+#define TRACE_QCRYPTO_TLS_SESSION_NEW_ENABLED 1
+#define TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_ENABLED 1
+
+#define TRACE_QCRYPTO_TLS_CREDS_LOAD_DH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_load_dh(void * creds, const char * filename)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_load_dh(void * creds, const char * filename)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_load_dh(creds, filename);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_GET_PATH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_get_path(void * creds, const char * filename, const char * path)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_get_path(void * creds, const char * filename, const char * path)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_get_path(creds, filename, path);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_ANON_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_anon_load(void * creds, const char * dir)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_anon_load(void * creds, const char * dir)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_anon_load(creds, dir);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_load(void * creds, const char * dir)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_load(void * creds, const char * dir)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_load(creds, dir);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_BASIC_CONSTRAINTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_check_basic_constraints(void * creds, const char * file, int status)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_check_basic_constraints(void * creds, const char * file, int status)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_check_basic_constraints(creds, file, status);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_USAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_check_key_usage(void * creds, const char * file, int status, int usage, int critical)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_check_key_usage(void * creds, const char * file, int status, int usage, int critical)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_check_key_usage(creds, file, status, usage, critical);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_CHECK_KEY_PURPOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_check_key_purpose(void * creds, const char * file, int status, const char * usage, int critical)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_check_key_purpose(void * creds, const char * file, int status, const char * usage, int critical)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_check_key_purpose(creds, file, status, usage, critical);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_load_cert(void * creds, int isServer, const char * file)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_load_cert(void * creds, int isServer, const char * file)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_load_cert(creds, isServer, file);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_CREDS_X509_LOAD_CERT_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_creds_x509_load_cert_list(void * creds, const char * file)
+{
+}
+
+static inline void trace_qcrypto_tls_creds_x509_load_cert_list(void * creds, const char * file)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_creds_x509_load_cert_list(creds, file);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_SESSION_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_session_new(void * session, void * creds, const char * hostname, const char * aclname, int endpoint)
+{
+}
+
+static inline void trace_qcrypto_tls_session_new(void * session, void * creds, const char * hostname, const char * aclname, int endpoint)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_session_new(session, creds, hostname, aclname, endpoint);
+ }
+}
+
+#define TRACE_QCRYPTO_TLS_SESSION_CHECK_CREDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qcrypto_tls_session_check_creds(void * session, const char * status)
+{
+}
+
+static inline void trace_qcrypto_tls_session_check_creds(void * session, const char * status)
+{
+ if (true) {
+ _nocheck__trace_qcrypto_tls_session_check_creds(session, status);
+ }
+}
+#endif /* TRACE_CRYPTO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/gdbstub-xml-arm.c b/qemu2-auto-generated/gdbstub-xml-arm.c
new file mode 100644
index 0000000000..9fd73b9540
--- /dev/null
+++ b/qemu2-auto-generated/gdbstub-xml-arm.c
@@ -0,0 +1,950 @@
+#include "qemu/osdep.h"
+static const char xml_feature_arm_core_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'c', 'o', 'r', 'e', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 's', 'p', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'd', 'a', 't', 'a',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'l', 'r', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'p', 'c', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'c', 'o', 'd', 'e',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', '!', '-', '-', ' ', 'T', 'h', 'e',
+ ' ', 'C', 'P', 'S', 'R', ' ', 'i', 's', ' ', 'r',
+ 'e', 'g', 'i', 's', 't', 'e', 'r', ' ', '2', '5',
+ ',', ' ', 'r', 'a', 't', 'h', 'e', 'r', ' ', 't',
+ 'h', 'a', 'n', ' ', 'r', 'e', 'g', 'i', 's', 't',
+ 'e', 'r', ' ', '1', '6', ',', ' ', 'b', 'e', 'c',
+ 'a', 'u', 's', 'e', '\n',
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', 't', 'h', 'e',
+ ' ', 'F', 'P', 'A', ' ', 'r', 'e', 'g', 'i', 's',
+ 't', 'e', 'r', 's', ' ', 'h', 'i', 's', 't', 'o',
+ 'r', 'i', 'c', 'a', 'l', 'l', 'y', ' ', 'w', 'e',
+ 'r', 'e', ' ', 'p', 'l', 'a', 'c', 'e', 'd', ' ',
+ 'b', 'e', 't', 'w', 'e', 'e', 'n', ' ', 't', 'h',
+ 'e', ' ', 'P', 'C', '\n',
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'a', 'n', 'd',
+ ' ', 't', 'h', 'e', ' ', 'C', 'P', 'S', 'R', ' ',
+ 'i', 'n', ' ', 't', 'h', 'e', ' ', '"', 'g', '"',
+ ' ', 'p', 'a', 'c', 'k', 'e', 't', '.', ' ', ' ',
+ '-', '-', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'c', 'p', 's', 'r', '"', ' ', 'b',
+ 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3', '2',
+ '"', ' ', 'r', 'e', 'g', 'n', 'u', 'm', '=', '"',
+ '2', '5', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_vfp_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_vfp3_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_neon_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '8', 'x', '8', '"', ' ', 't', 'y',
+ 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '8', '"',
+ ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '8', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '1', '6', 'x', '4', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '6', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '3', '2', 'x', '2', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '3',
+ '2', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '3', '2', 'x', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 's', 'i', 'n', 'g', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '2', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'd', '"',
+ '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'u', 'i', 'n', 't', '8', 'x', '8', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '1', '6',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '1', '6', 'x',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '3', '2', 'x',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'u', 'i',
+ 'n', 't', '6', '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '3', '2',
+ 'x', '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i', 'e',
+ 'e', 'e', '_', 'd', 'o', 'u', 'b', 'l', 'e', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '8', 'x', '1', '6', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '8',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '1',
+ '6', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '1', '6', 'x', '8', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '6', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '8', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '3', '2', 'x', '4', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '3',
+ '2', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '6', '4', 'x', '2', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '6',
+ '4', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '3', '2', 'x', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 's', 'i', 'n', 'g', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '4', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '6', '4', 'x', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 'd', 'o', 'u', 'b', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '2', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'q', '"',
+ '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'u', 'i', 'n', 't', '8', 'x', '1', '6',
+ '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '1', '6',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '1', '6', 'x',
+ '8', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '3', '2', 'x',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '6', '4', 'x',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '3', '2',
+ 'x', '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '6', '4',
+ 'x', '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+
+const char *const xml_builtin[][2] = {
+ { "arm-core.xml", xml_feature_arm_core_xml },
+ { "arm-vfp.xml", xml_feature_arm_vfp_xml },
+ { "arm-vfp3.xml", xml_feature_arm_vfp3_xml },
+ { "arm-neon.xml", xml_feature_arm_neon_xml },
+ { (char *)0, (char *)0 }
+};
diff --git a/qemu2-auto-generated/gdbstub-xml-arm64.c b/qemu2-auto-generated/gdbstub-xml-arm64.c
new file mode 100644
index 0000000000..0a812c1601
--- /dev/null
+++ b/qemu2-auto-generated/gdbstub-xml-arm64.c
@@ -0,0 +1,1514 @@
+#include "qemu/osdep.h"
+static const char xml_feature_aarch64_core_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '9', '-', '2', '0', '1', '2', ' ', 'F',
+ 'r', 'e', 'e', ' ', 'S', 'o', 'f', 't', 'w', 'a',
+ 'r', 'e', ' ', 'F', 'o', 'u', 'n', 'd', 'a', 't',
+ 'i', 'o', 'n', ',', ' ', 'I', 'n', 'c', '.', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'n', 't', 'r',
+ 'i', 'b', 'u', 't', 'e', 'd', ' ', 'b', 'y', ' ',
+ 'A', 'R', 'M', ' ', 'L', 't', 'd', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', '.', 'c', 'o', 'r', 'e', '"',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'x', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 's', 'p', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'd', 'a', 't', 'a',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'p', 'c', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'c', 'o', 'd', 'e',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'c', 'p', 's', 'r', '"', ' ', 'b',
+ 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3', '2',
+ '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_aarch64_fpu_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '9', '-', '2', '0', '1', '2', ' ', 'F',
+ 'r', 'e', 'e', ' ', 'S', 'o', 'f', 't', 'w', 'a',
+ 'r', 'e', ' ', 'F', 'o', 'u', 'n', 'd', 'a', 't',
+ 'i', 'o', 'n', ',', ' ', 'I', 'n', 'c', '.', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'n', 't', 'r',
+ 'i', 'b', 'u', 't', 'e', 'd', ' ', 'b', 'y', ' ',
+ 'A', 'R', 'M', ' ', 'L', 't', 'd', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', '.', 'f', 'p', 'u', '"', '>',
+ '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '2', 'd', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e', '_',
+ 'd', 'o', 'u', 'b', 'l', 'e', '"', ' ', 'c', 'o',
+ 'u', 'n', 't', '=', '"', '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '2', 'u', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '6',
+ '4', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '2', 'i', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'n', 't', '6', '4',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '2',
+ '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '4', 'f', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e', '_',
+ 's', 'i', 'n', 'g', 'l', 'e', '"', ' ', 'c', 'o',
+ 'u', 'n', 't', '=', '"', '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '4', 'u', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '3',
+ '2', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '4', 'i', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'n', 't', '3', '2',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '4',
+ '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '8', 'u', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '6', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '8', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '8', 'i', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'n', 't', '1', '6',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '8',
+ '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '1', '6', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't',
+ '8', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '1', '6', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '1', '6', 'i', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'n', 't', '8',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '1',
+ '6', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '1', 'u', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '2', '8', '"', ' ', 'c', 'o', 'u', 'n', 't', '=',
+ '"', '1', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'v', '1', 'i', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'i', 'n', 't', '1', '2',
+ '8', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '1', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'v', 'n', 'd', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '2', 'd', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '2', 'u', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '2', 'i', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'v', 'n', 's', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '4', 'f', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '4', 'u', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '4', 'i', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'v', 'n', 'h', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '8', 'u', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '8', 'i', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'v', 'n', 'b', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '1', '6', 'u',
+ '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '1', '6', 'i',
+ '"', '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'v', 'n', 'q', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '1', 'u', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', '1', 'i', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'a', 'a', 'r', 'c', 'h', '6', '4',
+ 'v', '"', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'd', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', 'n', 'd', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 's', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', 'n', 's', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'h', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', 'n', 'h', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'b', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', 'n', 'b', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'q', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'v', 'n', 'q', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', 'r', 'e', 'g',
+ 'n', 'u', 'm', '=', '"', '3', '4', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a', 'r',
+ 'c', 'h', '6', '4', 'v', '"', ' ', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'v', '3', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'a', 'a',
+ 'r', 'c', 'h', '6', '4', 'v', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'r', '"', ' ', 'b',
+ 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3', '2',
+ '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'c', 'r', '"', ' ', 'b',
+ 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3', '2',
+ '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_core_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'c', 'o', 'r', 'e', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'r', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '3', '2', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 's', 'p', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'd', 'a', 't', 'a',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'l', 'r', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', '/',
+ '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'p', 'c', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '3', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'c', 'o', 'd', 'e',
+ '_', 'p', 't', 'r', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', '!', '-', '-', ' ', 'T', 'h', 'e',
+ ' ', 'C', 'P', 'S', 'R', ' ', 'i', 's', ' ', 'r',
+ 'e', 'g', 'i', 's', 't', 'e', 'r', ' ', '2', '5',
+ ',', ' ', 'r', 'a', 't', 'h', 'e', 'r', ' ', 't',
+ 'h', 'a', 'n', ' ', 'r', 'e', 'g', 'i', 's', 't',
+ 'e', 'r', ' ', '1', '6', ',', ' ', 'b', 'e', 'c',
+ 'a', 'u', 's', 'e', '\n',
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', 't', 'h', 'e',
+ ' ', 'F', 'P', 'A', ' ', 'r', 'e', 'g', 'i', 's',
+ 't', 'e', 'r', 's', ' ', 'h', 'i', 's', 't', 'o',
+ 'r', 'i', 'c', 'a', 'l', 'l', 'y', ' ', 'w', 'e',
+ 'r', 'e', ' ', 'p', 'l', 'a', 'c', 'e', 'd', ' ',
+ 'b', 'e', 't', 'w', 'e', 'e', 'n', ' ', 't', 'h',
+ 'e', ' ', 'P', 'C', '\n',
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'a', 'n', 'd',
+ ' ', 't', 'h', 'e', ' ', 'C', 'P', 'S', 'R', ' ',
+ 'i', 'n', ' ', 't', 'h', 'e', ' ', '"', 'g', '"',
+ ' ', 'p', 'a', 'c', 'k', 'e', 't', '.', ' ', ' ',
+ '-', '-', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'c', 'p', 's', 'r', '"', ' ', 'b',
+ 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3', '2',
+ '"', ' ', 'r', 'e', 'g', 'n', 'u', 'm', '=', '"',
+ '2', '5', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_vfp_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_vfp3_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o', 'a',
+ 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'f', 'l', 'o',
+ 'a', 't', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+#include "qemu/osdep.h"
+static const char xml_feature_arm_neon_xml[] = {
+ '<', '?', 'x', 'm', 'l', ' ', 'v', 'e', 'r', 's',
+ 'i', 'o', 'n', '=', '"', '1', '.', '0', '"', '?',
+ '>', '\n',
+ '<', '!', '-', '-', ' ', 'C', 'o', 'p', 'y', 'r',
+ 'i', 'g', 'h', 't', ' ', '(', 'C', ')', ' ', '2',
+ '0', '0', '8', ' ', 'F', 'r', 'e', 'e', ' ', 'S',
+ 'o', 'f', 't', 'w', 'a', 'r', 'e', ' ', 'F', 'o',
+ 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', ',', ' ',
+ 'I', 'n', 'c', '.', '\n',
+ '\n',
+ ' ', ' ', ' ', ' ', ' ', 'C', 'o', 'p', 'y', 'i',
+ 'n', 'g', ' ', 'a', 'n', 'd', ' ', 'd', 'i', 's',
+ 't', 'r', 'i', 'b', 'u', 't', 'i', 'o', 'n', ' ',
+ 'o', 'f', ' ', 't', 'h', 'i', 's', ' ', 'f', 'i',
+ 'l', 'e', ',', ' ', 'w', 'i', 't', 'h', ' ', 'o',
+ 'r', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't', ' ',
+ 'm', 'o', 'd', 'i', 'f', 'i', 'c', 'a', 't', 'i',
+ 'o', 'n', ',', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'a', 'r', 'e', ' ', 'p',
+ 'e', 'r', 'm', 'i', 't', 't', 'e', 'd', ' ', 'i',
+ 'n', ' ', 'a', 'n', 'y', ' ', 'm', 'e', 'd', 'i',
+ 'u', 'm', ' ', 'w', 'i', 't', 'h', 'o', 'u', 't',
+ ' ', 'r', 'o', 'y', 'a', 'l', 't', 'y', ' ', 'p',
+ 'r', 'o', 'v', 'i', 'd', 'e', 'd', ' ', 't', 'h',
+ 'e', ' ', 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h',
+ 't', '\n',
+ ' ', ' ', ' ', ' ', ' ', 'n', 'o', 't', 'i', 'c',
+ 'e', ' ', 'a', 'n', 'd', ' ', 't', 'h', 'i', 's',
+ ' ', 'n', 'o', 't', 'i', 'c', 'e', ' ', 'a', 'r',
+ 'e', ' ', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e',
+ 'd', '.', ' ', ' ', '-', '-', '>', '\n',
+ '<', '!', 'D', 'O', 'C', 'T', 'Y', 'P', 'E', ' ',
+ 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'S', 'Y',
+ 'S', 'T', 'E', 'M', ' ', '"', 'g', 'd', 'b', '-',
+ 't', 'a', 'r', 'g', 'e', 't', '.', 'd', 't', 'd',
+ '"', '>', '\n',
+ '<', 'f', 'e', 'a', 't', 'u', 'r', 'e', ' ', 'n',
+ 'a', 'm', 'e', '=', '"', 'o', 'r', 'g', '.', 'g',
+ 'n', 'u', '.', 'g', 'd', 'b', '.', 'a', 'r', 'm',
+ '.', 'v', 'f', 'p', '"', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '8', 'x', '8', '"', ' ', 't', 'y',
+ 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '8', '"',
+ ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '8', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '1', '6', 'x', '4', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '6', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '3', '2', 'x', '2', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '3',
+ '2', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '3', '2', 'x', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 's', 'i', 'n', 'g', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '2', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'd', '"',
+ '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'u', 'i', 'n', 't', '8', 'x', '8', '"',
+ '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '1', '6',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '1', '6', 'x',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '3', '2', 'x',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'u', 'i',
+ 'n', 't', '6', '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '3', '2',
+ 'x', '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i', 'e',
+ 'e', 'e', '_', 'd', 'o', 'u', 'b', 'l', 'e', '"',
+ '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '8', 'x', '1', '6', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '8',
+ '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"', '1',
+ '6', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '1', '6', 'x', '8', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '1',
+ '6', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '8', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '3', '2', 'x', '4', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '3',
+ '2', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'u',
+ 'i', 'n', 't', '6', '4', 'x', '2', '"', ' ', 't',
+ 'y', 'p', 'e', '=', '"', 'u', 'i', 'n', 't', '6',
+ '4', '"', ' ', 'c', 'o', 'u', 'n', 't', '=', '"',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '3', '2', 'x', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 's', 'i', 'n', 'g', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '4', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'v', 'e', 'c', 't', 'o', 'r', ' ',
+ 'i', 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'f',
+ 'l', 'o', 'a', 't', '6', '4', 'x', '2', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'i', 'e', 'e', 'e',
+ '_', 'd', 'o', 'u', 'b', 'l', 'e', '"', ' ', 'c',
+ 'o', 'u', 'n', 't', '=', '"', '2', '"', '/', '>',
+ '\n',
+ ' ', ' ', '<', 'u', 'n', 'i', 'o', 'n', ' ', 'i',
+ 'd', '=', '"', 'n', 'e', 'o', 'n', '_', 'q', '"',
+ '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'u', 'i', 'n', 't', '8', 'x', '1', '6',
+ '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '1', '6',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '1', '6', 'x',
+ '8', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '3', '2', 'x',
+ '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'u', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'u', 'i', 'n', 't', '6', '4', 'x',
+ '2', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '3', '2',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '3', '2',
+ 'x', '4', '"', '/', '>', '\n',
+ ' ', ' ', ' ', ' ', '<', 'f', 'i', 'e', 'l', 'd',
+ ' ', 'n', 'a', 'm', 'e', '=', '"', 'f', '6', '4',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'f', 'l', 'o', 'a', 't', '6', '4',
+ 'x', '2', '"', '/', '>', '\n',
+ ' ', ' ', '<', '/', 'u', 'n', 'i', 'o', 'n', '>',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '6', '4', '"', ' ',
+ 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o', 'n',
+ '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '1', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '6', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '7', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '8', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '2', '9', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'd', '3', '1', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '6', '4', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'd', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '0', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '2', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '3', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '4', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '5', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '6', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '7', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '8', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '9', '"', ' ', 'b', 'i', 't',
+ 's', 'i', 'z', 'e', '=', '"', '1', '2', '8', '"',
+ ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e', 'o',
+ 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '0', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '2', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '3', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '4', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'q', '1', '5', '"', ' ', 'b', 'i',
+ 't', 's', 'i', 'z', 'e', '=', '"', '1', '2', '8',
+ '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'n', 'e',
+ 'o', 'n', '_', 'q', '"', '/', '>', '\n',
+ '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'i', 'd', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 's', 'c', 'r', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ ' ', ' ', '<', 'r', 'e', 'g', ' ', 'n', 'a', 'm',
+ 'e', '=', '"', 'f', 'p', 'e', 'x', 'c', '"', ' ',
+ 'b', 'i', 't', 's', 'i', 'z', 'e', '=', '"', '3',
+ '2', '"', ' ', 't', 'y', 'p', 'e', '=', '"', 'i',
+ 'n', 't', '"', ' ', 'g', 'r', 'o', 'u', 'p', '=',
+ '"', 'f', 'l', 'o', 'a', 't', '"', '/', '>', '\n',
+ '<', '/', 'f', 'e', 'a', 't', 'u', 'r', 'e', '>',
+ '\n',
+ 0 };
+
+const char *const xml_builtin[][2] = {
+ { "aarch64-core.xml", xml_feature_aarch64_core_xml },
+ { "aarch64-fpu.xml", xml_feature_aarch64_fpu_xml },
+ { "arm-core.xml", xml_feature_arm_core_xml },
+ { "arm-vfp.xml", xml_feature_arm_vfp_xml },
+ { "arm-vfp3.xml", xml_feature_arm_vfp3_xml },
+ { "arm-neon.xml", xml_feature_arm_neon_xml },
+ { (char *)0, (char *)0 }
+};
diff --git a/qemu2-auto-generated/hmp-commands-info.h b/qemu2-auto-generated/hmp-commands-info.h
new file mode 100644
index 0000000000..9e2b424bf1
--- /dev/null
+++ b/qemu2-auto-generated/hmp-commands-info.h
@@ -0,0 +1,572 @@
+
+
+{
+.name = "version",
+.args_type = "",
+.params = "",
+.help = "show the version of QEMU",
+.cmd = hmp_info_version,
+},
+
+
+{
+.name = "network",
+.args_type = "",
+.params = "",
+.help = "show the network state",
+.cmd = hmp_info_network,
+},
+
+
+{
+.name = "chardev",
+.args_type = "",
+.params = "",
+.help = "show the character devices",
+.cmd = hmp_info_chardev,
+},
+
+
+{
+.name = "block",
+.args_type = "nodes:-n,verbose:-v,device:B?",
+.params = "[-n] [-v] [device]",
+.help = "show info of one block device or all block devices "
+"(-n: show named nodes; -v: show details)",
+.cmd = hmp_info_block,
+},
+
+
+{
+.name = "blockstats",
+.args_type = "",
+.params = "",
+.help = "show block device statistics",
+.cmd = hmp_info_blockstats,
+},
+
+
+{
+.name = "block-jobs",
+.args_type = "",
+.params = "",
+.help = "show progress of ongoing block device operations",
+.cmd = hmp_info_block_jobs,
+},
+
+
+{
+.name = "registers",
+.args_type = "cpustate_all:-a",
+.params = "[-a]",
+.help = "show the cpu registers (-a: all - show register info for all cpus)",
+.cmd = hmp_info_registers,
+},
+
+
+#if defined(TARGET_I386)
+{
+.name = "lapic",
+.args_type = "apic-id:i?",
+.params = "[apic-id]",
+.help = "show local apic state (apic-id: local apic to read, default is which of current CPU)",
+
+.cmd = hmp_info_local_apic,
+},
+#endif
+
+
+#if defined(TARGET_I386)
+{
+.name = "ioapic",
+.args_type = "",
+.params = "",
+.help = "show io apic state",
+.cmd = hmp_info_io_apic,
+},
+#endif
+
+
+{
+.name = "cpus",
+.args_type = "",
+.params = "",
+.help = "show infos for each CPU",
+.cmd = hmp_info_cpus,
+},
+
+
+{
+.name = "history",
+.args_type = "",
+.params = "",
+.help = "show the command line history",
+.cmd = hmp_info_history,
+},
+
+
+{
+.name = "irq",
+.args_type = "",
+.params = "",
+.help = "show the interrupts statistics (if available)",
+.cmd = hmp_info_irq,
+},
+
+
+{
+.name = "pic",
+.args_type = "",
+.params = "",
+.help = "show PIC state",
+.cmd = hmp_info_pic,
+},
+
+
+{
+.name = "pci",
+.args_type = "",
+.params = "",
+.help = "show PCI info",
+.cmd = hmp_info_pci,
+},
+
+
+#if defined(TARGET_I386) || defined(TARGET_SH4) || defined(TARGET_SPARC) || \
+defined(TARGET_PPC) || defined(TARGET_XTENSA) || defined(TARGET_M68K)
+{
+.name = "tlb",
+.args_type = "",
+.params = "",
+.help = "show virtual to physical memory mappings",
+.cmd = hmp_info_tlb,
+},
+#endif
+
+
+#if defined(TARGET_I386)
+{
+.name = "mem",
+.args_type = "",
+.params = "",
+.help = "show the active virtual memory mappings",
+.cmd = hmp_info_mem,
+},
+#endif
+
+
+{
+.name = "mtree",
+.args_type = "flatview:-f,dispatch_tree:-d",
+.params = "[-f][-d]",
+.help = "show memory tree (-f: dump flat view for address spaces;"
+"-d: dump dispatch tree, valid with -f only)",
+.cmd = hmp_info_mtree,
+},
+
+
+#if defined(CONFIG_TCG)
+{
+.name = "jit",
+.args_type = "",
+.params = "",
+.help = "show dynamic compiler info",
+.cmd = hmp_info_jit,
+},
+#endif
+
+
+#if defined(CONFIG_TCG)
+{
+.name = "opcount",
+.args_type = "",
+.params = "",
+.help = "show dynamic compiler opcode counters",
+.cmd = hmp_info_opcount,
+},
+#endif
+
+
+{
+.name = "kvm",
+.args_type = "",
+.params = "",
+.help = "show KVM information",
+.cmd = hmp_info_kvm,
+},
+
+
+{
+.name = "numa",
+.args_type = "",
+.params = "",
+.help = "show NUMA information",
+.cmd = hmp_info_numa,
+},
+
+
+{
+.name = "usb",
+.args_type = "",
+.params = "",
+.help = "show guest USB devices",
+.cmd = hmp_info_usb,
+},
+
+
+{
+.name = "usbhost",
+.args_type = "",
+.params = "",
+.help = "show host USB devices",
+.cmd = hmp_info_usbhost,
+},
+
+
+{
+.name = "profile",
+.args_type = "",
+.params = "",
+.help = "show profiling information",
+.cmd = hmp_info_profile,
+},
+
+
+{
+.name = "capture",
+.args_type = "",
+.params = "",
+.help = "show capture information",
+.cmd = hmp_info_capture,
+},
+
+
+{
+.name = "snapshots",
+.args_type = "",
+.params = "",
+.help = "show the currently saved VM snapshots",
+.cmd = hmp_info_snapshots,
+},
+
+
+{
+.name = "status",
+.args_type = "",
+.params = "",
+.help = "show the current VM status (running|paused)",
+.cmd = hmp_info_status,
+},
+
+
+{
+.name = "mice",
+.args_type = "",
+.params = "",
+.help = "show which guest mouse is receiving events",
+.cmd = hmp_info_mice,
+},
+
+
+{
+.name = "vnc",
+.args_type = "",
+.params = "",
+.help = "show the vnc server status",
+.cmd = hmp_info_vnc,
+},
+
+
+#if defined(CONFIG_SPICE)
+{
+.name = "spice",
+.args_type = "",
+.params = "",
+.help = "show the spice server status",
+.cmd = hmp_info_spice,
+},
+#endif
+
+
+{
+.name = "name",
+.args_type = "",
+.params = "",
+.help = "show the current VM name",
+.cmd = hmp_info_name,
+},
+
+
+{
+.name = "uuid",
+.args_type = "",
+.params = "",
+.help = "show the current VM UUID",
+.cmd = hmp_info_uuid,
+},
+
+
+{
+.name = "cpustats",
+.args_type = "",
+.params = "",
+.help = "show CPU statistics",
+.cmd = hmp_info_cpustats,
+},
+
+
+#if defined(CONFIG_SLIRP)
+{
+.name = "usernet",
+.args_type = "",
+.params = "",
+.help = "show user network stack connection states",
+.cmd = hmp_info_usernet,
+},
+#endif
+
+
+{
+.name = "migrate",
+.args_type = "",
+.params = "",
+.help = "show migration status",
+.cmd = hmp_info_migrate,
+},
+
+
+{
+.name = "migrate_capabilities",
+.args_type = "",
+.params = "",
+.help = "show current migration capabilities",
+.cmd = hmp_info_migrate_capabilities,
+},
+
+
+{
+.name = "migrate_parameters",
+.args_type = "",
+.params = "",
+.help = "show current migration parameters",
+.cmd = hmp_info_migrate_parameters,
+},
+
+
+{
+.name = "migrate_cache_size",
+.args_type = "",
+.params = "",
+.help = "show current migration xbzrle cache size",
+.cmd = hmp_info_migrate_cache_size,
+},
+
+
+{
+.name = "balloon",
+.args_type = "",
+.params = "",
+.help = "show balloon information",
+.cmd = hmp_info_balloon,
+},
+
+
+{
+.name = "qtree",
+.args_type = "",
+.params = "",
+.help = "show device tree",
+.cmd = hmp_info_qtree,
+},
+
+
+{
+.name = "qdm",
+.args_type = "",
+.params = "",
+.help = "show qdev device model list",
+.cmd = hmp_info_qdm,
+},
+
+
+{
+.name = "qom-tree",
+.args_type = "path:s?",
+.params = "[path]",
+.help = "show QOM composition tree",
+.cmd = hmp_info_qom_tree,
+},
+
+
+{
+.name = "roms",
+.args_type = "",
+.params = "",
+.help = "show roms",
+.cmd = hmp_info_roms,
+},
+
+
+{
+.name = "trace-events",
+.args_type = "name:s?,vcpu:i?",
+.params = "[name] [vcpu]",
+.help = "show available trace-events & their state "
+"(name: event name pattern; vcpu: vCPU to query, default is any)",
+.cmd = hmp_info_trace_events,
+.command_completion = info_trace_events_completion,
+},
+
+
+{
+.name = "tpm",
+.args_type = "",
+.params = "",
+.help = "show the TPM device",
+.cmd = hmp_info_tpm,
+},
+
+
+{
+.name = "memdev",
+.args_type = "",
+.params = "",
+.help = "show memory backends",
+.cmd = hmp_info_memdev,
+},
+
+
+{
+.name = "memory-devices",
+.args_type = "",
+.params = "",
+.help = "show memory devices",
+.cmd = hmp_info_memory_devices,
+},
+
+
+{
+.name = "iothreads",
+.args_type = "",
+.params = "",
+.help = "show iothreads",
+.cmd = hmp_info_iothreads,
+},
+
+
+{
+.name = "rocker",
+.args_type = "name:s",
+.params = "name",
+.help = "Show rocker switch",
+.cmd = hmp_rocker,
+},
+
+
+{
+.name = "rocker-ports",
+.args_type = "name:s",
+.params = "name",
+.help = "Show rocker ports",
+.cmd = hmp_rocker_ports,
+},
+
+
+{
+.name = "rocker-of-dpa-flows",
+.args_type = "name:s,tbl_id:i?",
+.params = "name [tbl_id]",
+.help = "Show rocker OF-DPA flow tables",
+.cmd = hmp_rocker_of_dpa_flows,
+},
+
+
+{
+.name = "rocker-of-dpa-groups",
+.args_type = "name:s,type:i?",
+.params = "name [type]",
+.help = "Show rocker OF-DPA groups",
+.cmd = hmp_rocker_of_dpa_groups,
+},
+
+
+#if defined(TARGET_S390X)
+{
+.name = "skeys",
+.args_type = "addr:l",
+.params = "address",
+.help = "Display the value of a storage key",
+.cmd = hmp_info_skeys,
+},
+#endif
+
+
+#if defined(TARGET_S390X)
+{
+.name = "cmma",
+.args_type = "addr:l,count:l?",
+.params = "address [count]",
+.help = "Display the values of the CMMA storage attributes for a range of pages",
+.cmd = hmp_info_cmma,
+},
+#endif
+
+
+{
+.name = "dump",
+.args_type = "",
+.params = "",
+.help = "Display the latest dump status",
+.cmd = hmp_info_dump,
+},
+
+
+{
+.name = "ramblock",
+.args_type = "",
+.params = "",
+.help = "Display system ramblock information",
+.cmd = hmp_info_ramblock,
+},
+
+
+{
+.name = "hotpluggable-cpus",
+.args_type = "",
+.params = "",
+.help = "Show information about hotpluggable CPUs",
+.cmd = hmp_hotpluggable_cpus,
+},
+
+
+{
+.name = "vm-generation-id",
+.args_type = "",
+.params = "",
+.help = "Show Virtual Machine Generation ID",
+.cmd = hmp_info_vm_generation_id,
+},
+
+
+{
+.name = "memory_size_summary",
+.args_type = "",
+.params = "",
+.help = "show the amount of initially allocated and "
+"present hotpluggable (if enabled) memory in bytes.",
+.cmd = hmp_info_memory_size_summary,
+},
+
+
+#if defined(TARGET_I386)
+{
+.name = "sev",
+.args_type = "",
+.params = "",
+.help = "show SEV information",
+.cmd = hmp_info_sev,
+},
+#endif
+
+
+
diff --git a/qemu2-auto-generated/hmp-commands.h b/qemu2-auto-generated/hmp-commands.h
new file mode 100644
index 0000000000..fc19bebd49
--- /dev/null
+++ b/qemu2-auto-generated/hmp-commands.h
@@ -0,0 +1,1060 @@
+
+
+{
+.name = "help|?",
+.args_type = "name:S?",
+.params = "[cmd]",
+.help = "show the help",
+.cmd = do_help_cmd,
+},
+
+
+{
+.name = "commit",
+.args_type = "device:B",
+.params = "device|all",
+.help = "commit changes to the disk images (if -snapshot is used) or backing files",
+.cmd = hmp_commit,
+},
+
+
+{
+.name = "q|quit",
+.args_type = "",
+.params = "",
+.help = "quit the emulator",
+.cmd = hmp_quit,
+},
+
+
+{
+.name = "block_resize",
+.args_type = "device:B,size:o",
+.params = "device size",
+.help = "resize a block image",
+.cmd = hmp_block_resize,
+},
+
+
+{
+.name = "block_stream",
+.args_type = "device:B,speed:o?,base:s?",
+.params = "device [speed [base]]",
+.help = "copy data from a backing file into a block device",
+.cmd = hmp_block_stream,
+},
+
+
+{
+.name = "block_job_set_speed",
+.args_type = "device:B,speed:o",
+.params = "device speed",
+.help = "set maximum speed for a background block operation",
+.cmd = hmp_block_job_set_speed,
+},
+
+
+{
+.name = "block_job_cancel",
+.args_type = "force:-f,device:B",
+.params = "[-f] device",
+.help = "stop an active background block operation (use -f"
+"\n\t\t\t if you want to abort the operation immediately"
+"\n\t\t\t instead of keep running until data is in sync)",
+.cmd = hmp_block_job_cancel,
+},
+
+
+{
+.name = "block_job_complete",
+.args_type = "device:B",
+.params = "device",
+.help = "stop an active background block operation",
+.cmd = hmp_block_job_complete,
+},
+
+
+{
+.name = "block_job_pause",
+.args_type = "device:B",
+.params = "device",
+.help = "pause an active background block operation",
+.cmd = hmp_block_job_pause,
+},
+
+
+{
+.name = "block_job_resume",
+.args_type = "device:B",
+.params = "device",
+.help = "resume a paused background block operation",
+.cmd = hmp_block_job_resume,
+},
+
+
+{
+.name = "eject",
+.args_type = "force:-f,device:B",
+.params = "[-f] device",
+.help = "eject a removable medium (use -f to force it)",
+.cmd = hmp_eject,
+},
+
+
+{
+.name = "drive_del",
+.args_type = "id:B",
+.params = "device",
+.help = "remove host block device",
+.cmd = hmp_drive_del,
+},
+
+
+{
+.name = "change",
+.args_type = "device:B,target:F,arg:s?,read-only-mode:s?",
+.params = "device filename [format [read-only-mode]]",
+.help = "change a removable medium, optional format",
+.cmd = hmp_change,
+},
+
+
+{
+.name = "screendump",
+.args_type = "filename:F,device:s?,head:i?",
+.params = "filename [device [head]]",
+.help = "save screen from head 'head' of display device 'device' "
+"into PPM image 'filename'",
+.cmd = hmp_screendump,
+},
+
+
+{
+.name = "logfile",
+.args_type = "filename:F",
+.params = "filename",
+.help = "output logs to 'filename'",
+.cmd = hmp_logfile,
+},
+
+
+{
+.name = "trace-event",
+.args_type = "name:s,option:b,vcpu:i?",
+.params = "name on|off [vcpu]",
+.help = "changes status of a specific trace event "
+"(vcpu: vCPU to set, default is all)",
+.cmd = hmp_trace_event,
+.command_completion = trace_event_completion,
+},
+
+
+#if defined(CONFIG_TRACE_SIMPLE)
+{
+.name = "trace-file",
+.args_type = "op:s?,arg:F?",
+.params = "on|off|flush|set [arg]",
+.help = "open, close, or flush trace file, or set a new file name",
+.cmd = hmp_trace_file,
+},
+
+#endif
+
+{
+.name = "log",
+.args_type = "items:s",
+.params = "item1[,...]",
+.help = "activate logging of the specified items",
+.cmd = hmp_log,
+},
+
+
+{
+.name = "savevm",
+.args_type = "name:s?",
+.params = "[tag|id]",
+.help = "save a VM snapshot. If no tag or id are provided, a new snapshot is created",
+.cmd = hmp_savevm,
+},
+
+
+{
+.name = "loadvm",
+.args_type = "name:s",
+.params = "tag|id",
+.help = "restore a VM snapshot from its tag or id",
+.cmd = hmp_loadvm,
+.command_completion = loadvm_completion,
+},
+
+
+{
+.name = "delvm",
+.args_type = "name:s",
+.params = "tag|id",
+.help = "delete a VM snapshot from its tag or id",
+.cmd = hmp_delvm,
+.command_completion = delvm_completion,
+},
+
+
+{
+.name = "singlestep",
+.args_type = "option:s?",
+.params = "[on|off]",
+.help = "run emulation in singlestep mode or switch to normal mode",
+.cmd = hmp_singlestep,
+},
+
+
+{
+.name = "stop",
+.args_type = "",
+.params = "",
+.help = "stop emulation",
+.cmd = hmp_stop,
+},
+
+
+{
+.name = "c|cont",
+.args_type = "",
+.params = "",
+.help = "resume emulation",
+.cmd = hmp_cont,
+},
+
+
+{
+.name = "system_wakeup",
+.args_type = "",
+.params = "",
+.help = "wakeup guest from suspend",
+.cmd = hmp_system_wakeup,
+},
+
+
+{
+.name = "gdbserver",
+.args_type = "device:s?",
+.params = "[device]",
+.help = "start gdbserver on given device (default 'tcp::1234'), stop with 'none'",
+.cmd = hmp_gdbserver,
+},
+
+
+{
+.name = "x",
+.args_type = "fmt:/,addr:l",
+.params = "/fmt addr",
+.help = "virtual memory dump starting at 'addr'",
+.cmd = hmp_memory_dump,
+},
+
+
+{
+.name = "xp",
+.args_type = "fmt:/,addr:l",
+.params = "/fmt addr",
+.help = "physical memory dump starting at 'addr'",
+.cmd = hmp_physical_memory_dump,
+},
+
+
+{
+.name = "gpa2hva",
+.args_type = "addr:l",
+.params = "addr",
+.help = "print the host virtual address corresponding to a guest physical address",
+.cmd = hmp_gpa2hva,
+},
+
+
+#ifdef CONFIG_LINUX
+{
+.name = "gpa2hpa",
+.args_type = "addr:l",
+.params = "addr",
+.help = "print the host physical address corresponding to a guest physical address",
+.cmd = hmp_gpa2hpa,
+},
+#endif
+
+
+{
+.name = "p|print",
+.args_type = "fmt:/,val:l",
+.params = "/fmt expr",
+.help = "print expression value (use $reg for CPU register access)",
+.cmd = do_print,
+},
+
+
+{
+.name = "i",
+.args_type = "fmt:/,addr:i,index:i.",
+.params = "/fmt addr",
+.help = "I/O port read",
+.cmd = hmp_ioport_read,
+},
+
+
+{
+.name = "o",
+.args_type = "fmt:/,addr:i,val:i",
+.params = "/fmt addr value",
+.help = "I/O port write",
+.cmd = hmp_ioport_write,
+},
+
+
+{
+.name = "sendkey",
+.args_type = "keys:s,hold-time:i?",
+.params = "keys [hold_ms]",
+.help = "send keys to the VM (e.g. 'sendkey ctrl-alt-f1', default hold time=100 ms)",
+.cmd = hmp_sendkey,
+.command_completion = sendkey_completion,
+},
+
+
+{
+.name = "system_reset",
+.args_type = "",
+.params = "",
+.help = "reset the system",
+.cmd = hmp_system_reset,
+},
+
+
+{
+.name = "system_powerdown",
+.args_type = "",
+.params = "",
+.help = "send system power down event",
+.cmd = hmp_system_powerdown,
+},
+
+
+{
+.name = "sum",
+.args_type = "start:i,size:i",
+.params = "addr size",
+.help = "compute the checksum of a memory region",
+.cmd = hmp_sum,
+},
+
+
+{
+.name = "device_add",
+.args_type = "device:O",
+.params = "driver[,prop=value][,...]",
+.help = "add device, like -device on the command line",
+.cmd = hmp_device_add,
+.command_completion = device_add_completion,
+},
+
+
+{
+.name = "device_del",
+.args_type = "id:s",
+.params = "device",
+.help = "remove device",
+.cmd = hmp_device_del,
+.command_completion = device_del_completion,
+},
+
+
+{
+.name = "cpu",
+.args_type = "index:i",
+.params = "index",
+.help = "set the default CPU",
+.cmd = hmp_cpu,
+},
+
+
+{
+.name = "mouse_move",
+.args_type = "dx_str:s,dy_str:s,dz_str:s?",
+.params = "dx dy [dz]",
+.help = "send mouse move events",
+.cmd = hmp_mouse_move,
+},
+
+
+{
+.name = "mouse_button",
+.args_type = "button_state:i",
+.params = "state",
+.help = "change mouse button state (1=L, 2=M, 4=R)",
+.cmd = hmp_mouse_button,
+},
+
+
+{
+.name = "mouse_set",
+.args_type = "index:i",
+.params = "index",
+.help = "set which mouse device receives events",
+.cmd = hmp_mouse_set,
+},
+
+
+{
+.name = "wavcapture",
+.args_type = "path:F,freq:i?,bits:i?,nchannels:i?",
+.params = "path [frequency [bits [channels]]]",
+.help = "capture audio to a wave file (default frequency=44100 bits=16 channels=2)",
+.cmd = hmp_wavcapture,
+},
+
+{
+.name = "stopcapture",
+.args_type = "n:i",
+.params = "capture index",
+.help = "stop capture",
+.cmd = hmp_stopcapture,
+},
+
+{
+.name = "memsave",
+.args_type = "val:l,size:i,filename:s",
+.params = "addr size file",
+.help = "save to disk virtual memory dump starting at 'addr' of size 'size'",
+.cmd = hmp_memsave,
+},
+
+
+{
+.name = "pmemsave",
+.args_type = "val:l,size:i,filename:s",
+.params = "addr size file",
+.help = "save to disk physical memory dump starting at 'addr' of size 'size'",
+.cmd = hmp_pmemsave,
+},
+
+
+{
+.name = "boot_set",
+.args_type = "bootdevice:s",
+.params = "bootdevice",
+.help = "define new values for the boot device list",
+.cmd = hmp_boot_set,
+},
+
+
+{
+.name = "nmi",
+.args_type = "",
+.params = "",
+.help = "inject an NMI",
+.cmd = hmp_nmi,
+},
+
+{
+.name = "ringbuf_write",
+.args_type = "device:s,data:s",
+.params = "device data",
+.help = "Write to a ring buffer character device",
+.cmd = hmp_ringbuf_write,
+.command_completion = ringbuf_write_completion,
+},
+
+
+{
+.name = "ringbuf_read",
+.args_type = "device:s,size:i",
+.params = "device size",
+.help = "Read from a ring buffer character device",
+.cmd = hmp_ringbuf_read,
+.command_completion = ringbuf_write_completion,
+},
+
+
+{
+.name = "migrate",
+.args_type = "detach:-d,blk:-b,inc:-i,uri:s",
+.params = "[-d] [-b] [-i] uri",
+.help = "migrate to URI (using -d to not wait for completion)"
+"\n\t\t\t -b for migration without shared storage with"
+" full copy of disk\n\t\t\t -i for migration without "
+"shared storage with incremental copy of disk "
+"(base image shared between src and destination)",
+.cmd = hmp_migrate,
+},
+
+
+
+{
+.name = "migrate_cancel",
+.args_type = "",
+.params = "",
+.help = "cancel the current VM migration",
+.cmd = hmp_migrate_cancel,
+},
+
+
+{
+.name = "migrate_continue",
+.args_type = "state:s",
+.params = "state",
+.help = "Continue migration from the given paused state",
+.cmd = hmp_migrate_continue,
+},
+
+{
+.name = "migrate_incoming",
+.args_type = "uri:s",
+.params = "uri",
+.help = "Continue an incoming migration from an -incoming defer",
+.cmd = hmp_migrate_incoming,
+},
+
+
+{
+.name = "migrate_set_cache_size",
+.args_type = "value:o",
+.params = "value",
+.help = "set cache size (in bytes) for XBZRLE migrations,"
+"the cache size will be rounded down to the nearest "
+"power of 2.\n"
+"The cache size affects the number of cache misses."
+"In case of a high cache miss ratio you need to increase"
+" the cache size",
+.cmd = hmp_migrate_set_cache_size,
+},
+
+
+{
+.name = "migrate_set_speed",
+.args_type = "value:o",
+.params = "value",
+.help = "set maximum speed (in bytes) for migrations. "
+"Defaults to MB if no size suffix is specified, ie. B/K/M/G/T",
+.cmd = hmp_migrate_set_speed,
+},
+
+
+{
+.name = "migrate_set_downtime",
+.args_type = "value:T",
+.params = "value",
+.help = "set maximum tolerated downtime (in seconds) for migrations",
+.cmd = hmp_migrate_set_downtime,
+},
+
+
+{
+.name = "migrate_set_capability",
+.args_type = "capability:s,state:b",
+.params = "capability state",
+.help = "Enable/Disable the usage of a capability for migration",
+.cmd = hmp_migrate_set_capability,
+.command_completion = migrate_set_capability_completion,
+},
+
+
+{
+.name = "migrate_set_parameter",
+.args_type = "parameter:s,value:s",
+.params = "parameter value",
+.help = "Set the parameter for migration",
+.cmd = hmp_migrate_set_parameter,
+.command_completion = migrate_set_parameter_completion,
+},
+
+
+{
+.name = "migrate_start_postcopy",
+.args_type = "",
+.params = "",
+.help = "Followup to a migration command to switch the migration"
+" to postcopy mode. The postcopy-ram capability must "
+"be set on both source and destination before the "
+"original migration command .",
+.cmd = hmp_migrate_start_postcopy,
+},
+
+
+{
+.name = "x_colo_lost_heartbeat",
+.args_type = "",
+.params = "",
+.help = "Tell COLO that heartbeat is lost,\n\t\t\t"
+"a failover or takeover is needed.",
+.cmd = hmp_x_colo_lost_heartbeat,
+},
+
+
+{
+.name = "client_migrate_info",
+.args_type = "protocol:s,hostname:s,port:i?,tls-port:i?,cert-subject:s?",
+.params = "protocol hostname port tls-port cert-subject",
+.help = "set migration information for remote display",
+.cmd = hmp_client_migrate_info,
+},
+
+
+{
+.name = "dump-guest-memory",
+.args_type = "paging:-p,detach:-d,zlib:-z,lzo:-l,snappy:-s,filename:F,begin:i?,length:i?",
+.params = "[-p] [-d] [-z|-l|-s] filename [begin length]",
+.help = "dump guest memory into file 'filename'.\n\t\t\t"
+"-p: do paging to get guest's memory mapping.\n\t\t\t"
+"-d: return immediately (do not wait for completion).\n\t\t\t"
+"-z: dump in kdump-compressed format, with zlib compression.\n\t\t\t"
+"-l: dump in kdump-compressed format, with lzo compression.\n\t\t\t"
+"-s: dump in kdump-compressed format, with snappy compression.\n\t\t\t"
+"begin: the starting physical address.\n\t\t\t"
+"length: the memory size, in bytes.",
+.cmd = hmp_dump_guest_memory,
+},
+
+
+
+#if defined(TARGET_S390X)
+{
+.name = "dump-skeys",
+.args_type = "filename:F",
+.params = "",
+.help = "Save guest storage keys into file 'filename'.\n",
+.cmd = hmp_dump_skeys,
+},
+#endif
+
+
+#if defined(TARGET_S390X)
+{
+.name = "migration_mode",
+.args_type = "mode:i",
+.params = "mode",
+.help = "Enables or disables migration mode\n",
+.cmd = hmp_migrationmode,
+},
+#endif
+
+
+{
+.name = "snapshot_blkdev",
+.args_type = "reuse:-n,device:B,snapshot-file:s?,format:s?",
+.params = "[-n] device [new-image-file] [format]",
+.help = "initiates a live snapshot\n\t\t\t"
+"of device. If a new image file is specified, the\n\t\t\t"
+"new image file will become the new root image.\n\t\t\t"
+"If format is specified, the snapshot file will\n\t\t\t"
+"be created in that format.\n\t\t\t"
+"The default format is qcow2. The -n flag requests QEMU\n\t\t\t"
+"to reuse the image found in new-image-file, instead of\n\t\t\t"
+"recreating it from scratch.",
+.cmd = hmp_snapshot_blkdev,
+},
+
+
+{
+.name = "snapshot_blkdev_internal",
+.args_type = "device:B,name:s",
+.params = "device name",
+.help = "take an internal snapshot of device.\n\t\t\t"
+"The format of the image used by device must\n\t\t\t"
+"support it, such as qcow2.\n\t\t\t",
+.cmd = hmp_snapshot_blkdev_internal,
+},
+
+
+{
+.name = "snapshot_delete_blkdev_internal",
+.args_type = "device:B,name:s,id:s?",
+.params = "device name [id]",
+.help = "delete an internal snapshot of device.\n\t\t\t"
+"If id is specified, qemu will try delete\n\t\t\t"
+"the snapshot matching both id and name.\n\t\t\t"
+"The format of the image used by device must\n\t\t\t"
+"support it, such as qcow2.\n\t\t\t",
+.cmd = hmp_snapshot_delete_blkdev_internal,
+},
+
+
+{
+.name = "drive_mirror",
+.args_type = "reuse:-n,full:-f,device:B,target:s,format:s?",
+.params = "[-n] [-f] device target [format]",
+.help = "initiates live storage\n\t\t\t"
+"migration for a device. The device's contents are\n\t\t\t"
+"copied to the new image file, including data that\n\t\t\t"
+"is written after the command is started.\n\t\t\t"
+"The -n flag requests QEMU to reuse the image found\n\t\t\t"
+"in new-image-file, instead of recreating it from scratch.\n\t\t\t"
+"The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
+"so that the result does not need a backing file.\n\t\t\t",
+.cmd = hmp_drive_mirror,
+},
+
+{
+.name = "drive_backup",
+.args_type = "reuse:-n,full:-f,compress:-c,device:B,target:s,format:s?",
+.params = "[-n] [-f] [-c] device target [format]",
+.help = "initiates a point-in-time\n\t\t\t"
+"copy for a device. The device's contents are\n\t\t\t"
+"copied to the new image file, excluding data that\n\t\t\t"
+"is written after the command is started.\n\t\t\t"
+"The -n flag requests QEMU to reuse the image found\n\t\t\t"
+"in new-image-file, instead of recreating it from scratch.\n\t\t\t"
+"The -f flag requests QEMU to copy the whole disk,\n\t\t\t"
+"so that the result does not need a backing file.\n\t\t\t"
+"The -c flag requests QEMU to compress backup data\n\t\t\t"
+"(if the target format supports it).\n\t\t\t",
+.cmd = hmp_drive_backup,
+},
+
+{
+.name = "drive_add",
+.args_type = "node:-n,pci_addr:s,opts:s",
+.params = "[-n] [[<domain>:]<bus>:]<slot>\n"
+"[file=file][,if=type][,bus=n]\n"
+"[,unit=m][,media=d][,index=i]\n"
+"[,cyls=c,heads=h,secs=s[,trans=t]]\n"
+"[,snapshot=on|off][,cache=on|off]\n"
+"[,readonly=on|off][,copy-on-read=on|off]",
+.help = "add drive to PCI storage controller",
+.cmd = hmp_drive_add,
+},
+
+
+{
+.name = "pcie_aer_inject_error",
+.args_type = "advisory_non_fatal:-a,correctable:-c,"
+"id:s,error_status:s,"
+"header0:i?,header1:i?,header2:i?,header3:i?,"
+"prefix0:i?,prefix1:i?,prefix2:i?,prefix3:i?",
+.params = "[-a] [-c] id "
+"<error_status> [<tlp header> [<tlp header prefix>]]",
+.help = "inject pcie aer error\n\t\t\t"
+" -a for advisory non fatal error\n\t\t\t"
+" -c for correctable error\n\t\t\t"
+"<id> = qdev device id\n\t\t\t"
+"<error_status> = error string or 32bit\n\t\t\t"
+"<tlb header> = 32bit x 4\n\t\t\t"
+"<tlb header prefix> = 32bit x 4",
+.cmd = hmp_pcie_aer_inject_error,
+},
+
+
+{
+.name = "netdev_add",
+.args_type = "netdev:O",
+.params = "[user|tap|socket|vde|bridge|hubport|netmap|vhost-user],id=str[,prop=value][,...]",
+.help = "add host network device",
+.cmd = hmp_netdev_add,
+.command_completion = netdev_add_completion,
+},
+
+
+{
+.name = "netdev_del",
+.args_type = "id:s",
+.params = "id",
+.help = "remove host network device",
+.cmd = hmp_netdev_del,
+.command_completion = netdev_del_completion,
+},
+
+
+{
+.name = "object_add",
+.args_type = "object:O",
+.params = "[qom-type=]type,id=str[,prop=value][,...]",
+.help = "create QOM object",
+.cmd = hmp_object_add,
+.command_completion = object_add_completion,
+},
+
+
+{
+.name = "object_del",
+.args_type = "id:s",
+.params = "id",
+.help = "destroy QOM object",
+.cmd = hmp_object_del,
+.command_completion = object_del_completion,
+},
+
+
+#ifdef CONFIG_SLIRP
+{
+.name = "hostfwd_add",
+.args_type = "arg1:s,arg2:s?,arg3:s?",
+.params = "[hub_id name]|[netdev_id] [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport",
+.help = "redirect TCP or UDP connections from host to guest (requires -net user)",
+.cmd = hmp_hostfwd_add,
+},
+#endif
+
+#ifdef CONFIG_SLIRP
+{
+.name = "hostfwd_remove",
+.args_type = "arg1:s,arg2:s?,arg3:s?",
+.params = "[hub_id name]|[netdev_id] [tcp|udp]:[hostaddr]:hostport",
+.help = "remove host-to-guest TCP or UDP redirection",
+.cmd = hmp_hostfwd_remove,
+},
+
+#endif
+
+{
+.name = "balloon",
+.args_type = "value:M",
+.params = "target",
+.help = "request VM to change its memory allocation (in MB)",
+.cmd = hmp_balloon,
+},
+
+
+{
+.name = "set_link",
+.args_type = "name:s,up:b",
+.params = "name on|off",
+.help = "change the link status of a network adapter",
+.cmd = hmp_set_link,
+.command_completion = set_link_completion,
+},
+
+
+{
+.name = "watchdog_action",
+.args_type = "action:s",
+.params = "[reset|shutdown|poweroff|pause|debug|none]",
+.help = "change watchdog action",
+.cmd = hmp_watchdog_action,
+.command_completion = watchdog_action_completion,
+},
+
+
+{
+.name = "acl_show",
+.args_type = "aclname:s",
+.params = "aclname",
+.help = "list rules in the access control list",
+.cmd = hmp_acl_show,
+},
+
+
+{
+.name = "acl_policy",
+.args_type = "aclname:s,policy:s",
+.params = "aclname allow|deny",
+.help = "set default access control list policy",
+.cmd = hmp_acl_policy,
+},
+
+
+{
+.name = "acl_add",
+.args_type = "aclname:s,match:s,policy:s,index:i?",
+.params = "aclname match allow|deny [index]",
+.help = "add a match rule to the access control list",
+.cmd = hmp_acl_add,
+},
+
+
+{
+.name = "acl_remove",
+.args_type = "aclname:s,match:s",
+.params = "aclname match",
+.help = "remove a match rule from the access control list",
+.cmd = hmp_acl_remove,
+},
+
+
+{
+.name = "acl_reset",
+.args_type = "aclname:s",
+.params = "aclname",
+.help = "reset the access control list",
+.cmd = hmp_acl_reset,
+},
+
+
+{
+.name = "nbd_server_start",
+.args_type = "all:-a,writable:-w,uri:s",
+.params = "nbd_server_start [-a] [-w] host:port",
+.help = "serve block devices on the given host and port",
+.cmd = hmp_nbd_server_start,
+},
+
+{
+.name = "nbd_server_add",
+.args_type = "writable:-w,device:B,name:s?",
+.params = "nbd_server_add [-w] device [name]",
+.help = "export a block device via NBD",
+.cmd = hmp_nbd_server_add,
+},
+
+{
+.name = "nbd_server_remove",
+.args_type = "force:-f,name:s",
+.params = "nbd_server_remove [-f] name",
+.help = "remove an export previously exposed via NBD",
+.cmd = hmp_nbd_server_remove,
+},
+
+{
+.name = "nbd_server_stop",
+.args_type = "",
+.params = "nbd_server_stop",
+.help = "stop serving block devices using the NBD protocol",
+.cmd = hmp_nbd_server_stop,
+},
+
+
+#if defined(TARGET_I386)
+
+{
+.name = "mce",
+.args_type = "broadcast:-b,cpu_index:i,bank:i,status:l,mcg_status:l,addr:l,misc:l",
+.params = "[-b] cpu bank status mcgstatus addr misc",
+.help = "inject a MCE on the given CPU [and broadcast to other CPUs with -b option]",
+.cmd = hmp_mce,
+},
+
+#endif
+
+{
+.name = "getfd",
+.args_type = "fdname:s",
+.params = "getfd name",
+.help = "receive a file descriptor via SCM rights and assign it a name",
+.cmd = hmp_getfd,
+},
+
+
+{
+.name = "closefd",
+.args_type = "fdname:s",
+.params = "closefd name",
+.help = "close a file descriptor previously passed via SCM rights",
+.cmd = hmp_closefd,
+},
+
+
+{
+.name = "block_passwd",
+.args_type = "device:B,password:s",
+.params = "block_passwd device password",
+.help = "set the password of encrypted block devices",
+.cmd = hmp_block_passwd,
+},
+
+
+{
+.name = "block_set_io_throttle",
+.args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l",
+.params = "device bps bps_rd bps_wr iops iops_rd iops_wr",
+.help = "change I/O throttle limits for a block drive",
+.cmd = hmp_block_set_io_throttle,
+},
+
+
+{
+.name = "set_password",
+.args_type = "protocol:s,password:s,connected:s?",
+.params = "protocol password action-if-connected",
+.help = "set spice/vnc password",
+.cmd = hmp_set_password,
+},
+
+
+{
+.name = "expire_password",
+.args_type = "protocol:s,time:s",
+.params = "protocol time",
+.help = "set spice/vnc password expire-time",
+.cmd = hmp_expire_password,
+},
+
+
+{
+.name = "chardev-add",
+.args_type = "args:s",
+.params = "args",
+.help = "add chardev",
+.cmd = hmp_chardev_add,
+.command_completion = chardev_add_completion,
+},
+
+
+{
+.name = "chardev-change",
+.args_type = "id:s,args:s",
+.params = "id args",
+.help = "change chardev",
+.cmd = hmp_chardev_change,
+},
+
+
+{
+.name = "chardev-remove",
+.args_type = "id:s",
+.params = "id",
+.help = "remove chardev",
+.cmd = hmp_chardev_remove,
+.command_completion = chardev_remove_completion,
+},
+
+
+{
+.name = "chardev-send-break",
+.args_type = "id:s",
+.params = "id",
+.help = "send a break on chardev",
+.cmd = hmp_chardev_send_break,
+.command_completion = chardev_remove_completion,
+},
+
+
+{
+.name = "qemu-io",
+.args_type = "device:B,command:s",
+.params = "[device] \"[command]\"",
+.help = "run a qemu-io command on a block device",
+.cmd = hmp_qemu_io,
+},
+
+
+{
+.name = "cpu-add",
+.args_type = "id:i",
+.params = "id",
+.help = "add cpu",
+.cmd = hmp_cpu_add,
+},
+
+
+{
+.name = "qom-list",
+.args_type = "path:s?",
+.params = "path",
+.help = "list QOM properties",
+.cmd = hmp_qom_list,
+},
+
+
+{
+.name = "qom-set",
+.args_type = "path:s,property:s,value:s",
+.params = "path property value",
+.help = "set QOM property",
+.cmd = hmp_qom_set,
+},
+
+
+{
+.name = "info",
+.args_type = "item:s?",
+.params = "[subcommand]",
+.help = "show various information about the system state",
+.cmd = hmp_info_help,
+.sub_table = info_cmds,
+},
+
diff --git a/qemu2-auto-generated/hw/9pfs/trace.c b/qemu2-auto-generated/hw/9pfs/trace.c
new file mode 100644
index 0000000000..1a26027aee
--- /dev/null
+++ b/qemu2-auto-generated/hw/9pfs/trace.c
@@ -0,0 +1,419 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_V9FS_RCANCEL_DSTATE;
+uint16_t _TRACE_V9FS_RERROR_DSTATE;
+uint16_t _TRACE_V9FS_VERSION_DSTATE;
+uint16_t _TRACE_V9FS_VERSION_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_ATTACH_DSTATE;
+uint16_t _TRACE_V9FS_ATTACH_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_STAT_DSTATE;
+uint16_t _TRACE_V9FS_STAT_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_GETATTR_DSTATE;
+uint16_t _TRACE_V9FS_GETATTR_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_WALK_DSTATE;
+uint16_t _TRACE_V9FS_WALK_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_OPEN_DSTATE;
+uint16_t _TRACE_V9FS_OPEN_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_LCREATE_DSTATE;
+uint16_t _TRACE_V9FS_LCREATE_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_FSYNC_DSTATE;
+uint16_t _TRACE_V9FS_CLUNK_DSTATE;
+uint16_t _TRACE_V9FS_READ_DSTATE;
+uint16_t _TRACE_V9FS_READ_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_READDIR_DSTATE;
+uint16_t _TRACE_V9FS_READDIR_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_WRITE_DSTATE;
+uint16_t _TRACE_V9FS_WRITE_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_CREATE_DSTATE;
+uint16_t _TRACE_V9FS_CREATE_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_SYMLINK_DSTATE;
+uint16_t _TRACE_V9FS_SYMLINK_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_FLUSH_DSTATE;
+uint16_t _TRACE_V9FS_LINK_DSTATE;
+uint16_t _TRACE_V9FS_REMOVE_DSTATE;
+uint16_t _TRACE_V9FS_WSTAT_DSTATE;
+uint16_t _TRACE_V9FS_MKNOD_DSTATE;
+uint16_t _TRACE_V9FS_MKNOD_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_LOCK_DSTATE;
+uint16_t _TRACE_V9FS_LOCK_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_GETLOCK_DSTATE;
+uint16_t _TRACE_V9FS_GETLOCK_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_MKDIR_DSTATE;
+uint16_t _TRACE_V9FS_MKDIR_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_XATTRWALK_DSTATE;
+uint16_t _TRACE_V9FS_XATTRWALK_RETURN_DSTATE;
+uint16_t _TRACE_V9FS_XATTRCREATE_DSTATE;
+uint16_t _TRACE_V9FS_READLINK_DSTATE;
+uint16_t _TRACE_V9FS_READLINK_RETURN_DSTATE;
+TraceEvent _TRACE_V9FS_RCANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_rcancel",
+ .sstate = TRACE_V9FS_RCANCEL_ENABLED,
+ .dstate = &_TRACE_V9FS_RCANCEL_DSTATE
+};
+TraceEvent _TRACE_V9FS_RERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_rerror",
+ .sstate = TRACE_V9FS_RERROR_ENABLED,
+ .dstate = &_TRACE_V9FS_RERROR_DSTATE
+};
+TraceEvent _TRACE_V9FS_VERSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_version",
+ .sstate = TRACE_V9FS_VERSION_ENABLED,
+ .dstate = &_TRACE_V9FS_VERSION_DSTATE
+};
+TraceEvent _TRACE_V9FS_VERSION_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_version_return",
+ .sstate = TRACE_V9FS_VERSION_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_VERSION_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_attach",
+ .sstate = TRACE_V9FS_ATTACH_ENABLED,
+ .dstate = &_TRACE_V9FS_ATTACH_DSTATE
+};
+TraceEvent _TRACE_V9FS_ATTACH_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_attach_return",
+ .sstate = TRACE_V9FS_ATTACH_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_ATTACH_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_STAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_stat",
+ .sstate = TRACE_V9FS_STAT_ENABLED,
+ .dstate = &_TRACE_V9FS_STAT_DSTATE
+};
+TraceEvent _TRACE_V9FS_STAT_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_stat_return",
+ .sstate = TRACE_V9FS_STAT_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_STAT_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_GETATTR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_getattr",
+ .sstate = TRACE_V9FS_GETATTR_ENABLED,
+ .dstate = &_TRACE_V9FS_GETATTR_DSTATE
+};
+TraceEvent _TRACE_V9FS_GETATTR_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_getattr_return",
+ .sstate = TRACE_V9FS_GETATTR_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_GETATTR_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_WALK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_walk",
+ .sstate = TRACE_V9FS_WALK_ENABLED,
+ .dstate = &_TRACE_V9FS_WALK_DSTATE
+};
+TraceEvent _TRACE_V9FS_WALK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_walk_return",
+ .sstate = TRACE_V9FS_WALK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_WALK_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_OPEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_open",
+ .sstate = TRACE_V9FS_OPEN_ENABLED,
+ .dstate = &_TRACE_V9FS_OPEN_DSTATE
+};
+TraceEvent _TRACE_V9FS_OPEN_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_open_return",
+ .sstate = TRACE_V9FS_OPEN_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_OPEN_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_LCREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_lcreate",
+ .sstate = TRACE_V9FS_LCREATE_ENABLED,
+ .dstate = &_TRACE_V9FS_LCREATE_DSTATE
+};
+TraceEvent _TRACE_V9FS_LCREATE_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_lcreate_return",
+ .sstate = TRACE_V9FS_LCREATE_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_LCREATE_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_FSYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_fsync",
+ .sstate = TRACE_V9FS_FSYNC_ENABLED,
+ .dstate = &_TRACE_V9FS_FSYNC_DSTATE
+};
+TraceEvent _TRACE_V9FS_CLUNK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_clunk",
+ .sstate = TRACE_V9FS_CLUNK_ENABLED,
+ .dstate = &_TRACE_V9FS_CLUNK_DSTATE
+};
+TraceEvent _TRACE_V9FS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_read",
+ .sstate = TRACE_V9FS_READ_ENABLED,
+ .dstate = &_TRACE_V9FS_READ_DSTATE
+};
+TraceEvent _TRACE_V9FS_READ_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_read_return",
+ .sstate = TRACE_V9FS_READ_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_READ_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_READDIR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_readdir",
+ .sstate = TRACE_V9FS_READDIR_ENABLED,
+ .dstate = &_TRACE_V9FS_READDIR_DSTATE
+};
+TraceEvent _TRACE_V9FS_READDIR_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_readdir_return",
+ .sstate = TRACE_V9FS_READDIR_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_READDIR_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_write",
+ .sstate = TRACE_V9FS_WRITE_ENABLED,
+ .dstate = &_TRACE_V9FS_WRITE_DSTATE
+};
+TraceEvent _TRACE_V9FS_WRITE_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_write_return",
+ .sstate = TRACE_V9FS_WRITE_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_WRITE_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_create",
+ .sstate = TRACE_V9FS_CREATE_ENABLED,
+ .dstate = &_TRACE_V9FS_CREATE_DSTATE
+};
+TraceEvent _TRACE_V9FS_CREATE_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_create_return",
+ .sstate = TRACE_V9FS_CREATE_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_CREATE_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_SYMLINK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_symlink",
+ .sstate = TRACE_V9FS_SYMLINK_ENABLED,
+ .dstate = &_TRACE_V9FS_SYMLINK_DSTATE
+};
+TraceEvent _TRACE_V9FS_SYMLINK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_symlink_return",
+ .sstate = TRACE_V9FS_SYMLINK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_SYMLINK_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_flush",
+ .sstate = TRACE_V9FS_FLUSH_ENABLED,
+ .dstate = &_TRACE_V9FS_FLUSH_DSTATE
+};
+TraceEvent _TRACE_V9FS_LINK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_link",
+ .sstate = TRACE_V9FS_LINK_ENABLED,
+ .dstate = &_TRACE_V9FS_LINK_DSTATE
+};
+TraceEvent _TRACE_V9FS_REMOVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_remove",
+ .sstate = TRACE_V9FS_REMOVE_ENABLED,
+ .dstate = &_TRACE_V9FS_REMOVE_DSTATE
+};
+TraceEvent _TRACE_V9FS_WSTAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_wstat",
+ .sstate = TRACE_V9FS_WSTAT_ENABLED,
+ .dstate = &_TRACE_V9FS_WSTAT_DSTATE
+};
+TraceEvent _TRACE_V9FS_MKNOD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_mknod",
+ .sstate = TRACE_V9FS_MKNOD_ENABLED,
+ .dstate = &_TRACE_V9FS_MKNOD_DSTATE
+};
+TraceEvent _TRACE_V9FS_MKNOD_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_mknod_return",
+ .sstate = TRACE_V9FS_MKNOD_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_MKNOD_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_LOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_lock",
+ .sstate = TRACE_V9FS_LOCK_ENABLED,
+ .dstate = &_TRACE_V9FS_LOCK_DSTATE
+};
+TraceEvent _TRACE_V9FS_LOCK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_lock_return",
+ .sstate = TRACE_V9FS_LOCK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_LOCK_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_GETLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_getlock",
+ .sstate = TRACE_V9FS_GETLOCK_ENABLED,
+ .dstate = &_TRACE_V9FS_GETLOCK_DSTATE
+};
+TraceEvent _TRACE_V9FS_GETLOCK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_getlock_return",
+ .sstate = TRACE_V9FS_GETLOCK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_GETLOCK_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_MKDIR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_mkdir",
+ .sstate = TRACE_V9FS_MKDIR_ENABLED,
+ .dstate = &_TRACE_V9FS_MKDIR_DSTATE
+};
+TraceEvent _TRACE_V9FS_MKDIR_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_mkdir_return",
+ .sstate = TRACE_V9FS_MKDIR_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_MKDIR_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_XATTRWALK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_xattrwalk",
+ .sstate = TRACE_V9FS_XATTRWALK_ENABLED,
+ .dstate = &_TRACE_V9FS_XATTRWALK_DSTATE
+};
+TraceEvent _TRACE_V9FS_XATTRWALK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_xattrwalk_return",
+ .sstate = TRACE_V9FS_XATTRWALK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_XATTRWALK_RETURN_DSTATE
+};
+TraceEvent _TRACE_V9FS_XATTRCREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_xattrcreate",
+ .sstate = TRACE_V9FS_XATTRCREATE_ENABLED,
+ .dstate = &_TRACE_V9FS_XATTRCREATE_DSTATE
+};
+TraceEvent _TRACE_V9FS_READLINK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_readlink",
+ .sstate = TRACE_V9FS_READLINK_ENABLED,
+ .dstate = &_TRACE_V9FS_READLINK_DSTATE
+};
+TraceEvent _TRACE_V9FS_READLINK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "v9fs_readlink_return",
+ .sstate = TRACE_V9FS_READLINK_RETURN_ENABLED,
+ .dstate = &_TRACE_V9FS_READLINK_RETURN_DSTATE
+};
+TraceEvent *hw_9pfs_trace_events[] = {
+ &_TRACE_V9FS_RCANCEL_EVENT,
+ &_TRACE_V9FS_RERROR_EVENT,
+ &_TRACE_V9FS_VERSION_EVENT,
+ &_TRACE_V9FS_VERSION_RETURN_EVENT,
+ &_TRACE_V9FS_ATTACH_EVENT,
+ &_TRACE_V9FS_ATTACH_RETURN_EVENT,
+ &_TRACE_V9FS_STAT_EVENT,
+ &_TRACE_V9FS_STAT_RETURN_EVENT,
+ &_TRACE_V9FS_GETATTR_EVENT,
+ &_TRACE_V9FS_GETATTR_RETURN_EVENT,
+ &_TRACE_V9FS_WALK_EVENT,
+ &_TRACE_V9FS_WALK_RETURN_EVENT,
+ &_TRACE_V9FS_OPEN_EVENT,
+ &_TRACE_V9FS_OPEN_RETURN_EVENT,
+ &_TRACE_V9FS_LCREATE_EVENT,
+ &_TRACE_V9FS_LCREATE_RETURN_EVENT,
+ &_TRACE_V9FS_FSYNC_EVENT,
+ &_TRACE_V9FS_CLUNK_EVENT,
+ &_TRACE_V9FS_READ_EVENT,
+ &_TRACE_V9FS_READ_RETURN_EVENT,
+ &_TRACE_V9FS_READDIR_EVENT,
+ &_TRACE_V9FS_READDIR_RETURN_EVENT,
+ &_TRACE_V9FS_WRITE_EVENT,
+ &_TRACE_V9FS_WRITE_RETURN_EVENT,
+ &_TRACE_V9FS_CREATE_EVENT,
+ &_TRACE_V9FS_CREATE_RETURN_EVENT,
+ &_TRACE_V9FS_SYMLINK_EVENT,
+ &_TRACE_V9FS_SYMLINK_RETURN_EVENT,
+ &_TRACE_V9FS_FLUSH_EVENT,
+ &_TRACE_V9FS_LINK_EVENT,
+ &_TRACE_V9FS_REMOVE_EVENT,
+ &_TRACE_V9FS_WSTAT_EVENT,
+ &_TRACE_V9FS_MKNOD_EVENT,
+ &_TRACE_V9FS_MKNOD_RETURN_EVENT,
+ &_TRACE_V9FS_LOCK_EVENT,
+ &_TRACE_V9FS_LOCK_RETURN_EVENT,
+ &_TRACE_V9FS_GETLOCK_EVENT,
+ &_TRACE_V9FS_GETLOCK_RETURN_EVENT,
+ &_TRACE_V9FS_MKDIR_EVENT,
+ &_TRACE_V9FS_MKDIR_RETURN_EVENT,
+ &_TRACE_V9FS_XATTRWALK_EVENT,
+ &_TRACE_V9FS_XATTRWALK_RETURN_EVENT,
+ &_TRACE_V9FS_XATTRCREATE_EVENT,
+ &_TRACE_V9FS_READLINK_EVENT,
+ &_TRACE_V9FS_READLINK_RETURN_EVENT,
+ NULL,
+};
+
+static void trace_hw_9pfs_register_events(void)
+{
+ trace_event_register_group(hw_9pfs_trace_events);
+}
+trace_init(trace_hw_9pfs_register_events)
diff --git a/qemu2-auto-generated/hw/9pfs/trace.h b/qemu2-auto-generated/hw/9pfs/trace.h
new file mode 100644
index 0000000000..0fd14585c8
--- /dev/null
+++ b/qemu2-auto-generated/hw/9pfs/trace.h
@@ -0,0 +1,774 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_9PFS_GENERATED_TRACERS_H
+#define TRACE_HW_9PFS_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_V9FS_RCANCEL_EVENT;
+extern TraceEvent _TRACE_V9FS_RERROR_EVENT;
+extern TraceEvent _TRACE_V9FS_VERSION_EVENT;
+extern TraceEvent _TRACE_V9FS_VERSION_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_ATTACH_EVENT;
+extern TraceEvent _TRACE_V9FS_ATTACH_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_STAT_EVENT;
+extern TraceEvent _TRACE_V9FS_STAT_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_GETATTR_EVENT;
+extern TraceEvent _TRACE_V9FS_GETATTR_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_WALK_EVENT;
+extern TraceEvent _TRACE_V9FS_WALK_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_OPEN_EVENT;
+extern TraceEvent _TRACE_V9FS_OPEN_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_LCREATE_EVENT;
+extern TraceEvent _TRACE_V9FS_LCREATE_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_FSYNC_EVENT;
+extern TraceEvent _TRACE_V9FS_CLUNK_EVENT;
+extern TraceEvent _TRACE_V9FS_READ_EVENT;
+extern TraceEvent _TRACE_V9FS_READ_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_READDIR_EVENT;
+extern TraceEvent _TRACE_V9FS_READDIR_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_WRITE_EVENT;
+extern TraceEvent _TRACE_V9FS_WRITE_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_CREATE_EVENT;
+extern TraceEvent _TRACE_V9FS_CREATE_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_SYMLINK_EVENT;
+extern TraceEvent _TRACE_V9FS_SYMLINK_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_FLUSH_EVENT;
+extern TraceEvent _TRACE_V9FS_LINK_EVENT;
+extern TraceEvent _TRACE_V9FS_REMOVE_EVENT;
+extern TraceEvent _TRACE_V9FS_WSTAT_EVENT;
+extern TraceEvent _TRACE_V9FS_MKNOD_EVENT;
+extern TraceEvent _TRACE_V9FS_MKNOD_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_LOCK_EVENT;
+extern TraceEvent _TRACE_V9FS_LOCK_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_GETLOCK_EVENT;
+extern TraceEvent _TRACE_V9FS_GETLOCK_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_MKDIR_EVENT;
+extern TraceEvent _TRACE_V9FS_MKDIR_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_XATTRWALK_EVENT;
+extern TraceEvent _TRACE_V9FS_XATTRWALK_RETURN_EVENT;
+extern TraceEvent _TRACE_V9FS_XATTRCREATE_EVENT;
+extern TraceEvent _TRACE_V9FS_READLINK_EVENT;
+extern TraceEvent _TRACE_V9FS_READLINK_RETURN_EVENT;
+extern uint16_t _TRACE_V9FS_RCANCEL_DSTATE;
+extern uint16_t _TRACE_V9FS_RERROR_DSTATE;
+extern uint16_t _TRACE_V9FS_VERSION_DSTATE;
+extern uint16_t _TRACE_V9FS_VERSION_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_ATTACH_DSTATE;
+extern uint16_t _TRACE_V9FS_ATTACH_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_STAT_DSTATE;
+extern uint16_t _TRACE_V9FS_STAT_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_GETATTR_DSTATE;
+extern uint16_t _TRACE_V9FS_GETATTR_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_WALK_DSTATE;
+extern uint16_t _TRACE_V9FS_WALK_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_OPEN_DSTATE;
+extern uint16_t _TRACE_V9FS_OPEN_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_LCREATE_DSTATE;
+extern uint16_t _TRACE_V9FS_LCREATE_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_FSYNC_DSTATE;
+extern uint16_t _TRACE_V9FS_CLUNK_DSTATE;
+extern uint16_t _TRACE_V9FS_READ_DSTATE;
+extern uint16_t _TRACE_V9FS_READ_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_READDIR_DSTATE;
+extern uint16_t _TRACE_V9FS_READDIR_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_WRITE_DSTATE;
+extern uint16_t _TRACE_V9FS_WRITE_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_CREATE_DSTATE;
+extern uint16_t _TRACE_V9FS_CREATE_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_SYMLINK_DSTATE;
+extern uint16_t _TRACE_V9FS_SYMLINK_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_FLUSH_DSTATE;
+extern uint16_t _TRACE_V9FS_LINK_DSTATE;
+extern uint16_t _TRACE_V9FS_REMOVE_DSTATE;
+extern uint16_t _TRACE_V9FS_WSTAT_DSTATE;
+extern uint16_t _TRACE_V9FS_MKNOD_DSTATE;
+extern uint16_t _TRACE_V9FS_MKNOD_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_LOCK_DSTATE;
+extern uint16_t _TRACE_V9FS_LOCK_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_GETLOCK_DSTATE;
+extern uint16_t _TRACE_V9FS_GETLOCK_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_MKDIR_DSTATE;
+extern uint16_t _TRACE_V9FS_MKDIR_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_XATTRWALK_DSTATE;
+extern uint16_t _TRACE_V9FS_XATTRWALK_RETURN_DSTATE;
+extern uint16_t _TRACE_V9FS_XATTRCREATE_DSTATE;
+extern uint16_t _TRACE_V9FS_READLINK_DSTATE;
+extern uint16_t _TRACE_V9FS_READLINK_RETURN_DSTATE;
+#define TRACE_V9FS_RCANCEL_ENABLED 1
+#define TRACE_V9FS_RERROR_ENABLED 1
+#define TRACE_V9FS_VERSION_ENABLED 1
+#define TRACE_V9FS_VERSION_RETURN_ENABLED 1
+#define TRACE_V9FS_ATTACH_ENABLED 1
+#define TRACE_V9FS_ATTACH_RETURN_ENABLED 1
+#define TRACE_V9FS_STAT_ENABLED 1
+#define TRACE_V9FS_STAT_RETURN_ENABLED 1
+#define TRACE_V9FS_GETATTR_ENABLED 1
+#define TRACE_V9FS_GETATTR_RETURN_ENABLED 1
+#define TRACE_V9FS_WALK_ENABLED 1
+#define TRACE_V9FS_WALK_RETURN_ENABLED 1
+#define TRACE_V9FS_OPEN_ENABLED 1
+#define TRACE_V9FS_OPEN_RETURN_ENABLED 1
+#define TRACE_V9FS_LCREATE_ENABLED 1
+#define TRACE_V9FS_LCREATE_RETURN_ENABLED 1
+#define TRACE_V9FS_FSYNC_ENABLED 1
+#define TRACE_V9FS_CLUNK_ENABLED 1
+#define TRACE_V9FS_READ_ENABLED 1
+#define TRACE_V9FS_READ_RETURN_ENABLED 1
+#define TRACE_V9FS_READDIR_ENABLED 1
+#define TRACE_V9FS_READDIR_RETURN_ENABLED 1
+#define TRACE_V9FS_WRITE_ENABLED 1
+#define TRACE_V9FS_WRITE_RETURN_ENABLED 1
+#define TRACE_V9FS_CREATE_ENABLED 1
+#define TRACE_V9FS_CREATE_RETURN_ENABLED 1
+#define TRACE_V9FS_SYMLINK_ENABLED 1
+#define TRACE_V9FS_SYMLINK_RETURN_ENABLED 1
+#define TRACE_V9FS_FLUSH_ENABLED 1
+#define TRACE_V9FS_LINK_ENABLED 1
+#define TRACE_V9FS_REMOVE_ENABLED 1
+#define TRACE_V9FS_WSTAT_ENABLED 1
+#define TRACE_V9FS_MKNOD_ENABLED 1
+#define TRACE_V9FS_MKNOD_RETURN_ENABLED 1
+#define TRACE_V9FS_LOCK_ENABLED 1
+#define TRACE_V9FS_LOCK_RETURN_ENABLED 1
+#define TRACE_V9FS_GETLOCK_ENABLED 1
+#define TRACE_V9FS_GETLOCK_RETURN_ENABLED 1
+#define TRACE_V9FS_MKDIR_ENABLED 1
+#define TRACE_V9FS_MKDIR_RETURN_ENABLED 1
+#define TRACE_V9FS_XATTRWALK_ENABLED 1
+#define TRACE_V9FS_XATTRWALK_RETURN_ENABLED 1
+#define TRACE_V9FS_XATTRCREATE_ENABLED 1
+#define TRACE_V9FS_READLINK_ENABLED 1
+#define TRACE_V9FS_READLINK_RETURN_ENABLED 1
+
+#define TRACE_V9FS_RCANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_rcancel(uint16_t tag, uint8_t id)
+{
+}
+
+static inline void trace_v9fs_rcancel(uint16_t tag, uint8_t id)
+{
+ if (true) {
+ _nocheck__trace_v9fs_rcancel(tag, id);
+ }
+}
+
+#define TRACE_V9FS_RERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_rerror(uint16_t tag, uint8_t id, int err)
+{
+}
+
+static inline void trace_v9fs_rerror(uint16_t tag, uint8_t id, int err)
+{
+ if (true) {
+ _nocheck__trace_v9fs_rerror(tag, id, err);
+ }
+}
+
+#define TRACE_V9FS_VERSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_version(uint16_t tag, uint8_t id, int32_t msize, char* version)
+{
+}
+
+static inline void trace_v9fs_version(uint16_t tag, uint8_t id, int32_t msize, char* version)
+{
+ if (true) {
+ _nocheck__trace_v9fs_version(tag, id, msize, version);
+ }
+}
+
+#define TRACE_V9FS_VERSION_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_version_return(uint16_t tag, uint8_t id, int32_t msize, char* version)
+{
+}
+
+static inline void trace_v9fs_version_return(uint16_t tag, uint8_t id, int32_t msize, char* version)
+{
+ if (true) {
+ _nocheck__trace_v9fs_version_return(tag, id, msize, version);
+ }
+}
+
+#define TRACE_V9FS_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_attach(uint16_t tag, uint8_t id, int32_t fid, int32_t afid, char* uname, char* aname)
+{
+}
+
+static inline void trace_v9fs_attach(uint16_t tag, uint8_t id, int32_t fid, int32_t afid, char* uname, char* aname)
+{
+ if (true) {
+ _nocheck__trace_v9fs_attach(tag, id, fid, afid, uname, aname);
+ }
+}
+
+#define TRACE_V9FS_ATTACH_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_attach_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+}
+
+static inline void trace_v9fs_attach_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+ if (true) {
+ _nocheck__trace_v9fs_attach_return(tag, id, type, version, path);
+ }
+}
+
+#define TRACE_V9FS_STAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_stat(uint16_t tag, uint8_t id, int32_t fid)
+{
+}
+
+static inline void trace_v9fs_stat(uint16_t tag, uint8_t id, int32_t fid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_stat(tag, id, fid);
+ }
+}
+
+#define TRACE_V9FS_STAT_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_stat_return(uint16_t tag, uint8_t id, int32_t mode, int32_t atime, int32_t mtime, int64_t length)
+{
+}
+
+static inline void trace_v9fs_stat_return(uint16_t tag, uint8_t id, int32_t mode, int32_t atime, int32_t mtime, int64_t length)
+{
+ if (true) {
+ _nocheck__trace_v9fs_stat_return(tag, id, mode, atime, mtime, length);
+ }
+}
+
+#define TRACE_V9FS_GETATTR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_getattr(uint16_t tag, uint8_t id, int32_t fid, uint64_t request_mask)
+{
+}
+
+static inline void trace_v9fs_getattr(uint16_t tag, uint8_t id, int32_t fid, uint64_t request_mask)
+{
+ if (true) {
+ _nocheck__trace_v9fs_getattr(tag, id, fid, request_mask);
+ }
+}
+
+#define TRACE_V9FS_GETATTR_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_getattr_return(uint16_t tag, uint8_t id, uint64_t result_mask, uint32_t mode, uint32_t uid, uint32_t gid)
+{
+}
+
+static inline void trace_v9fs_getattr_return(uint16_t tag, uint8_t id, uint64_t result_mask, uint32_t mode, uint32_t uid, uint32_t gid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_getattr_return(tag, id, result_mask, mode, uid, gid);
+ }
+}
+
+#define TRACE_V9FS_WALK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_walk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, uint16_t nwnames)
+{
+}
+
+static inline void trace_v9fs_walk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, uint16_t nwnames)
+{
+ if (true) {
+ _nocheck__trace_v9fs_walk(tag, id, fid, newfid, nwnames);
+ }
+}
+
+#define TRACE_V9FS_WALK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_walk_return(uint16_t tag, uint8_t id, uint16_t nwnames, void* qids)
+{
+}
+
+static inline void trace_v9fs_walk_return(uint16_t tag, uint8_t id, uint16_t nwnames, void* qids)
+{
+ if (true) {
+ _nocheck__trace_v9fs_walk_return(tag, id, nwnames, qids);
+ }
+}
+
+#define TRACE_V9FS_OPEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_open(uint16_t tag, uint8_t id, int32_t fid, int32_t mode)
+{
+}
+
+static inline void trace_v9fs_open(uint16_t tag, uint8_t id, int32_t fid, int32_t mode)
+{
+ if (true) {
+ _nocheck__trace_v9fs_open(tag, id, fid, mode);
+ }
+}
+
+#define TRACE_V9FS_OPEN_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_open_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int iounit)
+{
+}
+
+static inline void trace_v9fs_open_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int iounit)
+{
+ if (true) {
+ _nocheck__trace_v9fs_open_return(tag, id, type, version, path, iounit);
+ }
+}
+
+#define TRACE_V9FS_LCREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_lcreate(uint16_t tag, uint8_t id, int32_t dfid, int32_t flags, int32_t mode, uint32_t gid)
+{
+}
+
+static inline void trace_v9fs_lcreate(uint16_t tag, uint8_t id, int32_t dfid, int32_t flags, int32_t mode, uint32_t gid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_lcreate(tag, id, dfid, flags, mode, gid);
+ }
+}
+
+#define TRACE_V9FS_LCREATE_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_lcreate_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int32_t iounit)
+{
+}
+
+static inline void trace_v9fs_lcreate_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int32_t iounit)
+{
+ if (true) {
+ _nocheck__trace_v9fs_lcreate_return(tag, id, type, version, path, iounit);
+ }
+}
+
+#define TRACE_V9FS_FSYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_fsync(uint16_t tag, uint8_t id, int32_t fid, int datasync)
+{
+}
+
+static inline void trace_v9fs_fsync(uint16_t tag, uint8_t id, int32_t fid, int datasync)
+{
+ if (true) {
+ _nocheck__trace_v9fs_fsync(tag, id, fid, datasync);
+ }
+}
+
+#define TRACE_V9FS_CLUNK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_clunk(uint16_t tag, uint8_t id, int32_t fid)
+{
+}
+
+static inline void trace_v9fs_clunk(uint16_t tag, uint8_t id, int32_t fid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_clunk(tag, id, fid);
+ }
+}
+
+#define TRACE_V9FS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_read(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t max_count)
+{
+}
+
+static inline void trace_v9fs_read(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t max_count)
+{
+ if (true) {
+ _nocheck__trace_v9fs_read(tag, id, fid, off, max_count);
+ }
+}
+
+#define TRACE_V9FS_READ_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_read_return(uint16_t tag, uint8_t id, int32_t count, ssize_t err)
+{
+}
+
+static inline void trace_v9fs_read_return(uint16_t tag, uint8_t id, int32_t count, ssize_t err)
+{
+ if (true) {
+ _nocheck__trace_v9fs_read_return(tag, id, count, err);
+ }
+}
+
+#define TRACE_V9FS_READDIR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_readdir(uint16_t tag, uint8_t id, int32_t fid, uint64_t offset, uint32_t max_count)
+{
+}
+
+static inline void trace_v9fs_readdir(uint16_t tag, uint8_t id, int32_t fid, uint64_t offset, uint32_t max_count)
+{
+ if (true) {
+ _nocheck__trace_v9fs_readdir(tag, id, fid, offset, max_count);
+ }
+}
+
+#define TRACE_V9FS_READDIR_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_readdir_return(uint16_t tag, uint8_t id, uint32_t count, ssize_t retval)
+{
+}
+
+static inline void trace_v9fs_readdir_return(uint16_t tag, uint8_t id, uint32_t count, ssize_t retval)
+{
+ if (true) {
+ _nocheck__trace_v9fs_readdir_return(tag, id, count, retval);
+ }
+}
+
+#define TRACE_V9FS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_write(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t count, int cnt)
+{
+}
+
+static inline void trace_v9fs_write(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t count, int cnt)
+{
+ if (true) {
+ _nocheck__trace_v9fs_write(tag, id, fid, off, count, cnt);
+ }
+}
+
+#define TRACE_V9FS_WRITE_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_write_return(uint16_t tag, uint8_t id, int32_t total, ssize_t err)
+{
+}
+
+static inline void trace_v9fs_write_return(uint16_t tag, uint8_t id, int32_t total, ssize_t err)
+{
+ if (true) {
+ _nocheck__trace_v9fs_write_return(tag, id, total, err);
+ }
+}
+
+#define TRACE_V9FS_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_create(uint16_t tag, uint8_t id, int32_t fid, char* name, int32_t perm, int8_t mode)
+{
+}
+
+static inline void trace_v9fs_create(uint16_t tag, uint8_t id, int32_t fid, char* name, int32_t perm, int8_t mode)
+{
+ if (true) {
+ _nocheck__trace_v9fs_create(tag, id, fid, name, perm, mode);
+ }
+}
+
+#define TRACE_V9FS_CREATE_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_create_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int iounit)
+{
+}
+
+static inline void trace_v9fs_create_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int iounit)
+{
+ if (true) {
+ _nocheck__trace_v9fs_create_return(tag, id, type, version, path, iounit);
+ }
+}
+
+#define TRACE_V9FS_SYMLINK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_symlink(uint16_t tag, uint8_t id, int32_t fid, char* name, char* symname, uint32_t gid)
+{
+}
+
+static inline void trace_v9fs_symlink(uint16_t tag, uint8_t id, int32_t fid, char* name, char* symname, uint32_t gid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_symlink(tag, id, fid, name, symname, gid);
+ }
+}
+
+#define TRACE_V9FS_SYMLINK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_symlink_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+}
+
+static inline void trace_v9fs_symlink_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+ if (true) {
+ _nocheck__trace_v9fs_symlink_return(tag, id, type, version, path);
+ }
+}
+
+#define TRACE_V9FS_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_flush(uint16_t tag, uint8_t id, int16_t flush_tag)
+{
+}
+
+static inline void trace_v9fs_flush(uint16_t tag, uint8_t id, int16_t flush_tag)
+{
+ if (true) {
+ _nocheck__trace_v9fs_flush(tag, id, flush_tag);
+ }
+}
+
+#define TRACE_V9FS_LINK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_link(uint16_t tag, uint8_t id, int32_t dfid, int32_t oldfid, char* name)
+{
+}
+
+static inline void trace_v9fs_link(uint16_t tag, uint8_t id, int32_t dfid, int32_t oldfid, char* name)
+{
+ if (true) {
+ _nocheck__trace_v9fs_link(tag, id, dfid, oldfid, name);
+ }
+}
+
+#define TRACE_V9FS_REMOVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_remove(uint16_t tag, uint8_t id, int32_t fid)
+{
+}
+
+static inline void trace_v9fs_remove(uint16_t tag, uint8_t id, int32_t fid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_remove(tag, id, fid);
+ }
+}
+
+#define TRACE_V9FS_WSTAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_wstat(uint16_t tag, uint8_t id, int32_t fid, int32_t mode, int32_t atime, int32_t mtime)
+{
+}
+
+static inline void trace_v9fs_wstat(uint16_t tag, uint8_t id, int32_t fid, int32_t mode, int32_t atime, int32_t mtime)
+{
+ if (true) {
+ _nocheck__trace_v9fs_wstat(tag, id, fid, mode, atime, mtime);
+ }
+}
+
+#define TRACE_V9FS_MKNOD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_mknod(uint16_t tag, uint8_t id, int32_t fid, int mode, int major, int minor)
+{
+}
+
+static inline void trace_v9fs_mknod(uint16_t tag, uint8_t id, int32_t fid, int mode, int major, int minor)
+{
+ if (true) {
+ _nocheck__trace_v9fs_mknod(tag, id, fid, mode, major, minor);
+ }
+}
+
+#define TRACE_V9FS_MKNOD_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_mknod_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+}
+
+static inline void trace_v9fs_mknod_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path)
+{
+ if (true) {
+ _nocheck__trace_v9fs_mknod_return(tag, id, type, version, path);
+ }
+}
+
+#define TRACE_V9FS_LOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_lock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t start, uint64_t length)
+{
+}
+
+static inline void trace_v9fs_lock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t start, uint64_t length)
+{
+ if (true) {
+ _nocheck__trace_v9fs_lock(tag, id, fid, type, start, length);
+ }
+}
+
+#define TRACE_V9FS_LOCK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_lock_return(uint16_t tag, uint8_t id, int8_t status)
+{
+}
+
+static inline void trace_v9fs_lock_return(uint16_t tag, uint8_t id, int8_t status)
+{
+ if (true) {
+ _nocheck__trace_v9fs_lock_return(tag, id, status);
+ }
+}
+
+#define TRACE_V9FS_GETLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_getlock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t start, uint64_t length)
+{
+}
+
+static inline void trace_v9fs_getlock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t start, uint64_t length)
+{
+ if (true) {
+ _nocheck__trace_v9fs_getlock(tag, id, fid, type, start, length);
+ }
+}
+
+#define TRACE_V9FS_GETLOCK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_getlock_return(uint16_t tag, uint8_t id, uint8_t type, uint64_t start, uint64_t length, uint32_t proc_id)
+{
+}
+
+static inline void trace_v9fs_getlock_return(uint16_t tag, uint8_t id, uint8_t type, uint64_t start, uint64_t length, uint32_t proc_id)
+{
+ if (true) {
+ _nocheck__trace_v9fs_getlock_return(tag, id, type, start, length, proc_id);
+ }
+}
+
+#define TRACE_V9FS_MKDIR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_mkdir(uint16_t tag, uint8_t id, int32_t fid, char* name, int mode, uint32_t gid)
+{
+}
+
+static inline void trace_v9fs_mkdir(uint16_t tag, uint8_t id, int32_t fid, char* name, int mode, uint32_t gid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_mkdir(tag, id, fid, name, mode, gid);
+ }
+}
+
+#define TRACE_V9FS_MKDIR_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_mkdir_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int err)
+{
+}
+
+static inline void trace_v9fs_mkdir_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, int64_t path, int err)
+{
+ if (true) {
+ _nocheck__trace_v9fs_mkdir_return(tag, id, type, version, path, err);
+ }
+}
+
+#define TRACE_V9FS_XATTRWALK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_xattrwalk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, char* name)
+{
+}
+
+static inline void trace_v9fs_xattrwalk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, char* name)
+{
+ if (true) {
+ _nocheck__trace_v9fs_xattrwalk(tag, id, fid, newfid, name);
+ }
+}
+
+#define TRACE_V9FS_XATTRWALK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_xattrwalk_return(uint16_t tag, uint8_t id, int64_t size)
+{
+}
+
+static inline void trace_v9fs_xattrwalk_return(uint16_t tag, uint8_t id, int64_t size)
+{
+ if (true) {
+ _nocheck__trace_v9fs_xattrwalk_return(tag, id, size);
+ }
+}
+
+#define TRACE_V9FS_XATTRCREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_xattrcreate(uint16_t tag, uint8_t id, int32_t fid, char* name, uint64_t size, int flags)
+{
+}
+
+static inline void trace_v9fs_xattrcreate(uint16_t tag, uint8_t id, int32_t fid, char* name, uint64_t size, int flags)
+{
+ if (true) {
+ _nocheck__trace_v9fs_xattrcreate(tag, id, fid, name, size, flags);
+ }
+}
+
+#define TRACE_V9FS_READLINK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_readlink(uint16_t tag, uint8_t id, int32_t fid)
+{
+}
+
+static inline void trace_v9fs_readlink(uint16_t tag, uint8_t id, int32_t fid)
+{
+ if (true) {
+ _nocheck__trace_v9fs_readlink(tag, id, fid);
+ }
+}
+
+#define TRACE_V9FS_READLINK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_v9fs_readlink_return(uint16_t tag, uint8_t id, char* target)
+{
+}
+
+static inline void trace_v9fs_readlink_return(uint16_t tag, uint8_t id, char* target)
+{
+ if (true) {
+ _nocheck__trace_v9fs_readlink_return(tag, id, target);
+ }
+}
+#endif /* TRACE_HW_9PFS_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/acpi/trace.c b/qemu2-auto-generated/hw/acpi/trace.c
new file mode 100644
index 0000000000..beec673038
--- /dev/null
+++ b/qemu2-auto-generated/hw/acpi/trace.c
@@ -0,0 +1,275 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_DSTATE;
+uint16_t _TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_ADDR_LO_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_ADDR_HI_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_SIZE_LO_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_SIZE_HI_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_PXM_DSTATE;
+uint16_t _TRACE_MHP_ACPI_READ_FLAGS_DSTATE;
+uint16_t _TRACE_MHP_ACPI_WRITE_SLOT_DSTATE;
+uint16_t _TRACE_MHP_ACPI_WRITE_OST_EV_DSTATE;
+uint16_t _TRACE_MHP_ACPI_WRITE_OST_STATUS_DSTATE;
+uint16_t _TRACE_MHP_ACPI_CLEAR_INSERT_EVT_DSTATE;
+uint16_t _TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_DSTATE;
+uint16_t _TRACE_MHP_ACPI_PC_DIMM_DELETED_DSTATE;
+uint16_t _TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_READ_FLAGS_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_WRITE_IDX_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_WRITE_CMD_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_READ_CMD_DATA_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_EJECTING_CPU_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_WRITE_OST_EV_DSTATE;
+uint16_t _TRACE_CPUHP_ACPI_WRITE_OST_STATUS_DSTATE;
+uint16_t _TRACE_TCO_TIMER_RELOAD_DSTATE;
+uint16_t _TRACE_TCO_TIMER_EXPIRED_DSTATE;
+TraceEvent _TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_invalid_slot_selected",
+ .sstate = TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_ejecting_invalid_slot",
+ .sstate = TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_ADDR_LO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_addr_lo",
+ .sstate = TRACE_MHP_ACPI_READ_ADDR_LO_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_ADDR_LO_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_ADDR_HI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_addr_hi",
+ .sstate = TRACE_MHP_ACPI_READ_ADDR_HI_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_ADDR_HI_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_SIZE_LO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_size_lo",
+ .sstate = TRACE_MHP_ACPI_READ_SIZE_LO_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_SIZE_LO_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_SIZE_HI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_size_hi",
+ .sstate = TRACE_MHP_ACPI_READ_SIZE_HI_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_SIZE_HI_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_PXM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_pxm",
+ .sstate = TRACE_MHP_ACPI_READ_PXM_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_PXM_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_READ_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_read_flags",
+ .sstate = TRACE_MHP_ACPI_READ_FLAGS_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_READ_FLAGS_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_WRITE_SLOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_write_slot",
+ .sstate = TRACE_MHP_ACPI_WRITE_SLOT_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_WRITE_SLOT_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_WRITE_OST_EV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_write_ost_ev",
+ .sstate = TRACE_MHP_ACPI_WRITE_OST_EV_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_WRITE_OST_EV_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_WRITE_OST_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_write_ost_status",
+ .sstate = TRACE_MHP_ACPI_WRITE_OST_STATUS_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_WRITE_OST_STATUS_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_CLEAR_INSERT_EVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_clear_insert_evt",
+ .sstate = TRACE_MHP_ACPI_CLEAR_INSERT_EVT_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_CLEAR_INSERT_EVT_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_clear_remove_evt",
+ .sstate = TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_PC_DIMM_DELETED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_pc_dimm_deleted",
+ .sstate = TRACE_MHP_ACPI_PC_DIMM_DELETED_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_PC_DIMM_DELETED_DSTATE
+};
+TraceEvent _TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_acpi_pc_dimm_delete_failed",
+ .sstate = TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_ENABLED,
+ .dstate = &_TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_invalid_idx_selected",
+ .sstate = TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_READ_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_read_flags",
+ .sstate = TRACE_CPUHP_ACPI_READ_FLAGS_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_READ_FLAGS_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_WRITE_IDX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_write_idx",
+ .sstate = TRACE_CPUHP_ACPI_WRITE_IDX_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_WRITE_IDX_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_WRITE_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_write_cmd",
+ .sstate = TRACE_CPUHP_ACPI_WRITE_CMD_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_WRITE_CMD_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_READ_CMD_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_read_cmd_data",
+ .sstate = TRACE_CPUHP_ACPI_READ_CMD_DATA_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_READ_CMD_DATA_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_cpu_has_events",
+ .sstate = TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_clear_inserting_evt",
+ .sstate = TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_clear_remove_evt",
+ .sstate = TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_ejecting_invalid_cpu",
+ .sstate = TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_EJECTING_CPU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_ejecting_cpu",
+ .sstate = TRACE_CPUHP_ACPI_EJECTING_CPU_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_EJECTING_CPU_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_WRITE_OST_EV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_write_ost_ev",
+ .sstate = TRACE_CPUHP_ACPI_WRITE_OST_EV_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_WRITE_OST_EV_DSTATE
+};
+TraceEvent _TRACE_CPUHP_ACPI_WRITE_OST_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpuhp_acpi_write_ost_status",
+ .sstate = TRACE_CPUHP_ACPI_WRITE_OST_STATUS_ENABLED,
+ .dstate = &_TRACE_CPUHP_ACPI_WRITE_OST_STATUS_DSTATE
+};
+TraceEvent _TRACE_TCO_TIMER_RELOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tco_timer_reload",
+ .sstate = TRACE_TCO_TIMER_RELOAD_ENABLED,
+ .dstate = &_TRACE_TCO_TIMER_RELOAD_DSTATE
+};
+TraceEvent _TRACE_TCO_TIMER_EXPIRED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tco_timer_expired",
+ .sstate = TRACE_TCO_TIMER_EXPIRED_ENABLED,
+ .dstate = &_TRACE_TCO_TIMER_EXPIRED_DSTATE
+};
+TraceEvent *hw_acpi_trace_events[] = {
+ &_TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_EVENT,
+ &_TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_EVENT,
+ &_TRACE_MHP_ACPI_READ_ADDR_LO_EVENT,
+ &_TRACE_MHP_ACPI_READ_ADDR_HI_EVENT,
+ &_TRACE_MHP_ACPI_READ_SIZE_LO_EVENT,
+ &_TRACE_MHP_ACPI_READ_SIZE_HI_EVENT,
+ &_TRACE_MHP_ACPI_READ_PXM_EVENT,
+ &_TRACE_MHP_ACPI_READ_FLAGS_EVENT,
+ &_TRACE_MHP_ACPI_WRITE_SLOT_EVENT,
+ &_TRACE_MHP_ACPI_WRITE_OST_EV_EVENT,
+ &_TRACE_MHP_ACPI_WRITE_OST_STATUS_EVENT,
+ &_TRACE_MHP_ACPI_CLEAR_INSERT_EVT_EVENT,
+ &_TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_EVENT,
+ &_TRACE_MHP_ACPI_PC_DIMM_DELETED_EVENT,
+ &_TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_EVENT,
+ &_TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_EVENT,
+ &_TRACE_CPUHP_ACPI_READ_FLAGS_EVENT,
+ &_TRACE_CPUHP_ACPI_WRITE_IDX_EVENT,
+ &_TRACE_CPUHP_ACPI_WRITE_CMD_EVENT,
+ &_TRACE_CPUHP_ACPI_READ_CMD_DATA_EVENT,
+ &_TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_EVENT,
+ &_TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_EVENT,
+ &_TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_EVENT,
+ &_TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_EVENT,
+ &_TRACE_CPUHP_ACPI_EJECTING_CPU_EVENT,
+ &_TRACE_CPUHP_ACPI_WRITE_OST_EV_EVENT,
+ &_TRACE_CPUHP_ACPI_WRITE_OST_STATUS_EVENT,
+ &_TRACE_TCO_TIMER_RELOAD_EVENT,
+ &_TRACE_TCO_TIMER_EXPIRED_EVENT,
+ NULL,
+};
+
+static void trace_hw_acpi_register_events(void)
+{
+ trace_event_register_group(hw_acpi_trace_events);
+}
+trace_init(trace_hw_acpi_register_events)
diff --git a/qemu2-auto-generated/hw/acpi/trace.h b/qemu2-auto-generated/hw/acpi/trace.h
new file mode 100644
index 0000000000..ee9978bb7d
--- /dev/null
+++ b/qemu2-auto-generated/hw/acpi/trace.h
@@ -0,0 +1,502 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_ACPI_GENERATED_TRACERS_H
+#define TRACE_HW_ACPI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_ADDR_LO_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_ADDR_HI_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_SIZE_LO_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_SIZE_HI_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_PXM_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_READ_FLAGS_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_WRITE_SLOT_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_WRITE_OST_EV_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_WRITE_OST_STATUS_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_CLEAR_INSERT_EVT_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_PC_DIMM_DELETED_EVENT;
+extern TraceEvent _TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_READ_FLAGS_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_WRITE_IDX_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_WRITE_CMD_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_READ_CMD_DATA_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_EJECTING_CPU_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_WRITE_OST_EV_EVENT;
+extern TraceEvent _TRACE_CPUHP_ACPI_WRITE_OST_STATUS_EVENT;
+extern TraceEvent _TRACE_TCO_TIMER_RELOAD_EVENT;
+extern TraceEvent _TRACE_TCO_TIMER_EXPIRED_EVENT;
+extern uint16_t _TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_ADDR_LO_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_ADDR_HI_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_SIZE_LO_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_SIZE_HI_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_PXM_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_READ_FLAGS_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_WRITE_SLOT_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_WRITE_OST_EV_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_WRITE_OST_STATUS_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_CLEAR_INSERT_EVT_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_PC_DIMM_DELETED_DSTATE;
+extern uint16_t _TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_READ_FLAGS_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_WRITE_IDX_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_WRITE_CMD_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_READ_CMD_DATA_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_EJECTING_CPU_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_WRITE_OST_EV_DSTATE;
+extern uint16_t _TRACE_CPUHP_ACPI_WRITE_OST_STATUS_DSTATE;
+extern uint16_t _TRACE_TCO_TIMER_RELOAD_DSTATE;
+extern uint16_t _TRACE_TCO_TIMER_EXPIRED_DSTATE;
+#define TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_ENABLED 1
+#define TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_ENABLED 1
+#define TRACE_MHP_ACPI_READ_ADDR_LO_ENABLED 1
+#define TRACE_MHP_ACPI_READ_ADDR_HI_ENABLED 1
+#define TRACE_MHP_ACPI_READ_SIZE_LO_ENABLED 1
+#define TRACE_MHP_ACPI_READ_SIZE_HI_ENABLED 1
+#define TRACE_MHP_ACPI_READ_PXM_ENABLED 1
+#define TRACE_MHP_ACPI_READ_FLAGS_ENABLED 1
+#define TRACE_MHP_ACPI_WRITE_SLOT_ENABLED 1
+#define TRACE_MHP_ACPI_WRITE_OST_EV_ENABLED 1
+#define TRACE_MHP_ACPI_WRITE_OST_STATUS_ENABLED 1
+#define TRACE_MHP_ACPI_CLEAR_INSERT_EVT_ENABLED 1
+#define TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_ENABLED 1
+#define TRACE_MHP_ACPI_PC_DIMM_DELETED_ENABLED 1
+#define TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_ENABLED 1
+#define TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_ENABLED 1
+#define TRACE_CPUHP_ACPI_READ_FLAGS_ENABLED 1
+#define TRACE_CPUHP_ACPI_WRITE_IDX_ENABLED 1
+#define TRACE_CPUHP_ACPI_WRITE_CMD_ENABLED 1
+#define TRACE_CPUHP_ACPI_READ_CMD_DATA_ENABLED 1
+#define TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_ENABLED 1
+#define TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_ENABLED 1
+#define TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_ENABLED 1
+#define TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_ENABLED 1
+#define TRACE_CPUHP_ACPI_EJECTING_CPU_ENABLED 1
+#define TRACE_CPUHP_ACPI_WRITE_OST_EV_ENABLED 1
+#define TRACE_CPUHP_ACPI_WRITE_OST_STATUS_ENABLED 1
+#define TRACE_TCO_TIMER_RELOAD_ENABLED 1
+#define TRACE_TCO_TIMER_EXPIRED_ENABLED 1
+
+#define TRACE_MHP_ACPI_INVALID_SLOT_SELECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_invalid_slot_selected(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_invalid_slot_selected(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_invalid_slot_selected(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_EJECTING_INVALID_SLOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_ejecting_invalid_slot(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_ejecting_invalid_slot(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_ejecting_invalid_slot(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_ADDR_LO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_addr_lo(uint32_t slot, uint32_t addr)
+{
+}
+
+static inline void trace_mhp_acpi_read_addr_lo(uint32_t slot, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_addr_lo(slot, addr);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_ADDR_HI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_addr_hi(uint32_t slot, uint32_t addr)
+{
+}
+
+static inline void trace_mhp_acpi_read_addr_hi(uint32_t slot, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_addr_hi(slot, addr);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_SIZE_LO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_size_lo(uint32_t slot, uint32_t size)
+{
+}
+
+static inline void trace_mhp_acpi_read_size_lo(uint32_t slot, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_size_lo(slot, size);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_SIZE_HI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_size_hi(uint32_t slot, uint32_t size)
+{
+}
+
+static inline void trace_mhp_acpi_read_size_hi(uint32_t slot, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_size_hi(slot, size);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_PXM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_pxm(uint32_t slot, uint32_t pxm)
+{
+}
+
+static inline void trace_mhp_acpi_read_pxm(uint32_t slot, uint32_t pxm)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_pxm(slot, pxm);
+ }
+}
+
+#define TRACE_MHP_ACPI_READ_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_read_flags(uint32_t slot, uint32_t flags)
+{
+}
+
+static inline void trace_mhp_acpi_read_flags(uint32_t slot, uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_read_flags(slot, flags);
+ }
+}
+
+#define TRACE_MHP_ACPI_WRITE_SLOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_write_slot(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_write_slot(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_write_slot(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_WRITE_OST_EV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_write_ost_ev(uint32_t slot, uint32_t ev)
+{
+}
+
+static inline void trace_mhp_acpi_write_ost_ev(uint32_t slot, uint32_t ev)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_write_ost_ev(slot, ev);
+ }
+}
+
+#define TRACE_MHP_ACPI_WRITE_OST_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_write_ost_status(uint32_t slot, uint32_t st)
+{
+}
+
+static inline void trace_mhp_acpi_write_ost_status(uint32_t slot, uint32_t st)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_write_ost_status(slot, st);
+ }
+}
+
+#define TRACE_MHP_ACPI_CLEAR_INSERT_EVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_clear_insert_evt(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_clear_insert_evt(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_clear_insert_evt(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_CLEAR_REMOVE_EVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_clear_remove_evt(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_clear_remove_evt(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_clear_remove_evt(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_PC_DIMM_DELETED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_pc_dimm_deleted(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_pc_dimm_deleted(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_pc_dimm_deleted(slot);
+ }
+}
+
+#define TRACE_MHP_ACPI_PC_DIMM_DELETE_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_acpi_pc_dimm_delete_failed(uint32_t slot)
+{
+}
+
+static inline void trace_mhp_acpi_pc_dimm_delete_failed(uint32_t slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_acpi_pc_dimm_delete_failed(slot);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_INVALID_IDX_SELECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_invalid_idx_selected(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_invalid_idx_selected(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_invalid_idx_selected(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_READ_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_read_flags(uint32_t idx, uint8_t flags)
+{
+}
+
+static inline void trace_cpuhp_acpi_read_flags(uint32_t idx, uint8_t flags)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_read_flags(idx, flags);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_WRITE_IDX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_write_idx(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_write_idx(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_write_idx(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_WRITE_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_write_cmd(uint32_t idx, uint8_t cmd)
+{
+}
+
+static inline void trace_cpuhp_acpi_write_cmd(uint32_t idx, uint8_t cmd)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_write_cmd(idx, cmd);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_READ_CMD_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_read_cmd_data(uint32_t idx, uint32_t data)
+{
+}
+
+static inline void trace_cpuhp_acpi_read_cmd_data(uint32_t idx, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_read_cmd_data(idx, data);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_CPU_HAS_EVENTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_cpu_has_events(uint32_t idx, bool ins, bool rm)
+{
+}
+
+static inline void trace_cpuhp_acpi_cpu_has_events(uint32_t idx, bool ins, bool rm)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_cpu_has_events(idx, ins, rm);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_CLEAR_INSERTING_EVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_clear_inserting_evt(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_clear_inserting_evt(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_clear_inserting_evt(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_CLEAR_REMOVE_EVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_clear_remove_evt(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_clear_remove_evt(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_clear_remove_evt(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_EJECTING_INVALID_CPU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_ejecting_invalid_cpu(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_ejecting_invalid_cpu(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_ejecting_invalid_cpu(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_EJECTING_CPU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_ejecting_cpu(uint32_t idx)
+{
+}
+
+static inline void trace_cpuhp_acpi_ejecting_cpu(uint32_t idx)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_ejecting_cpu(idx);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_WRITE_OST_EV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_write_ost_ev(uint32_t slot, uint32_t ev)
+{
+}
+
+static inline void trace_cpuhp_acpi_write_ost_ev(uint32_t slot, uint32_t ev)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_write_ost_ev(slot, ev);
+ }
+}
+
+#define TRACE_CPUHP_ACPI_WRITE_OST_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpuhp_acpi_write_ost_status(uint32_t slot, uint32_t st)
+{
+}
+
+static inline void trace_cpuhp_acpi_write_ost_status(uint32_t slot, uint32_t st)
+{
+ if (true) {
+ _nocheck__trace_cpuhp_acpi_write_ost_status(slot, st);
+ }
+}
+
+#define TRACE_TCO_TIMER_RELOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tco_timer_reload(int ticks, int msec)
+{
+}
+
+static inline void trace_tco_timer_reload(int ticks, int msec)
+{
+ if (true) {
+ _nocheck__trace_tco_timer_reload(ticks, msec);
+ }
+}
+
+#define TRACE_TCO_TIMER_EXPIRED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tco_timer_expired(int timeouts_no, bool strap, bool no_reboot)
+{
+}
+
+static inline void trace_tco_timer_expired(int timeouts_no, bool strap, bool no_reboot)
+{
+ if (true) {
+ _nocheck__trace_tco_timer_expired(timeouts_no, strap, no_reboot);
+ }
+}
+#endif /* TRACE_HW_ACPI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/alpha/trace.c b/qemu2-auto-generated/hw/alpha/trace.c
new file mode 100644
index 0000000000..e1b1ed4cf8
--- /dev/null
+++ b/qemu2-auto-generated/hw/alpha/trace.c
@@ -0,0 +1,23 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_ALPHA_PCI_IACK_WRITE_DSTATE;
+TraceEvent _TRACE_ALPHA_PCI_IACK_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "alpha_pci_iack_write",
+ .sstate = TRACE_ALPHA_PCI_IACK_WRITE_ENABLED,
+ .dstate = &_TRACE_ALPHA_PCI_IACK_WRITE_DSTATE
+};
+TraceEvent *hw_alpha_trace_events[] = {
+ &_TRACE_ALPHA_PCI_IACK_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_alpha_register_events(void)
+{
+ trace_event_register_group(hw_alpha_trace_events);
+}
+trace_init(trace_hw_alpha_register_events)
diff --git a/qemu2-auto-generated/hw/alpha/trace.h b/qemu2-auto-generated/hw/alpha/trace.h
new file mode 100644
index 0000000000..b667bda5f6
--- /dev/null
+++ b/qemu2-auto-generated/hw/alpha/trace.h
@@ -0,0 +1,26 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_ALPHA_GENERATED_TRACERS_H
+#define TRACE_HW_ALPHA_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_ALPHA_PCI_IACK_WRITE_EVENT;
+extern uint16_t _TRACE_ALPHA_PCI_IACK_WRITE_DSTATE;
+#define TRACE_ALPHA_PCI_IACK_WRITE_ENABLED 1
+
+#define TRACE_ALPHA_PCI_IACK_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_alpha_pci_iack_write(void)
+{
+}
+
+static inline void trace_alpha_pci_iack_write(void)
+{
+ if (true) {
+ _nocheck__trace_alpha_pci_iack_write();
+ }
+}
+#endif /* TRACE_HW_ALPHA_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/arm/trace.c b/qemu2-auto-generated/hw/arm/trace.c
new file mode 100644
index 0000000000..ca5c78e80f
--- /dev/null
+++ b/qemu2-auto-generated/hw/arm/trace.c
@@ -0,0 +1,23 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VIRT_ACPI_SETUP_DSTATE;
+TraceEvent _TRACE_VIRT_ACPI_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virt_acpi_setup",
+ .sstate = TRACE_VIRT_ACPI_SETUP_ENABLED,
+ .dstate = &_TRACE_VIRT_ACPI_SETUP_DSTATE
+};
+TraceEvent *hw_arm_trace_events[] = {
+ &_TRACE_VIRT_ACPI_SETUP_EVENT,
+ NULL,
+};
+
+static void trace_hw_arm_register_events(void)
+{
+ trace_event_register_group(hw_arm_trace_events);
+}
+trace_init(trace_hw_arm_register_events)
diff --git a/qemu2-auto-generated/hw/arm/trace.h b/qemu2-auto-generated/hw/arm/trace.h
new file mode 100644
index 0000000000..b5436237f5
--- /dev/null
+++ b/qemu2-auto-generated/hw/arm/trace.h
@@ -0,0 +1,26 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_ARM_GENERATED_TRACERS_H
+#define TRACE_HW_ARM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VIRT_ACPI_SETUP_EVENT;
+extern uint16_t _TRACE_VIRT_ACPI_SETUP_DSTATE;
+#define TRACE_VIRT_ACPI_SETUP_ENABLED 1
+
+#define TRACE_VIRT_ACPI_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virt_acpi_setup(void)
+{
+}
+
+static inline void trace_virt_acpi_setup(void)
+{
+ if (true) {
+ _nocheck__trace_virt_acpi_setup();
+ }
+}
+#endif /* TRACE_HW_ARM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/audio/trace.c b/qemu2-auto-generated/hw/audio/trace.c
new file mode 100644
index 0000000000..801aa5fa19
--- /dev/null
+++ b/qemu2-auto-generated/hw/audio/trace.c
@@ -0,0 +1,185 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_CS4231_MEM_READL_DREG_DSTATE;
+uint16_t _TRACE_CS4231_MEM_READL_REG_DSTATE;
+uint16_t _TRACE_CS4231_MEM_WRITEL_REG_DSTATE;
+uint16_t _TRACE_CS4231_MEM_WRITEL_DREG_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_IN_CB_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_OUT_CB_DSTATE;
+uint16_t _TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_DSTATE;
+uint16_t _TRACE_GOLDFISH_AUDIO_MEMORY_READ_DSTATE;
+uint16_t _TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_RECV_DSTATE;
+uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_SEND_DSTATE;
+uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_FULL_DSTATE;
+TraceEvent _TRACE_CS4231_MEM_READL_DREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cs4231_mem_readl_dreg",
+ .sstate = TRACE_CS4231_MEM_READL_DREG_ENABLED,
+ .dstate = &_TRACE_CS4231_MEM_READL_DREG_DSTATE
+};
+TraceEvent _TRACE_CS4231_MEM_READL_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cs4231_mem_readl_reg",
+ .sstate = TRACE_CS4231_MEM_READL_REG_ENABLED,
+ .dstate = &_TRACE_CS4231_MEM_READL_REG_DSTATE
+};
+TraceEvent _TRACE_CS4231_MEM_WRITEL_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cs4231_mem_writel_reg",
+ .sstate = TRACE_CS4231_MEM_WRITEL_REG_ENABLED,
+ .dstate = &_TRACE_CS4231_MEM_WRITEL_REG_DSTATE
+};
+TraceEvent _TRACE_CS4231_MEM_WRITEL_DREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cs4231_mem_writel_dreg",
+ .sstate = TRACE_CS4231_MEM_WRITEL_DREG_ENABLED,
+ .dstate = &_TRACE_CS4231_MEM_WRITEL_DREG_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_memory_read",
+ .sstate = TRACE_MILKYMIST_AC97_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_memory_write",
+ .sstate = TRACE_MILKYMIST_AC97_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_pulse_irq_crrequest",
+ .sstate = TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_pulse_irq_crreply",
+ .sstate = TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_pulse_irq_dmaw",
+ .sstate = TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_pulse_irq_dmar",
+ .sstate = TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_IN_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_in_cb",
+ .sstate = TRACE_MILKYMIST_AC97_IN_CB_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_IN_CB_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_in_cb_transferred",
+ .sstate = TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_OUT_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_out_cb",
+ .sstate = TRACE_MILKYMIST_AC97_OUT_CB_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_OUT_CB_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_ac97_out_cb_transferred",
+ .sstate = TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_AUDIO_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_audio_memory_read",
+ .sstate = TRACE_GOLDFISH_AUDIO_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_AUDIO_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_audio_memory_write",
+ .sstate = TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_RECV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_audio_buff_recv",
+ .sstate = TRACE_GOLDFISH_AUDIO_BUFF_RECV_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_AUDIO_BUFF_RECV_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_audio_buff_send",
+ .sstate = TRACE_GOLDFISH_AUDIO_BUFF_SEND_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_AUDIO_BUFF_SEND_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_audio_buff_full",
+ .sstate = TRACE_GOLDFISH_AUDIO_BUFF_FULL_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_AUDIO_BUFF_FULL_DSTATE
+};
+TraceEvent *hw_audio_trace_events[] = {
+ &_TRACE_CS4231_MEM_READL_DREG_EVENT,
+ &_TRACE_CS4231_MEM_READL_REG_EVENT,
+ &_TRACE_CS4231_MEM_WRITEL_REG_EVENT,
+ &_TRACE_CS4231_MEM_WRITEL_DREG_EVENT,
+ &_TRACE_MILKYMIST_AC97_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_AC97_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_EVENT,
+ &_TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_EVENT,
+ &_TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_EVENT,
+ &_TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_EVENT,
+ &_TRACE_MILKYMIST_AC97_IN_CB_EVENT,
+ &_TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_EVENT,
+ &_TRACE_MILKYMIST_AC97_OUT_CB_EVENT,
+ &_TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_EVENT,
+ &_TRACE_GOLDFISH_AUDIO_MEMORY_READ_EVENT,
+ &_TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_EVENT,
+ &_TRACE_GOLDFISH_AUDIO_BUFF_RECV_EVENT,
+ &_TRACE_GOLDFISH_AUDIO_BUFF_SEND_EVENT,
+ &_TRACE_GOLDFISH_AUDIO_BUFF_FULL_EVENT,
+ NULL,
+};
+
+static void trace_hw_audio_register_events(void)
+{
+ trace_event_register_group(hw_audio_trace_events);
+}
+trace_init(trace_hw_audio_register_events)
diff --git a/qemu2-auto-generated/hw/audio/trace.h b/qemu2-auto-generated/hw/audio/trace.h
new file mode 100644
index 0000000000..38d055c4d1
--- /dev/null
+++ b/qemu2-auto-generated/hw/audio/trace.h
@@ -0,0 +1,332 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_AUDIO_GENERATED_TRACERS_H
+#define TRACE_HW_AUDIO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CS4231_MEM_READL_DREG_EVENT;
+extern TraceEvent _TRACE_CS4231_MEM_READL_REG_EVENT;
+extern TraceEvent _TRACE_CS4231_MEM_WRITEL_REG_EVENT;
+extern TraceEvent _TRACE_CS4231_MEM_WRITEL_DREG_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_IN_CB_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_OUT_CB_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_AUDIO_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_RECV_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_SEND_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_AUDIO_BUFF_FULL_EVENT;
+extern uint16_t _TRACE_CS4231_MEM_READL_DREG_DSTATE;
+extern uint16_t _TRACE_CS4231_MEM_READL_REG_DSTATE;
+extern uint16_t _TRACE_CS4231_MEM_WRITEL_REG_DSTATE;
+extern uint16_t _TRACE_CS4231_MEM_WRITEL_DREG_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_IN_CB_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_OUT_CB_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_AUDIO_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_RECV_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_SEND_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_AUDIO_BUFF_FULL_DSTATE;
+#define TRACE_CS4231_MEM_READL_DREG_ENABLED 1
+#define TRACE_CS4231_MEM_READL_REG_ENABLED 1
+#define TRACE_CS4231_MEM_WRITEL_REG_ENABLED 1
+#define TRACE_CS4231_MEM_WRITEL_DREG_ENABLED 1
+#define TRACE_MILKYMIST_AC97_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_AC97_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_ENABLED 1
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_ENABLED 1
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_ENABLED 1
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_ENABLED 1
+#define TRACE_MILKYMIST_AC97_IN_CB_ENABLED 1
+#define TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_ENABLED 1
+#define TRACE_MILKYMIST_AC97_OUT_CB_ENABLED 1
+#define TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_ENABLED 1
+#define TRACE_GOLDFISH_AUDIO_MEMORY_READ_ENABLED 1
+#define TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_ENABLED 1
+#define TRACE_GOLDFISH_AUDIO_BUFF_RECV_ENABLED 1
+#define TRACE_GOLDFISH_AUDIO_BUFF_SEND_ENABLED 1
+#define TRACE_GOLDFISH_AUDIO_BUFF_FULL_ENABLED 1
+
+#define TRACE_CS4231_MEM_READL_DREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret)
+{
+}
+
+static inline void trace_cs4231_mem_readl_dreg(uint32_t reg, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_cs4231_mem_readl_dreg(reg, ret);
+ }
+}
+
+#define TRACE_CS4231_MEM_READL_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cs4231_mem_readl_reg(uint32_t reg, uint32_t ret)
+{
+}
+
+static inline void trace_cs4231_mem_readl_reg(uint32_t reg, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_cs4231_mem_readl_reg(reg, ret);
+ }
+}
+
+#define TRACE_CS4231_MEM_WRITEL_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cs4231_mem_writel_reg(uint32_t reg, uint32_t old, uint32_t val)
+{
+}
+
+static inline void trace_cs4231_mem_writel_reg(uint32_t reg, uint32_t old, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_cs4231_mem_writel_reg(reg, old, val);
+ }
+}
+
+#define TRACE_CS4231_MEM_WRITEL_DREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cs4231_mem_writel_dreg(uint32_t reg, uint32_t old, uint32_t val)
+{
+}
+
+static inline void trace_cs4231_mem_writel_dreg(uint32_t reg, uint32_t old, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_cs4231_mem_writel_dreg(reg, old, val);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_ac97_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_ac97_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_pulse_irq_crrequest(void)
+{
+}
+
+static inline void trace_milkymist_ac97_pulse_irq_crrequest(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_pulse_irq_crrequest();
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_CRREPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_pulse_irq_crreply(void)
+{
+}
+
+static inline void trace_milkymist_ac97_pulse_irq_crreply(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_pulse_irq_crreply();
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_pulse_irq_dmaw(void)
+{
+}
+
+static inline void trace_milkymist_ac97_pulse_irq_dmaw(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_pulse_irq_dmaw();
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_PULSE_IRQ_DMAR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_pulse_irq_dmar(void)
+{
+}
+
+static inline void trace_milkymist_ac97_pulse_irq_dmar(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_pulse_irq_dmar();
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_IN_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_in_cb(int avail, uint32_t remaining)
+{
+}
+
+static inline void trace_milkymist_ac97_in_cb(int avail, uint32_t remaining)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_in_cb(avail, remaining);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_IN_CB_TRANSFERRED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_in_cb_transferred(int transferred)
+{
+}
+
+static inline void trace_milkymist_ac97_in_cb_transferred(int transferred)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_in_cb_transferred(transferred);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_OUT_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_out_cb(int free, uint32_t remaining)
+{
+}
+
+static inline void trace_milkymist_ac97_out_cb(int free, uint32_t remaining)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_out_cb(free, remaining);
+ }
+}
+
+#define TRACE_MILKYMIST_AC97_OUT_CB_TRANSFERRED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_ac97_out_cb_transferred(int transferred)
+{
+}
+
+static inline void trace_milkymist_ac97_out_cb_transferred(int transferred)
+{
+ if (true) {
+ _nocheck__trace_milkymist_ac97_out_cb_transferred(transferred);
+ }
+}
+
+#define TRACE_GOLDFISH_AUDIO_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_audio_memory_read(const char * regname, uint32_t value)
+{
+}
+
+static inline void trace_goldfish_audio_memory_read(const char * regname, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_goldfish_audio_memory_read(regname, value);
+ }
+}
+
+#define TRACE_GOLDFISH_AUDIO_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_audio_memory_write(const char * regname, uint32_t value)
+{
+}
+
+static inline void trace_goldfish_audio_memory_write(const char * regname, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_goldfish_audio_memory_write(regname, value);
+ }
+}
+
+#define TRACE_GOLDFISH_AUDIO_BUFF_RECV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_audio_buff_recv(int size, int read)
+{
+}
+
+static inline void trace_goldfish_audio_buff_recv(int size, int read)
+{
+ if (true) {
+ _nocheck__trace_goldfish_audio_buff_recv(size, read);
+ }
+}
+
+#define TRACE_GOLDFISH_AUDIO_BUFF_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_audio_buff_send(int size, int buffer)
+{
+}
+
+static inline void trace_goldfish_audio_buff_send(int size, int buffer)
+{
+ if (true) {
+ _nocheck__trace_goldfish_audio_buff_send(size, buffer);
+ }
+}
+
+#define TRACE_GOLDFISH_AUDIO_BUFF_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_audio_buff_full(int available)
+{
+}
+
+static inline void trace_goldfish_audio_buff_full(int available)
+{
+ if (true) {
+ _nocheck__trace_goldfish_audio_buff_full(available);
+ }
+}
+#endif /* TRACE_HW_AUDIO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/block/dataplane/trace.c b/qemu2-auto-generated/hw/block/dataplane/trace.c
new file mode 100644
index 0000000000..d41f0e2b64
--- /dev/null
+++ b/qemu2-auto-generated/hw/block/dataplane/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VIRTIO_BLK_DATA_PLANE_START_DSTATE;
+uint16_t _TRACE_VIRTIO_BLK_DATA_PLANE_STOP_DSTATE;
+TraceEvent _TRACE_VIRTIO_BLK_DATA_PLANE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_data_plane_start",
+ .sstate = TRACE_VIRTIO_BLK_DATA_PLANE_START_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_DATA_PLANE_START_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BLK_DATA_PLANE_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_data_plane_stop",
+ .sstate = TRACE_VIRTIO_BLK_DATA_PLANE_STOP_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_DATA_PLANE_STOP_DSTATE
+};
+TraceEvent *hw_block_dataplane_trace_events[] = {
+ &_TRACE_VIRTIO_BLK_DATA_PLANE_START_EVENT,
+ &_TRACE_VIRTIO_BLK_DATA_PLANE_STOP_EVENT,
+ NULL,
+};
+
+static void trace_hw_block_dataplane_register_events(void)
+{
+ trace_event_register_group(hw_block_dataplane_trace_events);
+}
+trace_init(trace_hw_block_dataplane_register_events)
diff --git a/qemu2-auto-generated/hw/block/dataplane/trace.h b/qemu2-auto-generated/hw/block/dataplane/trace.h
new file mode 100644
index 0000000000..d35025561f
--- /dev/null
+++ b/qemu2-auto-generated/hw/block/dataplane/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_BLOCK_DATAPLANE_GENERATED_TRACERS_H
+#define TRACE_HW_BLOCK_DATAPLANE_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VIRTIO_BLK_DATA_PLANE_START_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BLK_DATA_PLANE_STOP_EVENT;
+extern uint16_t _TRACE_VIRTIO_BLK_DATA_PLANE_START_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BLK_DATA_PLANE_STOP_DSTATE;
+#define TRACE_VIRTIO_BLK_DATA_PLANE_START_ENABLED 1
+#define TRACE_VIRTIO_BLK_DATA_PLANE_STOP_ENABLED 1
+
+#define TRACE_VIRTIO_BLK_DATA_PLANE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_data_plane_start(void * s)
+{
+}
+
+static inline void trace_virtio_blk_data_plane_start(void * s)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_data_plane_start(s);
+ }
+}
+
+#define TRACE_VIRTIO_BLK_DATA_PLANE_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_data_plane_stop(void * s)
+{
+}
+
+static inline void trace_virtio_blk_data_plane_stop(void * s)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_data_plane_stop(s);
+ }
+}
+#endif /* TRACE_HW_BLOCK_DATAPLANE_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/block/trace.c b/qemu2-auto-generated/hw/block/trace.c
new file mode 100644
index 0000000000..bf4e32e10d
--- /dev/null
+++ b/qemu2-auto-generated/hw/block/trace.c
@@ -0,0 +1,896 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VIRTIO_BLK_REQ_COMPLETE_DSTATE;
+uint16_t _TRACE_VIRTIO_BLK_RW_COMPLETE_DSTATE;
+uint16_t _TRACE_VIRTIO_BLK_HANDLE_WRITE_DSTATE;
+uint16_t _TRACE_VIRTIO_BLK_HANDLE_READ_DSTATE;
+uint16_t _TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_DSTATE;
+uint16_t _TRACE_HD_GEOMETRY_LCHS_GUESS_DSTATE;
+uint16_t _TRACE_HD_GEOMETRY_GUESS_DSTATE;
+uint16_t _TRACE_NVME_IRQ_MSIX_DSTATE;
+uint16_t _TRACE_NVME_IRQ_PIN_DSTATE;
+uint16_t _TRACE_NVME_IRQ_MASKED_DSTATE;
+uint16_t _TRACE_NVME_DMA_READ_DSTATE;
+uint16_t _TRACE_NVME_RW_DSTATE;
+uint16_t _TRACE_NVME_CREATE_SQ_DSTATE;
+uint16_t _TRACE_NVME_CREATE_CQ_DSTATE;
+uint16_t _TRACE_NVME_DEL_SQ_DSTATE;
+uint16_t _TRACE_NVME_DEL_CQ_DSTATE;
+uint16_t _TRACE_NVME_IDENTIFY_CTRL_DSTATE;
+uint16_t _TRACE_NVME_IDENTIFY_NS_DSTATE;
+uint16_t _TRACE_NVME_IDENTIFY_NSLIST_DSTATE;
+uint16_t _TRACE_NVME_GETFEAT_VWCACHE_DSTATE;
+uint16_t _TRACE_NVME_GETFEAT_NUMQ_DSTATE;
+uint16_t _TRACE_NVME_SETFEAT_NUMQ_DSTATE;
+uint16_t _TRACE_NVME_MMIO_INTM_SET_DSTATE;
+uint16_t _TRACE_NVME_MMIO_INTM_CLR_DSTATE;
+uint16_t _TRACE_NVME_MMIO_CFG_DSTATE;
+uint16_t _TRACE_NVME_MMIO_AQATTR_DSTATE;
+uint16_t _TRACE_NVME_MMIO_ASQADDR_DSTATE;
+uint16_t _TRACE_NVME_MMIO_ACQADDR_DSTATE;
+uint16_t _TRACE_NVME_MMIO_ASQADDR_HI_DSTATE;
+uint16_t _TRACE_NVME_MMIO_ACQADDR_HI_DSTATE;
+uint16_t _TRACE_NVME_MMIO_START_SUCCESS_DSTATE;
+uint16_t _TRACE_NVME_MMIO_STOPPED_DSTATE;
+uint16_t _TRACE_NVME_MMIO_SHUTDOWN_SET_DSTATE;
+uint16_t _TRACE_NVME_MMIO_SHUTDOWN_CLEARED_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_DMA_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_PRPLIST_ENT_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_PRP2_ALIGN_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_PRP2_MISSING_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_FIELD_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_PRP_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_SGL_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_NS_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_OPC_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_ADMIN_OPC_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_LBA_RANGE_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_DEL_SQ_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_GETFEAT_DSTATE;
+uint16_t _TRACE_NVME_ERR_INVALID_SETFEAT_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_CQ_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_SQ_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_NBARASQ_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_NBARACQ_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_DSTATE;
+uint16_t _TRACE_NVME_ERR_STARTFAIL_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_MISALIGNED32_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_TOOSMALL_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_RO_CSTS_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIOWR_INVALID_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIORD_MISALIGNED32_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIORD_TOOSMALL_DSTATE;
+uint16_t _TRACE_NVME_UB_MMIORD_INVALID_OFS_DSTATE;
+uint16_t _TRACE_NVME_UB_DB_WR_MISALIGNED_DSTATE;
+uint16_t _TRACE_NVME_UB_DB_WR_INVALID_CQ_DSTATE;
+uint16_t _TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_DSTATE;
+uint16_t _TRACE_NVME_UB_DB_WR_INVALID_SQ_DSTATE;
+uint16_t _TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_DSTATE;
+uint16_t _TRACE_XEN_DISK_ALLOC_DSTATE;
+uint16_t _TRACE_XEN_DISK_INIT_DSTATE;
+uint16_t _TRACE_XEN_DISK_CONNECT_DSTATE;
+uint16_t _TRACE_XEN_DISK_DISCONNECT_DSTATE;
+uint16_t _TRACE_XEN_DISK_FREE_DSTATE;
+TraceEvent _TRACE_VIRTIO_BLK_REQ_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_req_complete",
+ .sstate = TRACE_VIRTIO_BLK_REQ_COMPLETE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_REQ_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BLK_RW_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_rw_complete",
+ .sstate = TRACE_VIRTIO_BLK_RW_COMPLETE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_RW_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BLK_HANDLE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_handle_write",
+ .sstate = TRACE_VIRTIO_BLK_HANDLE_WRITE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_HANDLE_WRITE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BLK_HANDLE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_handle_read",
+ .sstate = TRACE_VIRTIO_BLK_HANDLE_READ_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_HANDLE_READ_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_blk_submit_multireq",
+ .sstate = TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_DSTATE
+};
+TraceEvent _TRACE_HD_GEOMETRY_LCHS_GUESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hd_geometry_lchs_guess",
+ .sstate = TRACE_HD_GEOMETRY_LCHS_GUESS_ENABLED,
+ .dstate = &_TRACE_HD_GEOMETRY_LCHS_GUESS_DSTATE
+};
+TraceEvent _TRACE_HD_GEOMETRY_GUESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hd_geometry_guess",
+ .sstate = TRACE_HD_GEOMETRY_GUESS_ENABLED,
+ .dstate = &_TRACE_HD_GEOMETRY_GUESS_DSTATE
+};
+TraceEvent _TRACE_NVME_IRQ_MSIX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_irq_msix",
+ .sstate = TRACE_NVME_IRQ_MSIX_ENABLED,
+ .dstate = &_TRACE_NVME_IRQ_MSIX_DSTATE
+};
+TraceEvent _TRACE_NVME_IRQ_PIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_irq_pin",
+ .sstate = TRACE_NVME_IRQ_PIN_ENABLED,
+ .dstate = &_TRACE_NVME_IRQ_PIN_DSTATE
+};
+TraceEvent _TRACE_NVME_IRQ_MASKED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_irq_masked",
+ .sstate = TRACE_NVME_IRQ_MASKED_ENABLED,
+ .dstate = &_TRACE_NVME_IRQ_MASKED_DSTATE
+};
+TraceEvent _TRACE_NVME_DMA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_dma_read",
+ .sstate = TRACE_NVME_DMA_READ_ENABLED,
+ .dstate = &_TRACE_NVME_DMA_READ_DSTATE
+};
+TraceEvent _TRACE_NVME_RW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_rw",
+ .sstate = TRACE_NVME_RW_ENABLED,
+ .dstate = &_TRACE_NVME_RW_DSTATE
+};
+TraceEvent _TRACE_NVME_CREATE_SQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_create_sq",
+ .sstate = TRACE_NVME_CREATE_SQ_ENABLED,
+ .dstate = &_TRACE_NVME_CREATE_SQ_DSTATE
+};
+TraceEvent _TRACE_NVME_CREATE_CQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_create_cq",
+ .sstate = TRACE_NVME_CREATE_CQ_ENABLED,
+ .dstate = &_TRACE_NVME_CREATE_CQ_DSTATE
+};
+TraceEvent _TRACE_NVME_DEL_SQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_del_sq",
+ .sstate = TRACE_NVME_DEL_SQ_ENABLED,
+ .dstate = &_TRACE_NVME_DEL_SQ_DSTATE
+};
+TraceEvent _TRACE_NVME_DEL_CQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_del_cq",
+ .sstate = TRACE_NVME_DEL_CQ_ENABLED,
+ .dstate = &_TRACE_NVME_DEL_CQ_DSTATE
+};
+TraceEvent _TRACE_NVME_IDENTIFY_CTRL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_identify_ctrl",
+ .sstate = TRACE_NVME_IDENTIFY_CTRL_ENABLED,
+ .dstate = &_TRACE_NVME_IDENTIFY_CTRL_DSTATE
+};
+TraceEvent _TRACE_NVME_IDENTIFY_NS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_identify_ns",
+ .sstate = TRACE_NVME_IDENTIFY_NS_ENABLED,
+ .dstate = &_TRACE_NVME_IDENTIFY_NS_DSTATE
+};
+TraceEvent _TRACE_NVME_IDENTIFY_NSLIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_identify_nslist",
+ .sstate = TRACE_NVME_IDENTIFY_NSLIST_ENABLED,
+ .dstate = &_TRACE_NVME_IDENTIFY_NSLIST_DSTATE
+};
+TraceEvent _TRACE_NVME_GETFEAT_VWCACHE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_getfeat_vwcache",
+ .sstate = TRACE_NVME_GETFEAT_VWCACHE_ENABLED,
+ .dstate = &_TRACE_NVME_GETFEAT_VWCACHE_DSTATE
+};
+TraceEvent _TRACE_NVME_GETFEAT_NUMQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_getfeat_numq",
+ .sstate = TRACE_NVME_GETFEAT_NUMQ_ENABLED,
+ .dstate = &_TRACE_NVME_GETFEAT_NUMQ_DSTATE
+};
+TraceEvent _TRACE_NVME_SETFEAT_NUMQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_setfeat_numq",
+ .sstate = TRACE_NVME_SETFEAT_NUMQ_ENABLED,
+ .dstate = &_TRACE_NVME_SETFEAT_NUMQ_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_INTM_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_intm_set",
+ .sstate = TRACE_NVME_MMIO_INTM_SET_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_INTM_SET_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_INTM_CLR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_intm_clr",
+ .sstate = TRACE_NVME_MMIO_INTM_CLR_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_INTM_CLR_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_CFG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_cfg",
+ .sstate = TRACE_NVME_MMIO_CFG_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_CFG_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_AQATTR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_aqattr",
+ .sstate = TRACE_NVME_MMIO_AQATTR_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_AQATTR_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_ASQADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_asqaddr",
+ .sstate = TRACE_NVME_MMIO_ASQADDR_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_ASQADDR_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_ACQADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_acqaddr",
+ .sstate = TRACE_NVME_MMIO_ACQADDR_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_ACQADDR_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_ASQADDR_HI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_asqaddr_hi",
+ .sstate = TRACE_NVME_MMIO_ASQADDR_HI_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_ASQADDR_HI_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_ACQADDR_HI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_acqaddr_hi",
+ .sstate = TRACE_NVME_MMIO_ACQADDR_HI_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_ACQADDR_HI_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_START_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_start_success",
+ .sstate = TRACE_NVME_MMIO_START_SUCCESS_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_START_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_STOPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_stopped",
+ .sstate = TRACE_NVME_MMIO_STOPPED_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_STOPPED_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_SHUTDOWN_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_shutdown_set",
+ .sstate = TRACE_NVME_MMIO_SHUTDOWN_SET_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_SHUTDOWN_SET_DSTATE
+};
+TraceEvent _TRACE_NVME_MMIO_SHUTDOWN_CLEARED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_mmio_shutdown_cleared",
+ .sstate = TRACE_NVME_MMIO_SHUTDOWN_CLEARED_ENABLED,
+ .dstate = &_TRACE_NVME_MMIO_SHUTDOWN_CLEARED_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_DMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_dma",
+ .sstate = TRACE_NVME_ERR_INVALID_DMA_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_DMA_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_PRPLIST_ENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_prplist_ent",
+ .sstate = TRACE_NVME_ERR_INVALID_PRPLIST_ENT_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_PRPLIST_ENT_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_PRP2_ALIGN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_prp2_align",
+ .sstate = TRACE_NVME_ERR_INVALID_PRP2_ALIGN_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_PRP2_ALIGN_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_PRP2_MISSING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_prp2_missing",
+ .sstate = TRACE_NVME_ERR_INVALID_PRP2_MISSING_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_PRP2_MISSING_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_FIELD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_field",
+ .sstate = TRACE_NVME_ERR_INVALID_FIELD_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_FIELD_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_PRP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_prp",
+ .sstate = TRACE_NVME_ERR_INVALID_PRP_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_PRP_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_SGL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_sgl",
+ .sstate = TRACE_NVME_ERR_INVALID_SGL_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_SGL_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_NS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_ns",
+ .sstate = TRACE_NVME_ERR_INVALID_NS_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_NS_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_OPC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_opc",
+ .sstate = TRACE_NVME_ERR_INVALID_OPC_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_OPC_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_ADMIN_OPC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_admin_opc",
+ .sstate = TRACE_NVME_ERR_INVALID_ADMIN_OPC_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_ADMIN_OPC_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_LBA_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_lba_range",
+ .sstate = TRACE_NVME_ERR_INVALID_LBA_RANGE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_LBA_RANGE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_DEL_SQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_del_sq",
+ .sstate = TRACE_NVME_ERR_INVALID_DEL_SQ_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_DEL_SQ_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_sq_cqid",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_sq_sqid",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_sq_size",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_sq_addr",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_sq_qflags",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_del_cq_cqid",
+ .sstate = TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_del_cq_notempty",
+ .sstate = TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_cq_cqid",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_cq_size",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_cq_addr",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_cq_vector",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_create_cq_qflags",
+ .sstate = TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_identify_cns",
+ .sstate = TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_GETFEAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_getfeat",
+ .sstate = TRACE_NVME_ERR_INVALID_GETFEAT_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_GETFEAT_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_INVALID_SETFEAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_invalid_setfeat",
+ .sstate = TRACE_NVME_ERR_INVALID_SETFEAT_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_INVALID_SETFEAT_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_cq",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_CQ_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_CQ_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_sq",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_SQ_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_SQ_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_NBARASQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_nbarasq",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_NBARASQ_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_NBARASQ_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_NBARACQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_nbaracq",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_NBARACQ_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_NBARACQ_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_asq_misaligned",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_acq_misaligned",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_page_too_small",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_page_too_large",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_cqent_too_small",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_cqent_too_large",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_sqent_too_small",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_sqent_too_large",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_asqent_sz_zero",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail_acqent_sz_zero",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_DSTATE
+};
+TraceEvent _TRACE_NVME_ERR_STARTFAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_err_startfail",
+ .sstate = TRACE_NVME_ERR_STARTFAIL_ENABLED,
+ .dstate = &_TRACE_NVME_ERR_STARTFAIL_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_MISALIGNED32_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_misaligned32",
+ .sstate = TRACE_NVME_UB_MMIOWR_MISALIGNED32_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_MISALIGNED32_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_TOOSMALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_toosmall",
+ .sstate = TRACE_NVME_UB_MMIOWR_TOOSMALL_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_TOOSMALL_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_intmask_with_msix",
+ .sstate = TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_RO_CSTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_ro_csts",
+ .sstate = TRACE_NVME_UB_MMIOWR_RO_CSTS_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_RO_CSTS_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_ssreset_w1c_unsupported",
+ .sstate = TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_ssreset_unsupported",
+ .sstate = TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_cmbloc_reserved",
+ .sstate = TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_cmbsz_readonly",
+ .sstate = TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIOWR_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiowr_invalid",
+ .sstate = TRACE_NVME_UB_MMIOWR_INVALID_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIOWR_INVALID_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIORD_MISALIGNED32_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiord_misaligned32",
+ .sstate = TRACE_NVME_UB_MMIORD_MISALIGNED32_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIORD_MISALIGNED32_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIORD_TOOSMALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiord_toosmall",
+ .sstate = TRACE_NVME_UB_MMIORD_TOOSMALL_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIORD_TOOSMALL_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_MMIORD_INVALID_OFS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_mmiord_invalid_ofs",
+ .sstate = TRACE_NVME_UB_MMIORD_INVALID_OFS_ENABLED,
+ .dstate = &_TRACE_NVME_UB_MMIORD_INVALID_OFS_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_DB_WR_MISALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_db_wr_misaligned",
+ .sstate = TRACE_NVME_UB_DB_WR_MISALIGNED_ENABLED,
+ .dstate = &_TRACE_NVME_UB_DB_WR_MISALIGNED_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_CQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_db_wr_invalid_cq",
+ .sstate = TRACE_NVME_UB_DB_WR_INVALID_CQ_ENABLED,
+ .dstate = &_TRACE_NVME_UB_DB_WR_INVALID_CQ_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_db_wr_invalid_cqhead",
+ .sstate = TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_ENABLED,
+ .dstate = &_TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_SQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_db_wr_invalid_sq",
+ .sstate = TRACE_NVME_UB_DB_WR_INVALID_SQ_ENABLED,
+ .dstate = &_TRACE_NVME_UB_DB_WR_INVALID_SQ_DSTATE
+};
+TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvme_ub_db_wr_invalid_sqtail",
+ .sstate = TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_ENABLED,
+ .dstate = &_TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_DSTATE
+};
+TraceEvent _TRACE_XEN_DISK_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_disk_alloc",
+ .sstate = TRACE_XEN_DISK_ALLOC_ENABLED,
+ .dstate = &_TRACE_XEN_DISK_ALLOC_DSTATE
+};
+TraceEvent _TRACE_XEN_DISK_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_disk_init",
+ .sstate = TRACE_XEN_DISK_INIT_ENABLED,
+ .dstate = &_TRACE_XEN_DISK_INIT_DSTATE
+};
+TraceEvent _TRACE_XEN_DISK_CONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_disk_connect",
+ .sstate = TRACE_XEN_DISK_CONNECT_ENABLED,
+ .dstate = &_TRACE_XEN_DISK_CONNECT_DSTATE
+};
+TraceEvent _TRACE_XEN_DISK_DISCONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_disk_disconnect",
+ .sstate = TRACE_XEN_DISK_DISCONNECT_ENABLED,
+ .dstate = &_TRACE_XEN_DISK_DISCONNECT_DSTATE
+};
+TraceEvent _TRACE_XEN_DISK_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_disk_free",
+ .sstate = TRACE_XEN_DISK_FREE_ENABLED,
+ .dstate = &_TRACE_XEN_DISK_FREE_DSTATE
+};
+TraceEvent *hw_block_trace_events[] = {
+ &_TRACE_VIRTIO_BLK_REQ_COMPLETE_EVENT,
+ &_TRACE_VIRTIO_BLK_RW_COMPLETE_EVENT,
+ &_TRACE_VIRTIO_BLK_HANDLE_WRITE_EVENT,
+ &_TRACE_VIRTIO_BLK_HANDLE_READ_EVENT,
+ &_TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_EVENT,
+ &_TRACE_HD_GEOMETRY_LCHS_GUESS_EVENT,
+ &_TRACE_HD_GEOMETRY_GUESS_EVENT,
+ &_TRACE_NVME_IRQ_MSIX_EVENT,
+ &_TRACE_NVME_IRQ_PIN_EVENT,
+ &_TRACE_NVME_IRQ_MASKED_EVENT,
+ &_TRACE_NVME_DMA_READ_EVENT,
+ &_TRACE_NVME_RW_EVENT,
+ &_TRACE_NVME_CREATE_SQ_EVENT,
+ &_TRACE_NVME_CREATE_CQ_EVENT,
+ &_TRACE_NVME_DEL_SQ_EVENT,
+ &_TRACE_NVME_DEL_CQ_EVENT,
+ &_TRACE_NVME_IDENTIFY_CTRL_EVENT,
+ &_TRACE_NVME_IDENTIFY_NS_EVENT,
+ &_TRACE_NVME_IDENTIFY_NSLIST_EVENT,
+ &_TRACE_NVME_GETFEAT_VWCACHE_EVENT,
+ &_TRACE_NVME_GETFEAT_NUMQ_EVENT,
+ &_TRACE_NVME_SETFEAT_NUMQ_EVENT,
+ &_TRACE_NVME_MMIO_INTM_SET_EVENT,
+ &_TRACE_NVME_MMIO_INTM_CLR_EVENT,
+ &_TRACE_NVME_MMIO_CFG_EVENT,
+ &_TRACE_NVME_MMIO_AQATTR_EVENT,
+ &_TRACE_NVME_MMIO_ASQADDR_EVENT,
+ &_TRACE_NVME_MMIO_ACQADDR_EVENT,
+ &_TRACE_NVME_MMIO_ASQADDR_HI_EVENT,
+ &_TRACE_NVME_MMIO_ACQADDR_HI_EVENT,
+ &_TRACE_NVME_MMIO_START_SUCCESS_EVENT,
+ &_TRACE_NVME_MMIO_STOPPED_EVENT,
+ &_TRACE_NVME_MMIO_SHUTDOWN_SET_EVENT,
+ &_TRACE_NVME_MMIO_SHUTDOWN_CLEARED_EVENT,
+ &_TRACE_NVME_ERR_INVALID_DMA_EVENT,
+ &_TRACE_NVME_ERR_INVALID_PRPLIST_ENT_EVENT,
+ &_TRACE_NVME_ERR_INVALID_PRP2_ALIGN_EVENT,
+ &_TRACE_NVME_ERR_INVALID_PRP2_MISSING_EVENT,
+ &_TRACE_NVME_ERR_INVALID_FIELD_EVENT,
+ &_TRACE_NVME_ERR_INVALID_PRP_EVENT,
+ &_TRACE_NVME_ERR_INVALID_SGL_EVENT,
+ &_TRACE_NVME_ERR_INVALID_NS_EVENT,
+ &_TRACE_NVME_ERR_INVALID_OPC_EVENT,
+ &_TRACE_NVME_ERR_INVALID_ADMIN_OPC_EVENT,
+ &_TRACE_NVME_ERR_INVALID_LBA_RANGE_EVENT,
+ &_TRACE_NVME_ERR_INVALID_DEL_SQ_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_EVENT,
+ &_TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_EVENT,
+ &_TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_EVENT,
+ &_TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_EVENT,
+ &_TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_EVENT,
+ &_TRACE_NVME_ERR_INVALID_GETFEAT_EVENT,
+ &_TRACE_NVME_ERR_INVALID_SETFEAT_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_CQ_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_SQ_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_NBARASQ_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_NBARACQ_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_EVENT,
+ &_TRACE_NVME_ERR_STARTFAIL_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_MISALIGNED32_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_TOOSMALL_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_RO_CSTS_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_EVENT,
+ &_TRACE_NVME_UB_MMIOWR_INVALID_EVENT,
+ &_TRACE_NVME_UB_MMIORD_MISALIGNED32_EVENT,
+ &_TRACE_NVME_UB_MMIORD_TOOSMALL_EVENT,
+ &_TRACE_NVME_UB_MMIORD_INVALID_OFS_EVENT,
+ &_TRACE_NVME_UB_DB_WR_MISALIGNED_EVENT,
+ &_TRACE_NVME_UB_DB_WR_INVALID_CQ_EVENT,
+ &_TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_EVENT,
+ &_TRACE_NVME_UB_DB_WR_INVALID_SQ_EVENT,
+ &_TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_EVENT,
+ &_TRACE_XEN_DISK_ALLOC_EVENT,
+ &_TRACE_XEN_DISK_INIT_EVENT,
+ &_TRACE_XEN_DISK_CONNECT_EVENT,
+ &_TRACE_XEN_DISK_DISCONNECT_EVENT,
+ &_TRACE_XEN_DISK_FREE_EVENT,
+ NULL,
+};
+
+static void trace_hw_block_register_events(void)
+{
+ trace_event_register_group(hw_block_trace_events);
+}
+trace_init(trace_hw_block_register_events)
diff --git a/qemu2-auto-generated/hw/block/trace.h b/qemu2-auto-generated/hw/block/trace.h
new file mode 100644
index 0000000000..a50563ad3a
--- /dev/null
+++ b/qemu2-auto-generated/hw/block/trace.h
@@ -0,0 +1,1675 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_BLOCK_GENERATED_TRACERS_H
+#define TRACE_HW_BLOCK_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VIRTIO_BLK_REQ_COMPLETE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BLK_RW_COMPLETE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BLK_HANDLE_WRITE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BLK_HANDLE_READ_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_EVENT;
+extern TraceEvent _TRACE_HD_GEOMETRY_LCHS_GUESS_EVENT;
+extern TraceEvent _TRACE_HD_GEOMETRY_GUESS_EVENT;
+extern TraceEvent _TRACE_NVME_IRQ_MSIX_EVENT;
+extern TraceEvent _TRACE_NVME_IRQ_PIN_EVENT;
+extern TraceEvent _TRACE_NVME_IRQ_MASKED_EVENT;
+extern TraceEvent _TRACE_NVME_DMA_READ_EVENT;
+extern TraceEvent _TRACE_NVME_RW_EVENT;
+extern TraceEvent _TRACE_NVME_CREATE_SQ_EVENT;
+extern TraceEvent _TRACE_NVME_CREATE_CQ_EVENT;
+extern TraceEvent _TRACE_NVME_DEL_SQ_EVENT;
+extern TraceEvent _TRACE_NVME_DEL_CQ_EVENT;
+extern TraceEvent _TRACE_NVME_IDENTIFY_CTRL_EVENT;
+extern TraceEvent _TRACE_NVME_IDENTIFY_NS_EVENT;
+extern TraceEvent _TRACE_NVME_IDENTIFY_NSLIST_EVENT;
+extern TraceEvent _TRACE_NVME_GETFEAT_VWCACHE_EVENT;
+extern TraceEvent _TRACE_NVME_GETFEAT_NUMQ_EVENT;
+extern TraceEvent _TRACE_NVME_SETFEAT_NUMQ_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_INTM_SET_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_INTM_CLR_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_CFG_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_AQATTR_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_ASQADDR_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_ACQADDR_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_ASQADDR_HI_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_ACQADDR_HI_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_START_SUCCESS_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_STOPPED_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_SHUTDOWN_SET_EVENT;
+extern TraceEvent _TRACE_NVME_MMIO_SHUTDOWN_CLEARED_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_DMA_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_PRPLIST_ENT_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_PRP2_ALIGN_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_PRP2_MISSING_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_FIELD_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_PRP_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_SGL_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_NS_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_OPC_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_ADMIN_OPC_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_LBA_RANGE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_DEL_SQ_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_GETFEAT_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_INVALID_SETFEAT_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQ_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQ_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_NBARASQ_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_NBARACQ_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_EVENT;
+extern TraceEvent _TRACE_NVME_ERR_STARTFAIL_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_MISALIGNED32_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_TOOSMALL_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_RO_CSTS_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIOWR_INVALID_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIORD_MISALIGNED32_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIORD_TOOSMALL_EVENT;
+extern TraceEvent _TRACE_NVME_UB_MMIORD_INVALID_OFS_EVENT;
+extern TraceEvent _TRACE_NVME_UB_DB_WR_MISALIGNED_EVENT;
+extern TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_CQ_EVENT;
+extern TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_EVENT;
+extern TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_SQ_EVENT;
+extern TraceEvent _TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_EVENT;
+extern TraceEvent _TRACE_XEN_DISK_ALLOC_EVENT;
+extern TraceEvent _TRACE_XEN_DISK_INIT_EVENT;
+extern TraceEvent _TRACE_XEN_DISK_CONNECT_EVENT;
+extern TraceEvent _TRACE_XEN_DISK_DISCONNECT_EVENT;
+extern TraceEvent _TRACE_XEN_DISK_FREE_EVENT;
+extern uint16_t _TRACE_VIRTIO_BLK_REQ_COMPLETE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BLK_RW_COMPLETE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BLK_HANDLE_WRITE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BLK_HANDLE_READ_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_DSTATE;
+extern uint16_t _TRACE_HD_GEOMETRY_LCHS_GUESS_DSTATE;
+extern uint16_t _TRACE_HD_GEOMETRY_GUESS_DSTATE;
+extern uint16_t _TRACE_NVME_IRQ_MSIX_DSTATE;
+extern uint16_t _TRACE_NVME_IRQ_PIN_DSTATE;
+extern uint16_t _TRACE_NVME_IRQ_MASKED_DSTATE;
+extern uint16_t _TRACE_NVME_DMA_READ_DSTATE;
+extern uint16_t _TRACE_NVME_RW_DSTATE;
+extern uint16_t _TRACE_NVME_CREATE_SQ_DSTATE;
+extern uint16_t _TRACE_NVME_CREATE_CQ_DSTATE;
+extern uint16_t _TRACE_NVME_DEL_SQ_DSTATE;
+extern uint16_t _TRACE_NVME_DEL_CQ_DSTATE;
+extern uint16_t _TRACE_NVME_IDENTIFY_CTRL_DSTATE;
+extern uint16_t _TRACE_NVME_IDENTIFY_NS_DSTATE;
+extern uint16_t _TRACE_NVME_IDENTIFY_NSLIST_DSTATE;
+extern uint16_t _TRACE_NVME_GETFEAT_VWCACHE_DSTATE;
+extern uint16_t _TRACE_NVME_GETFEAT_NUMQ_DSTATE;
+extern uint16_t _TRACE_NVME_SETFEAT_NUMQ_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_INTM_SET_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_INTM_CLR_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_CFG_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_AQATTR_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_ASQADDR_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_ACQADDR_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_ASQADDR_HI_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_ACQADDR_HI_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_START_SUCCESS_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_STOPPED_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_SHUTDOWN_SET_DSTATE;
+extern uint16_t _TRACE_NVME_MMIO_SHUTDOWN_CLEARED_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_DMA_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_PRPLIST_ENT_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_PRP2_ALIGN_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_PRP2_MISSING_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_FIELD_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_PRP_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_SGL_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_NS_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_OPC_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_ADMIN_OPC_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_LBA_RANGE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_DEL_SQ_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_GETFEAT_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_INVALID_SETFEAT_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_CQ_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_SQ_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_NBARASQ_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_NBARACQ_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_DSTATE;
+extern uint16_t _TRACE_NVME_ERR_STARTFAIL_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_MISALIGNED32_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_TOOSMALL_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_RO_CSTS_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIOWR_INVALID_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIORD_MISALIGNED32_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIORD_TOOSMALL_DSTATE;
+extern uint16_t _TRACE_NVME_UB_MMIORD_INVALID_OFS_DSTATE;
+extern uint16_t _TRACE_NVME_UB_DB_WR_MISALIGNED_DSTATE;
+extern uint16_t _TRACE_NVME_UB_DB_WR_INVALID_CQ_DSTATE;
+extern uint16_t _TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_DSTATE;
+extern uint16_t _TRACE_NVME_UB_DB_WR_INVALID_SQ_DSTATE;
+extern uint16_t _TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_DSTATE;
+extern uint16_t _TRACE_XEN_DISK_ALLOC_DSTATE;
+extern uint16_t _TRACE_XEN_DISK_INIT_DSTATE;
+extern uint16_t _TRACE_XEN_DISK_CONNECT_DSTATE;
+extern uint16_t _TRACE_XEN_DISK_DISCONNECT_DSTATE;
+extern uint16_t _TRACE_XEN_DISK_FREE_DSTATE;
+#define TRACE_VIRTIO_BLK_REQ_COMPLETE_ENABLED 1
+#define TRACE_VIRTIO_BLK_RW_COMPLETE_ENABLED 1
+#define TRACE_VIRTIO_BLK_HANDLE_WRITE_ENABLED 1
+#define TRACE_VIRTIO_BLK_HANDLE_READ_ENABLED 1
+#define TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_ENABLED 1
+#define TRACE_HD_GEOMETRY_LCHS_GUESS_ENABLED 1
+#define TRACE_HD_GEOMETRY_GUESS_ENABLED 1
+#define TRACE_NVME_IRQ_MSIX_ENABLED 1
+#define TRACE_NVME_IRQ_PIN_ENABLED 1
+#define TRACE_NVME_IRQ_MASKED_ENABLED 1
+#define TRACE_NVME_DMA_READ_ENABLED 1
+#define TRACE_NVME_RW_ENABLED 1
+#define TRACE_NVME_CREATE_SQ_ENABLED 1
+#define TRACE_NVME_CREATE_CQ_ENABLED 1
+#define TRACE_NVME_DEL_SQ_ENABLED 1
+#define TRACE_NVME_DEL_CQ_ENABLED 1
+#define TRACE_NVME_IDENTIFY_CTRL_ENABLED 1
+#define TRACE_NVME_IDENTIFY_NS_ENABLED 1
+#define TRACE_NVME_IDENTIFY_NSLIST_ENABLED 1
+#define TRACE_NVME_GETFEAT_VWCACHE_ENABLED 1
+#define TRACE_NVME_GETFEAT_NUMQ_ENABLED 1
+#define TRACE_NVME_SETFEAT_NUMQ_ENABLED 1
+#define TRACE_NVME_MMIO_INTM_SET_ENABLED 1
+#define TRACE_NVME_MMIO_INTM_CLR_ENABLED 1
+#define TRACE_NVME_MMIO_CFG_ENABLED 1
+#define TRACE_NVME_MMIO_AQATTR_ENABLED 1
+#define TRACE_NVME_MMIO_ASQADDR_ENABLED 1
+#define TRACE_NVME_MMIO_ACQADDR_ENABLED 1
+#define TRACE_NVME_MMIO_ASQADDR_HI_ENABLED 1
+#define TRACE_NVME_MMIO_ACQADDR_HI_ENABLED 1
+#define TRACE_NVME_MMIO_START_SUCCESS_ENABLED 1
+#define TRACE_NVME_MMIO_STOPPED_ENABLED 1
+#define TRACE_NVME_MMIO_SHUTDOWN_SET_ENABLED 1
+#define TRACE_NVME_MMIO_SHUTDOWN_CLEARED_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_DMA_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_PRPLIST_ENT_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_PRP2_ALIGN_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_PRP2_MISSING_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_FIELD_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_PRP_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_SGL_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_NS_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_OPC_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_ADMIN_OPC_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_LBA_RANGE_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_DEL_SQ_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_GETFEAT_ENABLED 1
+#define TRACE_NVME_ERR_INVALID_SETFEAT_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_CQ_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_SQ_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_NBARASQ_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_NBARACQ_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_ENABLED 1
+#define TRACE_NVME_ERR_STARTFAIL_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_MISALIGNED32_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_TOOSMALL_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_RO_CSTS_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_ENABLED 1
+#define TRACE_NVME_UB_MMIOWR_INVALID_ENABLED 1
+#define TRACE_NVME_UB_MMIORD_MISALIGNED32_ENABLED 1
+#define TRACE_NVME_UB_MMIORD_TOOSMALL_ENABLED 1
+#define TRACE_NVME_UB_MMIORD_INVALID_OFS_ENABLED 1
+#define TRACE_NVME_UB_DB_WR_MISALIGNED_ENABLED 1
+#define TRACE_NVME_UB_DB_WR_INVALID_CQ_ENABLED 1
+#define TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_ENABLED 1
+#define TRACE_NVME_UB_DB_WR_INVALID_SQ_ENABLED 1
+#define TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_ENABLED 1
+#define TRACE_XEN_DISK_ALLOC_ENABLED 1
+#define TRACE_XEN_DISK_INIT_ENABLED 1
+#define TRACE_XEN_DISK_CONNECT_ENABLED 1
+#define TRACE_XEN_DISK_DISCONNECT_ENABLED 1
+#define TRACE_XEN_DISK_FREE_ENABLED 1
+
+#define TRACE_VIRTIO_BLK_REQ_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_req_complete(void * vdev, void * req, int status)
+{
+}
+
+static inline void trace_virtio_blk_req_complete(void * vdev, void * req, int status)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_req_complete(vdev, req, status);
+ }
+}
+
+#define TRACE_VIRTIO_BLK_RW_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_rw_complete(void * vdev, void * req, int ret)
+{
+}
+
+static inline void trace_virtio_blk_rw_complete(void * vdev, void * req, int ret)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_rw_complete(vdev, req, ret);
+ }
+}
+
+#define TRACE_VIRTIO_BLK_HANDLE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_handle_write(void * vdev, void * req, uint64_t sector, size_t nsectors)
+{
+}
+
+static inline void trace_virtio_blk_handle_write(void * vdev, void * req, uint64_t sector, size_t nsectors)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_handle_write(vdev, req, sector, nsectors);
+ }
+}
+
+#define TRACE_VIRTIO_BLK_HANDLE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_handle_read(void * vdev, void * req, uint64_t sector, size_t nsectors)
+{
+}
+
+static inline void trace_virtio_blk_handle_read(void * vdev, void * req, uint64_t sector, size_t nsectors)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_handle_read(vdev, req, sector, nsectors);
+ }
+}
+
+#define TRACE_VIRTIO_BLK_SUBMIT_MULTIREQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_blk_submit_multireq(void * vdev, void * mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write)
+{
+}
+
+static inline void trace_virtio_blk_submit_multireq(void * vdev, void * mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write)
+{
+ if (true) {
+ _nocheck__trace_virtio_blk_submit_multireq(vdev, mrb, start, num_reqs, offset, size, is_write);
+ }
+}
+
+#define TRACE_HD_GEOMETRY_LCHS_GUESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hd_geometry_lchs_guess(void * blk, int cyls, int heads, int secs)
+{
+}
+
+static inline void trace_hd_geometry_lchs_guess(void * blk, int cyls, int heads, int secs)
+{
+ if (true) {
+ _nocheck__trace_hd_geometry_lchs_guess(blk, cyls, heads, secs);
+ }
+}
+
+#define TRACE_HD_GEOMETRY_GUESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hd_geometry_guess(void * blk, uint32_t cyls, uint32_t heads, uint32_t secs, int trans)
+{
+}
+
+static inline void trace_hd_geometry_guess(void * blk, uint32_t cyls, uint32_t heads, uint32_t secs, int trans)
+{
+ if (true) {
+ _nocheck__trace_hd_geometry_guess(blk, cyls, heads, secs, trans);
+ }
+}
+
+#define TRACE_NVME_IRQ_MSIX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_irq_msix(uint32_t vector)
+{
+}
+
+static inline void trace_nvme_irq_msix(uint32_t vector)
+{
+ if (true) {
+ _nocheck__trace_nvme_irq_msix(vector);
+ }
+}
+
+#define TRACE_NVME_IRQ_PIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_irq_pin(void)
+{
+}
+
+static inline void trace_nvme_irq_pin(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_irq_pin();
+ }
+}
+
+#define TRACE_NVME_IRQ_MASKED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_irq_masked(void)
+{
+}
+
+static inline void trace_nvme_irq_masked(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_irq_masked();
+ }
+}
+
+#define TRACE_NVME_DMA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_dma_read(uint64_t prp1, uint64_t prp2)
+{
+}
+
+static inline void trace_nvme_dma_read(uint64_t prp1, uint64_t prp2)
+{
+ if (true) {
+ _nocheck__trace_nvme_dma_read(prp1, prp2);
+ }
+}
+
+#define TRACE_NVME_RW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_rw(const char * verb, uint32_t blk_count, uint64_t byte_count, uint64_t lba)
+{
+}
+
+static inline void trace_nvme_rw(const char * verb, uint32_t blk_count, uint64_t byte_count, uint64_t lba)
+{
+ if (true) {
+ _nocheck__trace_nvme_rw(verb, blk_count, byte_count, lba);
+ }
+}
+
+#define TRACE_NVME_CREATE_SQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_create_sq(uint64_t addr, uint16_t sqid, uint16_t cqid, uint16_t qsize, uint16_t qflags)
+{
+}
+
+static inline void trace_nvme_create_sq(uint64_t addr, uint16_t sqid, uint16_t cqid, uint16_t qsize, uint16_t qflags)
+{
+ if (true) {
+ _nocheck__trace_nvme_create_sq(addr, sqid, cqid, qsize, qflags);
+ }
+}
+
+#define TRACE_NVME_CREATE_CQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_create_cq(uint64_t addr, uint16_t cqid, uint16_t vector, uint16_t size, uint16_t qflags, int ien)
+{
+}
+
+static inline void trace_nvme_create_cq(uint64_t addr, uint16_t cqid, uint16_t vector, uint16_t size, uint16_t qflags, int ien)
+{
+ if (true) {
+ _nocheck__trace_nvme_create_cq(addr, cqid, vector, size, qflags, ien);
+ }
+}
+
+#define TRACE_NVME_DEL_SQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_del_sq(uint16_t qid)
+{
+}
+
+static inline void trace_nvme_del_sq(uint16_t qid)
+{
+ if (true) {
+ _nocheck__trace_nvme_del_sq(qid);
+ }
+}
+
+#define TRACE_NVME_DEL_CQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_del_cq(uint16_t cqid)
+{
+}
+
+static inline void trace_nvme_del_cq(uint16_t cqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_del_cq(cqid);
+ }
+}
+
+#define TRACE_NVME_IDENTIFY_CTRL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_identify_ctrl(void)
+{
+}
+
+static inline void trace_nvme_identify_ctrl(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_identify_ctrl();
+ }
+}
+
+#define TRACE_NVME_IDENTIFY_NS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_identify_ns(uint16_t ns)
+{
+}
+
+static inline void trace_nvme_identify_ns(uint16_t ns)
+{
+ if (true) {
+ _nocheck__trace_nvme_identify_ns(ns);
+ }
+}
+
+#define TRACE_NVME_IDENTIFY_NSLIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_identify_nslist(uint16_t ns)
+{
+}
+
+static inline void trace_nvme_identify_nslist(uint16_t ns)
+{
+ if (true) {
+ _nocheck__trace_nvme_identify_nslist(ns);
+ }
+}
+
+#define TRACE_NVME_GETFEAT_VWCACHE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_getfeat_vwcache(const char* result)
+{
+}
+
+static inline void trace_nvme_getfeat_vwcache(const char* result)
+{
+ if (true) {
+ _nocheck__trace_nvme_getfeat_vwcache(result);
+ }
+}
+
+#define TRACE_NVME_GETFEAT_NUMQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_getfeat_numq(int result)
+{
+}
+
+static inline void trace_nvme_getfeat_numq(int result)
+{
+ if (true) {
+ _nocheck__trace_nvme_getfeat_numq(result);
+ }
+}
+
+#define TRACE_NVME_SETFEAT_NUMQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_setfeat_numq(int reqcq, int reqsq, int gotcq, int gotsq)
+{
+}
+
+static inline void trace_nvme_setfeat_numq(int reqcq, int reqsq, int gotcq, int gotsq)
+{
+ if (true) {
+ _nocheck__trace_nvme_setfeat_numq(reqcq, reqsq, gotcq, gotsq);
+ }
+}
+
+#define TRACE_NVME_MMIO_INTM_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_intm_set(uint64_t data, uint64_t new_mask)
+{
+}
+
+static inline void trace_nvme_mmio_intm_set(uint64_t data, uint64_t new_mask)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_intm_set(data, new_mask);
+ }
+}
+
+#define TRACE_NVME_MMIO_INTM_CLR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_intm_clr(uint64_t data, uint64_t new_mask)
+{
+}
+
+static inline void trace_nvme_mmio_intm_clr(uint64_t data, uint64_t new_mask)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_intm_clr(data, new_mask);
+ }
+}
+
+#define TRACE_NVME_MMIO_CFG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_cfg(uint64_t data)
+{
+}
+
+static inline void trace_nvme_mmio_cfg(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_cfg(data);
+ }
+}
+
+#define TRACE_NVME_MMIO_AQATTR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_aqattr(uint64_t data)
+{
+}
+
+static inline void trace_nvme_mmio_aqattr(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_aqattr(data);
+ }
+}
+
+#define TRACE_NVME_MMIO_ASQADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_asqaddr(uint64_t data)
+{
+}
+
+static inline void trace_nvme_mmio_asqaddr(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_asqaddr(data);
+ }
+}
+
+#define TRACE_NVME_MMIO_ACQADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_acqaddr(uint64_t data)
+{
+}
+
+static inline void trace_nvme_mmio_acqaddr(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_acqaddr(data);
+ }
+}
+
+#define TRACE_NVME_MMIO_ASQADDR_HI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_asqaddr_hi(uint64_t data, uint64_t new_addr)
+{
+}
+
+static inline void trace_nvme_mmio_asqaddr_hi(uint64_t data, uint64_t new_addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_asqaddr_hi(data, new_addr);
+ }
+}
+
+#define TRACE_NVME_MMIO_ACQADDR_HI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_acqaddr_hi(uint64_t data, uint64_t new_addr)
+{
+}
+
+static inline void trace_nvme_mmio_acqaddr_hi(uint64_t data, uint64_t new_addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_acqaddr_hi(data, new_addr);
+ }
+}
+
+#define TRACE_NVME_MMIO_START_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_start_success(void)
+{
+}
+
+static inline void trace_nvme_mmio_start_success(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_start_success();
+ }
+}
+
+#define TRACE_NVME_MMIO_STOPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_stopped(void)
+{
+}
+
+static inline void trace_nvme_mmio_stopped(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_stopped();
+ }
+}
+
+#define TRACE_NVME_MMIO_SHUTDOWN_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_shutdown_set(void)
+{
+}
+
+static inline void trace_nvme_mmio_shutdown_set(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_shutdown_set();
+ }
+}
+
+#define TRACE_NVME_MMIO_SHUTDOWN_CLEARED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_mmio_shutdown_cleared(void)
+{
+}
+
+static inline void trace_nvme_mmio_shutdown_cleared(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_mmio_shutdown_cleared();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_DMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_dma(void)
+{
+}
+
+static inline void trace_nvme_err_invalid_dma(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_dma();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_PRPLIST_ENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_prplist_ent(uint64_t prplist)
+{
+}
+
+static inline void trace_nvme_err_invalid_prplist_ent(uint64_t prplist)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_prplist_ent(prplist);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_PRP2_ALIGN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_prp2_align(uint64_t prp2)
+{
+}
+
+static inline void trace_nvme_err_invalid_prp2_align(uint64_t prp2)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_prp2_align(prp2);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_PRP2_MISSING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_prp2_missing(void)
+{
+}
+
+static inline void trace_nvme_err_invalid_prp2_missing(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_prp2_missing();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_FIELD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_field(void)
+{
+}
+
+static inline void trace_nvme_err_invalid_field(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_field();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_PRP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_prp(void)
+{
+}
+
+static inline void trace_nvme_err_invalid_prp(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_prp();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_SGL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_sgl(void)
+{
+}
+
+static inline void trace_nvme_err_invalid_sgl(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_sgl();
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_NS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_ns(uint32_t ns, uint32_t limit)
+{
+}
+
+static inline void trace_nvme_err_invalid_ns(uint32_t ns, uint32_t limit)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_ns(ns, limit);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_OPC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_opc(uint8_t opc)
+{
+}
+
+static inline void trace_nvme_err_invalid_opc(uint8_t opc)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_opc(opc);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_ADMIN_OPC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_admin_opc(uint8_t opc)
+{
+}
+
+static inline void trace_nvme_err_invalid_admin_opc(uint8_t opc)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_admin_opc(opc);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_LBA_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_lba_range(uint64_t start, uint64_t len, uint64_t limit)
+{
+}
+
+static inline void trace_nvme_err_invalid_lba_range(uint64_t start, uint64_t len, uint64_t limit)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_lba_range(start, len, limit);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_DEL_SQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_del_sq(uint16_t qid)
+{
+}
+
+static inline void trace_nvme_err_invalid_del_sq(uint16_t qid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_del_sq(qid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_CQID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_sq_cqid(uint16_t cqid)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_sq_cqid(uint16_t cqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_sq_cqid(cqid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_SQID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_sq_sqid(uint16_t sqid)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_sq_sqid(uint16_t sqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_sq_sqid(sqid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_sq_size(uint16_t qsize)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_sq_size(uint16_t qsize)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_sq_size(qsize);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_sq_addr(uint64_t addr)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_sq_addr(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_sq_addr(addr);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_SQ_QFLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_sq_qflags(uint16_t qflags)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_sq_qflags(uint16_t qflags)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_sq_qflags(qflags);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_DEL_CQ_CQID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_del_cq_cqid(uint16_t cqid)
+{
+}
+
+static inline void trace_nvme_err_invalid_del_cq_cqid(uint16_t cqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_del_cq_cqid(cqid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_DEL_CQ_NOTEMPTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_del_cq_notempty(uint16_t cqid)
+{
+}
+
+static inline void trace_nvme_err_invalid_del_cq_notempty(uint16_t cqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_del_cq_notempty(cqid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_CQID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_cq_cqid(uint16_t cqid)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_cq_cqid(uint16_t cqid)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_cq_cqid(cqid);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_cq_size(uint16_t size)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_cq_size(uint16_t size)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_cq_size(size);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_cq_addr(uint64_t addr)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_cq_addr(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_cq_addr(addr);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_VECTOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_cq_vector(uint16_t vector)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_cq_vector(uint16_t vector)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_cq_vector(vector);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_CREATE_CQ_QFLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_create_cq_qflags(uint16_t qflags)
+{
+}
+
+static inline void trace_nvme_err_invalid_create_cq_qflags(uint16_t qflags)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_create_cq_qflags(qflags);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_IDENTIFY_CNS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_identify_cns(uint16_t cns)
+{
+}
+
+static inline void trace_nvme_err_invalid_identify_cns(uint16_t cns)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_identify_cns(cns);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_GETFEAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_getfeat(int dw10)
+{
+}
+
+static inline void trace_nvme_err_invalid_getfeat(int dw10)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_getfeat(dw10);
+ }
+}
+
+#define TRACE_NVME_ERR_INVALID_SETFEAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_invalid_setfeat(uint32_t dw10)
+{
+}
+
+static inline void trace_nvme_err_invalid_setfeat(uint32_t dw10)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_invalid_setfeat(dw10);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_CQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_cq(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_cq(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_cq();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_SQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_sq(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_sq(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_sq();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_NBARASQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_nbarasq(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_nbarasq(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_nbarasq();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_NBARACQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_nbaracq(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_nbaracq(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_nbaracq();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_ASQ_MISALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_asq_misaligned(uint64_t addr)
+{
+}
+
+static inline void trace_nvme_err_startfail_asq_misaligned(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_asq_misaligned(addr);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_ACQ_MISALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_acq_misaligned(uint64_t addr)
+{
+}
+
+static inline void trace_nvme_err_startfail_acq_misaligned(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_acq_misaligned(addr);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_SMALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_page_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_page_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_page_too_small(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_PAGE_TOO_LARGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_page_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_page_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_page_too_large(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_SMALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_cqent_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_cqent_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_cqent_too_small(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_CQENT_TOO_LARGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_cqent_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_cqent_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_cqent_too_large(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_SMALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_sqent_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_sqent_too_small(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_sqent_too_small(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_SQENT_TOO_LARGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_sqent_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+}
+
+static inline void trace_nvme_err_startfail_sqent_too_large(uint8_t log2ps, uint8_t maxlog2ps)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_sqent_too_large(log2ps, maxlog2ps);
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_ASQENT_SZ_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_asqent_sz_zero(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_asqent_sz_zero(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_asqent_sz_zero();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_ACQENT_SZ_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail_acqent_sz_zero(void)
+{
+}
+
+static inline void trace_nvme_err_startfail_acqent_sz_zero(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail_acqent_sz_zero();
+ }
+}
+
+#define TRACE_NVME_ERR_STARTFAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_err_startfail(void)
+{
+}
+
+static inline void trace_nvme_err_startfail(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_err_startfail();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_MISALIGNED32_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_misaligned32(uint64_t offset)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_misaligned32(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_misaligned32(offset);
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_TOOSMALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_toosmall(uint64_t offset, unsigned size)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_toosmall(uint64_t offset, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_toosmall(offset, size);
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_INTMASK_WITH_MSIX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_intmask_with_msix(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_intmask_with_msix(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_intmask_with_msix();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_RO_CSTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_ro_csts(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_ro_csts(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_ro_csts();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_SSRESET_W1C_UNSUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_ssreset_w1c_unsupported(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_ssreset_w1c_unsupported(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_ssreset_w1c_unsupported();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_SSRESET_UNSUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_ssreset_unsupported(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_ssreset_unsupported(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_ssreset_unsupported();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_CMBLOC_RESERVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_cmbloc_reserved(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_cmbloc_reserved(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_cmbloc_reserved();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_CMBSZ_READONLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_cmbsz_readonly(void)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_cmbsz_readonly(void)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_cmbsz_readonly();
+ }
+}
+
+#define TRACE_NVME_UB_MMIOWR_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiowr_invalid(uint64_t offset, uint64_t data)
+{
+}
+
+static inline void trace_nvme_ub_mmiowr_invalid(uint64_t offset, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiowr_invalid(offset, data);
+ }
+}
+
+#define TRACE_NVME_UB_MMIORD_MISALIGNED32_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiord_misaligned32(uint64_t offset)
+{
+}
+
+static inline void trace_nvme_ub_mmiord_misaligned32(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiord_misaligned32(offset);
+ }
+}
+
+#define TRACE_NVME_UB_MMIORD_TOOSMALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiord_toosmall(uint64_t offset)
+{
+}
+
+static inline void trace_nvme_ub_mmiord_toosmall(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiord_toosmall(offset);
+ }
+}
+
+#define TRACE_NVME_UB_MMIORD_INVALID_OFS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_mmiord_invalid_ofs(uint64_t offset)
+{
+}
+
+static inline void trace_nvme_ub_mmiord_invalid_ofs(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_mmiord_invalid_ofs(offset);
+ }
+}
+
+#define TRACE_NVME_UB_DB_WR_MISALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_db_wr_misaligned(uint64_t offset)
+{
+}
+
+static inline void trace_nvme_ub_db_wr_misaligned(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_db_wr_misaligned(offset);
+ }
+}
+
+#define TRACE_NVME_UB_DB_WR_INVALID_CQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_db_wr_invalid_cq(uint32_t qid)
+{
+}
+
+static inline void trace_nvme_ub_db_wr_invalid_cq(uint32_t qid)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_db_wr_invalid_cq(qid);
+ }
+}
+
+#define TRACE_NVME_UB_DB_WR_INVALID_CQHEAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_db_wr_invalid_cqhead(uint32_t qid, uint16_t new_head)
+{
+}
+
+static inline void trace_nvme_ub_db_wr_invalid_cqhead(uint32_t qid, uint16_t new_head)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_db_wr_invalid_cqhead(qid, new_head);
+ }
+}
+
+#define TRACE_NVME_UB_DB_WR_INVALID_SQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_db_wr_invalid_sq(uint32_t qid)
+{
+}
+
+static inline void trace_nvme_ub_db_wr_invalid_sq(uint32_t qid)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_db_wr_invalid_sq(qid);
+ }
+}
+
+#define TRACE_NVME_UB_DB_WR_INVALID_SQTAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvme_ub_db_wr_invalid_sqtail(uint32_t qid, uint16_t new_tail)
+{
+}
+
+static inline void trace_nvme_ub_db_wr_invalid_sqtail(uint32_t qid, uint16_t new_tail)
+{
+ if (true) {
+ _nocheck__trace_nvme_ub_db_wr_invalid_sqtail(qid, new_tail);
+ }
+}
+
+#define TRACE_XEN_DISK_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_disk_alloc(char * name)
+{
+}
+
+static inline void trace_xen_disk_alloc(char * name)
+{
+ if (true) {
+ _nocheck__trace_xen_disk_alloc(name);
+ }
+}
+
+#define TRACE_XEN_DISK_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_disk_init(char * name)
+{
+}
+
+static inline void trace_xen_disk_init(char * name)
+{
+ if (true) {
+ _nocheck__trace_xen_disk_init(name);
+ }
+}
+
+#define TRACE_XEN_DISK_CONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_disk_connect(char * name)
+{
+}
+
+static inline void trace_xen_disk_connect(char * name)
+{
+ if (true) {
+ _nocheck__trace_xen_disk_connect(name);
+ }
+}
+
+#define TRACE_XEN_DISK_DISCONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_disk_disconnect(char * name)
+{
+}
+
+static inline void trace_xen_disk_disconnect(char * name)
+{
+ if (true) {
+ _nocheck__trace_xen_disk_disconnect(name);
+ }
+}
+
+#define TRACE_XEN_DISK_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_disk_free(char * name)
+{
+}
+
+static inline void trace_xen_disk_free(char * name)
+{
+ if (true) {
+ _nocheck__trace_xen_disk_free(name);
+ }
+}
+#endif /* TRACE_HW_BLOCK_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/char/trace.c b/qemu2-auto-generated/hw/char/trace.c
new file mode 100644
index 0000000000..a7013a849b
--- /dev/null
+++ b/qemu2-auto-generated/hw/char/trace.c
@@ -0,0 +1,446 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_DSTATE;
+uint16_t _TRACE_VIRTIO_SERIAL_THROTTLE_PORT_DSTATE;
+uint16_t _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_DSTATE;
+uint16_t _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_DSTATE;
+uint16_t _TRACE_VIRTIO_CONSOLE_FLUSH_BUF_DSTATE;
+uint16_t _TRACE_VIRTIO_CONSOLE_CHR_READ_DSTATE;
+uint16_t _TRACE_VIRTIO_CONSOLE_CHR_EVENT_DSTATE;
+uint16_t _TRACE_GRLIB_APBUART_EVENT_DSTATE;
+uint16_t _TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_DSTATE;
+uint16_t _TRACE_GRLIB_APBUART_READL_UNKNOWN_DSTATE;
+uint16_t _TRACE_LM32_JUART_GET_JTX_DSTATE;
+uint16_t _TRACE_LM32_JUART_SET_JTX_DSTATE;
+uint16_t _TRACE_LM32_JUART_GET_JRX_DSTATE;
+uint16_t _TRACE_LM32_JUART_SET_JRX_DSTATE;
+uint16_t _TRACE_LM32_UART_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_LM32_UART_MEMORY_READ_DSTATE;
+uint16_t _TRACE_LM32_UART_IRQ_STATE_DSTATE;
+uint16_t _TRACE_MILKYMIST_UART_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_UART_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_UART_RAISE_IRQ_DSTATE;
+uint16_t _TRACE_MILKYMIST_UART_LOWER_IRQ_DSTATE;
+uint16_t _TRACE_ESCC_PUT_QUEUE_DSTATE;
+uint16_t _TRACE_ESCC_GET_QUEUE_DSTATE;
+uint16_t _TRACE_ESCC_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_ESCC_UPDATE_PARAMETERS_DSTATE;
+uint16_t _TRACE_ESCC_MEM_WRITEB_CTRL_DSTATE;
+uint16_t _TRACE_ESCC_MEM_WRITEB_DATA_DSTATE;
+uint16_t _TRACE_ESCC_MEM_READB_CTRL_DSTATE;
+uint16_t _TRACE_ESCC_MEM_READB_DATA_DSTATE;
+uint16_t _TRACE_ESCC_SERIAL_RECEIVE_BYTE_DSTATE;
+uint16_t _TRACE_ESCC_SUNKBD_EVENT_IN_DSTATE;
+uint16_t _TRACE_ESCC_SUNKBD_EVENT_OUT_DSTATE;
+uint16_t _TRACE_ESCC_KBD_COMMAND_DSTATE;
+uint16_t _TRACE_ESCC_SUNMOUSE_EVENT_DSTATE;
+uint16_t _TRACE_PL011_IRQ_STATE_DSTATE;
+uint16_t _TRACE_PL011_READ_DSTATE;
+uint16_t _TRACE_PL011_READ_FIFO_DSTATE;
+uint16_t _TRACE_PL011_WRITE_DSTATE;
+uint16_t _TRACE_PL011_CAN_RECEIVE_DSTATE;
+uint16_t _TRACE_PL011_PUT_FIFO_DSTATE;
+uint16_t _TRACE_PL011_PUT_FIFO_FULL_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_READ_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_WRITE_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_RESET_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_RECEIVE_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_TX_PENDING_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_TX_DSTATE;
+uint16_t _TRACE_CMSDK_APB_UART_SET_PARAMS_DSTATE;
+TraceEvent _TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_serial_send_control_event",
+ .sstate = TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_SERIAL_THROTTLE_PORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_serial_throttle_port",
+ .sstate = TRACE_VIRTIO_SERIAL_THROTTLE_PORT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_SERIAL_THROTTLE_PORT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_serial_handle_control_message",
+ .sstate = TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_serial_handle_control_message_port",
+ .sstate = TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CONSOLE_FLUSH_BUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_console_flush_buf",
+ .sstate = TRACE_VIRTIO_CONSOLE_FLUSH_BUF_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CONSOLE_FLUSH_BUF_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CONSOLE_CHR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_console_chr_read",
+ .sstate = TRACE_VIRTIO_CONSOLE_CHR_READ_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CONSOLE_CHR_READ_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CONSOLE_CHR_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_console_chr_event",
+ .sstate = TRACE_VIRTIO_CONSOLE_CHR_EVENT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CONSOLE_CHR_EVENT_DSTATE
+};
+TraceEvent _TRACE_GRLIB_APBUART_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_apbuart_event",
+ .sstate = TRACE_GRLIB_APBUART_EVENT_ENABLED,
+ .dstate = &_TRACE_GRLIB_APBUART_EVENT_DSTATE
+};
+TraceEvent _TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_apbuart_writel_unknown",
+ .sstate = TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_GRLIB_APBUART_READL_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_apbuart_readl_unknown",
+ .sstate = TRACE_GRLIB_APBUART_READL_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_GRLIB_APBUART_READL_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_LM32_JUART_GET_JTX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_juart_get_jtx",
+ .sstate = TRACE_LM32_JUART_GET_JTX_ENABLED,
+ .dstate = &_TRACE_LM32_JUART_GET_JTX_DSTATE
+};
+TraceEvent _TRACE_LM32_JUART_SET_JTX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_juart_set_jtx",
+ .sstate = TRACE_LM32_JUART_SET_JTX_ENABLED,
+ .dstate = &_TRACE_LM32_JUART_SET_JTX_DSTATE
+};
+TraceEvent _TRACE_LM32_JUART_GET_JRX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_juart_get_jrx",
+ .sstate = TRACE_LM32_JUART_GET_JRX_ENABLED,
+ .dstate = &_TRACE_LM32_JUART_GET_JRX_DSTATE
+};
+TraceEvent _TRACE_LM32_JUART_SET_JRX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_juart_set_jrx",
+ .sstate = TRACE_LM32_JUART_SET_JRX_ENABLED,
+ .dstate = &_TRACE_LM32_JUART_SET_JRX_DSTATE
+};
+TraceEvent _TRACE_LM32_UART_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_uart_memory_write",
+ .sstate = TRACE_LM32_UART_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_LM32_UART_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_LM32_UART_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_uart_memory_read",
+ .sstate = TRACE_LM32_UART_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_LM32_UART_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_LM32_UART_IRQ_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_uart_irq_state",
+ .sstate = TRACE_LM32_UART_IRQ_STATE_ENABLED,
+ .dstate = &_TRACE_LM32_UART_IRQ_STATE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_UART_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_uart_memory_read",
+ .sstate = TRACE_MILKYMIST_UART_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_UART_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_UART_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_uart_memory_write",
+ .sstate = TRACE_MILKYMIST_UART_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_UART_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_UART_RAISE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_uart_raise_irq",
+ .sstate = TRACE_MILKYMIST_UART_RAISE_IRQ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_UART_RAISE_IRQ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_UART_LOWER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_uart_lower_irq",
+ .sstate = TRACE_MILKYMIST_UART_LOWER_IRQ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_UART_LOWER_IRQ_DSTATE
+};
+TraceEvent _TRACE_ESCC_PUT_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_put_queue",
+ .sstate = TRACE_ESCC_PUT_QUEUE_ENABLED,
+ .dstate = &_TRACE_ESCC_PUT_QUEUE_DSTATE
+};
+TraceEvent _TRACE_ESCC_GET_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_get_queue",
+ .sstate = TRACE_ESCC_GET_QUEUE_ENABLED,
+ .dstate = &_TRACE_ESCC_GET_QUEUE_DSTATE
+};
+TraceEvent _TRACE_ESCC_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_update_irq",
+ .sstate = TRACE_ESCC_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_ESCC_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_ESCC_UPDATE_PARAMETERS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_update_parameters",
+ .sstate = TRACE_ESCC_UPDATE_PARAMETERS_ENABLED,
+ .dstate = &_TRACE_ESCC_UPDATE_PARAMETERS_DSTATE
+};
+TraceEvent _TRACE_ESCC_MEM_WRITEB_CTRL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_mem_writeb_ctrl",
+ .sstate = TRACE_ESCC_MEM_WRITEB_CTRL_ENABLED,
+ .dstate = &_TRACE_ESCC_MEM_WRITEB_CTRL_DSTATE
+};
+TraceEvent _TRACE_ESCC_MEM_WRITEB_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_mem_writeb_data",
+ .sstate = TRACE_ESCC_MEM_WRITEB_DATA_ENABLED,
+ .dstate = &_TRACE_ESCC_MEM_WRITEB_DATA_DSTATE
+};
+TraceEvent _TRACE_ESCC_MEM_READB_CTRL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_mem_readb_ctrl",
+ .sstate = TRACE_ESCC_MEM_READB_CTRL_ENABLED,
+ .dstate = &_TRACE_ESCC_MEM_READB_CTRL_DSTATE
+};
+TraceEvent _TRACE_ESCC_MEM_READB_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_mem_readb_data",
+ .sstate = TRACE_ESCC_MEM_READB_DATA_ENABLED,
+ .dstate = &_TRACE_ESCC_MEM_READB_DATA_DSTATE
+};
+TraceEvent _TRACE_ESCC_SERIAL_RECEIVE_BYTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_serial_receive_byte",
+ .sstate = TRACE_ESCC_SERIAL_RECEIVE_BYTE_ENABLED,
+ .dstate = &_TRACE_ESCC_SERIAL_RECEIVE_BYTE_DSTATE
+};
+TraceEvent _TRACE_ESCC_SUNKBD_EVENT_IN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_sunkbd_event_in",
+ .sstate = TRACE_ESCC_SUNKBD_EVENT_IN_ENABLED,
+ .dstate = &_TRACE_ESCC_SUNKBD_EVENT_IN_DSTATE
+};
+TraceEvent _TRACE_ESCC_SUNKBD_EVENT_OUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_sunkbd_event_out",
+ .sstate = TRACE_ESCC_SUNKBD_EVENT_OUT_ENABLED,
+ .dstate = &_TRACE_ESCC_SUNKBD_EVENT_OUT_DSTATE
+};
+TraceEvent _TRACE_ESCC_KBD_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_kbd_command",
+ .sstate = TRACE_ESCC_KBD_COMMAND_ENABLED,
+ .dstate = &_TRACE_ESCC_KBD_COMMAND_DSTATE
+};
+TraceEvent _TRACE_ESCC_SUNMOUSE_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "escc_sunmouse_event",
+ .sstate = TRACE_ESCC_SUNMOUSE_EVENT_ENABLED,
+ .dstate = &_TRACE_ESCC_SUNMOUSE_EVENT_DSTATE
+};
+TraceEvent _TRACE_PL011_IRQ_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_irq_state",
+ .sstate = TRACE_PL011_IRQ_STATE_ENABLED,
+ .dstate = &_TRACE_PL011_IRQ_STATE_DSTATE
+};
+TraceEvent _TRACE_PL011_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_read",
+ .sstate = TRACE_PL011_READ_ENABLED,
+ .dstate = &_TRACE_PL011_READ_DSTATE
+};
+TraceEvent _TRACE_PL011_READ_FIFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_read_fifo",
+ .sstate = TRACE_PL011_READ_FIFO_ENABLED,
+ .dstate = &_TRACE_PL011_READ_FIFO_DSTATE
+};
+TraceEvent _TRACE_PL011_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_write",
+ .sstate = TRACE_PL011_WRITE_ENABLED,
+ .dstate = &_TRACE_PL011_WRITE_DSTATE
+};
+TraceEvent _TRACE_PL011_CAN_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_can_receive",
+ .sstate = TRACE_PL011_CAN_RECEIVE_ENABLED,
+ .dstate = &_TRACE_PL011_CAN_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_PL011_PUT_FIFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_put_fifo",
+ .sstate = TRACE_PL011_PUT_FIFO_ENABLED,
+ .dstate = &_TRACE_PL011_PUT_FIFO_DSTATE
+};
+TraceEvent _TRACE_PL011_PUT_FIFO_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pl011_put_fifo_full",
+ .sstate = TRACE_PL011_PUT_FIFO_FULL_ENABLED,
+ .dstate = &_TRACE_PL011_PUT_FIFO_FULL_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_read",
+ .sstate = TRACE_CMSDK_APB_UART_READ_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_READ_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_write",
+ .sstate = TRACE_CMSDK_APB_UART_WRITE_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_WRITE_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_reset",
+ .sstate = TRACE_CMSDK_APB_UART_RESET_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_RESET_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_receive",
+ .sstate = TRACE_CMSDK_APB_UART_RECEIVE_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_TX_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_tx_pending",
+ .sstate = TRACE_CMSDK_APB_UART_TX_PENDING_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_TX_PENDING_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_TX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_tx",
+ .sstate = TRACE_CMSDK_APB_UART_TX_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_TX_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_UART_SET_PARAMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_uart_set_params",
+ .sstate = TRACE_CMSDK_APB_UART_SET_PARAMS_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_UART_SET_PARAMS_DSTATE
+};
+TraceEvent *hw_char_trace_events[] = {
+ &_TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_EVENT,
+ &_TRACE_VIRTIO_SERIAL_THROTTLE_PORT_EVENT,
+ &_TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_EVENT,
+ &_TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_EVENT,
+ &_TRACE_VIRTIO_CONSOLE_FLUSH_BUF_EVENT,
+ &_TRACE_VIRTIO_CONSOLE_CHR_READ_EVENT,
+ &_TRACE_VIRTIO_CONSOLE_CHR_EVENT_EVENT,
+ &_TRACE_GRLIB_APBUART_EVENT_EVENT,
+ &_TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_EVENT,
+ &_TRACE_GRLIB_APBUART_READL_UNKNOWN_EVENT,
+ &_TRACE_LM32_JUART_GET_JTX_EVENT,
+ &_TRACE_LM32_JUART_SET_JTX_EVENT,
+ &_TRACE_LM32_JUART_GET_JRX_EVENT,
+ &_TRACE_LM32_JUART_SET_JRX_EVENT,
+ &_TRACE_LM32_UART_MEMORY_WRITE_EVENT,
+ &_TRACE_LM32_UART_MEMORY_READ_EVENT,
+ &_TRACE_LM32_UART_IRQ_STATE_EVENT,
+ &_TRACE_MILKYMIST_UART_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_UART_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_UART_RAISE_IRQ_EVENT,
+ &_TRACE_MILKYMIST_UART_LOWER_IRQ_EVENT,
+ &_TRACE_ESCC_PUT_QUEUE_EVENT,
+ &_TRACE_ESCC_GET_QUEUE_EVENT,
+ &_TRACE_ESCC_UPDATE_IRQ_EVENT,
+ &_TRACE_ESCC_UPDATE_PARAMETERS_EVENT,
+ &_TRACE_ESCC_MEM_WRITEB_CTRL_EVENT,
+ &_TRACE_ESCC_MEM_WRITEB_DATA_EVENT,
+ &_TRACE_ESCC_MEM_READB_CTRL_EVENT,
+ &_TRACE_ESCC_MEM_READB_DATA_EVENT,
+ &_TRACE_ESCC_SERIAL_RECEIVE_BYTE_EVENT,
+ &_TRACE_ESCC_SUNKBD_EVENT_IN_EVENT,
+ &_TRACE_ESCC_SUNKBD_EVENT_OUT_EVENT,
+ &_TRACE_ESCC_KBD_COMMAND_EVENT,
+ &_TRACE_ESCC_SUNMOUSE_EVENT_EVENT,
+ &_TRACE_PL011_IRQ_STATE_EVENT,
+ &_TRACE_PL011_READ_EVENT,
+ &_TRACE_PL011_READ_FIFO_EVENT,
+ &_TRACE_PL011_WRITE_EVENT,
+ &_TRACE_PL011_CAN_RECEIVE_EVENT,
+ &_TRACE_PL011_PUT_FIFO_EVENT,
+ &_TRACE_PL011_PUT_FIFO_FULL_EVENT,
+ &_TRACE_CMSDK_APB_UART_READ_EVENT,
+ &_TRACE_CMSDK_APB_UART_WRITE_EVENT,
+ &_TRACE_CMSDK_APB_UART_RESET_EVENT,
+ &_TRACE_CMSDK_APB_UART_RECEIVE_EVENT,
+ &_TRACE_CMSDK_APB_UART_TX_PENDING_EVENT,
+ &_TRACE_CMSDK_APB_UART_TX_EVENT,
+ &_TRACE_CMSDK_APB_UART_SET_PARAMS_EVENT,
+ NULL,
+};
+
+static void trace_hw_char_register_events(void)
+{
+ trace_event_register_group(hw_char_trace_events);
+}
+trace_init(trace_hw_char_register_events)
diff --git a/qemu2-auto-generated/hw/char/trace.h b/qemu2-auto-generated/hw/char/trace.h
new file mode 100644
index 0000000000..ff57dec4a2
--- /dev/null
+++ b/qemu2-auto-generated/hw/char/trace.h
@@ -0,0 +1,825 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_CHAR_GENERATED_TRACERS_H
+#define TRACE_HW_CHAR_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_SERIAL_THROTTLE_PORT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CONSOLE_FLUSH_BUF_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CONSOLE_CHR_READ_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CONSOLE_CHR_EVENT_EVENT;
+extern TraceEvent _TRACE_GRLIB_APBUART_EVENT_EVENT;
+extern TraceEvent _TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_GRLIB_APBUART_READL_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_LM32_JUART_GET_JTX_EVENT;
+extern TraceEvent _TRACE_LM32_JUART_SET_JTX_EVENT;
+extern TraceEvent _TRACE_LM32_JUART_GET_JRX_EVENT;
+extern TraceEvent _TRACE_LM32_JUART_SET_JRX_EVENT;
+extern TraceEvent _TRACE_LM32_UART_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_LM32_UART_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_LM32_UART_IRQ_STATE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_UART_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_UART_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_UART_RAISE_IRQ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_UART_LOWER_IRQ_EVENT;
+extern TraceEvent _TRACE_ESCC_PUT_QUEUE_EVENT;
+extern TraceEvent _TRACE_ESCC_GET_QUEUE_EVENT;
+extern TraceEvent _TRACE_ESCC_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_ESCC_UPDATE_PARAMETERS_EVENT;
+extern TraceEvent _TRACE_ESCC_MEM_WRITEB_CTRL_EVENT;
+extern TraceEvent _TRACE_ESCC_MEM_WRITEB_DATA_EVENT;
+extern TraceEvent _TRACE_ESCC_MEM_READB_CTRL_EVENT;
+extern TraceEvent _TRACE_ESCC_MEM_READB_DATA_EVENT;
+extern TraceEvent _TRACE_ESCC_SERIAL_RECEIVE_BYTE_EVENT;
+extern TraceEvent _TRACE_ESCC_SUNKBD_EVENT_IN_EVENT;
+extern TraceEvent _TRACE_ESCC_SUNKBD_EVENT_OUT_EVENT;
+extern TraceEvent _TRACE_ESCC_KBD_COMMAND_EVENT;
+extern TraceEvent _TRACE_ESCC_SUNMOUSE_EVENT_EVENT;
+extern TraceEvent _TRACE_PL011_IRQ_STATE_EVENT;
+extern TraceEvent _TRACE_PL011_READ_EVENT;
+extern TraceEvent _TRACE_PL011_READ_FIFO_EVENT;
+extern TraceEvent _TRACE_PL011_WRITE_EVENT;
+extern TraceEvent _TRACE_PL011_CAN_RECEIVE_EVENT;
+extern TraceEvent _TRACE_PL011_PUT_FIFO_EVENT;
+extern TraceEvent _TRACE_PL011_PUT_FIFO_FULL_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_READ_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_WRITE_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_RESET_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_RECEIVE_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_TX_PENDING_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_TX_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_UART_SET_PARAMS_EVENT;
+extern uint16_t _TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_SERIAL_THROTTLE_PORT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CONSOLE_FLUSH_BUF_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CONSOLE_CHR_READ_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CONSOLE_CHR_EVENT_DSTATE;
+extern uint16_t _TRACE_GRLIB_APBUART_EVENT_DSTATE;
+extern uint16_t _TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_GRLIB_APBUART_READL_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_LM32_JUART_GET_JTX_DSTATE;
+extern uint16_t _TRACE_LM32_JUART_SET_JTX_DSTATE;
+extern uint16_t _TRACE_LM32_JUART_GET_JRX_DSTATE;
+extern uint16_t _TRACE_LM32_JUART_SET_JRX_DSTATE;
+extern uint16_t _TRACE_LM32_UART_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_LM32_UART_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_LM32_UART_IRQ_STATE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_UART_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_UART_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_UART_RAISE_IRQ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_UART_LOWER_IRQ_DSTATE;
+extern uint16_t _TRACE_ESCC_PUT_QUEUE_DSTATE;
+extern uint16_t _TRACE_ESCC_GET_QUEUE_DSTATE;
+extern uint16_t _TRACE_ESCC_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_ESCC_UPDATE_PARAMETERS_DSTATE;
+extern uint16_t _TRACE_ESCC_MEM_WRITEB_CTRL_DSTATE;
+extern uint16_t _TRACE_ESCC_MEM_WRITEB_DATA_DSTATE;
+extern uint16_t _TRACE_ESCC_MEM_READB_CTRL_DSTATE;
+extern uint16_t _TRACE_ESCC_MEM_READB_DATA_DSTATE;
+extern uint16_t _TRACE_ESCC_SERIAL_RECEIVE_BYTE_DSTATE;
+extern uint16_t _TRACE_ESCC_SUNKBD_EVENT_IN_DSTATE;
+extern uint16_t _TRACE_ESCC_SUNKBD_EVENT_OUT_DSTATE;
+extern uint16_t _TRACE_ESCC_KBD_COMMAND_DSTATE;
+extern uint16_t _TRACE_ESCC_SUNMOUSE_EVENT_DSTATE;
+extern uint16_t _TRACE_PL011_IRQ_STATE_DSTATE;
+extern uint16_t _TRACE_PL011_READ_DSTATE;
+extern uint16_t _TRACE_PL011_READ_FIFO_DSTATE;
+extern uint16_t _TRACE_PL011_WRITE_DSTATE;
+extern uint16_t _TRACE_PL011_CAN_RECEIVE_DSTATE;
+extern uint16_t _TRACE_PL011_PUT_FIFO_DSTATE;
+extern uint16_t _TRACE_PL011_PUT_FIFO_FULL_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_READ_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_WRITE_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_RESET_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_RECEIVE_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_TX_PENDING_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_TX_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_UART_SET_PARAMS_DSTATE;
+#define TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_ENABLED 1
+#define TRACE_VIRTIO_SERIAL_THROTTLE_PORT_ENABLED 1
+#define TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_ENABLED 1
+#define TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_ENABLED 1
+#define TRACE_VIRTIO_CONSOLE_FLUSH_BUF_ENABLED 1
+#define TRACE_VIRTIO_CONSOLE_CHR_READ_ENABLED 1
+#define TRACE_VIRTIO_CONSOLE_CHR_EVENT_ENABLED 1
+#define TRACE_GRLIB_APBUART_EVENT_ENABLED 1
+#define TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_ENABLED 1
+#define TRACE_GRLIB_APBUART_READL_UNKNOWN_ENABLED 1
+#define TRACE_LM32_JUART_GET_JTX_ENABLED 1
+#define TRACE_LM32_JUART_SET_JTX_ENABLED 1
+#define TRACE_LM32_JUART_GET_JRX_ENABLED 1
+#define TRACE_LM32_JUART_SET_JRX_ENABLED 1
+#define TRACE_LM32_UART_MEMORY_WRITE_ENABLED 1
+#define TRACE_LM32_UART_MEMORY_READ_ENABLED 1
+#define TRACE_LM32_UART_IRQ_STATE_ENABLED 1
+#define TRACE_MILKYMIST_UART_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_UART_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_UART_RAISE_IRQ_ENABLED 1
+#define TRACE_MILKYMIST_UART_LOWER_IRQ_ENABLED 1
+#define TRACE_ESCC_PUT_QUEUE_ENABLED 1
+#define TRACE_ESCC_GET_QUEUE_ENABLED 1
+#define TRACE_ESCC_UPDATE_IRQ_ENABLED 1
+#define TRACE_ESCC_UPDATE_PARAMETERS_ENABLED 1
+#define TRACE_ESCC_MEM_WRITEB_CTRL_ENABLED 1
+#define TRACE_ESCC_MEM_WRITEB_DATA_ENABLED 1
+#define TRACE_ESCC_MEM_READB_CTRL_ENABLED 1
+#define TRACE_ESCC_MEM_READB_DATA_ENABLED 1
+#define TRACE_ESCC_SERIAL_RECEIVE_BYTE_ENABLED 1
+#define TRACE_ESCC_SUNKBD_EVENT_IN_ENABLED 1
+#define TRACE_ESCC_SUNKBD_EVENT_OUT_ENABLED 1
+#define TRACE_ESCC_KBD_COMMAND_ENABLED 1
+#define TRACE_ESCC_SUNMOUSE_EVENT_ENABLED 1
+#define TRACE_PL011_IRQ_STATE_ENABLED 1
+#define TRACE_PL011_READ_ENABLED 1
+#define TRACE_PL011_READ_FIFO_ENABLED 1
+#define TRACE_PL011_WRITE_ENABLED 1
+#define TRACE_PL011_CAN_RECEIVE_ENABLED 1
+#define TRACE_PL011_PUT_FIFO_ENABLED 1
+#define TRACE_PL011_PUT_FIFO_FULL_ENABLED 1
+#define TRACE_CMSDK_APB_UART_READ_ENABLED 1
+#define TRACE_CMSDK_APB_UART_WRITE_ENABLED 1
+#define TRACE_CMSDK_APB_UART_RESET_ENABLED 1
+#define TRACE_CMSDK_APB_UART_RECEIVE_ENABLED 1
+#define TRACE_CMSDK_APB_UART_TX_PENDING_ENABLED 1
+#define TRACE_CMSDK_APB_UART_TX_ENABLED 1
+#define TRACE_CMSDK_APB_UART_SET_PARAMS_ENABLED 1
+
+#define TRACE_VIRTIO_SERIAL_SEND_CONTROL_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_serial_send_control_event(unsigned int port, uint16_t event, uint16_t value)
+{
+}
+
+static inline void trace_virtio_serial_send_control_event(unsigned int port, uint16_t event, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_virtio_serial_send_control_event(port, event, value);
+ }
+}
+
+#define TRACE_VIRTIO_SERIAL_THROTTLE_PORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_serial_throttle_port(unsigned int port, bool throttle)
+{
+}
+
+static inline void trace_virtio_serial_throttle_port(unsigned int port, bool throttle)
+{
+ if (true) {
+ _nocheck__trace_virtio_serial_throttle_port(port, throttle);
+ }
+}
+
+#define TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_serial_handle_control_message(uint16_t event, uint16_t value)
+{
+}
+
+static inline void trace_virtio_serial_handle_control_message(uint16_t event, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_virtio_serial_handle_control_message(event, value);
+ }
+}
+
+#define TRACE_VIRTIO_SERIAL_HANDLE_CONTROL_MESSAGE_PORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_serial_handle_control_message_port(unsigned int port)
+{
+}
+
+static inline void trace_virtio_serial_handle_control_message_port(unsigned int port)
+{
+ if (true) {
+ _nocheck__trace_virtio_serial_handle_control_message_port(port);
+ }
+}
+
+#define TRACE_VIRTIO_CONSOLE_FLUSH_BUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_console_flush_buf(unsigned int port, size_t len, ssize_t ret)
+{
+}
+
+static inline void trace_virtio_console_flush_buf(unsigned int port, size_t len, ssize_t ret)
+{
+ if (true) {
+ _nocheck__trace_virtio_console_flush_buf(port, len, ret);
+ }
+}
+
+#define TRACE_VIRTIO_CONSOLE_CHR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_console_chr_read(unsigned int port, int size)
+{
+}
+
+static inline void trace_virtio_console_chr_read(unsigned int port, int size)
+{
+ if (true) {
+ _nocheck__trace_virtio_console_chr_read(port, size);
+ }
+}
+
+#define TRACE_VIRTIO_CONSOLE_CHR_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_console_chr_event(unsigned int port, int event)
+{
+}
+
+static inline void trace_virtio_console_chr_event(unsigned int port, int event)
+{
+ if (true) {
+ _nocheck__trace_virtio_console_chr_event(port, event);
+ }
+}
+
+#define TRACE_GRLIB_APBUART_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_apbuart_event(int event)
+{
+}
+
+static inline void trace_grlib_apbuart_event(int event)
+{
+ if (true) {
+ _nocheck__trace_grlib_apbuart_event(event);
+ }
+}
+
+#define TRACE_GRLIB_APBUART_WRITEL_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_apbuart_writel_unknown(uint64_t addr, uint32_t value)
+{
+}
+
+static inline void trace_grlib_apbuart_writel_unknown(uint64_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_grlib_apbuart_writel_unknown(addr, value);
+ }
+}
+
+#define TRACE_GRLIB_APBUART_READL_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_apbuart_readl_unknown(uint64_t addr)
+{
+}
+
+static inline void trace_grlib_apbuart_readl_unknown(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_grlib_apbuart_readl_unknown(addr);
+ }
+}
+
+#define TRACE_LM32_JUART_GET_JTX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_juart_get_jtx(uint32_t value)
+{
+}
+
+static inline void trace_lm32_juart_get_jtx(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_juart_get_jtx(value);
+ }
+}
+
+#define TRACE_LM32_JUART_SET_JTX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_juart_set_jtx(uint32_t value)
+{
+}
+
+static inline void trace_lm32_juart_set_jtx(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_juart_set_jtx(value);
+ }
+}
+
+#define TRACE_LM32_JUART_GET_JRX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_juart_get_jrx(uint32_t value)
+{
+}
+
+static inline void trace_lm32_juart_get_jrx(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_juart_get_jrx(value);
+ }
+}
+
+#define TRACE_LM32_JUART_SET_JRX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_juart_set_jrx(uint32_t value)
+{
+}
+
+static inline void trace_lm32_juart_set_jrx(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_juart_set_jrx(value);
+ }
+}
+
+#define TRACE_LM32_UART_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_uart_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_lm32_uart_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_uart_memory_write(addr, value);
+ }
+}
+
+#define TRACE_LM32_UART_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_uart_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_lm32_uart_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_uart_memory_read(addr, value);
+ }
+}
+
+#define TRACE_LM32_UART_IRQ_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_uart_irq_state(int level)
+{
+}
+
+static inline void trace_lm32_uart_irq_state(int level)
+{
+ if (true) {
+ _nocheck__trace_lm32_uart_irq_state(level);
+ }
+}
+
+#define TRACE_MILKYMIST_UART_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_uart_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_uart_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_uart_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_UART_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_uart_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_uart_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_uart_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_UART_RAISE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_uart_raise_irq(void)
+{
+}
+
+static inline void trace_milkymist_uart_raise_irq(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_uart_raise_irq();
+ }
+}
+
+#define TRACE_MILKYMIST_UART_LOWER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_uart_lower_irq(void)
+{
+}
+
+static inline void trace_milkymist_uart_lower_irq(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_uart_lower_irq();
+ }
+}
+
+#define TRACE_ESCC_PUT_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_put_queue(char channel, int b)
+{
+}
+
+static inline void trace_escc_put_queue(char channel, int b)
+{
+ if (true) {
+ _nocheck__trace_escc_put_queue(channel, b);
+ }
+}
+
+#define TRACE_ESCC_GET_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_get_queue(char channel, int val)
+{
+}
+
+static inline void trace_escc_get_queue(char channel, int val)
+{
+ if (true) {
+ _nocheck__trace_escc_get_queue(channel, val);
+ }
+}
+
+#define TRACE_ESCC_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_update_irq(int irq)
+{
+}
+
+static inline void trace_escc_update_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_escc_update_irq(irq);
+ }
+}
+
+#define TRACE_ESCC_UPDATE_PARAMETERS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_update_parameters(char channel, int speed, int parity, int data_bits, int stop_bits)
+{
+}
+
+static inline void trace_escc_update_parameters(char channel, int speed, int parity, int data_bits, int stop_bits)
+{
+ if (true) {
+ _nocheck__trace_escc_update_parameters(channel, speed, parity, data_bits, stop_bits);
+ }
+}
+
+#define TRACE_ESCC_MEM_WRITEB_CTRL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_mem_writeb_ctrl(char channel, uint32_t reg, uint32_t val)
+{
+}
+
+static inline void trace_escc_mem_writeb_ctrl(char channel, uint32_t reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_escc_mem_writeb_ctrl(channel, reg, val);
+ }
+}
+
+#define TRACE_ESCC_MEM_WRITEB_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_mem_writeb_data(char channel, uint32_t val)
+{
+}
+
+static inline void trace_escc_mem_writeb_data(char channel, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_escc_mem_writeb_data(channel, val);
+ }
+}
+
+#define TRACE_ESCC_MEM_READB_CTRL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_mem_readb_ctrl(char channel, uint32_t reg, uint8_t val)
+{
+}
+
+static inline void trace_escc_mem_readb_ctrl(char channel, uint32_t reg, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_escc_mem_readb_ctrl(channel, reg, val);
+ }
+}
+
+#define TRACE_ESCC_MEM_READB_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_mem_readb_data(char channel, uint32_t ret)
+{
+}
+
+static inline void trace_escc_mem_readb_data(char channel, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_escc_mem_readb_data(channel, ret);
+ }
+}
+
+#define TRACE_ESCC_SERIAL_RECEIVE_BYTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_serial_receive_byte(char channel, int ch)
+{
+}
+
+static inline void trace_escc_serial_receive_byte(char channel, int ch)
+{
+ if (true) {
+ _nocheck__trace_escc_serial_receive_byte(channel, ch);
+ }
+}
+
+#define TRACE_ESCC_SUNKBD_EVENT_IN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_sunkbd_event_in(int ch, const char * name, int down)
+{
+}
+
+static inline void trace_escc_sunkbd_event_in(int ch, const char * name, int down)
+{
+ if (true) {
+ _nocheck__trace_escc_sunkbd_event_in(ch, name, down);
+ }
+}
+
+#define TRACE_ESCC_SUNKBD_EVENT_OUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_sunkbd_event_out(int ch)
+{
+}
+
+static inline void trace_escc_sunkbd_event_out(int ch)
+{
+ if (true) {
+ _nocheck__trace_escc_sunkbd_event_out(ch);
+ }
+}
+
+#define TRACE_ESCC_KBD_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_kbd_command(int val)
+{
+}
+
+static inline void trace_escc_kbd_command(int val)
+{
+ if (true) {
+ _nocheck__trace_escc_kbd_command(val);
+ }
+}
+
+#define TRACE_ESCC_SUNMOUSE_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_escc_sunmouse_event(int dx, int dy, int buttons_state)
+{
+}
+
+static inline void trace_escc_sunmouse_event(int dx, int dy, int buttons_state)
+{
+ if (true) {
+ _nocheck__trace_escc_sunmouse_event(dx, dy, buttons_state);
+ }
+}
+
+#define TRACE_PL011_IRQ_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_irq_state(int level)
+{
+}
+
+static inline void trace_pl011_irq_state(int level)
+{
+ if (true) {
+ _nocheck__trace_pl011_irq_state(level);
+ }
+}
+
+#define TRACE_PL011_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_pl011_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_pl011_read(addr, value);
+ }
+}
+
+#define TRACE_PL011_READ_FIFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_read_fifo(int read_count)
+{
+}
+
+static inline void trace_pl011_read_fifo(int read_count)
+{
+ if (true) {
+ _nocheck__trace_pl011_read_fifo(read_count);
+ }
+}
+
+#define TRACE_PL011_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_pl011_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_pl011_write(addr, value);
+ }
+}
+
+#define TRACE_PL011_CAN_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_can_receive(uint32_t lcr, int read_count, int r)
+{
+}
+
+static inline void trace_pl011_can_receive(uint32_t lcr, int read_count, int r)
+{
+ if (true) {
+ _nocheck__trace_pl011_can_receive(lcr, read_count, r);
+ }
+}
+
+#define TRACE_PL011_PUT_FIFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_put_fifo(uint32_t c, int read_count)
+{
+}
+
+static inline void trace_pl011_put_fifo(uint32_t c, int read_count)
+{
+ if (true) {
+ _nocheck__trace_pl011_put_fifo(c, read_count);
+ }
+}
+
+#define TRACE_PL011_PUT_FIFO_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pl011_put_fifo_full(void)
+{
+}
+
+static inline void trace_pl011_put_fifo_full(void)
+{
+ if (true) {
+ _nocheck__trace_pl011_put_fifo_full();
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_read(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_read(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_read(offset, data, size);
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_write(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_write(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_write(offset, data, size);
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_reset(void)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_reset(void)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_reset();
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_receive(uint8_t c)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_receive(uint8_t c)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_receive(c);
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_TX_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_tx_pending(void)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_tx_pending(void)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_tx_pending();
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_TX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_tx(uint8_t c)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_tx(uint8_t c)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_tx(c);
+ }
+}
+
+#define TRACE_CMSDK_APB_UART_SET_PARAMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_uart_set_params(int speed)
+{
+}
+
+static inline void trace_cmsdk_apb_uart_set_params(int speed)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_uart_set_params(speed);
+ }
+}
+#endif /* TRACE_HW_CHAR_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/display/trace.c b/qemu2-auto-generated/hw/display/trace.c
new file mode 100644
index 0000000000..f6e46a51f2
--- /dev/null
+++ b/qemu2-auto-generated/hw/display/trace.c
@@ -0,0 +1,1076 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_JAZZ_LED_READ_DSTATE;
+uint16_t _TRACE_JAZZ_LED_WRITE_DSTATE;
+uint16_t _TRACE_XENFB_MOUSE_EVENT_DSTATE;
+uint16_t _TRACE_XENFB_KEY_EVENT_DSTATE;
+uint16_t _TRACE_XENFB_INPUT_CONNECTED_DSTATE;
+uint16_t _TRACE_G364FB_READ_DSTATE;
+uint16_t _TRACE_G364FB_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_TMU2_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_TMU2_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_TMU2_START_DSTATE;
+uint16_t _TRACE_MILKYMIST_TMU2_PULSE_IRQ_DSTATE;
+uint16_t _TRACE_MILKYMIST_VGAFB_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_VMWARE_VALUE_READ_DSTATE;
+uint16_t _TRACE_VMWARE_VALUE_WRITE_DSTATE;
+uint16_t _TRACE_VMWARE_PALETTE_READ_DSTATE;
+uint16_t _TRACE_VMWARE_PALETTE_WRITE_DSTATE;
+uint16_t _TRACE_VMWARE_SCRATCH_READ_DSTATE;
+uint16_t _TRACE_VMWARE_SCRATCH_WRITE_DSTATE;
+uint16_t _TRACE_VMWARE_SETMODE_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_FEATURES_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_UNREF_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_RES_FLUSH_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_CREATE_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_UPDATE_CURSOR_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_FENCE_CTRL_DSTATE;
+uint16_t _TRACE_VIRTIO_GPU_FENCE_RESP_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_SET_MM_TIME_DSTATE;
+uint16_t _TRACE_QXL_IO_WRITE_VGA_DSTATE;
+uint16_t _TRACE_QXL_CREATE_GUEST_PRIMARY_DSTATE;
+uint16_t _TRACE_QXL_CREATE_GUEST_PRIMARY_REST_DSTATE;
+uint16_t _TRACE_QXL_DESTROY_PRIMARY_DSTATE;
+uint16_t _TRACE_QXL_ENTER_VGA_MODE_DSTATE;
+uint16_t _TRACE_QXL_EXIT_VGA_MODE_DSTATE;
+uint16_t _TRACE_QXL_HARD_RESET_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_ATTACH_WORKER_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_GET_INIT_INFO_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_DSTATE;
+uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_DSTATE;
+uint16_t _TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_DSTATE;
+uint16_t _TRACE_QXL_IO_LOG_DSTATE;
+uint16_t _TRACE_QXL_IO_READ_UNEXPECTED_DSTATE;
+uint16_t _TRACE_QXL_IO_UNEXPECTED_VGA_MODE_DSTATE;
+uint16_t _TRACE_QXL_IO_WRITE_DSTATE;
+uint16_t _TRACE_QXL_MEMSLOT_ADD_GUEST_DSTATE;
+uint16_t _TRACE_QXL_POST_LOAD_DSTATE;
+uint16_t _TRACE_QXL_PRE_LOAD_DSTATE;
+uint16_t _TRACE_QXL_PRE_SAVE_DSTATE;
+uint16_t _TRACE_QXL_RESET_SURFACES_DSTATE;
+uint16_t _TRACE_QXL_RING_COMMAND_CHECK_DSTATE;
+uint16_t _TRACE_QXL_RING_COMMAND_GET_DSTATE;
+uint16_t _TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_DSTATE;
+uint16_t _TRACE_QXL_RING_CURSOR_CHECK_DSTATE;
+uint16_t _TRACE_QXL_RING_CURSOR_GET_DSTATE;
+uint16_t _TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_DSTATE;
+uint16_t _TRACE_QXL_RING_RES_PUSH_DSTATE;
+uint16_t _TRACE_QXL_RING_RES_PUSH_REST_DSTATE;
+uint16_t _TRACE_QXL_RING_RES_PUT_DSTATE;
+uint16_t _TRACE_QXL_SET_MODE_DSTATE;
+uint16_t _TRACE_QXL_SOFT_RESET_DSTATE;
+uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_DSTATE;
+uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACES_DSTATE;
+uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_DSTATE;
+uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_DSTATE;
+uint16_t _TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_DSTATE;
+uint16_t _TRACE_QXL_SPICE_MONITORS_CONFIG_DSTATE;
+uint16_t _TRACE_QXL_SPICE_LOADVM_COMMANDS_DSTATE;
+uint16_t _TRACE_QXL_SPICE_OOM_DSTATE;
+uint16_t _TRACE_QXL_SPICE_RESET_CURSOR_DSTATE;
+uint16_t _TRACE_QXL_SPICE_RESET_IMAGE_CACHE_DSTATE;
+uint16_t _TRACE_QXL_SPICE_RESET_MEMSLOTS_DSTATE;
+uint16_t _TRACE_QXL_SPICE_UPDATE_AREA_DSTATE;
+uint16_t _TRACE_QXL_SPICE_UPDATE_AREA_REST_DSTATE;
+uint16_t _TRACE_QXL_SURFACES_DIRTY_DSTATE;
+uint16_t _TRACE_QXL_SEND_EVENTS_DSTATE;
+uint16_t _TRACE_QXL_SEND_EVENTS_VM_STOPPED_DSTATE;
+uint16_t _TRACE_QXL_SET_GUEST_BUG_DSTATE;
+uint16_t _TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_DSTATE;
+uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_DSTATE;
+uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_DSTATE;
+uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_DSTATE;
+uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_DSTATE;
+uint16_t _TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_DSTATE;
+uint16_t _TRACE_QXL_RENDER_BLIT_DSTATE;
+uint16_t _TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_DSTATE;
+uint16_t _TRACE_QXL_RENDER_UPDATE_AREA_DONE_DSTATE;
+uint16_t _TRACE_GOLDFISH_FB_MEMORY_READ_DSTATE;
+uint16_t _TRACE_GOLDFISH_FB_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_GOLDFISH_FB_UPDATE_DISPLAY_DSTATE;
+uint16_t _TRACE_GOLDFISH_FB_UPDATE_STATS_DSTATE;
+uint16_t _TRACE_VGA_STD_READ_IO_DSTATE;
+uint16_t _TRACE_VGA_STD_WRITE_IO_DSTATE;
+uint16_t _TRACE_VGA_VBE_READ_DSTATE;
+uint16_t _TRACE_VGA_VBE_WRITE_DSTATE;
+uint16_t _TRACE_VGA_CIRRUS_READ_IO_DSTATE;
+uint16_t _TRACE_VGA_CIRRUS_WRITE_IO_DSTATE;
+uint16_t _TRACE_VGA_CIRRUS_READ_BLT_DSTATE;
+uint16_t _TRACE_VGA_CIRRUS_WRITE_BLT_DSTATE;
+uint16_t _TRACE_SII9022_READ_REG_DSTATE;
+uint16_t _TRACE_SII9022_WRITE_REG_DSTATE;
+uint16_t _TRACE_SII9022_SWITCH_MODE_DSTATE;
+TraceEvent _TRACE_JAZZ_LED_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "jazz_led_read",
+ .sstate = TRACE_JAZZ_LED_READ_ENABLED,
+ .dstate = &_TRACE_JAZZ_LED_READ_DSTATE
+};
+TraceEvent _TRACE_JAZZ_LED_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "jazz_led_write",
+ .sstate = TRACE_JAZZ_LED_WRITE_ENABLED,
+ .dstate = &_TRACE_JAZZ_LED_WRITE_DSTATE
+};
+TraceEvent _TRACE_XENFB_MOUSE_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xenfb_mouse_event",
+ .sstate = TRACE_XENFB_MOUSE_EVENT_ENABLED,
+ .dstate = &_TRACE_XENFB_MOUSE_EVENT_DSTATE
+};
+TraceEvent _TRACE_XENFB_KEY_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xenfb_key_event",
+ .sstate = TRACE_XENFB_KEY_EVENT_ENABLED,
+ .dstate = &_TRACE_XENFB_KEY_EVENT_DSTATE
+};
+TraceEvent _TRACE_XENFB_INPUT_CONNECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xenfb_input_connected",
+ .sstate = TRACE_XENFB_INPUT_CONNECTED_ENABLED,
+ .dstate = &_TRACE_XENFB_INPUT_CONNECTED_DSTATE
+};
+TraceEvent _TRACE_G364FB_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "g364fb_read",
+ .sstate = TRACE_G364FB_READ_ENABLED,
+ .dstate = &_TRACE_G364FB_READ_DSTATE
+};
+TraceEvent _TRACE_G364FB_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "g364fb_write",
+ .sstate = TRACE_G364FB_WRITE_ENABLED,
+ .dstate = &_TRACE_G364FB_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_TMU2_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_tmu2_memory_read",
+ .sstate = TRACE_MILKYMIST_TMU2_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_TMU2_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_TMU2_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_tmu2_memory_write",
+ .sstate = TRACE_MILKYMIST_TMU2_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_TMU2_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_TMU2_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_tmu2_start",
+ .sstate = TRACE_MILKYMIST_TMU2_START_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_TMU2_START_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_TMU2_PULSE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_tmu2_pulse_irq",
+ .sstate = TRACE_MILKYMIST_TMU2_PULSE_IRQ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_TMU2_PULSE_IRQ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_VGAFB_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_vgafb_memory_read",
+ .sstate = TRACE_MILKYMIST_VGAFB_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_VGAFB_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_vgafb_memory_write",
+ .sstate = TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_VMWARE_VALUE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_value_read",
+ .sstate = TRACE_VMWARE_VALUE_READ_ENABLED,
+ .dstate = &_TRACE_VMWARE_VALUE_READ_DSTATE
+};
+TraceEvent _TRACE_VMWARE_VALUE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_value_write",
+ .sstate = TRACE_VMWARE_VALUE_WRITE_ENABLED,
+ .dstate = &_TRACE_VMWARE_VALUE_WRITE_DSTATE
+};
+TraceEvent _TRACE_VMWARE_PALETTE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_palette_read",
+ .sstate = TRACE_VMWARE_PALETTE_READ_ENABLED,
+ .dstate = &_TRACE_VMWARE_PALETTE_READ_DSTATE
+};
+TraceEvent _TRACE_VMWARE_PALETTE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_palette_write",
+ .sstate = TRACE_VMWARE_PALETTE_WRITE_ENABLED,
+ .dstate = &_TRACE_VMWARE_PALETTE_WRITE_DSTATE
+};
+TraceEvent _TRACE_VMWARE_SCRATCH_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_scratch_read",
+ .sstate = TRACE_VMWARE_SCRATCH_READ_ENABLED,
+ .dstate = &_TRACE_VMWARE_SCRATCH_READ_DSTATE
+};
+TraceEvent _TRACE_VMWARE_SCRATCH_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_scratch_write",
+ .sstate = TRACE_VMWARE_SCRATCH_WRITE_ENABLED,
+ .dstate = &_TRACE_VMWARE_SCRATCH_WRITE_DSTATE
+};
+TraceEvent _TRACE_VMWARE_SETMODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmware_setmode",
+ .sstate = TRACE_VMWARE_SETMODE_ENABLED,
+ .dstate = &_TRACE_VMWARE_SETMODE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_FEATURES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_features",
+ .sstate = TRACE_VIRTIO_GPU_FEATURES_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_FEATURES_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_get_display_info",
+ .sstate = TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_set_scanout",
+ .sstate = TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_create_2d",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_create_3d",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_UNREF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_unref",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_UNREF_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_UNREF_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_back_attach",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_back_detach",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_xfer_toh_2d",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_xfer_toh_3d",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_xfer_fromh_3d",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_res_flush",
+ .sstate = TRACE_VIRTIO_GPU_CMD_RES_FLUSH_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_RES_FLUSH_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_ctx_create",
+ .sstate = TRACE_VIRTIO_GPU_CMD_CTX_CREATE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_CTX_CREATE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_ctx_destroy",
+ .sstate = TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_ctx_res_attach",
+ .sstate = TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_ctx_res_detach",
+ .sstate = TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_cmd_ctx_submit",
+ .sstate = TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_UPDATE_CURSOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_update_cursor",
+ .sstate = TRACE_VIRTIO_GPU_UPDATE_CURSOR_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_UPDATE_CURSOR_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_FENCE_CTRL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_fence_ctrl",
+ .sstate = TRACE_VIRTIO_GPU_FENCE_CTRL_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_FENCE_CTRL_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_GPU_FENCE_RESP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_gpu_fence_resp",
+ .sstate = TRACE_VIRTIO_GPU_FENCE_RESP_ENABLED,
+ .dstate = &_TRACE_VIRTIO_GPU_FENCE_RESP_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_SET_MM_TIME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_set_mm_time",
+ .sstate = TRACE_QXL_INTERFACE_SET_MM_TIME_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_SET_MM_TIME_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_WRITE_VGA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_write_vga",
+ .sstate = TRACE_QXL_IO_WRITE_VGA_ENABLED,
+ .dstate = &_TRACE_QXL_IO_WRITE_VGA_DSTATE
+};
+TraceEvent _TRACE_QXL_CREATE_GUEST_PRIMARY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_create_guest_primary",
+ .sstate = TRACE_QXL_CREATE_GUEST_PRIMARY_ENABLED,
+ .dstate = &_TRACE_QXL_CREATE_GUEST_PRIMARY_DSTATE
+};
+TraceEvent _TRACE_QXL_CREATE_GUEST_PRIMARY_REST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_create_guest_primary_rest",
+ .sstate = TRACE_QXL_CREATE_GUEST_PRIMARY_REST_ENABLED,
+ .dstate = &_TRACE_QXL_CREATE_GUEST_PRIMARY_REST_DSTATE
+};
+TraceEvent _TRACE_QXL_DESTROY_PRIMARY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_destroy_primary",
+ .sstate = TRACE_QXL_DESTROY_PRIMARY_ENABLED,
+ .dstate = &_TRACE_QXL_DESTROY_PRIMARY_DSTATE
+};
+TraceEvent _TRACE_QXL_ENTER_VGA_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_enter_vga_mode",
+ .sstate = TRACE_QXL_ENTER_VGA_MODE_ENABLED,
+ .dstate = &_TRACE_QXL_ENTER_VGA_MODE_DSTATE
+};
+TraceEvent _TRACE_QXL_EXIT_VGA_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_exit_vga_mode",
+ .sstate = TRACE_QXL_EXIT_VGA_MODE_ENABLED,
+ .dstate = &_TRACE_QXL_EXIT_VGA_MODE_DSTATE
+};
+TraceEvent _TRACE_QXL_HARD_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_hard_reset",
+ .sstate = TRACE_QXL_HARD_RESET_ENABLED,
+ .dstate = &_TRACE_QXL_HARD_RESET_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_async_complete_io",
+ .sstate = TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_ATTACH_WORKER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_attach_worker",
+ .sstate = TRACE_QXL_INTERFACE_ATTACH_WORKER_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_ATTACH_WORKER_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_GET_INIT_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_get_init_info",
+ .sstate = TRACE_QXL_INTERFACE_GET_INIT_INFO_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_GET_INIT_INFO_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_set_compression_level",
+ .sstate = TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_update_area_complete",
+ .sstate = TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_update_area_complete_rest",
+ .sstate = TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_update_area_complete_overflow",
+ .sstate = TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interface_update_area_complete_schedule_bh",
+ .sstate = TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_ENABLED,
+ .dstate = &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_destroy_primary_ignored",
+ .sstate = TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_ENABLED,
+ .dstate = &_TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_LOG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_log",
+ .sstate = TRACE_QXL_IO_LOG_ENABLED,
+ .dstate = &_TRACE_QXL_IO_LOG_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_READ_UNEXPECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_read_unexpected",
+ .sstate = TRACE_QXL_IO_READ_UNEXPECTED_ENABLED,
+ .dstate = &_TRACE_QXL_IO_READ_UNEXPECTED_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_UNEXPECTED_VGA_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_unexpected_vga_mode",
+ .sstate = TRACE_QXL_IO_UNEXPECTED_VGA_MODE_ENABLED,
+ .dstate = &_TRACE_QXL_IO_UNEXPECTED_VGA_MODE_DSTATE
+};
+TraceEvent _TRACE_QXL_IO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_io_write",
+ .sstate = TRACE_QXL_IO_WRITE_ENABLED,
+ .dstate = &_TRACE_QXL_IO_WRITE_DSTATE
+};
+TraceEvent _TRACE_QXL_MEMSLOT_ADD_GUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_memslot_add_guest",
+ .sstate = TRACE_QXL_MEMSLOT_ADD_GUEST_ENABLED,
+ .dstate = &_TRACE_QXL_MEMSLOT_ADD_GUEST_DSTATE
+};
+TraceEvent _TRACE_QXL_POST_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_post_load",
+ .sstate = TRACE_QXL_POST_LOAD_ENABLED,
+ .dstate = &_TRACE_QXL_POST_LOAD_DSTATE
+};
+TraceEvent _TRACE_QXL_PRE_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_pre_load",
+ .sstate = TRACE_QXL_PRE_LOAD_ENABLED,
+ .dstate = &_TRACE_QXL_PRE_LOAD_DSTATE
+};
+TraceEvent _TRACE_QXL_PRE_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_pre_save",
+ .sstate = TRACE_QXL_PRE_SAVE_ENABLED,
+ .dstate = &_TRACE_QXL_PRE_SAVE_DSTATE
+};
+TraceEvent _TRACE_QXL_RESET_SURFACES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_reset_surfaces",
+ .sstate = TRACE_QXL_RESET_SURFACES_ENABLED,
+ .dstate = &_TRACE_QXL_RESET_SURFACES_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_COMMAND_CHECK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_command_check",
+ .sstate = TRACE_QXL_RING_COMMAND_CHECK_ENABLED,
+ .dstate = &_TRACE_QXL_RING_COMMAND_CHECK_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_COMMAND_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_command_get",
+ .sstate = TRACE_QXL_RING_COMMAND_GET_ENABLED,
+ .dstate = &_TRACE_QXL_RING_COMMAND_GET_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_command_req_notification",
+ .sstate = TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_ENABLED,
+ .dstate = &_TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_CURSOR_CHECK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_cursor_check",
+ .sstate = TRACE_QXL_RING_CURSOR_CHECK_ENABLED,
+ .dstate = &_TRACE_QXL_RING_CURSOR_CHECK_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_CURSOR_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_cursor_get",
+ .sstate = TRACE_QXL_RING_CURSOR_GET_ENABLED,
+ .dstate = &_TRACE_QXL_RING_CURSOR_GET_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_cursor_req_notification",
+ .sstate = TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_ENABLED,
+ .dstate = &_TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_RES_PUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_res_push",
+ .sstate = TRACE_QXL_RING_RES_PUSH_ENABLED,
+ .dstate = &_TRACE_QXL_RING_RES_PUSH_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_RES_PUSH_REST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_res_push_rest",
+ .sstate = TRACE_QXL_RING_RES_PUSH_REST_ENABLED,
+ .dstate = &_TRACE_QXL_RING_RES_PUSH_REST_DSTATE
+};
+TraceEvent _TRACE_QXL_RING_RES_PUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_ring_res_put",
+ .sstate = TRACE_QXL_RING_RES_PUT_ENABLED,
+ .dstate = &_TRACE_QXL_RING_RES_PUT_DSTATE
+};
+TraceEvent _TRACE_QXL_SET_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_set_mode",
+ .sstate = TRACE_QXL_SET_MODE_ENABLED,
+ .dstate = &_TRACE_QXL_SET_MODE_DSTATE
+};
+TraceEvent _TRACE_QXL_SOFT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_soft_reset",
+ .sstate = TRACE_QXL_SOFT_RESET_ENABLED,
+ .dstate = &_TRACE_QXL_SOFT_RESET_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_destroy_surfaces_complete",
+ .sstate = TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_destroy_surfaces",
+ .sstate = TRACE_QXL_SPICE_DESTROY_SURFACES_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_DESTROY_SURFACES_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_destroy_surface_wait_complete",
+ .sstate = TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_destroy_surface_wait",
+ .sstate = TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_flush_surfaces_async",
+ .sstate = TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_MONITORS_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_monitors_config",
+ .sstate = TRACE_QXL_SPICE_MONITORS_CONFIG_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_MONITORS_CONFIG_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_LOADVM_COMMANDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_loadvm_commands",
+ .sstate = TRACE_QXL_SPICE_LOADVM_COMMANDS_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_LOADVM_COMMANDS_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_OOM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_oom",
+ .sstate = TRACE_QXL_SPICE_OOM_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_OOM_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_RESET_CURSOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_reset_cursor",
+ .sstate = TRACE_QXL_SPICE_RESET_CURSOR_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_RESET_CURSOR_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_RESET_IMAGE_CACHE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_reset_image_cache",
+ .sstate = TRACE_QXL_SPICE_RESET_IMAGE_CACHE_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_RESET_IMAGE_CACHE_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_RESET_MEMSLOTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_reset_memslots",
+ .sstate = TRACE_QXL_SPICE_RESET_MEMSLOTS_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_RESET_MEMSLOTS_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_UPDATE_AREA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_update_area",
+ .sstate = TRACE_QXL_SPICE_UPDATE_AREA_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_UPDATE_AREA_DSTATE
+};
+TraceEvent _TRACE_QXL_SPICE_UPDATE_AREA_REST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_spice_update_area_rest",
+ .sstate = TRACE_QXL_SPICE_UPDATE_AREA_REST_ENABLED,
+ .dstate = &_TRACE_QXL_SPICE_UPDATE_AREA_REST_DSTATE
+};
+TraceEvent _TRACE_QXL_SURFACES_DIRTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_surfaces_dirty",
+ .sstate = TRACE_QXL_SURFACES_DIRTY_ENABLED,
+ .dstate = &_TRACE_QXL_SURFACES_DIRTY_DSTATE
+};
+TraceEvent _TRACE_QXL_SEND_EVENTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_send_events",
+ .sstate = TRACE_QXL_SEND_EVENTS_ENABLED,
+ .dstate = &_TRACE_QXL_SEND_EVENTS_DSTATE
+};
+TraceEvent _TRACE_QXL_SEND_EVENTS_VM_STOPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_send_events_vm_stopped",
+ .sstate = TRACE_QXL_SEND_EVENTS_VM_STOPPED_ENABLED,
+ .dstate = &_TRACE_QXL_SEND_EVENTS_VM_STOPPED_DSTATE
+};
+TraceEvent _TRACE_QXL_SET_GUEST_BUG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_set_guest_bug",
+ .sstate = TRACE_QXL_SET_GUEST_BUG_ENABLED,
+ .dstate = &_TRACE_QXL_SET_GUEST_BUG_DSTATE
+};
+TraceEvent _TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_interrupt_client_monitors_config",
+ .sstate = TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_ENABLED,
+ .dstate = &_TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_DSTATE
+};
+TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_client_monitors_config_unsupported_by_guest",
+ .sstate = TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_ENABLED,
+ .dstate = &_TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_DSTATE
+};
+TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_client_monitors_config_unsupported_by_device",
+ .sstate = TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_ENABLED,
+ .dstate = &_TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_DSTATE
+};
+TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_client_monitors_config_capped",
+ .sstate = TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_ENABLED,
+ .dstate = &_TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_DSTATE
+};
+TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_client_monitors_config_crc",
+ .sstate = TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_ENABLED,
+ .dstate = &_TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_DSTATE
+};
+TraceEvent _TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_set_client_capabilities_unsupported_by_revision",
+ .sstate = TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_ENABLED,
+ .dstate = &_TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_DSTATE
+};
+TraceEvent _TRACE_QXL_RENDER_BLIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_render_blit",
+ .sstate = TRACE_QXL_RENDER_BLIT_ENABLED,
+ .dstate = &_TRACE_QXL_RENDER_BLIT_DSTATE
+};
+TraceEvent _TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_render_guest_primary_resized",
+ .sstate = TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_ENABLED,
+ .dstate = &_TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_DSTATE
+};
+TraceEvent _TRACE_QXL_RENDER_UPDATE_AREA_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qxl_render_update_area_done",
+ .sstate = TRACE_QXL_RENDER_UPDATE_AREA_DONE_ENABLED,
+ .dstate = &_TRACE_QXL_RENDER_UPDATE_AREA_DONE_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_FB_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_fb_memory_read",
+ .sstate = TRACE_GOLDFISH_FB_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_FB_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_FB_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_fb_memory_write",
+ .sstate = TRACE_GOLDFISH_FB_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_FB_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_FB_UPDATE_DISPLAY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_fb_update_display",
+ .sstate = TRACE_GOLDFISH_FB_UPDATE_DISPLAY_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_FB_UPDATE_DISPLAY_DSTATE
+};
+TraceEvent _TRACE_GOLDFISH_FB_UPDATE_STATS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "goldfish_fb_update_stats",
+ .sstate = TRACE_GOLDFISH_FB_UPDATE_STATS_ENABLED,
+ .dstate = &_TRACE_GOLDFISH_FB_UPDATE_STATS_DSTATE
+};
+TraceEvent _TRACE_VGA_STD_READ_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_std_read_io",
+ .sstate = TRACE_VGA_STD_READ_IO_ENABLED,
+ .dstate = &_TRACE_VGA_STD_READ_IO_DSTATE
+};
+TraceEvent _TRACE_VGA_STD_WRITE_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_std_write_io",
+ .sstate = TRACE_VGA_STD_WRITE_IO_ENABLED,
+ .dstate = &_TRACE_VGA_STD_WRITE_IO_DSTATE
+};
+TraceEvent _TRACE_VGA_VBE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_vbe_read",
+ .sstate = TRACE_VGA_VBE_READ_ENABLED,
+ .dstate = &_TRACE_VGA_VBE_READ_DSTATE
+};
+TraceEvent _TRACE_VGA_VBE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_vbe_write",
+ .sstate = TRACE_VGA_VBE_WRITE_ENABLED,
+ .dstate = &_TRACE_VGA_VBE_WRITE_DSTATE
+};
+TraceEvent _TRACE_VGA_CIRRUS_READ_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_cirrus_read_io",
+ .sstate = TRACE_VGA_CIRRUS_READ_IO_ENABLED,
+ .dstate = &_TRACE_VGA_CIRRUS_READ_IO_DSTATE
+};
+TraceEvent _TRACE_VGA_CIRRUS_WRITE_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_cirrus_write_io",
+ .sstate = TRACE_VGA_CIRRUS_WRITE_IO_ENABLED,
+ .dstate = &_TRACE_VGA_CIRRUS_WRITE_IO_DSTATE
+};
+TraceEvent _TRACE_VGA_CIRRUS_READ_BLT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_cirrus_read_blt",
+ .sstate = TRACE_VGA_CIRRUS_READ_BLT_ENABLED,
+ .dstate = &_TRACE_VGA_CIRRUS_READ_BLT_DSTATE
+};
+TraceEvent _TRACE_VGA_CIRRUS_WRITE_BLT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vga_cirrus_write_blt",
+ .sstate = TRACE_VGA_CIRRUS_WRITE_BLT_ENABLED,
+ .dstate = &_TRACE_VGA_CIRRUS_WRITE_BLT_DSTATE
+};
+TraceEvent _TRACE_SII9022_READ_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii9022_read_reg",
+ .sstate = TRACE_SII9022_READ_REG_ENABLED,
+ .dstate = &_TRACE_SII9022_READ_REG_DSTATE
+};
+TraceEvent _TRACE_SII9022_WRITE_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii9022_write_reg",
+ .sstate = TRACE_SII9022_WRITE_REG_ENABLED,
+ .dstate = &_TRACE_SII9022_WRITE_REG_DSTATE
+};
+TraceEvent _TRACE_SII9022_SWITCH_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii9022_switch_mode",
+ .sstate = TRACE_SII9022_SWITCH_MODE_ENABLED,
+ .dstate = &_TRACE_SII9022_SWITCH_MODE_DSTATE
+};
+TraceEvent *hw_display_trace_events[] = {
+ &_TRACE_JAZZ_LED_READ_EVENT,
+ &_TRACE_JAZZ_LED_WRITE_EVENT,
+ &_TRACE_XENFB_MOUSE_EVENT_EVENT,
+ &_TRACE_XENFB_KEY_EVENT_EVENT,
+ &_TRACE_XENFB_INPUT_CONNECTED_EVENT,
+ &_TRACE_G364FB_READ_EVENT,
+ &_TRACE_G364FB_WRITE_EVENT,
+ &_TRACE_MILKYMIST_TMU2_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_TMU2_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_TMU2_START_EVENT,
+ &_TRACE_MILKYMIST_TMU2_PULSE_IRQ_EVENT,
+ &_TRACE_MILKYMIST_VGAFB_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_EVENT,
+ &_TRACE_VMWARE_VALUE_READ_EVENT,
+ &_TRACE_VMWARE_VALUE_WRITE_EVENT,
+ &_TRACE_VMWARE_PALETTE_READ_EVENT,
+ &_TRACE_VMWARE_PALETTE_WRITE_EVENT,
+ &_TRACE_VMWARE_SCRATCH_READ_EVENT,
+ &_TRACE_VMWARE_SCRATCH_WRITE_EVENT,
+ &_TRACE_VMWARE_SETMODE_EVENT,
+ &_TRACE_VIRTIO_GPU_FEATURES_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_UNREF_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_RES_FLUSH_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_CTX_CREATE_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_EVENT,
+ &_TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_EVENT,
+ &_TRACE_VIRTIO_GPU_UPDATE_CURSOR_EVENT,
+ &_TRACE_VIRTIO_GPU_FENCE_CTRL_EVENT,
+ &_TRACE_VIRTIO_GPU_FENCE_RESP_EVENT,
+ &_TRACE_QXL_INTERFACE_SET_MM_TIME_EVENT,
+ &_TRACE_QXL_IO_WRITE_VGA_EVENT,
+ &_TRACE_QXL_CREATE_GUEST_PRIMARY_EVENT,
+ &_TRACE_QXL_CREATE_GUEST_PRIMARY_REST_EVENT,
+ &_TRACE_QXL_DESTROY_PRIMARY_EVENT,
+ &_TRACE_QXL_ENTER_VGA_MODE_EVENT,
+ &_TRACE_QXL_EXIT_VGA_MODE_EVENT,
+ &_TRACE_QXL_HARD_RESET_EVENT,
+ &_TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_EVENT,
+ &_TRACE_QXL_INTERFACE_ATTACH_WORKER_EVENT,
+ &_TRACE_QXL_INTERFACE_GET_INIT_INFO_EVENT,
+ &_TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_EVENT,
+ &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_EVENT,
+ &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_EVENT,
+ &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_EVENT,
+ &_TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_EVENT,
+ &_TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_EVENT,
+ &_TRACE_QXL_IO_LOG_EVENT,
+ &_TRACE_QXL_IO_READ_UNEXPECTED_EVENT,
+ &_TRACE_QXL_IO_UNEXPECTED_VGA_MODE_EVENT,
+ &_TRACE_QXL_IO_WRITE_EVENT,
+ &_TRACE_QXL_MEMSLOT_ADD_GUEST_EVENT,
+ &_TRACE_QXL_POST_LOAD_EVENT,
+ &_TRACE_QXL_PRE_LOAD_EVENT,
+ &_TRACE_QXL_PRE_SAVE_EVENT,
+ &_TRACE_QXL_RESET_SURFACES_EVENT,
+ &_TRACE_QXL_RING_COMMAND_CHECK_EVENT,
+ &_TRACE_QXL_RING_COMMAND_GET_EVENT,
+ &_TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_EVENT,
+ &_TRACE_QXL_RING_CURSOR_CHECK_EVENT,
+ &_TRACE_QXL_RING_CURSOR_GET_EVENT,
+ &_TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_EVENT,
+ &_TRACE_QXL_RING_RES_PUSH_EVENT,
+ &_TRACE_QXL_RING_RES_PUSH_REST_EVENT,
+ &_TRACE_QXL_RING_RES_PUT_EVENT,
+ &_TRACE_QXL_SET_MODE_EVENT,
+ &_TRACE_QXL_SOFT_RESET_EVENT,
+ &_TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_EVENT,
+ &_TRACE_QXL_SPICE_DESTROY_SURFACES_EVENT,
+ &_TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_EVENT,
+ &_TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_EVENT,
+ &_TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_EVENT,
+ &_TRACE_QXL_SPICE_MONITORS_CONFIG_EVENT,
+ &_TRACE_QXL_SPICE_LOADVM_COMMANDS_EVENT,
+ &_TRACE_QXL_SPICE_OOM_EVENT,
+ &_TRACE_QXL_SPICE_RESET_CURSOR_EVENT,
+ &_TRACE_QXL_SPICE_RESET_IMAGE_CACHE_EVENT,
+ &_TRACE_QXL_SPICE_RESET_MEMSLOTS_EVENT,
+ &_TRACE_QXL_SPICE_UPDATE_AREA_EVENT,
+ &_TRACE_QXL_SPICE_UPDATE_AREA_REST_EVENT,
+ &_TRACE_QXL_SURFACES_DIRTY_EVENT,
+ &_TRACE_QXL_SEND_EVENTS_EVENT,
+ &_TRACE_QXL_SEND_EVENTS_VM_STOPPED_EVENT,
+ &_TRACE_QXL_SET_GUEST_BUG_EVENT,
+ &_TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_EVENT,
+ &_TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_EVENT,
+ &_TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_EVENT,
+ &_TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_EVENT,
+ &_TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_EVENT,
+ &_TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_EVENT,
+ &_TRACE_QXL_RENDER_BLIT_EVENT,
+ &_TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_EVENT,
+ &_TRACE_QXL_RENDER_UPDATE_AREA_DONE_EVENT,
+ &_TRACE_GOLDFISH_FB_MEMORY_READ_EVENT,
+ &_TRACE_GOLDFISH_FB_MEMORY_WRITE_EVENT,
+ &_TRACE_GOLDFISH_FB_UPDATE_DISPLAY_EVENT,
+ &_TRACE_GOLDFISH_FB_UPDATE_STATS_EVENT,
+ &_TRACE_VGA_STD_READ_IO_EVENT,
+ &_TRACE_VGA_STD_WRITE_IO_EVENT,
+ &_TRACE_VGA_VBE_READ_EVENT,
+ &_TRACE_VGA_VBE_WRITE_EVENT,
+ &_TRACE_VGA_CIRRUS_READ_IO_EVENT,
+ &_TRACE_VGA_CIRRUS_WRITE_IO_EVENT,
+ &_TRACE_VGA_CIRRUS_READ_BLT_EVENT,
+ &_TRACE_VGA_CIRRUS_WRITE_BLT_EVENT,
+ &_TRACE_SII9022_READ_REG_EVENT,
+ &_TRACE_SII9022_WRITE_REG_EVENT,
+ &_TRACE_SII9022_SWITCH_MODE_EVENT,
+ NULL,
+};
+
+static void trace_hw_display_register_events(void)
+{
+ trace_event_register_group(hw_display_trace_events);
+}
+trace_init(trace_hw_display_register_events)
diff --git a/qemu2-auto-generated/hw/display/trace.h b/qemu2-auto-generated/hw/display/trace.h
new file mode 100644
index 0000000000..ae725b6b3e
--- /dev/null
+++ b/qemu2-auto-generated/hw/display/trace.h
@@ -0,0 +1,2015 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_DISPLAY_GENERATED_TRACERS_H
+#define TRACE_HW_DISPLAY_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_JAZZ_LED_READ_EVENT;
+extern TraceEvent _TRACE_JAZZ_LED_WRITE_EVENT;
+extern TraceEvent _TRACE_XENFB_MOUSE_EVENT_EVENT;
+extern TraceEvent _TRACE_XENFB_KEY_EVENT_EVENT;
+extern TraceEvent _TRACE_XENFB_INPUT_CONNECTED_EVENT;
+extern TraceEvent _TRACE_G364FB_READ_EVENT;
+extern TraceEvent _TRACE_G364FB_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_TMU2_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_TMU2_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_TMU2_START_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_TMU2_PULSE_IRQ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_VGAFB_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_VMWARE_VALUE_READ_EVENT;
+extern TraceEvent _TRACE_VMWARE_VALUE_WRITE_EVENT;
+extern TraceEvent _TRACE_VMWARE_PALETTE_READ_EVENT;
+extern TraceEvent _TRACE_VMWARE_PALETTE_WRITE_EVENT;
+extern TraceEvent _TRACE_VMWARE_SCRATCH_READ_EVENT;
+extern TraceEvent _TRACE_VMWARE_SCRATCH_WRITE_EVENT;
+extern TraceEvent _TRACE_VMWARE_SETMODE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_FEATURES_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_UNREF_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_RES_FLUSH_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_CREATE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_UPDATE_CURSOR_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_FENCE_CTRL_EVENT;
+extern TraceEvent _TRACE_VIRTIO_GPU_FENCE_RESP_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_SET_MM_TIME_EVENT;
+extern TraceEvent _TRACE_QXL_IO_WRITE_VGA_EVENT;
+extern TraceEvent _TRACE_QXL_CREATE_GUEST_PRIMARY_EVENT;
+extern TraceEvent _TRACE_QXL_CREATE_GUEST_PRIMARY_REST_EVENT;
+extern TraceEvent _TRACE_QXL_DESTROY_PRIMARY_EVENT;
+extern TraceEvent _TRACE_QXL_ENTER_VGA_MODE_EVENT;
+extern TraceEvent _TRACE_QXL_EXIT_VGA_MODE_EVENT;
+extern TraceEvent _TRACE_QXL_HARD_RESET_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_ATTACH_WORKER_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_GET_INIT_INFO_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_EVENT;
+extern TraceEvent _TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_EVENT;
+extern TraceEvent _TRACE_QXL_IO_LOG_EVENT;
+extern TraceEvent _TRACE_QXL_IO_READ_UNEXPECTED_EVENT;
+extern TraceEvent _TRACE_QXL_IO_UNEXPECTED_VGA_MODE_EVENT;
+extern TraceEvent _TRACE_QXL_IO_WRITE_EVENT;
+extern TraceEvent _TRACE_QXL_MEMSLOT_ADD_GUEST_EVENT;
+extern TraceEvent _TRACE_QXL_POST_LOAD_EVENT;
+extern TraceEvent _TRACE_QXL_PRE_LOAD_EVENT;
+extern TraceEvent _TRACE_QXL_PRE_SAVE_EVENT;
+extern TraceEvent _TRACE_QXL_RESET_SURFACES_EVENT;
+extern TraceEvent _TRACE_QXL_RING_COMMAND_CHECK_EVENT;
+extern TraceEvent _TRACE_QXL_RING_COMMAND_GET_EVENT;
+extern TraceEvent _TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_EVENT;
+extern TraceEvent _TRACE_QXL_RING_CURSOR_CHECK_EVENT;
+extern TraceEvent _TRACE_QXL_RING_CURSOR_GET_EVENT;
+extern TraceEvent _TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_EVENT;
+extern TraceEvent _TRACE_QXL_RING_RES_PUSH_EVENT;
+extern TraceEvent _TRACE_QXL_RING_RES_PUSH_REST_EVENT;
+extern TraceEvent _TRACE_QXL_RING_RES_PUT_EVENT;
+extern TraceEvent _TRACE_QXL_SET_MODE_EVENT;
+extern TraceEvent _TRACE_QXL_SOFT_RESET_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACES_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_MONITORS_CONFIG_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_LOADVM_COMMANDS_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_OOM_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_RESET_CURSOR_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_RESET_IMAGE_CACHE_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_RESET_MEMSLOTS_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_UPDATE_AREA_EVENT;
+extern TraceEvent _TRACE_QXL_SPICE_UPDATE_AREA_REST_EVENT;
+extern TraceEvent _TRACE_QXL_SURFACES_DIRTY_EVENT;
+extern TraceEvent _TRACE_QXL_SEND_EVENTS_EVENT;
+extern TraceEvent _TRACE_QXL_SEND_EVENTS_VM_STOPPED_EVENT;
+extern TraceEvent _TRACE_QXL_SET_GUEST_BUG_EVENT;
+extern TraceEvent _TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_EVENT;
+extern TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_EVENT;
+extern TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_EVENT;
+extern TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_EVENT;
+extern TraceEvent _TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_EVENT;
+extern TraceEvent _TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_EVENT;
+extern TraceEvent _TRACE_QXL_RENDER_BLIT_EVENT;
+extern TraceEvent _TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_EVENT;
+extern TraceEvent _TRACE_QXL_RENDER_UPDATE_AREA_DONE_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_FB_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_FB_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_FB_UPDATE_DISPLAY_EVENT;
+extern TraceEvent _TRACE_GOLDFISH_FB_UPDATE_STATS_EVENT;
+extern TraceEvent _TRACE_VGA_STD_READ_IO_EVENT;
+extern TraceEvent _TRACE_VGA_STD_WRITE_IO_EVENT;
+extern TraceEvent _TRACE_VGA_VBE_READ_EVENT;
+extern TraceEvent _TRACE_VGA_VBE_WRITE_EVENT;
+extern TraceEvent _TRACE_VGA_CIRRUS_READ_IO_EVENT;
+extern TraceEvent _TRACE_VGA_CIRRUS_WRITE_IO_EVENT;
+extern TraceEvent _TRACE_VGA_CIRRUS_READ_BLT_EVENT;
+extern TraceEvent _TRACE_VGA_CIRRUS_WRITE_BLT_EVENT;
+extern TraceEvent _TRACE_SII9022_READ_REG_EVENT;
+extern TraceEvent _TRACE_SII9022_WRITE_REG_EVENT;
+extern TraceEvent _TRACE_SII9022_SWITCH_MODE_EVENT;
+extern uint16_t _TRACE_JAZZ_LED_READ_DSTATE;
+extern uint16_t _TRACE_JAZZ_LED_WRITE_DSTATE;
+extern uint16_t _TRACE_XENFB_MOUSE_EVENT_DSTATE;
+extern uint16_t _TRACE_XENFB_KEY_EVENT_DSTATE;
+extern uint16_t _TRACE_XENFB_INPUT_CONNECTED_DSTATE;
+extern uint16_t _TRACE_G364FB_READ_DSTATE;
+extern uint16_t _TRACE_G364FB_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_TMU2_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_TMU2_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_TMU2_START_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_TMU2_PULSE_IRQ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_VGAFB_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_VMWARE_VALUE_READ_DSTATE;
+extern uint16_t _TRACE_VMWARE_VALUE_WRITE_DSTATE;
+extern uint16_t _TRACE_VMWARE_PALETTE_READ_DSTATE;
+extern uint16_t _TRACE_VMWARE_PALETTE_WRITE_DSTATE;
+extern uint16_t _TRACE_VMWARE_SCRATCH_READ_DSTATE;
+extern uint16_t _TRACE_VMWARE_SCRATCH_WRITE_DSTATE;
+extern uint16_t _TRACE_VMWARE_SETMODE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_FEATURES_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_UNREF_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_RES_FLUSH_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_CREATE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_UPDATE_CURSOR_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_FENCE_CTRL_DSTATE;
+extern uint16_t _TRACE_VIRTIO_GPU_FENCE_RESP_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_SET_MM_TIME_DSTATE;
+extern uint16_t _TRACE_QXL_IO_WRITE_VGA_DSTATE;
+extern uint16_t _TRACE_QXL_CREATE_GUEST_PRIMARY_DSTATE;
+extern uint16_t _TRACE_QXL_CREATE_GUEST_PRIMARY_REST_DSTATE;
+extern uint16_t _TRACE_QXL_DESTROY_PRIMARY_DSTATE;
+extern uint16_t _TRACE_QXL_ENTER_VGA_MODE_DSTATE;
+extern uint16_t _TRACE_QXL_EXIT_VGA_MODE_DSTATE;
+extern uint16_t _TRACE_QXL_HARD_RESET_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_ATTACH_WORKER_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_GET_INIT_INFO_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_DSTATE;
+extern uint16_t _TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_DSTATE;
+extern uint16_t _TRACE_QXL_IO_LOG_DSTATE;
+extern uint16_t _TRACE_QXL_IO_READ_UNEXPECTED_DSTATE;
+extern uint16_t _TRACE_QXL_IO_UNEXPECTED_VGA_MODE_DSTATE;
+extern uint16_t _TRACE_QXL_IO_WRITE_DSTATE;
+extern uint16_t _TRACE_QXL_MEMSLOT_ADD_GUEST_DSTATE;
+extern uint16_t _TRACE_QXL_POST_LOAD_DSTATE;
+extern uint16_t _TRACE_QXL_PRE_LOAD_DSTATE;
+extern uint16_t _TRACE_QXL_PRE_SAVE_DSTATE;
+extern uint16_t _TRACE_QXL_RESET_SURFACES_DSTATE;
+extern uint16_t _TRACE_QXL_RING_COMMAND_CHECK_DSTATE;
+extern uint16_t _TRACE_QXL_RING_COMMAND_GET_DSTATE;
+extern uint16_t _TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_DSTATE;
+extern uint16_t _TRACE_QXL_RING_CURSOR_CHECK_DSTATE;
+extern uint16_t _TRACE_QXL_RING_CURSOR_GET_DSTATE;
+extern uint16_t _TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_DSTATE;
+extern uint16_t _TRACE_QXL_RING_RES_PUSH_DSTATE;
+extern uint16_t _TRACE_QXL_RING_RES_PUSH_REST_DSTATE;
+extern uint16_t _TRACE_QXL_RING_RES_PUT_DSTATE;
+extern uint16_t _TRACE_QXL_SET_MODE_DSTATE;
+extern uint16_t _TRACE_QXL_SOFT_RESET_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACES_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_MONITORS_CONFIG_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_LOADVM_COMMANDS_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_OOM_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_RESET_CURSOR_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_RESET_IMAGE_CACHE_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_RESET_MEMSLOTS_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_UPDATE_AREA_DSTATE;
+extern uint16_t _TRACE_QXL_SPICE_UPDATE_AREA_REST_DSTATE;
+extern uint16_t _TRACE_QXL_SURFACES_DIRTY_DSTATE;
+extern uint16_t _TRACE_QXL_SEND_EVENTS_DSTATE;
+extern uint16_t _TRACE_QXL_SEND_EVENTS_VM_STOPPED_DSTATE;
+extern uint16_t _TRACE_QXL_SET_GUEST_BUG_DSTATE;
+extern uint16_t _TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_DSTATE;
+extern uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_DSTATE;
+extern uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_DSTATE;
+extern uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_DSTATE;
+extern uint16_t _TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_DSTATE;
+extern uint16_t _TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_DSTATE;
+extern uint16_t _TRACE_QXL_RENDER_BLIT_DSTATE;
+extern uint16_t _TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_DSTATE;
+extern uint16_t _TRACE_QXL_RENDER_UPDATE_AREA_DONE_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_FB_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_FB_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_FB_UPDATE_DISPLAY_DSTATE;
+extern uint16_t _TRACE_GOLDFISH_FB_UPDATE_STATS_DSTATE;
+extern uint16_t _TRACE_VGA_STD_READ_IO_DSTATE;
+extern uint16_t _TRACE_VGA_STD_WRITE_IO_DSTATE;
+extern uint16_t _TRACE_VGA_VBE_READ_DSTATE;
+extern uint16_t _TRACE_VGA_VBE_WRITE_DSTATE;
+extern uint16_t _TRACE_VGA_CIRRUS_READ_IO_DSTATE;
+extern uint16_t _TRACE_VGA_CIRRUS_WRITE_IO_DSTATE;
+extern uint16_t _TRACE_VGA_CIRRUS_READ_BLT_DSTATE;
+extern uint16_t _TRACE_VGA_CIRRUS_WRITE_BLT_DSTATE;
+extern uint16_t _TRACE_SII9022_READ_REG_DSTATE;
+extern uint16_t _TRACE_SII9022_WRITE_REG_DSTATE;
+extern uint16_t _TRACE_SII9022_SWITCH_MODE_DSTATE;
+#define TRACE_JAZZ_LED_READ_ENABLED 1
+#define TRACE_JAZZ_LED_WRITE_ENABLED 1
+#define TRACE_XENFB_MOUSE_EVENT_ENABLED 1
+#define TRACE_XENFB_KEY_EVENT_ENABLED 1
+#define TRACE_XENFB_INPUT_CONNECTED_ENABLED 1
+#define TRACE_G364FB_READ_ENABLED 1
+#define TRACE_G364FB_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_TMU2_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_TMU2_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_TMU2_START_ENABLED 1
+#define TRACE_MILKYMIST_TMU2_PULSE_IRQ_ENABLED 1
+#define TRACE_MILKYMIST_VGAFB_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_ENABLED 1
+#define TRACE_VMWARE_VALUE_READ_ENABLED 1
+#define TRACE_VMWARE_VALUE_WRITE_ENABLED 1
+#define TRACE_VMWARE_PALETTE_READ_ENABLED 1
+#define TRACE_VMWARE_PALETTE_WRITE_ENABLED 1
+#define TRACE_VMWARE_SCRATCH_READ_ENABLED 1
+#define TRACE_VMWARE_SCRATCH_WRITE_ENABLED 1
+#define TRACE_VMWARE_SETMODE_ENABLED 1
+#define TRACE_VIRTIO_GPU_FEATURES_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_UNREF_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_RES_FLUSH_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_CTX_CREATE_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_ENABLED 1
+#define TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_ENABLED 1
+#define TRACE_VIRTIO_GPU_UPDATE_CURSOR_ENABLED 1
+#define TRACE_VIRTIO_GPU_FENCE_CTRL_ENABLED 1
+#define TRACE_VIRTIO_GPU_FENCE_RESP_ENABLED 1
+#define TRACE_QXL_INTERFACE_SET_MM_TIME_ENABLED 0
+#define TRACE_QXL_IO_WRITE_VGA_ENABLED 0
+#define TRACE_QXL_CREATE_GUEST_PRIMARY_ENABLED 1
+#define TRACE_QXL_CREATE_GUEST_PRIMARY_REST_ENABLED 1
+#define TRACE_QXL_DESTROY_PRIMARY_ENABLED 1
+#define TRACE_QXL_ENTER_VGA_MODE_ENABLED 1
+#define TRACE_QXL_EXIT_VGA_MODE_ENABLED 1
+#define TRACE_QXL_HARD_RESET_ENABLED 1
+#define TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_ENABLED 1
+#define TRACE_QXL_INTERFACE_ATTACH_WORKER_ENABLED 1
+#define TRACE_QXL_INTERFACE_GET_INIT_INFO_ENABLED 1
+#define TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_ENABLED 1
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_ENABLED 1
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_ENABLED 1
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_ENABLED 1
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_ENABLED 1
+#define TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_ENABLED 1
+#define TRACE_QXL_IO_LOG_ENABLED 1
+#define TRACE_QXL_IO_READ_UNEXPECTED_ENABLED 1
+#define TRACE_QXL_IO_UNEXPECTED_VGA_MODE_ENABLED 1
+#define TRACE_QXL_IO_WRITE_ENABLED 1
+#define TRACE_QXL_MEMSLOT_ADD_GUEST_ENABLED 1
+#define TRACE_QXL_POST_LOAD_ENABLED 1
+#define TRACE_QXL_PRE_LOAD_ENABLED 1
+#define TRACE_QXL_PRE_SAVE_ENABLED 1
+#define TRACE_QXL_RESET_SURFACES_ENABLED 1
+#define TRACE_QXL_RING_COMMAND_CHECK_ENABLED 1
+#define TRACE_QXL_RING_COMMAND_GET_ENABLED 1
+#define TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_ENABLED 1
+#define TRACE_QXL_RING_CURSOR_CHECK_ENABLED 1
+#define TRACE_QXL_RING_CURSOR_GET_ENABLED 1
+#define TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_ENABLED 1
+#define TRACE_QXL_RING_RES_PUSH_ENABLED 1
+#define TRACE_QXL_RING_RES_PUSH_REST_ENABLED 1
+#define TRACE_QXL_RING_RES_PUT_ENABLED 1
+#define TRACE_QXL_SET_MODE_ENABLED 1
+#define TRACE_QXL_SOFT_RESET_ENABLED 1
+#define TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_ENABLED 1
+#define TRACE_QXL_SPICE_DESTROY_SURFACES_ENABLED 1
+#define TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_ENABLED 1
+#define TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_ENABLED 1
+#define TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_ENABLED 1
+#define TRACE_QXL_SPICE_MONITORS_CONFIG_ENABLED 1
+#define TRACE_QXL_SPICE_LOADVM_COMMANDS_ENABLED 1
+#define TRACE_QXL_SPICE_OOM_ENABLED 1
+#define TRACE_QXL_SPICE_RESET_CURSOR_ENABLED 1
+#define TRACE_QXL_SPICE_RESET_IMAGE_CACHE_ENABLED 1
+#define TRACE_QXL_SPICE_RESET_MEMSLOTS_ENABLED 1
+#define TRACE_QXL_SPICE_UPDATE_AREA_ENABLED 1
+#define TRACE_QXL_SPICE_UPDATE_AREA_REST_ENABLED 1
+#define TRACE_QXL_SURFACES_DIRTY_ENABLED 1
+#define TRACE_QXL_SEND_EVENTS_ENABLED 1
+#define TRACE_QXL_SEND_EVENTS_VM_STOPPED_ENABLED 1
+#define TRACE_QXL_SET_GUEST_BUG_ENABLED 1
+#define TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_ENABLED 1
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_ENABLED 1
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_ENABLED 1
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_ENABLED 1
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_ENABLED 1
+#define TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_ENABLED 1
+#define TRACE_QXL_RENDER_BLIT_ENABLED 1
+#define TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_ENABLED 1
+#define TRACE_QXL_RENDER_UPDATE_AREA_DONE_ENABLED 1
+#define TRACE_GOLDFISH_FB_MEMORY_READ_ENABLED 1
+#define TRACE_GOLDFISH_FB_MEMORY_WRITE_ENABLED 1
+#define TRACE_GOLDFISH_FB_UPDATE_DISPLAY_ENABLED 1
+#define TRACE_GOLDFISH_FB_UPDATE_STATS_ENABLED 1
+#define TRACE_VGA_STD_READ_IO_ENABLED 1
+#define TRACE_VGA_STD_WRITE_IO_ENABLED 1
+#define TRACE_VGA_VBE_READ_ENABLED 1
+#define TRACE_VGA_VBE_WRITE_ENABLED 1
+#define TRACE_VGA_CIRRUS_READ_IO_ENABLED 1
+#define TRACE_VGA_CIRRUS_WRITE_IO_ENABLED 1
+#define TRACE_VGA_CIRRUS_READ_BLT_ENABLED 1
+#define TRACE_VGA_CIRRUS_WRITE_BLT_ENABLED 1
+#define TRACE_SII9022_READ_REG_ENABLED 1
+#define TRACE_SII9022_WRITE_REG_ENABLED 1
+#define TRACE_SII9022_SWITCH_MODE_ENABLED 1
+
+#define TRACE_JAZZ_LED_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_jazz_led_read(uint64_t addr, uint8_t val)
+{
+}
+
+static inline void trace_jazz_led_read(uint64_t addr, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_jazz_led_read(addr, val);
+ }
+}
+
+#define TRACE_JAZZ_LED_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_jazz_led_write(uint64_t addr, uint8_t new)
+{
+}
+
+static inline void trace_jazz_led_write(uint64_t addr, uint8_t new)
+{
+ if (true) {
+ _nocheck__trace_jazz_led_write(addr, new);
+ }
+}
+
+#define TRACE_XENFB_MOUSE_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xenfb_mouse_event(void * opaque, int dx, int dy, int dz, int button_state, int abs_pointer_wanted)
+{
+}
+
+static inline void trace_xenfb_mouse_event(void * opaque, int dx, int dy, int dz, int button_state, int abs_pointer_wanted)
+{
+ if (true) {
+ _nocheck__trace_xenfb_mouse_event(opaque, dx, dy, dz, button_state, abs_pointer_wanted);
+ }
+}
+
+#define TRACE_XENFB_KEY_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xenfb_key_event(void * opaque, int scancode, int button_state)
+{
+}
+
+static inline void trace_xenfb_key_event(void * opaque, int scancode, int button_state)
+{
+ if (true) {
+ _nocheck__trace_xenfb_key_event(opaque, scancode, button_state);
+ }
+}
+
+#define TRACE_XENFB_INPUT_CONNECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xenfb_input_connected(void * xendev, int abs_pointer_wanted)
+{
+}
+
+static inline void trace_xenfb_input_connected(void * xendev, int abs_pointer_wanted)
+{
+ if (true) {
+ _nocheck__trace_xenfb_input_connected(xendev, abs_pointer_wanted);
+ }
+}
+
+#define TRACE_G364FB_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_g364fb_read(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_g364fb_read(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_g364fb_read(addr, val);
+ }
+}
+
+#define TRACE_G364FB_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_g364fb_write(uint64_t addr, uint32_t new)
+{
+}
+
+static inline void trace_g364fb_write(uint64_t addr, uint32_t new)
+{
+ if (true) {
+ _nocheck__trace_g364fb_write(addr, new);
+ }
+}
+
+#define TRACE_MILKYMIST_TMU2_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_tmu2_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_tmu2_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_tmu2_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_TMU2_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_tmu2_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_tmu2_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_tmu2_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_TMU2_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_tmu2_start(void)
+{
+}
+
+static inline void trace_milkymist_tmu2_start(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_tmu2_start();
+ }
+}
+
+#define TRACE_MILKYMIST_TMU2_PULSE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_tmu2_pulse_irq(void)
+{
+}
+
+static inline void trace_milkymist_tmu2_pulse_irq(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_tmu2_pulse_irq();
+ }
+}
+
+#define TRACE_MILKYMIST_VGAFB_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_vgafb_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_vgafb_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_vgafb_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_VGAFB_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_vgafb_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_vgafb_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_vgafb_memory_write(addr, value);
+ }
+}
+
+#define TRACE_VMWARE_VALUE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_value_read(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_value_read(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_value_read(index, value);
+ }
+}
+
+#define TRACE_VMWARE_VALUE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_value_write(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_value_write(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_value_write(index, value);
+ }
+}
+
+#define TRACE_VMWARE_PALETTE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_palette_read(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_palette_read(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_palette_read(index, value);
+ }
+}
+
+#define TRACE_VMWARE_PALETTE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_palette_write(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_palette_write(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_palette_write(index, value);
+ }
+}
+
+#define TRACE_VMWARE_SCRATCH_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_scratch_read(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_scratch_read(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_scratch_read(index, value);
+ }
+}
+
+#define TRACE_VMWARE_SCRATCH_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_scratch_write(uint32_t index, uint32_t value)
+{
+}
+
+static inline void trace_vmware_scratch_write(uint32_t index, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vmware_scratch_write(index, value);
+ }
+}
+
+#define TRACE_VMWARE_SETMODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp)
+{
+}
+
+static inline void trace_vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp)
+{
+ if (true) {
+ _nocheck__trace_vmware_setmode(w, h, bpp);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_FEATURES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_features(bool virgl)
+{
+}
+
+static inline void trace_virtio_gpu_features(bool virgl)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_features(virgl);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_GET_DISPLAY_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_get_display_info(void)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_get_display_info(void)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_get_display_info();
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_SET_SCANOUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_set_scanout(uint32_t id, uint32_t res, uint32_t w, uint32_t h, uint32_t x, uint32_t y)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_set_scanout(uint32_t id, uint32_t res, uint32_t w, uint32_t h, uint32_t x, uint32_t y)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_set_scanout(id, res, w, h, x, y);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_CREATE_2D_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_create_2d(uint32_t res, uint32_t fmt, uint32_t w, uint32_t h)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_create_2d(uint32_t res, uint32_t fmt, uint32_t w, uint32_t h)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_create_2d(res, fmt, w, h);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_CREATE_3D_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_create_3d(uint32_t res, uint32_t fmt, uint32_t w, uint32_t h, uint32_t d)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_create_3d(uint32_t res, uint32_t fmt, uint32_t w, uint32_t h, uint32_t d)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_create_3d(res, fmt, w, h, d);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_UNREF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_unref(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_unref(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_unref(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_BACK_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_back_attach(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_back_attach(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_back_attach(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_BACK_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_back_detach(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_back_detach(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_back_detach(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_2D_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_xfer_toh_2d(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_xfer_toh_2d(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_xfer_toh_2d(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_TOH_3D_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_xfer_toh_3d(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_xfer_toh_3d(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_xfer_toh_3d(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_XFER_FROMH_3D_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_xfer_fromh_3d(uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_xfer_fromh_3d(uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_xfer_fromh_3d(res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_RES_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_res_flush(uint32_t res, uint32_t w, uint32_t h, uint32_t x, uint32_t y)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_res_flush(uint32_t res, uint32_t w, uint32_t h, uint32_t x, uint32_t y)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_res_flush(res, w, h, x, y);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_CTX_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_ctx_create(uint32_t ctx, const char * name)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_ctx_create(uint32_t ctx, const char * name)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_ctx_create(ctx, name);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_CTX_DESTROY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_ctx_destroy(uint32_t ctx)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_ctx_destroy(uint32_t ctx)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_ctx_destroy(ctx);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_CTX_RES_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_ctx_res_attach(uint32_t ctx, uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_ctx_res_attach(uint32_t ctx, uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_ctx_res_attach(ctx, res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_CTX_RES_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_ctx_res_detach(uint32_t ctx, uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_ctx_res_detach(uint32_t ctx, uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_ctx_res_detach(ctx, res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_CMD_CTX_SUBMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_cmd_ctx_submit(uint32_t ctx, uint32_t size)
+{
+}
+
+static inline void trace_virtio_gpu_cmd_ctx_submit(uint32_t ctx, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_cmd_ctx_submit(ctx, size);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_UPDATE_CURSOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_update_cursor(uint32_t scanout, uint32_t x, uint32_t y, const char * type, uint32_t res)
+{
+}
+
+static inline void trace_virtio_gpu_update_cursor(uint32_t scanout, uint32_t x, uint32_t y, const char * type, uint32_t res)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_update_cursor(scanout, x, y, type, res);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_FENCE_CTRL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_fence_ctrl(uint64_t fence, uint32_t type)
+{
+}
+
+static inline void trace_virtio_gpu_fence_ctrl(uint64_t fence, uint32_t type)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_fence_ctrl(fence, type);
+ }
+}
+
+#define TRACE_VIRTIO_GPU_FENCE_RESP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_gpu_fence_resp(uint64_t fence)
+{
+}
+
+static inline void trace_virtio_gpu_fence_resp(uint64_t fence)
+{
+ if (true) {
+ _nocheck__trace_virtio_gpu_fence_resp(fence);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_SET_MM_TIME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_set_mm_time(int qid, uint32_t mm_time)
+{
+}
+
+static inline void trace_qxl_interface_set_mm_time(int qid, uint32_t mm_time)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_set_mm_time(qid, mm_time);
+ }
+}
+
+#define TRACE_QXL_IO_WRITE_VGA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_write_vga(int qid, const char * mode, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_qxl_io_write_vga(int qid, const char * mode, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_write_vga(qid, mode, addr, val);
+ }
+}
+
+#define TRACE_QXL_CREATE_GUEST_PRIMARY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_create_guest_primary(int qid, uint32_t width, uint32_t height, uint64_t mem, uint32_t format, uint32_t position)
+{
+}
+
+static inline void trace_qxl_create_guest_primary(int qid, uint32_t width, uint32_t height, uint64_t mem, uint32_t format, uint32_t position)
+{
+ if (true) {
+ _nocheck__trace_qxl_create_guest_primary(qid, width, height, mem, format, position);
+ }
+}
+
+#define TRACE_QXL_CREATE_GUEST_PRIMARY_REST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_create_guest_primary_rest(int qid, int32_t stride, uint32_t type, uint32_t flags)
+{
+}
+
+static inline void trace_qxl_create_guest_primary_rest(int qid, int32_t stride, uint32_t type, uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_qxl_create_guest_primary_rest(qid, stride, type, flags);
+ }
+}
+
+#define TRACE_QXL_DESTROY_PRIMARY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_destroy_primary(int qid)
+{
+}
+
+static inline void trace_qxl_destroy_primary(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_destroy_primary(qid);
+ }
+}
+
+#define TRACE_QXL_ENTER_VGA_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_enter_vga_mode(int qid)
+{
+}
+
+static inline void trace_qxl_enter_vga_mode(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_enter_vga_mode(qid);
+ }
+}
+
+#define TRACE_QXL_EXIT_VGA_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_exit_vga_mode(int qid)
+{
+}
+
+static inline void trace_qxl_exit_vga_mode(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_exit_vga_mode(qid);
+ }
+}
+
+#define TRACE_QXL_HARD_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_hard_reset(int qid, int64_t loadvm)
+{
+}
+
+static inline void trace_qxl_hard_reset(int qid, int64_t loadvm)
+{
+ if (true) {
+ _nocheck__trace_qxl_hard_reset(qid, loadvm);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_ASYNC_COMPLETE_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_async_complete_io(int qid, uint32_t current_async, void * cookie)
+{
+}
+
+static inline void trace_qxl_interface_async_complete_io(int qid, uint32_t current_async, void * cookie)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_async_complete_io(qid, current_async, cookie);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_ATTACH_WORKER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_attach_worker(int qid)
+{
+}
+
+static inline void trace_qxl_interface_attach_worker(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_attach_worker(qid);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_GET_INIT_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_get_init_info(int qid)
+{
+}
+
+static inline void trace_qxl_interface_get_init_info(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_get_init_info(qid);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_SET_COMPRESSION_LEVEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_set_compression_level(int qid, int64_t level)
+{
+}
+
+static inline void trace_qxl_interface_set_compression_level(int qid, int64_t level)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_set_compression_level(qid, level);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_update_area_complete(int qid, uint32_t surface_id, uint32_t dirty_left, uint32_t dirty_right, uint32_t dirty_top, uint32_t dirty_bottom)
+{
+}
+
+static inline void trace_qxl_interface_update_area_complete(int qid, uint32_t surface_id, uint32_t dirty_left, uint32_t dirty_right, uint32_t dirty_top, uint32_t dirty_bottom)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_update_area_complete(qid, surface_id, dirty_left, dirty_right, dirty_top, dirty_bottom);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_REST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_update_area_complete_rest(int qid, uint32_t num_updated_rects)
+{
+}
+
+static inline void trace_qxl_interface_update_area_complete_rest(int qid, uint32_t num_updated_rects)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_update_area_complete_rest(qid, num_updated_rects);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_update_area_complete_overflow(int qid, int max)
+{
+}
+
+static inline void trace_qxl_interface_update_area_complete_overflow(int qid, int max)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_update_area_complete_overflow(qid, max);
+ }
+}
+
+#define TRACE_QXL_INTERFACE_UPDATE_AREA_COMPLETE_SCHEDULE_BH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interface_update_area_complete_schedule_bh(int qid, uint32_t num_dirty)
+{
+}
+
+static inline void trace_qxl_interface_update_area_complete_schedule_bh(int qid, uint32_t num_dirty)
+{
+ if (true) {
+ _nocheck__trace_qxl_interface_update_area_complete_schedule_bh(qid, num_dirty);
+ }
+}
+
+#define TRACE_QXL_IO_DESTROY_PRIMARY_IGNORED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_destroy_primary_ignored(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_io_destroy_primary_ignored(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_destroy_primary_ignored(qid, mode);
+ }
+}
+
+#define TRACE_QXL_IO_LOG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_log(int qid, const uint8_t * log_buf)
+{
+}
+
+static inline void trace_qxl_io_log(int qid, const uint8_t * log_buf)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_log(qid, log_buf);
+ }
+}
+
+#define TRACE_QXL_IO_READ_UNEXPECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_read_unexpected(int qid)
+{
+}
+
+static inline void trace_qxl_io_read_unexpected(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_read_unexpected(qid);
+ }
+}
+
+#define TRACE_QXL_IO_UNEXPECTED_VGA_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_unexpected_vga_mode(int qid, uint64_t addr, uint64_t val, const char * desc)
+{
+}
+
+static inline void trace_qxl_io_unexpected_vga_mode(int qid, uint64_t addr, uint64_t val, const char * desc)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_unexpected_vga_mode(qid, addr, val, desc);
+ }
+}
+
+#define TRACE_QXL_IO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_io_write(int qid, const char * mode, uint64_t addr, const char * aname, uint64_t val, unsigned size, int async)
+{
+}
+
+static inline void trace_qxl_io_write(int qid, const char * mode, uint64_t addr, const char * aname, uint64_t val, unsigned size, int async)
+{
+ if (true) {
+ _nocheck__trace_qxl_io_write(qid, mode, addr, aname, val, size, async);
+ }
+}
+
+#define TRACE_QXL_MEMSLOT_ADD_GUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_memslot_add_guest(int qid, uint32_t slot_id, uint64_t guest_start, uint64_t guest_end)
+{
+}
+
+static inline void trace_qxl_memslot_add_guest(int qid, uint32_t slot_id, uint64_t guest_start, uint64_t guest_end)
+{
+ if (true) {
+ _nocheck__trace_qxl_memslot_add_guest(qid, slot_id, guest_start, guest_end);
+ }
+}
+
+#define TRACE_QXL_POST_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_post_load(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_post_load(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_post_load(qid, mode);
+ }
+}
+
+#define TRACE_QXL_PRE_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_pre_load(int qid)
+{
+}
+
+static inline void trace_qxl_pre_load(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_pre_load(qid);
+ }
+}
+
+#define TRACE_QXL_PRE_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_pre_save(int qid)
+{
+}
+
+static inline void trace_qxl_pre_save(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_pre_save(qid);
+ }
+}
+
+#define TRACE_QXL_RESET_SURFACES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_reset_surfaces(int qid)
+{
+}
+
+static inline void trace_qxl_reset_surfaces(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_reset_surfaces(qid);
+ }
+}
+
+#define TRACE_QXL_RING_COMMAND_CHECK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_command_check(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_ring_command_check(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_command_check(qid, mode);
+ }
+}
+
+#define TRACE_QXL_RING_COMMAND_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_command_get(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_ring_command_get(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_command_get(qid, mode);
+ }
+}
+
+#define TRACE_QXL_RING_COMMAND_REQ_NOTIFICATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_command_req_notification(int qid)
+{
+}
+
+static inline void trace_qxl_ring_command_req_notification(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_command_req_notification(qid);
+ }
+}
+
+#define TRACE_QXL_RING_CURSOR_CHECK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_cursor_check(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_ring_cursor_check(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_cursor_check(qid, mode);
+ }
+}
+
+#define TRACE_QXL_RING_CURSOR_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_cursor_get(int qid, const char * mode)
+{
+}
+
+static inline void trace_qxl_ring_cursor_get(int qid, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_cursor_get(qid, mode);
+ }
+}
+
+#define TRACE_QXL_RING_CURSOR_REQ_NOTIFICATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_cursor_req_notification(int qid)
+{
+}
+
+static inline void trace_qxl_ring_cursor_req_notification(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_cursor_req_notification(qid);
+ }
+}
+
+#define TRACE_QXL_RING_RES_PUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_res_push(int qid, const char * mode, uint32_t surface_count, uint32_t free_res, void * last_release, const char * notify)
+{
+}
+
+static inline void trace_qxl_ring_res_push(int qid, const char * mode, uint32_t surface_count, uint32_t free_res, void * last_release, const char * notify)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_res_push(qid, mode, surface_count, free_res, last_release, notify);
+ }
+}
+
+#define TRACE_QXL_RING_RES_PUSH_REST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_res_push_rest(int qid, uint32_t ring_has, uint32_t ring_size, uint32_t prod, uint32_t cons)
+{
+}
+
+static inline void trace_qxl_ring_res_push_rest(int qid, uint32_t ring_has, uint32_t ring_size, uint32_t prod, uint32_t cons)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_res_push_rest(qid, ring_has, ring_size, prod, cons);
+ }
+}
+
+#define TRACE_QXL_RING_RES_PUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_ring_res_put(int qid, uint32_t free_res)
+{
+}
+
+static inline void trace_qxl_ring_res_put(int qid, uint32_t free_res)
+{
+ if (true) {
+ _nocheck__trace_qxl_ring_res_put(qid, free_res);
+ }
+}
+
+#define TRACE_QXL_SET_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_set_mode(int qid, int modenr, uint32_t x_res, uint32_t y_res, uint32_t bits, uint64_t devmem)
+{
+}
+
+static inline void trace_qxl_set_mode(int qid, int modenr, uint32_t x_res, uint32_t y_res, uint32_t bits, uint64_t devmem)
+{
+ if (true) {
+ _nocheck__trace_qxl_set_mode(qid, modenr, x_res, y_res, bits, devmem);
+ }
+}
+
+#define TRACE_QXL_SOFT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_soft_reset(int qid)
+{
+}
+
+static inline void trace_qxl_soft_reset(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_soft_reset(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_DESTROY_SURFACES_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_destroy_surfaces_complete(int qid)
+{
+}
+
+static inline void trace_qxl_spice_destroy_surfaces_complete(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_destroy_surfaces_complete(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_DESTROY_SURFACES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_destroy_surfaces(int qid, int async)
+{
+}
+
+static inline void trace_qxl_spice_destroy_surfaces(int qid, int async)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_destroy_surfaces(qid, async);
+ }
+}
+
+#define TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_destroy_surface_wait_complete(int qid, uint32_t id)
+{
+}
+
+static inline void trace_qxl_spice_destroy_surface_wait_complete(int qid, uint32_t id)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_destroy_surface_wait_complete(qid, id);
+ }
+}
+
+#define TRACE_QXL_SPICE_DESTROY_SURFACE_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_destroy_surface_wait(int qid, uint32_t id, int async)
+{
+}
+
+static inline void trace_qxl_spice_destroy_surface_wait(int qid, uint32_t id, int async)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_destroy_surface_wait(qid, id, async);
+ }
+}
+
+#define TRACE_QXL_SPICE_FLUSH_SURFACES_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_flush_surfaces_async(int qid, uint32_t surface_count, uint32_t num_free_res)
+{
+}
+
+static inline void trace_qxl_spice_flush_surfaces_async(int qid, uint32_t surface_count, uint32_t num_free_res)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_flush_surfaces_async(qid, surface_count, num_free_res);
+ }
+}
+
+#define TRACE_QXL_SPICE_MONITORS_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_monitors_config(int qid)
+{
+}
+
+static inline void trace_qxl_spice_monitors_config(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_monitors_config(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_LOADVM_COMMANDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_loadvm_commands(int qid, void * ext, uint32_t count)
+{
+}
+
+static inline void trace_qxl_spice_loadvm_commands(int qid, void * ext, uint32_t count)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_loadvm_commands(qid, ext, count);
+ }
+}
+
+#define TRACE_QXL_SPICE_OOM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_oom(int qid)
+{
+}
+
+static inline void trace_qxl_spice_oom(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_oom(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_RESET_CURSOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_reset_cursor(int qid)
+{
+}
+
+static inline void trace_qxl_spice_reset_cursor(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_reset_cursor(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_RESET_IMAGE_CACHE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_reset_image_cache(int qid)
+{
+}
+
+static inline void trace_qxl_spice_reset_image_cache(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_reset_image_cache(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_RESET_MEMSLOTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_reset_memslots(int qid)
+{
+}
+
+static inline void trace_qxl_spice_reset_memslots(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_reset_memslots(qid);
+ }
+}
+
+#define TRACE_QXL_SPICE_UPDATE_AREA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_update_area(int qid, uint32_t surface_id, uint32_t left, uint32_t right, uint32_t top, uint32_t bottom)
+{
+}
+
+static inline void trace_qxl_spice_update_area(int qid, uint32_t surface_id, uint32_t left, uint32_t right, uint32_t top, uint32_t bottom)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_update_area(qid, surface_id, left, right, top, bottom);
+ }
+}
+
+#define TRACE_QXL_SPICE_UPDATE_AREA_REST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_spice_update_area_rest(int qid, uint32_t num_dirty_rects, uint32_t clear_dirty_region)
+{
+}
+
+static inline void trace_qxl_spice_update_area_rest(int qid, uint32_t num_dirty_rects, uint32_t clear_dirty_region)
+{
+ if (true) {
+ _nocheck__trace_qxl_spice_update_area_rest(qid, num_dirty_rects, clear_dirty_region);
+ }
+}
+
+#define TRACE_QXL_SURFACES_DIRTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_surfaces_dirty(int qid, uint64_t offset, uint64_t size)
+{
+}
+
+static inline void trace_qxl_surfaces_dirty(int qid, uint64_t offset, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_qxl_surfaces_dirty(qid, offset, size);
+ }
+}
+
+#define TRACE_QXL_SEND_EVENTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_send_events(int qid, uint32_t events)
+{
+}
+
+static inline void trace_qxl_send_events(int qid, uint32_t events)
+{
+ if (true) {
+ _nocheck__trace_qxl_send_events(qid, events);
+ }
+}
+
+#define TRACE_QXL_SEND_EVENTS_VM_STOPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_send_events_vm_stopped(int qid, uint32_t events)
+{
+}
+
+static inline void trace_qxl_send_events_vm_stopped(int qid, uint32_t events)
+{
+ if (true) {
+ _nocheck__trace_qxl_send_events_vm_stopped(qid, events);
+ }
+}
+
+#define TRACE_QXL_SET_GUEST_BUG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_set_guest_bug(int qid)
+{
+}
+
+static inline void trace_qxl_set_guest_bug(int qid)
+{
+ if (true) {
+ _nocheck__trace_qxl_set_guest_bug(qid);
+ }
+}
+
+#define TRACE_QXL_INTERRUPT_CLIENT_MONITORS_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_interrupt_client_monitors_config(int qid, int num_heads, void * heads)
+{
+}
+
+static inline void trace_qxl_interrupt_client_monitors_config(int qid, int num_heads, void * heads)
+{
+ if (true) {
+ _nocheck__trace_qxl_interrupt_client_monitors_config(qid, num_heads, heads);
+ }
+}
+
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_GUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_client_monitors_config_unsupported_by_guest(int qid, uint32_t int_mask, void * client_monitors_config)
+{
+}
+
+static inline void trace_qxl_client_monitors_config_unsupported_by_guest(int qid, uint32_t int_mask, void * client_monitors_config)
+{
+ if (true) {
+ _nocheck__trace_qxl_client_monitors_config_unsupported_by_guest(qid, int_mask, client_monitors_config);
+ }
+}
+
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_UNSUPPORTED_BY_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_client_monitors_config_unsupported_by_device(int qid, int revision)
+{
+}
+
+static inline void trace_qxl_client_monitors_config_unsupported_by_device(int qid, int revision)
+{
+ if (true) {
+ _nocheck__trace_qxl_client_monitors_config_unsupported_by_device(qid, revision);
+ }
+}
+
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_CAPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_client_monitors_config_capped(int qid, int requested, int limit)
+{
+}
+
+static inline void trace_qxl_client_monitors_config_capped(int qid, int requested, int limit)
+{
+ if (true) {
+ _nocheck__trace_qxl_client_monitors_config_capped(qid, requested, limit);
+ }
+}
+
+#define TRACE_QXL_CLIENT_MONITORS_CONFIG_CRC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_client_monitors_config_crc(int qid, unsigned size, uint32_t crc32)
+{
+}
+
+static inline void trace_qxl_client_monitors_config_crc(int qid, unsigned size, uint32_t crc32)
+{
+ if (true) {
+ _nocheck__trace_qxl_client_monitors_config_crc(qid, size, crc32);
+ }
+}
+
+#define TRACE_QXL_SET_CLIENT_CAPABILITIES_UNSUPPORTED_BY_REVISION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_set_client_capabilities_unsupported_by_revision(int qid, int revision)
+{
+}
+
+static inline void trace_qxl_set_client_capabilities_unsupported_by_revision(int qid, int revision)
+{
+ if (true) {
+ _nocheck__trace_qxl_set_client_capabilities_unsupported_by_revision(qid, revision);
+ }
+}
+
+#define TRACE_QXL_RENDER_BLIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_render_blit(int32_t stride, int32_t left, int32_t right, int32_t top, int32_t bottom)
+{
+}
+
+static inline void trace_qxl_render_blit(int32_t stride, int32_t left, int32_t right, int32_t top, int32_t bottom)
+{
+ if (true) {
+ _nocheck__trace_qxl_render_blit(stride, left, right, top, bottom);
+ }
+}
+
+#define TRACE_QXL_RENDER_GUEST_PRIMARY_RESIZED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_render_guest_primary_resized(int32_t width, int32_t height, int32_t stride, int32_t bytes_pp, int32_t bits_pp)
+{
+}
+
+static inline void trace_qxl_render_guest_primary_resized(int32_t width, int32_t height, int32_t stride, int32_t bytes_pp, int32_t bits_pp)
+{
+ if (true) {
+ _nocheck__trace_qxl_render_guest_primary_resized(width, height, stride, bytes_pp, bits_pp);
+ }
+}
+
+#define TRACE_QXL_RENDER_UPDATE_AREA_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qxl_render_update_area_done(void * cookie)
+{
+}
+
+static inline void trace_qxl_render_update_area_done(void * cookie)
+{
+ if (true) {
+ _nocheck__trace_qxl_render_update_area_done(cookie);
+ }
+}
+
+#define TRACE_GOLDFISH_FB_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_fb_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_goldfish_fb_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_goldfish_fb_memory_read(addr, value);
+ }
+}
+
+#define TRACE_GOLDFISH_FB_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_fb_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_goldfish_fb_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_goldfish_fb_memory_write(addr, value);
+ }
+}
+
+#define TRACE_GOLDFISH_FB_UPDATE_DISPLAY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_fb_update_display(int y, int h, int x, int w)
+{
+}
+
+static inline void trace_goldfish_fb_update_display(int y, int h, int x, int w)
+{
+ if (true) {
+ _nocheck__trace_goldfish_fb_update_display(y, h, x, w);
+ }
+}
+
+#define TRACE_GOLDFISH_FB_UPDATE_STATS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_goldfish_fb_update_stats(float peak, float total)
+{
+}
+
+static inline void trace_goldfish_fb_update_stats(float peak, float total)
+{
+ if (true) {
+ _nocheck__trace_goldfish_fb_update_stats(peak, total);
+ }
+}
+
+#define TRACE_VGA_STD_READ_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_std_read_io(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_vga_std_read_io(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_std_read_io(addr, val);
+ }
+}
+
+#define TRACE_VGA_STD_WRITE_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_std_write_io(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_vga_std_write_io(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_std_write_io(addr, val);
+ }
+}
+
+#define TRACE_VGA_VBE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_vbe_read(uint32_t index, uint32_t val)
+{
+}
+
+static inline void trace_vga_vbe_read(uint32_t index, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_vbe_read(index, val);
+ }
+}
+
+#define TRACE_VGA_VBE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_vbe_write(uint32_t index, uint32_t val)
+{
+}
+
+static inline void trace_vga_vbe_write(uint32_t index, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_vbe_write(index, val);
+ }
+}
+
+#define TRACE_VGA_CIRRUS_READ_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_cirrus_read_io(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_vga_cirrus_read_io(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_cirrus_read_io(addr, val);
+ }
+}
+
+#define TRACE_VGA_CIRRUS_WRITE_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_cirrus_write_io(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_vga_cirrus_write_io(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_cirrus_write_io(addr, val);
+ }
+}
+
+#define TRACE_VGA_CIRRUS_READ_BLT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_cirrus_read_blt(uint32_t offset, uint32_t val)
+{
+}
+
+static inline void trace_vga_cirrus_read_blt(uint32_t offset, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_cirrus_read_blt(offset, val);
+ }
+}
+
+#define TRACE_VGA_CIRRUS_WRITE_BLT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vga_cirrus_write_blt(uint32_t offset, uint32_t val)
+{
+}
+
+static inline void trace_vga_cirrus_write_blt(uint32_t offset, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vga_cirrus_write_blt(offset, val);
+ }
+}
+
+#define TRACE_SII9022_READ_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii9022_read_reg(uint8_t addr, uint8_t val)
+{
+}
+
+static inline void trace_sii9022_read_reg(uint8_t addr, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_sii9022_read_reg(addr, val);
+ }
+}
+
+#define TRACE_SII9022_WRITE_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii9022_write_reg(uint8_t addr, uint8_t val)
+{
+}
+
+static inline void trace_sii9022_write_reg(uint8_t addr, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_sii9022_write_reg(addr, val);
+ }
+}
+
+#define TRACE_SII9022_SWITCH_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii9022_switch_mode(const char * mode)
+{
+}
+
+static inline void trace_sii9022_switch_mode(const char * mode)
+{
+ if (true) {
+ _nocheck__trace_sii9022_switch_mode(mode);
+ }
+}
+#endif /* TRACE_HW_DISPLAY_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/dma/trace.c b/qemu2-auto-generated/hw/dma/trace.c
new file mode 100644
index 0000000000..5664df9fd0
--- /dev/null
+++ b/qemu2-auto-generated/hw/dma/trace.c
@@ -0,0 +1,149 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_JAZZIO_READ_DSTATE;
+uint16_t _TRACE_JAZZIO_WRITE_DSTATE;
+uint16_t _TRACE_RC4030_READ_DSTATE;
+uint16_t _TRACE_RC4030_WRITE_DSTATE;
+uint16_t _TRACE_LEDMA_MEMORY_READ_DSTATE;
+uint16_t _TRACE_LEDMA_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_SET_IRQ_RAISE_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_SET_IRQ_LOWER_DSTATE;
+uint16_t _TRACE_ESPDMA_MEMORY_READ_DSTATE;
+uint16_t _TRACE_ESPDMA_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_MEM_READL_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_ENABLE_RAISE_DSTATE;
+uint16_t _TRACE_SPARC32_DMA_ENABLE_LOWER_DSTATE;
+uint16_t _TRACE_I8257_UNREGISTERED_DMA_DSTATE;
+TraceEvent _TRACE_JAZZIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "jazzio_read",
+ .sstate = TRACE_JAZZIO_READ_ENABLED,
+ .dstate = &_TRACE_JAZZIO_READ_DSTATE
+};
+TraceEvent _TRACE_JAZZIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "jazzio_write",
+ .sstate = TRACE_JAZZIO_WRITE_ENABLED,
+ .dstate = &_TRACE_JAZZIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_RC4030_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rc4030_read",
+ .sstate = TRACE_RC4030_READ_ENABLED,
+ .dstate = &_TRACE_RC4030_READ_DSTATE
+};
+TraceEvent _TRACE_RC4030_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rc4030_write",
+ .sstate = TRACE_RC4030_WRITE_ENABLED,
+ .dstate = &_TRACE_RC4030_WRITE_DSTATE
+};
+TraceEvent _TRACE_LEDMA_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ledma_memory_read",
+ .sstate = TRACE_LEDMA_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_LEDMA_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_LEDMA_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ledma_memory_write",
+ .sstate = TRACE_LEDMA_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_LEDMA_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_SET_IRQ_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_set_irq_raise",
+ .sstate = TRACE_SPARC32_DMA_SET_IRQ_RAISE_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_SET_IRQ_RAISE_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_SET_IRQ_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_set_irq_lower",
+ .sstate = TRACE_SPARC32_DMA_SET_IRQ_LOWER_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_SET_IRQ_LOWER_DSTATE
+};
+TraceEvent _TRACE_ESPDMA_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "espdma_memory_read",
+ .sstate = TRACE_ESPDMA_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_ESPDMA_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_ESPDMA_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "espdma_memory_write",
+ .sstate = TRACE_ESPDMA_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_ESPDMA_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_mem_readl",
+ .sstate = TRACE_SPARC32_DMA_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_mem_writel",
+ .sstate = TRACE_SPARC32_DMA_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_ENABLE_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_enable_raise",
+ .sstate = TRACE_SPARC32_DMA_ENABLE_RAISE_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_ENABLE_RAISE_DSTATE
+};
+TraceEvent _TRACE_SPARC32_DMA_ENABLE_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc32_dma_enable_lower",
+ .sstate = TRACE_SPARC32_DMA_ENABLE_LOWER_ENABLED,
+ .dstate = &_TRACE_SPARC32_DMA_ENABLE_LOWER_DSTATE
+};
+TraceEvent _TRACE_I8257_UNREGISTERED_DMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "i8257_unregistered_dma",
+ .sstate = TRACE_I8257_UNREGISTERED_DMA_ENABLED,
+ .dstate = &_TRACE_I8257_UNREGISTERED_DMA_DSTATE
+};
+TraceEvent *hw_dma_trace_events[] = {
+ &_TRACE_JAZZIO_READ_EVENT,
+ &_TRACE_JAZZIO_WRITE_EVENT,
+ &_TRACE_RC4030_READ_EVENT,
+ &_TRACE_RC4030_WRITE_EVENT,
+ &_TRACE_LEDMA_MEMORY_READ_EVENT,
+ &_TRACE_LEDMA_MEMORY_WRITE_EVENT,
+ &_TRACE_SPARC32_DMA_SET_IRQ_RAISE_EVENT,
+ &_TRACE_SPARC32_DMA_SET_IRQ_LOWER_EVENT,
+ &_TRACE_ESPDMA_MEMORY_READ_EVENT,
+ &_TRACE_ESPDMA_MEMORY_WRITE_EVENT,
+ &_TRACE_SPARC32_DMA_MEM_READL_EVENT,
+ &_TRACE_SPARC32_DMA_MEM_WRITEL_EVENT,
+ &_TRACE_SPARC32_DMA_ENABLE_RAISE_EVENT,
+ &_TRACE_SPARC32_DMA_ENABLE_LOWER_EVENT,
+ &_TRACE_I8257_UNREGISTERED_DMA_EVENT,
+ NULL,
+};
+
+static void trace_hw_dma_register_events(void)
+{
+ trace_event_register_group(hw_dma_trace_events);
+}
+trace_init(trace_hw_dma_register_events)
diff --git a/qemu2-auto-generated/hw/dma/trace.h b/qemu2-auto-generated/hw/dma/trace.h
new file mode 100644
index 0000000000..d4342c357e
--- /dev/null
+++ b/qemu2-auto-generated/hw/dma/trace.h
@@ -0,0 +1,264 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_DMA_GENERATED_TRACERS_H
+#define TRACE_HW_DMA_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_JAZZIO_READ_EVENT;
+extern TraceEvent _TRACE_JAZZIO_WRITE_EVENT;
+extern TraceEvent _TRACE_RC4030_READ_EVENT;
+extern TraceEvent _TRACE_RC4030_WRITE_EVENT;
+extern TraceEvent _TRACE_LEDMA_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_LEDMA_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_SET_IRQ_RAISE_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_SET_IRQ_LOWER_EVENT;
+extern TraceEvent _TRACE_ESPDMA_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_ESPDMA_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_ENABLE_RAISE_EVENT;
+extern TraceEvent _TRACE_SPARC32_DMA_ENABLE_LOWER_EVENT;
+extern TraceEvent _TRACE_I8257_UNREGISTERED_DMA_EVENT;
+extern uint16_t _TRACE_JAZZIO_READ_DSTATE;
+extern uint16_t _TRACE_JAZZIO_WRITE_DSTATE;
+extern uint16_t _TRACE_RC4030_READ_DSTATE;
+extern uint16_t _TRACE_RC4030_WRITE_DSTATE;
+extern uint16_t _TRACE_LEDMA_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_LEDMA_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_SET_IRQ_RAISE_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_SET_IRQ_LOWER_DSTATE;
+extern uint16_t _TRACE_ESPDMA_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_ESPDMA_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_ENABLE_RAISE_DSTATE;
+extern uint16_t _TRACE_SPARC32_DMA_ENABLE_LOWER_DSTATE;
+extern uint16_t _TRACE_I8257_UNREGISTERED_DMA_DSTATE;
+#define TRACE_JAZZIO_READ_ENABLED 1
+#define TRACE_JAZZIO_WRITE_ENABLED 1
+#define TRACE_RC4030_READ_ENABLED 1
+#define TRACE_RC4030_WRITE_ENABLED 1
+#define TRACE_LEDMA_MEMORY_READ_ENABLED 1
+#define TRACE_LEDMA_MEMORY_WRITE_ENABLED 1
+#define TRACE_SPARC32_DMA_SET_IRQ_RAISE_ENABLED 1
+#define TRACE_SPARC32_DMA_SET_IRQ_LOWER_ENABLED 1
+#define TRACE_ESPDMA_MEMORY_READ_ENABLED 1
+#define TRACE_ESPDMA_MEMORY_WRITE_ENABLED 1
+#define TRACE_SPARC32_DMA_MEM_READL_ENABLED 1
+#define TRACE_SPARC32_DMA_MEM_WRITEL_ENABLED 1
+#define TRACE_SPARC32_DMA_ENABLE_RAISE_ENABLED 1
+#define TRACE_SPARC32_DMA_ENABLE_LOWER_ENABLED 1
+#define TRACE_I8257_UNREGISTERED_DMA_ENABLED 1
+
+#define TRACE_JAZZIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_jazzio_read(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_jazzio_read(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_jazzio_read(addr, ret);
+ }
+}
+
+#define TRACE_JAZZIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_jazzio_write(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_jazzio_write(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_jazzio_write(addr, val);
+ }
+}
+
+#define TRACE_RC4030_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rc4030_read(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_rc4030_read(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_rc4030_read(addr, ret);
+ }
+}
+
+#define TRACE_RC4030_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rc4030_write(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rc4030_write(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rc4030_write(addr, val);
+ }
+}
+
+#define TRACE_LEDMA_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ledma_memory_read(uint64_t addr, int len)
+{
+}
+
+static inline void trace_ledma_memory_read(uint64_t addr, int len)
+{
+ if (true) {
+ _nocheck__trace_ledma_memory_read(addr, len);
+ }
+}
+
+#define TRACE_LEDMA_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ledma_memory_write(uint64_t addr, int len)
+{
+}
+
+static inline void trace_ledma_memory_write(uint64_t addr, int len)
+{
+ if (true) {
+ _nocheck__trace_ledma_memory_write(addr, len);
+ }
+}
+
+#define TRACE_SPARC32_DMA_SET_IRQ_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_set_irq_raise(void)
+{
+}
+
+static inline void trace_sparc32_dma_set_irq_raise(void)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_set_irq_raise();
+ }
+}
+
+#define TRACE_SPARC32_DMA_SET_IRQ_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_set_irq_lower(void)
+{
+}
+
+static inline void trace_sparc32_dma_set_irq_lower(void)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_set_irq_lower();
+ }
+}
+
+#define TRACE_ESPDMA_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_espdma_memory_read(uint32_t addr, int len)
+{
+}
+
+static inline void trace_espdma_memory_read(uint32_t addr, int len)
+{
+ if (true) {
+ _nocheck__trace_espdma_memory_read(addr, len);
+ }
+}
+
+#define TRACE_ESPDMA_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_espdma_memory_write(uint32_t addr, int len)
+{
+}
+
+static inline void trace_espdma_memory_write(uint32_t addr, int len)
+{
+ if (true) {
+ _nocheck__trace_espdma_memory_write(addr, len);
+ }
+}
+
+#define TRACE_SPARC32_DMA_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_mem_readl(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_sparc32_dma_mem_readl(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_mem_readl(addr, ret);
+ }
+}
+
+#define TRACE_SPARC32_DMA_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_mem_writel(uint64_t addr, uint32_t old, uint32_t val)
+{
+}
+
+static inline void trace_sparc32_dma_mem_writel(uint64_t addr, uint32_t old, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_mem_writel(addr, old, val);
+ }
+}
+
+#define TRACE_SPARC32_DMA_ENABLE_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_enable_raise(void)
+{
+}
+
+static inline void trace_sparc32_dma_enable_raise(void)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_enable_raise();
+ }
+}
+
+#define TRACE_SPARC32_DMA_ENABLE_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc32_dma_enable_lower(void)
+{
+}
+
+static inline void trace_sparc32_dma_enable_lower(void)
+{
+ if (true) {
+ _nocheck__trace_sparc32_dma_enable_lower();
+ }
+}
+
+#define TRACE_I8257_UNREGISTERED_DMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_i8257_unregistered_dma(int nchan, int dma_pos, int dma_len)
+{
+}
+
+static inline void trace_i8257_unregistered_dma(int nchan, int dma_pos, int dma_len)
+{
+ if (true) {
+ _nocheck__trace_i8257_unregistered_dma(nchan, dma_pos, dma_len);
+ }
+}
+#endif /* TRACE_HW_DMA_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/hppa/trace.c b/qemu2-auto-generated/hw/hppa/trace.c
new file mode 100644
index 0000000000..3cdf82abdd
--- /dev/null
+++ b/qemu2-auto-generated/hw/hppa/trace.c
@@ -0,0 +1,23 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_HPPA_PCI_IACK_WRITE_DSTATE;
+TraceEvent _TRACE_HPPA_PCI_IACK_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hppa_pci_iack_write",
+ .sstate = TRACE_HPPA_PCI_IACK_WRITE_ENABLED,
+ .dstate = &_TRACE_HPPA_PCI_IACK_WRITE_DSTATE
+};
+TraceEvent *hw_hppa_trace_events[] = {
+ &_TRACE_HPPA_PCI_IACK_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_hppa_register_events(void)
+{
+ trace_event_register_group(hw_hppa_trace_events);
+}
+trace_init(trace_hw_hppa_register_events)
diff --git a/qemu2-auto-generated/hw/hppa/trace.h b/qemu2-auto-generated/hw/hppa/trace.h
new file mode 100644
index 0000000000..8dc264f702
--- /dev/null
+++ b/qemu2-auto-generated/hw/hppa/trace.h
@@ -0,0 +1,26 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_HPPA_GENERATED_TRACERS_H
+#define TRACE_HW_HPPA_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_HPPA_PCI_IACK_WRITE_EVENT;
+extern uint16_t _TRACE_HPPA_PCI_IACK_WRITE_DSTATE;
+#define TRACE_HPPA_PCI_IACK_WRITE_ENABLED 1
+
+#define TRACE_HPPA_PCI_IACK_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hppa_pci_iack_write(void)
+{
+}
+
+static inline void trace_hppa_pci_iack_write(void)
+{
+ if (true) {
+ _nocheck__trace_hppa_pci_iack_write();
+ }
+}
+#endif /* TRACE_HW_HPPA_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/i386/trace.c b/qemu2-auto-generated/hw/i386/trace.c
new file mode 100644
index 0000000000..37e7da78a5
--- /dev/null
+++ b/qemu2-auto-generated/hw/i386/trace.c
@@ -0,0 +1,1004 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_X86_IOMMU_IEC_NOTIFY_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_INVALID_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_CC_DOMAIN_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_CC_GLOBAL_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_CC_DEVICE_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_CC_DEVICES_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_CC_INVALID_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_IOTLB_GLOBAL_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_IOTLB_DOMAIN_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_IOTLB_PAGES_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_IOTLB_INVALID_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_WAIT_SW_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_WAIT_IRQ_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_WAIT_INVALID_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_DSTATE;
+uint16_t _TRACE_VTD_INV_DESC_IEC_DSTATE;
+uint16_t _TRACE_VTD_INV_QI_ENABLE_DSTATE;
+uint16_t _TRACE_VTD_INV_QI_SETUP_DSTATE;
+uint16_t _TRACE_VTD_INV_QI_HEAD_DSTATE;
+uint16_t _TRACE_VTD_INV_QI_TAIL_DSTATE;
+uint16_t _TRACE_VTD_INV_QI_FETCH_DSTATE;
+uint16_t _TRACE_VTD_CONTEXT_CACHE_RESET_DSTATE;
+uint16_t _TRACE_VTD_RE_NOT_PRESENT_DSTATE;
+uint16_t _TRACE_VTD_RE_INVALID_DSTATE;
+uint16_t _TRACE_VTD_CE_NOT_PRESENT_DSTATE;
+uint16_t _TRACE_VTD_CE_INVALID_DSTATE;
+uint16_t _TRACE_VTD_IOTLB_PAGE_HIT_DSTATE;
+uint16_t _TRACE_VTD_IOTLB_PAGE_UPDATE_DSTATE;
+uint16_t _TRACE_VTD_IOTLB_CC_HIT_DSTATE;
+uint16_t _TRACE_VTD_IOTLB_CC_UPDATE_DSTATE;
+uint16_t _TRACE_VTD_IOTLB_RESET_DSTATE;
+uint16_t _TRACE_VTD_FAULT_DISABLED_DSTATE;
+uint16_t _TRACE_VTD_REPLAY_CE_VALID_DSTATE;
+uint16_t _TRACE_VTD_REPLAY_CE_INVALID_DSTATE;
+uint16_t _TRACE_VTD_PAGE_WALK_LEVEL_DSTATE;
+uint16_t _TRACE_VTD_PAGE_WALK_ONE_DSTATE;
+uint16_t _TRACE_VTD_PAGE_WALK_SKIP_READ_DSTATE;
+uint16_t _TRACE_VTD_PAGE_WALK_SKIP_PERM_DSTATE;
+uint16_t _TRACE_VTD_PAGE_WALK_SKIP_RESERVE_DSTATE;
+uint16_t _TRACE_VTD_SWITCH_ADDRESS_SPACE_DSTATE;
+uint16_t _TRACE_VTD_AS_UNMAP_WHOLE_DSTATE;
+uint16_t _TRACE_VTD_TRANSLATE_PT_DSTATE;
+uint16_t _TRACE_VTD_PT_ENABLE_FAST_PATH_DSTATE;
+uint16_t _TRACE_VTD_IRQ_GENERATE_DSTATE;
+uint16_t _TRACE_VTD_REG_READ_DSTATE;
+uint16_t _TRACE_VTD_REG_WRITE_DSTATE;
+uint16_t _TRACE_VTD_REG_DMAR_ROOT_DSTATE;
+uint16_t _TRACE_VTD_REG_IR_ROOT_DSTATE;
+uint16_t _TRACE_VTD_REG_WRITE_GCMD_DSTATE;
+uint16_t _TRACE_VTD_REG_WRITE_FECTL_DSTATE;
+uint16_t _TRACE_VTD_REG_WRITE_IECTL_DSTATE;
+uint16_t _TRACE_VTD_REG_ICS_CLEAR_IP_DSTATE;
+uint16_t _TRACE_VTD_DMAR_TRANSLATE_DSTATE;
+uint16_t _TRACE_VTD_DMAR_ENABLE_DSTATE;
+uint16_t _TRACE_VTD_DMAR_FAULT_DSTATE;
+uint16_t _TRACE_VTD_IR_ENABLE_DSTATE;
+uint16_t _TRACE_VTD_IR_IRTE_GET_DSTATE;
+uint16_t _TRACE_VTD_IR_REMAP_DSTATE;
+uint16_t _TRACE_VTD_IR_REMAP_TYPE_DSTATE;
+uint16_t _TRACE_VTD_IR_REMAP_MSI_DSTATE;
+uint16_t _TRACE_VTD_IR_REMAP_MSI_REQ_DSTATE;
+uint16_t _TRACE_VTD_FSTS_PPF_DSTATE;
+uint16_t _TRACE_VTD_FSTS_CLEAR_IP_DSTATE;
+uint16_t _TRACE_VTD_FRR_NEW_DSTATE;
+uint16_t _TRACE_VTD_ERR_DSTATE;
+uint16_t _TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_DSTATE;
+uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_DSTATE;
+uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_DSTATE;
+uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_DSTATE;
+uint16_t _TRACE_VTD_ERR_DMAR_TRANSLATE_DSTATE;
+uint16_t _TRACE_VTD_WARN_INVALID_QI_TAIL_DSTATE;
+uint16_t _TRACE_VTD_ERR_QI_DISABLE_DSTATE;
+uint16_t _TRACE_VTD_ERR_QI_TAIL_DSTATE;
+uint16_t _TRACE_VTD_ERR_IRTE_DSTATE;
+uint16_t _TRACE_VTD_ERR_IRTE_SID_DSTATE;
+uint16_t _TRACE_VTD_ERR_IRTE_SID_BUS_DSTATE;
+uint16_t _TRACE_VTD_ERR_IRTE_SVT_DSTATE;
+uint16_t _TRACE_VTD_ERR_IR_MSI_INVALID_DSTATE;
+uint16_t _TRACE_VTD_WARN_IR_VECTOR_DSTATE;
+uint16_t _TRACE_VTD_WARN_IR_TRIGGER_DSTATE;
+uint16_t _TRACE_AMDVI_EVNTLOG_FAIL_DSTATE;
+uint16_t _TRACE_AMDVI_CACHE_UPDATE_DSTATE;
+uint16_t _TRACE_AMDVI_COMPLETION_WAIT_FAIL_DSTATE;
+uint16_t _TRACE_AMDVI_MMIO_WRITE_DSTATE;
+uint16_t _TRACE_AMDVI_MMIO_READ_DSTATE;
+uint16_t _TRACE_AMDVI_MMIO_READ_INVALID_DSTATE;
+uint16_t _TRACE_AMDVI_COMMAND_ERROR_DSTATE;
+uint16_t _TRACE_AMDVI_COMMAND_READ_FAIL_DSTATE;
+uint16_t _TRACE_AMDVI_COMMAND_EXEC_DSTATE;
+uint16_t _TRACE_AMDVI_UNHANDLED_COMMAND_DSTATE;
+uint16_t _TRACE_AMDVI_INTR_INVAL_DSTATE;
+uint16_t _TRACE_AMDVI_IOTLB_INVAL_DSTATE;
+uint16_t _TRACE_AMDVI_PREFETCH_PAGES_DSTATE;
+uint16_t _TRACE_AMDVI_PAGES_INVAL_DSTATE;
+uint16_t _TRACE_AMDVI_ALL_INVAL_DSTATE;
+uint16_t _TRACE_AMDVI_PPR_EXEC_DSTATE;
+uint16_t _TRACE_AMDVI_DEVTAB_INVAL_DSTATE;
+uint16_t _TRACE_AMDVI_COMPLETION_WAIT_DSTATE;
+uint16_t _TRACE_AMDVI_CONTROL_STATUS_DSTATE;
+uint16_t _TRACE_AMDVI_IOTLB_RESET_DSTATE;
+uint16_t _TRACE_AMDVI_DTE_GET_FAIL_DSTATE;
+uint16_t _TRACE_AMDVI_INVALID_DTE_DSTATE;
+uint16_t _TRACE_AMDVI_GET_PTE_HWERROR_DSTATE;
+uint16_t _TRACE_AMDVI_MODE_INVALID_DSTATE;
+uint16_t _TRACE_AMDVI_PAGE_FAULT_DSTATE;
+uint16_t _TRACE_AMDVI_IOTLB_HIT_DSTATE;
+uint16_t _TRACE_AMDVI_TRANSLATION_RESULT_DSTATE;
+uint16_t _TRACE_VMPORT_REGISTER_DSTATE;
+uint16_t _TRACE_VMPORT_COMMAND_DSTATE;
+TraceEvent _TRACE_X86_IOMMU_IEC_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "x86_iommu_iec_notify",
+ .sstate = TRACE_X86_IOMMU_IEC_NOTIFY_ENABLED,
+ .dstate = &_TRACE_X86_IOMMU_IEC_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc",
+ .sstate = TRACE_VTD_INV_DESC_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_invalid",
+ .sstate = TRACE_VTD_INV_DESC_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_CC_DOMAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_cc_domain",
+ .sstate = TRACE_VTD_INV_DESC_CC_DOMAIN_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_CC_DOMAIN_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_CC_GLOBAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_cc_global",
+ .sstate = TRACE_VTD_INV_DESC_CC_GLOBAL_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_CC_GLOBAL_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_CC_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_cc_device",
+ .sstate = TRACE_VTD_INV_DESC_CC_DEVICE_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_CC_DEVICE_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_CC_DEVICES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_cc_devices",
+ .sstate = TRACE_VTD_INV_DESC_CC_DEVICES_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_CC_DEVICES_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_CC_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_cc_invalid",
+ .sstate = TRACE_VTD_INV_DESC_CC_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_CC_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_IOTLB_GLOBAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_iotlb_global",
+ .sstate = TRACE_VTD_INV_DESC_IOTLB_GLOBAL_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_IOTLB_GLOBAL_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_IOTLB_DOMAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_iotlb_domain",
+ .sstate = TRACE_VTD_INV_DESC_IOTLB_DOMAIN_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_IOTLB_DOMAIN_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_IOTLB_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_iotlb_pages",
+ .sstate = TRACE_VTD_INV_DESC_IOTLB_PAGES_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_IOTLB_PAGES_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_IOTLB_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_iotlb_invalid",
+ .sstate = TRACE_VTD_INV_DESC_IOTLB_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_IOTLB_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_WAIT_SW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_wait_sw",
+ .sstate = TRACE_VTD_INV_DESC_WAIT_SW_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_WAIT_SW_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_WAIT_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_wait_irq",
+ .sstate = TRACE_VTD_INV_DESC_WAIT_IRQ_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_WAIT_IRQ_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_WAIT_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_wait_invalid",
+ .sstate = TRACE_VTD_INV_DESC_WAIT_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_WAIT_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_wait_write_fail",
+ .sstate = TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_DESC_IEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_desc_iec",
+ .sstate = TRACE_VTD_INV_DESC_IEC_ENABLED,
+ .dstate = &_TRACE_VTD_INV_DESC_IEC_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_QI_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_qi_enable",
+ .sstate = TRACE_VTD_INV_QI_ENABLE_ENABLED,
+ .dstate = &_TRACE_VTD_INV_QI_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_QI_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_qi_setup",
+ .sstate = TRACE_VTD_INV_QI_SETUP_ENABLED,
+ .dstate = &_TRACE_VTD_INV_QI_SETUP_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_QI_HEAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_qi_head",
+ .sstate = TRACE_VTD_INV_QI_HEAD_ENABLED,
+ .dstate = &_TRACE_VTD_INV_QI_HEAD_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_QI_TAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_qi_tail",
+ .sstate = TRACE_VTD_INV_QI_TAIL_ENABLED,
+ .dstate = &_TRACE_VTD_INV_QI_TAIL_DSTATE
+};
+TraceEvent _TRACE_VTD_INV_QI_FETCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_inv_qi_fetch",
+ .sstate = TRACE_VTD_INV_QI_FETCH_ENABLED,
+ .dstate = &_TRACE_VTD_INV_QI_FETCH_DSTATE
+};
+TraceEvent _TRACE_VTD_CONTEXT_CACHE_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_context_cache_reset",
+ .sstate = TRACE_VTD_CONTEXT_CACHE_RESET_ENABLED,
+ .dstate = &_TRACE_VTD_CONTEXT_CACHE_RESET_DSTATE
+};
+TraceEvent _TRACE_VTD_RE_NOT_PRESENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_re_not_present",
+ .sstate = TRACE_VTD_RE_NOT_PRESENT_ENABLED,
+ .dstate = &_TRACE_VTD_RE_NOT_PRESENT_DSTATE
+};
+TraceEvent _TRACE_VTD_RE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_re_invalid",
+ .sstate = TRACE_VTD_RE_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_RE_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_CE_NOT_PRESENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ce_not_present",
+ .sstate = TRACE_VTD_CE_NOT_PRESENT_ENABLED,
+ .dstate = &_TRACE_VTD_CE_NOT_PRESENT_DSTATE
+};
+TraceEvent _TRACE_VTD_CE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ce_invalid",
+ .sstate = TRACE_VTD_CE_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_CE_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_IOTLB_PAGE_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_iotlb_page_hit",
+ .sstate = TRACE_VTD_IOTLB_PAGE_HIT_ENABLED,
+ .dstate = &_TRACE_VTD_IOTLB_PAGE_HIT_DSTATE
+};
+TraceEvent _TRACE_VTD_IOTLB_PAGE_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_iotlb_page_update",
+ .sstate = TRACE_VTD_IOTLB_PAGE_UPDATE_ENABLED,
+ .dstate = &_TRACE_VTD_IOTLB_PAGE_UPDATE_DSTATE
+};
+TraceEvent _TRACE_VTD_IOTLB_CC_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_iotlb_cc_hit",
+ .sstate = TRACE_VTD_IOTLB_CC_HIT_ENABLED,
+ .dstate = &_TRACE_VTD_IOTLB_CC_HIT_DSTATE
+};
+TraceEvent _TRACE_VTD_IOTLB_CC_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_iotlb_cc_update",
+ .sstate = TRACE_VTD_IOTLB_CC_UPDATE_ENABLED,
+ .dstate = &_TRACE_VTD_IOTLB_CC_UPDATE_DSTATE
+};
+TraceEvent _TRACE_VTD_IOTLB_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_iotlb_reset",
+ .sstate = TRACE_VTD_IOTLB_RESET_ENABLED,
+ .dstate = &_TRACE_VTD_IOTLB_RESET_DSTATE
+};
+TraceEvent _TRACE_VTD_FAULT_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_fault_disabled",
+ .sstate = TRACE_VTD_FAULT_DISABLED_ENABLED,
+ .dstate = &_TRACE_VTD_FAULT_DISABLED_DSTATE
+};
+TraceEvent _TRACE_VTD_REPLAY_CE_VALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_replay_ce_valid",
+ .sstate = TRACE_VTD_REPLAY_CE_VALID_ENABLED,
+ .dstate = &_TRACE_VTD_REPLAY_CE_VALID_DSTATE
+};
+TraceEvent _TRACE_VTD_REPLAY_CE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_replay_ce_invalid",
+ .sstate = TRACE_VTD_REPLAY_CE_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_REPLAY_CE_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_PAGE_WALK_LEVEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_page_walk_level",
+ .sstate = TRACE_VTD_PAGE_WALK_LEVEL_ENABLED,
+ .dstate = &_TRACE_VTD_PAGE_WALK_LEVEL_DSTATE
+};
+TraceEvent _TRACE_VTD_PAGE_WALK_ONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_page_walk_one",
+ .sstate = TRACE_VTD_PAGE_WALK_ONE_ENABLED,
+ .dstate = &_TRACE_VTD_PAGE_WALK_ONE_DSTATE
+};
+TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_page_walk_skip_read",
+ .sstate = TRACE_VTD_PAGE_WALK_SKIP_READ_ENABLED,
+ .dstate = &_TRACE_VTD_PAGE_WALK_SKIP_READ_DSTATE
+};
+TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_PERM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_page_walk_skip_perm",
+ .sstate = TRACE_VTD_PAGE_WALK_SKIP_PERM_ENABLED,
+ .dstate = &_TRACE_VTD_PAGE_WALK_SKIP_PERM_DSTATE
+};
+TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_RESERVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_page_walk_skip_reserve",
+ .sstate = TRACE_VTD_PAGE_WALK_SKIP_RESERVE_ENABLED,
+ .dstate = &_TRACE_VTD_PAGE_WALK_SKIP_RESERVE_DSTATE
+};
+TraceEvent _TRACE_VTD_SWITCH_ADDRESS_SPACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_switch_address_space",
+ .sstate = TRACE_VTD_SWITCH_ADDRESS_SPACE_ENABLED,
+ .dstate = &_TRACE_VTD_SWITCH_ADDRESS_SPACE_DSTATE
+};
+TraceEvent _TRACE_VTD_AS_UNMAP_WHOLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_as_unmap_whole",
+ .sstate = TRACE_VTD_AS_UNMAP_WHOLE_ENABLED,
+ .dstate = &_TRACE_VTD_AS_UNMAP_WHOLE_DSTATE
+};
+TraceEvent _TRACE_VTD_TRANSLATE_PT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_translate_pt",
+ .sstate = TRACE_VTD_TRANSLATE_PT_ENABLED,
+ .dstate = &_TRACE_VTD_TRANSLATE_PT_DSTATE
+};
+TraceEvent _TRACE_VTD_PT_ENABLE_FAST_PATH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_pt_enable_fast_path",
+ .sstate = TRACE_VTD_PT_ENABLE_FAST_PATH_ENABLED,
+ .dstate = &_TRACE_VTD_PT_ENABLE_FAST_PATH_DSTATE
+};
+TraceEvent _TRACE_VTD_IRQ_GENERATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_irq_generate",
+ .sstate = TRACE_VTD_IRQ_GENERATE_ENABLED,
+ .dstate = &_TRACE_VTD_IRQ_GENERATE_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_read",
+ .sstate = TRACE_VTD_REG_READ_ENABLED,
+ .dstate = &_TRACE_VTD_REG_READ_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_write",
+ .sstate = TRACE_VTD_REG_WRITE_ENABLED,
+ .dstate = &_TRACE_VTD_REG_WRITE_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_DMAR_ROOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_dmar_root",
+ .sstate = TRACE_VTD_REG_DMAR_ROOT_ENABLED,
+ .dstate = &_TRACE_VTD_REG_DMAR_ROOT_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_IR_ROOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_ir_root",
+ .sstate = TRACE_VTD_REG_IR_ROOT_ENABLED,
+ .dstate = &_TRACE_VTD_REG_IR_ROOT_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_WRITE_GCMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_write_gcmd",
+ .sstate = TRACE_VTD_REG_WRITE_GCMD_ENABLED,
+ .dstate = &_TRACE_VTD_REG_WRITE_GCMD_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_WRITE_FECTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_write_fectl",
+ .sstate = TRACE_VTD_REG_WRITE_FECTL_ENABLED,
+ .dstate = &_TRACE_VTD_REG_WRITE_FECTL_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_WRITE_IECTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_write_iectl",
+ .sstate = TRACE_VTD_REG_WRITE_IECTL_ENABLED,
+ .dstate = &_TRACE_VTD_REG_WRITE_IECTL_DSTATE
+};
+TraceEvent _TRACE_VTD_REG_ICS_CLEAR_IP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_reg_ics_clear_ip",
+ .sstate = TRACE_VTD_REG_ICS_CLEAR_IP_ENABLED,
+ .dstate = &_TRACE_VTD_REG_ICS_CLEAR_IP_DSTATE
+};
+TraceEvent _TRACE_VTD_DMAR_TRANSLATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_dmar_translate",
+ .sstate = TRACE_VTD_DMAR_TRANSLATE_ENABLED,
+ .dstate = &_TRACE_VTD_DMAR_TRANSLATE_DSTATE
+};
+TraceEvent _TRACE_VTD_DMAR_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_dmar_enable",
+ .sstate = TRACE_VTD_DMAR_ENABLE_ENABLED,
+ .dstate = &_TRACE_VTD_DMAR_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VTD_DMAR_FAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_dmar_fault",
+ .sstate = TRACE_VTD_DMAR_FAULT_ENABLED,
+ .dstate = &_TRACE_VTD_DMAR_FAULT_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_enable",
+ .sstate = TRACE_VTD_IR_ENABLE_ENABLED,
+ .dstate = &_TRACE_VTD_IR_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_IRTE_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_irte_get",
+ .sstate = TRACE_VTD_IR_IRTE_GET_ENABLED,
+ .dstate = &_TRACE_VTD_IR_IRTE_GET_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_REMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_remap",
+ .sstate = TRACE_VTD_IR_REMAP_ENABLED,
+ .dstate = &_TRACE_VTD_IR_REMAP_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_REMAP_TYPE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_remap_type",
+ .sstate = TRACE_VTD_IR_REMAP_TYPE_ENABLED,
+ .dstate = &_TRACE_VTD_IR_REMAP_TYPE_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_REMAP_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_remap_msi",
+ .sstate = TRACE_VTD_IR_REMAP_MSI_ENABLED,
+ .dstate = &_TRACE_VTD_IR_REMAP_MSI_DSTATE
+};
+TraceEvent _TRACE_VTD_IR_REMAP_MSI_REQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_ir_remap_msi_req",
+ .sstate = TRACE_VTD_IR_REMAP_MSI_REQ_ENABLED,
+ .dstate = &_TRACE_VTD_IR_REMAP_MSI_REQ_DSTATE
+};
+TraceEvent _TRACE_VTD_FSTS_PPF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_fsts_ppf",
+ .sstate = TRACE_VTD_FSTS_PPF_ENABLED,
+ .dstate = &_TRACE_VTD_FSTS_PPF_DSTATE
+};
+TraceEvent _TRACE_VTD_FSTS_CLEAR_IP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_fsts_clear_ip",
+ .sstate = TRACE_VTD_FSTS_CLEAR_IP_ENABLED,
+ .dstate = &_TRACE_VTD_FSTS_CLEAR_IP_DSTATE
+};
+TraceEvent _TRACE_VTD_FRR_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_frr_new",
+ .sstate = TRACE_VTD_FRR_NEW_ENABLED,
+ .dstate = &_TRACE_VTD_FRR_NEW_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err",
+ .sstate = TRACE_VTD_ERR_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_dmar_iova_overflow",
+ .sstate = TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_dmar_slpte_read_error",
+ .sstate = TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_dmar_slpte_perm_error",
+ .sstate = TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_dmar_slpte_resv_error",
+ .sstate = TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_DMAR_TRANSLATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_dmar_translate",
+ .sstate = TRACE_VTD_ERR_DMAR_TRANSLATE_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_DMAR_TRANSLATE_DSTATE
+};
+TraceEvent _TRACE_VTD_WARN_INVALID_QI_TAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_warn_invalid_qi_tail",
+ .sstate = TRACE_VTD_WARN_INVALID_QI_TAIL_ENABLED,
+ .dstate = &_TRACE_VTD_WARN_INVALID_QI_TAIL_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_QI_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_qi_disable",
+ .sstate = TRACE_VTD_ERR_QI_DISABLE_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_QI_DISABLE_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_QI_TAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_qi_tail",
+ .sstate = TRACE_VTD_ERR_QI_TAIL_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_QI_TAIL_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_IRTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_irte",
+ .sstate = TRACE_VTD_ERR_IRTE_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_IRTE_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_IRTE_SID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_irte_sid",
+ .sstate = TRACE_VTD_ERR_IRTE_SID_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_IRTE_SID_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_IRTE_SID_BUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_irte_sid_bus",
+ .sstate = TRACE_VTD_ERR_IRTE_SID_BUS_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_IRTE_SID_BUS_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_IRTE_SVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_irte_svt",
+ .sstate = TRACE_VTD_ERR_IRTE_SVT_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_IRTE_SVT_DSTATE
+};
+TraceEvent _TRACE_VTD_ERR_IR_MSI_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_err_ir_msi_invalid",
+ .sstate = TRACE_VTD_ERR_IR_MSI_INVALID_ENABLED,
+ .dstate = &_TRACE_VTD_ERR_IR_MSI_INVALID_DSTATE
+};
+TraceEvent _TRACE_VTD_WARN_IR_VECTOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_warn_ir_vector",
+ .sstate = TRACE_VTD_WARN_IR_VECTOR_ENABLED,
+ .dstate = &_TRACE_VTD_WARN_IR_VECTOR_DSTATE
+};
+TraceEvent _TRACE_VTD_WARN_IR_TRIGGER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vtd_warn_ir_trigger",
+ .sstate = TRACE_VTD_WARN_IR_TRIGGER_ENABLED,
+ .dstate = &_TRACE_VTD_WARN_IR_TRIGGER_DSTATE
+};
+TraceEvent _TRACE_AMDVI_EVNTLOG_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_evntlog_fail",
+ .sstate = TRACE_AMDVI_EVNTLOG_FAIL_ENABLED,
+ .dstate = &_TRACE_AMDVI_EVNTLOG_FAIL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_CACHE_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_cache_update",
+ .sstate = TRACE_AMDVI_CACHE_UPDATE_ENABLED,
+ .dstate = &_TRACE_AMDVI_CACHE_UPDATE_DSTATE
+};
+TraceEvent _TRACE_AMDVI_COMPLETION_WAIT_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_completion_wait_fail",
+ .sstate = TRACE_AMDVI_COMPLETION_WAIT_FAIL_ENABLED,
+ .dstate = &_TRACE_AMDVI_COMPLETION_WAIT_FAIL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_MMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_mmio_write",
+ .sstate = TRACE_AMDVI_MMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_AMDVI_MMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_AMDVI_MMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_mmio_read",
+ .sstate = TRACE_AMDVI_MMIO_READ_ENABLED,
+ .dstate = &_TRACE_AMDVI_MMIO_READ_DSTATE
+};
+TraceEvent _TRACE_AMDVI_MMIO_READ_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_mmio_read_invalid",
+ .sstate = TRACE_AMDVI_MMIO_READ_INVALID_ENABLED,
+ .dstate = &_TRACE_AMDVI_MMIO_READ_INVALID_DSTATE
+};
+TraceEvent _TRACE_AMDVI_COMMAND_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_command_error",
+ .sstate = TRACE_AMDVI_COMMAND_ERROR_ENABLED,
+ .dstate = &_TRACE_AMDVI_COMMAND_ERROR_DSTATE
+};
+TraceEvent _TRACE_AMDVI_COMMAND_READ_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_command_read_fail",
+ .sstate = TRACE_AMDVI_COMMAND_READ_FAIL_ENABLED,
+ .dstate = &_TRACE_AMDVI_COMMAND_READ_FAIL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_COMMAND_EXEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_command_exec",
+ .sstate = TRACE_AMDVI_COMMAND_EXEC_ENABLED,
+ .dstate = &_TRACE_AMDVI_COMMAND_EXEC_DSTATE
+};
+TraceEvent _TRACE_AMDVI_UNHANDLED_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_unhandled_command",
+ .sstate = TRACE_AMDVI_UNHANDLED_COMMAND_ENABLED,
+ .dstate = &_TRACE_AMDVI_UNHANDLED_COMMAND_DSTATE
+};
+TraceEvent _TRACE_AMDVI_INTR_INVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_intr_inval",
+ .sstate = TRACE_AMDVI_INTR_INVAL_ENABLED,
+ .dstate = &_TRACE_AMDVI_INTR_INVAL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_IOTLB_INVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_iotlb_inval",
+ .sstate = TRACE_AMDVI_IOTLB_INVAL_ENABLED,
+ .dstate = &_TRACE_AMDVI_IOTLB_INVAL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_PREFETCH_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_prefetch_pages",
+ .sstate = TRACE_AMDVI_PREFETCH_PAGES_ENABLED,
+ .dstate = &_TRACE_AMDVI_PREFETCH_PAGES_DSTATE
+};
+TraceEvent _TRACE_AMDVI_PAGES_INVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_pages_inval",
+ .sstate = TRACE_AMDVI_PAGES_INVAL_ENABLED,
+ .dstate = &_TRACE_AMDVI_PAGES_INVAL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_ALL_INVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_all_inval",
+ .sstate = TRACE_AMDVI_ALL_INVAL_ENABLED,
+ .dstate = &_TRACE_AMDVI_ALL_INVAL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_PPR_EXEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_ppr_exec",
+ .sstate = TRACE_AMDVI_PPR_EXEC_ENABLED,
+ .dstate = &_TRACE_AMDVI_PPR_EXEC_DSTATE
+};
+TraceEvent _TRACE_AMDVI_DEVTAB_INVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_devtab_inval",
+ .sstate = TRACE_AMDVI_DEVTAB_INVAL_ENABLED,
+ .dstate = &_TRACE_AMDVI_DEVTAB_INVAL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_COMPLETION_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_completion_wait",
+ .sstate = TRACE_AMDVI_COMPLETION_WAIT_ENABLED,
+ .dstate = &_TRACE_AMDVI_COMPLETION_WAIT_DSTATE
+};
+TraceEvent _TRACE_AMDVI_CONTROL_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_control_status",
+ .sstate = TRACE_AMDVI_CONTROL_STATUS_ENABLED,
+ .dstate = &_TRACE_AMDVI_CONTROL_STATUS_DSTATE
+};
+TraceEvent _TRACE_AMDVI_IOTLB_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_iotlb_reset",
+ .sstate = TRACE_AMDVI_IOTLB_RESET_ENABLED,
+ .dstate = &_TRACE_AMDVI_IOTLB_RESET_DSTATE
+};
+TraceEvent _TRACE_AMDVI_DTE_GET_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_dte_get_fail",
+ .sstate = TRACE_AMDVI_DTE_GET_FAIL_ENABLED,
+ .dstate = &_TRACE_AMDVI_DTE_GET_FAIL_DSTATE
+};
+TraceEvent _TRACE_AMDVI_INVALID_DTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_invalid_dte",
+ .sstate = TRACE_AMDVI_INVALID_DTE_ENABLED,
+ .dstate = &_TRACE_AMDVI_INVALID_DTE_DSTATE
+};
+TraceEvent _TRACE_AMDVI_GET_PTE_HWERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_get_pte_hwerror",
+ .sstate = TRACE_AMDVI_GET_PTE_HWERROR_ENABLED,
+ .dstate = &_TRACE_AMDVI_GET_PTE_HWERROR_DSTATE
+};
+TraceEvent _TRACE_AMDVI_MODE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_mode_invalid",
+ .sstate = TRACE_AMDVI_MODE_INVALID_ENABLED,
+ .dstate = &_TRACE_AMDVI_MODE_INVALID_DSTATE
+};
+TraceEvent _TRACE_AMDVI_PAGE_FAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_page_fault",
+ .sstate = TRACE_AMDVI_PAGE_FAULT_ENABLED,
+ .dstate = &_TRACE_AMDVI_PAGE_FAULT_DSTATE
+};
+TraceEvent _TRACE_AMDVI_IOTLB_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_iotlb_hit",
+ .sstate = TRACE_AMDVI_IOTLB_HIT_ENABLED,
+ .dstate = &_TRACE_AMDVI_IOTLB_HIT_DSTATE
+};
+TraceEvent _TRACE_AMDVI_TRANSLATION_RESULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "amdvi_translation_result",
+ .sstate = TRACE_AMDVI_TRANSLATION_RESULT_ENABLED,
+ .dstate = &_TRACE_AMDVI_TRANSLATION_RESULT_DSTATE
+};
+TraceEvent _TRACE_VMPORT_REGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmport_register",
+ .sstate = TRACE_VMPORT_REGISTER_ENABLED,
+ .dstate = &_TRACE_VMPORT_REGISTER_DSTATE
+};
+TraceEvent _TRACE_VMPORT_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmport_command",
+ .sstate = TRACE_VMPORT_COMMAND_ENABLED,
+ .dstate = &_TRACE_VMPORT_COMMAND_DSTATE
+};
+TraceEvent *hw_i386_trace_events[] = {
+ &_TRACE_X86_IOMMU_IEC_NOTIFY_EVENT,
+ &_TRACE_VTD_INV_DESC_EVENT,
+ &_TRACE_VTD_INV_DESC_INVALID_EVENT,
+ &_TRACE_VTD_INV_DESC_CC_DOMAIN_EVENT,
+ &_TRACE_VTD_INV_DESC_CC_GLOBAL_EVENT,
+ &_TRACE_VTD_INV_DESC_CC_DEVICE_EVENT,
+ &_TRACE_VTD_INV_DESC_CC_DEVICES_EVENT,
+ &_TRACE_VTD_INV_DESC_CC_INVALID_EVENT,
+ &_TRACE_VTD_INV_DESC_IOTLB_GLOBAL_EVENT,
+ &_TRACE_VTD_INV_DESC_IOTLB_DOMAIN_EVENT,
+ &_TRACE_VTD_INV_DESC_IOTLB_PAGES_EVENT,
+ &_TRACE_VTD_INV_DESC_IOTLB_INVALID_EVENT,
+ &_TRACE_VTD_INV_DESC_WAIT_SW_EVENT,
+ &_TRACE_VTD_INV_DESC_WAIT_IRQ_EVENT,
+ &_TRACE_VTD_INV_DESC_WAIT_INVALID_EVENT,
+ &_TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_EVENT,
+ &_TRACE_VTD_INV_DESC_IEC_EVENT,
+ &_TRACE_VTD_INV_QI_ENABLE_EVENT,
+ &_TRACE_VTD_INV_QI_SETUP_EVENT,
+ &_TRACE_VTD_INV_QI_HEAD_EVENT,
+ &_TRACE_VTD_INV_QI_TAIL_EVENT,
+ &_TRACE_VTD_INV_QI_FETCH_EVENT,
+ &_TRACE_VTD_CONTEXT_CACHE_RESET_EVENT,
+ &_TRACE_VTD_RE_NOT_PRESENT_EVENT,
+ &_TRACE_VTD_RE_INVALID_EVENT,
+ &_TRACE_VTD_CE_NOT_PRESENT_EVENT,
+ &_TRACE_VTD_CE_INVALID_EVENT,
+ &_TRACE_VTD_IOTLB_PAGE_HIT_EVENT,
+ &_TRACE_VTD_IOTLB_PAGE_UPDATE_EVENT,
+ &_TRACE_VTD_IOTLB_CC_HIT_EVENT,
+ &_TRACE_VTD_IOTLB_CC_UPDATE_EVENT,
+ &_TRACE_VTD_IOTLB_RESET_EVENT,
+ &_TRACE_VTD_FAULT_DISABLED_EVENT,
+ &_TRACE_VTD_REPLAY_CE_VALID_EVENT,
+ &_TRACE_VTD_REPLAY_CE_INVALID_EVENT,
+ &_TRACE_VTD_PAGE_WALK_LEVEL_EVENT,
+ &_TRACE_VTD_PAGE_WALK_ONE_EVENT,
+ &_TRACE_VTD_PAGE_WALK_SKIP_READ_EVENT,
+ &_TRACE_VTD_PAGE_WALK_SKIP_PERM_EVENT,
+ &_TRACE_VTD_PAGE_WALK_SKIP_RESERVE_EVENT,
+ &_TRACE_VTD_SWITCH_ADDRESS_SPACE_EVENT,
+ &_TRACE_VTD_AS_UNMAP_WHOLE_EVENT,
+ &_TRACE_VTD_TRANSLATE_PT_EVENT,
+ &_TRACE_VTD_PT_ENABLE_FAST_PATH_EVENT,
+ &_TRACE_VTD_IRQ_GENERATE_EVENT,
+ &_TRACE_VTD_REG_READ_EVENT,
+ &_TRACE_VTD_REG_WRITE_EVENT,
+ &_TRACE_VTD_REG_DMAR_ROOT_EVENT,
+ &_TRACE_VTD_REG_IR_ROOT_EVENT,
+ &_TRACE_VTD_REG_WRITE_GCMD_EVENT,
+ &_TRACE_VTD_REG_WRITE_FECTL_EVENT,
+ &_TRACE_VTD_REG_WRITE_IECTL_EVENT,
+ &_TRACE_VTD_REG_ICS_CLEAR_IP_EVENT,
+ &_TRACE_VTD_DMAR_TRANSLATE_EVENT,
+ &_TRACE_VTD_DMAR_ENABLE_EVENT,
+ &_TRACE_VTD_DMAR_FAULT_EVENT,
+ &_TRACE_VTD_IR_ENABLE_EVENT,
+ &_TRACE_VTD_IR_IRTE_GET_EVENT,
+ &_TRACE_VTD_IR_REMAP_EVENT,
+ &_TRACE_VTD_IR_REMAP_TYPE_EVENT,
+ &_TRACE_VTD_IR_REMAP_MSI_EVENT,
+ &_TRACE_VTD_IR_REMAP_MSI_REQ_EVENT,
+ &_TRACE_VTD_FSTS_PPF_EVENT,
+ &_TRACE_VTD_FSTS_CLEAR_IP_EVENT,
+ &_TRACE_VTD_FRR_NEW_EVENT,
+ &_TRACE_VTD_ERR_EVENT,
+ &_TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_EVENT,
+ &_TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_EVENT,
+ &_TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_EVENT,
+ &_TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_EVENT,
+ &_TRACE_VTD_ERR_DMAR_TRANSLATE_EVENT,
+ &_TRACE_VTD_WARN_INVALID_QI_TAIL_EVENT,
+ &_TRACE_VTD_ERR_QI_DISABLE_EVENT,
+ &_TRACE_VTD_ERR_QI_TAIL_EVENT,
+ &_TRACE_VTD_ERR_IRTE_EVENT,
+ &_TRACE_VTD_ERR_IRTE_SID_EVENT,
+ &_TRACE_VTD_ERR_IRTE_SID_BUS_EVENT,
+ &_TRACE_VTD_ERR_IRTE_SVT_EVENT,
+ &_TRACE_VTD_ERR_IR_MSI_INVALID_EVENT,
+ &_TRACE_VTD_WARN_IR_VECTOR_EVENT,
+ &_TRACE_VTD_WARN_IR_TRIGGER_EVENT,
+ &_TRACE_AMDVI_EVNTLOG_FAIL_EVENT,
+ &_TRACE_AMDVI_CACHE_UPDATE_EVENT,
+ &_TRACE_AMDVI_COMPLETION_WAIT_FAIL_EVENT,
+ &_TRACE_AMDVI_MMIO_WRITE_EVENT,
+ &_TRACE_AMDVI_MMIO_READ_EVENT,
+ &_TRACE_AMDVI_MMIO_READ_INVALID_EVENT,
+ &_TRACE_AMDVI_COMMAND_ERROR_EVENT,
+ &_TRACE_AMDVI_COMMAND_READ_FAIL_EVENT,
+ &_TRACE_AMDVI_COMMAND_EXEC_EVENT,
+ &_TRACE_AMDVI_UNHANDLED_COMMAND_EVENT,
+ &_TRACE_AMDVI_INTR_INVAL_EVENT,
+ &_TRACE_AMDVI_IOTLB_INVAL_EVENT,
+ &_TRACE_AMDVI_PREFETCH_PAGES_EVENT,
+ &_TRACE_AMDVI_PAGES_INVAL_EVENT,
+ &_TRACE_AMDVI_ALL_INVAL_EVENT,
+ &_TRACE_AMDVI_PPR_EXEC_EVENT,
+ &_TRACE_AMDVI_DEVTAB_INVAL_EVENT,
+ &_TRACE_AMDVI_COMPLETION_WAIT_EVENT,
+ &_TRACE_AMDVI_CONTROL_STATUS_EVENT,
+ &_TRACE_AMDVI_IOTLB_RESET_EVENT,
+ &_TRACE_AMDVI_DTE_GET_FAIL_EVENT,
+ &_TRACE_AMDVI_INVALID_DTE_EVENT,
+ &_TRACE_AMDVI_GET_PTE_HWERROR_EVENT,
+ &_TRACE_AMDVI_MODE_INVALID_EVENT,
+ &_TRACE_AMDVI_PAGE_FAULT_EVENT,
+ &_TRACE_AMDVI_IOTLB_HIT_EVENT,
+ &_TRACE_AMDVI_TRANSLATION_RESULT_EVENT,
+ &_TRACE_VMPORT_REGISTER_EVENT,
+ &_TRACE_VMPORT_COMMAND_EVENT,
+ NULL,
+};
+
+static void trace_hw_i386_register_events(void)
+{
+ trace_event_register_group(hw_i386_trace_events);
+}
+trace_init(trace_hw_i386_register_events)
diff --git a/qemu2-auto-generated/hw/i386/trace.h b/qemu2-auto-generated/hw/i386/trace.h
new file mode 100644
index 0000000000..718865058d
--- /dev/null
+++ b/qemu2-auto-generated/hw/i386/trace.h
@@ -0,0 +1,1879 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_I386_GENERATED_TRACERS_H
+#define TRACE_HW_I386_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_X86_IOMMU_IEC_NOTIFY_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_CC_DOMAIN_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_CC_GLOBAL_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_CC_DEVICE_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_CC_DEVICES_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_CC_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_IOTLB_GLOBAL_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_IOTLB_DOMAIN_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_IOTLB_PAGES_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_IOTLB_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_WAIT_SW_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_WAIT_IRQ_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_WAIT_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_EVENT;
+extern TraceEvent _TRACE_VTD_INV_DESC_IEC_EVENT;
+extern TraceEvent _TRACE_VTD_INV_QI_ENABLE_EVENT;
+extern TraceEvent _TRACE_VTD_INV_QI_SETUP_EVENT;
+extern TraceEvent _TRACE_VTD_INV_QI_HEAD_EVENT;
+extern TraceEvent _TRACE_VTD_INV_QI_TAIL_EVENT;
+extern TraceEvent _TRACE_VTD_INV_QI_FETCH_EVENT;
+extern TraceEvent _TRACE_VTD_CONTEXT_CACHE_RESET_EVENT;
+extern TraceEvent _TRACE_VTD_RE_NOT_PRESENT_EVENT;
+extern TraceEvent _TRACE_VTD_RE_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_CE_NOT_PRESENT_EVENT;
+extern TraceEvent _TRACE_VTD_CE_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_IOTLB_PAGE_HIT_EVENT;
+extern TraceEvent _TRACE_VTD_IOTLB_PAGE_UPDATE_EVENT;
+extern TraceEvent _TRACE_VTD_IOTLB_CC_HIT_EVENT;
+extern TraceEvent _TRACE_VTD_IOTLB_CC_UPDATE_EVENT;
+extern TraceEvent _TRACE_VTD_IOTLB_RESET_EVENT;
+extern TraceEvent _TRACE_VTD_FAULT_DISABLED_EVENT;
+extern TraceEvent _TRACE_VTD_REPLAY_CE_VALID_EVENT;
+extern TraceEvent _TRACE_VTD_REPLAY_CE_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_PAGE_WALK_LEVEL_EVENT;
+extern TraceEvent _TRACE_VTD_PAGE_WALK_ONE_EVENT;
+extern TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_READ_EVENT;
+extern TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_PERM_EVENT;
+extern TraceEvent _TRACE_VTD_PAGE_WALK_SKIP_RESERVE_EVENT;
+extern TraceEvent _TRACE_VTD_SWITCH_ADDRESS_SPACE_EVENT;
+extern TraceEvent _TRACE_VTD_AS_UNMAP_WHOLE_EVENT;
+extern TraceEvent _TRACE_VTD_TRANSLATE_PT_EVENT;
+extern TraceEvent _TRACE_VTD_PT_ENABLE_FAST_PATH_EVENT;
+extern TraceEvent _TRACE_VTD_IRQ_GENERATE_EVENT;
+extern TraceEvent _TRACE_VTD_REG_READ_EVENT;
+extern TraceEvent _TRACE_VTD_REG_WRITE_EVENT;
+extern TraceEvent _TRACE_VTD_REG_DMAR_ROOT_EVENT;
+extern TraceEvent _TRACE_VTD_REG_IR_ROOT_EVENT;
+extern TraceEvent _TRACE_VTD_REG_WRITE_GCMD_EVENT;
+extern TraceEvent _TRACE_VTD_REG_WRITE_FECTL_EVENT;
+extern TraceEvent _TRACE_VTD_REG_WRITE_IECTL_EVENT;
+extern TraceEvent _TRACE_VTD_REG_ICS_CLEAR_IP_EVENT;
+extern TraceEvent _TRACE_VTD_DMAR_TRANSLATE_EVENT;
+extern TraceEvent _TRACE_VTD_DMAR_ENABLE_EVENT;
+extern TraceEvent _TRACE_VTD_DMAR_FAULT_EVENT;
+extern TraceEvent _TRACE_VTD_IR_ENABLE_EVENT;
+extern TraceEvent _TRACE_VTD_IR_IRTE_GET_EVENT;
+extern TraceEvent _TRACE_VTD_IR_REMAP_EVENT;
+extern TraceEvent _TRACE_VTD_IR_REMAP_TYPE_EVENT;
+extern TraceEvent _TRACE_VTD_IR_REMAP_MSI_EVENT;
+extern TraceEvent _TRACE_VTD_IR_REMAP_MSI_REQ_EVENT;
+extern TraceEvent _TRACE_VTD_FSTS_PPF_EVENT;
+extern TraceEvent _TRACE_VTD_FSTS_CLEAR_IP_EVENT;
+extern TraceEvent _TRACE_VTD_FRR_NEW_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_DMAR_TRANSLATE_EVENT;
+extern TraceEvent _TRACE_VTD_WARN_INVALID_QI_TAIL_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_QI_DISABLE_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_QI_TAIL_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_IRTE_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_IRTE_SID_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_IRTE_SID_BUS_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_IRTE_SVT_EVENT;
+extern TraceEvent _TRACE_VTD_ERR_IR_MSI_INVALID_EVENT;
+extern TraceEvent _TRACE_VTD_WARN_IR_VECTOR_EVENT;
+extern TraceEvent _TRACE_VTD_WARN_IR_TRIGGER_EVENT;
+extern TraceEvent _TRACE_AMDVI_EVNTLOG_FAIL_EVENT;
+extern TraceEvent _TRACE_AMDVI_CACHE_UPDATE_EVENT;
+extern TraceEvent _TRACE_AMDVI_COMPLETION_WAIT_FAIL_EVENT;
+extern TraceEvent _TRACE_AMDVI_MMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_AMDVI_MMIO_READ_EVENT;
+extern TraceEvent _TRACE_AMDVI_MMIO_READ_INVALID_EVENT;
+extern TraceEvent _TRACE_AMDVI_COMMAND_ERROR_EVENT;
+extern TraceEvent _TRACE_AMDVI_COMMAND_READ_FAIL_EVENT;
+extern TraceEvent _TRACE_AMDVI_COMMAND_EXEC_EVENT;
+extern TraceEvent _TRACE_AMDVI_UNHANDLED_COMMAND_EVENT;
+extern TraceEvent _TRACE_AMDVI_INTR_INVAL_EVENT;
+extern TraceEvent _TRACE_AMDVI_IOTLB_INVAL_EVENT;
+extern TraceEvent _TRACE_AMDVI_PREFETCH_PAGES_EVENT;
+extern TraceEvent _TRACE_AMDVI_PAGES_INVAL_EVENT;
+extern TraceEvent _TRACE_AMDVI_ALL_INVAL_EVENT;
+extern TraceEvent _TRACE_AMDVI_PPR_EXEC_EVENT;
+extern TraceEvent _TRACE_AMDVI_DEVTAB_INVAL_EVENT;
+extern TraceEvent _TRACE_AMDVI_COMPLETION_WAIT_EVENT;
+extern TraceEvent _TRACE_AMDVI_CONTROL_STATUS_EVENT;
+extern TraceEvent _TRACE_AMDVI_IOTLB_RESET_EVENT;
+extern TraceEvent _TRACE_AMDVI_DTE_GET_FAIL_EVENT;
+extern TraceEvent _TRACE_AMDVI_INVALID_DTE_EVENT;
+extern TraceEvent _TRACE_AMDVI_GET_PTE_HWERROR_EVENT;
+extern TraceEvent _TRACE_AMDVI_MODE_INVALID_EVENT;
+extern TraceEvent _TRACE_AMDVI_PAGE_FAULT_EVENT;
+extern TraceEvent _TRACE_AMDVI_IOTLB_HIT_EVENT;
+extern TraceEvent _TRACE_AMDVI_TRANSLATION_RESULT_EVENT;
+extern TraceEvent _TRACE_VMPORT_REGISTER_EVENT;
+extern TraceEvent _TRACE_VMPORT_COMMAND_EVENT;
+extern uint16_t _TRACE_X86_IOMMU_IEC_NOTIFY_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_CC_DOMAIN_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_CC_GLOBAL_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_CC_DEVICE_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_CC_DEVICES_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_CC_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_IOTLB_GLOBAL_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_IOTLB_DOMAIN_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_IOTLB_PAGES_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_IOTLB_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_WAIT_SW_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_WAIT_IRQ_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_WAIT_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_DSTATE;
+extern uint16_t _TRACE_VTD_INV_DESC_IEC_DSTATE;
+extern uint16_t _TRACE_VTD_INV_QI_ENABLE_DSTATE;
+extern uint16_t _TRACE_VTD_INV_QI_SETUP_DSTATE;
+extern uint16_t _TRACE_VTD_INV_QI_HEAD_DSTATE;
+extern uint16_t _TRACE_VTD_INV_QI_TAIL_DSTATE;
+extern uint16_t _TRACE_VTD_INV_QI_FETCH_DSTATE;
+extern uint16_t _TRACE_VTD_CONTEXT_CACHE_RESET_DSTATE;
+extern uint16_t _TRACE_VTD_RE_NOT_PRESENT_DSTATE;
+extern uint16_t _TRACE_VTD_RE_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_CE_NOT_PRESENT_DSTATE;
+extern uint16_t _TRACE_VTD_CE_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_IOTLB_PAGE_HIT_DSTATE;
+extern uint16_t _TRACE_VTD_IOTLB_PAGE_UPDATE_DSTATE;
+extern uint16_t _TRACE_VTD_IOTLB_CC_HIT_DSTATE;
+extern uint16_t _TRACE_VTD_IOTLB_CC_UPDATE_DSTATE;
+extern uint16_t _TRACE_VTD_IOTLB_RESET_DSTATE;
+extern uint16_t _TRACE_VTD_FAULT_DISABLED_DSTATE;
+extern uint16_t _TRACE_VTD_REPLAY_CE_VALID_DSTATE;
+extern uint16_t _TRACE_VTD_REPLAY_CE_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_PAGE_WALK_LEVEL_DSTATE;
+extern uint16_t _TRACE_VTD_PAGE_WALK_ONE_DSTATE;
+extern uint16_t _TRACE_VTD_PAGE_WALK_SKIP_READ_DSTATE;
+extern uint16_t _TRACE_VTD_PAGE_WALK_SKIP_PERM_DSTATE;
+extern uint16_t _TRACE_VTD_PAGE_WALK_SKIP_RESERVE_DSTATE;
+extern uint16_t _TRACE_VTD_SWITCH_ADDRESS_SPACE_DSTATE;
+extern uint16_t _TRACE_VTD_AS_UNMAP_WHOLE_DSTATE;
+extern uint16_t _TRACE_VTD_TRANSLATE_PT_DSTATE;
+extern uint16_t _TRACE_VTD_PT_ENABLE_FAST_PATH_DSTATE;
+extern uint16_t _TRACE_VTD_IRQ_GENERATE_DSTATE;
+extern uint16_t _TRACE_VTD_REG_READ_DSTATE;
+extern uint16_t _TRACE_VTD_REG_WRITE_DSTATE;
+extern uint16_t _TRACE_VTD_REG_DMAR_ROOT_DSTATE;
+extern uint16_t _TRACE_VTD_REG_IR_ROOT_DSTATE;
+extern uint16_t _TRACE_VTD_REG_WRITE_GCMD_DSTATE;
+extern uint16_t _TRACE_VTD_REG_WRITE_FECTL_DSTATE;
+extern uint16_t _TRACE_VTD_REG_WRITE_IECTL_DSTATE;
+extern uint16_t _TRACE_VTD_REG_ICS_CLEAR_IP_DSTATE;
+extern uint16_t _TRACE_VTD_DMAR_TRANSLATE_DSTATE;
+extern uint16_t _TRACE_VTD_DMAR_ENABLE_DSTATE;
+extern uint16_t _TRACE_VTD_DMAR_FAULT_DSTATE;
+extern uint16_t _TRACE_VTD_IR_ENABLE_DSTATE;
+extern uint16_t _TRACE_VTD_IR_IRTE_GET_DSTATE;
+extern uint16_t _TRACE_VTD_IR_REMAP_DSTATE;
+extern uint16_t _TRACE_VTD_IR_REMAP_TYPE_DSTATE;
+extern uint16_t _TRACE_VTD_IR_REMAP_MSI_DSTATE;
+extern uint16_t _TRACE_VTD_IR_REMAP_MSI_REQ_DSTATE;
+extern uint16_t _TRACE_VTD_FSTS_PPF_DSTATE;
+extern uint16_t _TRACE_VTD_FSTS_CLEAR_IP_DSTATE;
+extern uint16_t _TRACE_VTD_FRR_NEW_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_DMAR_TRANSLATE_DSTATE;
+extern uint16_t _TRACE_VTD_WARN_INVALID_QI_TAIL_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_QI_DISABLE_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_QI_TAIL_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_IRTE_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_IRTE_SID_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_IRTE_SID_BUS_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_IRTE_SVT_DSTATE;
+extern uint16_t _TRACE_VTD_ERR_IR_MSI_INVALID_DSTATE;
+extern uint16_t _TRACE_VTD_WARN_IR_VECTOR_DSTATE;
+extern uint16_t _TRACE_VTD_WARN_IR_TRIGGER_DSTATE;
+extern uint16_t _TRACE_AMDVI_EVNTLOG_FAIL_DSTATE;
+extern uint16_t _TRACE_AMDVI_CACHE_UPDATE_DSTATE;
+extern uint16_t _TRACE_AMDVI_COMPLETION_WAIT_FAIL_DSTATE;
+extern uint16_t _TRACE_AMDVI_MMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_AMDVI_MMIO_READ_DSTATE;
+extern uint16_t _TRACE_AMDVI_MMIO_READ_INVALID_DSTATE;
+extern uint16_t _TRACE_AMDVI_COMMAND_ERROR_DSTATE;
+extern uint16_t _TRACE_AMDVI_COMMAND_READ_FAIL_DSTATE;
+extern uint16_t _TRACE_AMDVI_COMMAND_EXEC_DSTATE;
+extern uint16_t _TRACE_AMDVI_UNHANDLED_COMMAND_DSTATE;
+extern uint16_t _TRACE_AMDVI_INTR_INVAL_DSTATE;
+extern uint16_t _TRACE_AMDVI_IOTLB_INVAL_DSTATE;
+extern uint16_t _TRACE_AMDVI_PREFETCH_PAGES_DSTATE;
+extern uint16_t _TRACE_AMDVI_PAGES_INVAL_DSTATE;
+extern uint16_t _TRACE_AMDVI_ALL_INVAL_DSTATE;
+extern uint16_t _TRACE_AMDVI_PPR_EXEC_DSTATE;
+extern uint16_t _TRACE_AMDVI_DEVTAB_INVAL_DSTATE;
+extern uint16_t _TRACE_AMDVI_COMPLETION_WAIT_DSTATE;
+extern uint16_t _TRACE_AMDVI_CONTROL_STATUS_DSTATE;
+extern uint16_t _TRACE_AMDVI_IOTLB_RESET_DSTATE;
+extern uint16_t _TRACE_AMDVI_DTE_GET_FAIL_DSTATE;
+extern uint16_t _TRACE_AMDVI_INVALID_DTE_DSTATE;
+extern uint16_t _TRACE_AMDVI_GET_PTE_HWERROR_DSTATE;
+extern uint16_t _TRACE_AMDVI_MODE_INVALID_DSTATE;
+extern uint16_t _TRACE_AMDVI_PAGE_FAULT_DSTATE;
+extern uint16_t _TRACE_AMDVI_IOTLB_HIT_DSTATE;
+extern uint16_t _TRACE_AMDVI_TRANSLATION_RESULT_DSTATE;
+extern uint16_t _TRACE_VMPORT_REGISTER_DSTATE;
+extern uint16_t _TRACE_VMPORT_COMMAND_DSTATE;
+#define TRACE_X86_IOMMU_IEC_NOTIFY_ENABLED 1
+#define TRACE_VTD_INV_DESC_ENABLED 1
+#define TRACE_VTD_INV_DESC_INVALID_ENABLED 1
+#define TRACE_VTD_INV_DESC_CC_DOMAIN_ENABLED 1
+#define TRACE_VTD_INV_DESC_CC_GLOBAL_ENABLED 1
+#define TRACE_VTD_INV_DESC_CC_DEVICE_ENABLED 1
+#define TRACE_VTD_INV_DESC_CC_DEVICES_ENABLED 1
+#define TRACE_VTD_INV_DESC_CC_INVALID_ENABLED 1
+#define TRACE_VTD_INV_DESC_IOTLB_GLOBAL_ENABLED 1
+#define TRACE_VTD_INV_DESC_IOTLB_DOMAIN_ENABLED 1
+#define TRACE_VTD_INV_DESC_IOTLB_PAGES_ENABLED 1
+#define TRACE_VTD_INV_DESC_IOTLB_INVALID_ENABLED 1
+#define TRACE_VTD_INV_DESC_WAIT_SW_ENABLED 1
+#define TRACE_VTD_INV_DESC_WAIT_IRQ_ENABLED 1
+#define TRACE_VTD_INV_DESC_WAIT_INVALID_ENABLED 1
+#define TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_ENABLED 1
+#define TRACE_VTD_INV_DESC_IEC_ENABLED 1
+#define TRACE_VTD_INV_QI_ENABLE_ENABLED 1
+#define TRACE_VTD_INV_QI_SETUP_ENABLED 1
+#define TRACE_VTD_INV_QI_HEAD_ENABLED 1
+#define TRACE_VTD_INV_QI_TAIL_ENABLED 1
+#define TRACE_VTD_INV_QI_FETCH_ENABLED 1
+#define TRACE_VTD_CONTEXT_CACHE_RESET_ENABLED 1
+#define TRACE_VTD_RE_NOT_PRESENT_ENABLED 1
+#define TRACE_VTD_RE_INVALID_ENABLED 1
+#define TRACE_VTD_CE_NOT_PRESENT_ENABLED 1
+#define TRACE_VTD_CE_INVALID_ENABLED 1
+#define TRACE_VTD_IOTLB_PAGE_HIT_ENABLED 1
+#define TRACE_VTD_IOTLB_PAGE_UPDATE_ENABLED 1
+#define TRACE_VTD_IOTLB_CC_HIT_ENABLED 1
+#define TRACE_VTD_IOTLB_CC_UPDATE_ENABLED 1
+#define TRACE_VTD_IOTLB_RESET_ENABLED 1
+#define TRACE_VTD_FAULT_DISABLED_ENABLED 1
+#define TRACE_VTD_REPLAY_CE_VALID_ENABLED 1
+#define TRACE_VTD_REPLAY_CE_INVALID_ENABLED 1
+#define TRACE_VTD_PAGE_WALK_LEVEL_ENABLED 1
+#define TRACE_VTD_PAGE_WALK_ONE_ENABLED 1
+#define TRACE_VTD_PAGE_WALK_SKIP_READ_ENABLED 1
+#define TRACE_VTD_PAGE_WALK_SKIP_PERM_ENABLED 1
+#define TRACE_VTD_PAGE_WALK_SKIP_RESERVE_ENABLED 1
+#define TRACE_VTD_SWITCH_ADDRESS_SPACE_ENABLED 1
+#define TRACE_VTD_AS_UNMAP_WHOLE_ENABLED 1
+#define TRACE_VTD_TRANSLATE_PT_ENABLED 1
+#define TRACE_VTD_PT_ENABLE_FAST_PATH_ENABLED 1
+#define TRACE_VTD_IRQ_GENERATE_ENABLED 1
+#define TRACE_VTD_REG_READ_ENABLED 1
+#define TRACE_VTD_REG_WRITE_ENABLED 1
+#define TRACE_VTD_REG_DMAR_ROOT_ENABLED 1
+#define TRACE_VTD_REG_IR_ROOT_ENABLED 1
+#define TRACE_VTD_REG_WRITE_GCMD_ENABLED 1
+#define TRACE_VTD_REG_WRITE_FECTL_ENABLED 1
+#define TRACE_VTD_REG_WRITE_IECTL_ENABLED 1
+#define TRACE_VTD_REG_ICS_CLEAR_IP_ENABLED 1
+#define TRACE_VTD_DMAR_TRANSLATE_ENABLED 1
+#define TRACE_VTD_DMAR_ENABLE_ENABLED 1
+#define TRACE_VTD_DMAR_FAULT_ENABLED 1
+#define TRACE_VTD_IR_ENABLE_ENABLED 1
+#define TRACE_VTD_IR_IRTE_GET_ENABLED 1
+#define TRACE_VTD_IR_REMAP_ENABLED 1
+#define TRACE_VTD_IR_REMAP_TYPE_ENABLED 1
+#define TRACE_VTD_IR_REMAP_MSI_ENABLED 1
+#define TRACE_VTD_IR_REMAP_MSI_REQ_ENABLED 1
+#define TRACE_VTD_FSTS_PPF_ENABLED 1
+#define TRACE_VTD_FSTS_CLEAR_IP_ENABLED 1
+#define TRACE_VTD_FRR_NEW_ENABLED 1
+#define TRACE_VTD_ERR_ENABLED 1
+#define TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_ENABLED 1
+#define TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_ENABLED 1
+#define TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_ENABLED 1
+#define TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_ENABLED 1
+#define TRACE_VTD_ERR_DMAR_TRANSLATE_ENABLED 1
+#define TRACE_VTD_WARN_INVALID_QI_TAIL_ENABLED 1
+#define TRACE_VTD_ERR_QI_DISABLE_ENABLED 1
+#define TRACE_VTD_ERR_QI_TAIL_ENABLED 1
+#define TRACE_VTD_ERR_IRTE_ENABLED 1
+#define TRACE_VTD_ERR_IRTE_SID_ENABLED 1
+#define TRACE_VTD_ERR_IRTE_SID_BUS_ENABLED 1
+#define TRACE_VTD_ERR_IRTE_SVT_ENABLED 1
+#define TRACE_VTD_ERR_IR_MSI_INVALID_ENABLED 1
+#define TRACE_VTD_WARN_IR_VECTOR_ENABLED 1
+#define TRACE_VTD_WARN_IR_TRIGGER_ENABLED 1
+#define TRACE_AMDVI_EVNTLOG_FAIL_ENABLED 1
+#define TRACE_AMDVI_CACHE_UPDATE_ENABLED 1
+#define TRACE_AMDVI_COMPLETION_WAIT_FAIL_ENABLED 1
+#define TRACE_AMDVI_MMIO_WRITE_ENABLED 1
+#define TRACE_AMDVI_MMIO_READ_ENABLED 1
+#define TRACE_AMDVI_MMIO_READ_INVALID_ENABLED 1
+#define TRACE_AMDVI_COMMAND_ERROR_ENABLED 1
+#define TRACE_AMDVI_COMMAND_READ_FAIL_ENABLED 1
+#define TRACE_AMDVI_COMMAND_EXEC_ENABLED 1
+#define TRACE_AMDVI_UNHANDLED_COMMAND_ENABLED 1
+#define TRACE_AMDVI_INTR_INVAL_ENABLED 1
+#define TRACE_AMDVI_IOTLB_INVAL_ENABLED 1
+#define TRACE_AMDVI_PREFETCH_PAGES_ENABLED 1
+#define TRACE_AMDVI_PAGES_INVAL_ENABLED 1
+#define TRACE_AMDVI_ALL_INVAL_ENABLED 1
+#define TRACE_AMDVI_PPR_EXEC_ENABLED 1
+#define TRACE_AMDVI_DEVTAB_INVAL_ENABLED 1
+#define TRACE_AMDVI_COMPLETION_WAIT_ENABLED 1
+#define TRACE_AMDVI_CONTROL_STATUS_ENABLED 1
+#define TRACE_AMDVI_IOTLB_RESET_ENABLED 1
+#define TRACE_AMDVI_DTE_GET_FAIL_ENABLED 1
+#define TRACE_AMDVI_INVALID_DTE_ENABLED 1
+#define TRACE_AMDVI_GET_PTE_HWERROR_ENABLED 1
+#define TRACE_AMDVI_MODE_INVALID_ENABLED 1
+#define TRACE_AMDVI_PAGE_FAULT_ENABLED 1
+#define TRACE_AMDVI_IOTLB_HIT_ENABLED 1
+#define TRACE_AMDVI_TRANSLATION_RESULT_ENABLED 1
+#define TRACE_VMPORT_REGISTER_ENABLED 1
+#define TRACE_VMPORT_COMMAND_ENABLED 1
+
+#define TRACE_X86_IOMMU_IEC_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_x86_iommu_iec_notify(bool global, uint32_t index, uint32_t mask)
+{
+}
+
+static inline void trace_x86_iommu_iec_notify(bool global, uint32_t index, uint32_t mask)
+{
+ if (true) {
+ _nocheck__trace_x86_iommu_iec_notify(global, index, mask);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc(const char * type, uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc(const char * type, uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc(type, hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_CC_DOMAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_cc_domain(uint16_t domain)
+{
+}
+
+static inline void trace_vtd_inv_desc_cc_domain(uint16_t domain)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_cc_domain(domain);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_CC_GLOBAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_cc_global(void)
+{
+}
+
+static inline void trace_vtd_inv_desc_cc_global(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_cc_global();
+ }
+}
+
+#define TRACE_VTD_INV_DESC_CC_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_cc_device(uint8_t bus, uint8_t dev, uint8_t fn)
+{
+}
+
+static inline void trace_vtd_inv_desc_cc_device(uint8_t bus, uint8_t dev, uint8_t fn)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_cc_device(bus, dev, fn);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_CC_DEVICES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_cc_devices(uint16_t sid, uint16_t fmask)
+{
+}
+
+static inline void trace_vtd_inv_desc_cc_devices(uint16_t sid, uint16_t fmask)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_cc_devices(sid, fmask);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_CC_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_cc_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc_cc_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_cc_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_IOTLB_GLOBAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_iotlb_global(void)
+{
+}
+
+static inline void trace_vtd_inv_desc_iotlb_global(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_iotlb_global();
+ }
+}
+
+#define TRACE_VTD_INV_DESC_IOTLB_DOMAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_iotlb_domain(uint16_t domain)
+{
+}
+
+static inline void trace_vtd_inv_desc_iotlb_domain(uint16_t domain)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_iotlb_domain(domain);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_IOTLB_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_iotlb_pages(uint16_t domain, uint64_t addr, uint8_t mask)
+{
+}
+
+static inline void trace_vtd_inv_desc_iotlb_pages(uint16_t domain, uint64_t addr, uint8_t mask)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_iotlb_pages(domain, addr, mask);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_IOTLB_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_iotlb_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc_iotlb_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_iotlb_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_WAIT_SW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_wait_sw(uint64_t addr, uint32_t data)
+{
+}
+
+static inline void trace_vtd_inv_desc_wait_sw(uint64_t addr, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_wait_sw(addr, data);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_WAIT_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_wait_irq(const char * msg)
+{
+}
+
+static inline void trace_vtd_inv_desc_wait_irq(const char * msg)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_wait_irq(msg);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_WAIT_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_wait_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc_wait_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_wait_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_WAIT_WRITE_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_wait_write_fail(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_inv_desc_wait_write_fail(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_wait_write_fail(hi, lo);
+ }
+}
+
+#define TRACE_VTD_INV_DESC_IEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_desc_iec(uint32_t granularity, uint32_t index, uint32_t mask)
+{
+}
+
+static inline void trace_vtd_inv_desc_iec(uint32_t granularity, uint32_t index, uint32_t mask)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_desc_iec(granularity, index, mask);
+ }
+}
+
+#define TRACE_VTD_INV_QI_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_qi_enable(bool enable)
+{
+}
+
+static inline void trace_vtd_inv_qi_enable(bool enable)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_qi_enable(enable);
+ }
+}
+
+#define TRACE_VTD_INV_QI_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_qi_setup(uint64_t addr, int size)
+{
+}
+
+static inline void trace_vtd_inv_qi_setup(uint64_t addr, int size)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_qi_setup(addr, size);
+ }
+}
+
+#define TRACE_VTD_INV_QI_HEAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_qi_head(uint16_t head)
+{
+}
+
+static inline void trace_vtd_inv_qi_head(uint16_t head)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_qi_head(head);
+ }
+}
+
+#define TRACE_VTD_INV_QI_TAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_qi_tail(uint16_t head)
+{
+}
+
+static inline void trace_vtd_inv_qi_tail(uint16_t head)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_qi_tail(head);
+ }
+}
+
+#define TRACE_VTD_INV_QI_FETCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_inv_qi_fetch(void)
+{
+}
+
+static inline void trace_vtd_inv_qi_fetch(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_inv_qi_fetch();
+ }
+}
+
+#define TRACE_VTD_CONTEXT_CACHE_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_context_cache_reset(void)
+{
+}
+
+static inline void trace_vtd_context_cache_reset(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_context_cache_reset();
+ }
+}
+
+#define TRACE_VTD_RE_NOT_PRESENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_re_not_present(uint8_t bus)
+{
+}
+
+static inline void trace_vtd_re_not_present(uint8_t bus)
+{
+ if (true) {
+ _nocheck__trace_vtd_re_not_present(bus);
+ }
+}
+
+#define TRACE_VTD_RE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_re_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_re_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_re_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_CE_NOT_PRESENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ce_not_present(uint8_t bus, uint8_t devfn)
+{
+}
+
+static inline void trace_vtd_ce_not_present(uint8_t bus, uint8_t devfn)
+{
+ if (true) {
+ _nocheck__trace_vtd_ce_not_present(bus, devfn);
+ }
+}
+
+#define TRACE_VTD_CE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ce_invalid(uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_ce_invalid(uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_ce_invalid(hi, lo);
+ }
+}
+
+#define TRACE_VTD_IOTLB_PAGE_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_iotlb_page_hit(uint16_t sid, uint64_t addr, uint64_t slpte, uint16_t domain)
+{
+}
+
+static inline void trace_vtd_iotlb_page_hit(uint16_t sid, uint64_t addr, uint64_t slpte, uint16_t domain)
+{
+ if (true) {
+ _nocheck__trace_vtd_iotlb_page_hit(sid, addr, slpte, domain);
+ }
+}
+
+#define TRACE_VTD_IOTLB_PAGE_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_iotlb_page_update(uint16_t sid, uint64_t addr, uint64_t slpte, uint16_t domain)
+{
+}
+
+static inline void trace_vtd_iotlb_page_update(uint16_t sid, uint64_t addr, uint64_t slpte, uint16_t domain)
+{
+ if (true) {
+ _nocheck__trace_vtd_iotlb_page_update(sid, addr, slpte, domain);
+ }
+}
+
+#define TRACE_VTD_IOTLB_CC_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_iotlb_cc_hit(uint8_t bus, uint8_t devfn, uint64_t high, uint64_t low, uint32_t gen)
+{
+}
+
+static inline void trace_vtd_iotlb_cc_hit(uint8_t bus, uint8_t devfn, uint64_t high, uint64_t low, uint32_t gen)
+{
+ if (true) {
+ _nocheck__trace_vtd_iotlb_cc_hit(bus, devfn, high, low, gen);
+ }
+}
+
+#define TRACE_VTD_IOTLB_CC_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_iotlb_cc_update(uint8_t bus, uint8_t devfn, uint64_t high, uint64_t low, uint32_t gen1, uint32_t gen2)
+{
+}
+
+static inline void trace_vtd_iotlb_cc_update(uint8_t bus, uint8_t devfn, uint64_t high, uint64_t low, uint32_t gen1, uint32_t gen2)
+{
+ if (true) {
+ _nocheck__trace_vtd_iotlb_cc_update(bus, devfn, high, low, gen1, gen2);
+ }
+}
+
+#define TRACE_VTD_IOTLB_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_iotlb_reset(const char * reason)
+{
+}
+
+static inline void trace_vtd_iotlb_reset(const char * reason)
+{
+ if (true) {
+ _nocheck__trace_vtd_iotlb_reset(reason);
+ }
+}
+
+#define TRACE_VTD_FAULT_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_fault_disabled(void)
+{
+}
+
+static inline void trace_vtd_fault_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_fault_disabled();
+ }
+}
+
+#define TRACE_VTD_REPLAY_CE_VALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_replay_ce_valid(uint8_t bus, uint8_t dev, uint8_t fn, uint16_t domain, uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_replay_ce_valid(uint8_t bus, uint8_t dev, uint8_t fn, uint16_t domain, uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_replay_ce_valid(bus, dev, fn, domain, hi, lo);
+ }
+}
+
+#define TRACE_VTD_REPLAY_CE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_replay_ce_invalid(uint8_t bus, uint8_t dev, uint8_t fn)
+{
+}
+
+static inline void trace_vtd_replay_ce_invalid(uint8_t bus, uint8_t dev, uint8_t fn)
+{
+ if (true) {
+ _nocheck__trace_vtd_replay_ce_invalid(bus, dev, fn);
+ }
+}
+
+#define TRACE_VTD_PAGE_WALK_LEVEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_page_walk_level(uint64_t addr, uint32_t level, uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vtd_page_walk_level(uint64_t addr, uint32_t level, uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vtd_page_walk_level(addr, level, start, end);
+ }
+}
+
+#define TRACE_VTD_PAGE_WALK_ONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_page_walk_one(uint32_t level, uint64_t iova, uint64_t gpa, uint64_t mask, int perm)
+{
+}
+
+static inline void trace_vtd_page_walk_one(uint32_t level, uint64_t iova, uint64_t gpa, uint64_t mask, int perm)
+{
+ if (true) {
+ _nocheck__trace_vtd_page_walk_one(level, iova, gpa, mask, perm);
+ }
+}
+
+#define TRACE_VTD_PAGE_WALK_SKIP_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_page_walk_skip_read(uint64_t iova, uint64_t next)
+{
+}
+
+static inline void trace_vtd_page_walk_skip_read(uint64_t iova, uint64_t next)
+{
+ if (true) {
+ _nocheck__trace_vtd_page_walk_skip_read(iova, next);
+ }
+}
+
+#define TRACE_VTD_PAGE_WALK_SKIP_PERM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_page_walk_skip_perm(uint64_t iova, uint64_t next)
+{
+}
+
+static inline void trace_vtd_page_walk_skip_perm(uint64_t iova, uint64_t next)
+{
+ if (true) {
+ _nocheck__trace_vtd_page_walk_skip_perm(iova, next);
+ }
+}
+
+#define TRACE_VTD_PAGE_WALK_SKIP_RESERVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_page_walk_skip_reserve(uint64_t iova, uint64_t next)
+{
+}
+
+static inline void trace_vtd_page_walk_skip_reserve(uint64_t iova, uint64_t next)
+{
+ if (true) {
+ _nocheck__trace_vtd_page_walk_skip_reserve(iova, next);
+ }
+}
+
+#define TRACE_VTD_SWITCH_ADDRESS_SPACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_switch_address_space(uint8_t bus, uint8_t slot, uint8_t fn, bool on)
+{
+}
+
+static inline void trace_vtd_switch_address_space(uint8_t bus, uint8_t slot, uint8_t fn, bool on)
+{
+ if (true) {
+ _nocheck__trace_vtd_switch_address_space(bus, slot, fn, on);
+ }
+}
+
+#define TRACE_VTD_AS_UNMAP_WHOLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_as_unmap_whole(uint8_t bus, uint8_t slot, uint8_t fn, uint64_t iova, uint64_t size)
+{
+}
+
+static inline void trace_vtd_as_unmap_whole(uint8_t bus, uint8_t slot, uint8_t fn, uint64_t iova, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_vtd_as_unmap_whole(bus, slot, fn, iova, size);
+ }
+}
+
+#define TRACE_VTD_TRANSLATE_PT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_translate_pt(uint16_t sid, uint64_t addr)
+{
+}
+
+static inline void trace_vtd_translate_pt(uint16_t sid, uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_vtd_translate_pt(sid, addr);
+ }
+}
+
+#define TRACE_VTD_PT_ENABLE_FAST_PATH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_pt_enable_fast_path(uint16_t sid, bool success)
+{
+}
+
+static inline void trace_vtd_pt_enable_fast_path(uint16_t sid, bool success)
+{
+ if (true) {
+ _nocheck__trace_vtd_pt_enable_fast_path(sid, success);
+ }
+}
+
+#define TRACE_VTD_IRQ_GENERATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_irq_generate(uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_vtd_irq_generate(uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vtd_irq_generate(addr, data);
+ }
+}
+
+#define TRACE_VTD_REG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_read(uint64_t addr, uint64_t size)
+{
+}
+
+static inline void trace_vtd_reg_read(uint64_t addr, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_read(addr, size);
+ }
+}
+
+#define TRACE_VTD_REG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_write(uint64_t addr, uint64_t size, uint64_t val)
+{
+}
+
+static inline void trace_vtd_reg_write(uint64_t addr, uint64_t size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_write(addr, size, val);
+ }
+}
+
+#define TRACE_VTD_REG_DMAR_ROOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_dmar_root(uint64_t addr, bool extended)
+{
+}
+
+static inline void trace_vtd_reg_dmar_root(uint64_t addr, bool extended)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_dmar_root(addr, extended);
+ }
+}
+
+#define TRACE_VTD_REG_IR_ROOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_ir_root(uint64_t addr, uint32_t size)
+{
+}
+
+static inline void trace_vtd_reg_ir_root(uint64_t addr, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_ir_root(addr, size);
+ }
+}
+
+#define TRACE_VTD_REG_WRITE_GCMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_write_gcmd(uint32_t status, uint32_t val)
+{
+}
+
+static inline void trace_vtd_reg_write_gcmd(uint32_t status, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_write_gcmd(status, val);
+ }
+}
+
+#define TRACE_VTD_REG_WRITE_FECTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_write_fectl(uint32_t value)
+{
+}
+
+static inline void trace_vtd_reg_write_fectl(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_write_fectl(value);
+ }
+}
+
+#define TRACE_VTD_REG_WRITE_IECTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_write_iectl(uint32_t value)
+{
+}
+
+static inline void trace_vtd_reg_write_iectl(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_write_iectl(value);
+ }
+}
+
+#define TRACE_VTD_REG_ICS_CLEAR_IP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_reg_ics_clear_ip(void)
+{
+}
+
+static inline void trace_vtd_reg_ics_clear_ip(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_reg_ics_clear_ip();
+ }
+}
+
+#define TRACE_VTD_DMAR_TRANSLATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_dmar_translate(uint8_t bus, uint8_t slot, uint8_t func, uint64_t iova, uint64_t gpa, uint64_t mask)
+{
+}
+
+static inline void trace_vtd_dmar_translate(uint8_t bus, uint8_t slot, uint8_t func, uint64_t iova, uint64_t gpa, uint64_t mask)
+{
+ if (true) {
+ _nocheck__trace_vtd_dmar_translate(bus, slot, func, iova, gpa, mask);
+ }
+}
+
+#define TRACE_VTD_DMAR_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_dmar_enable(bool en)
+{
+}
+
+static inline void trace_vtd_dmar_enable(bool en)
+{
+ if (true) {
+ _nocheck__trace_vtd_dmar_enable(en);
+ }
+}
+
+#define TRACE_VTD_DMAR_FAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_dmar_fault(uint16_t sid, int fault, uint64_t addr, bool is_write)
+{
+}
+
+static inline void trace_vtd_dmar_fault(uint16_t sid, int fault, uint64_t addr, bool is_write)
+{
+ if (true) {
+ _nocheck__trace_vtd_dmar_fault(sid, fault, addr, is_write);
+ }
+}
+
+#define TRACE_VTD_IR_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_enable(bool en)
+{
+}
+
+static inline void trace_vtd_ir_enable(bool en)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_enable(en);
+ }
+}
+
+#define TRACE_VTD_IR_IRTE_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_irte_get(int index, uint64_t lo, uint64_t hi)
+{
+}
+
+static inline void trace_vtd_ir_irte_get(int index, uint64_t lo, uint64_t hi)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_irte_get(index, lo, hi);
+ }
+}
+
+#define TRACE_VTD_IR_REMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_remap(int index, int tri, int vec, int deliver, uint32_t dest, int dest_mode)
+{
+}
+
+static inline void trace_vtd_ir_remap(int index, int tri, int vec, int deliver, uint32_t dest, int dest_mode)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_remap(index, tri, vec, deliver, dest, dest_mode);
+ }
+}
+
+#define TRACE_VTD_IR_REMAP_TYPE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_remap_type(const char * type)
+{
+}
+
+static inline void trace_vtd_ir_remap_type(const char * type)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_remap_type(type);
+ }
+}
+
+#define TRACE_VTD_IR_REMAP_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_remap_msi(uint64_t addr, uint64_t data, uint64_t addr2, uint64_t data2)
+{
+}
+
+static inline void trace_vtd_ir_remap_msi(uint64_t addr, uint64_t data, uint64_t addr2, uint64_t data2)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_remap_msi(addr, data, addr2, data2);
+ }
+}
+
+#define TRACE_VTD_IR_REMAP_MSI_REQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_ir_remap_msi_req(uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_vtd_ir_remap_msi_req(uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vtd_ir_remap_msi_req(addr, data);
+ }
+}
+
+#define TRACE_VTD_FSTS_PPF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_fsts_ppf(bool set)
+{
+}
+
+static inline void trace_vtd_fsts_ppf(bool set)
+{
+ if (true) {
+ _nocheck__trace_vtd_fsts_ppf(set);
+ }
+}
+
+#define TRACE_VTD_FSTS_CLEAR_IP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_fsts_clear_ip(void)
+{
+}
+
+static inline void trace_vtd_fsts_clear_ip(void)
+{
+ if (true) {
+ _nocheck__trace_vtd_fsts_clear_ip();
+ }
+}
+
+#define TRACE_VTD_FRR_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_frr_new(int index, uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_vtd_frr_new(int index, uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_vtd_frr_new(index, hi, lo);
+ }
+}
+
+#define TRACE_VTD_ERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err(const char * str)
+{
+}
+
+static inline void trace_vtd_err(const char * str)
+{
+ if (true) {
+ _nocheck__trace_vtd_err(str);
+ }
+}
+
+#define TRACE_VTD_ERR_DMAR_IOVA_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_dmar_iova_overflow(uint64_t iova)
+{
+}
+
+static inline void trace_vtd_err_dmar_iova_overflow(uint64_t iova)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_dmar_iova_overflow(iova);
+ }
+}
+
+#define TRACE_VTD_ERR_DMAR_SLPTE_READ_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_dmar_slpte_read_error(uint64_t iova, int level)
+{
+}
+
+static inline void trace_vtd_err_dmar_slpte_read_error(uint64_t iova, int level)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_dmar_slpte_read_error(iova, level);
+ }
+}
+
+#define TRACE_VTD_ERR_DMAR_SLPTE_PERM_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_dmar_slpte_perm_error(uint64_t iova, int level, uint64_t slpte, bool is_write)
+{
+}
+
+static inline void trace_vtd_err_dmar_slpte_perm_error(uint64_t iova, int level, uint64_t slpte, bool is_write)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_dmar_slpte_perm_error(iova, level, slpte, is_write);
+ }
+}
+
+#define TRACE_VTD_ERR_DMAR_SLPTE_RESV_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_dmar_slpte_resv_error(uint64_t iova, int level, uint64_t slpte)
+{
+}
+
+static inline void trace_vtd_err_dmar_slpte_resv_error(uint64_t iova, int level, uint64_t slpte)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_dmar_slpte_resv_error(iova, level, slpte);
+ }
+}
+
+#define TRACE_VTD_ERR_DMAR_TRANSLATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_dmar_translate(uint8_t bus, uint8_t slot, uint8_t func, uint64_t iova)
+{
+}
+
+static inline void trace_vtd_err_dmar_translate(uint8_t bus, uint8_t slot, uint8_t func, uint64_t iova)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_dmar_translate(bus, slot, func, iova);
+ }
+}
+
+#define TRACE_VTD_WARN_INVALID_QI_TAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_warn_invalid_qi_tail(uint16_t tail)
+{
+}
+
+static inline void trace_vtd_warn_invalid_qi_tail(uint16_t tail)
+{
+ if (true) {
+ _nocheck__trace_vtd_warn_invalid_qi_tail(tail);
+ }
+}
+
+#define TRACE_VTD_ERR_QI_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_qi_disable(uint16_t head, uint16_t tail, int type)
+{
+}
+
+static inline void trace_vtd_err_qi_disable(uint16_t head, uint16_t tail, int type)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_qi_disable(head, tail, type);
+ }
+}
+
+#define TRACE_VTD_ERR_QI_TAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_qi_tail(uint16_t tail, uint16_t size)
+{
+}
+
+static inline void trace_vtd_err_qi_tail(uint16_t tail, uint16_t size)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_qi_tail(tail, size);
+ }
+}
+
+#define TRACE_VTD_ERR_IRTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_irte(int index, uint64_t lo, uint64_t hi)
+{
+}
+
+static inline void trace_vtd_err_irte(int index, uint64_t lo, uint64_t hi)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_irte(index, lo, hi);
+ }
+}
+
+#define TRACE_VTD_ERR_IRTE_SID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_irte_sid(int index, uint16_t req, uint16_t target)
+{
+}
+
+static inline void trace_vtd_err_irte_sid(int index, uint16_t req, uint16_t target)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_irte_sid(index, req, target);
+ }
+}
+
+#define TRACE_VTD_ERR_IRTE_SID_BUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_irte_sid_bus(int index, uint8_t bus, uint8_t min, uint8_t max)
+{
+}
+
+static inline void trace_vtd_err_irte_sid_bus(int index, uint8_t bus, uint8_t min, uint8_t max)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_irte_sid_bus(index, bus, min, max);
+ }
+}
+
+#define TRACE_VTD_ERR_IRTE_SVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_irte_svt(int index, int type)
+{
+}
+
+static inline void trace_vtd_err_irte_svt(int index, int type)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_irte_svt(index, type);
+ }
+}
+
+#define TRACE_VTD_ERR_IR_MSI_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_err_ir_msi_invalid(uint16_t sid, uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_vtd_err_ir_msi_invalid(uint16_t sid, uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vtd_err_ir_msi_invalid(sid, addr, data);
+ }
+}
+
+#define TRACE_VTD_WARN_IR_VECTOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_warn_ir_vector(uint16_t sid, int index, int vec, int target)
+{
+}
+
+static inline void trace_vtd_warn_ir_vector(uint16_t sid, int index, int vec, int target)
+{
+ if (true) {
+ _nocheck__trace_vtd_warn_ir_vector(sid, index, vec, target);
+ }
+}
+
+#define TRACE_VTD_WARN_IR_TRIGGER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vtd_warn_ir_trigger(uint16_t sid, int index, int trig, int target)
+{
+}
+
+static inline void trace_vtd_warn_ir_trigger(uint16_t sid, int index, int trig, int target)
+{
+ if (true) {
+ _nocheck__trace_vtd_warn_ir_trigger(sid, index, trig, target);
+ }
+}
+
+#define TRACE_AMDVI_EVNTLOG_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_evntlog_fail(uint64_t addr, uint32_t head)
+{
+}
+
+static inline void trace_amdvi_evntlog_fail(uint64_t addr, uint32_t head)
+{
+ if (true) {
+ _nocheck__trace_amdvi_evntlog_fail(addr, head);
+ }
+}
+
+#define TRACE_AMDVI_CACHE_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_cache_update(uint16_t domid, uint8_t bus, uint8_t slot, uint8_t func, uint64_t gpa, uint64_t txaddr)
+{
+}
+
+static inline void trace_amdvi_cache_update(uint16_t domid, uint8_t bus, uint8_t slot, uint8_t func, uint64_t gpa, uint64_t txaddr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_cache_update(domid, bus, slot, func, gpa, txaddr);
+ }
+}
+
+#define TRACE_AMDVI_COMPLETION_WAIT_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_completion_wait_fail(uint64_t addr)
+{
+}
+
+static inline void trace_amdvi_completion_wait_fail(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_completion_wait_fail(addr);
+ }
+}
+
+#define TRACE_AMDVI_MMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_mmio_write(const char * reg, uint64_t addr, unsigned size, uint64_t val, uint64_t offset)
+{
+}
+
+static inline void trace_amdvi_mmio_write(const char * reg, uint64_t addr, unsigned size, uint64_t val, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_amdvi_mmio_write(reg, addr, size, val, offset);
+ }
+}
+
+#define TRACE_AMDVI_MMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_mmio_read(const char * reg, uint64_t addr, unsigned size, uint64_t offset)
+{
+}
+
+static inline void trace_amdvi_mmio_read(const char * reg, uint64_t addr, unsigned size, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_amdvi_mmio_read(reg, addr, size, offset);
+ }
+}
+
+#define TRACE_AMDVI_MMIO_READ_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_mmio_read_invalid(int max, uint64_t addr, unsigned size)
+{
+}
+
+static inline void trace_amdvi_mmio_read_invalid(int max, uint64_t addr, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_amdvi_mmio_read_invalid(max, addr, size);
+ }
+}
+
+#define TRACE_AMDVI_COMMAND_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_command_error(uint64_t status)
+{
+}
+
+static inline void trace_amdvi_command_error(uint64_t status)
+{
+ if (true) {
+ _nocheck__trace_amdvi_command_error(status);
+ }
+}
+
+#define TRACE_AMDVI_COMMAND_READ_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_command_read_fail(uint64_t addr, uint32_t head)
+{
+}
+
+static inline void trace_amdvi_command_read_fail(uint64_t addr, uint32_t head)
+{
+ if (true) {
+ _nocheck__trace_amdvi_command_read_fail(addr, head);
+ }
+}
+
+#define TRACE_AMDVI_COMMAND_EXEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_command_exec(uint32_t head, uint32_t tail, uint64_t buf)
+{
+}
+
+static inline void trace_amdvi_command_exec(uint32_t head, uint32_t tail, uint64_t buf)
+{
+ if (true) {
+ _nocheck__trace_amdvi_command_exec(head, tail, buf);
+ }
+}
+
+#define TRACE_AMDVI_UNHANDLED_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_unhandled_command(uint8_t type)
+{
+}
+
+static inline void trace_amdvi_unhandled_command(uint8_t type)
+{
+ if (true) {
+ _nocheck__trace_amdvi_unhandled_command(type);
+ }
+}
+
+#define TRACE_AMDVI_INTR_INVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_intr_inval(void)
+{
+}
+
+static inline void trace_amdvi_intr_inval(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_intr_inval();
+ }
+}
+
+#define TRACE_AMDVI_IOTLB_INVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_iotlb_inval(void)
+{
+}
+
+static inline void trace_amdvi_iotlb_inval(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_iotlb_inval();
+ }
+}
+
+#define TRACE_AMDVI_PREFETCH_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_prefetch_pages(void)
+{
+}
+
+static inline void trace_amdvi_prefetch_pages(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_prefetch_pages();
+ }
+}
+
+#define TRACE_AMDVI_PAGES_INVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_pages_inval(uint16_t domid)
+{
+}
+
+static inline void trace_amdvi_pages_inval(uint16_t domid)
+{
+ if (true) {
+ _nocheck__trace_amdvi_pages_inval(domid);
+ }
+}
+
+#define TRACE_AMDVI_ALL_INVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_all_inval(void)
+{
+}
+
+static inline void trace_amdvi_all_inval(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_all_inval();
+ }
+}
+
+#define TRACE_AMDVI_PPR_EXEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_ppr_exec(void)
+{
+}
+
+static inline void trace_amdvi_ppr_exec(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_ppr_exec();
+ }
+}
+
+#define TRACE_AMDVI_DEVTAB_INVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_devtab_inval(uint8_t bus, uint8_t slot, uint8_t func)
+{
+}
+
+static inline void trace_amdvi_devtab_inval(uint8_t bus, uint8_t slot, uint8_t func)
+{
+ if (true) {
+ _nocheck__trace_amdvi_devtab_inval(bus, slot, func);
+ }
+}
+
+#define TRACE_AMDVI_COMPLETION_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_completion_wait(uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_amdvi_completion_wait(uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_amdvi_completion_wait(addr, data);
+ }
+}
+
+#define TRACE_AMDVI_CONTROL_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_control_status(uint64_t val)
+{
+}
+
+static inline void trace_amdvi_control_status(uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_amdvi_control_status(val);
+ }
+}
+
+#define TRACE_AMDVI_IOTLB_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_iotlb_reset(void)
+{
+}
+
+static inline void trace_amdvi_iotlb_reset(void)
+{
+ if (true) {
+ _nocheck__trace_amdvi_iotlb_reset();
+ }
+}
+
+#define TRACE_AMDVI_DTE_GET_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_dte_get_fail(uint64_t addr, uint32_t offset)
+{
+}
+
+static inline void trace_amdvi_dte_get_fail(uint64_t addr, uint32_t offset)
+{
+ if (true) {
+ _nocheck__trace_amdvi_dte_get_fail(addr, offset);
+ }
+}
+
+#define TRACE_AMDVI_INVALID_DTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_invalid_dte(uint64_t addr)
+{
+}
+
+static inline void trace_amdvi_invalid_dte(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_invalid_dte(addr);
+ }
+}
+
+#define TRACE_AMDVI_GET_PTE_HWERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_get_pte_hwerror(uint64_t addr)
+{
+}
+
+static inline void trace_amdvi_get_pte_hwerror(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_get_pte_hwerror(addr);
+ }
+}
+
+#define TRACE_AMDVI_MODE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_mode_invalid(uint8_t level, uint64_t addr)
+{
+}
+
+static inline void trace_amdvi_mode_invalid(uint8_t level, uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_mode_invalid(level, addr);
+ }
+}
+
+#define TRACE_AMDVI_PAGE_FAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_page_fault(uint64_t addr)
+{
+}
+
+static inline void trace_amdvi_page_fault(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_page_fault(addr);
+ }
+}
+
+#define TRACE_AMDVI_IOTLB_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_iotlb_hit(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr)
+{
+}
+
+static inline void trace_amdvi_iotlb_hit(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_iotlb_hit(bus, slot, func, addr, txaddr);
+ }
+}
+
+#define TRACE_AMDVI_TRANSLATION_RESULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_amdvi_translation_result(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr)
+{
+}
+
+static inline void trace_amdvi_translation_result(uint8_t bus, uint8_t slot, uint8_t func, uint64_t addr, uint64_t txaddr)
+{
+ if (true) {
+ _nocheck__trace_amdvi_translation_result(bus, slot, func, addr, txaddr);
+ }
+}
+
+#define TRACE_VMPORT_REGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmport_register(unsigned char command, void * func, void * opaque)
+{
+}
+
+static inline void trace_vmport_register(unsigned char command, void * func, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_vmport_register(command, func, opaque);
+ }
+}
+
+#define TRACE_VMPORT_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmport_command(unsigned char command)
+{
+}
+
+static inline void trace_vmport_command(unsigned char command)
+{
+ if (true) {
+ _nocheck__trace_vmport_command(command);
+ }
+}
+#endif /* TRACE_HW_I386_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/i386/xen/trace.c b/qemu2-auto-generated/hw/i386/xen/trace.c
new file mode 100644
index 0000000000..5e21c33dd3
--- /dev/null
+++ b/qemu2-auto-generated/hw/i386/xen/trace.c
@@ -0,0 +1,149 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_XEN_PLATFORM_LOG_DSTATE;
+uint16_t _TRACE_XEN_PV_MMIO_READ_DSTATE;
+uint16_t _TRACE_XEN_PV_MMIO_WRITE_DSTATE;
+uint16_t _TRACE_XEN_RAM_ALLOC_DSTATE;
+uint16_t _TRACE_XEN_CLIENT_SET_MEMORY_DSTATE;
+uint16_t _TRACE_HANDLE_IOREQ_DSTATE;
+uint16_t _TRACE_HANDLE_IOREQ_READ_DSTATE;
+uint16_t _TRACE_HANDLE_IOREQ_WRITE_DSTATE;
+uint16_t _TRACE_CPU_IOREQ_PIO_DSTATE;
+uint16_t _TRACE_CPU_IOREQ_PIO_READ_REG_DSTATE;
+uint16_t _TRACE_CPU_IOREQ_PIO_WRITE_REG_DSTATE;
+uint16_t _TRACE_CPU_IOREQ_MOVE_DSTATE;
+uint16_t _TRACE_XEN_MAP_CACHE_DSTATE;
+uint16_t _TRACE_XEN_REMAP_BUCKET_DSTATE;
+uint16_t _TRACE_XEN_MAP_CACHE_RETURN_DSTATE;
+TraceEvent _TRACE_XEN_PLATFORM_LOG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_platform_log",
+ .sstate = TRACE_XEN_PLATFORM_LOG_ENABLED,
+ .dstate = &_TRACE_XEN_PLATFORM_LOG_DSTATE
+};
+TraceEvent _TRACE_XEN_PV_MMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_pv_mmio_read",
+ .sstate = TRACE_XEN_PV_MMIO_READ_ENABLED,
+ .dstate = &_TRACE_XEN_PV_MMIO_READ_DSTATE
+};
+TraceEvent _TRACE_XEN_PV_MMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_pv_mmio_write",
+ .sstate = TRACE_XEN_PV_MMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_XEN_PV_MMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_XEN_RAM_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_ram_alloc",
+ .sstate = TRACE_XEN_RAM_ALLOC_ENABLED,
+ .dstate = &_TRACE_XEN_RAM_ALLOC_DSTATE
+};
+TraceEvent _TRACE_XEN_CLIENT_SET_MEMORY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_client_set_memory",
+ .sstate = TRACE_XEN_CLIENT_SET_MEMORY_ENABLED,
+ .dstate = &_TRACE_XEN_CLIENT_SET_MEMORY_DSTATE
+};
+TraceEvent _TRACE_HANDLE_IOREQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_ioreq",
+ .sstate = TRACE_HANDLE_IOREQ_ENABLED,
+ .dstate = &_TRACE_HANDLE_IOREQ_DSTATE
+};
+TraceEvent _TRACE_HANDLE_IOREQ_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_ioreq_read",
+ .sstate = TRACE_HANDLE_IOREQ_READ_ENABLED,
+ .dstate = &_TRACE_HANDLE_IOREQ_READ_DSTATE
+};
+TraceEvent _TRACE_HANDLE_IOREQ_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_ioreq_write",
+ .sstate = TRACE_HANDLE_IOREQ_WRITE_ENABLED,
+ .dstate = &_TRACE_HANDLE_IOREQ_WRITE_DSTATE
+};
+TraceEvent _TRACE_CPU_IOREQ_PIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_ioreq_pio",
+ .sstate = TRACE_CPU_IOREQ_PIO_ENABLED,
+ .dstate = &_TRACE_CPU_IOREQ_PIO_DSTATE
+};
+TraceEvent _TRACE_CPU_IOREQ_PIO_READ_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_ioreq_pio_read_reg",
+ .sstate = TRACE_CPU_IOREQ_PIO_READ_REG_ENABLED,
+ .dstate = &_TRACE_CPU_IOREQ_PIO_READ_REG_DSTATE
+};
+TraceEvent _TRACE_CPU_IOREQ_PIO_WRITE_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_ioreq_pio_write_reg",
+ .sstate = TRACE_CPU_IOREQ_PIO_WRITE_REG_ENABLED,
+ .dstate = &_TRACE_CPU_IOREQ_PIO_WRITE_REG_DSTATE
+};
+TraceEvent _TRACE_CPU_IOREQ_MOVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_ioreq_move",
+ .sstate = TRACE_CPU_IOREQ_MOVE_ENABLED,
+ .dstate = &_TRACE_CPU_IOREQ_MOVE_DSTATE
+};
+TraceEvent _TRACE_XEN_MAP_CACHE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_map_cache",
+ .sstate = TRACE_XEN_MAP_CACHE_ENABLED,
+ .dstate = &_TRACE_XEN_MAP_CACHE_DSTATE
+};
+TraceEvent _TRACE_XEN_REMAP_BUCKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_remap_bucket",
+ .sstate = TRACE_XEN_REMAP_BUCKET_ENABLED,
+ .dstate = &_TRACE_XEN_REMAP_BUCKET_DSTATE
+};
+TraceEvent _TRACE_XEN_MAP_CACHE_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_map_cache_return",
+ .sstate = TRACE_XEN_MAP_CACHE_RETURN_ENABLED,
+ .dstate = &_TRACE_XEN_MAP_CACHE_RETURN_DSTATE
+};
+TraceEvent *hw_i386_xen_trace_events[] = {
+ &_TRACE_XEN_PLATFORM_LOG_EVENT,
+ &_TRACE_XEN_PV_MMIO_READ_EVENT,
+ &_TRACE_XEN_PV_MMIO_WRITE_EVENT,
+ &_TRACE_XEN_RAM_ALLOC_EVENT,
+ &_TRACE_XEN_CLIENT_SET_MEMORY_EVENT,
+ &_TRACE_HANDLE_IOREQ_EVENT,
+ &_TRACE_HANDLE_IOREQ_READ_EVENT,
+ &_TRACE_HANDLE_IOREQ_WRITE_EVENT,
+ &_TRACE_CPU_IOREQ_PIO_EVENT,
+ &_TRACE_CPU_IOREQ_PIO_READ_REG_EVENT,
+ &_TRACE_CPU_IOREQ_PIO_WRITE_REG_EVENT,
+ &_TRACE_CPU_IOREQ_MOVE_EVENT,
+ &_TRACE_XEN_MAP_CACHE_EVENT,
+ &_TRACE_XEN_REMAP_BUCKET_EVENT,
+ &_TRACE_XEN_MAP_CACHE_RETURN_EVENT,
+ NULL,
+};
+
+static void trace_hw_i386_xen_register_events(void)
+{
+ trace_event_register_group(hw_i386_xen_trace_events);
+}
+trace_init(trace_hw_i386_xen_register_events)
diff --git a/qemu2-auto-generated/hw/i386/xen/trace.h b/qemu2-auto-generated/hw/i386/xen/trace.h
new file mode 100644
index 0000000000..c6f0eeec2a
--- /dev/null
+++ b/qemu2-auto-generated/hw/i386/xen/trace.h
@@ -0,0 +1,264 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_I386_XEN_GENERATED_TRACERS_H
+#define TRACE_HW_I386_XEN_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_XEN_PLATFORM_LOG_EVENT;
+extern TraceEvent _TRACE_XEN_PV_MMIO_READ_EVENT;
+extern TraceEvent _TRACE_XEN_PV_MMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_XEN_RAM_ALLOC_EVENT;
+extern TraceEvent _TRACE_XEN_CLIENT_SET_MEMORY_EVENT;
+extern TraceEvent _TRACE_HANDLE_IOREQ_EVENT;
+extern TraceEvent _TRACE_HANDLE_IOREQ_READ_EVENT;
+extern TraceEvent _TRACE_HANDLE_IOREQ_WRITE_EVENT;
+extern TraceEvent _TRACE_CPU_IOREQ_PIO_EVENT;
+extern TraceEvent _TRACE_CPU_IOREQ_PIO_READ_REG_EVENT;
+extern TraceEvent _TRACE_CPU_IOREQ_PIO_WRITE_REG_EVENT;
+extern TraceEvent _TRACE_CPU_IOREQ_MOVE_EVENT;
+extern TraceEvent _TRACE_XEN_MAP_CACHE_EVENT;
+extern TraceEvent _TRACE_XEN_REMAP_BUCKET_EVENT;
+extern TraceEvent _TRACE_XEN_MAP_CACHE_RETURN_EVENT;
+extern uint16_t _TRACE_XEN_PLATFORM_LOG_DSTATE;
+extern uint16_t _TRACE_XEN_PV_MMIO_READ_DSTATE;
+extern uint16_t _TRACE_XEN_PV_MMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_XEN_RAM_ALLOC_DSTATE;
+extern uint16_t _TRACE_XEN_CLIENT_SET_MEMORY_DSTATE;
+extern uint16_t _TRACE_HANDLE_IOREQ_DSTATE;
+extern uint16_t _TRACE_HANDLE_IOREQ_READ_DSTATE;
+extern uint16_t _TRACE_HANDLE_IOREQ_WRITE_DSTATE;
+extern uint16_t _TRACE_CPU_IOREQ_PIO_DSTATE;
+extern uint16_t _TRACE_CPU_IOREQ_PIO_READ_REG_DSTATE;
+extern uint16_t _TRACE_CPU_IOREQ_PIO_WRITE_REG_DSTATE;
+extern uint16_t _TRACE_CPU_IOREQ_MOVE_DSTATE;
+extern uint16_t _TRACE_XEN_MAP_CACHE_DSTATE;
+extern uint16_t _TRACE_XEN_REMAP_BUCKET_DSTATE;
+extern uint16_t _TRACE_XEN_MAP_CACHE_RETURN_DSTATE;
+#define TRACE_XEN_PLATFORM_LOG_ENABLED 1
+#define TRACE_XEN_PV_MMIO_READ_ENABLED 1
+#define TRACE_XEN_PV_MMIO_WRITE_ENABLED 1
+#define TRACE_XEN_RAM_ALLOC_ENABLED 1
+#define TRACE_XEN_CLIENT_SET_MEMORY_ENABLED 1
+#define TRACE_HANDLE_IOREQ_ENABLED 1
+#define TRACE_HANDLE_IOREQ_READ_ENABLED 1
+#define TRACE_HANDLE_IOREQ_WRITE_ENABLED 1
+#define TRACE_CPU_IOREQ_PIO_ENABLED 1
+#define TRACE_CPU_IOREQ_PIO_READ_REG_ENABLED 1
+#define TRACE_CPU_IOREQ_PIO_WRITE_REG_ENABLED 1
+#define TRACE_CPU_IOREQ_MOVE_ENABLED 1
+#define TRACE_XEN_MAP_CACHE_ENABLED 1
+#define TRACE_XEN_REMAP_BUCKET_ENABLED 1
+#define TRACE_XEN_MAP_CACHE_RETURN_ENABLED 1
+
+#define TRACE_XEN_PLATFORM_LOG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_platform_log(char * s)
+{
+}
+
+static inline void trace_xen_platform_log(char * s)
+{
+ if (true) {
+ _nocheck__trace_xen_platform_log(s);
+ }
+}
+
+#define TRACE_XEN_PV_MMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_pv_mmio_read(uint64_t addr)
+{
+}
+
+static inline void trace_xen_pv_mmio_read(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_xen_pv_mmio_read(addr);
+ }
+}
+
+#define TRACE_XEN_PV_MMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_pv_mmio_write(uint64_t addr)
+{
+}
+
+static inline void trace_xen_pv_mmio_write(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_xen_pv_mmio_write(addr);
+ }
+}
+
+#define TRACE_XEN_RAM_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_ram_alloc(unsigned long ram_addr, unsigned long size)
+{
+}
+
+static inline void trace_xen_ram_alloc(unsigned long ram_addr, unsigned long size)
+{
+ if (true) {
+ _nocheck__trace_xen_ram_alloc(ram_addr, size);
+ }
+}
+
+#define TRACE_XEN_CLIENT_SET_MEMORY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_client_set_memory(uint64_t start_addr, unsigned long size, bool log_dirty)
+{
+}
+
+static inline void trace_xen_client_set_memory(uint64_t start_addr, unsigned long size, bool log_dirty)
+{
+ if (true) {
+ _nocheck__trace_xen_client_set_memory(start_addr, size, log_dirty);
+ }
+}
+
+#define TRACE_HANDLE_IOREQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_ioreq(void * req, uint32_t type, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+}
+
+static inline void trace_handle_ioreq(void * req, uint32_t type, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_handle_ioreq(req, type, dir, df, data_is_ptr, addr, data, count, size);
+ }
+}
+
+#define TRACE_HANDLE_IOREQ_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_ioreq_read(void * req, uint32_t type, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+}
+
+static inline void trace_handle_ioreq_read(void * req, uint32_t type, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_handle_ioreq_read(req, type, df, data_is_ptr, addr, data, count, size);
+ }
+}
+
+#define TRACE_HANDLE_IOREQ_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_ioreq_write(void * req, uint32_t type, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+}
+
+static inline void trace_handle_ioreq_write(void * req, uint32_t type, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_handle_ioreq_write(req, type, df, data_is_ptr, addr, data, count, size);
+ }
+}
+
+#define TRACE_CPU_IOREQ_PIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_ioreq_pio(void * req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+}
+
+static inline void trace_cpu_ioreq_pio(void * req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_cpu_ioreq_pio(req, dir, df, data_is_ptr, addr, data, count, size);
+ }
+}
+
+#define TRACE_CPU_IOREQ_PIO_READ_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_ioreq_pio_read_reg(void * req, uint64_t data, uint64_t addr, uint32_t size)
+{
+}
+
+static inline void trace_cpu_ioreq_pio_read_reg(void * req, uint64_t data, uint64_t addr, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_cpu_ioreq_pio_read_reg(req, data, addr, size);
+ }
+}
+
+#define TRACE_CPU_IOREQ_PIO_WRITE_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_ioreq_pio_write_reg(void * req, uint64_t data, uint64_t addr, uint32_t size)
+{
+}
+
+static inline void trace_cpu_ioreq_pio_write_reg(void * req, uint64_t data, uint64_t addr, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_cpu_ioreq_pio_write_reg(req, data, addr, size);
+ }
+}
+
+#define TRACE_CPU_IOREQ_MOVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_ioreq_move(void * req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+}
+
+static inline void trace_cpu_ioreq_move(void * req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_cpu_ioreq_move(req, dir, df, data_is_ptr, addr, data, count, size);
+ }
+}
+
+#define TRACE_XEN_MAP_CACHE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_map_cache(uint64_t phys_addr)
+{
+}
+
+static inline void trace_xen_map_cache(uint64_t phys_addr)
+{
+ if (true) {
+ _nocheck__trace_xen_map_cache(phys_addr);
+ }
+}
+
+#define TRACE_XEN_REMAP_BUCKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_remap_bucket(uint64_t index)
+{
+}
+
+static inline void trace_xen_remap_bucket(uint64_t index)
+{
+ if (true) {
+ _nocheck__trace_xen_remap_bucket(index);
+ }
+}
+
+#define TRACE_XEN_MAP_CACHE_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_map_cache_return(void* ptr)
+{
+}
+
+static inline void trace_xen_map_cache_return(void* ptr)
+{
+ if (true) {
+ _nocheck__trace_xen_map_cache_return(ptr);
+ }
+}
+#endif /* TRACE_HW_I386_XEN_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/ide/trace.c b/qemu2-auto-generated/hw/ide/trace.c
new file mode 100644
index 0000000000..c0f20e9960
--- /dev/null
+++ b/qemu2-auto-generated/hw/ide/trace.c
@@ -0,0 +1,833 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_IDE_IOPORT_READ_DSTATE;
+uint16_t _TRACE_IDE_IOPORT_WRITE_DSTATE;
+uint16_t _TRACE_IDE_STATUS_READ_DSTATE;
+uint16_t _TRACE_IDE_CMD_WRITE_DSTATE;
+uint16_t _TRACE_IDE_DATA_READW_DSTATE;
+uint16_t _TRACE_IDE_DATA_WRITEW_DSTATE;
+uint16_t _TRACE_IDE_DATA_READL_DSTATE;
+uint16_t _TRACE_IDE_DATA_WRITEL_DSTATE;
+uint16_t _TRACE_IDE_EXEC_CMD_DSTATE;
+uint16_t _TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_DSTATE;
+uint16_t _TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_DSTATE;
+uint16_t _TRACE_IDE_SECTOR_READ_DSTATE;
+uint16_t _TRACE_IDE_SECTOR_WRITE_DSTATE;
+uint16_t _TRACE_IDE_RESET_DSTATE;
+uint16_t _TRACE_IDE_BUS_RESET_AIO_DSTATE;
+uint16_t _TRACE_IDE_DMA_CB_DSTATE;
+uint16_t _TRACE_BMDMA_READ_CMD646_DSTATE;
+uint16_t _TRACE_BMDMA_WRITE_CMD646_DSTATE;
+uint16_t _TRACE_BMDMA_RESET_DSTATE;
+uint16_t _TRACE_BMDMA_CMD_WRITEB_DSTATE;
+uint16_t _TRACE_BMDMA_ADDR_READ_DSTATE;
+uint16_t _TRACE_BMDMA_ADDR_WRITE_DSTATE;
+uint16_t _TRACE_BMDMA_READ_DSTATE;
+uint16_t _TRACE_BMDMA_WRITE_DSTATE;
+uint16_t _TRACE_SII3112_READ_DSTATE;
+uint16_t _TRACE_SII3112_WRITE_DSTATE;
+uint16_t _TRACE_SII3112_SET_IRQ_DSTATE;
+uint16_t _TRACE_BMDMA_READ_VIA_DSTATE;
+uint16_t _TRACE_BMDMA_WRITE_VIA_DSTATE;
+uint16_t _TRACE_CD_READ_SECTOR_SYNC_DSTATE;
+uint16_t _TRACE_CD_READ_SECTOR_CB_DSTATE;
+uint16_t _TRACE_CD_READ_SECTOR_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_ERROR_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_CHECK_STATUS_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_READ_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_DSTATE;
+uint16_t _TRACE_IDE_ATAPI_CMD_PACKET_DSTATE;
+uint16_t _TRACE_AHCI_PORT_READ_DSTATE;
+uint16_t _TRACE_AHCI_IRQ_RAISE_DSTATE;
+uint16_t _TRACE_AHCI_IRQ_LOWER_DSTATE;
+uint16_t _TRACE_AHCI_CHECK_IRQ_DSTATE;
+uint16_t _TRACE_AHCI_TRIGGER_IRQ_DSTATE;
+uint16_t _TRACE_AHCI_PORT_WRITE_DSTATE;
+uint16_t _TRACE_AHCI_MEM_READ_32_DSTATE;
+uint16_t _TRACE_AHCI_MEM_READ_DSTATE;
+uint16_t _TRACE_AHCI_MEM_WRITE_DSTATE;
+uint16_t _TRACE_AHCI_MEM_WRITE_UNKNOWN_DSTATE;
+uint16_t _TRACE_AHCI_SET_SIGNATURE_DSTATE;
+uint16_t _TRACE_AHCI_RESET_PORT_DSTATE;
+uint16_t _TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_DSTATE;
+uint16_t _TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_DSTATE;
+uint16_t _TRACE_AHCI_POPULATE_SGLIST_DSTATE;
+uint16_t _TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_DSTATE;
+uint16_t _TRACE_AHCI_POPULATE_SGLIST_NO_MAP_DSTATE;
+uint16_t _TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_DSTATE;
+uint16_t _TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_DSTATE;
+uint16_t _TRACE_NCQ_FINISH_DSTATE;
+uint16_t _TRACE_EXECUTE_NCQ_COMMAND_READ_DSTATE;
+uint16_t _TRACE_EXECUTE_NCQ_COMMAND_WRITE_DSTATE;
+uint16_t _TRACE_EXECUTE_NCQ_COMMAND_UNSUP_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_MISMATCH_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_AUX_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_PRIOICC_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_FUA_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_RARC_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_LARGE_DSTATE;
+uint16_t _TRACE_PROCESS_NCQ_COMMAND_DSTATE;
+uint16_t _TRACE_HANDLE_REG_H2D_FIS_PMP_DSTATE;
+uint16_t _TRACE_HANDLE_REG_H2D_FIS_RES_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_BUSY_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_NOLIST_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_BADPORT_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_BADFIS_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_BADMAP_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_UNHANDLED_FIS_DSTATE;
+uint16_t _TRACE_AHCI_START_TRANSFER_DSTATE;
+uint16_t _TRACE_AHCI_START_DMA_DSTATE;
+uint16_t _TRACE_AHCI_DMA_PREPARE_BUF_DSTATE;
+uint16_t _TRACE_AHCI_DMA_PREPARE_BUF_FAIL_DSTATE;
+uint16_t _TRACE_AHCI_DMA_RW_BUF_DSTATE;
+uint16_t _TRACE_AHCI_CMD_DONE_DSTATE;
+uint16_t _TRACE_AHCI_RESET_DSTATE;
+uint16_t _TRACE_ALLWINNER_AHCI_MEM_READ_DSTATE;
+uint16_t _TRACE_ALLWINNER_AHCI_MEM_WRITE_DSTATE;
+uint16_t _TRACE_HANDLE_REG_H2D_FIS_DUMP_DSTATE;
+uint16_t _TRACE_HANDLE_CMD_FIS_DUMP_DSTATE;
+TraceEvent _TRACE_IDE_IOPORT_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_ioport_read",
+ .sstate = TRACE_IDE_IOPORT_READ_ENABLED,
+ .dstate = &_TRACE_IDE_IOPORT_READ_DSTATE
+};
+TraceEvent _TRACE_IDE_IOPORT_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_ioport_write",
+ .sstate = TRACE_IDE_IOPORT_WRITE_ENABLED,
+ .dstate = &_TRACE_IDE_IOPORT_WRITE_DSTATE
+};
+TraceEvent _TRACE_IDE_STATUS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_status_read",
+ .sstate = TRACE_IDE_STATUS_READ_ENABLED,
+ .dstate = &_TRACE_IDE_STATUS_READ_DSTATE
+};
+TraceEvent _TRACE_IDE_CMD_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_cmd_write",
+ .sstate = TRACE_IDE_CMD_WRITE_ENABLED,
+ .dstate = &_TRACE_IDE_CMD_WRITE_DSTATE
+};
+TraceEvent _TRACE_IDE_DATA_READW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_data_readw",
+ .sstate = TRACE_IDE_DATA_READW_ENABLED,
+ .dstate = &_TRACE_IDE_DATA_READW_DSTATE
+};
+TraceEvent _TRACE_IDE_DATA_WRITEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_data_writew",
+ .sstate = TRACE_IDE_DATA_WRITEW_ENABLED,
+ .dstate = &_TRACE_IDE_DATA_WRITEW_DSTATE
+};
+TraceEvent _TRACE_IDE_DATA_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_data_readl",
+ .sstate = TRACE_IDE_DATA_READL_ENABLED,
+ .dstate = &_TRACE_IDE_DATA_READL_DSTATE
+};
+TraceEvent _TRACE_IDE_DATA_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_data_writel",
+ .sstate = TRACE_IDE_DATA_WRITEL_ENABLED,
+ .dstate = &_TRACE_IDE_DATA_WRITEL_DSTATE
+};
+TraceEvent _TRACE_IDE_EXEC_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_exec_cmd",
+ .sstate = TRACE_IDE_EXEC_CMD_ENABLED,
+ .dstate = &_TRACE_IDE_EXEC_CMD_DSTATE
+};
+TraceEvent _TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_cancel_dma_sync_buffered",
+ .sstate = TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_ENABLED,
+ .dstate = &_TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_DSTATE
+};
+TraceEvent _TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_cancel_dma_sync_remaining",
+ .sstate = TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_ENABLED,
+ .dstate = &_TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_DSTATE
+};
+TraceEvent _TRACE_IDE_SECTOR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_sector_read",
+ .sstate = TRACE_IDE_SECTOR_READ_ENABLED,
+ .dstate = &_TRACE_IDE_SECTOR_READ_DSTATE
+};
+TraceEvent _TRACE_IDE_SECTOR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_sector_write",
+ .sstate = TRACE_IDE_SECTOR_WRITE_ENABLED,
+ .dstate = &_TRACE_IDE_SECTOR_WRITE_DSTATE
+};
+TraceEvent _TRACE_IDE_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_reset",
+ .sstate = TRACE_IDE_RESET_ENABLED,
+ .dstate = &_TRACE_IDE_RESET_DSTATE
+};
+TraceEvent _TRACE_IDE_BUS_RESET_AIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_bus_reset_aio",
+ .sstate = TRACE_IDE_BUS_RESET_AIO_ENABLED,
+ .dstate = &_TRACE_IDE_BUS_RESET_AIO_DSTATE
+};
+TraceEvent _TRACE_IDE_DMA_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_dma_cb",
+ .sstate = TRACE_IDE_DMA_CB_ENABLED,
+ .dstate = &_TRACE_IDE_DMA_CB_DSTATE
+};
+TraceEvent _TRACE_BMDMA_READ_CMD646_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_read_cmd646",
+ .sstate = TRACE_BMDMA_READ_CMD646_ENABLED,
+ .dstate = &_TRACE_BMDMA_READ_CMD646_DSTATE
+};
+TraceEvent _TRACE_BMDMA_WRITE_CMD646_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_write_cmd646",
+ .sstate = TRACE_BMDMA_WRITE_CMD646_ENABLED,
+ .dstate = &_TRACE_BMDMA_WRITE_CMD646_DSTATE
+};
+TraceEvent _TRACE_BMDMA_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_reset",
+ .sstate = TRACE_BMDMA_RESET_ENABLED,
+ .dstate = &_TRACE_BMDMA_RESET_DSTATE
+};
+TraceEvent _TRACE_BMDMA_CMD_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_cmd_writeb",
+ .sstate = TRACE_BMDMA_CMD_WRITEB_ENABLED,
+ .dstate = &_TRACE_BMDMA_CMD_WRITEB_DSTATE
+};
+TraceEvent _TRACE_BMDMA_ADDR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_addr_read",
+ .sstate = TRACE_BMDMA_ADDR_READ_ENABLED,
+ .dstate = &_TRACE_BMDMA_ADDR_READ_DSTATE
+};
+TraceEvent _TRACE_BMDMA_ADDR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_addr_write",
+ .sstate = TRACE_BMDMA_ADDR_WRITE_ENABLED,
+ .dstate = &_TRACE_BMDMA_ADDR_WRITE_DSTATE
+};
+TraceEvent _TRACE_BMDMA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_read",
+ .sstate = TRACE_BMDMA_READ_ENABLED,
+ .dstate = &_TRACE_BMDMA_READ_DSTATE
+};
+TraceEvent _TRACE_BMDMA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_write",
+ .sstate = TRACE_BMDMA_WRITE_ENABLED,
+ .dstate = &_TRACE_BMDMA_WRITE_DSTATE
+};
+TraceEvent _TRACE_SII3112_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii3112_read",
+ .sstate = TRACE_SII3112_READ_ENABLED,
+ .dstate = &_TRACE_SII3112_READ_DSTATE
+};
+TraceEvent _TRACE_SII3112_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii3112_write",
+ .sstate = TRACE_SII3112_WRITE_ENABLED,
+ .dstate = &_TRACE_SII3112_WRITE_DSTATE
+};
+TraceEvent _TRACE_SII3112_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sii3112_set_irq",
+ .sstate = TRACE_SII3112_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_SII3112_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_BMDMA_READ_VIA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_read_via",
+ .sstate = TRACE_BMDMA_READ_VIA_ENABLED,
+ .dstate = &_TRACE_BMDMA_READ_VIA_DSTATE
+};
+TraceEvent _TRACE_BMDMA_WRITE_VIA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bmdma_write_via",
+ .sstate = TRACE_BMDMA_WRITE_VIA_ENABLED,
+ .dstate = &_TRACE_BMDMA_WRITE_VIA_DSTATE
+};
+TraceEvent _TRACE_CD_READ_SECTOR_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cd_read_sector_sync",
+ .sstate = TRACE_CD_READ_SECTOR_SYNC_ENABLED,
+ .dstate = &_TRACE_CD_READ_SECTOR_SYNC_DSTATE
+};
+TraceEvent _TRACE_CD_READ_SECTOR_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cd_read_sector_cb",
+ .sstate = TRACE_CD_READ_SECTOR_CB_ENABLED,
+ .dstate = &_TRACE_CD_READ_SECTOR_CB_DSTATE
+};
+TraceEvent _TRACE_CD_READ_SECTOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cd_read_sector",
+ .sstate = TRACE_CD_READ_SECTOR_ENABLED,
+ .dstate = &_TRACE_CD_READ_SECTOR_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_error",
+ .sstate = TRACE_IDE_ATAPI_CMD_ERROR_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_ERROR_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_reply_end",
+ .sstate = TRACE_IDE_ATAPI_CMD_REPLY_END_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_REPLY_END_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_reply_end_eot",
+ .sstate = TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_reply_end_bcl",
+ .sstate = TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_reply_end_new",
+ .sstate = TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_CHECK_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_check_status",
+ .sstate = TRACE_IDE_ATAPI_CMD_CHECK_STATUS_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_CHECK_STATUS_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_read",
+ .sstate = TRACE_IDE_ATAPI_CMD_READ_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_READ_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd",
+ .sstate = TRACE_IDE_ATAPI_CMD_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_read_dma_cb_aio",
+ .sstate = TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_DSTATE
+};
+TraceEvent _TRACE_IDE_ATAPI_CMD_PACKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ide_atapi_cmd_packet",
+ .sstate = TRACE_IDE_ATAPI_CMD_PACKET_ENABLED,
+ .dstate = &_TRACE_IDE_ATAPI_CMD_PACKET_DSTATE
+};
+TraceEvent _TRACE_AHCI_PORT_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_port_read",
+ .sstate = TRACE_AHCI_PORT_READ_ENABLED,
+ .dstate = &_TRACE_AHCI_PORT_READ_DSTATE
+};
+TraceEvent _TRACE_AHCI_IRQ_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_irq_raise",
+ .sstate = TRACE_AHCI_IRQ_RAISE_ENABLED,
+ .dstate = &_TRACE_AHCI_IRQ_RAISE_DSTATE
+};
+TraceEvent _TRACE_AHCI_IRQ_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_irq_lower",
+ .sstate = TRACE_AHCI_IRQ_LOWER_ENABLED,
+ .dstate = &_TRACE_AHCI_IRQ_LOWER_DSTATE
+};
+TraceEvent _TRACE_AHCI_CHECK_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_check_irq",
+ .sstate = TRACE_AHCI_CHECK_IRQ_ENABLED,
+ .dstate = &_TRACE_AHCI_CHECK_IRQ_DSTATE
+};
+TraceEvent _TRACE_AHCI_TRIGGER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_trigger_irq",
+ .sstate = TRACE_AHCI_TRIGGER_IRQ_ENABLED,
+ .dstate = &_TRACE_AHCI_TRIGGER_IRQ_DSTATE
+};
+TraceEvent _TRACE_AHCI_PORT_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_port_write",
+ .sstate = TRACE_AHCI_PORT_WRITE_ENABLED,
+ .dstate = &_TRACE_AHCI_PORT_WRITE_DSTATE
+};
+TraceEvent _TRACE_AHCI_MEM_READ_32_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_mem_read_32",
+ .sstate = TRACE_AHCI_MEM_READ_32_ENABLED,
+ .dstate = &_TRACE_AHCI_MEM_READ_32_DSTATE
+};
+TraceEvent _TRACE_AHCI_MEM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_mem_read",
+ .sstate = TRACE_AHCI_MEM_READ_ENABLED,
+ .dstate = &_TRACE_AHCI_MEM_READ_DSTATE
+};
+TraceEvent _TRACE_AHCI_MEM_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_mem_write",
+ .sstate = TRACE_AHCI_MEM_WRITE_ENABLED,
+ .dstate = &_TRACE_AHCI_MEM_WRITE_DSTATE
+};
+TraceEvent _TRACE_AHCI_MEM_WRITE_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_mem_write_unknown",
+ .sstate = TRACE_AHCI_MEM_WRITE_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_AHCI_MEM_WRITE_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_AHCI_SET_SIGNATURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_set_signature",
+ .sstate = TRACE_AHCI_SET_SIGNATURE_ENABLED,
+ .dstate = &_TRACE_AHCI_SET_SIGNATURE_DSTATE
+};
+TraceEvent _TRACE_AHCI_RESET_PORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_reset_port",
+ .sstate = TRACE_AHCI_RESET_PORT_ENABLED,
+ .dstate = &_TRACE_AHCI_RESET_PORT_DSTATE
+};
+TraceEvent _TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_unmap_fis_address_null",
+ .sstate = TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_ENABLED,
+ .dstate = &_TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_DSTATE
+};
+TraceEvent _TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_unmap_clb_address_null",
+ .sstate = TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_ENABLED,
+ .dstate = &_TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_DSTATE
+};
+TraceEvent _TRACE_AHCI_POPULATE_SGLIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_populate_sglist",
+ .sstate = TRACE_AHCI_POPULATE_SGLIST_ENABLED,
+ .dstate = &_TRACE_AHCI_POPULATE_SGLIST_DSTATE
+};
+TraceEvent _TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_populate_sglist_no_prdtl",
+ .sstate = TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_ENABLED,
+ .dstate = &_TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_DSTATE
+};
+TraceEvent _TRACE_AHCI_POPULATE_SGLIST_NO_MAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_populate_sglist_no_map",
+ .sstate = TRACE_AHCI_POPULATE_SGLIST_NO_MAP_ENABLED,
+ .dstate = &_TRACE_AHCI_POPULATE_SGLIST_NO_MAP_DSTATE
+};
+TraceEvent _TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_populate_sglist_short_map",
+ .sstate = TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_ENABLED,
+ .dstate = &_TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_DSTATE
+};
+TraceEvent _TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_populate_sglist_bad_offset",
+ .sstate = TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_ENABLED,
+ .dstate = &_TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_DSTATE
+};
+TraceEvent _TRACE_NCQ_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ncq_finish",
+ .sstate = TRACE_NCQ_FINISH_ENABLED,
+ .dstate = &_TRACE_NCQ_FINISH_DSTATE
+};
+TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "execute_ncq_command_read",
+ .sstate = TRACE_EXECUTE_NCQ_COMMAND_READ_ENABLED,
+ .dstate = &_TRACE_EXECUTE_NCQ_COMMAND_READ_DSTATE
+};
+TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "execute_ncq_command_write",
+ .sstate = TRACE_EXECUTE_NCQ_COMMAND_WRITE_ENABLED,
+ .dstate = &_TRACE_EXECUTE_NCQ_COMMAND_WRITE_DSTATE
+};
+TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_UNSUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "execute_ncq_command_unsup",
+ .sstate = TRACE_EXECUTE_NCQ_COMMAND_UNSUP_ENABLED,
+ .dstate = &_TRACE_EXECUTE_NCQ_COMMAND_UNSUP_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_MISMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_mismatch",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_MISMATCH_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_MISMATCH_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_AUX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_aux",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_AUX_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_AUX_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_PRIOICC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_prioicc",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_PRIOICC_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_PRIOICC_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_FUA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_fua",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_FUA_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_FUA_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_RARC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_rarc",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_RARC_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_RARC_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_LARGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command_large",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_LARGE_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_LARGE_DSTATE
+};
+TraceEvent _TRACE_PROCESS_NCQ_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_ncq_command",
+ .sstate = TRACE_PROCESS_NCQ_COMMAND_ENABLED,
+ .dstate = &_TRACE_PROCESS_NCQ_COMMAND_DSTATE
+};
+TraceEvent _TRACE_HANDLE_REG_H2D_FIS_PMP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_reg_h2d_fis_pmp",
+ .sstate = TRACE_HANDLE_REG_H2D_FIS_PMP_ENABLED,
+ .dstate = &_TRACE_HANDLE_REG_H2D_FIS_PMP_DSTATE
+};
+TraceEvent _TRACE_HANDLE_REG_H2D_FIS_RES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_reg_h2d_fis_res",
+ .sstate = TRACE_HANDLE_REG_H2D_FIS_RES_ENABLED,
+ .dstate = &_TRACE_HANDLE_REG_H2D_FIS_RES_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_BUSY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_busy",
+ .sstate = TRACE_HANDLE_CMD_BUSY_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_BUSY_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_NOLIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_nolist",
+ .sstate = TRACE_HANDLE_CMD_NOLIST_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_NOLIST_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_BADPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_badport",
+ .sstate = TRACE_HANDLE_CMD_BADPORT_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_BADPORT_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_BADFIS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_badfis",
+ .sstate = TRACE_HANDLE_CMD_BADFIS_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_BADFIS_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_BADMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_badmap",
+ .sstate = TRACE_HANDLE_CMD_BADMAP_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_BADMAP_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_UNHANDLED_FIS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_unhandled_fis",
+ .sstate = TRACE_HANDLE_CMD_UNHANDLED_FIS_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_UNHANDLED_FIS_DSTATE
+};
+TraceEvent _TRACE_AHCI_START_TRANSFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_start_transfer",
+ .sstate = TRACE_AHCI_START_TRANSFER_ENABLED,
+ .dstate = &_TRACE_AHCI_START_TRANSFER_DSTATE
+};
+TraceEvent _TRACE_AHCI_START_DMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_start_dma",
+ .sstate = TRACE_AHCI_START_DMA_ENABLED,
+ .dstate = &_TRACE_AHCI_START_DMA_DSTATE
+};
+TraceEvent _TRACE_AHCI_DMA_PREPARE_BUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_dma_prepare_buf",
+ .sstate = TRACE_AHCI_DMA_PREPARE_BUF_ENABLED,
+ .dstate = &_TRACE_AHCI_DMA_PREPARE_BUF_DSTATE
+};
+TraceEvent _TRACE_AHCI_DMA_PREPARE_BUF_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_dma_prepare_buf_fail",
+ .sstate = TRACE_AHCI_DMA_PREPARE_BUF_FAIL_ENABLED,
+ .dstate = &_TRACE_AHCI_DMA_PREPARE_BUF_FAIL_DSTATE
+};
+TraceEvent _TRACE_AHCI_DMA_RW_BUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_dma_rw_buf",
+ .sstate = TRACE_AHCI_DMA_RW_BUF_ENABLED,
+ .dstate = &_TRACE_AHCI_DMA_RW_BUF_DSTATE
+};
+TraceEvent _TRACE_AHCI_CMD_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_cmd_done",
+ .sstate = TRACE_AHCI_CMD_DONE_ENABLED,
+ .dstate = &_TRACE_AHCI_CMD_DONE_DSTATE
+};
+TraceEvent _TRACE_AHCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ahci_reset",
+ .sstate = TRACE_AHCI_RESET_ENABLED,
+ .dstate = &_TRACE_AHCI_RESET_DSTATE
+};
+TraceEvent _TRACE_ALLWINNER_AHCI_MEM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "allwinner_ahci_mem_read",
+ .sstate = TRACE_ALLWINNER_AHCI_MEM_READ_ENABLED,
+ .dstate = &_TRACE_ALLWINNER_AHCI_MEM_READ_DSTATE
+};
+TraceEvent _TRACE_ALLWINNER_AHCI_MEM_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "allwinner_ahci_mem_write",
+ .sstate = TRACE_ALLWINNER_AHCI_MEM_WRITE_ENABLED,
+ .dstate = &_TRACE_ALLWINNER_AHCI_MEM_WRITE_DSTATE
+};
+TraceEvent _TRACE_HANDLE_REG_H2D_FIS_DUMP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_reg_h2d_fis_dump",
+ .sstate = TRACE_HANDLE_REG_H2D_FIS_DUMP_ENABLED,
+ .dstate = &_TRACE_HANDLE_REG_H2D_FIS_DUMP_DSTATE
+};
+TraceEvent _TRACE_HANDLE_CMD_FIS_DUMP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_cmd_fis_dump",
+ .sstate = TRACE_HANDLE_CMD_FIS_DUMP_ENABLED,
+ .dstate = &_TRACE_HANDLE_CMD_FIS_DUMP_DSTATE
+};
+TraceEvent *hw_ide_trace_events[] = {
+ &_TRACE_IDE_IOPORT_READ_EVENT,
+ &_TRACE_IDE_IOPORT_WRITE_EVENT,
+ &_TRACE_IDE_STATUS_READ_EVENT,
+ &_TRACE_IDE_CMD_WRITE_EVENT,
+ &_TRACE_IDE_DATA_READW_EVENT,
+ &_TRACE_IDE_DATA_WRITEW_EVENT,
+ &_TRACE_IDE_DATA_READL_EVENT,
+ &_TRACE_IDE_DATA_WRITEL_EVENT,
+ &_TRACE_IDE_EXEC_CMD_EVENT,
+ &_TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_EVENT,
+ &_TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_EVENT,
+ &_TRACE_IDE_SECTOR_READ_EVENT,
+ &_TRACE_IDE_SECTOR_WRITE_EVENT,
+ &_TRACE_IDE_RESET_EVENT,
+ &_TRACE_IDE_BUS_RESET_AIO_EVENT,
+ &_TRACE_IDE_DMA_CB_EVENT,
+ &_TRACE_BMDMA_READ_CMD646_EVENT,
+ &_TRACE_BMDMA_WRITE_CMD646_EVENT,
+ &_TRACE_BMDMA_RESET_EVENT,
+ &_TRACE_BMDMA_CMD_WRITEB_EVENT,
+ &_TRACE_BMDMA_ADDR_READ_EVENT,
+ &_TRACE_BMDMA_ADDR_WRITE_EVENT,
+ &_TRACE_BMDMA_READ_EVENT,
+ &_TRACE_BMDMA_WRITE_EVENT,
+ &_TRACE_SII3112_READ_EVENT,
+ &_TRACE_SII3112_WRITE_EVENT,
+ &_TRACE_SII3112_SET_IRQ_EVENT,
+ &_TRACE_BMDMA_READ_VIA_EVENT,
+ &_TRACE_BMDMA_WRITE_VIA_EVENT,
+ &_TRACE_CD_READ_SECTOR_SYNC_EVENT,
+ &_TRACE_CD_READ_SECTOR_CB_EVENT,
+ &_TRACE_CD_READ_SECTOR_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_ERROR_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_REPLY_END_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_CHECK_STATUS_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_READ_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_EVENT,
+ &_TRACE_IDE_ATAPI_CMD_PACKET_EVENT,
+ &_TRACE_AHCI_PORT_READ_EVENT,
+ &_TRACE_AHCI_IRQ_RAISE_EVENT,
+ &_TRACE_AHCI_IRQ_LOWER_EVENT,
+ &_TRACE_AHCI_CHECK_IRQ_EVENT,
+ &_TRACE_AHCI_TRIGGER_IRQ_EVENT,
+ &_TRACE_AHCI_PORT_WRITE_EVENT,
+ &_TRACE_AHCI_MEM_READ_32_EVENT,
+ &_TRACE_AHCI_MEM_READ_EVENT,
+ &_TRACE_AHCI_MEM_WRITE_EVENT,
+ &_TRACE_AHCI_MEM_WRITE_UNKNOWN_EVENT,
+ &_TRACE_AHCI_SET_SIGNATURE_EVENT,
+ &_TRACE_AHCI_RESET_PORT_EVENT,
+ &_TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_EVENT,
+ &_TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_EVENT,
+ &_TRACE_AHCI_POPULATE_SGLIST_EVENT,
+ &_TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_EVENT,
+ &_TRACE_AHCI_POPULATE_SGLIST_NO_MAP_EVENT,
+ &_TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_EVENT,
+ &_TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_EVENT,
+ &_TRACE_NCQ_FINISH_EVENT,
+ &_TRACE_EXECUTE_NCQ_COMMAND_READ_EVENT,
+ &_TRACE_EXECUTE_NCQ_COMMAND_WRITE_EVENT,
+ &_TRACE_EXECUTE_NCQ_COMMAND_UNSUP_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_MISMATCH_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_AUX_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_PRIOICC_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_FUA_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_RARC_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_LARGE_EVENT,
+ &_TRACE_PROCESS_NCQ_COMMAND_EVENT,
+ &_TRACE_HANDLE_REG_H2D_FIS_PMP_EVENT,
+ &_TRACE_HANDLE_REG_H2D_FIS_RES_EVENT,
+ &_TRACE_HANDLE_CMD_BUSY_EVENT,
+ &_TRACE_HANDLE_CMD_NOLIST_EVENT,
+ &_TRACE_HANDLE_CMD_BADPORT_EVENT,
+ &_TRACE_HANDLE_CMD_BADFIS_EVENT,
+ &_TRACE_HANDLE_CMD_BADMAP_EVENT,
+ &_TRACE_HANDLE_CMD_UNHANDLED_FIS_EVENT,
+ &_TRACE_AHCI_START_TRANSFER_EVENT,
+ &_TRACE_AHCI_START_DMA_EVENT,
+ &_TRACE_AHCI_DMA_PREPARE_BUF_EVENT,
+ &_TRACE_AHCI_DMA_PREPARE_BUF_FAIL_EVENT,
+ &_TRACE_AHCI_DMA_RW_BUF_EVENT,
+ &_TRACE_AHCI_CMD_DONE_EVENT,
+ &_TRACE_AHCI_RESET_EVENT,
+ &_TRACE_ALLWINNER_AHCI_MEM_READ_EVENT,
+ &_TRACE_ALLWINNER_AHCI_MEM_WRITE_EVENT,
+ &_TRACE_HANDLE_REG_H2D_FIS_DUMP_EVENT,
+ &_TRACE_HANDLE_CMD_FIS_DUMP_EVENT,
+ NULL,
+};
+
+static void trace_hw_ide_register_events(void)
+{
+ trace_event_register_group(hw_ide_trace_events);
+}
+trace_init(trace_hw_ide_register_events)
diff --git a/qemu2-auto-generated/hw/ide/trace.h b/qemu2-auto-generated/hw/ide/trace.h
new file mode 100644
index 0000000000..8b476bff22
--- /dev/null
+++ b/qemu2-auto-generated/hw/ide/trace.h
@@ -0,0 +1,1556 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_IDE_GENERATED_TRACERS_H
+#define TRACE_HW_IDE_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_IDE_IOPORT_READ_EVENT;
+extern TraceEvent _TRACE_IDE_IOPORT_WRITE_EVENT;
+extern TraceEvent _TRACE_IDE_STATUS_READ_EVENT;
+extern TraceEvent _TRACE_IDE_CMD_WRITE_EVENT;
+extern TraceEvent _TRACE_IDE_DATA_READW_EVENT;
+extern TraceEvent _TRACE_IDE_DATA_WRITEW_EVENT;
+extern TraceEvent _TRACE_IDE_DATA_READL_EVENT;
+extern TraceEvent _TRACE_IDE_DATA_WRITEL_EVENT;
+extern TraceEvent _TRACE_IDE_EXEC_CMD_EVENT;
+extern TraceEvent _TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_EVENT;
+extern TraceEvent _TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_EVENT;
+extern TraceEvent _TRACE_IDE_SECTOR_READ_EVENT;
+extern TraceEvent _TRACE_IDE_SECTOR_WRITE_EVENT;
+extern TraceEvent _TRACE_IDE_RESET_EVENT;
+extern TraceEvent _TRACE_IDE_BUS_RESET_AIO_EVENT;
+extern TraceEvent _TRACE_IDE_DMA_CB_EVENT;
+extern TraceEvent _TRACE_BMDMA_READ_CMD646_EVENT;
+extern TraceEvent _TRACE_BMDMA_WRITE_CMD646_EVENT;
+extern TraceEvent _TRACE_BMDMA_RESET_EVENT;
+extern TraceEvent _TRACE_BMDMA_CMD_WRITEB_EVENT;
+extern TraceEvent _TRACE_BMDMA_ADDR_READ_EVENT;
+extern TraceEvent _TRACE_BMDMA_ADDR_WRITE_EVENT;
+extern TraceEvent _TRACE_BMDMA_READ_EVENT;
+extern TraceEvent _TRACE_BMDMA_WRITE_EVENT;
+extern TraceEvent _TRACE_SII3112_READ_EVENT;
+extern TraceEvent _TRACE_SII3112_WRITE_EVENT;
+extern TraceEvent _TRACE_SII3112_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_BMDMA_READ_VIA_EVENT;
+extern TraceEvent _TRACE_BMDMA_WRITE_VIA_EVENT;
+extern TraceEvent _TRACE_CD_READ_SECTOR_SYNC_EVENT;
+extern TraceEvent _TRACE_CD_READ_SECTOR_CB_EVENT;
+extern TraceEvent _TRACE_CD_READ_SECTOR_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_ERROR_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_CHECK_STATUS_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_READ_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_EVENT;
+extern TraceEvent _TRACE_IDE_ATAPI_CMD_PACKET_EVENT;
+extern TraceEvent _TRACE_AHCI_PORT_READ_EVENT;
+extern TraceEvent _TRACE_AHCI_IRQ_RAISE_EVENT;
+extern TraceEvent _TRACE_AHCI_IRQ_LOWER_EVENT;
+extern TraceEvent _TRACE_AHCI_CHECK_IRQ_EVENT;
+extern TraceEvent _TRACE_AHCI_TRIGGER_IRQ_EVENT;
+extern TraceEvent _TRACE_AHCI_PORT_WRITE_EVENT;
+extern TraceEvent _TRACE_AHCI_MEM_READ_32_EVENT;
+extern TraceEvent _TRACE_AHCI_MEM_READ_EVENT;
+extern TraceEvent _TRACE_AHCI_MEM_WRITE_EVENT;
+extern TraceEvent _TRACE_AHCI_MEM_WRITE_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_AHCI_SET_SIGNATURE_EVENT;
+extern TraceEvent _TRACE_AHCI_RESET_PORT_EVENT;
+extern TraceEvent _TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_EVENT;
+extern TraceEvent _TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_EVENT;
+extern TraceEvent _TRACE_AHCI_POPULATE_SGLIST_EVENT;
+extern TraceEvent _TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_EVENT;
+extern TraceEvent _TRACE_AHCI_POPULATE_SGLIST_NO_MAP_EVENT;
+extern TraceEvent _TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_EVENT;
+extern TraceEvent _TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_EVENT;
+extern TraceEvent _TRACE_NCQ_FINISH_EVENT;
+extern TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_READ_EVENT;
+extern TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_WRITE_EVENT;
+extern TraceEvent _TRACE_EXECUTE_NCQ_COMMAND_UNSUP_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_MISMATCH_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_AUX_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_PRIOICC_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_FUA_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_RARC_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_LARGE_EVENT;
+extern TraceEvent _TRACE_PROCESS_NCQ_COMMAND_EVENT;
+extern TraceEvent _TRACE_HANDLE_REG_H2D_FIS_PMP_EVENT;
+extern TraceEvent _TRACE_HANDLE_REG_H2D_FIS_RES_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_BUSY_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_NOLIST_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_BADPORT_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_BADFIS_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_BADMAP_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_UNHANDLED_FIS_EVENT;
+extern TraceEvent _TRACE_AHCI_START_TRANSFER_EVENT;
+extern TraceEvent _TRACE_AHCI_START_DMA_EVENT;
+extern TraceEvent _TRACE_AHCI_DMA_PREPARE_BUF_EVENT;
+extern TraceEvent _TRACE_AHCI_DMA_PREPARE_BUF_FAIL_EVENT;
+extern TraceEvent _TRACE_AHCI_DMA_RW_BUF_EVENT;
+extern TraceEvent _TRACE_AHCI_CMD_DONE_EVENT;
+extern TraceEvent _TRACE_AHCI_RESET_EVENT;
+extern TraceEvent _TRACE_ALLWINNER_AHCI_MEM_READ_EVENT;
+extern TraceEvent _TRACE_ALLWINNER_AHCI_MEM_WRITE_EVENT;
+extern TraceEvent _TRACE_HANDLE_REG_H2D_FIS_DUMP_EVENT;
+extern TraceEvent _TRACE_HANDLE_CMD_FIS_DUMP_EVENT;
+extern uint16_t _TRACE_IDE_IOPORT_READ_DSTATE;
+extern uint16_t _TRACE_IDE_IOPORT_WRITE_DSTATE;
+extern uint16_t _TRACE_IDE_STATUS_READ_DSTATE;
+extern uint16_t _TRACE_IDE_CMD_WRITE_DSTATE;
+extern uint16_t _TRACE_IDE_DATA_READW_DSTATE;
+extern uint16_t _TRACE_IDE_DATA_WRITEW_DSTATE;
+extern uint16_t _TRACE_IDE_DATA_READL_DSTATE;
+extern uint16_t _TRACE_IDE_DATA_WRITEL_DSTATE;
+extern uint16_t _TRACE_IDE_EXEC_CMD_DSTATE;
+extern uint16_t _TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_DSTATE;
+extern uint16_t _TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_DSTATE;
+extern uint16_t _TRACE_IDE_SECTOR_READ_DSTATE;
+extern uint16_t _TRACE_IDE_SECTOR_WRITE_DSTATE;
+extern uint16_t _TRACE_IDE_RESET_DSTATE;
+extern uint16_t _TRACE_IDE_BUS_RESET_AIO_DSTATE;
+extern uint16_t _TRACE_IDE_DMA_CB_DSTATE;
+extern uint16_t _TRACE_BMDMA_READ_CMD646_DSTATE;
+extern uint16_t _TRACE_BMDMA_WRITE_CMD646_DSTATE;
+extern uint16_t _TRACE_BMDMA_RESET_DSTATE;
+extern uint16_t _TRACE_BMDMA_CMD_WRITEB_DSTATE;
+extern uint16_t _TRACE_BMDMA_ADDR_READ_DSTATE;
+extern uint16_t _TRACE_BMDMA_ADDR_WRITE_DSTATE;
+extern uint16_t _TRACE_BMDMA_READ_DSTATE;
+extern uint16_t _TRACE_BMDMA_WRITE_DSTATE;
+extern uint16_t _TRACE_SII3112_READ_DSTATE;
+extern uint16_t _TRACE_SII3112_WRITE_DSTATE;
+extern uint16_t _TRACE_SII3112_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_BMDMA_READ_VIA_DSTATE;
+extern uint16_t _TRACE_BMDMA_WRITE_VIA_DSTATE;
+extern uint16_t _TRACE_CD_READ_SECTOR_SYNC_DSTATE;
+extern uint16_t _TRACE_CD_READ_SECTOR_CB_DSTATE;
+extern uint16_t _TRACE_CD_READ_SECTOR_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_ERROR_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_CHECK_STATUS_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_READ_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_DSTATE;
+extern uint16_t _TRACE_IDE_ATAPI_CMD_PACKET_DSTATE;
+extern uint16_t _TRACE_AHCI_PORT_READ_DSTATE;
+extern uint16_t _TRACE_AHCI_IRQ_RAISE_DSTATE;
+extern uint16_t _TRACE_AHCI_IRQ_LOWER_DSTATE;
+extern uint16_t _TRACE_AHCI_CHECK_IRQ_DSTATE;
+extern uint16_t _TRACE_AHCI_TRIGGER_IRQ_DSTATE;
+extern uint16_t _TRACE_AHCI_PORT_WRITE_DSTATE;
+extern uint16_t _TRACE_AHCI_MEM_READ_32_DSTATE;
+extern uint16_t _TRACE_AHCI_MEM_READ_DSTATE;
+extern uint16_t _TRACE_AHCI_MEM_WRITE_DSTATE;
+extern uint16_t _TRACE_AHCI_MEM_WRITE_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_AHCI_SET_SIGNATURE_DSTATE;
+extern uint16_t _TRACE_AHCI_RESET_PORT_DSTATE;
+extern uint16_t _TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_DSTATE;
+extern uint16_t _TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_DSTATE;
+extern uint16_t _TRACE_AHCI_POPULATE_SGLIST_DSTATE;
+extern uint16_t _TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_DSTATE;
+extern uint16_t _TRACE_AHCI_POPULATE_SGLIST_NO_MAP_DSTATE;
+extern uint16_t _TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_DSTATE;
+extern uint16_t _TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_DSTATE;
+extern uint16_t _TRACE_NCQ_FINISH_DSTATE;
+extern uint16_t _TRACE_EXECUTE_NCQ_COMMAND_READ_DSTATE;
+extern uint16_t _TRACE_EXECUTE_NCQ_COMMAND_WRITE_DSTATE;
+extern uint16_t _TRACE_EXECUTE_NCQ_COMMAND_UNSUP_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_MISMATCH_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_AUX_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_PRIOICC_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_FUA_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_RARC_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_LARGE_DSTATE;
+extern uint16_t _TRACE_PROCESS_NCQ_COMMAND_DSTATE;
+extern uint16_t _TRACE_HANDLE_REG_H2D_FIS_PMP_DSTATE;
+extern uint16_t _TRACE_HANDLE_REG_H2D_FIS_RES_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_BUSY_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_NOLIST_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_BADPORT_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_BADFIS_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_BADMAP_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_UNHANDLED_FIS_DSTATE;
+extern uint16_t _TRACE_AHCI_START_TRANSFER_DSTATE;
+extern uint16_t _TRACE_AHCI_START_DMA_DSTATE;
+extern uint16_t _TRACE_AHCI_DMA_PREPARE_BUF_DSTATE;
+extern uint16_t _TRACE_AHCI_DMA_PREPARE_BUF_FAIL_DSTATE;
+extern uint16_t _TRACE_AHCI_DMA_RW_BUF_DSTATE;
+extern uint16_t _TRACE_AHCI_CMD_DONE_DSTATE;
+extern uint16_t _TRACE_AHCI_RESET_DSTATE;
+extern uint16_t _TRACE_ALLWINNER_AHCI_MEM_READ_DSTATE;
+extern uint16_t _TRACE_ALLWINNER_AHCI_MEM_WRITE_DSTATE;
+extern uint16_t _TRACE_HANDLE_REG_H2D_FIS_DUMP_DSTATE;
+extern uint16_t _TRACE_HANDLE_CMD_FIS_DUMP_DSTATE;
+#define TRACE_IDE_IOPORT_READ_ENABLED 1
+#define TRACE_IDE_IOPORT_WRITE_ENABLED 1
+#define TRACE_IDE_STATUS_READ_ENABLED 1
+#define TRACE_IDE_CMD_WRITE_ENABLED 1
+#define TRACE_IDE_DATA_READW_ENABLED 1
+#define TRACE_IDE_DATA_WRITEW_ENABLED 1
+#define TRACE_IDE_DATA_READL_ENABLED 1
+#define TRACE_IDE_DATA_WRITEL_ENABLED 1
+#define TRACE_IDE_EXEC_CMD_ENABLED 1
+#define TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_ENABLED 1
+#define TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_ENABLED 1
+#define TRACE_IDE_SECTOR_READ_ENABLED 1
+#define TRACE_IDE_SECTOR_WRITE_ENABLED 1
+#define TRACE_IDE_RESET_ENABLED 1
+#define TRACE_IDE_BUS_RESET_AIO_ENABLED 1
+#define TRACE_IDE_DMA_CB_ENABLED 1
+#define TRACE_BMDMA_READ_CMD646_ENABLED 1
+#define TRACE_BMDMA_WRITE_CMD646_ENABLED 1
+#define TRACE_BMDMA_RESET_ENABLED 1
+#define TRACE_BMDMA_CMD_WRITEB_ENABLED 1
+#define TRACE_BMDMA_ADDR_READ_ENABLED 1
+#define TRACE_BMDMA_ADDR_WRITE_ENABLED 1
+#define TRACE_BMDMA_READ_ENABLED 1
+#define TRACE_BMDMA_WRITE_ENABLED 1
+#define TRACE_SII3112_READ_ENABLED 1
+#define TRACE_SII3112_WRITE_ENABLED 1
+#define TRACE_SII3112_SET_IRQ_ENABLED 1
+#define TRACE_BMDMA_READ_VIA_ENABLED 1
+#define TRACE_BMDMA_WRITE_VIA_ENABLED 1
+#define TRACE_CD_READ_SECTOR_SYNC_ENABLED 1
+#define TRACE_CD_READ_SECTOR_CB_ENABLED 1
+#define TRACE_CD_READ_SECTOR_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_ERROR_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_CHECK_STATUS_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_READ_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_ENABLED 1
+#define TRACE_IDE_ATAPI_CMD_PACKET_ENABLED 1
+#define TRACE_AHCI_PORT_READ_ENABLED 1
+#define TRACE_AHCI_IRQ_RAISE_ENABLED 1
+#define TRACE_AHCI_IRQ_LOWER_ENABLED 1
+#define TRACE_AHCI_CHECK_IRQ_ENABLED 1
+#define TRACE_AHCI_TRIGGER_IRQ_ENABLED 1
+#define TRACE_AHCI_PORT_WRITE_ENABLED 1
+#define TRACE_AHCI_MEM_READ_32_ENABLED 1
+#define TRACE_AHCI_MEM_READ_ENABLED 1
+#define TRACE_AHCI_MEM_WRITE_ENABLED 1
+#define TRACE_AHCI_MEM_WRITE_UNKNOWN_ENABLED 1
+#define TRACE_AHCI_SET_SIGNATURE_ENABLED 1
+#define TRACE_AHCI_RESET_PORT_ENABLED 1
+#define TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_ENABLED 1
+#define TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_ENABLED 1
+#define TRACE_AHCI_POPULATE_SGLIST_ENABLED 1
+#define TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_ENABLED 1
+#define TRACE_AHCI_POPULATE_SGLIST_NO_MAP_ENABLED 1
+#define TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_ENABLED 1
+#define TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_ENABLED 1
+#define TRACE_NCQ_FINISH_ENABLED 1
+#define TRACE_EXECUTE_NCQ_COMMAND_READ_ENABLED 1
+#define TRACE_EXECUTE_NCQ_COMMAND_WRITE_ENABLED 1
+#define TRACE_EXECUTE_NCQ_COMMAND_UNSUP_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_MISMATCH_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_AUX_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_PRIOICC_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_FUA_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_RARC_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_LARGE_ENABLED 1
+#define TRACE_PROCESS_NCQ_COMMAND_ENABLED 1
+#define TRACE_HANDLE_REG_H2D_FIS_PMP_ENABLED 1
+#define TRACE_HANDLE_REG_H2D_FIS_RES_ENABLED 1
+#define TRACE_HANDLE_CMD_BUSY_ENABLED 1
+#define TRACE_HANDLE_CMD_NOLIST_ENABLED 1
+#define TRACE_HANDLE_CMD_BADPORT_ENABLED 1
+#define TRACE_HANDLE_CMD_BADFIS_ENABLED 1
+#define TRACE_HANDLE_CMD_BADMAP_ENABLED 1
+#define TRACE_HANDLE_CMD_UNHANDLED_FIS_ENABLED 1
+#define TRACE_AHCI_START_TRANSFER_ENABLED 1
+#define TRACE_AHCI_START_DMA_ENABLED 1
+#define TRACE_AHCI_DMA_PREPARE_BUF_ENABLED 1
+#define TRACE_AHCI_DMA_PREPARE_BUF_FAIL_ENABLED 1
+#define TRACE_AHCI_DMA_RW_BUF_ENABLED 1
+#define TRACE_AHCI_CMD_DONE_ENABLED 1
+#define TRACE_AHCI_RESET_ENABLED 1
+#define TRACE_ALLWINNER_AHCI_MEM_READ_ENABLED 1
+#define TRACE_ALLWINNER_AHCI_MEM_WRITE_ENABLED 1
+#define TRACE_HANDLE_REG_H2D_FIS_DUMP_ENABLED 1
+#define TRACE_HANDLE_CMD_FIS_DUMP_ENABLED 1
+
+#define TRACE_IDE_IOPORT_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_ioport_read(uint32_t addr, const char * reg, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_ioport_read(uint32_t addr, const char * reg, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_ioport_read(addr, reg, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_IOPORT_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_ioport_write(uint32_t addr, const char * reg, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_ioport_write(uint32_t addr, const char * reg, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_ioport_write(addr, reg, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_STATUS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_status_read(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_status_read(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_status_read(addr, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_CMD_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_cmd_write(uint32_t addr, uint32_t val, void * bus)
+{
+}
+
+static inline void trace_ide_cmd_write(uint32_t addr, uint32_t val, void * bus)
+{
+ if (true) {
+ _nocheck__trace_ide_cmd_write(addr, val, bus);
+ }
+}
+
+#define TRACE_IDE_DATA_READW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_data_readw(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_data_readw(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_data_readw(addr, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_DATA_WRITEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_data_writew(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_data_writew(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_data_writew(addr, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_DATA_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_data_readl(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_data_readl(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_data_readl(addr, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_DATA_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_data_writel(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+}
+
+static inline void trace_ide_data_writel(uint32_t addr, uint32_t val, void * bus, void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_data_writel(addr, val, bus, s);
+ }
+}
+
+#define TRACE_IDE_EXEC_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_exec_cmd(void * bus, void * state, uint32_t cmd)
+{
+}
+
+static inline void trace_ide_exec_cmd(void * bus, void * state, uint32_t cmd)
+{
+ if (true) {
+ _nocheck__trace_ide_exec_cmd(bus, state, cmd);
+ }
+}
+
+#define TRACE_IDE_CANCEL_DMA_SYNC_BUFFERED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_cancel_dma_sync_buffered(void * fn, void * req)
+{
+}
+
+static inline void trace_ide_cancel_dma_sync_buffered(void * fn, void * req)
+{
+ if (true) {
+ _nocheck__trace_ide_cancel_dma_sync_buffered(fn, req);
+ }
+}
+
+#define TRACE_IDE_CANCEL_DMA_SYNC_REMAINING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_cancel_dma_sync_remaining(void)
+{
+}
+
+static inline void trace_ide_cancel_dma_sync_remaining(void)
+{
+ if (true) {
+ _nocheck__trace_ide_cancel_dma_sync_remaining();
+ }
+}
+
+#define TRACE_IDE_SECTOR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_sector_read(int64_t sector_num, int nsectors)
+{
+}
+
+static inline void trace_ide_sector_read(int64_t sector_num, int nsectors)
+{
+ if (true) {
+ _nocheck__trace_ide_sector_read(sector_num, nsectors);
+ }
+}
+
+#define TRACE_IDE_SECTOR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_sector_write(int64_t sector_num, int nsectors)
+{
+}
+
+static inline void trace_ide_sector_write(int64_t sector_num, int nsectors)
+{
+ if (true) {
+ _nocheck__trace_ide_sector_write(sector_num, nsectors);
+ }
+}
+
+#define TRACE_IDE_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_reset(void * s)
+{
+}
+
+static inline void trace_ide_reset(void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_reset(s);
+ }
+}
+
+#define TRACE_IDE_BUS_RESET_AIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_bus_reset_aio(void)
+{
+}
+
+static inline void trace_ide_bus_reset_aio(void)
+{
+ if (true) {
+ _nocheck__trace_ide_bus_reset_aio();
+ }
+}
+
+#define TRACE_IDE_DMA_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_dma_cb(void * s, int64_t sector_num, int n, const char * dma)
+{
+}
+
+static inline void trace_ide_dma_cb(void * s, int64_t sector_num, int n, const char * dma)
+{
+ if (true) {
+ _nocheck__trace_ide_dma_cb(s, sector_num, n, dma);
+ }
+}
+
+#define TRACE_BMDMA_READ_CMD646_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_read_cmd646(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_bmdma_read_cmd646(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_read_cmd646(addr, val);
+ }
+}
+
+#define TRACE_BMDMA_WRITE_CMD646_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_write_cmd646(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_bmdma_write_cmd646(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_write_cmd646(addr, val);
+ }
+}
+
+#define TRACE_BMDMA_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_reset(void)
+{
+}
+
+static inline void trace_bmdma_reset(void)
+{
+ if (true) {
+ _nocheck__trace_bmdma_reset();
+ }
+}
+
+#define TRACE_BMDMA_CMD_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_cmd_writeb(uint32_t val)
+{
+}
+
+static inline void trace_bmdma_cmd_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_cmd_writeb(val);
+ }
+}
+
+#define TRACE_BMDMA_ADDR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_addr_read(uint64_t data)
+{
+}
+
+static inline void trace_bmdma_addr_read(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_bmdma_addr_read(data);
+ }
+}
+
+#define TRACE_BMDMA_ADDR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_addr_write(uint64_t data)
+{
+}
+
+static inline void trace_bmdma_addr_write(uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_bmdma_addr_write(data);
+ }
+}
+
+#define TRACE_BMDMA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_read(uint64_t addr, uint8_t val)
+{
+}
+
+static inline void trace_bmdma_read(uint64_t addr, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_read(addr, val);
+ }
+}
+
+#define TRACE_BMDMA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_bmdma_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_write(addr, val);
+ }
+}
+
+#define TRACE_SII3112_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii3112_read(int size, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sii3112_read(int size, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sii3112_read(size, addr, val);
+ }
+}
+
+#define TRACE_SII3112_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii3112_write(int size, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sii3112_write(int size, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sii3112_write(size, addr, val);
+ }
+}
+
+#define TRACE_SII3112_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sii3112_set_irq(int channel, int level)
+{
+}
+
+static inline void trace_sii3112_set_irq(int channel, int level)
+{
+ if (true) {
+ _nocheck__trace_sii3112_set_irq(channel, level);
+ }
+}
+
+#define TRACE_BMDMA_READ_VIA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_read_via(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_bmdma_read_via(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_read_via(addr, val);
+ }
+}
+
+#define TRACE_BMDMA_WRITE_VIA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bmdma_write_via(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_bmdma_write_via(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_bmdma_write_via(addr, val);
+ }
+}
+
+#define TRACE_CD_READ_SECTOR_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cd_read_sector_sync(int lba)
+{
+}
+
+static inline void trace_cd_read_sector_sync(int lba)
+{
+ if (true) {
+ _nocheck__trace_cd_read_sector_sync(lba);
+ }
+}
+
+#define TRACE_CD_READ_SECTOR_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cd_read_sector_cb(int lba, int ret)
+{
+}
+
+static inline void trace_cd_read_sector_cb(int lba, int ret)
+{
+ if (true) {
+ _nocheck__trace_cd_read_sector_cb(lba, ret);
+ }
+}
+
+#define TRACE_CD_READ_SECTOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cd_read_sector(int lba)
+{
+}
+
+static inline void trace_cd_read_sector(int lba)
+{
+ if (true) {
+ _nocheck__trace_cd_read_sector(lba);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_error(void * s, int sense_key, int asc)
+{
+}
+
+static inline void trace_ide_atapi_cmd_error(void * s, int sense_key, int asc)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_error(s, sense_key, asc);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_reply_end(void * s, int tx_size, int elem_tx_size, int32_t index)
+{
+}
+
+static inline void trace_ide_atapi_cmd_reply_end(void * s, int tx_size, int elem_tx_size, int32_t index)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_reply_end(s, tx_size, elem_tx_size, index);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_EOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_reply_end_eot(void * s, int status)
+{
+}
+
+static inline void trace_ide_atapi_cmd_reply_end_eot(void * s, int status)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_reply_end_eot(s, status);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_BCL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_reply_end_bcl(void * s, int bcl)
+{
+}
+
+static inline void trace_ide_atapi_cmd_reply_end_bcl(void * s, int bcl)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_reply_end_bcl(s, bcl);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_REPLY_END_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_reply_end_new(void * s, int status)
+{
+}
+
+static inline void trace_ide_atapi_cmd_reply_end_new(void * s, int status)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_reply_end_new(s, status);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_CHECK_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_check_status(void * s)
+{
+}
+
+static inline void trace_ide_atapi_cmd_check_status(void * s)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_check_status(s);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_read(void * s, const char * method, int lba, int nb_sectors)
+{
+}
+
+static inline void trace_ide_atapi_cmd_read(void * s, const char * method, int lba, int nb_sectors)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_read(s, method, lba, nb_sectors);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd(void * s, uint8_t cmd)
+{
+}
+
+static inline void trace_ide_atapi_cmd(void * s, uint8_t cmd)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd(s, cmd);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_READ_DMA_CB_AIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_read_dma_cb_aio(void * s, int lba, int n)
+{
+}
+
+static inline void trace_ide_atapi_cmd_read_dma_cb_aio(void * s, int lba, int n)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_read_dma_cb_aio(s, lba, n);
+ }
+}
+
+#define TRACE_IDE_ATAPI_CMD_PACKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ide_atapi_cmd_packet(void * s, uint16_t limit, const char * packet)
+{
+}
+
+static inline void trace_ide_atapi_cmd_packet(void * s, uint16_t limit, const char * packet)
+{
+ if (true) {
+ _nocheck__trace_ide_atapi_cmd_packet(s, limit, packet);
+ }
+}
+
+#define TRACE_AHCI_PORT_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_port_read(void * s, int port, int offset, uint32_t ret)
+{
+}
+
+static inline void trace_ahci_port_read(void * s, int port, int offset, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ahci_port_read(s, port, offset, ret);
+ }
+}
+
+#define TRACE_AHCI_IRQ_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_irq_raise(void * s)
+{
+}
+
+static inline void trace_ahci_irq_raise(void * s)
+{
+ if (true) {
+ _nocheck__trace_ahci_irq_raise(s);
+ }
+}
+
+#define TRACE_AHCI_IRQ_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_irq_lower(void * s)
+{
+}
+
+static inline void trace_ahci_irq_lower(void * s)
+{
+ if (true) {
+ _nocheck__trace_ahci_irq_lower(s);
+ }
+}
+
+#define TRACE_AHCI_CHECK_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_check_irq(void * s, uint32_t old, uint32_t new)
+{
+}
+
+static inline void trace_ahci_check_irq(void * s, uint32_t old, uint32_t new)
+{
+ if (true) {
+ _nocheck__trace_ahci_check_irq(s, old, new);
+ }
+}
+
+#define TRACE_AHCI_TRIGGER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_trigger_irq(void * s, int port, const char * name, uint32_t val, uint32_t old, uint32_t new, uint32_t effective)
+{
+}
+
+static inline void trace_ahci_trigger_irq(void * s, int port, const char * name, uint32_t val, uint32_t old, uint32_t new, uint32_t effective)
+{
+ if (true) {
+ _nocheck__trace_ahci_trigger_irq(s, port, name, val, old, new, effective);
+ }
+}
+
+#define TRACE_AHCI_PORT_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_port_write(void * s, int port, int offset, uint32_t val)
+{
+}
+
+static inline void trace_ahci_port_write(void * s, int port, int offset, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ahci_port_write(s, port, offset, val);
+ }
+}
+
+#define TRACE_AHCI_MEM_READ_32_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_mem_read_32(void * s, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_ahci_mem_read_32(void * s, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ahci_mem_read_32(s, addr, val);
+ }
+}
+
+#define TRACE_AHCI_MEM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_mem_read(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_ahci_mem_read(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_ahci_mem_read(s, size, addr, val);
+ }
+}
+
+#define TRACE_AHCI_MEM_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_mem_write(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_ahci_mem_write(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_ahci_mem_write(s, size, addr, val);
+ }
+}
+
+#define TRACE_AHCI_MEM_WRITE_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_mem_write_unknown(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_ahci_mem_write_unknown(void * s, unsigned size, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_ahci_mem_write_unknown(s, size, addr, val);
+ }
+}
+
+#define TRACE_AHCI_SET_SIGNATURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_set_signature(void * s, int port, uint8_t nsector, uint8_t sector, uint8_t lcyl, uint8_t hcyl, uint32_t sig)
+{
+}
+
+static inline void trace_ahci_set_signature(void * s, int port, uint8_t nsector, uint8_t sector, uint8_t lcyl, uint8_t hcyl, uint32_t sig)
+{
+ if (true) {
+ _nocheck__trace_ahci_set_signature(s, port, nsector, sector, lcyl, hcyl, sig);
+ }
+}
+
+#define TRACE_AHCI_RESET_PORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_reset_port(void * s, int port)
+{
+}
+
+static inline void trace_ahci_reset_port(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_reset_port(s, port);
+ }
+}
+
+#define TRACE_AHCI_UNMAP_FIS_ADDRESS_NULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_unmap_fis_address_null(void * s, int port)
+{
+}
+
+static inline void trace_ahci_unmap_fis_address_null(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_unmap_fis_address_null(s, port);
+ }
+}
+
+#define TRACE_AHCI_UNMAP_CLB_ADDRESS_NULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_unmap_clb_address_null(void * s, int port)
+{
+}
+
+static inline void trace_ahci_unmap_clb_address_null(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_unmap_clb_address_null(s, port);
+ }
+}
+
+#define TRACE_AHCI_POPULATE_SGLIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_populate_sglist(void * s, int port)
+{
+}
+
+static inline void trace_ahci_populate_sglist(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_populate_sglist(s, port);
+ }
+}
+
+#define TRACE_AHCI_POPULATE_SGLIST_NO_PRDTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_populate_sglist_no_prdtl(void * s, int port, uint16_t opts)
+{
+}
+
+static inline void trace_ahci_populate_sglist_no_prdtl(void * s, int port, uint16_t opts)
+{
+ if (true) {
+ _nocheck__trace_ahci_populate_sglist_no_prdtl(s, port, opts);
+ }
+}
+
+#define TRACE_AHCI_POPULATE_SGLIST_NO_MAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_populate_sglist_no_map(void * s, int port)
+{
+}
+
+static inline void trace_ahci_populate_sglist_no_map(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_populate_sglist_no_map(s, port);
+ }
+}
+
+#define TRACE_AHCI_POPULATE_SGLIST_SHORT_MAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_populate_sglist_short_map(void * s, int port)
+{
+}
+
+static inline void trace_ahci_populate_sglist_short_map(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_populate_sglist_short_map(s, port);
+ }
+}
+
+#define TRACE_AHCI_POPULATE_SGLIST_BAD_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_populate_sglist_bad_offset(void * s, int port, int off_idx, int64_t off_pos)
+{
+}
+
+static inline void trace_ahci_populate_sglist_bad_offset(void * s, int port, int off_idx, int64_t off_pos)
+{
+ if (true) {
+ _nocheck__trace_ahci_populate_sglist_bad_offset(s, port, off_idx, off_pos);
+ }
+}
+
+#define TRACE_NCQ_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ncq_finish(void * s, int port, uint8_t tag)
+{
+}
+
+static inline void trace_ncq_finish(void * s, int port, uint8_t tag)
+{
+ if (true) {
+ _nocheck__trace_ncq_finish(s, port, tag);
+ }
+}
+
+#define TRACE_EXECUTE_NCQ_COMMAND_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_execute_ncq_command_read(void * s, int port, uint8_t tag, int count, int64_t lba)
+{
+}
+
+static inline void trace_execute_ncq_command_read(void * s, int port, uint8_t tag, int count, int64_t lba)
+{
+ if (true) {
+ _nocheck__trace_execute_ncq_command_read(s, port, tag, count, lba);
+ }
+}
+
+#define TRACE_EXECUTE_NCQ_COMMAND_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_execute_ncq_command_write(void * s, int port, uint8_t tag, int count, int64_t lba)
+{
+}
+
+static inline void trace_execute_ncq_command_write(void * s, int port, uint8_t tag, int count, int64_t lba)
+{
+ if (true) {
+ _nocheck__trace_execute_ncq_command_write(s, port, tag, count, lba);
+ }
+}
+
+#define TRACE_EXECUTE_NCQ_COMMAND_UNSUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_execute_ncq_command_unsup(void * s, int port, uint8_t tag, uint8_t cmd)
+{
+}
+
+static inline void trace_execute_ncq_command_unsup(void * s, int port, uint8_t tag, uint8_t cmd)
+{
+ if (true) {
+ _nocheck__trace_execute_ncq_command_unsup(s, port, tag, cmd);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_MISMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_mismatch(void * s, int port, uint8_t tag, uint8_t slot)
+{
+}
+
+static inline void trace_process_ncq_command_mismatch(void * s, int port, uint8_t tag, uint8_t slot)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_mismatch(s, port, tag, slot);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_AUX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_aux(void * s, int port, uint8_t tag)
+{
+}
+
+static inline void trace_process_ncq_command_aux(void * s, int port, uint8_t tag)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_aux(s, port, tag);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_PRIOICC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_prioicc(void * s, int port, uint8_t tag)
+{
+}
+
+static inline void trace_process_ncq_command_prioicc(void * s, int port, uint8_t tag)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_prioicc(s, port, tag);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_FUA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_fua(void * s, int port, uint8_t tag)
+{
+}
+
+static inline void trace_process_ncq_command_fua(void * s, int port, uint8_t tag)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_fua(s, port, tag);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_RARC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_rarc(void * s, int port, uint8_t tag)
+{
+}
+
+static inline void trace_process_ncq_command_rarc(void * s, int port, uint8_t tag)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_rarc(s, port, tag);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_LARGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command_large(void * s, int port, uint8_t tag, size_t prdtl, size_t size)
+{
+}
+
+static inline void trace_process_ncq_command_large(void * s, int port, uint8_t tag, size_t prdtl, size_t size)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command_large(s, port, tag, prdtl, size);
+ }
+}
+
+#define TRACE_PROCESS_NCQ_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_ncq_command(void * s, int port, uint8_t tag, uint8_t cmd, uint64_t lba, uint64_t end)
+{
+}
+
+static inline void trace_process_ncq_command(void * s, int port, uint8_t tag, uint8_t cmd, uint64_t lba, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_process_ncq_command(s, port, tag, cmd, lba, end);
+ }
+}
+
+#define TRACE_HANDLE_REG_H2D_FIS_PMP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_reg_h2d_fis_pmp(void * s, int port, char b0, char b1, char b2)
+{
+}
+
+static inline void trace_handle_reg_h2d_fis_pmp(void * s, int port, char b0, char b1, char b2)
+{
+ if (true) {
+ _nocheck__trace_handle_reg_h2d_fis_pmp(s, port, b0, b1, b2);
+ }
+}
+
+#define TRACE_HANDLE_REG_H2D_FIS_RES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_reg_h2d_fis_res(void * s, int port, char b0, char b1, char b2)
+{
+}
+
+static inline void trace_handle_reg_h2d_fis_res(void * s, int port, char b0, char b1, char b2)
+{
+ if (true) {
+ _nocheck__trace_handle_reg_h2d_fis_res(s, port, b0, b1, b2);
+ }
+}
+
+#define TRACE_HANDLE_CMD_BUSY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_busy(void * s, int port)
+{
+}
+
+static inline void trace_handle_cmd_busy(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_busy(s, port);
+ }
+}
+
+#define TRACE_HANDLE_CMD_NOLIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_nolist(void * s, int port)
+{
+}
+
+static inline void trace_handle_cmd_nolist(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_nolist(s, port);
+ }
+}
+
+#define TRACE_HANDLE_CMD_BADPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_badport(void * s, int port)
+{
+}
+
+static inline void trace_handle_cmd_badport(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_badport(s, port);
+ }
+}
+
+#define TRACE_HANDLE_CMD_BADFIS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_badfis(void * s, int port)
+{
+}
+
+static inline void trace_handle_cmd_badfis(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_badfis(s, port);
+ }
+}
+
+#define TRACE_HANDLE_CMD_BADMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_badmap(void * s, int port, uint64_t len)
+{
+}
+
+static inline void trace_handle_cmd_badmap(void * s, int port, uint64_t len)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_badmap(s, port, len);
+ }
+}
+
+#define TRACE_HANDLE_CMD_UNHANDLED_FIS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_unhandled_fis(void * s, int port, uint8_t b0, uint8_t b1, uint8_t b2)
+{
+}
+
+static inline void trace_handle_cmd_unhandled_fis(void * s, int port, uint8_t b0, uint8_t b1, uint8_t b2)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_unhandled_fis(s, port, b0, b1, b2);
+ }
+}
+
+#define TRACE_AHCI_START_TRANSFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_start_transfer(void * s, int port, const char * rw, uint32_t size, const char * tgt, const char * sgl)
+{
+}
+
+static inline void trace_ahci_start_transfer(void * s, int port, const char * rw, uint32_t size, const char * tgt, const char * sgl)
+{
+ if (true) {
+ _nocheck__trace_ahci_start_transfer(s, port, rw, size, tgt, sgl);
+ }
+}
+
+#define TRACE_AHCI_START_DMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_start_dma(void * s, int port)
+{
+}
+
+static inline void trace_ahci_start_dma(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_start_dma(s, port);
+ }
+}
+
+#define TRACE_AHCI_DMA_PREPARE_BUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_dma_prepare_buf(void * s, int port, int32_t io_buffer_size, int32_t limit)
+{
+}
+
+static inline void trace_ahci_dma_prepare_buf(void * s, int port, int32_t io_buffer_size, int32_t limit)
+{
+ if (true) {
+ _nocheck__trace_ahci_dma_prepare_buf(s, port, io_buffer_size, limit);
+ }
+}
+
+#define TRACE_AHCI_DMA_PREPARE_BUF_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_dma_prepare_buf_fail(void * s, int port)
+{
+}
+
+static inline void trace_ahci_dma_prepare_buf_fail(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_dma_prepare_buf_fail(s, port);
+ }
+}
+
+#define TRACE_AHCI_DMA_RW_BUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_dma_rw_buf(void * s, int port, int l)
+{
+}
+
+static inline void trace_ahci_dma_rw_buf(void * s, int port, int l)
+{
+ if (true) {
+ _nocheck__trace_ahci_dma_rw_buf(s, port, l);
+ }
+}
+
+#define TRACE_AHCI_CMD_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_cmd_done(void * s, int port)
+{
+}
+
+static inline void trace_ahci_cmd_done(void * s, int port)
+{
+ if (true) {
+ _nocheck__trace_ahci_cmd_done(s, port);
+ }
+}
+
+#define TRACE_AHCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ahci_reset(void * s)
+{
+}
+
+static inline void trace_ahci_reset(void * s)
+{
+ if (true) {
+ _nocheck__trace_ahci_reset(s);
+ }
+}
+
+#define TRACE_ALLWINNER_AHCI_MEM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_allwinner_ahci_mem_read(void * s, void * a, uint64_t addr, uint64_t val, unsigned size)
+{
+}
+
+static inline void trace_allwinner_ahci_mem_read(void * s, void * a, uint64_t addr, uint64_t val, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_allwinner_ahci_mem_read(s, a, addr, val, size);
+ }
+}
+
+#define TRACE_ALLWINNER_AHCI_MEM_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_allwinner_ahci_mem_write(void * s, void * a, uint64_t addr, uint64_t val, unsigned size)
+{
+}
+
+static inline void trace_allwinner_ahci_mem_write(void * s, void * a, uint64_t addr, uint64_t val, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_allwinner_ahci_mem_write(s, a, addr, val, size);
+ }
+}
+
+#define TRACE_HANDLE_REG_H2D_FIS_DUMP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_reg_h2d_fis_dump(void * s, int port, const char * fis)
+{
+}
+
+static inline void trace_handle_reg_h2d_fis_dump(void * s, int port, const char * fis)
+{
+ if (true) {
+ _nocheck__trace_handle_reg_h2d_fis_dump(s, port, fis);
+ }
+}
+
+#define TRACE_HANDLE_CMD_FIS_DUMP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_cmd_fis_dump(void * s, int port, const char * fis)
+{
+}
+
+static inline void trace_handle_cmd_fis_dump(void * s, int port, const char * fis)
+{
+ if (true) {
+ _nocheck__trace_handle_cmd_fis_dump(s, port, fis);
+ }
+}
+#endif /* TRACE_HW_IDE_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/input/trace.c b/qemu2-auto-generated/hw/input/trace.c
new file mode 100644
index 0000000000..0c1897135f
--- /dev/null
+++ b/qemu2-auto-generated/hw/input/trace.c
@@ -0,0 +1,302 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_ADB_KBD_NO_KEY_DSTATE;
+uint16_t _TRACE_ADB_KBD_WRITEREG_DSTATE;
+uint16_t _TRACE_ADB_KBD_READREG_DSTATE;
+uint16_t _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_DSTATE;
+uint16_t _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE;
+uint16_t _TRACE_ADB_MOUSE_FLUSH_DSTATE;
+uint16_t _TRACE_ADB_MOUSE_WRITEREG_DSTATE;
+uint16_t _TRACE_ADB_MOUSE_READREG_DSTATE;
+uint16_t _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_DSTATE;
+uint16_t _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE;
+uint16_t _TRACE_PS2_PUT_KEYCODE_DSTATE;
+uint16_t _TRACE_PS2_KEYBOARD_EVENT_DSTATE;
+uint16_t _TRACE_PS2_READ_DATA_DSTATE;
+uint16_t _TRACE_PS2_SET_LEDSTATE_DSTATE;
+uint16_t _TRACE_PS2_RESET_KEYBOARD_DSTATE;
+uint16_t _TRACE_PS2_WRITE_KEYBOARD_DSTATE;
+uint16_t _TRACE_PS2_KEYBOARD_SET_TRANSLATION_DSTATE;
+uint16_t _TRACE_PS2_MOUSE_SEND_PACKET_DSTATE;
+uint16_t _TRACE_PS2_MOUSE_FAKE_EVENT_DSTATE;
+uint16_t _TRACE_PS2_WRITE_MOUSE_DSTATE;
+uint16_t _TRACE_PS2_KBD_RESET_DSTATE;
+uint16_t _TRACE_PS2_MOUSE_RESET_DSTATE;
+uint16_t _TRACE_PS2_KBD_INIT_DSTATE;
+uint16_t _TRACE_PS2_MOUSE_INIT_DSTATE;
+uint16_t _TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_SOFTUSB_MEVT_DSTATE;
+uint16_t _TRACE_MILKYMIST_SOFTUSB_KEVT_DSTATE;
+uint16_t _TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_DSTATE;
+uint16_t _TRACE_HID_KBD_QUEUE_FULL_DSTATE;
+uint16_t _TRACE_HID_KBD_QUEUE_EMPTY_DSTATE;
+uint16_t _TRACE_VIRTIO_INPUT_QUEUE_FULL_DSTATE;
+TraceEvent _TRACE_ADB_KBD_NO_KEY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_kbd_no_key",
+ .sstate = TRACE_ADB_KBD_NO_KEY_ENABLED,
+ .dstate = &_TRACE_ADB_KBD_NO_KEY_DSTATE
+};
+TraceEvent _TRACE_ADB_KBD_WRITEREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_kbd_writereg",
+ .sstate = TRACE_ADB_KBD_WRITEREG_ENABLED,
+ .dstate = &_TRACE_ADB_KBD_WRITEREG_DSTATE
+};
+TraceEvent _TRACE_ADB_KBD_READREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_kbd_readreg",
+ .sstate = TRACE_ADB_KBD_READREG_ENABLED,
+ .dstate = &_TRACE_ADB_KBD_READREG_DSTATE
+};
+TraceEvent _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_kbd_request_change_addr",
+ .sstate = TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_ENABLED,
+ .dstate = &_TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_DSTATE
+};
+TraceEvent _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_kbd_request_change_addr_and_handler",
+ .sstate = TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_ENABLED,
+ .dstate = &_TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE
+};
+TraceEvent _TRACE_ADB_MOUSE_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_mouse_flush",
+ .sstate = TRACE_ADB_MOUSE_FLUSH_ENABLED,
+ .dstate = &_TRACE_ADB_MOUSE_FLUSH_DSTATE
+};
+TraceEvent _TRACE_ADB_MOUSE_WRITEREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_mouse_writereg",
+ .sstate = TRACE_ADB_MOUSE_WRITEREG_ENABLED,
+ .dstate = &_TRACE_ADB_MOUSE_WRITEREG_DSTATE
+};
+TraceEvent _TRACE_ADB_MOUSE_READREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_mouse_readreg",
+ .sstate = TRACE_ADB_MOUSE_READREG_ENABLED,
+ .dstate = &_TRACE_ADB_MOUSE_READREG_DSTATE
+};
+TraceEvent _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_mouse_request_change_addr",
+ .sstate = TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_ENABLED,
+ .dstate = &_TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_DSTATE
+};
+TraceEvent _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "adb_mouse_request_change_addr_and_handler",
+ .sstate = TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_ENABLED,
+ .dstate = &_TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE
+};
+TraceEvent _TRACE_PS2_PUT_KEYCODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_put_keycode",
+ .sstate = TRACE_PS2_PUT_KEYCODE_ENABLED,
+ .dstate = &_TRACE_PS2_PUT_KEYCODE_DSTATE
+};
+TraceEvent _TRACE_PS2_KEYBOARD_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_keyboard_event",
+ .sstate = TRACE_PS2_KEYBOARD_EVENT_ENABLED,
+ .dstate = &_TRACE_PS2_KEYBOARD_EVENT_DSTATE
+};
+TraceEvent _TRACE_PS2_READ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_read_data",
+ .sstate = TRACE_PS2_READ_DATA_ENABLED,
+ .dstate = &_TRACE_PS2_READ_DATA_DSTATE
+};
+TraceEvent _TRACE_PS2_SET_LEDSTATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_set_ledstate",
+ .sstate = TRACE_PS2_SET_LEDSTATE_ENABLED,
+ .dstate = &_TRACE_PS2_SET_LEDSTATE_DSTATE
+};
+TraceEvent _TRACE_PS2_RESET_KEYBOARD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_reset_keyboard",
+ .sstate = TRACE_PS2_RESET_KEYBOARD_ENABLED,
+ .dstate = &_TRACE_PS2_RESET_KEYBOARD_DSTATE
+};
+TraceEvent _TRACE_PS2_WRITE_KEYBOARD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_write_keyboard",
+ .sstate = TRACE_PS2_WRITE_KEYBOARD_ENABLED,
+ .dstate = &_TRACE_PS2_WRITE_KEYBOARD_DSTATE
+};
+TraceEvent _TRACE_PS2_KEYBOARD_SET_TRANSLATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_keyboard_set_translation",
+ .sstate = TRACE_PS2_KEYBOARD_SET_TRANSLATION_ENABLED,
+ .dstate = &_TRACE_PS2_KEYBOARD_SET_TRANSLATION_DSTATE
+};
+TraceEvent _TRACE_PS2_MOUSE_SEND_PACKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_mouse_send_packet",
+ .sstate = TRACE_PS2_MOUSE_SEND_PACKET_ENABLED,
+ .dstate = &_TRACE_PS2_MOUSE_SEND_PACKET_DSTATE
+};
+TraceEvent _TRACE_PS2_MOUSE_FAKE_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_mouse_fake_event",
+ .sstate = TRACE_PS2_MOUSE_FAKE_EVENT_ENABLED,
+ .dstate = &_TRACE_PS2_MOUSE_FAKE_EVENT_DSTATE
+};
+TraceEvent _TRACE_PS2_WRITE_MOUSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_write_mouse",
+ .sstate = TRACE_PS2_WRITE_MOUSE_ENABLED,
+ .dstate = &_TRACE_PS2_WRITE_MOUSE_DSTATE
+};
+TraceEvent _TRACE_PS2_KBD_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_kbd_reset",
+ .sstate = TRACE_PS2_KBD_RESET_ENABLED,
+ .dstate = &_TRACE_PS2_KBD_RESET_DSTATE
+};
+TraceEvent _TRACE_PS2_MOUSE_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_mouse_reset",
+ .sstate = TRACE_PS2_MOUSE_RESET_ENABLED,
+ .dstate = &_TRACE_PS2_MOUSE_RESET_DSTATE
+};
+TraceEvent _TRACE_PS2_KBD_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_kbd_init",
+ .sstate = TRACE_PS2_KBD_INIT_ENABLED,
+ .dstate = &_TRACE_PS2_KBD_INIT_DSTATE
+};
+TraceEvent _TRACE_PS2_MOUSE_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ps2_mouse_init",
+ .sstate = TRACE_PS2_MOUSE_INIT_ENABLED,
+ .dstate = &_TRACE_PS2_MOUSE_INIT_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_softusb_memory_read",
+ .sstate = TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_softusb_memory_write",
+ .sstate = TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_softusb_mevt",
+ .sstate = TRACE_MILKYMIST_SOFTUSB_MEVT_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SOFTUSB_MEVT_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SOFTUSB_KEVT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_softusb_kevt",
+ .sstate = TRACE_MILKYMIST_SOFTUSB_KEVT_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SOFTUSB_KEVT_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_softusb_pulse_irq",
+ .sstate = TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_DSTATE
+};
+TraceEvent _TRACE_HID_KBD_QUEUE_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hid_kbd_queue_full",
+ .sstate = TRACE_HID_KBD_QUEUE_FULL_ENABLED,
+ .dstate = &_TRACE_HID_KBD_QUEUE_FULL_DSTATE
+};
+TraceEvent _TRACE_HID_KBD_QUEUE_EMPTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hid_kbd_queue_empty",
+ .sstate = TRACE_HID_KBD_QUEUE_EMPTY_ENABLED,
+ .dstate = &_TRACE_HID_KBD_QUEUE_EMPTY_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_INPUT_QUEUE_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_input_queue_full",
+ .sstate = TRACE_VIRTIO_INPUT_QUEUE_FULL_ENABLED,
+ .dstate = &_TRACE_VIRTIO_INPUT_QUEUE_FULL_DSTATE
+};
+TraceEvent *hw_input_trace_events[] = {
+ &_TRACE_ADB_KBD_NO_KEY_EVENT,
+ &_TRACE_ADB_KBD_WRITEREG_EVENT,
+ &_TRACE_ADB_KBD_READREG_EVENT,
+ &_TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_EVENT,
+ &_TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT,
+ &_TRACE_ADB_MOUSE_FLUSH_EVENT,
+ &_TRACE_ADB_MOUSE_WRITEREG_EVENT,
+ &_TRACE_ADB_MOUSE_READREG_EVENT,
+ &_TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_EVENT,
+ &_TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT,
+ &_TRACE_PS2_PUT_KEYCODE_EVENT,
+ &_TRACE_PS2_KEYBOARD_EVENT_EVENT,
+ &_TRACE_PS2_READ_DATA_EVENT,
+ &_TRACE_PS2_SET_LEDSTATE_EVENT,
+ &_TRACE_PS2_RESET_KEYBOARD_EVENT,
+ &_TRACE_PS2_WRITE_KEYBOARD_EVENT,
+ &_TRACE_PS2_KEYBOARD_SET_TRANSLATION_EVENT,
+ &_TRACE_PS2_MOUSE_SEND_PACKET_EVENT,
+ &_TRACE_PS2_MOUSE_FAKE_EVENT_EVENT,
+ &_TRACE_PS2_WRITE_MOUSE_EVENT,
+ &_TRACE_PS2_KBD_RESET_EVENT,
+ &_TRACE_PS2_MOUSE_RESET_EVENT,
+ &_TRACE_PS2_KBD_INIT_EVENT,
+ &_TRACE_PS2_MOUSE_INIT_EVENT,
+ &_TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_SOFTUSB_MEVT_EVENT,
+ &_TRACE_MILKYMIST_SOFTUSB_KEVT_EVENT,
+ &_TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_EVENT,
+ &_TRACE_HID_KBD_QUEUE_FULL_EVENT,
+ &_TRACE_HID_KBD_QUEUE_EMPTY_EVENT,
+ &_TRACE_VIRTIO_INPUT_QUEUE_FULL_EVENT,
+ NULL,
+};
+
+static void trace_hw_input_register_events(void)
+{
+ trace_event_register_group(hw_input_trace_events);
+}
+trace_init(trace_hw_input_register_events)
diff --git a/qemu2-auto-generated/hw/input/trace.h b/qemu2-auto-generated/hw/input/trace.h
new file mode 100644
index 0000000000..0ba87ede7f
--- /dev/null
+++ b/qemu2-auto-generated/hw/input/trace.h
@@ -0,0 +1,553 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_INPUT_GENERATED_TRACERS_H
+#define TRACE_HW_INPUT_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_ADB_KBD_NO_KEY_EVENT;
+extern TraceEvent _TRACE_ADB_KBD_WRITEREG_EVENT;
+extern TraceEvent _TRACE_ADB_KBD_READREG_EVENT;
+extern TraceEvent _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_EVENT;
+extern TraceEvent _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT;
+extern TraceEvent _TRACE_ADB_MOUSE_FLUSH_EVENT;
+extern TraceEvent _TRACE_ADB_MOUSE_WRITEREG_EVENT;
+extern TraceEvent _TRACE_ADB_MOUSE_READREG_EVENT;
+extern TraceEvent _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_EVENT;
+extern TraceEvent _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_EVENT;
+extern TraceEvent _TRACE_PS2_PUT_KEYCODE_EVENT;
+extern TraceEvent _TRACE_PS2_KEYBOARD_EVENT_EVENT;
+extern TraceEvent _TRACE_PS2_READ_DATA_EVENT;
+extern TraceEvent _TRACE_PS2_SET_LEDSTATE_EVENT;
+extern TraceEvent _TRACE_PS2_RESET_KEYBOARD_EVENT;
+extern TraceEvent _TRACE_PS2_WRITE_KEYBOARD_EVENT;
+extern TraceEvent _TRACE_PS2_KEYBOARD_SET_TRANSLATION_EVENT;
+extern TraceEvent _TRACE_PS2_MOUSE_SEND_PACKET_EVENT;
+extern TraceEvent _TRACE_PS2_MOUSE_FAKE_EVENT_EVENT;
+extern TraceEvent _TRACE_PS2_WRITE_MOUSE_EVENT;
+extern TraceEvent _TRACE_PS2_KBD_RESET_EVENT;
+extern TraceEvent _TRACE_PS2_MOUSE_RESET_EVENT;
+extern TraceEvent _TRACE_PS2_KBD_INIT_EVENT;
+extern TraceEvent _TRACE_PS2_MOUSE_INIT_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SOFTUSB_MEVT_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SOFTUSB_KEVT_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_EVENT;
+extern TraceEvent _TRACE_HID_KBD_QUEUE_FULL_EVENT;
+extern TraceEvent _TRACE_HID_KBD_QUEUE_EMPTY_EVENT;
+extern TraceEvent _TRACE_VIRTIO_INPUT_QUEUE_FULL_EVENT;
+extern uint16_t _TRACE_ADB_KBD_NO_KEY_DSTATE;
+extern uint16_t _TRACE_ADB_KBD_WRITEREG_DSTATE;
+extern uint16_t _TRACE_ADB_KBD_READREG_DSTATE;
+extern uint16_t _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_DSTATE;
+extern uint16_t _TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE;
+extern uint16_t _TRACE_ADB_MOUSE_FLUSH_DSTATE;
+extern uint16_t _TRACE_ADB_MOUSE_WRITEREG_DSTATE;
+extern uint16_t _TRACE_ADB_MOUSE_READREG_DSTATE;
+extern uint16_t _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_DSTATE;
+extern uint16_t _TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_DSTATE;
+extern uint16_t _TRACE_PS2_PUT_KEYCODE_DSTATE;
+extern uint16_t _TRACE_PS2_KEYBOARD_EVENT_DSTATE;
+extern uint16_t _TRACE_PS2_READ_DATA_DSTATE;
+extern uint16_t _TRACE_PS2_SET_LEDSTATE_DSTATE;
+extern uint16_t _TRACE_PS2_RESET_KEYBOARD_DSTATE;
+extern uint16_t _TRACE_PS2_WRITE_KEYBOARD_DSTATE;
+extern uint16_t _TRACE_PS2_KEYBOARD_SET_TRANSLATION_DSTATE;
+extern uint16_t _TRACE_PS2_MOUSE_SEND_PACKET_DSTATE;
+extern uint16_t _TRACE_PS2_MOUSE_FAKE_EVENT_DSTATE;
+extern uint16_t _TRACE_PS2_WRITE_MOUSE_DSTATE;
+extern uint16_t _TRACE_PS2_KBD_RESET_DSTATE;
+extern uint16_t _TRACE_PS2_MOUSE_RESET_DSTATE;
+extern uint16_t _TRACE_PS2_KBD_INIT_DSTATE;
+extern uint16_t _TRACE_PS2_MOUSE_INIT_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SOFTUSB_MEVT_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SOFTUSB_KEVT_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_DSTATE;
+extern uint16_t _TRACE_HID_KBD_QUEUE_FULL_DSTATE;
+extern uint16_t _TRACE_HID_KBD_QUEUE_EMPTY_DSTATE;
+extern uint16_t _TRACE_VIRTIO_INPUT_QUEUE_FULL_DSTATE;
+#define TRACE_ADB_KBD_NO_KEY_ENABLED 1
+#define TRACE_ADB_KBD_WRITEREG_ENABLED 1
+#define TRACE_ADB_KBD_READREG_ENABLED 1
+#define TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_ENABLED 1
+#define TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_ENABLED 1
+#define TRACE_ADB_MOUSE_FLUSH_ENABLED 1
+#define TRACE_ADB_MOUSE_WRITEREG_ENABLED 1
+#define TRACE_ADB_MOUSE_READREG_ENABLED 1
+#define TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_ENABLED 1
+#define TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_ENABLED 1
+#define TRACE_PS2_PUT_KEYCODE_ENABLED 1
+#define TRACE_PS2_KEYBOARD_EVENT_ENABLED 1
+#define TRACE_PS2_READ_DATA_ENABLED 1
+#define TRACE_PS2_SET_LEDSTATE_ENABLED 1
+#define TRACE_PS2_RESET_KEYBOARD_ENABLED 1
+#define TRACE_PS2_WRITE_KEYBOARD_ENABLED 1
+#define TRACE_PS2_KEYBOARD_SET_TRANSLATION_ENABLED 1
+#define TRACE_PS2_MOUSE_SEND_PACKET_ENABLED 1
+#define TRACE_PS2_MOUSE_FAKE_EVENT_ENABLED 1
+#define TRACE_PS2_WRITE_MOUSE_ENABLED 1
+#define TRACE_PS2_KBD_RESET_ENABLED 1
+#define TRACE_PS2_MOUSE_RESET_ENABLED 1
+#define TRACE_PS2_KBD_INIT_ENABLED 1
+#define TRACE_PS2_MOUSE_INIT_ENABLED 1
+#define TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_SOFTUSB_MEVT_ENABLED 1
+#define TRACE_MILKYMIST_SOFTUSB_KEVT_ENABLED 1
+#define TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_ENABLED 1
+#define TRACE_HID_KBD_QUEUE_FULL_ENABLED 1
+#define TRACE_HID_KBD_QUEUE_EMPTY_ENABLED 1
+#define TRACE_VIRTIO_INPUT_QUEUE_FULL_ENABLED 1
+
+#define TRACE_ADB_KBD_NO_KEY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_kbd_no_key(void)
+{
+}
+
+static inline void trace_adb_kbd_no_key(void)
+{
+ if (true) {
+ _nocheck__trace_adb_kbd_no_key();
+ }
+}
+
+#define TRACE_ADB_KBD_WRITEREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_kbd_writereg(int reg, uint8_t val)
+{
+}
+
+static inline void trace_adb_kbd_writereg(int reg, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_adb_kbd_writereg(reg, val);
+ }
+}
+
+#define TRACE_ADB_KBD_READREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_kbd_readreg(int reg, uint8_t val0, uint8_t val1)
+{
+}
+
+static inline void trace_adb_kbd_readreg(int reg, uint8_t val0, uint8_t val1)
+{
+ if (true) {
+ _nocheck__trace_adb_kbd_readreg(reg, val0, val1);
+ }
+}
+
+#define TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_kbd_request_change_addr(int devaddr)
+{
+}
+
+static inline void trace_adb_kbd_request_change_addr(int devaddr)
+{
+ if (true) {
+ _nocheck__trace_adb_kbd_request_change_addr(devaddr);
+ }
+}
+
+#define TRACE_ADB_KBD_REQUEST_CHANGE_ADDR_AND_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_kbd_request_change_addr_and_handler(int devaddr, int handler)
+{
+}
+
+static inline void trace_adb_kbd_request_change_addr_and_handler(int devaddr, int handler)
+{
+ if (true) {
+ _nocheck__trace_adb_kbd_request_change_addr_and_handler(devaddr, handler);
+ }
+}
+
+#define TRACE_ADB_MOUSE_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_mouse_flush(void)
+{
+}
+
+static inline void trace_adb_mouse_flush(void)
+{
+ if (true) {
+ _nocheck__trace_adb_mouse_flush();
+ }
+}
+
+#define TRACE_ADB_MOUSE_WRITEREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_mouse_writereg(int reg, uint8_t val)
+{
+}
+
+static inline void trace_adb_mouse_writereg(int reg, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_adb_mouse_writereg(reg, val);
+ }
+}
+
+#define TRACE_ADB_MOUSE_READREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_mouse_readreg(int reg, uint8_t val0, uint8_t val1)
+{
+}
+
+static inline void trace_adb_mouse_readreg(int reg, uint8_t val0, uint8_t val1)
+{
+ if (true) {
+ _nocheck__trace_adb_mouse_readreg(reg, val0, val1);
+ }
+}
+
+#define TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_mouse_request_change_addr(int devaddr)
+{
+}
+
+static inline void trace_adb_mouse_request_change_addr(int devaddr)
+{
+ if (true) {
+ _nocheck__trace_adb_mouse_request_change_addr(devaddr);
+ }
+}
+
+#define TRACE_ADB_MOUSE_REQUEST_CHANGE_ADDR_AND_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_adb_mouse_request_change_addr_and_handler(int devaddr, int handler)
+{
+}
+
+static inline void trace_adb_mouse_request_change_addr_and_handler(int devaddr, int handler)
+{
+ if (true) {
+ _nocheck__trace_adb_mouse_request_change_addr_and_handler(devaddr, handler);
+ }
+}
+
+#define TRACE_PS2_PUT_KEYCODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_put_keycode(void * opaque, int keycode)
+{
+}
+
+static inline void trace_ps2_put_keycode(void * opaque, int keycode)
+{
+ if (true) {
+ _nocheck__trace_ps2_put_keycode(opaque, keycode);
+ }
+}
+
+#define TRACE_PS2_KEYBOARD_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_keyboard_event(void * opaque, int qcode, int down, unsigned int modifier, unsigned int modifiers)
+{
+}
+
+static inline void trace_ps2_keyboard_event(void * opaque, int qcode, int down, unsigned int modifier, unsigned int modifiers)
+{
+ if (true) {
+ _nocheck__trace_ps2_keyboard_event(opaque, qcode, down, modifier, modifiers);
+ }
+}
+
+#define TRACE_PS2_READ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_read_data(void * opaque)
+{
+}
+
+static inline void trace_ps2_read_data(void * opaque)
+{
+ if (true) {
+ _nocheck__trace_ps2_read_data(opaque);
+ }
+}
+
+#define TRACE_PS2_SET_LEDSTATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_set_ledstate(void * s, int ledstate)
+{
+}
+
+static inline void trace_ps2_set_ledstate(void * s, int ledstate)
+{
+ if (true) {
+ _nocheck__trace_ps2_set_ledstate(s, ledstate);
+ }
+}
+
+#define TRACE_PS2_RESET_KEYBOARD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_reset_keyboard(void * s)
+{
+}
+
+static inline void trace_ps2_reset_keyboard(void * s)
+{
+ if (true) {
+ _nocheck__trace_ps2_reset_keyboard(s);
+ }
+}
+
+#define TRACE_PS2_WRITE_KEYBOARD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_write_keyboard(void * opaque, int val)
+{
+}
+
+static inline void trace_ps2_write_keyboard(void * opaque, int val)
+{
+ if (true) {
+ _nocheck__trace_ps2_write_keyboard(opaque, val);
+ }
+}
+
+#define TRACE_PS2_KEYBOARD_SET_TRANSLATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_keyboard_set_translation(void * opaque, int mode)
+{
+}
+
+static inline void trace_ps2_keyboard_set_translation(void * opaque, int mode)
+{
+ if (true) {
+ _nocheck__trace_ps2_keyboard_set_translation(opaque, mode);
+ }
+}
+
+#define TRACE_PS2_MOUSE_SEND_PACKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_mouse_send_packet(void * s, int dx1, int dy1, int dz1, int b)
+{
+}
+
+static inline void trace_ps2_mouse_send_packet(void * s, int dx1, int dy1, int dz1, int b)
+{
+ if (true) {
+ _nocheck__trace_ps2_mouse_send_packet(s, dx1, dy1, dz1, b);
+ }
+}
+
+#define TRACE_PS2_MOUSE_FAKE_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_mouse_fake_event(void * opaque)
+{
+}
+
+static inline void trace_ps2_mouse_fake_event(void * opaque)
+{
+ if (true) {
+ _nocheck__trace_ps2_mouse_fake_event(opaque);
+ }
+}
+
+#define TRACE_PS2_WRITE_MOUSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_write_mouse(void * opaque, int val)
+{
+}
+
+static inline void trace_ps2_write_mouse(void * opaque, int val)
+{
+ if (true) {
+ _nocheck__trace_ps2_write_mouse(opaque, val);
+ }
+}
+
+#define TRACE_PS2_KBD_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_kbd_reset(void * opaque)
+{
+}
+
+static inline void trace_ps2_kbd_reset(void * opaque)
+{
+ if (true) {
+ _nocheck__trace_ps2_kbd_reset(opaque);
+ }
+}
+
+#define TRACE_PS2_MOUSE_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_mouse_reset(void * opaque)
+{
+}
+
+static inline void trace_ps2_mouse_reset(void * opaque)
+{
+ if (true) {
+ _nocheck__trace_ps2_mouse_reset(opaque);
+ }
+}
+
+#define TRACE_PS2_KBD_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_kbd_init(void * s)
+{
+}
+
+static inline void trace_ps2_kbd_init(void * s)
+{
+ if (true) {
+ _nocheck__trace_ps2_kbd_init(s);
+ }
+}
+
+#define TRACE_PS2_MOUSE_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ps2_mouse_init(void * s)
+{
+}
+
+static inline void trace_ps2_mouse_init(void * s)
+{
+ if (true) {
+ _nocheck__trace_ps2_mouse_init(s);
+ }
+}
+
+#define TRACE_MILKYMIST_SOFTUSB_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_softusb_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_softusb_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_softusb_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_SOFTUSB_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_softusb_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_softusb_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_softusb_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_SOFTUSB_MEVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_softusb_mevt(uint8_t m)
+{
+}
+
+static inline void trace_milkymist_softusb_mevt(uint8_t m)
+{
+ if (true) {
+ _nocheck__trace_milkymist_softusb_mevt(m);
+ }
+}
+
+#define TRACE_MILKYMIST_SOFTUSB_KEVT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_softusb_kevt(uint8_t m)
+{
+}
+
+static inline void trace_milkymist_softusb_kevt(uint8_t m)
+{
+ if (true) {
+ _nocheck__trace_milkymist_softusb_kevt(m);
+ }
+}
+
+#define TRACE_MILKYMIST_SOFTUSB_PULSE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_softusb_pulse_irq(void)
+{
+}
+
+static inline void trace_milkymist_softusb_pulse_irq(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_softusb_pulse_irq();
+ }
+}
+
+#define TRACE_HID_KBD_QUEUE_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hid_kbd_queue_full(void)
+{
+}
+
+static inline void trace_hid_kbd_queue_full(void)
+{
+ if (true) {
+ _nocheck__trace_hid_kbd_queue_full();
+ }
+}
+
+#define TRACE_HID_KBD_QUEUE_EMPTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hid_kbd_queue_empty(void)
+{
+}
+
+static inline void trace_hid_kbd_queue_empty(void)
+{
+ if (true) {
+ _nocheck__trace_hid_kbd_queue_empty();
+ }
+}
+
+#define TRACE_VIRTIO_INPUT_QUEUE_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_input_queue_full(void)
+{
+}
+
+static inline void trace_virtio_input_queue_full(void)
+{
+ if (true) {
+ _nocheck__trace_virtio_input_queue_full();
+ }
+}
+#endif /* TRACE_HW_INPUT_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/intc/trace.c b/qemu2-auto-generated/hw/intc/trace.c
new file mode 100644
index 0000000000..32be58769f
--- /dev/null
+++ b/qemu2-auto-generated/hw/intc/trace.c
@@ -0,0 +1,1427 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_PIC_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_PIC_SET_IRQ_DSTATE;
+uint16_t _TRACE_PIC_INTERRUPT_DSTATE;
+uint16_t _TRACE_PIC_IOPORT_WRITE_DSTATE;
+uint16_t _TRACE_PIC_IOPORT_READ_DSTATE;
+uint16_t _TRACE_CPU_SET_APIC_BASE_DSTATE;
+uint16_t _TRACE_CPU_GET_APIC_BASE_DSTATE;
+uint16_t _TRACE_APIC_REPORT_IRQ_DELIVERED_DSTATE;
+uint16_t _TRACE_APIC_RESET_IRQ_DELIVERED_DSTATE;
+uint16_t _TRACE_APIC_GET_IRQ_DELIVERED_DSTATE;
+uint16_t _TRACE_APIC_LOCAL_DELIVER_DSTATE;
+uint16_t _TRACE_APIC_DELIVER_IRQ_DSTATE;
+uint16_t _TRACE_APIC_MEM_READL_DSTATE;
+uint16_t _TRACE_APIC_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_IOAPIC_SET_REMOTE_IRR_DSTATE;
+uint16_t _TRACE_IOAPIC_CLEAR_REMOTE_IRR_DSTATE;
+uint16_t _TRACE_IOAPIC_EOI_BROADCAST_DSTATE;
+uint16_t _TRACE_IOAPIC_MEM_READ_DSTATE;
+uint16_t _TRACE_IOAPIC_MEM_WRITE_DSTATE;
+uint16_t _TRACE_IOAPIC_SET_IRQ_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTL_MEM_READL_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTLM_MEM_READL_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_DSTATE;
+uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_DSTATE;
+uint16_t _TRACE_SLAVIO_CHECK_INTERRUPTS_DSTATE;
+uint16_t _TRACE_SLAVIO_SET_IRQ_DSTATE;
+uint16_t _TRACE_SLAVIO_SET_TIMER_IRQ_CPU_DSTATE;
+uint16_t _TRACE_GRLIB_IRQMP_CHECK_IRQS_DSTATE;
+uint16_t _TRACE_GRLIB_IRQMP_ACK_DSTATE;
+uint16_t _TRACE_GRLIB_IRQMP_SET_IRQ_DSTATE;
+uint16_t _TRACE_GRLIB_IRQMP_READL_UNKNOWN_DSTATE;
+uint16_t _TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_DSTATE;
+uint16_t _TRACE_LM32_PIC_RAISE_IRQ_DSTATE;
+uint16_t _TRACE_LM32_PIC_LOWER_IRQ_DSTATE;
+uint16_t _TRACE_LM32_PIC_INTERRUPT_DSTATE;
+uint16_t _TRACE_LM32_PIC_SET_IM_DSTATE;
+uint16_t _TRACE_LM32_PIC_SET_IP_DSTATE;
+uint16_t _TRACE_LM32_PIC_GET_IM_DSTATE;
+uint16_t _TRACE_LM32_PIC_GET_IP_DSTATE;
+uint16_t _TRACE_XICS_ICP_CHECK_IPI_DSTATE;
+uint16_t _TRACE_XICS_ICP_ACCEPT_DSTATE;
+uint16_t _TRACE_XICS_ICP_EOI_DSTATE;
+uint16_t _TRACE_XICS_ICP_IRQ_DSTATE;
+uint16_t _TRACE_XICS_ICP_RAISE_DSTATE;
+uint16_t _TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_DSTATE;
+uint16_t _TRACE_XICS_MASKED_PENDING_DSTATE;
+uint16_t _TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_DSTATE;
+uint16_t _TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_DSTATE;
+uint16_t _TRACE_XICS_ICS_SIMPLE_REJECT_DSTATE;
+uint16_t _TRACE_XICS_ICS_SIMPLE_EOI_DSTATE;
+uint16_t _TRACE_FLIC_CREATE_DEVICE_DSTATE;
+uint16_t _TRACE_FLIC_NO_DEVICE_API_DSTATE;
+uint16_t _TRACE_FLIC_RESET_FAILED_DSTATE;
+uint16_t _TRACE_QEMU_S390_AIRQ_SUPPRESSED_DSTATE;
+uint16_t _TRACE_QEMU_S390_SUPPRESS_AIRQ_DSTATE;
+uint16_t _TRACE_ASPEED_VIC_SET_IRQ_DSTATE;
+uint16_t _TRACE_ASPEED_VIC_UPDATE_FIQ_DSTATE;
+uint16_t _TRACE_ASPEED_VIC_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_ASPEED_VIC_READ_DSTATE;
+uint16_t _TRACE_ASPEED_VIC_WRITE_DSTATE;
+uint16_t _TRACE_GIC_ENABLE_IRQ_DSTATE;
+uint16_t _TRACE_GIC_DISABLE_IRQ_DSTATE;
+uint16_t _TRACE_GIC_SET_IRQ_DSTATE;
+uint16_t _TRACE_GIC_UPDATE_BESTIRQ_DSTATE;
+uint16_t _TRACE_GIC_UPDATE_SET_IRQ_DSTATE;
+uint16_t _TRACE_GIC_ACKNOWLEDGE_IRQ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_PMR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_PMR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_BPR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_BPR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_AP_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_AP_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IGRPEN_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IGRPEN_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IGRPEN1_EL3_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_CTLR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_CTLR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_CTLR_EL3_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_CTLR_EL3_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_CPUIF_UPDATE_DSTATE;
+uint16_t _TRACE_GICV3_CPUIF_SET_IRQS_DSTATE;
+uint16_t _TRACE_GICV3_ICC_GENERATE_SGI_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IAR0_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_IAR1_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_EOIR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_HPPIR0_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_HPPIR1_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICC_DIR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICC_RPR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_AP_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_AP_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_HCR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_HCR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_VMCR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_VMCR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LR32_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LRC_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LR32_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_LRC_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICH_VTR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_MISR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_EISR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICH_ELRSR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_AP_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_AP_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_BPR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_BPR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_PMR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_PMR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_IGRPEN_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_IGRPEN_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_CTLR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_CTLR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_RPR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_HPPIR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_DIR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_ICV_IAR_READ_DSTATE;
+uint16_t _TRACE_GICV3_ICV_EOIR_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_CPUIF_VIRT_UPDATE_DSTATE;
+uint16_t _TRACE_GICV3_CPUIF_VIRT_SET_IRQS_DSTATE;
+uint16_t _TRACE_GICV3_DIST_READ_DSTATE;
+uint16_t _TRACE_GICV3_DIST_BADREAD_DSTATE;
+uint16_t _TRACE_GICV3_DIST_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_DIST_BADWRITE_DSTATE;
+uint16_t _TRACE_GICV3_DIST_SET_IRQ_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_READ_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_BADREAD_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_WRITE_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_BADWRITE_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_SET_IRQ_DSTATE;
+uint16_t _TRACE_GICV3_REDIST_SEND_SGI_DSTATE;
+uint16_t _TRACE_NVIC_RECOMPUTE_STATE_DSTATE;
+uint16_t _TRACE_NVIC_RECOMPUTE_STATE_SECURE_DSTATE;
+uint16_t _TRACE_NVIC_SET_PRIO_DSTATE;
+uint16_t _TRACE_NVIC_IRQ_UPDATE_DSTATE;
+uint16_t _TRACE_NVIC_ESCALATE_PRIO_DSTATE;
+uint16_t _TRACE_NVIC_ESCALATE_DISABLED_DSTATE;
+uint16_t _TRACE_NVIC_SET_PENDING_DSTATE;
+uint16_t _TRACE_NVIC_CLEAR_PENDING_DSTATE;
+uint16_t _TRACE_NVIC_SET_PENDING_LEVEL_DSTATE;
+uint16_t _TRACE_NVIC_ACKNOWLEDGE_IRQ_DSTATE;
+uint16_t _TRACE_NVIC_GET_PENDING_IRQ_INFO_DSTATE;
+uint16_t _TRACE_NVIC_COMPLETE_IRQ_DSTATE;
+uint16_t _TRACE_NVIC_SET_IRQ_LEVEL_DSTATE;
+uint16_t _TRACE_NVIC_SYSREG_READ_DSTATE;
+uint16_t _TRACE_NVIC_SYSREG_WRITE_DSTATE;
+uint16_t _TRACE_HEATHROW_WRITE_DSTATE;
+uint16_t _TRACE_HEATHROW_READ_DSTATE;
+uint16_t _TRACE_HEATHROW_SET_IRQ_DSTATE;
+TraceEvent _TRACE_PIC_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pic_update_irq",
+ .sstate = TRACE_PIC_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_PIC_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_PIC_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pic_set_irq",
+ .sstate = TRACE_PIC_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_PIC_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_PIC_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pic_interrupt",
+ .sstate = TRACE_PIC_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_PIC_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_PIC_IOPORT_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pic_ioport_write",
+ .sstate = TRACE_PIC_IOPORT_WRITE_ENABLED,
+ .dstate = &_TRACE_PIC_IOPORT_WRITE_DSTATE
+};
+TraceEvent _TRACE_PIC_IOPORT_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pic_ioport_read",
+ .sstate = TRACE_PIC_IOPORT_READ_ENABLED,
+ .dstate = &_TRACE_PIC_IOPORT_READ_DSTATE
+};
+TraceEvent _TRACE_CPU_SET_APIC_BASE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_set_apic_base",
+ .sstate = TRACE_CPU_SET_APIC_BASE_ENABLED,
+ .dstate = &_TRACE_CPU_SET_APIC_BASE_DSTATE
+};
+TraceEvent _TRACE_CPU_GET_APIC_BASE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_get_apic_base",
+ .sstate = TRACE_CPU_GET_APIC_BASE_ENABLED,
+ .dstate = &_TRACE_CPU_GET_APIC_BASE_DSTATE
+};
+TraceEvent _TRACE_APIC_REPORT_IRQ_DELIVERED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_report_irq_delivered",
+ .sstate = TRACE_APIC_REPORT_IRQ_DELIVERED_ENABLED,
+ .dstate = &_TRACE_APIC_REPORT_IRQ_DELIVERED_DSTATE
+};
+TraceEvent _TRACE_APIC_RESET_IRQ_DELIVERED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_reset_irq_delivered",
+ .sstate = TRACE_APIC_RESET_IRQ_DELIVERED_ENABLED,
+ .dstate = &_TRACE_APIC_RESET_IRQ_DELIVERED_DSTATE
+};
+TraceEvent _TRACE_APIC_GET_IRQ_DELIVERED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_get_irq_delivered",
+ .sstate = TRACE_APIC_GET_IRQ_DELIVERED_ENABLED,
+ .dstate = &_TRACE_APIC_GET_IRQ_DELIVERED_DSTATE
+};
+TraceEvent _TRACE_APIC_LOCAL_DELIVER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_local_deliver",
+ .sstate = TRACE_APIC_LOCAL_DELIVER_ENABLED,
+ .dstate = &_TRACE_APIC_LOCAL_DELIVER_DSTATE
+};
+TraceEvent _TRACE_APIC_DELIVER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_deliver_irq",
+ .sstate = TRACE_APIC_DELIVER_IRQ_ENABLED,
+ .dstate = &_TRACE_APIC_DELIVER_IRQ_DSTATE
+};
+TraceEvent _TRACE_APIC_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_mem_readl",
+ .sstate = TRACE_APIC_MEM_READL_ENABLED,
+ .dstate = &_TRACE_APIC_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_APIC_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apic_mem_writel",
+ .sstate = TRACE_APIC_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_APIC_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_SET_REMOTE_IRR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_set_remote_irr",
+ .sstate = TRACE_IOAPIC_SET_REMOTE_IRR_ENABLED,
+ .dstate = &_TRACE_IOAPIC_SET_REMOTE_IRR_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_CLEAR_REMOTE_IRR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_clear_remote_irr",
+ .sstate = TRACE_IOAPIC_CLEAR_REMOTE_IRR_ENABLED,
+ .dstate = &_TRACE_IOAPIC_CLEAR_REMOTE_IRR_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_EOI_BROADCAST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_eoi_broadcast",
+ .sstate = TRACE_IOAPIC_EOI_BROADCAST_ENABLED,
+ .dstate = &_TRACE_IOAPIC_EOI_BROADCAST_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_MEM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_mem_read",
+ .sstate = TRACE_IOAPIC_MEM_READ_ENABLED,
+ .dstate = &_TRACE_IOAPIC_MEM_READ_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_MEM_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_mem_write",
+ .sstate = TRACE_IOAPIC_MEM_WRITE_ENABLED,
+ .dstate = &_TRACE_IOAPIC_MEM_WRITE_DSTATE
+};
+TraceEvent _TRACE_IOAPIC_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioapic_set_irq",
+ .sstate = TRACE_IOAPIC_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_IOAPIC_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTL_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctl_mem_readl",
+ .sstate = TRACE_SLAVIO_INTCTL_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTL_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctl_mem_writel",
+ .sstate = TRACE_SLAVIO_INTCTL_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctl_mem_writel_clear",
+ .sstate = TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctl_mem_writel_set",
+ .sstate = TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctlm_mem_readl",
+ .sstate = TRACE_SLAVIO_INTCTLM_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTLM_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctlm_mem_writel",
+ .sstate = TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctlm_mem_writel_enable",
+ .sstate = TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctlm_mem_writel_disable",
+ .sstate = TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_intctlm_mem_writel_target",
+ .sstate = TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_ENABLED,
+ .dstate = &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_CHECK_INTERRUPTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_check_interrupts",
+ .sstate = TRACE_SLAVIO_CHECK_INTERRUPTS_ENABLED,
+ .dstate = &_TRACE_SLAVIO_CHECK_INTERRUPTS_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_set_irq",
+ .sstate = TRACE_SLAVIO_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_SLAVIO_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_SET_TIMER_IRQ_CPU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_set_timer_irq_cpu",
+ .sstate = TRACE_SLAVIO_SET_TIMER_IRQ_CPU_ENABLED,
+ .dstate = &_TRACE_SLAVIO_SET_TIMER_IRQ_CPU_DSTATE
+};
+TraceEvent _TRACE_GRLIB_IRQMP_CHECK_IRQS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_irqmp_check_irqs",
+ .sstate = TRACE_GRLIB_IRQMP_CHECK_IRQS_ENABLED,
+ .dstate = &_TRACE_GRLIB_IRQMP_CHECK_IRQS_DSTATE
+};
+TraceEvent _TRACE_GRLIB_IRQMP_ACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_irqmp_ack",
+ .sstate = TRACE_GRLIB_IRQMP_ACK_ENABLED,
+ .dstate = &_TRACE_GRLIB_IRQMP_ACK_DSTATE
+};
+TraceEvent _TRACE_GRLIB_IRQMP_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_irqmp_set_irq",
+ .sstate = TRACE_GRLIB_IRQMP_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GRLIB_IRQMP_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_GRLIB_IRQMP_READL_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_irqmp_readl_unknown",
+ .sstate = TRACE_GRLIB_IRQMP_READL_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_GRLIB_IRQMP_READL_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_irqmp_writel_unknown",
+ .sstate = TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_RAISE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_raise_irq",
+ .sstate = TRACE_LM32_PIC_RAISE_IRQ_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_RAISE_IRQ_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_LOWER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_lower_irq",
+ .sstate = TRACE_LM32_PIC_LOWER_IRQ_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_LOWER_IRQ_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_interrupt",
+ .sstate = TRACE_LM32_PIC_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_SET_IM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_set_im",
+ .sstate = TRACE_LM32_PIC_SET_IM_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_SET_IM_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_SET_IP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_set_ip",
+ .sstate = TRACE_LM32_PIC_SET_IP_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_SET_IP_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_GET_IM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_get_im",
+ .sstate = TRACE_LM32_PIC_GET_IM_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_GET_IM_DSTATE
+};
+TraceEvent _TRACE_LM32_PIC_GET_IP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_pic_get_ip",
+ .sstate = TRACE_LM32_PIC_GET_IP_ENABLED,
+ .dstate = &_TRACE_LM32_PIC_GET_IP_DSTATE
+};
+TraceEvent _TRACE_XICS_ICP_CHECK_IPI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_icp_check_ipi",
+ .sstate = TRACE_XICS_ICP_CHECK_IPI_ENABLED,
+ .dstate = &_TRACE_XICS_ICP_CHECK_IPI_DSTATE
+};
+TraceEvent _TRACE_XICS_ICP_ACCEPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_icp_accept",
+ .sstate = TRACE_XICS_ICP_ACCEPT_ENABLED,
+ .dstate = &_TRACE_XICS_ICP_ACCEPT_DSTATE
+};
+TraceEvent _TRACE_XICS_ICP_EOI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_icp_eoi",
+ .sstate = TRACE_XICS_ICP_EOI_ENABLED,
+ .dstate = &_TRACE_XICS_ICP_EOI_DSTATE
+};
+TraceEvent _TRACE_XICS_ICP_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_icp_irq",
+ .sstate = TRACE_XICS_ICP_IRQ_ENABLED,
+ .dstate = &_TRACE_XICS_ICP_IRQ_DSTATE
+};
+TraceEvent _TRACE_XICS_ICP_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_icp_raise",
+ .sstate = TRACE_XICS_ICP_RAISE_ENABLED,
+ .dstate = &_TRACE_XICS_ICP_RAISE_DSTATE
+};
+TraceEvent _TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_ics_simple_set_irq_msi",
+ .sstate = TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_ENABLED,
+ .dstate = &_TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_DSTATE
+};
+TraceEvent _TRACE_XICS_MASKED_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_masked_pending",
+ .sstate = TRACE_XICS_MASKED_PENDING_ENABLED,
+ .dstate = &_TRACE_XICS_MASKED_PENDING_DSTATE
+};
+TraceEvent _TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_ics_simple_set_irq_lsi",
+ .sstate = TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_ENABLED,
+ .dstate = &_TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_DSTATE
+};
+TraceEvent _TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_ics_simple_write_xive",
+ .sstate = TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_ENABLED,
+ .dstate = &_TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_DSTATE
+};
+TraceEvent _TRACE_XICS_ICS_SIMPLE_REJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_ics_simple_reject",
+ .sstate = TRACE_XICS_ICS_SIMPLE_REJECT_ENABLED,
+ .dstate = &_TRACE_XICS_ICS_SIMPLE_REJECT_DSTATE
+};
+TraceEvent _TRACE_XICS_ICS_SIMPLE_EOI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xics_ics_simple_eoi",
+ .sstate = TRACE_XICS_ICS_SIMPLE_EOI_ENABLED,
+ .dstate = &_TRACE_XICS_ICS_SIMPLE_EOI_DSTATE
+};
+TraceEvent _TRACE_FLIC_CREATE_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flic_create_device",
+ .sstate = TRACE_FLIC_CREATE_DEVICE_ENABLED,
+ .dstate = &_TRACE_FLIC_CREATE_DEVICE_DSTATE
+};
+TraceEvent _TRACE_FLIC_NO_DEVICE_API_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flic_no_device_api",
+ .sstate = TRACE_FLIC_NO_DEVICE_API_ENABLED,
+ .dstate = &_TRACE_FLIC_NO_DEVICE_API_DSTATE
+};
+TraceEvent _TRACE_FLIC_RESET_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flic_reset_failed",
+ .sstate = TRACE_FLIC_RESET_FAILED_ENABLED,
+ .dstate = &_TRACE_FLIC_RESET_FAILED_DSTATE
+};
+TraceEvent _TRACE_QEMU_S390_AIRQ_SUPPRESSED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_s390_airq_suppressed",
+ .sstate = TRACE_QEMU_S390_AIRQ_SUPPRESSED_ENABLED,
+ .dstate = &_TRACE_QEMU_S390_AIRQ_SUPPRESSED_DSTATE
+};
+TraceEvent _TRACE_QEMU_S390_SUPPRESS_AIRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_s390_suppress_airq",
+ .sstate = TRACE_QEMU_S390_SUPPRESS_AIRQ_ENABLED,
+ .dstate = &_TRACE_QEMU_S390_SUPPRESS_AIRQ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_VIC_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_vic_set_irq",
+ .sstate = TRACE_ASPEED_VIC_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_ASPEED_VIC_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_VIC_UPDATE_FIQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_vic_update_fiq",
+ .sstate = TRACE_ASPEED_VIC_UPDATE_FIQ_ENABLED,
+ .dstate = &_TRACE_ASPEED_VIC_UPDATE_FIQ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_VIC_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_vic_update_irq",
+ .sstate = TRACE_ASPEED_VIC_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_ASPEED_VIC_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_VIC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_vic_read",
+ .sstate = TRACE_ASPEED_VIC_READ_ENABLED,
+ .dstate = &_TRACE_ASPEED_VIC_READ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_VIC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_vic_write",
+ .sstate = TRACE_ASPEED_VIC_WRITE_ENABLED,
+ .dstate = &_TRACE_ASPEED_VIC_WRITE_DSTATE
+};
+TraceEvent _TRACE_GIC_ENABLE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_enable_irq",
+ .sstate = TRACE_GIC_ENABLE_IRQ_ENABLED,
+ .dstate = &_TRACE_GIC_ENABLE_IRQ_DSTATE
+};
+TraceEvent _TRACE_GIC_DISABLE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_disable_irq",
+ .sstate = TRACE_GIC_DISABLE_IRQ_ENABLED,
+ .dstate = &_TRACE_GIC_DISABLE_IRQ_DSTATE
+};
+TraceEvent _TRACE_GIC_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_set_irq",
+ .sstate = TRACE_GIC_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GIC_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_GIC_UPDATE_BESTIRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_update_bestirq",
+ .sstate = TRACE_GIC_UPDATE_BESTIRQ_ENABLED,
+ .dstate = &_TRACE_GIC_UPDATE_BESTIRQ_DSTATE
+};
+TraceEvent _TRACE_GIC_UPDATE_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_update_set_irq",
+ .sstate = TRACE_GIC_UPDATE_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GIC_UPDATE_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_GIC_ACKNOWLEDGE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gic_acknowledge_irq",
+ .sstate = TRACE_GIC_ACKNOWLEDGE_IRQ_ENABLED,
+ .dstate = &_TRACE_GIC_ACKNOWLEDGE_IRQ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_PMR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_pmr_read",
+ .sstate = TRACE_GICV3_ICC_PMR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_PMR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_PMR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_pmr_write",
+ .sstate = TRACE_GICV3_ICC_PMR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_PMR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_BPR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_bpr_read",
+ .sstate = TRACE_GICV3_ICC_BPR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_BPR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_BPR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_bpr_write",
+ .sstate = TRACE_GICV3_ICC_BPR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_BPR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_AP_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ap_read",
+ .sstate = TRACE_GICV3_ICC_AP_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_AP_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_AP_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ap_write",
+ .sstate = TRACE_GICV3_ICC_AP_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_AP_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IGRPEN_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_igrpen_read",
+ .sstate = TRACE_GICV3_ICC_IGRPEN_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IGRPEN_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IGRPEN_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_igrpen_write",
+ .sstate = TRACE_GICV3_ICC_IGRPEN_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IGRPEN_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IGRPEN1_EL3_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_igrpen1_el3_read",
+ .sstate = TRACE_GICV3_ICC_IGRPEN1_EL3_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IGRPEN1_EL3_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_igrpen1_el3_write",
+ .sstate = TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_CTLR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ctlr_read",
+ .sstate = TRACE_GICV3_ICC_CTLR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_CTLR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_CTLR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ctlr_write",
+ .sstate = TRACE_GICV3_ICC_CTLR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_CTLR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_CTLR_EL3_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ctlr_el3_read",
+ .sstate = TRACE_GICV3_ICC_CTLR_EL3_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_CTLR_EL3_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_CTLR_EL3_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_ctlr_el3_write",
+ .sstate = TRACE_GICV3_ICC_CTLR_EL3_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_CTLR_EL3_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_CPUIF_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_cpuif_update",
+ .sstate = TRACE_GICV3_CPUIF_UPDATE_ENABLED,
+ .dstate = &_TRACE_GICV3_CPUIF_UPDATE_DSTATE
+};
+TraceEvent _TRACE_GICV3_CPUIF_SET_IRQS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_cpuif_set_irqs",
+ .sstate = TRACE_GICV3_CPUIF_SET_IRQS_ENABLED,
+ .dstate = &_TRACE_GICV3_CPUIF_SET_IRQS_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_GENERATE_SGI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_generate_sgi",
+ .sstate = TRACE_GICV3_ICC_GENERATE_SGI_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_GENERATE_SGI_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IAR0_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_iar0_read",
+ .sstate = TRACE_GICV3_ICC_IAR0_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IAR0_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_IAR1_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_iar1_read",
+ .sstate = TRACE_GICV3_ICC_IAR1_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_IAR1_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_EOIR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_eoir_write",
+ .sstate = TRACE_GICV3_ICC_EOIR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_EOIR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_HPPIR0_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_hppir0_read",
+ .sstate = TRACE_GICV3_ICC_HPPIR0_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_HPPIR0_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_HPPIR1_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_hppir1_read",
+ .sstate = TRACE_GICV3_ICC_HPPIR1_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_HPPIR1_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_DIR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_dir_write",
+ .sstate = TRACE_GICV3_ICC_DIR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_DIR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICC_RPR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icc_rpr_read",
+ .sstate = TRACE_GICV3_ICC_RPR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICC_RPR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_AP_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_ap_read",
+ .sstate = TRACE_GICV3_ICH_AP_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_AP_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_AP_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_ap_write",
+ .sstate = TRACE_GICV3_ICH_AP_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_AP_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_HCR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_hcr_read",
+ .sstate = TRACE_GICV3_ICH_HCR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_HCR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_HCR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_hcr_write",
+ .sstate = TRACE_GICV3_ICH_HCR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_HCR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_VMCR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_vmcr_read",
+ .sstate = TRACE_GICV3_ICH_VMCR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_VMCR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_VMCR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_vmcr_write",
+ .sstate = TRACE_GICV3_ICH_VMCR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_VMCR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lr_read",
+ .sstate = TRACE_GICV3_ICH_LR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LR32_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lr32_read",
+ .sstate = TRACE_GICV3_ICH_LR32_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LR32_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LRC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lrc_read",
+ .sstate = TRACE_GICV3_ICH_LRC_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LRC_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lr_write",
+ .sstate = TRACE_GICV3_ICH_LR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LR32_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lr32_write",
+ .sstate = TRACE_GICV3_ICH_LR32_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LR32_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_LRC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_lrc_write",
+ .sstate = TRACE_GICV3_ICH_LRC_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_LRC_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_VTR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_vtr_read",
+ .sstate = TRACE_GICV3_ICH_VTR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_VTR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_MISR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_misr_read",
+ .sstate = TRACE_GICV3_ICH_MISR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_MISR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_EISR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_eisr_read",
+ .sstate = TRACE_GICV3_ICH_EISR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_EISR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICH_ELRSR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_ich_elrsr_read",
+ .sstate = TRACE_GICV3_ICH_ELRSR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICH_ELRSR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_AP_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_ap_read",
+ .sstate = TRACE_GICV3_ICV_AP_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_AP_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_AP_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_ap_write",
+ .sstate = TRACE_GICV3_ICV_AP_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_AP_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_BPR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_bpr_read",
+ .sstate = TRACE_GICV3_ICV_BPR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_BPR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_BPR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_bpr_write",
+ .sstate = TRACE_GICV3_ICV_BPR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_BPR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_PMR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_pmr_read",
+ .sstate = TRACE_GICV3_ICV_PMR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_PMR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_PMR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_pmr_write",
+ .sstate = TRACE_GICV3_ICV_PMR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_PMR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_IGRPEN_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_igrpen_read",
+ .sstate = TRACE_GICV3_ICV_IGRPEN_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_IGRPEN_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_IGRPEN_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_igrpen_write",
+ .sstate = TRACE_GICV3_ICV_IGRPEN_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_IGRPEN_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_CTLR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_ctlr_read",
+ .sstate = TRACE_GICV3_ICV_CTLR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_CTLR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_CTLR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_ctlr_write",
+ .sstate = TRACE_GICV3_ICV_CTLR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_CTLR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_RPR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_rpr_read",
+ .sstate = TRACE_GICV3_ICV_RPR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_RPR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_HPPIR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_hppir_read",
+ .sstate = TRACE_GICV3_ICV_HPPIR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_HPPIR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_DIR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_dir_write",
+ .sstate = TRACE_GICV3_ICV_DIR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_DIR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_IAR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_iar_read",
+ .sstate = TRACE_GICV3_ICV_IAR_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_IAR_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_ICV_EOIR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_icv_eoir_write",
+ .sstate = TRACE_GICV3_ICV_EOIR_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_ICV_EOIR_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_CPUIF_VIRT_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_cpuif_virt_update",
+ .sstate = TRACE_GICV3_CPUIF_VIRT_UPDATE_ENABLED,
+ .dstate = &_TRACE_GICV3_CPUIF_VIRT_UPDATE_DSTATE
+};
+TraceEvent _TRACE_GICV3_CPUIF_VIRT_SET_IRQS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_cpuif_virt_set_irqs",
+ .sstate = TRACE_GICV3_CPUIF_VIRT_SET_IRQS_ENABLED,
+ .dstate = &_TRACE_GICV3_CPUIF_VIRT_SET_IRQS_DSTATE
+};
+TraceEvent _TRACE_GICV3_DIST_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_dist_read",
+ .sstate = TRACE_GICV3_DIST_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_DIST_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_DIST_BADREAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_dist_badread",
+ .sstate = TRACE_GICV3_DIST_BADREAD_ENABLED,
+ .dstate = &_TRACE_GICV3_DIST_BADREAD_DSTATE
+};
+TraceEvent _TRACE_GICV3_DIST_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_dist_write",
+ .sstate = TRACE_GICV3_DIST_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_DIST_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_DIST_BADWRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_dist_badwrite",
+ .sstate = TRACE_GICV3_DIST_BADWRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_DIST_BADWRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_DIST_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_dist_set_irq",
+ .sstate = TRACE_GICV3_DIST_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GICV3_DIST_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_read",
+ .sstate = TRACE_GICV3_REDIST_READ_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_READ_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_BADREAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_badread",
+ .sstate = TRACE_GICV3_REDIST_BADREAD_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_BADREAD_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_write",
+ .sstate = TRACE_GICV3_REDIST_WRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_WRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_BADWRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_badwrite",
+ .sstate = TRACE_GICV3_REDIST_BADWRITE_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_BADWRITE_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_set_irq",
+ .sstate = TRACE_GICV3_REDIST_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_GICV3_REDIST_SEND_SGI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gicv3_redist_send_sgi",
+ .sstate = TRACE_GICV3_REDIST_SEND_SGI_ENABLED,
+ .dstate = &_TRACE_GICV3_REDIST_SEND_SGI_DSTATE
+};
+TraceEvent _TRACE_NVIC_RECOMPUTE_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_recompute_state",
+ .sstate = TRACE_NVIC_RECOMPUTE_STATE_ENABLED,
+ .dstate = &_TRACE_NVIC_RECOMPUTE_STATE_DSTATE
+};
+TraceEvent _TRACE_NVIC_RECOMPUTE_STATE_SECURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_recompute_state_secure",
+ .sstate = TRACE_NVIC_RECOMPUTE_STATE_SECURE_ENABLED,
+ .dstate = &_TRACE_NVIC_RECOMPUTE_STATE_SECURE_DSTATE
+};
+TraceEvent _TRACE_NVIC_SET_PRIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_set_prio",
+ .sstate = TRACE_NVIC_SET_PRIO_ENABLED,
+ .dstate = &_TRACE_NVIC_SET_PRIO_DSTATE
+};
+TraceEvent _TRACE_NVIC_IRQ_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_irq_update",
+ .sstate = TRACE_NVIC_IRQ_UPDATE_ENABLED,
+ .dstate = &_TRACE_NVIC_IRQ_UPDATE_DSTATE
+};
+TraceEvent _TRACE_NVIC_ESCALATE_PRIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_escalate_prio",
+ .sstate = TRACE_NVIC_ESCALATE_PRIO_ENABLED,
+ .dstate = &_TRACE_NVIC_ESCALATE_PRIO_DSTATE
+};
+TraceEvent _TRACE_NVIC_ESCALATE_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_escalate_disabled",
+ .sstate = TRACE_NVIC_ESCALATE_DISABLED_ENABLED,
+ .dstate = &_TRACE_NVIC_ESCALATE_DISABLED_DSTATE
+};
+TraceEvent _TRACE_NVIC_SET_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_set_pending",
+ .sstate = TRACE_NVIC_SET_PENDING_ENABLED,
+ .dstate = &_TRACE_NVIC_SET_PENDING_DSTATE
+};
+TraceEvent _TRACE_NVIC_CLEAR_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_clear_pending",
+ .sstate = TRACE_NVIC_CLEAR_PENDING_ENABLED,
+ .dstate = &_TRACE_NVIC_CLEAR_PENDING_DSTATE
+};
+TraceEvent _TRACE_NVIC_SET_PENDING_LEVEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_set_pending_level",
+ .sstate = TRACE_NVIC_SET_PENDING_LEVEL_ENABLED,
+ .dstate = &_TRACE_NVIC_SET_PENDING_LEVEL_DSTATE
+};
+TraceEvent _TRACE_NVIC_ACKNOWLEDGE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_acknowledge_irq",
+ .sstate = TRACE_NVIC_ACKNOWLEDGE_IRQ_ENABLED,
+ .dstate = &_TRACE_NVIC_ACKNOWLEDGE_IRQ_DSTATE
+};
+TraceEvent _TRACE_NVIC_GET_PENDING_IRQ_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_get_pending_irq_info",
+ .sstate = TRACE_NVIC_GET_PENDING_IRQ_INFO_ENABLED,
+ .dstate = &_TRACE_NVIC_GET_PENDING_IRQ_INFO_DSTATE
+};
+TraceEvent _TRACE_NVIC_COMPLETE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_complete_irq",
+ .sstate = TRACE_NVIC_COMPLETE_IRQ_ENABLED,
+ .dstate = &_TRACE_NVIC_COMPLETE_IRQ_DSTATE
+};
+TraceEvent _TRACE_NVIC_SET_IRQ_LEVEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_set_irq_level",
+ .sstate = TRACE_NVIC_SET_IRQ_LEVEL_ENABLED,
+ .dstate = &_TRACE_NVIC_SET_IRQ_LEVEL_DSTATE
+};
+TraceEvent _TRACE_NVIC_SYSREG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_sysreg_read",
+ .sstate = TRACE_NVIC_SYSREG_READ_ENABLED,
+ .dstate = &_TRACE_NVIC_SYSREG_READ_DSTATE
+};
+TraceEvent _TRACE_NVIC_SYSREG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvic_sysreg_write",
+ .sstate = TRACE_NVIC_SYSREG_WRITE_ENABLED,
+ .dstate = &_TRACE_NVIC_SYSREG_WRITE_DSTATE
+};
+TraceEvent _TRACE_HEATHROW_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "heathrow_write",
+ .sstate = TRACE_HEATHROW_WRITE_ENABLED,
+ .dstate = &_TRACE_HEATHROW_WRITE_DSTATE
+};
+TraceEvent _TRACE_HEATHROW_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "heathrow_read",
+ .sstate = TRACE_HEATHROW_READ_ENABLED,
+ .dstate = &_TRACE_HEATHROW_READ_DSTATE
+};
+TraceEvent _TRACE_HEATHROW_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "heathrow_set_irq",
+ .sstate = TRACE_HEATHROW_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_HEATHROW_SET_IRQ_DSTATE
+};
+TraceEvent *hw_intc_trace_events[] = {
+ &_TRACE_PIC_UPDATE_IRQ_EVENT,
+ &_TRACE_PIC_SET_IRQ_EVENT,
+ &_TRACE_PIC_INTERRUPT_EVENT,
+ &_TRACE_PIC_IOPORT_WRITE_EVENT,
+ &_TRACE_PIC_IOPORT_READ_EVENT,
+ &_TRACE_CPU_SET_APIC_BASE_EVENT,
+ &_TRACE_CPU_GET_APIC_BASE_EVENT,
+ &_TRACE_APIC_REPORT_IRQ_DELIVERED_EVENT,
+ &_TRACE_APIC_RESET_IRQ_DELIVERED_EVENT,
+ &_TRACE_APIC_GET_IRQ_DELIVERED_EVENT,
+ &_TRACE_APIC_LOCAL_DELIVER_EVENT,
+ &_TRACE_APIC_DELIVER_IRQ_EVENT,
+ &_TRACE_APIC_MEM_READL_EVENT,
+ &_TRACE_APIC_MEM_WRITEL_EVENT,
+ &_TRACE_IOAPIC_SET_REMOTE_IRR_EVENT,
+ &_TRACE_IOAPIC_CLEAR_REMOTE_IRR_EVENT,
+ &_TRACE_IOAPIC_EOI_BROADCAST_EVENT,
+ &_TRACE_IOAPIC_MEM_READ_EVENT,
+ &_TRACE_IOAPIC_MEM_WRITE_EVENT,
+ &_TRACE_IOAPIC_SET_IRQ_EVENT,
+ &_TRACE_SLAVIO_INTCTL_MEM_READL_EVENT,
+ &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_EVENT,
+ &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_EVENT,
+ &_TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_EVENT,
+ &_TRACE_SLAVIO_INTCTLM_MEM_READL_EVENT,
+ &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_EVENT,
+ &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_EVENT,
+ &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_EVENT,
+ &_TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_EVENT,
+ &_TRACE_SLAVIO_CHECK_INTERRUPTS_EVENT,
+ &_TRACE_SLAVIO_SET_IRQ_EVENT,
+ &_TRACE_SLAVIO_SET_TIMER_IRQ_CPU_EVENT,
+ &_TRACE_GRLIB_IRQMP_CHECK_IRQS_EVENT,
+ &_TRACE_GRLIB_IRQMP_ACK_EVENT,
+ &_TRACE_GRLIB_IRQMP_SET_IRQ_EVENT,
+ &_TRACE_GRLIB_IRQMP_READL_UNKNOWN_EVENT,
+ &_TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_EVENT,
+ &_TRACE_LM32_PIC_RAISE_IRQ_EVENT,
+ &_TRACE_LM32_PIC_LOWER_IRQ_EVENT,
+ &_TRACE_LM32_PIC_INTERRUPT_EVENT,
+ &_TRACE_LM32_PIC_SET_IM_EVENT,
+ &_TRACE_LM32_PIC_SET_IP_EVENT,
+ &_TRACE_LM32_PIC_GET_IM_EVENT,
+ &_TRACE_LM32_PIC_GET_IP_EVENT,
+ &_TRACE_XICS_ICP_CHECK_IPI_EVENT,
+ &_TRACE_XICS_ICP_ACCEPT_EVENT,
+ &_TRACE_XICS_ICP_EOI_EVENT,
+ &_TRACE_XICS_ICP_IRQ_EVENT,
+ &_TRACE_XICS_ICP_RAISE_EVENT,
+ &_TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_EVENT,
+ &_TRACE_XICS_MASKED_PENDING_EVENT,
+ &_TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_EVENT,
+ &_TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_EVENT,
+ &_TRACE_XICS_ICS_SIMPLE_REJECT_EVENT,
+ &_TRACE_XICS_ICS_SIMPLE_EOI_EVENT,
+ &_TRACE_FLIC_CREATE_DEVICE_EVENT,
+ &_TRACE_FLIC_NO_DEVICE_API_EVENT,
+ &_TRACE_FLIC_RESET_FAILED_EVENT,
+ &_TRACE_QEMU_S390_AIRQ_SUPPRESSED_EVENT,
+ &_TRACE_QEMU_S390_SUPPRESS_AIRQ_EVENT,
+ &_TRACE_ASPEED_VIC_SET_IRQ_EVENT,
+ &_TRACE_ASPEED_VIC_UPDATE_FIQ_EVENT,
+ &_TRACE_ASPEED_VIC_UPDATE_IRQ_EVENT,
+ &_TRACE_ASPEED_VIC_READ_EVENT,
+ &_TRACE_ASPEED_VIC_WRITE_EVENT,
+ &_TRACE_GIC_ENABLE_IRQ_EVENT,
+ &_TRACE_GIC_DISABLE_IRQ_EVENT,
+ &_TRACE_GIC_SET_IRQ_EVENT,
+ &_TRACE_GIC_UPDATE_BESTIRQ_EVENT,
+ &_TRACE_GIC_UPDATE_SET_IRQ_EVENT,
+ &_TRACE_GIC_ACKNOWLEDGE_IRQ_EVENT,
+ &_TRACE_GICV3_ICC_PMR_READ_EVENT,
+ &_TRACE_GICV3_ICC_PMR_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_BPR_READ_EVENT,
+ &_TRACE_GICV3_ICC_BPR_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_AP_READ_EVENT,
+ &_TRACE_GICV3_ICC_AP_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_IGRPEN_READ_EVENT,
+ &_TRACE_GICV3_ICC_IGRPEN_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_IGRPEN1_EL3_READ_EVENT,
+ &_TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_CTLR_READ_EVENT,
+ &_TRACE_GICV3_ICC_CTLR_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_CTLR_EL3_READ_EVENT,
+ &_TRACE_GICV3_ICC_CTLR_EL3_WRITE_EVENT,
+ &_TRACE_GICV3_CPUIF_UPDATE_EVENT,
+ &_TRACE_GICV3_CPUIF_SET_IRQS_EVENT,
+ &_TRACE_GICV3_ICC_GENERATE_SGI_EVENT,
+ &_TRACE_GICV3_ICC_IAR0_READ_EVENT,
+ &_TRACE_GICV3_ICC_IAR1_READ_EVENT,
+ &_TRACE_GICV3_ICC_EOIR_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_HPPIR0_READ_EVENT,
+ &_TRACE_GICV3_ICC_HPPIR1_READ_EVENT,
+ &_TRACE_GICV3_ICC_DIR_WRITE_EVENT,
+ &_TRACE_GICV3_ICC_RPR_READ_EVENT,
+ &_TRACE_GICV3_ICH_AP_READ_EVENT,
+ &_TRACE_GICV3_ICH_AP_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_HCR_READ_EVENT,
+ &_TRACE_GICV3_ICH_HCR_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_VMCR_READ_EVENT,
+ &_TRACE_GICV3_ICH_VMCR_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_LR_READ_EVENT,
+ &_TRACE_GICV3_ICH_LR32_READ_EVENT,
+ &_TRACE_GICV3_ICH_LRC_READ_EVENT,
+ &_TRACE_GICV3_ICH_LR_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_LR32_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_LRC_WRITE_EVENT,
+ &_TRACE_GICV3_ICH_VTR_READ_EVENT,
+ &_TRACE_GICV3_ICH_MISR_READ_EVENT,
+ &_TRACE_GICV3_ICH_EISR_READ_EVENT,
+ &_TRACE_GICV3_ICH_ELRSR_READ_EVENT,
+ &_TRACE_GICV3_ICV_AP_READ_EVENT,
+ &_TRACE_GICV3_ICV_AP_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_BPR_READ_EVENT,
+ &_TRACE_GICV3_ICV_BPR_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_PMR_READ_EVENT,
+ &_TRACE_GICV3_ICV_PMR_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_IGRPEN_READ_EVENT,
+ &_TRACE_GICV3_ICV_IGRPEN_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_CTLR_READ_EVENT,
+ &_TRACE_GICV3_ICV_CTLR_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_RPR_READ_EVENT,
+ &_TRACE_GICV3_ICV_HPPIR_READ_EVENT,
+ &_TRACE_GICV3_ICV_DIR_WRITE_EVENT,
+ &_TRACE_GICV3_ICV_IAR_READ_EVENT,
+ &_TRACE_GICV3_ICV_EOIR_WRITE_EVENT,
+ &_TRACE_GICV3_CPUIF_VIRT_UPDATE_EVENT,
+ &_TRACE_GICV3_CPUIF_VIRT_SET_IRQS_EVENT,
+ &_TRACE_GICV3_DIST_READ_EVENT,
+ &_TRACE_GICV3_DIST_BADREAD_EVENT,
+ &_TRACE_GICV3_DIST_WRITE_EVENT,
+ &_TRACE_GICV3_DIST_BADWRITE_EVENT,
+ &_TRACE_GICV3_DIST_SET_IRQ_EVENT,
+ &_TRACE_GICV3_REDIST_READ_EVENT,
+ &_TRACE_GICV3_REDIST_BADREAD_EVENT,
+ &_TRACE_GICV3_REDIST_WRITE_EVENT,
+ &_TRACE_GICV3_REDIST_BADWRITE_EVENT,
+ &_TRACE_GICV3_REDIST_SET_IRQ_EVENT,
+ &_TRACE_GICV3_REDIST_SEND_SGI_EVENT,
+ &_TRACE_NVIC_RECOMPUTE_STATE_EVENT,
+ &_TRACE_NVIC_RECOMPUTE_STATE_SECURE_EVENT,
+ &_TRACE_NVIC_SET_PRIO_EVENT,
+ &_TRACE_NVIC_IRQ_UPDATE_EVENT,
+ &_TRACE_NVIC_ESCALATE_PRIO_EVENT,
+ &_TRACE_NVIC_ESCALATE_DISABLED_EVENT,
+ &_TRACE_NVIC_SET_PENDING_EVENT,
+ &_TRACE_NVIC_CLEAR_PENDING_EVENT,
+ &_TRACE_NVIC_SET_PENDING_LEVEL_EVENT,
+ &_TRACE_NVIC_ACKNOWLEDGE_IRQ_EVENT,
+ &_TRACE_NVIC_GET_PENDING_IRQ_INFO_EVENT,
+ &_TRACE_NVIC_COMPLETE_IRQ_EVENT,
+ &_TRACE_NVIC_SET_IRQ_LEVEL_EVENT,
+ &_TRACE_NVIC_SYSREG_READ_EVENT,
+ &_TRACE_NVIC_SYSREG_WRITE_EVENT,
+ &_TRACE_HEATHROW_WRITE_EVENT,
+ &_TRACE_HEATHROW_READ_EVENT,
+ &_TRACE_HEATHROW_SET_IRQ_EVENT,
+ NULL,
+};
+
+static void trace_hw_intc_register_events(void)
+{
+ trace_event_register_group(hw_intc_trace_events);
+}
+trace_init(trace_hw_intc_register_events)
diff --git a/qemu2-auto-generated/hw/intc/trace.h b/qemu2-auto-generated/hw/intc/trace.h
new file mode 100644
index 0000000000..c09d74709c
--- /dev/null
+++ b/qemu2-auto-generated/hw/intc/trace.h
@@ -0,0 +1,2678 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_INTC_GENERATED_TRACERS_H
+#define TRACE_HW_INTC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_PIC_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_PIC_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_PIC_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_PIC_IOPORT_WRITE_EVENT;
+extern TraceEvent _TRACE_PIC_IOPORT_READ_EVENT;
+extern TraceEvent _TRACE_CPU_SET_APIC_BASE_EVENT;
+extern TraceEvent _TRACE_CPU_GET_APIC_BASE_EVENT;
+extern TraceEvent _TRACE_APIC_REPORT_IRQ_DELIVERED_EVENT;
+extern TraceEvent _TRACE_APIC_RESET_IRQ_DELIVERED_EVENT;
+extern TraceEvent _TRACE_APIC_GET_IRQ_DELIVERED_EVENT;
+extern TraceEvent _TRACE_APIC_LOCAL_DELIVER_EVENT;
+extern TraceEvent _TRACE_APIC_DELIVER_IRQ_EVENT;
+extern TraceEvent _TRACE_APIC_MEM_READL_EVENT;
+extern TraceEvent _TRACE_APIC_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_IOAPIC_SET_REMOTE_IRR_EVENT;
+extern TraceEvent _TRACE_IOAPIC_CLEAR_REMOTE_IRR_EVENT;
+extern TraceEvent _TRACE_IOAPIC_EOI_BROADCAST_EVENT;
+extern TraceEvent _TRACE_IOAPIC_MEM_READ_EVENT;
+extern TraceEvent _TRACE_IOAPIC_MEM_WRITE_EVENT;
+extern TraceEvent _TRACE_IOAPIC_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTL_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_EVENT;
+extern TraceEvent _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_EVENT;
+extern TraceEvent _TRACE_SLAVIO_CHECK_INTERRUPTS_EVENT;
+extern TraceEvent _TRACE_SLAVIO_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_SLAVIO_SET_TIMER_IRQ_CPU_EVENT;
+extern TraceEvent _TRACE_GRLIB_IRQMP_CHECK_IRQS_EVENT;
+extern TraceEvent _TRACE_GRLIB_IRQMP_ACK_EVENT;
+extern TraceEvent _TRACE_GRLIB_IRQMP_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_GRLIB_IRQMP_READL_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_RAISE_IRQ_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_LOWER_IRQ_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_SET_IM_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_SET_IP_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_GET_IM_EVENT;
+extern TraceEvent _TRACE_LM32_PIC_GET_IP_EVENT;
+extern TraceEvent _TRACE_XICS_ICP_CHECK_IPI_EVENT;
+extern TraceEvent _TRACE_XICS_ICP_ACCEPT_EVENT;
+extern TraceEvent _TRACE_XICS_ICP_EOI_EVENT;
+extern TraceEvent _TRACE_XICS_ICP_IRQ_EVENT;
+extern TraceEvent _TRACE_XICS_ICP_RAISE_EVENT;
+extern TraceEvent _TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_EVENT;
+extern TraceEvent _TRACE_XICS_MASKED_PENDING_EVENT;
+extern TraceEvent _TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_EVENT;
+extern TraceEvent _TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_EVENT;
+extern TraceEvent _TRACE_XICS_ICS_SIMPLE_REJECT_EVENT;
+extern TraceEvent _TRACE_XICS_ICS_SIMPLE_EOI_EVENT;
+extern TraceEvent _TRACE_FLIC_CREATE_DEVICE_EVENT;
+extern TraceEvent _TRACE_FLIC_NO_DEVICE_API_EVENT;
+extern TraceEvent _TRACE_FLIC_RESET_FAILED_EVENT;
+extern TraceEvent _TRACE_QEMU_S390_AIRQ_SUPPRESSED_EVENT;
+extern TraceEvent _TRACE_QEMU_S390_SUPPRESS_AIRQ_EVENT;
+extern TraceEvent _TRACE_ASPEED_VIC_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_ASPEED_VIC_UPDATE_FIQ_EVENT;
+extern TraceEvent _TRACE_ASPEED_VIC_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_ASPEED_VIC_READ_EVENT;
+extern TraceEvent _TRACE_ASPEED_VIC_WRITE_EVENT;
+extern TraceEvent _TRACE_GIC_ENABLE_IRQ_EVENT;
+extern TraceEvent _TRACE_GIC_DISABLE_IRQ_EVENT;
+extern TraceEvent _TRACE_GIC_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_GIC_UPDATE_BESTIRQ_EVENT;
+extern TraceEvent _TRACE_GIC_UPDATE_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_GIC_ACKNOWLEDGE_IRQ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_PMR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_PMR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_BPR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_BPR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_AP_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_AP_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IGRPEN_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IGRPEN_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IGRPEN1_EL3_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_CTLR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_CTLR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_CTLR_EL3_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_CTLR_EL3_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_CPUIF_UPDATE_EVENT;
+extern TraceEvent _TRACE_GICV3_CPUIF_SET_IRQS_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_GENERATE_SGI_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IAR0_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_IAR1_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_EOIR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_HPPIR0_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_HPPIR1_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_DIR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICC_RPR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_AP_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_AP_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_HCR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_HCR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_VMCR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_VMCR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LR32_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LRC_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LR32_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_LRC_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_VTR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_MISR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_EISR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICH_ELRSR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_AP_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_AP_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_BPR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_BPR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_PMR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_PMR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_IGRPEN_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_IGRPEN_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_CTLR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_CTLR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_RPR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_HPPIR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_DIR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_IAR_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_ICV_EOIR_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_CPUIF_VIRT_UPDATE_EVENT;
+extern TraceEvent _TRACE_GICV3_CPUIF_VIRT_SET_IRQS_EVENT;
+extern TraceEvent _TRACE_GICV3_DIST_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_DIST_BADREAD_EVENT;
+extern TraceEvent _TRACE_GICV3_DIST_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_DIST_BADWRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_DIST_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_READ_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_BADREAD_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_WRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_BADWRITE_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_GICV3_REDIST_SEND_SGI_EVENT;
+extern TraceEvent _TRACE_NVIC_RECOMPUTE_STATE_EVENT;
+extern TraceEvent _TRACE_NVIC_RECOMPUTE_STATE_SECURE_EVENT;
+extern TraceEvent _TRACE_NVIC_SET_PRIO_EVENT;
+extern TraceEvent _TRACE_NVIC_IRQ_UPDATE_EVENT;
+extern TraceEvent _TRACE_NVIC_ESCALATE_PRIO_EVENT;
+extern TraceEvent _TRACE_NVIC_ESCALATE_DISABLED_EVENT;
+extern TraceEvent _TRACE_NVIC_SET_PENDING_EVENT;
+extern TraceEvent _TRACE_NVIC_CLEAR_PENDING_EVENT;
+extern TraceEvent _TRACE_NVIC_SET_PENDING_LEVEL_EVENT;
+extern TraceEvent _TRACE_NVIC_ACKNOWLEDGE_IRQ_EVENT;
+extern TraceEvent _TRACE_NVIC_GET_PENDING_IRQ_INFO_EVENT;
+extern TraceEvent _TRACE_NVIC_COMPLETE_IRQ_EVENT;
+extern TraceEvent _TRACE_NVIC_SET_IRQ_LEVEL_EVENT;
+extern TraceEvent _TRACE_NVIC_SYSREG_READ_EVENT;
+extern TraceEvent _TRACE_NVIC_SYSREG_WRITE_EVENT;
+extern TraceEvent _TRACE_HEATHROW_WRITE_EVENT;
+extern TraceEvent _TRACE_HEATHROW_READ_EVENT;
+extern TraceEvent _TRACE_HEATHROW_SET_IRQ_EVENT;
+extern uint16_t _TRACE_PIC_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_PIC_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_PIC_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_PIC_IOPORT_WRITE_DSTATE;
+extern uint16_t _TRACE_PIC_IOPORT_READ_DSTATE;
+extern uint16_t _TRACE_CPU_SET_APIC_BASE_DSTATE;
+extern uint16_t _TRACE_CPU_GET_APIC_BASE_DSTATE;
+extern uint16_t _TRACE_APIC_REPORT_IRQ_DELIVERED_DSTATE;
+extern uint16_t _TRACE_APIC_RESET_IRQ_DELIVERED_DSTATE;
+extern uint16_t _TRACE_APIC_GET_IRQ_DELIVERED_DSTATE;
+extern uint16_t _TRACE_APIC_LOCAL_DELIVER_DSTATE;
+extern uint16_t _TRACE_APIC_DELIVER_IRQ_DSTATE;
+extern uint16_t _TRACE_APIC_MEM_READL_DSTATE;
+extern uint16_t _TRACE_APIC_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_IOAPIC_SET_REMOTE_IRR_DSTATE;
+extern uint16_t _TRACE_IOAPIC_CLEAR_REMOTE_IRR_DSTATE;
+extern uint16_t _TRACE_IOAPIC_EOI_BROADCAST_DSTATE;
+extern uint16_t _TRACE_IOAPIC_MEM_READ_DSTATE;
+extern uint16_t _TRACE_IOAPIC_MEM_WRITE_DSTATE;
+extern uint16_t _TRACE_IOAPIC_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTL_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTLM_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_DSTATE;
+extern uint16_t _TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_DSTATE;
+extern uint16_t _TRACE_SLAVIO_CHECK_INTERRUPTS_DSTATE;
+extern uint16_t _TRACE_SLAVIO_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_SLAVIO_SET_TIMER_IRQ_CPU_DSTATE;
+extern uint16_t _TRACE_GRLIB_IRQMP_CHECK_IRQS_DSTATE;
+extern uint16_t _TRACE_GRLIB_IRQMP_ACK_DSTATE;
+extern uint16_t _TRACE_GRLIB_IRQMP_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_GRLIB_IRQMP_READL_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_RAISE_IRQ_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_LOWER_IRQ_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_SET_IM_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_SET_IP_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_GET_IM_DSTATE;
+extern uint16_t _TRACE_LM32_PIC_GET_IP_DSTATE;
+extern uint16_t _TRACE_XICS_ICP_CHECK_IPI_DSTATE;
+extern uint16_t _TRACE_XICS_ICP_ACCEPT_DSTATE;
+extern uint16_t _TRACE_XICS_ICP_EOI_DSTATE;
+extern uint16_t _TRACE_XICS_ICP_IRQ_DSTATE;
+extern uint16_t _TRACE_XICS_ICP_RAISE_DSTATE;
+extern uint16_t _TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_DSTATE;
+extern uint16_t _TRACE_XICS_MASKED_PENDING_DSTATE;
+extern uint16_t _TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_DSTATE;
+extern uint16_t _TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_DSTATE;
+extern uint16_t _TRACE_XICS_ICS_SIMPLE_REJECT_DSTATE;
+extern uint16_t _TRACE_XICS_ICS_SIMPLE_EOI_DSTATE;
+extern uint16_t _TRACE_FLIC_CREATE_DEVICE_DSTATE;
+extern uint16_t _TRACE_FLIC_NO_DEVICE_API_DSTATE;
+extern uint16_t _TRACE_FLIC_RESET_FAILED_DSTATE;
+extern uint16_t _TRACE_QEMU_S390_AIRQ_SUPPRESSED_DSTATE;
+extern uint16_t _TRACE_QEMU_S390_SUPPRESS_AIRQ_DSTATE;
+extern uint16_t _TRACE_ASPEED_VIC_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_ASPEED_VIC_UPDATE_FIQ_DSTATE;
+extern uint16_t _TRACE_ASPEED_VIC_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_ASPEED_VIC_READ_DSTATE;
+extern uint16_t _TRACE_ASPEED_VIC_WRITE_DSTATE;
+extern uint16_t _TRACE_GIC_ENABLE_IRQ_DSTATE;
+extern uint16_t _TRACE_GIC_DISABLE_IRQ_DSTATE;
+extern uint16_t _TRACE_GIC_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_GIC_UPDATE_BESTIRQ_DSTATE;
+extern uint16_t _TRACE_GIC_UPDATE_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_GIC_ACKNOWLEDGE_IRQ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_PMR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_PMR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_BPR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_BPR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_AP_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_AP_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IGRPEN_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IGRPEN_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IGRPEN1_EL3_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_CTLR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_CTLR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_CTLR_EL3_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_CTLR_EL3_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_CPUIF_UPDATE_DSTATE;
+extern uint16_t _TRACE_GICV3_CPUIF_SET_IRQS_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_GENERATE_SGI_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IAR0_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_IAR1_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_EOIR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_HPPIR0_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_HPPIR1_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_DIR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICC_RPR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_AP_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_AP_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_HCR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_HCR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_VMCR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_VMCR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LR32_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LRC_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LR32_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_LRC_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_VTR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_MISR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_EISR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICH_ELRSR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_AP_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_AP_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_BPR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_BPR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_PMR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_PMR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_IGRPEN_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_IGRPEN_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_CTLR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_CTLR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_RPR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_HPPIR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_DIR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_IAR_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_ICV_EOIR_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_CPUIF_VIRT_UPDATE_DSTATE;
+extern uint16_t _TRACE_GICV3_CPUIF_VIRT_SET_IRQS_DSTATE;
+extern uint16_t _TRACE_GICV3_DIST_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_DIST_BADREAD_DSTATE;
+extern uint16_t _TRACE_GICV3_DIST_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_DIST_BADWRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_DIST_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_READ_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_BADREAD_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_WRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_BADWRITE_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_GICV3_REDIST_SEND_SGI_DSTATE;
+extern uint16_t _TRACE_NVIC_RECOMPUTE_STATE_DSTATE;
+extern uint16_t _TRACE_NVIC_RECOMPUTE_STATE_SECURE_DSTATE;
+extern uint16_t _TRACE_NVIC_SET_PRIO_DSTATE;
+extern uint16_t _TRACE_NVIC_IRQ_UPDATE_DSTATE;
+extern uint16_t _TRACE_NVIC_ESCALATE_PRIO_DSTATE;
+extern uint16_t _TRACE_NVIC_ESCALATE_DISABLED_DSTATE;
+extern uint16_t _TRACE_NVIC_SET_PENDING_DSTATE;
+extern uint16_t _TRACE_NVIC_CLEAR_PENDING_DSTATE;
+extern uint16_t _TRACE_NVIC_SET_PENDING_LEVEL_DSTATE;
+extern uint16_t _TRACE_NVIC_ACKNOWLEDGE_IRQ_DSTATE;
+extern uint16_t _TRACE_NVIC_GET_PENDING_IRQ_INFO_DSTATE;
+extern uint16_t _TRACE_NVIC_COMPLETE_IRQ_DSTATE;
+extern uint16_t _TRACE_NVIC_SET_IRQ_LEVEL_DSTATE;
+extern uint16_t _TRACE_NVIC_SYSREG_READ_DSTATE;
+extern uint16_t _TRACE_NVIC_SYSREG_WRITE_DSTATE;
+extern uint16_t _TRACE_HEATHROW_WRITE_DSTATE;
+extern uint16_t _TRACE_HEATHROW_READ_DSTATE;
+extern uint16_t _TRACE_HEATHROW_SET_IRQ_DSTATE;
+#define TRACE_PIC_UPDATE_IRQ_ENABLED 1
+#define TRACE_PIC_SET_IRQ_ENABLED 1
+#define TRACE_PIC_INTERRUPT_ENABLED 1
+#define TRACE_PIC_IOPORT_WRITE_ENABLED 1
+#define TRACE_PIC_IOPORT_READ_ENABLED 1
+#define TRACE_CPU_SET_APIC_BASE_ENABLED 1
+#define TRACE_CPU_GET_APIC_BASE_ENABLED 1
+#define TRACE_APIC_REPORT_IRQ_DELIVERED_ENABLED 1
+#define TRACE_APIC_RESET_IRQ_DELIVERED_ENABLED 1
+#define TRACE_APIC_GET_IRQ_DELIVERED_ENABLED 1
+#define TRACE_APIC_LOCAL_DELIVER_ENABLED 1
+#define TRACE_APIC_DELIVER_IRQ_ENABLED 1
+#define TRACE_APIC_MEM_READL_ENABLED 1
+#define TRACE_APIC_MEM_WRITEL_ENABLED 1
+#define TRACE_IOAPIC_SET_REMOTE_IRR_ENABLED 1
+#define TRACE_IOAPIC_CLEAR_REMOTE_IRR_ENABLED 1
+#define TRACE_IOAPIC_EOI_BROADCAST_ENABLED 1
+#define TRACE_IOAPIC_MEM_READ_ENABLED 1
+#define TRACE_IOAPIC_MEM_WRITE_ENABLED 1
+#define TRACE_IOAPIC_SET_IRQ_ENABLED 1
+#define TRACE_SLAVIO_INTCTL_MEM_READL_ENABLED 1
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_ENABLED 1
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_ENABLED 1
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_ENABLED 1
+#define TRACE_SLAVIO_INTCTLM_MEM_READL_ENABLED 1
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLED 1
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_ENABLED 1
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_ENABLED 1
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_ENABLED 1
+#define TRACE_SLAVIO_CHECK_INTERRUPTS_ENABLED 1
+#define TRACE_SLAVIO_SET_IRQ_ENABLED 1
+#define TRACE_SLAVIO_SET_TIMER_IRQ_CPU_ENABLED 1
+#define TRACE_GRLIB_IRQMP_CHECK_IRQS_ENABLED 1
+#define TRACE_GRLIB_IRQMP_ACK_ENABLED 1
+#define TRACE_GRLIB_IRQMP_SET_IRQ_ENABLED 1
+#define TRACE_GRLIB_IRQMP_READL_UNKNOWN_ENABLED 1
+#define TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_ENABLED 1
+#define TRACE_LM32_PIC_RAISE_IRQ_ENABLED 1
+#define TRACE_LM32_PIC_LOWER_IRQ_ENABLED 1
+#define TRACE_LM32_PIC_INTERRUPT_ENABLED 1
+#define TRACE_LM32_PIC_SET_IM_ENABLED 1
+#define TRACE_LM32_PIC_SET_IP_ENABLED 1
+#define TRACE_LM32_PIC_GET_IM_ENABLED 1
+#define TRACE_LM32_PIC_GET_IP_ENABLED 1
+#define TRACE_XICS_ICP_CHECK_IPI_ENABLED 1
+#define TRACE_XICS_ICP_ACCEPT_ENABLED 1
+#define TRACE_XICS_ICP_EOI_ENABLED 1
+#define TRACE_XICS_ICP_IRQ_ENABLED 1
+#define TRACE_XICS_ICP_RAISE_ENABLED 1
+#define TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_ENABLED 1
+#define TRACE_XICS_MASKED_PENDING_ENABLED 1
+#define TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_ENABLED 1
+#define TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_ENABLED 1
+#define TRACE_XICS_ICS_SIMPLE_REJECT_ENABLED 1
+#define TRACE_XICS_ICS_SIMPLE_EOI_ENABLED 1
+#define TRACE_FLIC_CREATE_DEVICE_ENABLED 1
+#define TRACE_FLIC_NO_DEVICE_API_ENABLED 1
+#define TRACE_FLIC_RESET_FAILED_ENABLED 1
+#define TRACE_QEMU_S390_AIRQ_SUPPRESSED_ENABLED 1
+#define TRACE_QEMU_S390_SUPPRESS_AIRQ_ENABLED 1
+#define TRACE_ASPEED_VIC_SET_IRQ_ENABLED 1
+#define TRACE_ASPEED_VIC_UPDATE_FIQ_ENABLED 1
+#define TRACE_ASPEED_VIC_UPDATE_IRQ_ENABLED 1
+#define TRACE_ASPEED_VIC_READ_ENABLED 1
+#define TRACE_ASPEED_VIC_WRITE_ENABLED 1
+#define TRACE_GIC_ENABLE_IRQ_ENABLED 1
+#define TRACE_GIC_DISABLE_IRQ_ENABLED 1
+#define TRACE_GIC_SET_IRQ_ENABLED 1
+#define TRACE_GIC_UPDATE_BESTIRQ_ENABLED 1
+#define TRACE_GIC_UPDATE_SET_IRQ_ENABLED 1
+#define TRACE_GIC_ACKNOWLEDGE_IRQ_ENABLED 1
+#define TRACE_GICV3_ICC_PMR_READ_ENABLED 1
+#define TRACE_GICV3_ICC_PMR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_BPR_READ_ENABLED 1
+#define TRACE_GICV3_ICC_BPR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_AP_READ_ENABLED 1
+#define TRACE_GICV3_ICC_AP_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_IGRPEN_READ_ENABLED 1
+#define TRACE_GICV3_ICC_IGRPEN_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_IGRPEN1_EL3_READ_ENABLED 1
+#define TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_CTLR_READ_ENABLED 1
+#define TRACE_GICV3_ICC_CTLR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_CTLR_EL3_READ_ENABLED 1
+#define TRACE_GICV3_ICC_CTLR_EL3_WRITE_ENABLED 1
+#define TRACE_GICV3_CPUIF_UPDATE_ENABLED 1
+#define TRACE_GICV3_CPUIF_SET_IRQS_ENABLED 1
+#define TRACE_GICV3_ICC_GENERATE_SGI_ENABLED 1
+#define TRACE_GICV3_ICC_IAR0_READ_ENABLED 1
+#define TRACE_GICV3_ICC_IAR1_READ_ENABLED 1
+#define TRACE_GICV3_ICC_EOIR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_HPPIR0_READ_ENABLED 1
+#define TRACE_GICV3_ICC_HPPIR1_READ_ENABLED 1
+#define TRACE_GICV3_ICC_DIR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICC_RPR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_AP_READ_ENABLED 1
+#define TRACE_GICV3_ICH_AP_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_HCR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_HCR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_VMCR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_VMCR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_LR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_LR32_READ_ENABLED 1
+#define TRACE_GICV3_ICH_LRC_READ_ENABLED 1
+#define TRACE_GICV3_ICH_LR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_LR32_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_LRC_WRITE_ENABLED 1
+#define TRACE_GICV3_ICH_VTR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_MISR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_EISR_READ_ENABLED 1
+#define TRACE_GICV3_ICH_ELRSR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_AP_READ_ENABLED 1
+#define TRACE_GICV3_ICV_AP_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_BPR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_BPR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_PMR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_PMR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_IGRPEN_READ_ENABLED 1
+#define TRACE_GICV3_ICV_IGRPEN_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_CTLR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_CTLR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_RPR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_HPPIR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_DIR_WRITE_ENABLED 1
+#define TRACE_GICV3_ICV_IAR_READ_ENABLED 1
+#define TRACE_GICV3_ICV_EOIR_WRITE_ENABLED 1
+#define TRACE_GICV3_CPUIF_VIRT_UPDATE_ENABLED 1
+#define TRACE_GICV3_CPUIF_VIRT_SET_IRQS_ENABLED 1
+#define TRACE_GICV3_DIST_READ_ENABLED 1
+#define TRACE_GICV3_DIST_BADREAD_ENABLED 1
+#define TRACE_GICV3_DIST_WRITE_ENABLED 1
+#define TRACE_GICV3_DIST_BADWRITE_ENABLED 1
+#define TRACE_GICV3_DIST_SET_IRQ_ENABLED 1
+#define TRACE_GICV3_REDIST_READ_ENABLED 1
+#define TRACE_GICV3_REDIST_BADREAD_ENABLED 1
+#define TRACE_GICV3_REDIST_WRITE_ENABLED 1
+#define TRACE_GICV3_REDIST_BADWRITE_ENABLED 1
+#define TRACE_GICV3_REDIST_SET_IRQ_ENABLED 1
+#define TRACE_GICV3_REDIST_SEND_SGI_ENABLED 1
+#define TRACE_NVIC_RECOMPUTE_STATE_ENABLED 1
+#define TRACE_NVIC_RECOMPUTE_STATE_SECURE_ENABLED 1
+#define TRACE_NVIC_SET_PRIO_ENABLED 1
+#define TRACE_NVIC_IRQ_UPDATE_ENABLED 1
+#define TRACE_NVIC_ESCALATE_PRIO_ENABLED 1
+#define TRACE_NVIC_ESCALATE_DISABLED_ENABLED 1
+#define TRACE_NVIC_SET_PENDING_ENABLED 1
+#define TRACE_NVIC_CLEAR_PENDING_ENABLED 1
+#define TRACE_NVIC_SET_PENDING_LEVEL_ENABLED 1
+#define TRACE_NVIC_ACKNOWLEDGE_IRQ_ENABLED 1
+#define TRACE_NVIC_GET_PENDING_IRQ_INFO_ENABLED 1
+#define TRACE_NVIC_COMPLETE_IRQ_ENABLED 1
+#define TRACE_NVIC_SET_IRQ_LEVEL_ENABLED 1
+#define TRACE_NVIC_SYSREG_READ_ENABLED 1
+#define TRACE_NVIC_SYSREG_WRITE_ENABLED 1
+#define TRACE_HEATHROW_WRITE_ENABLED 1
+#define TRACE_HEATHROW_READ_ENABLED 1
+#define TRACE_HEATHROW_SET_IRQ_ENABLED 1
+
+#define TRACE_PIC_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pic_update_irq(bool master, uint8_t imr, uint8_t irr, uint8_t padd)
+{
+}
+
+static inline void trace_pic_update_irq(bool master, uint8_t imr, uint8_t irr, uint8_t padd)
+{
+ if (true) {
+ _nocheck__trace_pic_update_irq(master, imr, irr, padd);
+ }
+}
+
+#define TRACE_PIC_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pic_set_irq(bool master, int irq, int level)
+{
+}
+
+static inline void trace_pic_set_irq(bool master, int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_pic_set_irq(master, irq, level);
+ }
+}
+
+#define TRACE_PIC_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pic_interrupt(int irq, int intno)
+{
+}
+
+static inline void trace_pic_interrupt(int irq, int intno)
+{
+ if (true) {
+ _nocheck__trace_pic_interrupt(irq, intno);
+ }
+}
+
+#define TRACE_PIC_IOPORT_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pic_ioport_write(bool master, uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_pic_ioport_write(bool master, uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_pic_ioport_write(master, addr, val);
+ }
+}
+
+#define TRACE_PIC_IOPORT_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pic_ioport_read(bool master, uint64_t addr, int val)
+{
+}
+
+static inline void trace_pic_ioport_read(bool master, uint64_t addr, int val)
+{
+ if (true) {
+ _nocheck__trace_pic_ioport_read(master, addr, val);
+ }
+}
+
+#define TRACE_CPU_SET_APIC_BASE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_set_apic_base(uint64_t val)
+{
+}
+
+static inline void trace_cpu_set_apic_base(uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_cpu_set_apic_base(val);
+ }
+}
+
+#define TRACE_CPU_GET_APIC_BASE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_get_apic_base(uint64_t val)
+{
+}
+
+static inline void trace_cpu_get_apic_base(uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_cpu_get_apic_base(val);
+ }
+}
+
+#define TRACE_APIC_REPORT_IRQ_DELIVERED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_report_irq_delivered(int apic_irq_delivered)
+{
+}
+
+static inline void trace_apic_report_irq_delivered(int apic_irq_delivered)
+{
+ if (true) {
+ _nocheck__trace_apic_report_irq_delivered(apic_irq_delivered);
+ }
+}
+
+#define TRACE_APIC_RESET_IRQ_DELIVERED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_reset_irq_delivered(int apic_irq_delivered)
+{
+}
+
+static inline void trace_apic_reset_irq_delivered(int apic_irq_delivered)
+{
+ if (true) {
+ _nocheck__trace_apic_reset_irq_delivered(apic_irq_delivered);
+ }
+}
+
+#define TRACE_APIC_GET_IRQ_DELIVERED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_get_irq_delivered(int apic_irq_delivered)
+{
+}
+
+static inline void trace_apic_get_irq_delivered(int apic_irq_delivered)
+{
+ if (true) {
+ _nocheck__trace_apic_get_irq_delivered(apic_irq_delivered);
+ }
+}
+
+#define TRACE_APIC_LOCAL_DELIVER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_local_deliver(int vector, uint32_t lvt)
+{
+}
+
+static inline void trace_apic_local_deliver(int vector, uint32_t lvt)
+{
+ if (true) {
+ _nocheck__trace_apic_local_deliver(vector, lvt);
+ }
+}
+
+#define TRACE_APIC_DELIVER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode, uint8_t vector_num, uint8_t trigger_mode)
+{
+}
+
+static inline void trace_apic_deliver_irq(uint8_t dest, uint8_t dest_mode, uint8_t delivery_mode, uint8_t vector_num, uint8_t trigger_mode)
+{
+ if (true) {
+ _nocheck__trace_apic_deliver_irq(dest, dest_mode, delivery_mode, vector_num, trigger_mode);
+ }
+}
+
+#define TRACE_APIC_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_mem_readl(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_apic_mem_readl(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_apic_mem_readl(addr, val);
+ }
+}
+
+#define TRACE_APIC_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apic_mem_writel(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_apic_mem_writel(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_apic_mem_writel(addr, val);
+ }
+}
+
+#define TRACE_IOAPIC_SET_REMOTE_IRR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_set_remote_irr(int n)
+{
+}
+
+static inline void trace_ioapic_set_remote_irr(int n)
+{
+ if (true) {
+ _nocheck__trace_ioapic_set_remote_irr(n);
+ }
+}
+
+#define TRACE_IOAPIC_CLEAR_REMOTE_IRR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_clear_remote_irr(int n, int vector)
+{
+}
+
+static inline void trace_ioapic_clear_remote_irr(int n, int vector)
+{
+ if (true) {
+ _nocheck__trace_ioapic_clear_remote_irr(n, vector);
+ }
+}
+
+#define TRACE_IOAPIC_EOI_BROADCAST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_eoi_broadcast(int vector)
+{
+}
+
+static inline void trace_ioapic_eoi_broadcast(int vector)
+{
+ if (true) {
+ _nocheck__trace_ioapic_eoi_broadcast(vector);
+ }
+}
+
+#define TRACE_IOAPIC_MEM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_mem_read(uint8_t addr, uint8_t regsel, uint8_t size, uint32_t val)
+{
+}
+
+static inline void trace_ioapic_mem_read(uint8_t addr, uint8_t regsel, uint8_t size, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ioapic_mem_read(addr, regsel, size, val);
+ }
+}
+
+#define TRACE_IOAPIC_MEM_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_mem_write(uint8_t addr, uint8_t regsel, uint8_t size, uint32_t val)
+{
+}
+
+static inline void trace_ioapic_mem_write(uint8_t addr, uint8_t regsel, uint8_t size, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ioapic_mem_write(addr, regsel, size, val);
+ }
+}
+
+#define TRACE_IOAPIC_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioapic_set_irq(int vector, int level)
+{
+}
+
+static inline void trace_ioapic_set_irq(int vector, int level)
+{
+ if (true) {
+ _nocheck__trace_ioapic_set_irq(vector, level);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTL_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctl_mem_readl(uint32_t cpu, uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_slavio_intctl_mem_readl(uint32_t cpu, uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctl_mem_readl(cpu, addr, ret);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctl_mem_writel(uint32_t cpu, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_slavio_intctl_mem_writel(uint32_t cpu, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctl_mem_writel(cpu, addr, val);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_CLEAR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctl_mem_writel_clear(uint32_t cpu, uint32_t val, uint32_t intreg_pending)
+{
+}
+
+static inline void trace_slavio_intctl_mem_writel_clear(uint32_t cpu, uint32_t val, uint32_t intreg_pending)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctl_mem_writel_clear(cpu, val, intreg_pending);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTL_MEM_WRITEL_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctl_mem_writel_set(uint32_t cpu, uint32_t val, uint32_t intreg_pending)
+{
+}
+
+static inline void trace_slavio_intctl_mem_writel_set(uint32_t cpu, uint32_t val, uint32_t intreg_pending)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctl_mem_writel_set(cpu, val, intreg_pending);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTLM_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctlm_mem_readl(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_slavio_intctlm_mem_readl(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctlm_mem_readl(addr, ret);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctlm_mem_writel(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_slavio_intctlm_mem_writel(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctlm_mem_writel(addr, val);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctlm_mem_writel_enable(uint32_t val, uint32_t intregm_disabled)
+{
+}
+
+static inline void trace_slavio_intctlm_mem_writel_enable(uint32_t val, uint32_t intregm_disabled)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctlm_mem_writel_enable(val, intregm_disabled);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctlm_mem_writel_disable(uint32_t val, uint32_t intregm_disabled)
+{
+}
+
+static inline void trace_slavio_intctlm_mem_writel_disable(uint32_t val, uint32_t intregm_disabled)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctlm_mem_writel_disable(val, intregm_disabled);
+ }
+}
+
+#define TRACE_SLAVIO_INTCTLM_MEM_WRITEL_TARGET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_intctlm_mem_writel_target(uint32_t cpu)
+{
+}
+
+static inline void trace_slavio_intctlm_mem_writel_target(uint32_t cpu)
+{
+ if (true) {
+ _nocheck__trace_slavio_intctlm_mem_writel_target(cpu);
+ }
+}
+
+#define TRACE_SLAVIO_CHECK_INTERRUPTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_check_interrupts(uint32_t pending, uint32_t intregm_disabled)
+{
+}
+
+static inline void trace_slavio_check_interrupts(uint32_t pending, uint32_t intregm_disabled)
+{
+ if (true) {
+ _nocheck__trace_slavio_check_interrupts(pending, intregm_disabled);
+ }
+}
+
+#define TRACE_SLAVIO_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_set_irq(uint32_t target_cpu, int irq, uint32_t pil, int level)
+{
+}
+
+static inline void trace_slavio_set_irq(uint32_t target_cpu, int irq, uint32_t pil, int level)
+{
+ if (true) {
+ _nocheck__trace_slavio_set_irq(target_cpu, irq, pil, level);
+ }
+}
+
+#define TRACE_SLAVIO_SET_TIMER_IRQ_CPU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_set_timer_irq_cpu(int cpu, int level)
+{
+}
+
+static inline void trace_slavio_set_timer_irq_cpu(int cpu, int level)
+{
+ if (true) {
+ _nocheck__trace_slavio_set_timer_irq_cpu(cpu, level);
+ }
+}
+
+#define TRACE_GRLIB_IRQMP_CHECK_IRQS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_irqmp_check_irqs(uint32_t pend, uint32_t force, uint32_t mask, uint32_t lvl1, uint32_t lvl2)
+{
+}
+
+static inline void trace_grlib_irqmp_check_irqs(uint32_t pend, uint32_t force, uint32_t mask, uint32_t lvl1, uint32_t lvl2)
+{
+ if (true) {
+ _nocheck__trace_grlib_irqmp_check_irqs(pend, force, mask, lvl1, lvl2);
+ }
+}
+
+#define TRACE_GRLIB_IRQMP_ACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_irqmp_ack(int intno)
+{
+}
+
+static inline void trace_grlib_irqmp_ack(int intno)
+{
+ if (true) {
+ _nocheck__trace_grlib_irqmp_ack(intno);
+ }
+}
+
+#define TRACE_GRLIB_IRQMP_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_irqmp_set_irq(int irq)
+{
+}
+
+static inline void trace_grlib_irqmp_set_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_grlib_irqmp_set_irq(irq);
+ }
+}
+
+#define TRACE_GRLIB_IRQMP_READL_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_irqmp_readl_unknown(uint64_t addr)
+{
+}
+
+static inline void trace_grlib_irqmp_readl_unknown(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_grlib_irqmp_readl_unknown(addr);
+ }
+}
+
+#define TRACE_GRLIB_IRQMP_WRITEL_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_irqmp_writel_unknown(uint64_t addr, uint32_t value)
+{
+}
+
+static inline void trace_grlib_irqmp_writel_unknown(uint64_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_grlib_irqmp_writel_unknown(addr, value);
+ }
+}
+
+#define TRACE_LM32_PIC_RAISE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_raise_irq(void)
+{
+}
+
+static inline void trace_lm32_pic_raise_irq(void)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_raise_irq();
+ }
+}
+
+#define TRACE_LM32_PIC_LOWER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_lower_irq(void)
+{
+}
+
+static inline void trace_lm32_pic_lower_irq(void)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_lower_irq();
+ }
+}
+
+#define TRACE_LM32_PIC_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_interrupt(int irq, int level)
+{
+}
+
+static inline void trace_lm32_pic_interrupt(int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_interrupt(irq, level);
+ }
+}
+
+#define TRACE_LM32_PIC_SET_IM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_set_im(uint32_t im)
+{
+}
+
+static inline void trace_lm32_pic_set_im(uint32_t im)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_set_im(im);
+ }
+}
+
+#define TRACE_LM32_PIC_SET_IP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_set_ip(uint32_t ip)
+{
+}
+
+static inline void trace_lm32_pic_set_ip(uint32_t ip)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_set_ip(ip);
+ }
+}
+
+#define TRACE_LM32_PIC_GET_IM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_get_im(uint32_t im)
+{
+}
+
+static inline void trace_lm32_pic_get_im(uint32_t im)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_get_im(im);
+ }
+}
+
+#define TRACE_LM32_PIC_GET_IP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_pic_get_ip(uint32_t ip)
+{
+}
+
+static inline void trace_lm32_pic_get_ip(uint32_t ip)
+{
+ if (true) {
+ _nocheck__trace_lm32_pic_get_ip(ip);
+ }
+}
+
+#define TRACE_XICS_ICP_CHECK_IPI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_icp_check_ipi(int server, uint8_t mfrr)
+{
+}
+
+static inline void trace_xics_icp_check_ipi(int server, uint8_t mfrr)
+{
+ if (true) {
+ _nocheck__trace_xics_icp_check_ipi(server, mfrr);
+ }
+}
+
+#define TRACE_XICS_ICP_ACCEPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_icp_accept(uint32_t old_xirr, uint32_t new_xirr)
+{
+}
+
+static inline void trace_xics_icp_accept(uint32_t old_xirr, uint32_t new_xirr)
+{
+ if (true) {
+ _nocheck__trace_xics_icp_accept(old_xirr, new_xirr);
+ }
+}
+
+#define TRACE_XICS_ICP_EOI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_icp_eoi(int server, uint32_t xirr, uint32_t new_xirr)
+{
+}
+
+static inline void trace_xics_icp_eoi(int server, uint32_t xirr, uint32_t new_xirr)
+{
+ if (true) {
+ _nocheck__trace_xics_icp_eoi(server, xirr, new_xirr);
+ }
+}
+
+#define TRACE_XICS_ICP_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_icp_irq(int server, int nr, uint8_t priority)
+{
+}
+
+static inline void trace_xics_icp_irq(int server, int nr, uint8_t priority)
+{
+ if (true) {
+ _nocheck__trace_xics_icp_irq(server, nr, priority);
+ }
+}
+
+#define TRACE_XICS_ICP_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_icp_raise(uint32_t xirr, uint8_t pending_priority)
+{
+}
+
+static inline void trace_xics_icp_raise(uint32_t xirr, uint8_t pending_priority)
+{
+ if (true) {
+ _nocheck__trace_xics_icp_raise(xirr, pending_priority);
+ }
+}
+
+#define TRACE_XICS_ICS_SIMPLE_SET_IRQ_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_ics_simple_set_irq_msi(int srcno, int nr)
+{
+}
+
+static inline void trace_xics_ics_simple_set_irq_msi(int srcno, int nr)
+{
+ if (true) {
+ _nocheck__trace_xics_ics_simple_set_irq_msi(srcno, nr);
+ }
+}
+
+#define TRACE_XICS_MASKED_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_masked_pending(void)
+{
+}
+
+static inline void trace_xics_masked_pending(void)
+{
+ if (true) {
+ _nocheck__trace_xics_masked_pending();
+ }
+}
+
+#define TRACE_XICS_ICS_SIMPLE_SET_IRQ_LSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_ics_simple_set_irq_lsi(int srcno, int nr)
+{
+}
+
+static inline void trace_xics_ics_simple_set_irq_lsi(int srcno, int nr)
+{
+ if (true) {
+ _nocheck__trace_xics_ics_simple_set_irq_lsi(srcno, nr);
+ }
+}
+
+#define TRACE_XICS_ICS_SIMPLE_WRITE_XIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_ics_simple_write_xive(int nr, int srcno, int server, uint8_t priority)
+{
+}
+
+static inline void trace_xics_ics_simple_write_xive(int nr, int srcno, int server, uint8_t priority)
+{
+ if (true) {
+ _nocheck__trace_xics_ics_simple_write_xive(nr, srcno, server, priority);
+ }
+}
+
+#define TRACE_XICS_ICS_SIMPLE_REJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_ics_simple_reject(int nr, int srcno)
+{
+}
+
+static inline void trace_xics_ics_simple_reject(int nr, int srcno)
+{
+ if (true) {
+ _nocheck__trace_xics_ics_simple_reject(nr, srcno);
+ }
+}
+
+#define TRACE_XICS_ICS_SIMPLE_EOI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xics_ics_simple_eoi(int nr)
+{
+}
+
+static inline void trace_xics_ics_simple_eoi(int nr)
+{
+ if (true) {
+ _nocheck__trace_xics_ics_simple_eoi(nr);
+ }
+}
+
+#define TRACE_FLIC_CREATE_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flic_create_device(int err)
+{
+}
+
+static inline void trace_flic_create_device(int err)
+{
+ if (true) {
+ _nocheck__trace_flic_create_device(err);
+ }
+}
+
+#define TRACE_FLIC_NO_DEVICE_API_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flic_no_device_api(int err)
+{
+}
+
+static inline void trace_flic_no_device_api(int err)
+{
+ if (true) {
+ _nocheck__trace_flic_no_device_api(err);
+ }
+}
+
+#define TRACE_FLIC_RESET_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flic_reset_failed(int err)
+{
+}
+
+static inline void trace_flic_reset_failed(int err)
+{
+ if (true) {
+ _nocheck__trace_flic_reset_failed(err);
+ }
+}
+
+#define TRACE_QEMU_S390_AIRQ_SUPPRESSED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_s390_airq_suppressed(uint8_t type, uint8_t isc)
+{
+}
+
+static inline void trace_qemu_s390_airq_suppressed(uint8_t type, uint8_t isc)
+{
+ if (true) {
+ _nocheck__trace_qemu_s390_airq_suppressed(type, isc);
+ }
+}
+
+#define TRACE_QEMU_S390_SUPPRESS_AIRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_s390_suppress_airq(uint8_t isc, const char * from, const char * to)
+{
+}
+
+static inline void trace_qemu_s390_suppress_airq(uint8_t isc, const char * from, const char * to)
+{
+ if (true) {
+ _nocheck__trace_qemu_s390_suppress_airq(isc, from, to);
+ }
+}
+
+#define TRACE_ASPEED_VIC_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_vic_set_irq(int irq, int level)
+{
+}
+
+static inline void trace_aspeed_vic_set_irq(int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_aspeed_vic_set_irq(irq, level);
+ }
+}
+
+#define TRACE_ASPEED_VIC_UPDATE_FIQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_vic_update_fiq(int flags)
+{
+}
+
+static inline void trace_aspeed_vic_update_fiq(int flags)
+{
+ if (true) {
+ _nocheck__trace_aspeed_vic_update_fiq(flags);
+ }
+}
+
+#define TRACE_ASPEED_VIC_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_vic_update_irq(int flags)
+{
+}
+
+static inline void trace_aspeed_vic_update_irq(int flags)
+{
+ if (true) {
+ _nocheck__trace_aspeed_vic_update_irq(flags);
+ }
+}
+
+#define TRACE_ASPEED_VIC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_vic_read(uint64_t offset, unsigned size, uint32_t value)
+{
+}
+
+static inline void trace_aspeed_vic_read(uint64_t offset, unsigned size, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_aspeed_vic_read(offset, size, value);
+ }
+}
+
+#define TRACE_ASPEED_VIC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_vic_write(uint64_t offset, unsigned size, uint32_t data)
+{
+}
+
+static inline void trace_aspeed_vic_write(uint64_t offset, unsigned size, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_aspeed_vic_write(offset, size, data);
+ }
+}
+
+#define TRACE_GIC_ENABLE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_enable_irq(int irq)
+{
+}
+
+static inline void trace_gic_enable_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_gic_enable_irq(irq);
+ }
+}
+
+#define TRACE_GIC_DISABLE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_disable_irq(int irq)
+{
+}
+
+static inline void trace_gic_disable_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_gic_disable_irq(irq);
+ }
+}
+
+#define TRACE_GIC_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_set_irq(int irq, int level, int cpumask, int target)
+{
+}
+
+static inline void trace_gic_set_irq(int irq, int level, int cpumask, int target)
+{
+ if (true) {
+ _nocheck__trace_gic_set_irq(irq, level, cpumask, target);
+ }
+}
+
+#define TRACE_GIC_UPDATE_BESTIRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_update_bestirq(int cpu, int irq, int prio, int priority_mask, int running_priority)
+{
+}
+
+static inline void trace_gic_update_bestirq(int cpu, int irq, int prio, int priority_mask, int running_priority)
+{
+ if (true) {
+ _nocheck__trace_gic_update_bestirq(cpu, irq, prio, priority_mask, running_priority);
+ }
+}
+
+#define TRACE_GIC_UPDATE_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_update_set_irq(int cpu, const char * name, int level)
+{
+}
+
+static inline void trace_gic_update_set_irq(int cpu, const char * name, int level)
+{
+ if (true) {
+ _nocheck__trace_gic_update_set_irq(cpu, name, level);
+ }
+}
+
+#define TRACE_GIC_ACKNOWLEDGE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gic_acknowledge_irq(int cpu, int irq)
+{
+}
+
+static inline void trace_gic_acknowledge_irq(int cpu, int irq)
+{
+ if (true) {
+ _nocheck__trace_gic_acknowledge_irq(cpu, irq);
+ }
+}
+
+#define TRACE_GICV3_ICC_PMR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_pmr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_pmr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_pmr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_PMR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_pmr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_pmr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_pmr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_BPR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_bpr_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_bpr_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_bpr_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_BPR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_bpr_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_bpr_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_bpr_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_AP_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ap_read(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_AP_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ap_write(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_IGRPEN_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_igrpen_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_igrpen_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_igrpen_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_IGRPEN_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_igrpen_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_igrpen_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_igrpen_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_IGRPEN1_EL3_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_igrpen1_el3_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_igrpen1_el3_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_igrpen1_el3_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_IGRPEN1_EL3_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_igrpen1_el3_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_igrpen1_el3_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_igrpen1_el3_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_CTLR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ctlr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ctlr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ctlr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_CTLR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ctlr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ctlr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ctlr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_CTLR_EL3_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ctlr_el3_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ctlr_el3_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ctlr_el3_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_CTLR_EL3_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_ctlr_el3_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_ctlr_el3_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_ctlr_el3_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_CPUIF_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_cpuif_update(uint32_t cpuid, int irq, int grp, int prio)
+{
+}
+
+static inline void trace_gicv3_cpuif_update(uint32_t cpuid, int irq, int grp, int prio)
+{
+ if (true) {
+ _nocheck__trace_gicv3_cpuif_update(cpuid, irq, grp, prio);
+ }
+}
+
+#define TRACE_GICV3_CPUIF_SET_IRQS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_cpuif_set_irqs(uint32_t cpuid, int fiqlevel, int irqlevel)
+{
+}
+
+static inline void trace_gicv3_cpuif_set_irqs(uint32_t cpuid, int fiqlevel, int irqlevel)
+{
+ if (true) {
+ _nocheck__trace_gicv3_cpuif_set_irqs(cpuid, fiqlevel, irqlevel);
+ }
+}
+
+#define TRACE_GICV3_ICC_GENERATE_SGI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_generate_sgi(uint32_t cpuid, int irq, int irm, uint32_t aff, uint32_t targetlist)
+{
+}
+
+static inline void trace_gicv3_icc_generate_sgi(uint32_t cpuid, int irq, int irm, uint32_t aff, uint32_t targetlist)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_generate_sgi(cpuid, irq, irm, aff, targetlist);
+ }
+}
+
+#define TRACE_GICV3_ICC_IAR0_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_iar0_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_iar0_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_iar0_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_IAR1_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_iar1_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_iar1_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_iar1_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_EOIR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_eoir_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_eoir_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_eoir_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_HPPIR0_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_hppir0_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_hppir0_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_hppir0_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_HPPIR1_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_hppir1_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_hppir1_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_hppir1_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_DIR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_dir_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_dir_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_dir_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICC_RPR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icc_rpr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icc_rpr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icc_rpr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_AP_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_ap_read(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_AP_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_ap_write(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_HCR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_hcr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_hcr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_hcr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_HCR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_hcr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_hcr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_hcr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_VMCR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_vmcr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_vmcr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_vmcr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_VMCR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_vmcr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_vmcr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_vmcr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lr_read(int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lr_read(int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lr_read(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LR32_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lr32_read(int regno, uint32_t cpu, uint32_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lr32_read(int regno, uint32_t cpu, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lr32_read(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LRC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lrc_read(int regno, uint32_t cpu, uint32_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lrc_read(int regno, uint32_t cpu, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lrc_read(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lr_write(int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lr_write(int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lr_write(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LR32_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lr32_write(int regno, uint32_t cpu, uint32_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lr32_write(int regno, uint32_t cpu, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lr32_write(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_LRC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_lrc_write(int regno, uint32_t cpu, uint32_t val)
+{
+}
+
+static inline void trace_gicv3_ich_lrc_write(int regno, uint32_t cpu, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_lrc_write(regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_VTR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_vtr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_vtr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_vtr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_MISR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_misr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_misr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_misr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_EISR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_eisr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_eisr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_eisr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICH_ELRSR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_ich_elrsr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_ich_elrsr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_ich_elrsr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_AP_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_ap_read(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_ap_read(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_AP_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_ap_write(int grp, int regno, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_ap_write(grp, regno, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_BPR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_bpr_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_bpr_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_bpr_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_BPR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_bpr_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_bpr_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_bpr_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_PMR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_pmr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_pmr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_pmr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_PMR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_pmr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_pmr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_pmr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_IGRPEN_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_igrpen_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_igrpen_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_igrpen_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_IGRPEN_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_igrpen_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_igrpen_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_igrpen_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_CTLR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_ctlr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_ctlr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_ctlr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_CTLR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_ctlr_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_ctlr_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_ctlr_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_RPR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_rpr_read(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_rpr_read(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_rpr_read(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_HPPIR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_hppir_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_hppir_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_hppir_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_DIR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_dir_write(uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_dir_write(uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_dir_write(cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_IAR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_iar_read(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_iar_read(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_iar_read(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_ICV_EOIR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_icv_eoir_write(int grp, uint32_t cpu, uint64_t val)
+{
+}
+
+static inline void trace_gicv3_icv_eoir_write(int grp, uint32_t cpu, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_gicv3_icv_eoir_write(grp, cpu, val);
+ }
+}
+
+#define TRACE_GICV3_CPUIF_VIRT_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_cpuif_virt_update(uint32_t cpuid, int idx)
+{
+}
+
+static inline void trace_gicv3_cpuif_virt_update(uint32_t cpuid, int idx)
+{
+ if (true) {
+ _nocheck__trace_gicv3_cpuif_virt_update(cpuid, idx);
+ }
+}
+
+#define TRACE_GICV3_CPUIF_VIRT_SET_IRQS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_cpuif_virt_set_irqs(uint32_t cpuid, int fiqlevel, int irqlevel, int maintlevel)
+{
+}
+
+static inline void trace_gicv3_cpuif_virt_set_irqs(uint32_t cpuid, int fiqlevel, int irqlevel, int maintlevel)
+{
+ if (true) {
+ _nocheck__trace_gicv3_cpuif_virt_set_irqs(cpuid, fiqlevel, irqlevel, maintlevel);
+ }
+}
+
+#define TRACE_GICV3_DIST_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_dist_read(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_dist_read(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_dist_read(offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_DIST_BADREAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_dist_badread(uint64_t offset, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_dist_badread(uint64_t offset, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_dist_badread(offset, size, secure);
+ }
+}
+
+#define TRACE_GICV3_DIST_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_dist_write(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_dist_write(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_dist_write(offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_DIST_BADWRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_dist_badwrite(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_dist_badwrite(uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_dist_badwrite(offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_DIST_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_dist_set_irq(int irq, int level)
+{
+}
+
+static inline void trace_gicv3_dist_set_irq(int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_gicv3_dist_set_irq(irq, level);
+ }
+}
+
+#define TRACE_GICV3_REDIST_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_read(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_redist_read(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_read(cpu, offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_REDIST_BADREAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_badread(uint32_t cpu, uint64_t offset, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_redist_badread(uint32_t cpu, uint64_t offset, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_badread(cpu, offset, size, secure);
+ }
+}
+
+#define TRACE_GICV3_REDIST_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_write(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_redist_write(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_write(cpu, offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_REDIST_BADWRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_badwrite(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+}
+
+static inline void trace_gicv3_redist_badwrite(uint32_t cpu, uint64_t offset, uint64_t data, unsigned size, bool secure)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_badwrite(cpu, offset, data, size, secure);
+ }
+}
+
+#define TRACE_GICV3_REDIST_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_set_irq(uint32_t cpu, int irq, int level)
+{
+}
+
+static inline void trace_gicv3_redist_set_irq(uint32_t cpu, int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_set_irq(cpu, irq, level);
+ }
+}
+
+#define TRACE_GICV3_REDIST_SEND_SGI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gicv3_redist_send_sgi(uint32_t cpu, int irq)
+{
+}
+
+static inline void trace_gicv3_redist_send_sgi(uint32_t cpu, int irq)
+{
+ if (true) {
+ _nocheck__trace_gicv3_redist_send_sgi(cpu, irq);
+ }
+}
+
+#define TRACE_NVIC_RECOMPUTE_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_recompute_state(int vectpending, int vectpending_prio, int exception_prio)
+{
+}
+
+static inline void trace_nvic_recompute_state(int vectpending, int vectpending_prio, int exception_prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_recompute_state(vectpending, vectpending_prio, exception_prio);
+ }
+}
+
+#define TRACE_NVIC_RECOMPUTE_STATE_SECURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_recompute_state_secure(int vectpending, bool vectpending_is_s_banked, int vectpending_prio, int exception_prio)
+{
+}
+
+static inline void trace_nvic_recompute_state_secure(int vectpending, bool vectpending_is_s_banked, int vectpending_prio, int exception_prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_recompute_state_secure(vectpending, vectpending_is_s_banked, vectpending_prio, exception_prio);
+ }
+}
+
+#define TRACE_NVIC_SET_PRIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_set_prio(int irq, bool secure, uint8_t prio)
+{
+}
+
+static inline void trace_nvic_set_prio(int irq, bool secure, uint8_t prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_set_prio(irq, secure, prio);
+ }
+}
+
+#define TRACE_NVIC_IRQ_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_irq_update(int vectpending, int pendprio, int exception_prio, int level)
+{
+}
+
+static inline void trace_nvic_irq_update(int vectpending, int pendprio, int exception_prio, int level)
+{
+ if (true) {
+ _nocheck__trace_nvic_irq_update(vectpending, pendprio, exception_prio, level);
+ }
+}
+
+#define TRACE_NVIC_ESCALATE_PRIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_escalate_prio(int irq, int irqprio, int runprio)
+{
+}
+
+static inline void trace_nvic_escalate_prio(int irq, int irqprio, int runprio)
+{
+ if (true) {
+ _nocheck__trace_nvic_escalate_prio(irq, irqprio, runprio);
+ }
+}
+
+#define TRACE_NVIC_ESCALATE_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_escalate_disabled(int irq)
+{
+}
+
+static inline void trace_nvic_escalate_disabled(int irq)
+{
+ if (true) {
+ _nocheck__trace_nvic_escalate_disabled(irq);
+ }
+}
+
+#define TRACE_NVIC_SET_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_set_pending(int irq, bool secure, bool derived, int en, int prio)
+{
+}
+
+static inline void trace_nvic_set_pending(int irq, bool secure, bool derived, int en, int prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_set_pending(irq, secure, derived, en, prio);
+ }
+}
+
+#define TRACE_NVIC_CLEAR_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_clear_pending(int irq, bool secure, int en, int prio)
+{
+}
+
+static inline void trace_nvic_clear_pending(int irq, bool secure, int en, int prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_clear_pending(irq, secure, en, prio);
+ }
+}
+
+#define TRACE_NVIC_SET_PENDING_LEVEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_set_pending_level(int irq)
+{
+}
+
+static inline void trace_nvic_set_pending_level(int irq)
+{
+ if (true) {
+ _nocheck__trace_nvic_set_pending_level(irq);
+ }
+}
+
+#define TRACE_NVIC_ACKNOWLEDGE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_acknowledge_irq(int irq, int prio)
+{
+}
+
+static inline void trace_nvic_acknowledge_irq(int irq, int prio)
+{
+ if (true) {
+ _nocheck__trace_nvic_acknowledge_irq(irq, prio);
+ }
+}
+
+#define TRACE_NVIC_GET_PENDING_IRQ_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_get_pending_irq_info(int irq, bool secure)
+{
+}
+
+static inline void trace_nvic_get_pending_irq_info(int irq, bool secure)
+{
+ if (true) {
+ _nocheck__trace_nvic_get_pending_irq_info(irq, secure);
+ }
+}
+
+#define TRACE_NVIC_COMPLETE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_complete_irq(int irq, bool secure)
+{
+}
+
+static inline void trace_nvic_complete_irq(int irq, bool secure)
+{
+ if (true) {
+ _nocheck__trace_nvic_complete_irq(irq, secure);
+ }
+}
+
+#define TRACE_NVIC_SET_IRQ_LEVEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_set_irq_level(int irq, int level)
+{
+}
+
+static inline void trace_nvic_set_irq_level(int irq, int level)
+{
+ if (true) {
+ _nocheck__trace_nvic_set_irq_level(irq, level);
+ }
+}
+
+#define TRACE_NVIC_SYSREG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_sysreg_read(uint64_t addr, uint32_t value, unsigned size)
+{
+}
+
+static inline void trace_nvic_sysreg_read(uint64_t addr, uint32_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_nvic_sysreg_read(addr, value, size);
+ }
+}
+
+#define TRACE_NVIC_SYSREG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvic_sysreg_write(uint64_t addr, uint32_t value, unsigned size)
+{
+}
+
+static inline void trace_nvic_sysreg_write(uint64_t addr, uint32_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_nvic_sysreg_write(addr, value, size);
+ }
+}
+
+#define TRACE_HEATHROW_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_heathrow_write(uint64_t addr, unsigned int n, uint64_t value)
+{
+}
+
+static inline void trace_heathrow_write(uint64_t addr, unsigned int n, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_heathrow_write(addr, n, value);
+ }
+}
+
+#define TRACE_HEATHROW_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_heathrow_read(uint64_t addr, unsigned int n, uint64_t value)
+{
+}
+
+static inline void trace_heathrow_read(uint64_t addr, unsigned int n, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_heathrow_read(addr, n, value);
+ }
+}
+
+#define TRACE_HEATHROW_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_heathrow_set_irq(int num, int level)
+{
+}
+
+static inline void trace_heathrow_set_irq(int num, int level)
+{
+ if (true) {
+ _nocheck__trace_heathrow_set_irq(num, level);
+ }
+}
+#endif /* TRACE_HW_INTC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/isa/trace.c b/qemu2-auto-generated/hw/isa/trace.c
new file mode 100644
index 0000000000..e40853745d
--- /dev/null
+++ b/qemu2-auto-generated/hw/isa/trace.c
@@ -0,0 +1,68 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_SUPERIO_CREATE_PARALLEL_DSTATE;
+uint16_t _TRACE_SUPERIO_CREATE_SERIAL_DSTATE;
+uint16_t _TRACE_SUPERIO_CREATE_FLOPPY_DSTATE;
+uint16_t _TRACE_SUPERIO_CREATE_IDE_DSTATE;
+uint16_t _TRACE_PC87312_IO_READ_DSTATE;
+uint16_t _TRACE_PC87312_IO_WRITE_DSTATE;
+TraceEvent _TRACE_SUPERIO_CREATE_PARALLEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "superio_create_parallel",
+ .sstate = TRACE_SUPERIO_CREATE_PARALLEL_ENABLED,
+ .dstate = &_TRACE_SUPERIO_CREATE_PARALLEL_DSTATE
+};
+TraceEvent _TRACE_SUPERIO_CREATE_SERIAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "superio_create_serial",
+ .sstate = TRACE_SUPERIO_CREATE_SERIAL_ENABLED,
+ .dstate = &_TRACE_SUPERIO_CREATE_SERIAL_DSTATE
+};
+TraceEvent _TRACE_SUPERIO_CREATE_FLOPPY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "superio_create_floppy",
+ .sstate = TRACE_SUPERIO_CREATE_FLOPPY_ENABLED,
+ .dstate = &_TRACE_SUPERIO_CREATE_FLOPPY_DSTATE
+};
+TraceEvent _TRACE_SUPERIO_CREATE_IDE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "superio_create_ide",
+ .sstate = TRACE_SUPERIO_CREATE_IDE_ENABLED,
+ .dstate = &_TRACE_SUPERIO_CREATE_IDE_DSTATE
+};
+TraceEvent _TRACE_PC87312_IO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pc87312_io_read",
+ .sstate = TRACE_PC87312_IO_READ_ENABLED,
+ .dstate = &_TRACE_PC87312_IO_READ_DSTATE
+};
+TraceEvent _TRACE_PC87312_IO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pc87312_io_write",
+ .sstate = TRACE_PC87312_IO_WRITE_ENABLED,
+ .dstate = &_TRACE_PC87312_IO_WRITE_DSTATE
+};
+TraceEvent *hw_isa_trace_events[] = {
+ &_TRACE_SUPERIO_CREATE_PARALLEL_EVENT,
+ &_TRACE_SUPERIO_CREATE_SERIAL_EVENT,
+ &_TRACE_SUPERIO_CREATE_FLOPPY_EVENT,
+ &_TRACE_SUPERIO_CREATE_IDE_EVENT,
+ &_TRACE_PC87312_IO_READ_EVENT,
+ &_TRACE_PC87312_IO_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_isa_register_events(void)
+{
+ trace_event_register_group(hw_isa_trace_events);
+}
+trace_init(trace_hw_isa_register_events)
diff --git a/qemu2-auto-generated/hw/isa/trace.h b/qemu2-auto-generated/hw/isa/trace.h
new file mode 100644
index 0000000000..b9e91c0319
--- /dev/null
+++ b/qemu2-auto-generated/hw/isa/trace.h
@@ -0,0 +1,111 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_ISA_GENERATED_TRACERS_H
+#define TRACE_HW_ISA_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_SUPERIO_CREATE_PARALLEL_EVENT;
+extern TraceEvent _TRACE_SUPERIO_CREATE_SERIAL_EVENT;
+extern TraceEvent _TRACE_SUPERIO_CREATE_FLOPPY_EVENT;
+extern TraceEvent _TRACE_SUPERIO_CREATE_IDE_EVENT;
+extern TraceEvent _TRACE_PC87312_IO_READ_EVENT;
+extern TraceEvent _TRACE_PC87312_IO_WRITE_EVENT;
+extern uint16_t _TRACE_SUPERIO_CREATE_PARALLEL_DSTATE;
+extern uint16_t _TRACE_SUPERIO_CREATE_SERIAL_DSTATE;
+extern uint16_t _TRACE_SUPERIO_CREATE_FLOPPY_DSTATE;
+extern uint16_t _TRACE_SUPERIO_CREATE_IDE_DSTATE;
+extern uint16_t _TRACE_PC87312_IO_READ_DSTATE;
+extern uint16_t _TRACE_PC87312_IO_WRITE_DSTATE;
+#define TRACE_SUPERIO_CREATE_PARALLEL_ENABLED 1
+#define TRACE_SUPERIO_CREATE_SERIAL_ENABLED 1
+#define TRACE_SUPERIO_CREATE_FLOPPY_ENABLED 1
+#define TRACE_SUPERIO_CREATE_IDE_ENABLED 1
+#define TRACE_PC87312_IO_READ_ENABLED 1
+#define TRACE_PC87312_IO_WRITE_ENABLED 1
+
+#define TRACE_SUPERIO_CREATE_PARALLEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_superio_create_parallel(int id, uint16_t base, unsigned int irq)
+{
+}
+
+static inline void trace_superio_create_parallel(int id, uint16_t base, unsigned int irq)
+{
+ if (true) {
+ _nocheck__trace_superio_create_parallel(id, base, irq);
+ }
+}
+
+#define TRACE_SUPERIO_CREATE_SERIAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_superio_create_serial(int id, uint16_t base, unsigned int irq)
+{
+}
+
+static inline void trace_superio_create_serial(int id, uint16_t base, unsigned int irq)
+{
+ if (true) {
+ _nocheck__trace_superio_create_serial(id, base, irq);
+ }
+}
+
+#define TRACE_SUPERIO_CREATE_FLOPPY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_superio_create_floppy(int id, uint16_t base, unsigned int irq)
+{
+}
+
+static inline void trace_superio_create_floppy(int id, uint16_t base, unsigned int irq)
+{
+ if (true) {
+ _nocheck__trace_superio_create_floppy(id, base, irq);
+ }
+}
+
+#define TRACE_SUPERIO_CREATE_IDE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_superio_create_ide(int id, uint16_t base, unsigned int irq)
+{
+}
+
+static inline void trace_superio_create_ide(int id, uint16_t base, unsigned int irq)
+{
+ if (true) {
+ _nocheck__trace_superio_create_ide(id, base, irq);
+ }
+}
+
+#define TRACE_PC87312_IO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pc87312_io_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pc87312_io_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pc87312_io_read(addr, val);
+ }
+}
+
+#define TRACE_PC87312_IO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pc87312_io_write(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pc87312_io_write(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pc87312_io_write(addr, val);
+ }
+}
+#endif /* TRACE_HW_ISA_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/mem/trace.c b/qemu2-auto-generated/hw/mem/trace.c
new file mode 100644
index 0000000000..895d95add3
--- /dev/null
+++ b/qemu2-auto-generated/hw/mem/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_DSTATE;
+uint16_t _TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_DSTATE;
+TraceEvent _TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_pc_dimm_assigned_slot",
+ .sstate = TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_ENABLED,
+ .dstate = &_TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_DSTATE
+};
+TraceEvent _TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mhp_pc_dimm_assigned_address",
+ .sstate = TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_ENABLED,
+ .dstate = &_TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_DSTATE
+};
+TraceEvent *hw_mem_trace_events[] = {
+ &_TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_EVENT,
+ &_TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_EVENT,
+ NULL,
+};
+
+static void trace_hw_mem_register_events(void)
+{
+ trace_event_register_group(hw_mem_trace_events);
+}
+trace_init(trace_hw_mem_register_events)
diff --git a/qemu2-auto-generated/hw/mem/trace.h b/qemu2-auto-generated/hw/mem/trace.h
new file mode 100644
index 0000000000..0f06bf1a33
--- /dev/null
+++ b/qemu2-auto-generated/hw/mem/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_MEM_GENERATED_TRACERS_H
+#define TRACE_HW_MEM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_EVENT;
+extern TraceEvent _TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_EVENT;
+extern uint16_t _TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_DSTATE;
+extern uint16_t _TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_DSTATE;
+#define TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_ENABLED 1
+#define TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_ENABLED 1
+
+#define TRACE_MHP_PC_DIMM_ASSIGNED_SLOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_pc_dimm_assigned_slot(int slot)
+{
+}
+
+static inline void trace_mhp_pc_dimm_assigned_slot(int slot)
+{
+ if (true) {
+ _nocheck__trace_mhp_pc_dimm_assigned_slot(slot);
+ }
+}
+
+#define TRACE_MHP_PC_DIMM_ASSIGNED_ADDRESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mhp_pc_dimm_assigned_address(uint64_t addr)
+{
+}
+
+static inline void trace_mhp_pc_dimm_assigned_address(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_mhp_pc_dimm_assigned_address(addr);
+ }
+}
+#endif /* TRACE_HW_MEM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/misc/macio/trace.c b/qemu2-auto-generated/hw/misc/macio/trace.c
new file mode 100644
index 0000000000..2c4ad480a7
--- /dev/null
+++ b/qemu2-auto-generated/hw/misc/macio/trace.c
@@ -0,0 +1,86 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_CUDA_DELAY_SET_SR_INT_DSTATE;
+uint16_t _TRACE_CUDA_DATA_SEND_DSTATE;
+uint16_t _TRACE_CUDA_DATA_RECV_DSTATE;
+uint16_t _TRACE_CUDA_RECEIVE_PACKET_CMD_DSTATE;
+uint16_t _TRACE_CUDA_PACKET_RECEIVE_DSTATE;
+uint16_t _TRACE_CUDA_PACKET_RECEIVE_DATA_DSTATE;
+uint16_t _TRACE_CUDA_PACKET_SEND_DSTATE;
+uint16_t _TRACE_CUDA_PACKET_SEND_DATA_DSTATE;
+TraceEvent _TRACE_CUDA_DELAY_SET_SR_INT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_delay_set_sr_int",
+ .sstate = TRACE_CUDA_DELAY_SET_SR_INT_ENABLED,
+ .dstate = &_TRACE_CUDA_DELAY_SET_SR_INT_DSTATE
+};
+TraceEvent _TRACE_CUDA_DATA_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_data_send",
+ .sstate = TRACE_CUDA_DATA_SEND_ENABLED,
+ .dstate = &_TRACE_CUDA_DATA_SEND_DSTATE
+};
+TraceEvent _TRACE_CUDA_DATA_RECV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_data_recv",
+ .sstate = TRACE_CUDA_DATA_RECV_ENABLED,
+ .dstate = &_TRACE_CUDA_DATA_RECV_DSTATE
+};
+TraceEvent _TRACE_CUDA_RECEIVE_PACKET_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_receive_packet_cmd",
+ .sstate = TRACE_CUDA_RECEIVE_PACKET_CMD_ENABLED,
+ .dstate = &_TRACE_CUDA_RECEIVE_PACKET_CMD_DSTATE
+};
+TraceEvent _TRACE_CUDA_PACKET_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_packet_receive",
+ .sstate = TRACE_CUDA_PACKET_RECEIVE_ENABLED,
+ .dstate = &_TRACE_CUDA_PACKET_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_CUDA_PACKET_RECEIVE_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_packet_receive_data",
+ .sstate = TRACE_CUDA_PACKET_RECEIVE_DATA_ENABLED,
+ .dstate = &_TRACE_CUDA_PACKET_RECEIVE_DATA_DSTATE
+};
+TraceEvent _TRACE_CUDA_PACKET_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_packet_send",
+ .sstate = TRACE_CUDA_PACKET_SEND_ENABLED,
+ .dstate = &_TRACE_CUDA_PACKET_SEND_DSTATE
+};
+TraceEvent _TRACE_CUDA_PACKET_SEND_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cuda_packet_send_data",
+ .sstate = TRACE_CUDA_PACKET_SEND_DATA_ENABLED,
+ .dstate = &_TRACE_CUDA_PACKET_SEND_DATA_DSTATE
+};
+TraceEvent *hw_misc_macio_trace_events[] = {
+ &_TRACE_CUDA_DELAY_SET_SR_INT_EVENT,
+ &_TRACE_CUDA_DATA_SEND_EVENT,
+ &_TRACE_CUDA_DATA_RECV_EVENT,
+ &_TRACE_CUDA_RECEIVE_PACKET_CMD_EVENT,
+ &_TRACE_CUDA_PACKET_RECEIVE_EVENT,
+ &_TRACE_CUDA_PACKET_RECEIVE_DATA_EVENT,
+ &_TRACE_CUDA_PACKET_SEND_EVENT,
+ &_TRACE_CUDA_PACKET_SEND_DATA_EVENT,
+ NULL,
+};
+
+static void trace_hw_misc_macio_register_events(void)
+{
+ trace_event_register_group(hw_misc_macio_trace_events);
+}
+trace_init(trace_hw_misc_macio_register_events)
diff --git a/qemu2-auto-generated/hw/misc/macio/trace.h b/qemu2-auto-generated/hw/misc/macio/trace.h
new file mode 100644
index 0000000000..a937fc814b
--- /dev/null
+++ b/qemu2-auto-generated/hw/misc/macio/trace.h
@@ -0,0 +1,145 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_MISC_MACIO_GENERATED_TRACERS_H
+#define TRACE_HW_MISC_MACIO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CUDA_DELAY_SET_SR_INT_EVENT;
+extern TraceEvent _TRACE_CUDA_DATA_SEND_EVENT;
+extern TraceEvent _TRACE_CUDA_DATA_RECV_EVENT;
+extern TraceEvent _TRACE_CUDA_RECEIVE_PACKET_CMD_EVENT;
+extern TraceEvent _TRACE_CUDA_PACKET_RECEIVE_EVENT;
+extern TraceEvent _TRACE_CUDA_PACKET_RECEIVE_DATA_EVENT;
+extern TraceEvent _TRACE_CUDA_PACKET_SEND_EVENT;
+extern TraceEvent _TRACE_CUDA_PACKET_SEND_DATA_EVENT;
+extern uint16_t _TRACE_CUDA_DELAY_SET_SR_INT_DSTATE;
+extern uint16_t _TRACE_CUDA_DATA_SEND_DSTATE;
+extern uint16_t _TRACE_CUDA_DATA_RECV_DSTATE;
+extern uint16_t _TRACE_CUDA_RECEIVE_PACKET_CMD_DSTATE;
+extern uint16_t _TRACE_CUDA_PACKET_RECEIVE_DSTATE;
+extern uint16_t _TRACE_CUDA_PACKET_RECEIVE_DATA_DSTATE;
+extern uint16_t _TRACE_CUDA_PACKET_SEND_DSTATE;
+extern uint16_t _TRACE_CUDA_PACKET_SEND_DATA_DSTATE;
+#define TRACE_CUDA_DELAY_SET_SR_INT_ENABLED 1
+#define TRACE_CUDA_DATA_SEND_ENABLED 1
+#define TRACE_CUDA_DATA_RECV_ENABLED 1
+#define TRACE_CUDA_RECEIVE_PACKET_CMD_ENABLED 1
+#define TRACE_CUDA_PACKET_RECEIVE_ENABLED 1
+#define TRACE_CUDA_PACKET_RECEIVE_DATA_ENABLED 1
+#define TRACE_CUDA_PACKET_SEND_ENABLED 1
+#define TRACE_CUDA_PACKET_SEND_DATA_ENABLED 1
+
+#define TRACE_CUDA_DELAY_SET_SR_INT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_delay_set_sr_int(void)
+{
+}
+
+static inline void trace_cuda_delay_set_sr_int(void)
+{
+ if (true) {
+ _nocheck__trace_cuda_delay_set_sr_int();
+ }
+}
+
+#define TRACE_CUDA_DATA_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_data_send(uint8_t data)
+{
+}
+
+static inline void trace_cuda_data_send(uint8_t data)
+{
+ if (true) {
+ _nocheck__trace_cuda_data_send(data);
+ }
+}
+
+#define TRACE_CUDA_DATA_RECV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_data_recv(uint8_t data)
+{
+}
+
+static inline void trace_cuda_data_recv(uint8_t data)
+{
+ if (true) {
+ _nocheck__trace_cuda_data_recv(data);
+ }
+}
+
+#define TRACE_CUDA_RECEIVE_PACKET_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_receive_packet_cmd(const char * cmd)
+{
+}
+
+static inline void trace_cuda_receive_packet_cmd(const char * cmd)
+{
+ if (true) {
+ _nocheck__trace_cuda_receive_packet_cmd(cmd);
+ }
+}
+
+#define TRACE_CUDA_PACKET_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_packet_receive(int len)
+{
+}
+
+static inline void trace_cuda_packet_receive(int len)
+{
+ if (true) {
+ _nocheck__trace_cuda_packet_receive(len);
+ }
+}
+
+#define TRACE_CUDA_PACKET_RECEIVE_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_packet_receive_data(int i, const uint8_t data)
+{
+}
+
+static inline void trace_cuda_packet_receive_data(int i, const uint8_t data)
+{
+ if (true) {
+ _nocheck__trace_cuda_packet_receive_data(i, data);
+ }
+}
+
+#define TRACE_CUDA_PACKET_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_packet_send(int len)
+{
+}
+
+static inline void trace_cuda_packet_send(int len)
+{
+ if (true) {
+ _nocheck__trace_cuda_packet_send(len);
+ }
+}
+
+#define TRACE_CUDA_PACKET_SEND_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cuda_packet_send_data(int i, const uint8_t data)
+{
+}
+
+static inline void trace_cuda_packet_send_data(int i, const uint8_t data)
+{
+ if (true) {
+ _nocheck__trace_cuda_packet_send_data(i, data);
+ }
+}
+#endif /* TRACE_HW_MISC_MACIO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/misc/trace.c b/qemu2-auto-generated/hw/misc/trace.c
new file mode 100644
index 0000000000..3f84632296
--- /dev/null
+++ b/qemu2-auto-generated/hw/misc/trace.c
@@ -0,0 +1,716 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_ECC_MEM_WRITEL_MER_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_MDR_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_MFSR_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_VCR_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_DR_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_ECR0_DSTATE;
+uint16_t _TRACE_ECC_MEM_WRITEL_ECR1_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_MER_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_MDR_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_MFSR_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_VCR_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_MFAR0_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_MFAR1_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_DR_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_ECR0_DSTATE;
+uint16_t _TRACE_ECC_MEM_READL_ECR1_DSTATE;
+uint16_t _TRACE_ECC_DIAG_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_ECC_DIAG_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_DSTATE;
+uint16_t _TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_DSTATE;
+uint16_t _TRACE_SLAVIO_SET_POWER_FAIL_DSTATE;
+uint16_t _TRACE_SLAVIO_CFG_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_SLAVIO_CFG_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_DIAG_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_SLAVIO_DIAG_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_MDM_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_SLAVIO_MDM_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_AUX1_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_SLAVIO_AUX1_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_AUX2_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_SLAVIO_AUX2_MEM_READB_DSTATE;
+uint16_t _TRACE_APC_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_APC_MEM_READB_DSTATE;
+uint16_t _TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SLAVIO_SYSCTRL_MEM_READL_DSTATE;
+uint16_t _TRACE_SLAVIO_LED_MEM_WRITEW_DSTATE;
+uint16_t _TRACE_SLAVIO_LED_MEM_READW_DSTATE;
+uint16_t _TRACE_MILKYMIST_HPDMC_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_PFPU_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_PFPU_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_PFPU_VECTOUT_DSTATE;
+uint16_t _TRACE_MILKYMIST_PFPU_PULSE_IRQ_DSTATE;
+uint16_t _TRACE_ASPEED_SCU_WRITE_DSTATE;
+uint16_t _TRACE_MPS2_SCC_READ_DSTATE;
+uint16_t _TRACE_MPS2_SCC_WRITE_DSTATE;
+uint16_t _TRACE_MPS2_SCC_RESET_DSTATE;
+uint16_t _TRACE_MPS2_SCC_LEDS_DSTATE;
+uint16_t _TRACE_MPS2_SCC_CFG_WRITE_DSTATE;
+uint16_t _TRACE_MPS2_SCC_CFG_READ_DSTATE;
+uint16_t _TRACE_MPS2_FPGAIO_READ_DSTATE;
+uint16_t _TRACE_MPS2_FPGAIO_WRITE_DSTATE;
+uint16_t _TRACE_MPS2_FPGAIO_RESET_DSTATE;
+uint16_t _TRACE_MPS2_FPGAIO_LEDS_DSTATE;
+uint16_t _TRACE_MSF2_SYSREG_WRITE_DSTATE;
+uint16_t _TRACE_MSF2_SYSREG_READ_DSTATE;
+uint16_t _TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_DSTATE;
+uint16_t _TRACE_IMX7_GPR_READ_DSTATE;
+uint16_t _TRACE_IMX7_GPR_WRITE_DSTATE;
+uint16_t _TRACE_MOS6522_SET_COUNTER_DSTATE;
+uint16_t _TRACE_MOS6522_GET_NEXT_IRQ_TIME_DSTATE;
+uint16_t _TRACE_MOS6522_SET_SR_INT_DSTATE;
+uint16_t _TRACE_MOS6522_WRITE_DSTATE;
+uint16_t _TRACE_MOS6522_READ_DSTATE;
+uint16_t _TRACE_TZ_PPC_RESET_DSTATE;
+uint16_t _TRACE_TZ_PPC_CFG_NONSEC_DSTATE;
+uint16_t _TRACE_TZ_PPC_CFG_AP_DSTATE;
+uint16_t _TRACE_TZ_PPC_CFG_SEC_RESP_DSTATE;
+uint16_t _TRACE_TZ_PPC_IRQ_ENABLE_DSTATE;
+uint16_t _TRACE_TZ_PPC_IRQ_CLEAR_DSTATE;
+uint16_t _TRACE_TZ_PPC_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_TZ_PPC_READ_BLOCKED_DSTATE;
+uint16_t _TRACE_TZ_PPC_WRITE_BLOCKED_DSTATE;
+uint16_t _TRACE_IOTKIT_SECCTL_S_READ_DSTATE;
+uint16_t _TRACE_IOTKIT_SECCTL_S_WRITE_DSTATE;
+uint16_t _TRACE_IOTKIT_SECCTL_NS_READ_DSTATE;
+uint16_t _TRACE_IOTKIT_SECCTL_NS_WRITE_DSTATE;
+uint16_t _TRACE_IOTKIT_SECCTL_RESET_DSTATE;
+TraceEvent _TRACE_ECC_MEM_WRITEL_MER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_mer",
+ .sstate = TRACE_ECC_MEM_WRITEL_MER_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_MER_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_MDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_mdr",
+ .sstate = TRACE_ECC_MEM_WRITEL_MDR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_MDR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_MFSR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_mfsr",
+ .sstate = TRACE_ECC_MEM_WRITEL_MFSR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_MFSR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_VCR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_vcr",
+ .sstate = TRACE_ECC_MEM_WRITEL_VCR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_VCR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_DR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_dr",
+ .sstate = TRACE_ECC_MEM_WRITEL_DR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_DR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_ECR0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_ecr0",
+ .sstate = TRACE_ECC_MEM_WRITEL_ECR0_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_ECR0_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_WRITEL_ECR1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_writel_ecr1",
+ .sstate = TRACE_ECC_MEM_WRITEL_ECR1_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_WRITEL_ECR1_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_MER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_mer",
+ .sstate = TRACE_ECC_MEM_READL_MER_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_MER_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_MDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_mdr",
+ .sstate = TRACE_ECC_MEM_READL_MDR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_MDR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_MFSR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_mfsr",
+ .sstate = TRACE_ECC_MEM_READL_MFSR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_MFSR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_VCR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_vcr",
+ .sstate = TRACE_ECC_MEM_READL_VCR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_VCR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_MFAR0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_mfar0",
+ .sstate = TRACE_ECC_MEM_READL_MFAR0_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_MFAR0_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_MFAR1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_mfar1",
+ .sstate = TRACE_ECC_MEM_READL_MFAR1_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_MFAR1_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_DR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_dr",
+ .sstate = TRACE_ECC_MEM_READL_DR_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_DR_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_ECR0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_ecr0",
+ .sstate = TRACE_ECC_MEM_READL_ECR0_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_ECR0_DSTATE
+};
+TraceEvent _TRACE_ECC_MEM_READL_ECR1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_mem_readl_ecr1",
+ .sstate = TRACE_ECC_MEM_READL_ECR1_ENABLED,
+ .dstate = &_TRACE_ECC_MEM_READL_ECR1_DSTATE
+};
+TraceEvent _TRACE_ECC_DIAG_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_diag_mem_writeb",
+ .sstate = TRACE_ECC_DIAG_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_ECC_DIAG_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_ECC_DIAG_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ecc_diag_mem_readb",
+ .sstate = TRACE_ECC_DIAG_MEM_READB_ENABLED,
+ .dstate = &_TRACE_ECC_DIAG_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_misc_update_irq_raise",
+ .sstate = TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_ENABLED,
+ .dstate = &_TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_misc_update_irq_lower",
+ .sstate = TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_ENABLED,
+ .dstate = &_TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_SET_POWER_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_set_power_fail",
+ .sstate = TRACE_SLAVIO_SET_POWER_FAIL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_SET_POWER_FAIL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_CFG_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_cfg_mem_writeb",
+ .sstate = TRACE_SLAVIO_CFG_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_CFG_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_CFG_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_cfg_mem_readb",
+ .sstate = TRACE_SLAVIO_CFG_MEM_READB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_CFG_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_DIAG_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_diag_mem_writeb",
+ .sstate = TRACE_SLAVIO_DIAG_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_DIAG_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_DIAG_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_diag_mem_readb",
+ .sstate = TRACE_SLAVIO_DIAG_MEM_READB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_DIAG_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_MDM_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_mdm_mem_writeb",
+ .sstate = TRACE_SLAVIO_MDM_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_MDM_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_MDM_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_mdm_mem_readb",
+ .sstate = TRACE_SLAVIO_MDM_MEM_READB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_MDM_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_AUX1_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_aux1_mem_writeb",
+ .sstate = TRACE_SLAVIO_AUX1_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_AUX1_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_AUX1_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_aux1_mem_readb",
+ .sstate = TRACE_SLAVIO_AUX1_MEM_READB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_AUX1_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_AUX2_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_aux2_mem_writeb",
+ .sstate = TRACE_SLAVIO_AUX2_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_AUX2_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_AUX2_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_aux2_mem_readb",
+ .sstate = TRACE_SLAVIO_AUX2_MEM_READB_ENABLED,
+ .dstate = &_TRACE_SLAVIO_AUX2_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_APC_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apc_mem_writeb",
+ .sstate = TRACE_APC_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_APC_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_APC_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "apc_mem_readb",
+ .sstate = TRACE_APC_MEM_READB_ENABLED,
+ .dstate = &_TRACE_APC_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_sysctrl_mem_writel",
+ .sstate = TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_SYSCTRL_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_sysctrl_mem_readl",
+ .sstate = TRACE_SLAVIO_SYSCTRL_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_SYSCTRL_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_LED_MEM_WRITEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_led_mem_writew",
+ .sstate = TRACE_SLAVIO_LED_MEM_WRITEW_ENABLED,
+ .dstate = &_TRACE_SLAVIO_LED_MEM_WRITEW_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_LED_MEM_READW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_led_mem_readw",
+ .sstate = TRACE_SLAVIO_LED_MEM_READW_ENABLED,
+ .dstate = &_TRACE_SLAVIO_LED_MEM_READW_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_HPDMC_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_hpdmc_memory_read",
+ .sstate = TRACE_MILKYMIST_HPDMC_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_HPDMC_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_hpdmc_memory_write",
+ .sstate = TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_PFPU_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_pfpu_memory_read",
+ .sstate = TRACE_MILKYMIST_PFPU_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_PFPU_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_PFPU_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_pfpu_memory_write",
+ .sstate = TRACE_MILKYMIST_PFPU_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_PFPU_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_PFPU_VECTOUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_pfpu_vectout",
+ .sstate = TRACE_MILKYMIST_PFPU_VECTOUT_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_PFPU_VECTOUT_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_PFPU_PULSE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_pfpu_pulse_irq",
+ .sstate = TRACE_MILKYMIST_PFPU_PULSE_IRQ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_PFPU_PULSE_IRQ_DSTATE
+};
+TraceEvent _TRACE_ASPEED_SCU_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_scu_write",
+ .sstate = TRACE_ASPEED_SCU_WRITE_ENABLED,
+ .dstate = &_TRACE_ASPEED_SCU_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_read",
+ .sstate = TRACE_MPS2_SCC_READ_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_READ_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_write",
+ .sstate = TRACE_MPS2_SCC_WRITE_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_reset",
+ .sstate = TRACE_MPS2_SCC_RESET_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_RESET_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_LEDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_leds",
+ .sstate = TRACE_MPS2_SCC_LEDS_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_LEDS_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_CFG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_cfg_write",
+ .sstate = TRACE_MPS2_SCC_CFG_WRITE_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_CFG_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPS2_SCC_CFG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_scc_cfg_read",
+ .sstate = TRACE_MPS2_SCC_CFG_READ_ENABLED,
+ .dstate = &_TRACE_MPS2_SCC_CFG_READ_DSTATE
+};
+TraceEvent _TRACE_MPS2_FPGAIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_fpgaio_read",
+ .sstate = TRACE_MPS2_FPGAIO_READ_ENABLED,
+ .dstate = &_TRACE_MPS2_FPGAIO_READ_DSTATE
+};
+TraceEvent _TRACE_MPS2_FPGAIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_fpgaio_write",
+ .sstate = TRACE_MPS2_FPGAIO_WRITE_ENABLED,
+ .dstate = &_TRACE_MPS2_FPGAIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPS2_FPGAIO_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_fpgaio_reset",
+ .sstate = TRACE_MPS2_FPGAIO_RESET_ENABLED,
+ .dstate = &_TRACE_MPS2_FPGAIO_RESET_DSTATE
+};
+TraceEvent _TRACE_MPS2_FPGAIO_LEDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mps2_fpgaio_leds",
+ .sstate = TRACE_MPS2_FPGAIO_LEDS_ENABLED,
+ .dstate = &_TRACE_MPS2_FPGAIO_LEDS_DSTATE
+};
+TraceEvent _TRACE_MSF2_SYSREG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "msf2_sysreg_write",
+ .sstate = TRACE_MSF2_SYSREG_WRITE_ENABLED,
+ .dstate = &_TRACE_MSF2_SYSREG_WRITE_DSTATE
+};
+TraceEvent _TRACE_MSF2_SYSREG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "msf2_sysreg_read",
+ .sstate = TRACE_MSF2_SYSREG_READ_ENABLED,
+ .dstate = &_TRACE_MSF2_SYSREG_READ_DSTATE
+};
+TraceEvent _TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "msf2_sysreg_write_pll_status",
+ .sstate = TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_ENABLED,
+ .dstate = &_TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_DSTATE
+};
+TraceEvent _TRACE_IMX7_GPR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "imx7_gpr_read",
+ .sstate = TRACE_IMX7_GPR_READ_ENABLED,
+ .dstate = &_TRACE_IMX7_GPR_READ_DSTATE
+};
+TraceEvent _TRACE_IMX7_GPR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "imx7_gpr_write",
+ .sstate = TRACE_IMX7_GPR_WRITE_ENABLED,
+ .dstate = &_TRACE_IMX7_GPR_WRITE_DSTATE
+};
+TraceEvent _TRACE_MOS6522_SET_COUNTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mos6522_set_counter",
+ .sstate = TRACE_MOS6522_SET_COUNTER_ENABLED,
+ .dstate = &_TRACE_MOS6522_SET_COUNTER_DSTATE
+};
+TraceEvent _TRACE_MOS6522_GET_NEXT_IRQ_TIME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mos6522_get_next_irq_time",
+ .sstate = TRACE_MOS6522_GET_NEXT_IRQ_TIME_ENABLED,
+ .dstate = &_TRACE_MOS6522_GET_NEXT_IRQ_TIME_DSTATE
+};
+TraceEvent _TRACE_MOS6522_SET_SR_INT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mos6522_set_sr_int",
+ .sstate = TRACE_MOS6522_SET_SR_INT_ENABLED,
+ .dstate = &_TRACE_MOS6522_SET_SR_INT_DSTATE
+};
+TraceEvent _TRACE_MOS6522_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mos6522_write",
+ .sstate = TRACE_MOS6522_WRITE_ENABLED,
+ .dstate = &_TRACE_MOS6522_WRITE_DSTATE
+};
+TraceEvent _TRACE_MOS6522_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mos6522_read",
+ .sstate = TRACE_MOS6522_READ_ENABLED,
+ .dstate = &_TRACE_MOS6522_READ_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_reset",
+ .sstate = TRACE_TZ_PPC_RESET_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_RESET_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_CFG_NONSEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_cfg_nonsec",
+ .sstate = TRACE_TZ_PPC_CFG_NONSEC_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_CFG_NONSEC_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_CFG_AP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_cfg_ap",
+ .sstate = TRACE_TZ_PPC_CFG_AP_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_CFG_AP_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_CFG_SEC_RESP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_cfg_sec_resp",
+ .sstate = TRACE_TZ_PPC_CFG_SEC_RESP_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_CFG_SEC_RESP_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_IRQ_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_irq_enable",
+ .sstate = TRACE_TZ_PPC_IRQ_ENABLE_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_IRQ_ENABLE_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_IRQ_CLEAR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_irq_clear",
+ .sstate = TRACE_TZ_PPC_IRQ_CLEAR_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_IRQ_CLEAR_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_update_irq",
+ .sstate = TRACE_TZ_PPC_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_READ_BLOCKED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_read_blocked",
+ .sstate = TRACE_TZ_PPC_READ_BLOCKED_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_READ_BLOCKED_DSTATE
+};
+TraceEvent _TRACE_TZ_PPC_WRITE_BLOCKED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tz_ppc_write_blocked",
+ .sstate = TRACE_TZ_PPC_WRITE_BLOCKED_ENABLED,
+ .dstate = &_TRACE_TZ_PPC_WRITE_BLOCKED_DSTATE
+};
+TraceEvent _TRACE_IOTKIT_SECCTL_S_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "iotkit_secctl_s_read",
+ .sstate = TRACE_IOTKIT_SECCTL_S_READ_ENABLED,
+ .dstate = &_TRACE_IOTKIT_SECCTL_S_READ_DSTATE
+};
+TraceEvent _TRACE_IOTKIT_SECCTL_S_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "iotkit_secctl_s_write",
+ .sstate = TRACE_IOTKIT_SECCTL_S_WRITE_ENABLED,
+ .dstate = &_TRACE_IOTKIT_SECCTL_S_WRITE_DSTATE
+};
+TraceEvent _TRACE_IOTKIT_SECCTL_NS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "iotkit_secctl_ns_read",
+ .sstate = TRACE_IOTKIT_SECCTL_NS_READ_ENABLED,
+ .dstate = &_TRACE_IOTKIT_SECCTL_NS_READ_DSTATE
+};
+TraceEvent _TRACE_IOTKIT_SECCTL_NS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "iotkit_secctl_ns_write",
+ .sstate = TRACE_IOTKIT_SECCTL_NS_WRITE_ENABLED,
+ .dstate = &_TRACE_IOTKIT_SECCTL_NS_WRITE_DSTATE
+};
+TraceEvent _TRACE_IOTKIT_SECCTL_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "iotkit_secctl_reset",
+ .sstate = TRACE_IOTKIT_SECCTL_RESET_ENABLED,
+ .dstate = &_TRACE_IOTKIT_SECCTL_RESET_DSTATE
+};
+TraceEvent *hw_misc_trace_events[] = {
+ &_TRACE_ECC_MEM_WRITEL_MER_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_MDR_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_MFSR_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_VCR_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_DR_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_ECR0_EVENT,
+ &_TRACE_ECC_MEM_WRITEL_ECR1_EVENT,
+ &_TRACE_ECC_MEM_READL_MER_EVENT,
+ &_TRACE_ECC_MEM_READL_MDR_EVENT,
+ &_TRACE_ECC_MEM_READL_MFSR_EVENT,
+ &_TRACE_ECC_MEM_READL_VCR_EVENT,
+ &_TRACE_ECC_MEM_READL_MFAR0_EVENT,
+ &_TRACE_ECC_MEM_READL_MFAR1_EVENT,
+ &_TRACE_ECC_MEM_READL_DR_EVENT,
+ &_TRACE_ECC_MEM_READL_ECR0_EVENT,
+ &_TRACE_ECC_MEM_READL_ECR1_EVENT,
+ &_TRACE_ECC_DIAG_MEM_WRITEB_EVENT,
+ &_TRACE_ECC_DIAG_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_EVENT,
+ &_TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_EVENT,
+ &_TRACE_SLAVIO_SET_POWER_FAIL_EVENT,
+ &_TRACE_SLAVIO_CFG_MEM_WRITEB_EVENT,
+ &_TRACE_SLAVIO_CFG_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_DIAG_MEM_WRITEB_EVENT,
+ &_TRACE_SLAVIO_DIAG_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_MDM_MEM_WRITEB_EVENT,
+ &_TRACE_SLAVIO_MDM_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_AUX1_MEM_WRITEB_EVENT,
+ &_TRACE_SLAVIO_AUX1_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_AUX2_MEM_WRITEB_EVENT,
+ &_TRACE_SLAVIO_AUX2_MEM_READB_EVENT,
+ &_TRACE_APC_MEM_WRITEB_EVENT,
+ &_TRACE_APC_MEM_READB_EVENT,
+ &_TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_EVENT,
+ &_TRACE_SLAVIO_SYSCTRL_MEM_READL_EVENT,
+ &_TRACE_SLAVIO_LED_MEM_WRITEW_EVENT,
+ &_TRACE_SLAVIO_LED_MEM_READW_EVENT,
+ &_TRACE_MILKYMIST_HPDMC_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_PFPU_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_PFPU_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_PFPU_VECTOUT_EVENT,
+ &_TRACE_MILKYMIST_PFPU_PULSE_IRQ_EVENT,
+ &_TRACE_ASPEED_SCU_WRITE_EVENT,
+ &_TRACE_MPS2_SCC_READ_EVENT,
+ &_TRACE_MPS2_SCC_WRITE_EVENT,
+ &_TRACE_MPS2_SCC_RESET_EVENT,
+ &_TRACE_MPS2_SCC_LEDS_EVENT,
+ &_TRACE_MPS2_SCC_CFG_WRITE_EVENT,
+ &_TRACE_MPS2_SCC_CFG_READ_EVENT,
+ &_TRACE_MPS2_FPGAIO_READ_EVENT,
+ &_TRACE_MPS2_FPGAIO_WRITE_EVENT,
+ &_TRACE_MPS2_FPGAIO_RESET_EVENT,
+ &_TRACE_MPS2_FPGAIO_LEDS_EVENT,
+ &_TRACE_MSF2_SYSREG_WRITE_EVENT,
+ &_TRACE_MSF2_SYSREG_READ_EVENT,
+ &_TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_EVENT,
+ &_TRACE_IMX7_GPR_READ_EVENT,
+ &_TRACE_IMX7_GPR_WRITE_EVENT,
+ &_TRACE_MOS6522_SET_COUNTER_EVENT,
+ &_TRACE_MOS6522_GET_NEXT_IRQ_TIME_EVENT,
+ &_TRACE_MOS6522_SET_SR_INT_EVENT,
+ &_TRACE_MOS6522_WRITE_EVENT,
+ &_TRACE_MOS6522_READ_EVENT,
+ &_TRACE_TZ_PPC_RESET_EVENT,
+ &_TRACE_TZ_PPC_CFG_NONSEC_EVENT,
+ &_TRACE_TZ_PPC_CFG_AP_EVENT,
+ &_TRACE_TZ_PPC_CFG_SEC_RESP_EVENT,
+ &_TRACE_TZ_PPC_IRQ_ENABLE_EVENT,
+ &_TRACE_TZ_PPC_IRQ_CLEAR_EVENT,
+ &_TRACE_TZ_PPC_UPDATE_IRQ_EVENT,
+ &_TRACE_TZ_PPC_READ_BLOCKED_EVENT,
+ &_TRACE_TZ_PPC_WRITE_BLOCKED_EVENT,
+ &_TRACE_IOTKIT_SECCTL_S_READ_EVENT,
+ &_TRACE_IOTKIT_SECCTL_S_WRITE_EVENT,
+ &_TRACE_IOTKIT_SECCTL_NS_READ_EVENT,
+ &_TRACE_IOTKIT_SECCTL_NS_WRITE_EVENT,
+ &_TRACE_IOTKIT_SECCTL_RESET_EVENT,
+ NULL,
+};
+
+static void trace_hw_misc_register_events(void)
+{
+ trace_event_register_group(hw_misc_trace_events);
+}
+trace_init(trace_hw_misc_register_events)
diff --git a/qemu2-auto-generated/hw/misc/trace.h b/qemu2-auto-generated/hw/misc/trace.h
new file mode 100644
index 0000000000..3ef899b31a
--- /dev/null
+++ b/qemu2-auto-generated/hw/misc/trace.h
@@ -0,0 +1,1335 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_MISC_GENERATED_TRACERS_H
+#define TRACE_HW_MISC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_MER_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_MDR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_MFSR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_VCR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_DR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_ECR0_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_WRITEL_ECR1_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_MER_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_MDR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_MFSR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_VCR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_MFAR0_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_MFAR1_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_DR_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_ECR0_EVENT;
+extern TraceEvent _TRACE_ECC_MEM_READL_ECR1_EVENT;
+extern TraceEvent _TRACE_ECC_DIAG_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_ECC_DIAG_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_EVENT;
+extern TraceEvent _TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_EVENT;
+extern TraceEvent _TRACE_SLAVIO_SET_POWER_FAIL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_CFG_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_CFG_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_DIAG_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_DIAG_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_MDM_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_MDM_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_AUX1_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_AUX1_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_AUX2_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_AUX2_MEM_READB_EVENT;
+extern TraceEvent _TRACE_APC_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_APC_MEM_READB_EVENT;
+extern TraceEvent _TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_SYSCTRL_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_LED_MEM_WRITEW_EVENT;
+extern TraceEvent _TRACE_SLAVIO_LED_MEM_READW_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_HPDMC_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_PFPU_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_PFPU_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_PFPU_VECTOUT_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_PFPU_PULSE_IRQ_EVENT;
+extern TraceEvent _TRACE_ASPEED_SCU_WRITE_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_READ_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_WRITE_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_RESET_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_LEDS_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_CFG_WRITE_EVENT;
+extern TraceEvent _TRACE_MPS2_SCC_CFG_READ_EVENT;
+extern TraceEvent _TRACE_MPS2_FPGAIO_READ_EVENT;
+extern TraceEvent _TRACE_MPS2_FPGAIO_WRITE_EVENT;
+extern TraceEvent _TRACE_MPS2_FPGAIO_RESET_EVENT;
+extern TraceEvent _TRACE_MPS2_FPGAIO_LEDS_EVENT;
+extern TraceEvent _TRACE_MSF2_SYSREG_WRITE_EVENT;
+extern TraceEvent _TRACE_MSF2_SYSREG_READ_EVENT;
+extern TraceEvent _TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_EVENT;
+extern TraceEvent _TRACE_IMX7_GPR_READ_EVENT;
+extern TraceEvent _TRACE_IMX7_GPR_WRITE_EVENT;
+extern TraceEvent _TRACE_MOS6522_SET_COUNTER_EVENT;
+extern TraceEvent _TRACE_MOS6522_GET_NEXT_IRQ_TIME_EVENT;
+extern TraceEvent _TRACE_MOS6522_SET_SR_INT_EVENT;
+extern TraceEvent _TRACE_MOS6522_WRITE_EVENT;
+extern TraceEvent _TRACE_MOS6522_READ_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_RESET_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_CFG_NONSEC_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_CFG_AP_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_CFG_SEC_RESP_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_IRQ_ENABLE_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_IRQ_CLEAR_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_READ_BLOCKED_EVENT;
+extern TraceEvent _TRACE_TZ_PPC_WRITE_BLOCKED_EVENT;
+extern TraceEvent _TRACE_IOTKIT_SECCTL_S_READ_EVENT;
+extern TraceEvent _TRACE_IOTKIT_SECCTL_S_WRITE_EVENT;
+extern TraceEvent _TRACE_IOTKIT_SECCTL_NS_READ_EVENT;
+extern TraceEvent _TRACE_IOTKIT_SECCTL_NS_WRITE_EVENT;
+extern TraceEvent _TRACE_IOTKIT_SECCTL_RESET_EVENT;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_MER_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_MDR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_MFSR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_VCR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_DR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_ECR0_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_WRITEL_ECR1_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_MER_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_MDR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_MFSR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_VCR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_MFAR0_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_MFAR1_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_DR_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_ECR0_DSTATE;
+extern uint16_t _TRACE_ECC_MEM_READL_ECR1_DSTATE;
+extern uint16_t _TRACE_ECC_DIAG_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_ECC_DIAG_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_DSTATE;
+extern uint16_t _TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_DSTATE;
+extern uint16_t _TRACE_SLAVIO_SET_POWER_FAIL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_CFG_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_CFG_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_DIAG_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_DIAG_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_MDM_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_MDM_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_AUX1_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_AUX1_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_AUX2_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_AUX2_MEM_READB_DSTATE;
+extern uint16_t _TRACE_APC_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_APC_MEM_READB_DSTATE;
+extern uint16_t _TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_SYSCTRL_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_LED_MEM_WRITEW_DSTATE;
+extern uint16_t _TRACE_SLAVIO_LED_MEM_READW_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_HPDMC_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_PFPU_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_PFPU_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_PFPU_VECTOUT_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_PFPU_PULSE_IRQ_DSTATE;
+extern uint16_t _TRACE_ASPEED_SCU_WRITE_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_READ_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_WRITE_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_RESET_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_LEDS_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_CFG_WRITE_DSTATE;
+extern uint16_t _TRACE_MPS2_SCC_CFG_READ_DSTATE;
+extern uint16_t _TRACE_MPS2_FPGAIO_READ_DSTATE;
+extern uint16_t _TRACE_MPS2_FPGAIO_WRITE_DSTATE;
+extern uint16_t _TRACE_MPS2_FPGAIO_RESET_DSTATE;
+extern uint16_t _TRACE_MPS2_FPGAIO_LEDS_DSTATE;
+extern uint16_t _TRACE_MSF2_SYSREG_WRITE_DSTATE;
+extern uint16_t _TRACE_MSF2_SYSREG_READ_DSTATE;
+extern uint16_t _TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_DSTATE;
+extern uint16_t _TRACE_IMX7_GPR_READ_DSTATE;
+extern uint16_t _TRACE_IMX7_GPR_WRITE_DSTATE;
+extern uint16_t _TRACE_MOS6522_SET_COUNTER_DSTATE;
+extern uint16_t _TRACE_MOS6522_GET_NEXT_IRQ_TIME_DSTATE;
+extern uint16_t _TRACE_MOS6522_SET_SR_INT_DSTATE;
+extern uint16_t _TRACE_MOS6522_WRITE_DSTATE;
+extern uint16_t _TRACE_MOS6522_READ_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_RESET_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_CFG_NONSEC_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_CFG_AP_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_CFG_SEC_RESP_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_IRQ_ENABLE_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_IRQ_CLEAR_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_READ_BLOCKED_DSTATE;
+extern uint16_t _TRACE_TZ_PPC_WRITE_BLOCKED_DSTATE;
+extern uint16_t _TRACE_IOTKIT_SECCTL_S_READ_DSTATE;
+extern uint16_t _TRACE_IOTKIT_SECCTL_S_WRITE_DSTATE;
+extern uint16_t _TRACE_IOTKIT_SECCTL_NS_READ_DSTATE;
+extern uint16_t _TRACE_IOTKIT_SECCTL_NS_WRITE_DSTATE;
+extern uint16_t _TRACE_IOTKIT_SECCTL_RESET_DSTATE;
+#define TRACE_ECC_MEM_WRITEL_MER_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_MDR_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_MFSR_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_VCR_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_DR_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_ECR0_ENABLED 1
+#define TRACE_ECC_MEM_WRITEL_ECR1_ENABLED 1
+#define TRACE_ECC_MEM_READL_MER_ENABLED 1
+#define TRACE_ECC_MEM_READL_MDR_ENABLED 1
+#define TRACE_ECC_MEM_READL_MFSR_ENABLED 1
+#define TRACE_ECC_MEM_READL_VCR_ENABLED 1
+#define TRACE_ECC_MEM_READL_MFAR0_ENABLED 1
+#define TRACE_ECC_MEM_READL_MFAR1_ENABLED 1
+#define TRACE_ECC_MEM_READL_DR_ENABLED 1
+#define TRACE_ECC_MEM_READL_ECR0_ENABLED 1
+#define TRACE_ECC_MEM_READL_ECR1_ENABLED 1
+#define TRACE_ECC_DIAG_MEM_WRITEB_ENABLED 1
+#define TRACE_ECC_DIAG_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_ENABLED 1
+#define TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_ENABLED 1
+#define TRACE_SLAVIO_SET_POWER_FAIL_ENABLED 1
+#define TRACE_SLAVIO_CFG_MEM_WRITEB_ENABLED 1
+#define TRACE_SLAVIO_CFG_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_DIAG_MEM_WRITEB_ENABLED 1
+#define TRACE_SLAVIO_DIAG_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_MDM_MEM_WRITEB_ENABLED 1
+#define TRACE_SLAVIO_MDM_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_AUX1_MEM_WRITEB_ENABLED 1
+#define TRACE_SLAVIO_AUX1_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_AUX2_MEM_WRITEB_ENABLED 1
+#define TRACE_SLAVIO_AUX2_MEM_READB_ENABLED 1
+#define TRACE_APC_MEM_WRITEB_ENABLED 1
+#define TRACE_APC_MEM_READB_ENABLED 1
+#define TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_ENABLED 1
+#define TRACE_SLAVIO_SYSCTRL_MEM_READL_ENABLED 1
+#define TRACE_SLAVIO_LED_MEM_WRITEW_ENABLED 1
+#define TRACE_SLAVIO_LED_MEM_READW_ENABLED 1
+#define TRACE_MILKYMIST_HPDMC_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_PFPU_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_PFPU_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_PFPU_VECTOUT_ENABLED 1
+#define TRACE_MILKYMIST_PFPU_PULSE_IRQ_ENABLED 1
+#define TRACE_ASPEED_SCU_WRITE_ENABLED 1
+#define TRACE_MPS2_SCC_READ_ENABLED 1
+#define TRACE_MPS2_SCC_WRITE_ENABLED 1
+#define TRACE_MPS2_SCC_RESET_ENABLED 1
+#define TRACE_MPS2_SCC_LEDS_ENABLED 1
+#define TRACE_MPS2_SCC_CFG_WRITE_ENABLED 1
+#define TRACE_MPS2_SCC_CFG_READ_ENABLED 1
+#define TRACE_MPS2_FPGAIO_READ_ENABLED 1
+#define TRACE_MPS2_FPGAIO_WRITE_ENABLED 1
+#define TRACE_MPS2_FPGAIO_RESET_ENABLED 1
+#define TRACE_MPS2_FPGAIO_LEDS_ENABLED 1
+#define TRACE_MSF2_SYSREG_WRITE_ENABLED 1
+#define TRACE_MSF2_SYSREG_READ_ENABLED 1
+#define TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_ENABLED 1
+#define TRACE_IMX7_GPR_READ_ENABLED 1
+#define TRACE_IMX7_GPR_WRITE_ENABLED 1
+#define TRACE_MOS6522_SET_COUNTER_ENABLED 1
+#define TRACE_MOS6522_GET_NEXT_IRQ_TIME_ENABLED 1
+#define TRACE_MOS6522_SET_SR_INT_ENABLED 1
+#define TRACE_MOS6522_WRITE_ENABLED 1
+#define TRACE_MOS6522_READ_ENABLED 1
+#define TRACE_TZ_PPC_RESET_ENABLED 1
+#define TRACE_TZ_PPC_CFG_NONSEC_ENABLED 1
+#define TRACE_TZ_PPC_CFG_AP_ENABLED 1
+#define TRACE_TZ_PPC_CFG_SEC_RESP_ENABLED 1
+#define TRACE_TZ_PPC_IRQ_ENABLE_ENABLED 1
+#define TRACE_TZ_PPC_IRQ_CLEAR_ENABLED 1
+#define TRACE_TZ_PPC_UPDATE_IRQ_ENABLED 1
+#define TRACE_TZ_PPC_READ_BLOCKED_ENABLED 1
+#define TRACE_TZ_PPC_WRITE_BLOCKED_ENABLED 1
+#define TRACE_IOTKIT_SECCTL_S_READ_ENABLED 1
+#define TRACE_IOTKIT_SECCTL_S_WRITE_ENABLED 1
+#define TRACE_IOTKIT_SECCTL_NS_READ_ENABLED 1
+#define TRACE_IOTKIT_SECCTL_NS_WRITE_ENABLED 1
+#define TRACE_IOTKIT_SECCTL_RESET_ENABLED 1
+
+#define TRACE_ECC_MEM_WRITEL_MER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_mer(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_mer(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_mer(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_MDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_mdr(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_mdr(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_mdr(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_MFSR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_mfsr(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_mfsr(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_mfsr(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_VCR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_vcr(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_vcr(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_vcr(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_DR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_dr(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_dr(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_dr(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_ECR0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_ecr0(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_ecr0(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_ecr0(val);
+ }
+}
+
+#define TRACE_ECC_MEM_WRITEL_ECR1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_writel_ecr1(uint32_t val)
+{
+}
+
+static inline void trace_ecc_mem_writel_ecr1(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_writel_ecr1(val);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_MER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_mer(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_mer(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_mer(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_MDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_mdr(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_mdr(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_mdr(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_MFSR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_mfsr(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_mfsr(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_mfsr(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_VCR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_vcr(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_vcr(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_vcr(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_MFAR0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_mfar0(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_mfar0(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_mfar0(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_MFAR1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_mfar1(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_mfar1(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_mfar1(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_DR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_dr(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_dr(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_dr(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_ECR0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_ecr0(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_ecr0(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_ecr0(ret);
+ }
+}
+
+#define TRACE_ECC_MEM_READL_ECR1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_mem_readl_ecr1(uint32_t ret)
+{
+}
+
+static inline void trace_ecc_mem_readl_ecr1(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_mem_readl_ecr1(ret);
+ }
+}
+
+#define TRACE_ECC_DIAG_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_diag_mem_writeb(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_ecc_diag_mem_writeb(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ecc_diag_mem_writeb(addr, val);
+ }
+}
+
+#define TRACE_ECC_DIAG_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ecc_diag_mem_readb(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_ecc_diag_mem_readb(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_ecc_diag_mem_readb(addr, ret);
+ }
+}
+
+#define TRACE_SLAVIO_MISC_UPDATE_IRQ_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_misc_update_irq_raise(void)
+{
+}
+
+static inline void trace_slavio_misc_update_irq_raise(void)
+{
+ if (true) {
+ _nocheck__trace_slavio_misc_update_irq_raise();
+ }
+}
+
+#define TRACE_SLAVIO_MISC_UPDATE_IRQ_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_misc_update_irq_lower(void)
+{
+}
+
+static inline void trace_slavio_misc_update_irq_lower(void)
+{
+ if (true) {
+ _nocheck__trace_slavio_misc_update_irq_lower();
+ }
+}
+
+#define TRACE_SLAVIO_SET_POWER_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_set_power_fail(int power_failing, uint8_t config)
+{
+}
+
+static inline void trace_slavio_set_power_fail(int power_failing, uint8_t config)
+{
+ if (true) {
+ _nocheck__trace_slavio_set_power_fail(power_failing, config);
+ }
+}
+
+#define TRACE_SLAVIO_CFG_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_cfg_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_slavio_cfg_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_cfg_mem_writeb(val);
+ }
+}
+
+#define TRACE_SLAVIO_CFG_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_cfg_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_cfg_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_cfg_mem_readb(ret);
+ }
+}
+
+#define TRACE_SLAVIO_DIAG_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_diag_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_slavio_diag_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_diag_mem_writeb(val);
+ }
+}
+
+#define TRACE_SLAVIO_DIAG_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_diag_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_diag_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_diag_mem_readb(ret);
+ }
+}
+
+#define TRACE_SLAVIO_MDM_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_mdm_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_slavio_mdm_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_mdm_mem_writeb(val);
+ }
+}
+
+#define TRACE_SLAVIO_MDM_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_mdm_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_mdm_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_mdm_mem_readb(ret);
+ }
+}
+
+#define TRACE_SLAVIO_AUX1_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_aux1_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_slavio_aux1_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_aux1_mem_writeb(val);
+ }
+}
+
+#define TRACE_SLAVIO_AUX1_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_aux1_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_aux1_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_aux1_mem_readb(ret);
+ }
+}
+
+#define TRACE_SLAVIO_AUX2_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_aux2_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_slavio_aux2_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_aux2_mem_writeb(val);
+ }
+}
+
+#define TRACE_SLAVIO_AUX2_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_aux2_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_aux2_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_aux2_mem_readb(ret);
+ }
+}
+
+#define TRACE_APC_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apc_mem_writeb(uint32_t val)
+{
+}
+
+static inline void trace_apc_mem_writeb(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_apc_mem_writeb(val);
+ }
+}
+
+#define TRACE_APC_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_apc_mem_readb(uint32_t ret)
+{
+}
+
+static inline void trace_apc_mem_readb(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_apc_mem_readb(ret);
+ }
+}
+
+#define TRACE_SLAVIO_SYSCTRL_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_sysctrl_mem_writel(uint32_t val)
+{
+}
+
+static inline void trace_slavio_sysctrl_mem_writel(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_sysctrl_mem_writel(val);
+ }
+}
+
+#define TRACE_SLAVIO_SYSCTRL_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_sysctrl_mem_readl(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_sysctrl_mem_readl(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_sysctrl_mem_readl(ret);
+ }
+}
+
+#define TRACE_SLAVIO_LED_MEM_WRITEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_led_mem_writew(uint32_t val)
+{
+}
+
+static inline void trace_slavio_led_mem_writew(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_led_mem_writew(val);
+ }
+}
+
+#define TRACE_SLAVIO_LED_MEM_READW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_led_mem_readw(uint32_t ret)
+{
+}
+
+static inline void trace_slavio_led_mem_readw(uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_led_mem_readw(ret);
+ }
+}
+
+#define TRACE_MILKYMIST_HPDMC_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_hpdmc_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_hpdmc_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_hpdmc_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_HPDMC_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_hpdmc_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_hpdmc_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_hpdmc_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_PFPU_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_pfpu_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_pfpu_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_pfpu_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_PFPU_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_pfpu_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_pfpu_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_pfpu_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_PFPU_VECTOUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_pfpu_vectout(uint32_t a, uint32_t b, uint32_t dma_ptr)
+{
+}
+
+static inline void trace_milkymist_pfpu_vectout(uint32_t a, uint32_t b, uint32_t dma_ptr)
+{
+ if (true) {
+ _nocheck__trace_milkymist_pfpu_vectout(a, b, dma_ptr);
+ }
+}
+
+#define TRACE_MILKYMIST_PFPU_PULSE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_pfpu_pulse_irq(void)
+{
+}
+
+static inline void trace_milkymist_pfpu_pulse_irq(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_pfpu_pulse_irq();
+ }
+}
+
+#define TRACE_ASPEED_SCU_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_scu_write(uint64_t offset, unsigned size, uint32_t data)
+{
+}
+
+static inline void trace_aspeed_scu_write(uint64_t offset, unsigned size, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_aspeed_scu_write(offset, size, data);
+ }
+}
+
+#define TRACE_MPS2_SCC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_read(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_mps2_scc_read(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_read(offset, data, size);
+ }
+}
+
+#define TRACE_MPS2_SCC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_write(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_mps2_scc_write(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_write(offset, data, size);
+ }
+}
+
+#define TRACE_MPS2_SCC_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_reset(void)
+{
+}
+
+static inline void trace_mps2_scc_reset(void)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_reset();
+ }
+}
+
+#define TRACE_MPS2_SCC_LEDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_leds(char led7, char led6, char led5, char led4, char led3, char led2, char led1, char led0)
+{
+}
+
+static inline void trace_mps2_scc_leds(char led7, char led6, char led5, char led4, char led3, char led2, char led1, char led0)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_leds(led7, led6, led5, led4, led3, led2, led1, led0);
+ }
+}
+
+#define TRACE_MPS2_SCC_CFG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_cfg_write(unsigned function, unsigned device, uint32_t value)
+{
+}
+
+static inline void trace_mps2_scc_cfg_write(unsigned function, unsigned device, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_cfg_write(function, device, value);
+ }
+}
+
+#define TRACE_MPS2_SCC_CFG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_scc_cfg_read(unsigned function, unsigned device, uint32_t value)
+{
+}
+
+static inline void trace_mps2_scc_cfg_read(unsigned function, unsigned device, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_mps2_scc_cfg_read(function, device, value);
+ }
+}
+
+#define TRACE_MPS2_FPGAIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_fpgaio_read(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_mps2_fpgaio_read(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_mps2_fpgaio_read(offset, data, size);
+ }
+}
+
+#define TRACE_MPS2_FPGAIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_fpgaio_write(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_mps2_fpgaio_write(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_mps2_fpgaio_write(offset, data, size);
+ }
+}
+
+#define TRACE_MPS2_FPGAIO_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_fpgaio_reset(void)
+{
+}
+
+static inline void trace_mps2_fpgaio_reset(void)
+{
+ if (true) {
+ _nocheck__trace_mps2_fpgaio_reset();
+ }
+}
+
+#define TRACE_MPS2_FPGAIO_LEDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mps2_fpgaio_leds(char led1, char led0)
+{
+}
+
+static inline void trace_mps2_fpgaio_leds(char led1, char led0)
+{
+ if (true) {
+ _nocheck__trace_mps2_fpgaio_leds(led1, led0);
+ }
+}
+
+#define TRACE_MSF2_SYSREG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_msf2_sysreg_write(uint64_t offset, uint32_t val, uint32_t prev)
+{
+}
+
+static inline void trace_msf2_sysreg_write(uint64_t offset, uint32_t val, uint32_t prev)
+{
+ if (true) {
+ _nocheck__trace_msf2_sysreg_write(offset, val, prev);
+ }
+}
+
+#define TRACE_MSF2_SYSREG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_msf2_sysreg_read(uint64_t offset, uint32_t val)
+{
+}
+
+static inline void trace_msf2_sysreg_read(uint64_t offset, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_msf2_sysreg_read(offset, val);
+ }
+}
+
+#define TRACE_MSF2_SYSREG_WRITE_PLL_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_msf2_sysreg_write_pll_status(void)
+{
+}
+
+static inline void trace_msf2_sysreg_write_pll_status(void)
+{
+ if (true) {
+ _nocheck__trace_msf2_sysreg_write_pll_status();
+ }
+}
+
+#define TRACE_IMX7_GPR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_imx7_gpr_read(uint64_t offset)
+{
+}
+
+static inline void trace_imx7_gpr_read(uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_imx7_gpr_read(offset);
+ }
+}
+
+#define TRACE_IMX7_GPR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_imx7_gpr_write(uint64_t offset, uint64_t value)
+{
+}
+
+static inline void trace_imx7_gpr_write(uint64_t offset, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_imx7_gpr_write(offset, value);
+ }
+}
+
+#define TRACE_MOS6522_SET_COUNTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mos6522_set_counter(int index, unsigned int val)
+{
+}
+
+static inline void trace_mos6522_set_counter(int index, unsigned int val)
+{
+ if (true) {
+ _nocheck__trace_mos6522_set_counter(index, val);
+ }
+}
+
+#define TRACE_MOS6522_GET_NEXT_IRQ_TIME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mos6522_get_next_irq_time(uint16_t latch, int64_t d, int64_t delta)
+{
+}
+
+static inline void trace_mos6522_get_next_irq_time(uint16_t latch, int64_t d, int64_t delta)
+{
+ if (true) {
+ _nocheck__trace_mos6522_get_next_irq_time(latch, d, delta);
+ }
+}
+
+#define TRACE_MOS6522_SET_SR_INT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mos6522_set_sr_int(void)
+{
+}
+
+static inline void trace_mos6522_set_sr_int(void)
+{
+ if (true) {
+ _nocheck__trace_mos6522_set_sr_int();
+ }
+}
+
+#define TRACE_MOS6522_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mos6522_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_mos6522_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_mos6522_write(addr, val);
+ }
+}
+
+#define TRACE_MOS6522_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mos6522_read(uint64_t addr, unsigned val)
+{
+}
+
+static inline void trace_mos6522_read(uint64_t addr, unsigned val)
+{
+ if (true) {
+ _nocheck__trace_mos6522_read(addr, val);
+ }
+}
+
+#define TRACE_TZ_PPC_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_reset(void)
+{
+}
+
+static inline void trace_tz_ppc_reset(void)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_reset();
+ }
+}
+
+#define TRACE_TZ_PPC_CFG_NONSEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_cfg_nonsec(int n, int level)
+{
+}
+
+static inline void trace_tz_ppc_cfg_nonsec(int n, int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_cfg_nonsec(n, level);
+ }
+}
+
+#define TRACE_TZ_PPC_CFG_AP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_cfg_ap(int n, int level)
+{
+}
+
+static inline void trace_tz_ppc_cfg_ap(int n, int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_cfg_ap(n, level);
+ }
+}
+
+#define TRACE_TZ_PPC_CFG_SEC_RESP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_cfg_sec_resp(int level)
+{
+}
+
+static inline void trace_tz_ppc_cfg_sec_resp(int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_cfg_sec_resp(level);
+ }
+}
+
+#define TRACE_TZ_PPC_IRQ_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_irq_enable(int level)
+{
+}
+
+static inline void trace_tz_ppc_irq_enable(int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_irq_enable(level);
+ }
+}
+
+#define TRACE_TZ_PPC_IRQ_CLEAR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_irq_clear(int level)
+{
+}
+
+static inline void trace_tz_ppc_irq_clear(int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_irq_clear(level);
+ }
+}
+
+#define TRACE_TZ_PPC_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_update_irq(int level)
+{
+}
+
+static inline void trace_tz_ppc_update_irq(int level)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_update_irq(level);
+ }
+}
+
+#define TRACE_TZ_PPC_READ_BLOCKED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_read_blocked(int n, uint64_t offset, bool secure, bool user)
+{
+}
+
+static inline void trace_tz_ppc_read_blocked(int n, uint64_t offset, bool secure, bool user)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_read_blocked(n, offset, secure, user);
+ }
+}
+
+#define TRACE_TZ_PPC_WRITE_BLOCKED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tz_ppc_write_blocked(int n, uint64_t offset, bool secure, bool user)
+{
+}
+
+static inline void trace_tz_ppc_write_blocked(int n, uint64_t offset, bool secure, bool user)
+{
+ if (true) {
+ _nocheck__trace_tz_ppc_write_blocked(n, offset, secure, user);
+ }
+}
+
+#define TRACE_IOTKIT_SECCTL_S_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_iotkit_secctl_s_read(uint32_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_iotkit_secctl_s_read(uint32_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_iotkit_secctl_s_read(offset, data, size);
+ }
+}
+
+#define TRACE_IOTKIT_SECCTL_S_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_iotkit_secctl_s_write(uint32_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_iotkit_secctl_s_write(uint32_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_iotkit_secctl_s_write(offset, data, size);
+ }
+}
+
+#define TRACE_IOTKIT_SECCTL_NS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_iotkit_secctl_ns_read(uint32_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_iotkit_secctl_ns_read(uint32_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_iotkit_secctl_ns_read(offset, data, size);
+ }
+}
+
+#define TRACE_IOTKIT_SECCTL_NS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_iotkit_secctl_ns_write(uint32_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_iotkit_secctl_ns_write(uint32_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_iotkit_secctl_ns_write(offset, data, size);
+ }
+}
+
+#define TRACE_IOTKIT_SECCTL_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_iotkit_secctl_reset(void)
+{
+}
+
+static inline void trace_iotkit_secctl_reset(void)
+{
+ if (true) {
+ _nocheck__trace_iotkit_secctl_reset();
+ }
+}
+#endif /* TRACE_HW_MISC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/net/trace.c b/qemu2-auto-generated/hw/net/trace.c
new file mode 100644
index 0000000000..a53e77f36d
--- /dev/null
+++ b/qemu2-auto-generated/hw/net/trace.c
@@ -0,0 +1,2777 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_LANCE_MEM_READW_DSTATE;
+uint16_t _TRACE_LANCE_MEM_WRITEW_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_MDIO_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_TX_FRAME_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_RX_FRAME_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_DSTATE;
+uint16_t _TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_DSTATE;
+uint16_t _TRACE_MIPSNET_SEND_DSTATE;
+uint16_t _TRACE_MIPSNET_RECEIVE_DSTATE;
+uint16_t _TRACE_MIPSNET_READ_DSTATE;
+uint16_t _TRACE_MIPSNET_WRITE_DSTATE;
+uint16_t _TRACE_MIPSNET_IRQ_DSTATE;
+uint16_t _TRACE_OPEN_ETH_MII_WRITE_DSTATE;
+uint16_t _TRACE_OPEN_ETH_MII_READ_DSTATE;
+uint16_t _TRACE_OPEN_ETH_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_OPEN_ETH_RECEIVE_DSTATE;
+uint16_t _TRACE_OPEN_ETH_RECEIVE_MCAST_DSTATE;
+uint16_t _TRACE_OPEN_ETH_RECEIVE_REJECT_DSTATE;
+uint16_t _TRACE_OPEN_ETH_RECEIVE_DESC_DSTATE;
+uint16_t _TRACE_OPEN_ETH_START_XMIT_DSTATE;
+uint16_t _TRACE_OPEN_ETH_REG_READ_DSTATE;
+uint16_t _TRACE_OPEN_ETH_REG_WRITE_DSTATE;
+uint16_t _TRACE_OPEN_ETH_DESC_READ_DSTATE;
+uint16_t _TRACE_OPEN_ETH_DESC_WRITE_DSTATE;
+uint16_t _TRACE_PCNET_S_RESET_DSTATE;
+uint16_t _TRACE_PCNET_USER_INT_DSTATE;
+uint16_t _TRACE_PCNET_ISR_CHANGE_DSTATE;
+uint16_t _TRACE_PCNET_INIT_DSTATE;
+uint16_t _TRACE_PCNET_RLEN_TLEN_DSTATE;
+uint16_t _TRACE_PCNET_SS32_RDRA_TDRA_DSTATE;
+uint16_t _TRACE_PCNET_APROM_WRITEB_DSTATE;
+uint16_t _TRACE_PCNET_APROM_READB_DSTATE;
+uint16_t _TRACE_PCNET_IOPORT_READ_DSTATE;
+uint16_t _TRACE_PCNET_IOPORT_WRITE_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_WRITEB_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_WRITEW_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_WRITEL_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_READB_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_READW_DSTATE;
+uint16_t _TRACE_PCNET_MMIO_READL_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_PARSED_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_IP4_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_IP4_TCP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_IP6_TCP_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_IP6_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_IP6_EX_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_HASH_DSTATE;
+uint16_t _TRACE_NET_RX_PKT_RSS_ADD_CHUNK_DSTATE;
+uint16_t _TRACE_E1000X_RX_CAN_RECV_DISABLED_DSTATE;
+uint16_t _TRACE_E1000X_VLAN_IS_VLAN_PKT_DSTATE;
+uint16_t _TRACE_E1000X_RX_FLT_UCAST_MATCH_DSTATE;
+uint16_t _TRACE_E1000X_RX_FLT_UCAST_MISMATCH_DSTATE;
+uint16_t _TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_DSTATE;
+uint16_t _TRACE_E1000X_RX_LINK_DOWN_DSTATE;
+uint16_t _TRACE_E1000X_RX_DISABLED_DSTATE;
+uint16_t _TRACE_E1000X_RX_OVERSIZED_DSTATE;
+uint16_t _TRACE_E1000X_MAC_INDICATE_DSTATE;
+uint16_t _TRACE_E1000X_LINK_NEGOTIATION_START_DSTATE;
+uint16_t _TRACE_E1000X_LINK_NEGOTIATION_DONE_DSTATE;
+uint16_t _TRACE_E1000E_CORE_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_CORE_READ_DSTATE;
+uint16_t _TRACE_E1000E_CORE_MDIC_READ_DSTATE;
+uint16_t _TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_DSTATE;
+uint16_t _TRACE_E1000E_CORE_MDIC_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_DSTATE;
+uint16_t _TRACE_E1000E_CORE_CTRL_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_CORE_CTRL_SW_RESET_DSTATE;
+uint16_t _TRACE_E1000E_CORE_CTRL_PHY_RESET_DSTATE;
+uint16_t _TRACE_E1000E_LINK_AUTONEG_FLOWCTL_DSTATE;
+uint16_t _TRACE_E1000E_LINK_SET_PARAMS_DSTATE;
+uint16_t _TRACE_E1000E_LINK_READ_PARAMS_DSTATE;
+uint16_t _TRACE_E1000E_LINK_SET_EXT_PARAMS_DSTATE;
+uint16_t _TRACE_E1000E_LINK_STATUS_DSTATE;
+uint16_t _TRACE_E1000E_LINK_STATUS_CHANGED_DSTATE;
+uint16_t _TRACE_E1000E_WRN_REGS_WRITE_RO_DSTATE;
+uint16_t _TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_DSTATE;
+uint16_t _TRACE_E1000E_WRN_REGS_READ_UNKNOWN_DSTATE;
+uint16_t _TRACE_E1000E_WRN_REGS_READ_TRIVIAL_DSTATE;
+uint16_t _TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_DSTATE;
+uint16_t _TRACE_E1000E_WRN_NO_TS_SUPPORT_DSTATE;
+uint16_t _TRACE_E1000E_WRN_NO_SNAP_SUPPORT_DSTATE;
+uint16_t _TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_DSTATE;
+uint16_t _TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_DSTATE;
+uint16_t _TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_DSTATE;
+uint16_t _TRACE_E1000E_TX_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_TX_DESCR_DSTATE;
+uint16_t _TRACE_E1000E_RING_FREE_SPACE_DSTATE;
+uint16_t _TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_DSTATE;
+uint16_t _TRACE_E1000E_RX_CAN_RECV_DSTATE;
+uint16_t _TRACE_E1000E_RX_HAS_BUFFERS_DSTATE;
+uint16_t _TRACE_E1000E_RX_NULL_DESCRIPTOR_DSTATE;
+uint16_t _TRACE_E1000E_RX_FLT_VLAN_MISMATCH_DSTATE;
+uint16_t _TRACE_E1000E_RX_FLT_VLAN_MATCH_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESC_PS_READ_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESC_PS_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESC_BUFF_SIZES_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESC_LEN_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESC_BUFF_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_RX_DESCR_DSTATE;
+uint16_t _TRACE_E1000E_RX_SET_RCTL_DSTATE;
+uint16_t _TRACE_E1000E_RX_RECEIVE_IOV_DSTATE;
+uint16_t _TRACE_E1000E_RX_FLT_DROPPED_DSTATE;
+uint16_t _TRACE_E1000E_RX_WRITTEN_TO_GUEST_DSTATE;
+uint16_t _TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_DSTATE;
+uint16_t _TRACE_E1000E_RX_INTERRUPT_SET_DSTATE;
+uint16_t _TRACE_E1000E_RX_INTERRUPT_DELAYED_DSTATE;
+uint16_t _TRACE_E1000E_RX_SET_CSO_DSTATE;
+uint16_t _TRACE_E1000E_RX_SET_RDT_DSTATE;
+uint16_t _TRACE_E1000E_RX_SET_RFCTL_DSTATE;
+uint16_t _TRACE_E1000E_RX_START_RECV_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_STARTED_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_TYPE_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_IP4_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_IP6_RFCTL_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_IP6_DSTATE;
+uint16_t _TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_PROTOCOLS_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_VLAN_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_RSS_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_IP_ID_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_ACK_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_PKT_TYPE_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_NO_VIRTHDR_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_STATUS_FLAGS_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_DSTATE;
+uint16_t _TRACE_E1000E_VLAN_VET_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_MSI_NOTIFY_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_LEGACY_NOTIFY_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_POSTPONED_BY_XITR_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_CLEAR_IMS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_SET_IMS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ADD_MSI_OTHER_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_PENDING_INTERRUPTS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_SET_CAUSE_EXIT_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_WRITE_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_WRITE_ICS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_PROCESS_IAME_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_READ_ICS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_READ_IMS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_READ_ENTRY_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_READ_EXIT_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_IAME_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_REARM_TIMER_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_THROTTLING_TIMER_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_EITR_SET_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ITR_SET_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_DSTATE;
+uint16_t _TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_DSTATE;
+uint16_t _TRACE_E1000E_WRN_MSIX_VEC_WRONG_DSTATE;
+uint16_t _TRACE_E1000E_WRN_MSIX_INVALID_DSTATE;
+uint16_t _TRACE_E1000E_MAC_SET_PERMANENT_DSTATE;
+uint16_t _TRACE_E1000E_MAC_SET_SW_DSTATE;
+uint16_t _TRACE_E1000E_CB_PCI_REALIZE_DSTATE;
+uint16_t _TRACE_E1000E_CB_PCI_UNINIT_DSTATE;
+uint16_t _TRACE_E1000E_CB_QDEV_RESET_DSTATE;
+uint16_t _TRACE_E1000E_CB_PRE_SAVE_DSTATE;
+uint16_t _TRACE_E1000E_CB_POST_LOAD_DSTATE;
+uint16_t _TRACE_E1000E_IO_WRITE_ADDR_DSTATE;
+uint16_t _TRACE_E1000E_IO_WRITE_DATA_DSTATE;
+uint16_t _TRACE_E1000E_IO_READ_ADDR_DSTATE;
+uint16_t _TRACE_E1000E_IO_READ_DATA_DSTATE;
+uint16_t _TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_DSTATE;
+uint16_t _TRACE_E1000E_WRN_IO_READ_UNKNOWN_DSTATE;
+uint16_t _TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_DSTATE;
+uint16_t _TRACE_E1000E_WRN_IO_ADDR_FLASH_DSTATE;
+uint16_t _TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_DSTATE;
+uint16_t _TRACE_E1000E_MSI_INIT_FAIL_DSTATE;
+uint16_t _TRACE_E1000E_MSIX_INIT_FAIL_DSTATE;
+uint16_t _TRACE_E1000E_MSIX_USE_VECTOR_FAIL_DSTATE;
+uint16_t _TRACE_E1000E_CFG_SUPPORT_VIRTIO_DSTATE;
+uint16_t _TRACE_E1000E_VM_STATE_RUNNING_DSTATE;
+uint16_t _TRACE_E1000E_VM_STATE_STOPPED_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_RECEIVE_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_RECEIVE_WROTE_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_DSTATE;
+uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_CHECKSUM_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_CHECKSUM_OOB_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_UNFINISHED_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_OVERFLOW_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_FINISHED_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_KICK_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_DISABLED_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_PROCESS_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_DESC_DSTATE;
+uint16_t _TRACE_SUNGEM_TX_RESET_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_MAC_DISABLED_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_TXDMA_DISABLED_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_CHECK_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_MAC_CHECK_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_MAC_MULTICAST_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_MAC_COMPARE_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_PACKET_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_DISABLED_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_BAD_FRAME_SIZE_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_UNMATCHED_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_PROCESS_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_RINGFULL_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_DESC_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_RESET_DSTATE;
+uint16_t _TRACE_SUNGEM_RX_KICK_DSTATE;
+uint16_t _TRACE_SUNGEM_RESET_DSTATE;
+uint16_t _TRACE_SUNGEM_MII_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MII_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MII_INVALID_SOF_DSTATE;
+uint16_t _TRACE_SUNGEM_MII_INVALID_OP_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_GREG_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_GREG_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_TXDMA_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_TXDMA_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_RXDMA_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_RXDMA_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_MAC_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_MAC_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_MIF_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_MIF_READ_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_PCS_WRITE_DSTATE;
+uint16_t _TRACE_SUNGEM_MMIO_PCS_READ_DSTATE;
+uint16_t _TRACE_SUNHME_SEB_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_SEB_READ_DSTATE;
+uint16_t _TRACE_SUNHME_ETX_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_ETX_READ_DSTATE;
+uint16_t _TRACE_SUNHME_ERX_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_ERX_READ_DSTATE;
+uint16_t _TRACE_SUNHME_MAC_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_MAC_READ_DSTATE;
+uint16_t _TRACE_SUNHME_MII_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_MII_READ_DSTATE;
+uint16_t _TRACE_SUNHME_MIF_WRITE_DSTATE;
+uint16_t _TRACE_SUNHME_MIF_READ_DSTATE;
+uint16_t _TRACE_SUNHME_TX_DESC_DSTATE;
+uint16_t _TRACE_SUNHME_TX_XSUM_ADD_DSTATE;
+uint16_t _TRACE_SUNHME_TX_XSUM_STUFF_DSTATE;
+uint16_t _TRACE_SUNHME_TX_DONE_DSTATE;
+uint16_t _TRACE_SUNHME_RX_INCOMING_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_DESTMAC_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_BCAST_MATCH_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_HASH_MATCH_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_REJECT_DSTATE;
+uint16_t _TRACE_SUNHME_RX_FILTER_ACCEPT_DSTATE;
+uint16_t _TRACE_SUNHME_RX_DESC_DSTATE;
+uint16_t _TRACE_SUNHME_RX_XSUM_CALC_DSTATE;
+TraceEvent _TRACE_LANCE_MEM_READW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lance_mem_readw",
+ .sstate = TRACE_LANCE_MEM_READW_ENABLED,
+ .dstate = &_TRACE_LANCE_MEM_READW_DSTATE
+};
+TraceEvent _TRACE_LANCE_MEM_WRITEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lance_mem_writew",
+ .sstate = TRACE_LANCE_MEM_WRITEW_ENABLED,
+ .dstate = &_TRACE_LANCE_MEM_WRITEW_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_memory_read",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_memory_write",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_mdio_write",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_MDIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_mdio_read",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_MDIO_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_MDIO_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_TX_FRAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_tx_frame",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_TX_FRAME_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_TX_FRAME_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_RX_FRAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_rx_frame",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_RX_FRAME_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_RX_FRAME_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_rx_transfer",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_raise_irq_rx",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_lower_irq_rx",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_minimac2_pulse_irq_tx",
+ .sstate = TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_DSTATE
+};
+TraceEvent _TRACE_MIPSNET_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mipsnet_send",
+ .sstate = TRACE_MIPSNET_SEND_ENABLED,
+ .dstate = &_TRACE_MIPSNET_SEND_DSTATE
+};
+TraceEvent _TRACE_MIPSNET_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mipsnet_receive",
+ .sstate = TRACE_MIPSNET_RECEIVE_ENABLED,
+ .dstate = &_TRACE_MIPSNET_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_MIPSNET_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mipsnet_read",
+ .sstate = TRACE_MIPSNET_READ_ENABLED,
+ .dstate = &_TRACE_MIPSNET_READ_DSTATE
+};
+TraceEvent _TRACE_MIPSNET_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mipsnet_write",
+ .sstate = TRACE_MIPSNET_WRITE_ENABLED,
+ .dstate = &_TRACE_MIPSNET_WRITE_DSTATE
+};
+TraceEvent _TRACE_MIPSNET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mipsnet_irq",
+ .sstate = TRACE_MIPSNET_IRQ_ENABLED,
+ .dstate = &_TRACE_MIPSNET_IRQ_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_MII_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_mii_write",
+ .sstate = TRACE_OPEN_ETH_MII_WRITE_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_MII_WRITE_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_MII_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_mii_read",
+ .sstate = TRACE_OPEN_ETH_MII_READ_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_MII_READ_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_update_irq",
+ .sstate = TRACE_OPEN_ETH_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_receive",
+ .sstate = TRACE_OPEN_ETH_RECEIVE_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_RECEIVE_MCAST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_receive_mcast",
+ .sstate = TRACE_OPEN_ETH_RECEIVE_MCAST_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_RECEIVE_MCAST_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_RECEIVE_REJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_receive_reject",
+ .sstate = TRACE_OPEN_ETH_RECEIVE_REJECT_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_RECEIVE_REJECT_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_RECEIVE_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_receive_desc",
+ .sstate = TRACE_OPEN_ETH_RECEIVE_DESC_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_RECEIVE_DESC_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_START_XMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_start_xmit",
+ .sstate = TRACE_OPEN_ETH_START_XMIT_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_START_XMIT_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_REG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_reg_read",
+ .sstate = TRACE_OPEN_ETH_REG_READ_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_REG_READ_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_REG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_reg_write",
+ .sstate = TRACE_OPEN_ETH_REG_WRITE_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_REG_WRITE_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_DESC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_desc_read",
+ .sstate = TRACE_OPEN_ETH_DESC_READ_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_DESC_READ_DSTATE
+};
+TraceEvent _TRACE_OPEN_ETH_DESC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_eth_desc_write",
+ .sstate = TRACE_OPEN_ETH_DESC_WRITE_ENABLED,
+ .dstate = &_TRACE_OPEN_ETH_DESC_WRITE_DSTATE
+};
+TraceEvent _TRACE_PCNET_S_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_s_reset",
+ .sstate = TRACE_PCNET_S_RESET_ENABLED,
+ .dstate = &_TRACE_PCNET_S_RESET_DSTATE
+};
+TraceEvent _TRACE_PCNET_USER_INT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_user_int",
+ .sstate = TRACE_PCNET_USER_INT_ENABLED,
+ .dstate = &_TRACE_PCNET_USER_INT_DSTATE
+};
+TraceEvent _TRACE_PCNET_ISR_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_isr_change",
+ .sstate = TRACE_PCNET_ISR_CHANGE_ENABLED,
+ .dstate = &_TRACE_PCNET_ISR_CHANGE_DSTATE
+};
+TraceEvent _TRACE_PCNET_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_init",
+ .sstate = TRACE_PCNET_INIT_ENABLED,
+ .dstate = &_TRACE_PCNET_INIT_DSTATE
+};
+TraceEvent _TRACE_PCNET_RLEN_TLEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_rlen_tlen",
+ .sstate = TRACE_PCNET_RLEN_TLEN_ENABLED,
+ .dstate = &_TRACE_PCNET_RLEN_TLEN_DSTATE
+};
+TraceEvent _TRACE_PCNET_SS32_RDRA_TDRA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_ss32_rdra_tdra",
+ .sstate = TRACE_PCNET_SS32_RDRA_TDRA_ENABLED,
+ .dstate = &_TRACE_PCNET_SS32_RDRA_TDRA_DSTATE
+};
+TraceEvent _TRACE_PCNET_APROM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_aprom_writeb",
+ .sstate = TRACE_PCNET_APROM_WRITEB_ENABLED,
+ .dstate = &_TRACE_PCNET_APROM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_PCNET_APROM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_aprom_readb",
+ .sstate = TRACE_PCNET_APROM_READB_ENABLED,
+ .dstate = &_TRACE_PCNET_APROM_READB_DSTATE
+};
+TraceEvent _TRACE_PCNET_IOPORT_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_ioport_read",
+ .sstate = TRACE_PCNET_IOPORT_READ_ENABLED,
+ .dstate = &_TRACE_PCNET_IOPORT_READ_DSTATE
+};
+TraceEvent _TRACE_PCNET_IOPORT_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_ioport_write",
+ .sstate = TRACE_PCNET_IOPORT_WRITE_ENABLED,
+ .dstate = &_TRACE_PCNET_IOPORT_WRITE_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_writeb",
+ .sstate = TRACE_PCNET_MMIO_WRITEB_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_WRITEB_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_WRITEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_writew",
+ .sstate = TRACE_PCNET_MMIO_WRITEW_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_WRITEW_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_writel",
+ .sstate = TRACE_PCNET_MMIO_WRITEL_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_WRITEL_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_readb",
+ .sstate = TRACE_PCNET_MMIO_READB_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_READB_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_READW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_readw",
+ .sstate = TRACE_PCNET_MMIO_READW_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_READW_DSTATE
+};
+TraceEvent _TRACE_PCNET_MMIO_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pcnet_mmio_readl",
+ .sstate = TRACE_PCNET_MMIO_READL_ENABLED,
+ .dstate = &_TRACE_PCNET_MMIO_READL_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_PARSED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_parsed",
+ .sstate = TRACE_NET_RX_PKT_PARSED_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_PARSED_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_validate_entry",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_validate_not_xxp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_validate_udp_with_no_checksum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_validate_ip4_fragment",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_validate_csum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_entry",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_ip4_udp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_ip4_tcp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_ip6_udp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_ip6_tcp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_ph_csum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_calc_csum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_entry",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_tcp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_udp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_not_xxp",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_ip4_fragment",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_udp_with_no_checksum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l4_csum_fix_csum",
+ .sstate = TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l3_csum_validate_entry",
+ .sstate = TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l3_csum_validate_not_ip4",
+ .sstate = TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_l3_csum_validate_csum",
+ .sstate = TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_IP4_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_ip4",
+ .sstate = TRACE_NET_RX_PKT_RSS_IP4_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_IP4_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_IP4_TCP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_ip4_tcp",
+ .sstate = TRACE_NET_RX_PKT_RSS_IP4_TCP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_IP4_TCP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_TCP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_ip6_tcp",
+ .sstate = TRACE_NET_RX_PKT_RSS_IP6_TCP_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_IP6_TCP_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_ip6",
+ .sstate = TRACE_NET_RX_PKT_RSS_IP6_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_IP6_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_EX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_ip6_ex",
+ .sstate = TRACE_NET_RX_PKT_RSS_IP6_EX_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_IP6_EX_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_HASH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_hash",
+ .sstate = TRACE_NET_RX_PKT_RSS_HASH_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_HASH_DSTATE
+};
+TraceEvent _TRACE_NET_RX_PKT_RSS_ADD_CHUNK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "net_rx_pkt_rss_add_chunk",
+ .sstate = TRACE_NET_RX_PKT_RSS_ADD_CHUNK_ENABLED,
+ .dstate = &_TRACE_NET_RX_PKT_RSS_ADD_CHUNK_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_CAN_RECV_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_can_recv_disabled",
+ .sstate = TRACE_E1000X_RX_CAN_RECV_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_CAN_RECV_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000X_VLAN_IS_VLAN_PKT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_vlan_is_vlan_pkt",
+ .sstate = TRACE_E1000X_VLAN_IS_VLAN_PKT_ENABLED,
+ .dstate = &_TRACE_E1000X_VLAN_IS_VLAN_PKT_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_FLT_UCAST_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_flt_ucast_match",
+ .sstate = TRACE_E1000X_RX_FLT_UCAST_MATCH_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_FLT_UCAST_MATCH_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_FLT_UCAST_MISMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_flt_ucast_mismatch",
+ .sstate = TRACE_E1000X_RX_FLT_UCAST_MISMATCH_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_FLT_UCAST_MISMATCH_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_flt_inexact_mismatch",
+ .sstate = TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_LINK_DOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_link_down",
+ .sstate = TRACE_E1000X_RX_LINK_DOWN_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_LINK_DOWN_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_disabled",
+ .sstate = TRACE_E1000X_RX_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000X_RX_OVERSIZED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_rx_oversized",
+ .sstate = TRACE_E1000X_RX_OVERSIZED_ENABLED,
+ .dstate = &_TRACE_E1000X_RX_OVERSIZED_DSTATE
+};
+TraceEvent _TRACE_E1000X_MAC_INDICATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_mac_indicate",
+ .sstate = TRACE_E1000X_MAC_INDICATE_ENABLED,
+ .dstate = &_TRACE_E1000X_MAC_INDICATE_DSTATE
+};
+TraceEvent _TRACE_E1000X_LINK_NEGOTIATION_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_link_negotiation_start",
+ .sstate = TRACE_E1000X_LINK_NEGOTIATION_START_ENABLED,
+ .dstate = &_TRACE_E1000X_LINK_NEGOTIATION_START_DSTATE
+};
+TraceEvent _TRACE_E1000X_LINK_NEGOTIATION_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000x_link_negotiation_done",
+ .sstate = TRACE_E1000X_LINK_NEGOTIATION_DONE_ENABLED,
+ .dstate = &_TRACE_E1000X_LINK_NEGOTIATION_DONE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_write",
+ .sstate = TRACE_E1000E_CORE_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_read",
+ .sstate = TRACE_E1000E_CORE_READ_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_READ_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_MDIC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_mdic_read",
+ .sstate = TRACE_E1000E_CORE_MDIC_READ_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_MDIC_READ_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_mdic_read_unhandled",
+ .sstate = TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_MDIC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_mdic_write",
+ .sstate = TRACE_E1000E_CORE_MDIC_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_MDIC_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_mdic_write_unhandled",
+ .sstate = TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_CTRL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_ctrl_write",
+ .sstate = TRACE_E1000E_CORE_CTRL_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_CTRL_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_CTRL_SW_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_ctrl_sw_reset",
+ .sstate = TRACE_E1000E_CORE_CTRL_SW_RESET_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_CTRL_SW_RESET_DSTATE
+};
+TraceEvent _TRACE_E1000E_CORE_CTRL_PHY_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_core_ctrl_phy_reset",
+ .sstate = TRACE_E1000E_CORE_CTRL_PHY_RESET_ENABLED,
+ .dstate = &_TRACE_E1000E_CORE_CTRL_PHY_RESET_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_AUTONEG_FLOWCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_autoneg_flowctl",
+ .sstate = TRACE_E1000E_LINK_AUTONEG_FLOWCTL_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_AUTONEG_FLOWCTL_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_SET_PARAMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_set_params",
+ .sstate = TRACE_E1000E_LINK_SET_PARAMS_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_SET_PARAMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_READ_PARAMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_read_params",
+ .sstate = TRACE_E1000E_LINK_READ_PARAMS_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_READ_PARAMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_SET_EXT_PARAMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_set_ext_params",
+ .sstate = TRACE_E1000E_LINK_SET_EXT_PARAMS_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_SET_EXT_PARAMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_status",
+ .sstate = TRACE_E1000E_LINK_STATUS_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_STATUS_DSTATE
+};
+TraceEvent _TRACE_E1000E_LINK_STATUS_CHANGED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_link_status_changed",
+ .sstate = TRACE_E1000E_LINK_STATUS_CHANGED_ENABLED,
+ .dstate = &_TRACE_E1000E_LINK_STATUS_CHANGED_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_RO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_regs_write_ro",
+ .sstate = TRACE_E1000E_WRN_REGS_WRITE_RO_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_REGS_WRITE_RO_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_regs_write_unknown",
+ .sstate = TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_REGS_READ_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_regs_read_unknown",
+ .sstate = TRACE_E1000E_WRN_REGS_READ_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_REGS_READ_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_REGS_READ_TRIVIAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_regs_read_trivial",
+ .sstate = TRACE_E1000E_WRN_REGS_READ_TRIVIAL_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_REGS_READ_TRIVIAL_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_regs_write_trivial",
+ .sstate = TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_NO_TS_SUPPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_no_ts_support",
+ .sstate = TRACE_E1000E_WRN_NO_TS_SUPPORT_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_NO_TS_SUPPORT_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_NO_SNAP_SUPPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_no_snap_support",
+ .sstate = TRACE_E1000E_WRN_NO_SNAP_SUPPORT_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_NO_SNAP_SUPPORT_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_iscsi_filtering_not_supported",
+ .sstate = TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_nfsw_filtering_not_supported",
+ .sstate = TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_nfsr_filtering_not_supported",
+ .sstate = TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_DSTATE
+};
+TraceEvent _TRACE_E1000E_TX_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_tx_disabled",
+ .sstate = TRACE_E1000E_TX_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_TX_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_TX_DESCR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_tx_descr",
+ .sstate = TRACE_E1000E_TX_DESCR_ENABLED,
+ .dstate = &_TRACE_E1000E_TX_DESCR_DSTATE
+};
+TraceEvent _TRACE_E1000E_RING_FREE_SPACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_ring_free_space",
+ .sstate = TRACE_E1000E_RING_FREE_SPACE_ENABLED,
+ .dstate = &_TRACE_E1000E_RING_FREE_SPACE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_can_recv_rings_full",
+ .sstate = TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_CAN_RECV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_can_recv",
+ .sstate = TRACE_E1000E_RX_CAN_RECV_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_CAN_RECV_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_HAS_BUFFERS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_has_buffers",
+ .sstate = TRACE_E1000E_RX_HAS_BUFFERS_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_HAS_BUFFERS_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_NULL_DESCRIPTOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_null_descriptor",
+ .sstate = TRACE_E1000E_RX_NULL_DESCRIPTOR_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_NULL_DESCRIPTOR_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_FLT_VLAN_MISMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_flt_vlan_mismatch",
+ .sstate = TRACE_E1000E_RX_FLT_VLAN_MISMATCH_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_FLT_VLAN_MISMATCH_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_FLT_VLAN_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_flt_vlan_match",
+ .sstate = TRACE_E1000E_RX_FLT_VLAN_MATCH_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_FLT_VLAN_MATCH_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESC_PS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_desc_ps_read",
+ .sstate = TRACE_E1000E_RX_DESC_PS_READ_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESC_PS_READ_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESC_PS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_desc_ps_write",
+ .sstate = TRACE_E1000E_RX_DESC_PS_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESC_PS_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESC_BUFF_SIZES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_desc_buff_sizes",
+ .sstate = TRACE_E1000E_RX_DESC_BUFF_SIZES_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESC_BUFF_SIZES_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESC_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_desc_len",
+ .sstate = TRACE_E1000E_RX_DESC_LEN_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESC_LEN_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESC_BUFF_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_desc_buff_write",
+ .sstate = TRACE_E1000E_RX_DESC_BUFF_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESC_BUFF_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_DESCR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_descr",
+ .sstate = TRACE_E1000E_RX_DESCR_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_DESCR_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_SET_RCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_set_rctl",
+ .sstate = TRACE_E1000E_RX_SET_RCTL_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_SET_RCTL_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RECEIVE_IOV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_receive_iov",
+ .sstate = TRACE_E1000E_RX_RECEIVE_IOV_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RECEIVE_IOV_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_FLT_DROPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_flt_dropped",
+ .sstate = TRACE_E1000E_RX_FLT_DROPPED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_FLT_DROPPED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_WRITTEN_TO_GUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_written_to_guest",
+ .sstate = TRACE_E1000E_RX_WRITTEN_TO_GUEST_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_WRITTEN_TO_GUEST_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_not_written_to_guest",
+ .sstate = TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_INTERRUPT_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_interrupt_set",
+ .sstate = TRACE_E1000E_RX_INTERRUPT_SET_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_INTERRUPT_SET_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_INTERRUPT_DELAYED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_interrupt_delayed",
+ .sstate = TRACE_E1000E_RX_INTERRUPT_DELAYED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_INTERRUPT_DELAYED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_SET_CSO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_set_cso",
+ .sstate = TRACE_E1000E_RX_SET_CSO_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_SET_CSO_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_SET_RDT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_set_rdt",
+ .sstate = TRACE_E1000E_RX_SET_RDT_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_SET_RDT_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_SET_RFCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_set_rfctl",
+ .sstate = TRACE_E1000E_RX_SET_RFCTL_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_SET_RFCTL_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_START_RECV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_start_recv",
+ .sstate = TRACE_E1000E_RX_START_RECV_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_START_RECV_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_STARTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_started",
+ .sstate = TRACE_E1000E_RX_RSS_STARTED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_STARTED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_disabled",
+ .sstate = TRACE_E1000E_RX_RSS_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_TYPE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_type",
+ .sstate = TRACE_E1000E_RX_RSS_TYPE_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_TYPE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_IP4_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_ip4",
+ .sstate = TRACE_E1000E_RX_RSS_IP4_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_IP4_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_IP6_RFCTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_ip6_rfctl",
+ .sstate = TRACE_E1000E_RX_RSS_IP6_RFCTL_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_IP6_RFCTL_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_IP6_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_ip6",
+ .sstate = TRACE_E1000E_RX_RSS_IP6_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_IP6_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_rss_dispatched_to_queue",
+ .sstate = TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_PROTOCOLS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_protocols",
+ .sstate = TRACE_E1000E_RX_METADATA_PROTOCOLS_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_PROTOCOLS_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_VLAN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_vlan",
+ .sstate = TRACE_E1000E_RX_METADATA_VLAN_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_VLAN_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_RSS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_rss",
+ .sstate = TRACE_E1000E_RX_METADATA_RSS_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_RSS_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_IP_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_ip_id",
+ .sstate = TRACE_E1000E_RX_METADATA_IP_ID_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_IP_ID_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_ACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_ack",
+ .sstate = TRACE_E1000E_RX_METADATA_ACK_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_ACK_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_PKT_TYPE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_pkt_type",
+ .sstate = TRACE_E1000E_RX_METADATA_PKT_TYPE_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_PKT_TYPE_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_NO_VIRTHDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_no_virthdr",
+ .sstate = TRACE_E1000E_RX_METADATA_NO_VIRTHDR_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_NO_VIRTHDR_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_virthdr_no_csum_info",
+ .sstate = TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_l3_cso_disabled",
+ .sstate = TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_l4_cso_disabled",
+ .sstate = TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_l3_csum_validation_failed",
+ .sstate = TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_l4_csum_validation_failed",
+ .sstate = TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_STATUS_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_status_flags",
+ .sstate = TRACE_E1000E_RX_METADATA_STATUS_FLAGS_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_STATUS_FLAGS_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_ipv6_sum_disabled",
+ .sstate = TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_rx_metadata_ipv6_filtering_disabled",
+ .sstate = TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_ENABLED,
+ .dstate = &_TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_DSTATE
+};
+TraceEvent _TRACE_E1000E_VLAN_VET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_vlan_vet",
+ .sstate = TRACE_E1000E_VLAN_VET_ENABLED,
+ .dstate = &_TRACE_E1000E_VLAN_VET_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_MSI_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_msi_notify",
+ .sstate = TRACE_E1000E_IRQ_MSI_NOTIFY_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_MSI_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_throttling_no_pending_interrupts",
+ .sstate = TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_msi_notify_postponed",
+ .sstate = TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_legacy_notify_postponed",
+ .sstate = TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_throttling_no_pending_vec",
+ .sstate = TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_msix_notify_postponed_vec",
+ .sstate = TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_LEGACY_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_legacy_notify",
+ .sstate = TRACE_E1000E_IRQ_LEGACY_NOTIFY_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_LEGACY_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_msix_notify_vec",
+ .sstate = TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_POSTPONED_BY_XITR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_postponed_by_xitr",
+ .sstate = TRACE_E1000E_IRQ_POSTPONED_BY_XITR_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_POSTPONED_BY_XITR_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_CLEAR_IMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_clear_ims",
+ .sstate = TRACE_E1000E_IRQ_CLEAR_IMS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_CLEAR_IMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_SET_IMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_set_ims",
+ .sstate = TRACE_E1000E_IRQ_SET_IMS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_SET_IMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_fix_icr_asserted",
+ .sstate = TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ADD_MSI_OTHER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_add_msi_other",
+ .sstate = TRACE_E1000E_IRQ_ADD_MSI_OTHER_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ADD_MSI_OTHER_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_PENDING_INTERRUPTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_pending_interrupts",
+ .sstate = TRACE_E1000E_IRQ_PENDING_INTERRUPTS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_PENDING_INTERRUPTS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_set_cause_entry",
+ .sstate = TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_SET_CAUSE_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_set_cause_exit",
+ .sstate = TRACE_E1000E_IRQ_SET_CAUSE_EXIT_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_SET_CAUSE_EXIT_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_write",
+ .sstate = TRACE_E1000E_IRQ_ICR_WRITE_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_WRITE_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_WRITE_ICS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_write_ics",
+ .sstate = TRACE_E1000E_IRQ_WRITE_ICS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_WRITE_ICS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_PROCESS_IAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_process_iame",
+ .sstate = TRACE_E1000E_IRQ_ICR_PROCESS_IAME_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_PROCESS_IAME_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_READ_ICS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_read_ics",
+ .sstate = TRACE_E1000E_IRQ_READ_ICS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_READ_ICS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_READ_IMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_read_ims",
+ .sstate = TRACE_E1000E_IRQ_READ_IMS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_READ_IMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_READ_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_read_entry",
+ .sstate = TRACE_E1000E_IRQ_ICR_READ_ENTRY_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_READ_ENTRY_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_READ_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_read_exit",
+ .sstate = TRACE_E1000E_IRQ_ICR_READ_EXIT_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_READ_EXIT_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_clear_zero_ims",
+ .sstate = TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_IAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_clear_iame",
+ .sstate = TRACE_E1000E_IRQ_ICR_CLEAR_IAME_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_CLEAR_IAME_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_iam_clear_eiame",
+ .sstate = TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_icr_clear_eiac",
+ .sstate = TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_ims_clear_set_imc",
+ .sstate = TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_fire_delayed_interrupts",
+ .sstate = TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_REARM_TIMER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_rearm_timer",
+ .sstate = TRACE_E1000E_IRQ_REARM_TIMER_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_REARM_TIMER_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_THROTTLING_TIMER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_throttling_timer",
+ .sstate = TRACE_E1000E_IRQ_THROTTLING_TIMER_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_THROTTLING_TIMER_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_rdtr_fpd_running",
+ .sstate = TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_rdtr_fpd_not_running",
+ .sstate = TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_tidv_fpd_running",
+ .sstate = TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_tidv_fpd_not_running",
+ .sstate = TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_EITR_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_eitr_set",
+ .sstate = TRACE_E1000E_IRQ_EITR_SET_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_EITR_SET_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ITR_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_itr_set",
+ .sstate = TRACE_E1000E_IRQ_ITR_SET_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ITR_SET_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_fire_all_timers",
+ .sstate = TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_adding_delayed_causes",
+ .sstate = TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_DSTATE
+};
+TraceEvent _TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_irq_msix_pending_clearing",
+ .sstate = TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_ENABLED,
+ .dstate = &_TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_MSIX_VEC_WRONG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_msix_vec_wrong",
+ .sstate = TRACE_E1000E_WRN_MSIX_VEC_WRONG_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_MSIX_VEC_WRONG_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_MSIX_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_msix_invalid",
+ .sstate = TRACE_E1000E_WRN_MSIX_INVALID_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_MSIX_INVALID_DSTATE
+};
+TraceEvent _TRACE_E1000E_MAC_SET_PERMANENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_mac_set_permanent",
+ .sstate = TRACE_E1000E_MAC_SET_PERMANENT_ENABLED,
+ .dstate = &_TRACE_E1000E_MAC_SET_PERMANENT_DSTATE
+};
+TraceEvent _TRACE_E1000E_MAC_SET_SW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_mac_set_sw",
+ .sstate = TRACE_E1000E_MAC_SET_SW_ENABLED,
+ .dstate = &_TRACE_E1000E_MAC_SET_SW_DSTATE
+};
+TraceEvent _TRACE_E1000E_CB_PCI_REALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cb_pci_realize",
+ .sstate = TRACE_E1000E_CB_PCI_REALIZE_ENABLED,
+ .dstate = &_TRACE_E1000E_CB_PCI_REALIZE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CB_PCI_UNINIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cb_pci_uninit",
+ .sstate = TRACE_E1000E_CB_PCI_UNINIT_ENABLED,
+ .dstate = &_TRACE_E1000E_CB_PCI_UNINIT_DSTATE
+};
+TraceEvent _TRACE_E1000E_CB_QDEV_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cb_qdev_reset",
+ .sstate = TRACE_E1000E_CB_QDEV_RESET_ENABLED,
+ .dstate = &_TRACE_E1000E_CB_QDEV_RESET_DSTATE
+};
+TraceEvent _TRACE_E1000E_CB_PRE_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cb_pre_save",
+ .sstate = TRACE_E1000E_CB_PRE_SAVE_ENABLED,
+ .dstate = &_TRACE_E1000E_CB_PRE_SAVE_DSTATE
+};
+TraceEvent _TRACE_E1000E_CB_POST_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cb_post_load",
+ .sstate = TRACE_E1000E_CB_POST_LOAD_ENABLED,
+ .dstate = &_TRACE_E1000E_CB_POST_LOAD_DSTATE
+};
+TraceEvent _TRACE_E1000E_IO_WRITE_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_io_write_addr",
+ .sstate = TRACE_E1000E_IO_WRITE_ADDR_ENABLED,
+ .dstate = &_TRACE_E1000E_IO_WRITE_ADDR_DSTATE
+};
+TraceEvent _TRACE_E1000E_IO_WRITE_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_io_write_data",
+ .sstate = TRACE_E1000E_IO_WRITE_DATA_ENABLED,
+ .dstate = &_TRACE_E1000E_IO_WRITE_DATA_DSTATE
+};
+TraceEvent _TRACE_E1000E_IO_READ_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_io_read_addr",
+ .sstate = TRACE_E1000E_IO_READ_ADDR_ENABLED,
+ .dstate = &_TRACE_E1000E_IO_READ_ADDR_DSTATE
+};
+TraceEvent _TRACE_E1000E_IO_READ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_io_read_data",
+ .sstate = TRACE_E1000E_IO_READ_DATA_ENABLED,
+ .dstate = &_TRACE_E1000E_IO_READ_DATA_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_io_write_unknown",
+ .sstate = TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_IO_READ_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_io_read_unknown",
+ .sstate = TRACE_E1000E_WRN_IO_READ_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_IO_READ_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_io_addr_undefined",
+ .sstate = TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_IO_ADDR_FLASH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_io_addr_flash",
+ .sstate = TRACE_E1000E_WRN_IO_ADDR_FLASH_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_IO_ADDR_FLASH_DSTATE
+};
+TraceEvent _TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_wrn_io_addr_unknown",
+ .sstate = TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_E1000E_MSI_INIT_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_msi_init_fail",
+ .sstate = TRACE_E1000E_MSI_INIT_FAIL_ENABLED,
+ .dstate = &_TRACE_E1000E_MSI_INIT_FAIL_DSTATE
+};
+TraceEvent _TRACE_E1000E_MSIX_INIT_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_msix_init_fail",
+ .sstate = TRACE_E1000E_MSIX_INIT_FAIL_ENABLED,
+ .dstate = &_TRACE_E1000E_MSIX_INIT_FAIL_DSTATE
+};
+TraceEvent _TRACE_E1000E_MSIX_USE_VECTOR_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_msix_use_vector_fail",
+ .sstate = TRACE_E1000E_MSIX_USE_VECTOR_FAIL_ENABLED,
+ .dstate = &_TRACE_E1000E_MSIX_USE_VECTOR_FAIL_DSTATE
+};
+TraceEvent _TRACE_E1000E_CFG_SUPPORT_VIRTIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_cfg_support_virtio",
+ .sstate = TRACE_E1000E_CFG_SUPPORT_VIRTIO_ENABLED,
+ .dstate = &_TRACE_E1000E_CFG_SUPPORT_VIRTIO_DSTATE
+};
+TraceEvent _TRACE_E1000E_VM_STATE_RUNNING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_vm_state_running",
+ .sstate = TRACE_E1000E_VM_STATE_RUNNING_ENABLED,
+ .dstate = &_TRACE_E1000E_VM_STATE_RUNNING_DSTATE
+};
+TraceEvent _TRACE_E1000E_VM_STATE_STOPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "e1000e_vm_state_stopped",
+ .sstate = TRACE_E1000E_VM_STATE_STOPPED_ENABLED,
+ .dstate = &_TRACE_E1000E_VM_STATE_STOPPED_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_get_rx_bd_from_pool_found",
+ .sstate = TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_get_rx_bd_from_page",
+ .sstate = TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_get_rx_bd_from_page_found",
+ .sstate = TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_receive",
+ .sstate = TRACE_SPAPR_VLAN_RECEIVE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_RECEIVE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_receive_dma_completed",
+ .sstate = TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_WROTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_receive_wrote",
+ .sstate = TRACE_SPAPR_VLAN_RECEIVE_WROTE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_RECEIVE_WROTE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_add_rxbuf_to_pool_create",
+ .sstate = TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_add_rxbuf_to_pool",
+ .sstate = TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_add_rxbuf_to_page",
+ .sstate = TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_h_add_logical_lan_buffer",
+ .sstate = TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_h_send_logical_lan",
+ .sstate = TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_h_send_logical_lan_rxbufs",
+ .sstate = TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_h_send_logical_lan_buf_desc",
+ .sstate = TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vlan_h_send_logical_lan_total",
+ .sstate = TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_ENABLED,
+ .dstate = &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_CHECKSUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_checksum",
+ .sstate = TRACE_SUNGEM_TX_CHECKSUM_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_CHECKSUM_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_CHECKSUM_OOB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_checksum_oob",
+ .sstate = TRACE_SUNGEM_TX_CHECKSUM_OOB_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_CHECKSUM_OOB_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_UNFINISHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_unfinished",
+ .sstate = TRACE_SUNGEM_TX_UNFINISHED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_UNFINISHED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_overflow",
+ .sstate = TRACE_SUNGEM_TX_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_FINISHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_finished",
+ .sstate = TRACE_SUNGEM_TX_FINISHED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_FINISHED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_KICK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_kick",
+ .sstate = TRACE_SUNGEM_TX_KICK_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_KICK_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_disabled",
+ .sstate = TRACE_SUNGEM_TX_DISABLED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_PROCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_process",
+ .sstate = TRACE_SUNGEM_TX_PROCESS_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_PROCESS_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_desc",
+ .sstate = TRACE_SUNGEM_TX_DESC_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_DESC_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_TX_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_tx_reset",
+ .sstate = TRACE_SUNGEM_TX_RESET_ENABLED,
+ .dstate = &_TRACE_SUNGEM_TX_RESET_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_MAC_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_mac_disabled",
+ .sstate = TRACE_SUNGEM_RX_MAC_DISABLED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_MAC_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_TXDMA_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_txdma_disabled",
+ .sstate = TRACE_SUNGEM_RX_TXDMA_DISABLED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_TXDMA_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_CHECK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_check",
+ .sstate = TRACE_SUNGEM_RX_CHECK_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_CHECK_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_MAC_CHECK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_mac_check",
+ .sstate = TRACE_SUNGEM_RX_MAC_CHECK_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_MAC_CHECK_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_MAC_MULTICAST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_mac_multicast",
+ .sstate = TRACE_SUNGEM_RX_MAC_MULTICAST_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_MAC_MULTICAST_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_MAC_COMPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_mac_compare",
+ .sstate = TRACE_SUNGEM_RX_MAC_COMPARE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_MAC_COMPARE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_PACKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_packet",
+ .sstate = TRACE_SUNGEM_RX_PACKET_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_PACKET_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_disabled",
+ .sstate = TRACE_SUNGEM_RX_DISABLED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_BAD_FRAME_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_bad_frame_size",
+ .sstate = TRACE_SUNGEM_RX_BAD_FRAME_SIZE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_BAD_FRAME_SIZE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_UNMATCHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_unmatched",
+ .sstate = TRACE_SUNGEM_RX_UNMATCHED_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_UNMATCHED_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_PROCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_process",
+ .sstate = TRACE_SUNGEM_RX_PROCESS_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_PROCESS_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_RINGFULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_ringfull",
+ .sstate = TRACE_SUNGEM_RX_RINGFULL_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_RINGFULL_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_desc",
+ .sstate = TRACE_SUNGEM_RX_DESC_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_DESC_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_reset",
+ .sstate = TRACE_SUNGEM_RX_RESET_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_RESET_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RX_KICK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_rx_kick",
+ .sstate = TRACE_SUNGEM_RX_KICK_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RX_KICK_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_reset",
+ .sstate = TRACE_SUNGEM_RESET_ENABLED,
+ .dstate = &_TRACE_SUNGEM_RESET_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MII_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mii_write",
+ .sstate = TRACE_SUNGEM_MII_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MII_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MII_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mii_read",
+ .sstate = TRACE_SUNGEM_MII_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MII_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MII_INVALID_SOF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mii_invalid_sof",
+ .sstate = TRACE_SUNGEM_MII_INVALID_SOF_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MII_INVALID_SOF_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MII_INVALID_OP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mii_invalid_op",
+ .sstate = TRACE_SUNGEM_MII_INVALID_OP_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MII_INVALID_OP_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_GREG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_greg_write",
+ .sstate = TRACE_SUNGEM_MMIO_GREG_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_GREG_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_GREG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_greg_read",
+ .sstate = TRACE_SUNGEM_MMIO_GREG_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_GREG_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_TXDMA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_txdma_write",
+ .sstate = TRACE_SUNGEM_MMIO_TXDMA_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_TXDMA_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_TXDMA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_txdma_read",
+ .sstate = TRACE_SUNGEM_MMIO_TXDMA_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_TXDMA_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_RXDMA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_rxdma_write",
+ .sstate = TRACE_SUNGEM_MMIO_RXDMA_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_RXDMA_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_RXDMA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_rxdma_read",
+ .sstate = TRACE_SUNGEM_MMIO_RXDMA_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_RXDMA_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_MAC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_mac_write",
+ .sstate = TRACE_SUNGEM_MMIO_MAC_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_MAC_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_MAC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_mac_read",
+ .sstate = TRACE_SUNGEM_MMIO_MAC_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_MAC_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_MIF_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_mif_write",
+ .sstate = TRACE_SUNGEM_MMIO_MIF_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_MIF_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_MIF_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_mif_read",
+ .sstate = TRACE_SUNGEM_MMIO_MIF_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_MIF_READ_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_PCS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_pcs_write",
+ .sstate = TRACE_SUNGEM_MMIO_PCS_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_PCS_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNGEM_MMIO_PCS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sungem_mmio_pcs_read",
+ .sstate = TRACE_SUNGEM_MMIO_PCS_READ_ENABLED,
+ .dstate = &_TRACE_SUNGEM_MMIO_PCS_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_SEB_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_seb_write",
+ .sstate = TRACE_SUNHME_SEB_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_SEB_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_SEB_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_seb_read",
+ .sstate = TRACE_SUNHME_SEB_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_SEB_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_ETX_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_etx_write",
+ .sstate = TRACE_SUNHME_ETX_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_ETX_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_ETX_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_etx_read",
+ .sstate = TRACE_SUNHME_ETX_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_ETX_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_ERX_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_erx_write",
+ .sstate = TRACE_SUNHME_ERX_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_ERX_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_ERX_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_erx_read",
+ .sstate = TRACE_SUNHME_ERX_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_ERX_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MAC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mac_write",
+ .sstate = TRACE_SUNHME_MAC_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_MAC_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MAC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mac_read",
+ .sstate = TRACE_SUNHME_MAC_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_MAC_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MII_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mii_write",
+ .sstate = TRACE_SUNHME_MII_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_MII_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MII_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mii_read",
+ .sstate = TRACE_SUNHME_MII_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_MII_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MIF_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mif_write",
+ .sstate = TRACE_SUNHME_MIF_WRITE_ENABLED,
+ .dstate = &_TRACE_SUNHME_MIF_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_MIF_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_mif_read",
+ .sstate = TRACE_SUNHME_MIF_READ_ENABLED,
+ .dstate = &_TRACE_SUNHME_MIF_READ_DSTATE
+};
+TraceEvent _TRACE_SUNHME_TX_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_tx_desc",
+ .sstate = TRACE_SUNHME_TX_DESC_ENABLED,
+ .dstate = &_TRACE_SUNHME_TX_DESC_DSTATE
+};
+TraceEvent _TRACE_SUNHME_TX_XSUM_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_tx_xsum_add",
+ .sstate = TRACE_SUNHME_TX_XSUM_ADD_ENABLED,
+ .dstate = &_TRACE_SUNHME_TX_XSUM_ADD_DSTATE
+};
+TraceEvent _TRACE_SUNHME_TX_XSUM_STUFF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_tx_xsum_stuff",
+ .sstate = TRACE_SUNHME_TX_XSUM_STUFF_ENABLED,
+ .dstate = &_TRACE_SUNHME_TX_XSUM_STUFF_DSTATE
+};
+TraceEvent _TRACE_SUNHME_TX_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_tx_done",
+ .sstate = TRACE_SUNHME_TX_DONE_ENABLED,
+ .dstate = &_TRACE_SUNHME_TX_DONE_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_INCOMING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_incoming",
+ .sstate = TRACE_SUNHME_RX_INCOMING_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_INCOMING_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_DESTMAC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_destmac",
+ .sstate = TRACE_SUNHME_RX_FILTER_DESTMAC_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_DESTMAC_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_local_match",
+ .sstate = TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_BCAST_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_bcast_match",
+ .sstate = TRACE_SUNHME_RX_FILTER_BCAST_MATCH_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_BCAST_MATCH_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_hash_nomatch",
+ .sstate = TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_HASH_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_hash_match",
+ .sstate = TRACE_SUNHME_RX_FILTER_HASH_MATCH_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_HASH_MATCH_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_promisc_match",
+ .sstate = TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_REJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_reject",
+ .sstate = TRACE_SUNHME_RX_FILTER_REJECT_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_REJECT_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_FILTER_ACCEPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_filter_accept",
+ .sstate = TRACE_SUNHME_RX_FILTER_ACCEPT_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_FILTER_ACCEPT_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_desc",
+ .sstate = TRACE_SUNHME_RX_DESC_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_DESC_DSTATE
+};
+TraceEvent _TRACE_SUNHME_RX_XSUM_CALC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sunhme_rx_xsum_calc",
+ .sstate = TRACE_SUNHME_RX_XSUM_CALC_ENABLED,
+ .dstate = &_TRACE_SUNHME_RX_XSUM_CALC_DSTATE
+};
+TraceEvent *hw_net_trace_events[] = {
+ &_TRACE_LANCE_MEM_READW_EVENT,
+ &_TRACE_LANCE_MEM_WRITEW_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_MDIO_READ_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_TX_FRAME_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_RX_FRAME_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_EVENT,
+ &_TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_EVENT,
+ &_TRACE_MIPSNET_SEND_EVENT,
+ &_TRACE_MIPSNET_RECEIVE_EVENT,
+ &_TRACE_MIPSNET_READ_EVENT,
+ &_TRACE_MIPSNET_WRITE_EVENT,
+ &_TRACE_MIPSNET_IRQ_EVENT,
+ &_TRACE_OPEN_ETH_MII_WRITE_EVENT,
+ &_TRACE_OPEN_ETH_MII_READ_EVENT,
+ &_TRACE_OPEN_ETH_UPDATE_IRQ_EVENT,
+ &_TRACE_OPEN_ETH_RECEIVE_EVENT,
+ &_TRACE_OPEN_ETH_RECEIVE_MCAST_EVENT,
+ &_TRACE_OPEN_ETH_RECEIVE_REJECT_EVENT,
+ &_TRACE_OPEN_ETH_RECEIVE_DESC_EVENT,
+ &_TRACE_OPEN_ETH_START_XMIT_EVENT,
+ &_TRACE_OPEN_ETH_REG_READ_EVENT,
+ &_TRACE_OPEN_ETH_REG_WRITE_EVENT,
+ &_TRACE_OPEN_ETH_DESC_READ_EVENT,
+ &_TRACE_OPEN_ETH_DESC_WRITE_EVENT,
+ &_TRACE_PCNET_S_RESET_EVENT,
+ &_TRACE_PCNET_USER_INT_EVENT,
+ &_TRACE_PCNET_ISR_CHANGE_EVENT,
+ &_TRACE_PCNET_INIT_EVENT,
+ &_TRACE_PCNET_RLEN_TLEN_EVENT,
+ &_TRACE_PCNET_SS32_RDRA_TDRA_EVENT,
+ &_TRACE_PCNET_APROM_WRITEB_EVENT,
+ &_TRACE_PCNET_APROM_READB_EVENT,
+ &_TRACE_PCNET_IOPORT_READ_EVENT,
+ &_TRACE_PCNET_IOPORT_WRITE_EVENT,
+ &_TRACE_PCNET_MMIO_WRITEB_EVENT,
+ &_TRACE_PCNET_MMIO_WRITEW_EVENT,
+ &_TRACE_PCNET_MMIO_WRITEL_EVENT,
+ &_TRACE_PCNET_MMIO_READB_EVENT,
+ &_TRACE_PCNET_MMIO_READW_EVENT,
+ &_TRACE_PCNET_MMIO_READL_EVENT,
+ &_TRACE_NET_RX_PKT_PARSED_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_EVENT,
+ &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_EVENT,
+ &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_EVENT,
+ &_TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_IP4_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_IP4_TCP_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_IP6_TCP_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_IP6_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_IP6_EX_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_HASH_EVENT,
+ &_TRACE_NET_RX_PKT_RSS_ADD_CHUNK_EVENT,
+ &_TRACE_E1000X_RX_CAN_RECV_DISABLED_EVENT,
+ &_TRACE_E1000X_VLAN_IS_VLAN_PKT_EVENT,
+ &_TRACE_E1000X_RX_FLT_UCAST_MATCH_EVENT,
+ &_TRACE_E1000X_RX_FLT_UCAST_MISMATCH_EVENT,
+ &_TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_EVENT,
+ &_TRACE_E1000X_RX_LINK_DOWN_EVENT,
+ &_TRACE_E1000X_RX_DISABLED_EVENT,
+ &_TRACE_E1000X_RX_OVERSIZED_EVENT,
+ &_TRACE_E1000X_MAC_INDICATE_EVENT,
+ &_TRACE_E1000X_LINK_NEGOTIATION_START_EVENT,
+ &_TRACE_E1000X_LINK_NEGOTIATION_DONE_EVENT,
+ &_TRACE_E1000E_CORE_WRITE_EVENT,
+ &_TRACE_E1000E_CORE_READ_EVENT,
+ &_TRACE_E1000E_CORE_MDIC_READ_EVENT,
+ &_TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_EVENT,
+ &_TRACE_E1000E_CORE_MDIC_WRITE_EVENT,
+ &_TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_EVENT,
+ &_TRACE_E1000E_CORE_CTRL_WRITE_EVENT,
+ &_TRACE_E1000E_CORE_CTRL_SW_RESET_EVENT,
+ &_TRACE_E1000E_CORE_CTRL_PHY_RESET_EVENT,
+ &_TRACE_E1000E_LINK_AUTONEG_FLOWCTL_EVENT,
+ &_TRACE_E1000E_LINK_SET_PARAMS_EVENT,
+ &_TRACE_E1000E_LINK_READ_PARAMS_EVENT,
+ &_TRACE_E1000E_LINK_SET_EXT_PARAMS_EVENT,
+ &_TRACE_E1000E_LINK_STATUS_EVENT,
+ &_TRACE_E1000E_LINK_STATUS_CHANGED_EVENT,
+ &_TRACE_E1000E_WRN_REGS_WRITE_RO_EVENT,
+ &_TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_EVENT,
+ &_TRACE_E1000E_WRN_REGS_READ_UNKNOWN_EVENT,
+ &_TRACE_E1000E_WRN_REGS_READ_TRIVIAL_EVENT,
+ &_TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_EVENT,
+ &_TRACE_E1000E_WRN_NO_TS_SUPPORT_EVENT,
+ &_TRACE_E1000E_WRN_NO_SNAP_SUPPORT_EVENT,
+ &_TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_EVENT,
+ &_TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_EVENT,
+ &_TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_EVENT,
+ &_TRACE_E1000E_TX_DISABLED_EVENT,
+ &_TRACE_E1000E_TX_DESCR_EVENT,
+ &_TRACE_E1000E_RING_FREE_SPACE_EVENT,
+ &_TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_EVENT,
+ &_TRACE_E1000E_RX_CAN_RECV_EVENT,
+ &_TRACE_E1000E_RX_HAS_BUFFERS_EVENT,
+ &_TRACE_E1000E_RX_NULL_DESCRIPTOR_EVENT,
+ &_TRACE_E1000E_RX_FLT_VLAN_MISMATCH_EVENT,
+ &_TRACE_E1000E_RX_FLT_VLAN_MATCH_EVENT,
+ &_TRACE_E1000E_RX_DESC_PS_READ_EVENT,
+ &_TRACE_E1000E_RX_DESC_PS_WRITE_EVENT,
+ &_TRACE_E1000E_RX_DESC_BUFF_SIZES_EVENT,
+ &_TRACE_E1000E_RX_DESC_LEN_EVENT,
+ &_TRACE_E1000E_RX_DESC_BUFF_WRITE_EVENT,
+ &_TRACE_E1000E_RX_DESCR_EVENT,
+ &_TRACE_E1000E_RX_SET_RCTL_EVENT,
+ &_TRACE_E1000E_RX_RECEIVE_IOV_EVENT,
+ &_TRACE_E1000E_RX_FLT_DROPPED_EVENT,
+ &_TRACE_E1000E_RX_WRITTEN_TO_GUEST_EVENT,
+ &_TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_EVENT,
+ &_TRACE_E1000E_RX_INTERRUPT_SET_EVENT,
+ &_TRACE_E1000E_RX_INTERRUPT_DELAYED_EVENT,
+ &_TRACE_E1000E_RX_SET_CSO_EVENT,
+ &_TRACE_E1000E_RX_SET_RDT_EVENT,
+ &_TRACE_E1000E_RX_SET_RFCTL_EVENT,
+ &_TRACE_E1000E_RX_START_RECV_EVENT,
+ &_TRACE_E1000E_RX_RSS_STARTED_EVENT,
+ &_TRACE_E1000E_RX_RSS_DISABLED_EVENT,
+ &_TRACE_E1000E_RX_RSS_TYPE_EVENT,
+ &_TRACE_E1000E_RX_RSS_IP4_EVENT,
+ &_TRACE_E1000E_RX_RSS_IP6_RFCTL_EVENT,
+ &_TRACE_E1000E_RX_RSS_IP6_EVENT,
+ &_TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_EVENT,
+ &_TRACE_E1000E_RX_METADATA_PROTOCOLS_EVENT,
+ &_TRACE_E1000E_RX_METADATA_VLAN_EVENT,
+ &_TRACE_E1000E_RX_METADATA_RSS_EVENT,
+ &_TRACE_E1000E_RX_METADATA_IP_ID_EVENT,
+ &_TRACE_E1000E_RX_METADATA_ACK_EVENT,
+ &_TRACE_E1000E_RX_METADATA_PKT_TYPE_EVENT,
+ &_TRACE_E1000E_RX_METADATA_NO_VIRTHDR_EVENT,
+ &_TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_EVENT,
+ &_TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_EVENT,
+ &_TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_EVENT,
+ &_TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_EVENT,
+ &_TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_EVENT,
+ &_TRACE_E1000E_RX_METADATA_STATUS_FLAGS_EVENT,
+ &_TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_EVENT,
+ &_TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_EVENT,
+ &_TRACE_E1000E_VLAN_VET_EVENT,
+ &_TRACE_E1000E_IRQ_MSI_NOTIFY_EVENT,
+ &_TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_EVENT,
+ &_TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_EVENT,
+ &_TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_EVENT,
+ &_TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_EVENT,
+ &_TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_EVENT,
+ &_TRACE_E1000E_IRQ_LEGACY_NOTIFY_EVENT,
+ &_TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_EVENT,
+ &_TRACE_E1000E_IRQ_POSTPONED_BY_XITR_EVENT,
+ &_TRACE_E1000E_IRQ_CLEAR_IMS_EVENT,
+ &_TRACE_E1000E_IRQ_SET_IMS_EVENT,
+ &_TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_EVENT,
+ &_TRACE_E1000E_IRQ_ADD_MSI_OTHER_EVENT,
+ &_TRACE_E1000E_IRQ_PENDING_INTERRUPTS_EVENT,
+ &_TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_EVENT,
+ &_TRACE_E1000E_IRQ_SET_CAUSE_EXIT_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_WRITE_EVENT,
+ &_TRACE_E1000E_IRQ_WRITE_ICS_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_PROCESS_IAME_EVENT,
+ &_TRACE_E1000E_IRQ_READ_ICS_EVENT,
+ &_TRACE_E1000E_IRQ_READ_IMS_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_READ_ENTRY_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_READ_EXIT_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_CLEAR_IAME_EVENT,
+ &_TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_EVENT,
+ &_TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_EVENT,
+ &_TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_EVENT,
+ &_TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_EVENT,
+ &_TRACE_E1000E_IRQ_REARM_TIMER_EVENT,
+ &_TRACE_E1000E_IRQ_THROTTLING_TIMER_EVENT,
+ &_TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_EVENT,
+ &_TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_EVENT,
+ &_TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_EVENT,
+ &_TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_EVENT,
+ &_TRACE_E1000E_IRQ_EITR_SET_EVENT,
+ &_TRACE_E1000E_IRQ_ITR_SET_EVENT,
+ &_TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_EVENT,
+ &_TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_EVENT,
+ &_TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_EVENT,
+ &_TRACE_E1000E_WRN_MSIX_VEC_WRONG_EVENT,
+ &_TRACE_E1000E_WRN_MSIX_INVALID_EVENT,
+ &_TRACE_E1000E_MAC_SET_PERMANENT_EVENT,
+ &_TRACE_E1000E_MAC_SET_SW_EVENT,
+ &_TRACE_E1000E_CB_PCI_REALIZE_EVENT,
+ &_TRACE_E1000E_CB_PCI_UNINIT_EVENT,
+ &_TRACE_E1000E_CB_QDEV_RESET_EVENT,
+ &_TRACE_E1000E_CB_PRE_SAVE_EVENT,
+ &_TRACE_E1000E_CB_POST_LOAD_EVENT,
+ &_TRACE_E1000E_IO_WRITE_ADDR_EVENT,
+ &_TRACE_E1000E_IO_WRITE_DATA_EVENT,
+ &_TRACE_E1000E_IO_READ_ADDR_EVENT,
+ &_TRACE_E1000E_IO_READ_DATA_EVENT,
+ &_TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_EVENT,
+ &_TRACE_E1000E_WRN_IO_READ_UNKNOWN_EVENT,
+ &_TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_EVENT,
+ &_TRACE_E1000E_WRN_IO_ADDR_FLASH_EVENT,
+ &_TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_EVENT,
+ &_TRACE_E1000E_MSI_INIT_FAIL_EVENT,
+ &_TRACE_E1000E_MSIX_INIT_FAIL_EVENT,
+ &_TRACE_E1000E_MSIX_USE_VECTOR_FAIL_EVENT,
+ &_TRACE_E1000E_CFG_SUPPORT_VIRTIO_EVENT,
+ &_TRACE_E1000E_VM_STATE_RUNNING_EVENT,
+ &_TRACE_E1000E_VM_STATE_STOPPED_EVENT,
+ &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_EVENT,
+ &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_EVENT,
+ &_TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_EVENT,
+ &_TRACE_SPAPR_VLAN_RECEIVE_EVENT,
+ &_TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_EVENT,
+ &_TRACE_SPAPR_VLAN_RECEIVE_WROTE_EVENT,
+ &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_EVENT,
+ &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_EVENT,
+ &_TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_EVENT,
+ &_TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_EVENT,
+ &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_EVENT,
+ &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_EVENT,
+ &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_EVENT,
+ &_TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_EVENT,
+ &_TRACE_SUNGEM_TX_CHECKSUM_EVENT,
+ &_TRACE_SUNGEM_TX_CHECKSUM_OOB_EVENT,
+ &_TRACE_SUNGEM_TX_UNFINISHED_EVENT,
+ &_TRACE_SUNGEM_TX_OVERFLOW_EVENT,
+ &_TRACE_SUNGEM_TX_FINISHED_EVENT,
+ &_TRACE_SUNGEM_TX_KICK_EVENT,
+ &_TRACE_SUNGEM_TX_DISABLED_EVENT,
+ &_TRACE_SUNGEM_TX_PROCESS_EVENT,
+ &_TRACE_SUNGEM_TX_DESC_EVENT,
+ &_TRACE_SUNGEM_TX_RESET_EVENT,
+ &_TRACE_SUNGEM_RX_MAC_DISABLED_EVENT,
+ &_TRACE_SUNGEM_RX_TXDMA_DISABLED_EVENT,
+ &_TRACE_SUNGEM_RX_CHECK_EVENT,
+ &_TRACE_SUNGEM_RX_MAC_CHECK_EVENT,
+ &_TRACE_SUNGEM_RX_MAC_MULTICAST_EVENT,
+ &_TRACE_SUNGEM_RX_MAC_COMPARE_EVENT,
+ &_TRACE_SUNGEM_RX_PACKET_EVENT,
+ &_TRACE_SUNGEM_RX_DISABLED_EVENT,
+ &_TRACE_SUNGEM_RX_BAD_FRAME_SIZE_EVENT,
+ &_TRACE_SUNGEM_RX_UNMATCHED_EVENT,
+ &_TRACE_SUNGEM_RX_PROCESS_EVENT,
+ &_TRACE_SUNGEM_RX_RINGFULL_EVENT,
+ &_TRACE_SUNGEM_RX_DESC_EVENT,
+ &_TRACE_SUNGEM_RX_RESET_EVENT,
+ &_TRACE_SUNGEM_RX_KICK_EVENT,
+ &_TRACE_SUNGEM_RESET_EVENT,
+ &_TRACE_SUNGEM_MII_WRITE_EVENT,
+ &_TRACE_SUNGEM_MII_READ_EVENT,
+ &_TRACE_SUNGEM_MII_INVALID_SOF_EVENT,
+ &_TRACE_SUNGEM_MII_INVALID_OP_EVENT,
+ &_TRACE_SUNGEM_MMIO_GREG_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_GREG_READ_EVENT,
+ &_TRACE_SUNGEM_MMIO_TXDMA_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_TXDMA_READ_EVENT,
+ &_TRACE_SUNGEM_MMIO_RXDMA_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_RXDMA_READ_EVENT,
+ &_TRACE_SUNGEM_MMIO_MAC_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_MAC_READ_EVENT,
+ &_TRACE_SUNGEM_MMIO_MIF_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_MIF_READ_EVENT,
+ &_TRACE_SUNGEM_MMIO_PCS_WRITE_EVENT,
+ &_TRACE_SUNGEM_MMIO_PCS_READ_EVENT,
+ &_TRACE_SUNHME_SEB_WRITE_EVENT,
+ &_TRACE_SUNHME_SEB_READ_EVENT,
+ &_TRACE_SUNHME_ETX_WRITE_EVENT,
+ &_TRACE_SUNHME_ETX_READ_EVENT,
+ &_TRACE_SUNHME_ERX_WRITE_EVENT,
+ &_TRACE_SUNHME_ERX_READ_EVENT,
+ &_TRACE_SUNHME_MAC_WRITE_EVENT,
+ &_TRACE_SUNHME_MAC_READ_EVENT,
+ &_TRACE_SUNHME_MII_WRITE_EVENT,
+ &_TRACE_SUNHME_MII_READ_EVENT,
+ &_TRACE_SUNHME_MIF_WRITE_EVENT,
+ &_TRACE_SUNHME_MIF_READ_EVENT,
+ &_TRACE_SUNHME_TX_DESC_EVENT,
+ &_TRACE_SUNHME_TX_XSUM_ADD_EVENT,
+ &_TRACE_SUNHME_TX_XSUM_STUFF_EVENT,
+ &_TRACE_SUNHME_TX_DONE_EVENT,
+ &_TRACE_SUNHME_RX_INCOMING_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_DESTMAC_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_BCAST_MATCH_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_HASH_MATCH_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_REJECT_EVENT,
+ &_TRACE_SUNHME_RX_FILTER_ACCEPT_EVENT,
+ &_TRACE_SUNHME_RX_DESC_EVENT,
+ &_TRACE_SUNHME_RX_XSUM_CALC_EVENT,
+ NULL,
+};
+
+static void trace_hw_net_register_events(void)
+{
+ trace_event_register_group(hw_net_trace_events);
+}
+trace_init(trace_hw_net_register_events)
diff --git a/qemu2-auto-generated/hw/net/trace.h b/qemu2-auto-generated/hw/net/trace.h
new file mode 100644
index 0000000000..e9bc2d2df2
--- /dev/null
+++ b/qemu2-auto-generated/hw/net/trace.h
@@ -0,0 +1,5228 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_NET_GENERATED_TRACERS_H
+#define TRACE_HW_NET_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_LANCE_MEM_READW_EVENT;
+extern TraceEvent _TRACE_LANCE_MEM_WRITEW_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_MDIO_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_TX_FRAME_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_RX_FRAME_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_EVENT;
+extern TraceEvent _TRACE_MIPSNET_SEND_EVENT;
+extern TraceEvent _TRACE_MIPSNET_RECEIVE_EVENT;
+extern TraceEvent _TRACE_MIPSNET_READ_EVENT;
+extern TraceEvent _TRACE_MIPSNET_WRITE_EVENT;
+extern TraceEvent _TRACE_MIPSNET_IRQ_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_MII_WRITE_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_MII_READ_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_RECEIVE_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_RECEIVE_MCAST_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_RECEIVE_REJECT_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_RECEIVE_DESC_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_START_XMIT_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_REG_READ_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_REG_WRITE_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_DESC_READ_EVENT;
+extern TraceEvent _TRACE_OPEN_ETH_DESC_WRITE_EVENT;
+extern TraceEvent _TRACE_PCNET_S_RESET_EVENT;
+extern TraceEvent _TRACE_PCNET_USER_INT_EVENT;
+extern TraceEvent _TRACE_PCNET_ISR_CHANGE_EVENT;
+extern TraceEvent _TRACE_PCNET_INIT_EVENT;
+extern TraceEvent _TRACE_PCNET_RLEN_TLEN_EVENT;
+extern TraceEvent _TRACE_PCNET_SS32_RDRA_TDRA_EVENT;
+extern TraceEvent _TRACE_PCNET_APROM_WRITEB_EVENT;
+extern TraceEvent _TRACE_PCNET_APROM_READB_EVENT;
+extern TraceEvent _TRACE_PCNET_IOPORT_READ_EVENT;
+extern TraceEvent _TRACE_PCNET_IOPORT_WRITE_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_WRITEB_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_WRITEW_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_WRITEL_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_READB_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_READW_EVENT;
+extern TraceEvent _TRACE_PCNET_MMIO_READL_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_PARSED_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_IP4_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_IP4_TCP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_TCP_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_IP6_EX_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_HASH_EVENT;
+extern TraceEvent _TRACE_NET_RX_PKT_RSS_ADD_CHUNK_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_CAN_RECV_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000X_VLAN_IS_VLAN_PKT_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_FLT_UCAST_MATCH_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_FLT_UCAST_MISMATCH_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_LINK_DOWN_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000X_RX_OVERSIZED_EVENT;
+extern TraceEvent _TRACE_E1000X_MAC_INDICATE_EVENT;
+extern TraceEvent _TRACE_E1000X_LINK_NEGOTIATION_START_EVENT;
+extern TraceEvent _TRACE_E1000X_LINK_NEGOTIATION_DONE_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_READ_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_MDIC_READ_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_MDIC_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_CTRL_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_CTRL_SW_RESET_EVENT;
+extern TraceEvent _TRACE_E1000E_CORE_CTRL_PHY_RESET_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_AUTONEG_FLOWCTL_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_SET_PARAMS_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_READ_PARAMS_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_SET_EXT_PARAMS_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_STATUS_EVENT;
+extern TraceEvent _TRACE_E1000E_LINK_STATUS_CHANGED_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_RO_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_REGS_READ_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_REGS_READ_TRIVIAL_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_NO_TS_SUPPORT_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_NO_SNAP_SUPPORT_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_EVENT;
+extern TraceEvent _TRACE_E1000E_TX_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_TX_DESCR_EVENT;
+extern TraceEvent _TRACE_E1000E_RING_FREE_SPACE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_CAN_RECV_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_HAS_BUFFERS_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_NULL_DESCRIPTOR_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_FLT_VLAN_MISMATCH_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_FLT_VLAN_MATCH_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESC_PS_READ_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESC_PS_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESC_BUFF_SIZES_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESC_LEN_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESC_BUFF_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_DESCR_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_SET_RCTL_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RECEIVE_IOV_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_FLT_DROPPED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_WRITTEN_TO_GUEST_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_INTERRUPT_SET_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_INTERRUPT_DELAYED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_SET_CSO_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_SET_RDT_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_SET_RFCTL_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_START_RECV_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_STARTED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_TYPE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_IP4_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_IP6_RFCTL_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_IP6_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_PROTOCOLS_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_VLAN_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_RSS_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_IP_ID_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_ACK_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_PKT_TYPE_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_NO_VIRTHDR_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_STATUS_FLAGS_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_EVENT;
+extern TraceEvent _TRACE_E1000E_VLAN_VET_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_MSI_NOTIFY_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_LEGACY_NOTIFY_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_POSTPONED_BY_XITR_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_CLEAR_IMS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_SET_IMS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ADD_MSI_OTHER_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_PENDING_INTERRUPTS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_SET_CAUSE_EXIT_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_WRITE_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_WRITE_ICS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_PROCESS_IAME_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_READ_ICS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_READ_IMS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_READ_ENTRY_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_READ_EXIT_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_IAME_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_REARM_TIMER_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_THROTTLING_TIMER_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_EITR_SET_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ITR_SET_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_EVENT;
+extern TraceEvent _TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_MSIX_VEC_WRONG_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_MSIX_INVALID_EVENT;
+extern TraceEvent _TRACE_E1000E_MAC_SET_PERMANENT_EVENT;
+extern TraceEvent _TRACE_E1000E_MAC_SET_SW_EVENT;
+extern TraceEvent _TRACE_E1000E_CB_PCI_REALIZE_EVENT;
+extern TraceEvent _TRACE_E1000E_CB_PCI_UNINIT_EVENT;
+extern TraceEvent _TRACE_E1000E_CB_QDEV_RESET_EVENT;
+extern TraceEvent _TRACE_E1000E_CB_PRE_SAVE_EVENT;
+extern TraceEvent _TRACE_E1000E_CB_POST_LOAD_EVENT;
+extern TraceEvent _TRACE_E1000E_IO_WRITE_ADDR_EVENT;
+extern TraceEvent _TRACE_E1000E_IO_WRITE_DATA_EVENT;
+extern TraceEvent _TRACE_E1000E_IO_READ_ADDR_EVENT;
+extern TraceEvent _TRACE_E1000E_IO_READ_DATA_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_IO_READ_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_IO_ADDR_FLASH_EVENT;
+extern TraceEvent _TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_E1000E_MSI_INIT_FAIL_EVENT;
+extern TraceEvent _TRACE_E1000E_MSIX_INIT_FAIL_EVENT;
+extern TraceEvent _TRACE_E1000E_MSIX_USE_VECTOR_FAIL_EVENT;
+extern TraceEvent _TRACE_E1000E_CFG_SUPPORT_VIRTIO_EVENT;
+extern TraceEvent _TRACE_E1000E_VM_STATE_RUNNING_EVENT;
+extern TraceEvent _TRACE_E1000E_VM_STATE_STOPPED_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_RECEIVE_WROTE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_EVENT;
+extern TraceEvent _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_CHECKSUM_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_CHECKSUM_OOB_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_UNFINISHED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_FINISHED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_KICK_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_DISABLED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_PROCESS_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_DESC_EVENT;
+extern TraceEvent _TRACE_SUNGEM_TX_RESET_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_MAC_DISABLED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_TXDMA_DISABLED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_CHECK_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_MAC_CHECK_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_MAC_MULTICAST_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_MAC_COMPARE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_PACKET_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_DISABLED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_BAD_FRAME_SIZE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_UNMATCHED_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_PROCESS_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_RINGFULL_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_DESC_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_RESET_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RX_KICK_EVENT;
+extern TraceEvent _TRACE_SUNGEM_RESET_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MII_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MII_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MII_INVALID_SOF_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MII_INVALID_OP_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_GREG_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_GREG_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_TXDMA_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_TXDMA_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_RXDMA_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_RXDMA_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_MAC_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_MAC_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_MIF_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_MIF_READ_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_PCS_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNGEM_MMIO_PCS_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_SEB_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_SEB_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_ETX_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_ETX_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_ERX_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_ERX_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_MAC_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_MAC_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_MII_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_MII_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_MIF_WRITE_EVENT;
+extern TraceEvent _TRACE_SUNHME_MIF_READ_EVENT;
+extern TraceEvent _TRACE_SUNHME_TX_DESC_EVENT;
+extern TraceEvent _TRACE_SUNHME_TX_XSUM_ADD_EVENT;
+extern TraceEvent _TRACE_SUNHME_TX_XSUM_STUFF_EVENT;
+extern TraceEvent _TRACE_SUNHME_TX_DONE_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_INCOMING_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_DESTMAC_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_BCAST_MATCH_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_HASH_MATCH_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_REJECT_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_FILTER_ACCEPT_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_DESC_EVENT;
+extern TraceEvent _TRACE_SUNHME_RX_XSUM_CALC_EVENT;
+extern uint16_t _TRACE_LANCE_MEM_READW_DSTATE;
+extern uint16_t _TRACE_LANCE_MEM_WRITEW_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_MDIO_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_TX_FRAME_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_RX_FRAME_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_DSTATE;
+extern uint16_t _TRACE_MIPSNET_SEND_DSTATE;
+extern uint16_t _TRACE_MIPSNET_RECEIVE_DSTATE;
+extern uint16_t _TRACE_MIPSNET_READ_DSTATE;
+extern uint16_t _TRACE_MIPSNET_WRITE_DSTATE;
+extern uint16_t _TRACE_MIPSNET_IRQ_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_MII_WRITE_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_MII_READ_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_RECEIVE_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_RECEIVE_MCAST_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_RECEIVE_REJECT_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_RECEIVE_DESC_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_START_XMIT_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_REG_READ_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_REG_WRITE_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_DESC_READ_DSTATE;
+extern uint16_t _TRACE_OPEN_ETH_DESC_WRITE_DSTATE;
+extern uint16_t _TRACE_PCNET_S_RESET_DSTATE;
+extern uint16_t _TRACE_PCNET_USER_INT_DSTATE;
+extern uint16_t _TRACE_PCNET_ISR_CHANGE_DSTATE;
+extern uint16_t _TRACE_PCNET_INIT_DSTATE;
+extern uint16_t _TRACE_PCNET_RLEN_TLEN_DSTATE;
+extern uint16_t _TRACE_PCNET_SS32_RDRA_TDRA_DSTATE;
+extern uint16_t _TRACE_PCNET_APROM_WRITEB_DSTATE;
+extern uint16_t _TRACE_PCNET_APROM_READB_DSTATE;
+extern uint16_t _TRACE_PCNET_IOPORT_READ_DSTATE;
+extern uint16_t _TRACE_PCNET_IOPORT_WRITE_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_WRITEB_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_WRITEW_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_WRITEL_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_READB_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_READW_DSTATE;
+extern uint16_t _TRACE_PCNET_MMIO_READL_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_PARSED_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_IP4_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_IP4_TCP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_IP6_TCP_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_IP6_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_IP6_EX_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_HASH_DSTATE;
+extern uint16_t _TRACE_NET_RX_PKT_RSS_ADD_CHUNK_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_CAN_RECV_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000X_VLAN_IS_VLAN_PKT_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_FLT_UCAST_MATCH_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_FLT_UCAST_MISMATCH_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_LINK_DOWN_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000X_RX_OVERSIZED_DSTATE;
+extern uint16_t _TRACE_E1000X_MAC_INDICATE_DSTATE;
+extern uint16_t _TRACE_E1000X_LINK_NEGOTIATION_START_DSTATE;
+extern uint16_t _TRACE_E1000X_LINK_NEGOTIATION_DONE_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_READ_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_MDIC_READ_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_MDIC_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_CTRL_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_CTRL_SW_RESET_DSTATE;
+extern uint16_t _TRACE_E1000E_CORE_CTRL_PHY_RESET_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_AUTONEG_FLOWCTL_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_SET_PARAMS_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_READ_PARAMS_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_SET_EXT_PARAMS_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_STATUS_DSTATE;
+extern uint16_t _TRACE_E1000E_LINK_STATUS_CHANGED_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_REGS_WRITE_RO_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_REGS_READ_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_REGS_READ_TRIVIAL_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_NO_TS_SUPPORT_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_NO_SNAP_SUPPORT_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_DSTATE;
+extern uint16_t _TRACE_E1000E_TX_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_TX_DESCR_DSTATE;
+extern uint16_t _TRACE_E1000E_RING_FREE_SPACE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_CAN_RECV_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_HAS_BUFFERS_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_NULL_DESCRIPTOR_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_FLT_VLAN_MISMATCH_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_FLT_VLAN_MATCH_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESC_PS_READ_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESC_PS_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESC_BUFF_SIZES_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESC_LEN_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESC_BUFF_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_DESCR_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_SET_RCTL_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RECEIVE_IOV_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_FLT_DROPPED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_WRITTEN_TO_GUEST_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_INTERRUPT_SET_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_INTERRUPT_DELAYED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_SET_CSO_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_SET_RDT_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_SET_RFCTL_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_START_RECV_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_STARTED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_TYPE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_IP4_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_IP6_RFCTL_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_IP6_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_PROTOCOLS_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_VLAN_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_RSS_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_IP_ID_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_ACK_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_PKT_TYPE_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_NO_VIRTHDR_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_STATUS_FLAGS_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_DSTATE;
+extern uint16_t _TRACE_E1000E_VLAN_VET_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_MSI_NOTIFY_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_LEGACY_NOTIFY_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_POSTPONED_BY_XITR_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_CLEAR_IMS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_SET_IMS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ADD_MSI_OTHER_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_PENDING_INTERRUPTS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_SET_CAUSE_EXIT_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_WRITE_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_WRITE_ICS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_PROCESS_IAME_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_READ_ICS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_READ_IMS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_READ_ENTRY_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_READ_EXIT_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_IAME_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_REARM_TIMER_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_THROTTLING_TIMER_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_EITR_SET_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ITR_SET_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_DSTATE;
+extern uint16_t _TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_MSIX_VEC_WRONG_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_MSIX_INVALID_DSTATE;
+extern uint16_t _TRACE_E1000E_MAC_SET_PERMANENT_DSTATE;
+extern uint16_t _TRACE_E1000E_MAC_SET_SW_DSTATE;
+extern uint16_t _TRACE_E1000E_CB_PCI_REALIZE_DSTATE;
+extern uint16_t _TRACE_E1000E_CB_PCI_UNINIT_DSTATE;
+extern uint16_t _TRACE_E1000E_CB_QDEV_RESET_DSTATE;
+extern uint16_t _TRACE_E1000E_CB_PRE_SAVE_DSTATE;
+extern uint16_t _TRACE_E1000E_CB_POST_LOAD_DSTATE;
+extern uint16_t _TRACE_E1000E_IO_WRITE_ADDR_DSTATE;
+extern uint16_t _TRACE_E1000E_IO_WRITE_DATA_DSTATE;
+extern uint16_t _TRACE_E1000E_IO_READ_ADDR_DSTATE;
+extern uint16_t _TRACE_E1000E_IO_READ_DATA_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_IO_READ_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_IO_ADDR_FLASH_DSTATE;
+extern uint16_t _TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_E1000E_MSI_INIT_FAIL_DSTATE;
+extern uint16_t _TRACE_E1000E_MSIX_INIT_FAIL_DSTATE;
+extern uint16_t _TRACE_E1000E_MSIX_USE_VECTOR_FAIL_DSTATE;
+extern uint16_t _TRACE_E1000E_CFG_SUPPORT_VIRTIO_DSTATE;
+extern uint16_t _TRACE_E1000E_VM_STATE_RUNNING_DSTATE;
+extern uint16_t _TRACE_E1000E_VM_STATE_STOPPED_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_RECEIVE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_RECEIVE_WROTE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_DSTATE;
+extern uint16_t _TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_CHECKSUM_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_CHECKSUM_OOB_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_UNFINISHED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_FINISHED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_KICK_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_DISABLED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_PROCESS_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_DESC_DSTATE;
+extern uint16_t _TRACE_SUNGEM_TX_RESET_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_MAC_DISABLED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_TXDMA_DISABLED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_CHECK_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_MAC_CHECK_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_MAC_MULTICAST_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_MAC_COMPARE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_PACKET_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_DISABLED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_BAD_FRAME_SIZE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_UNMATCHED_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_PROCESS_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_RINGFULL_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_DESC_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_RESET_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RX_KICK_DSTATE;
+extern uint16_t _TRACE_SUNGEM_RESET_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MII_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MII_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MII_INVALID_SOF_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MII_INVALID_OP_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_GREG_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_GREG_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_TXDMA_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_TXDMA_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_RXDMA_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_RXDMA_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_MAC_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_MAC_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_MIF_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_MIF_READ_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_PCS_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNGEM_MMIO_PCS_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_SEB_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_SEB_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_ETX_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_ETX_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_ERX_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_ERX_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_MAC_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_MAC_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_MII_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_MII_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_MIF_WRITE_DSTATE;
+extern uint16_t _TRACE_SUNHME_MIF_READ_DSTATE;
+extern uint16_t _TRACE_SUNHME_TX_DESC_DSTATE;
+extern uint16_t _TRACE_SUNHME_TX_XSUM_ADD_DSTATE;
+extern uint16_t _TRACE_SUNHME_TX_XSUM_STUFF_DSTATE;
+extern uint16_t _TRACE_SUNHME_TX_DONE_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_INCOMING_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_DESTMAC_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_BCAST_MATCH_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_HASH_MATCH_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_REJECT_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_FILTER_ACCEPT_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_DESC_DSTATE;
+extern uint16_t _TRACE_SUNHME_RX_XSUM_CALC_DSTATE;
+#define TRACE_LANCE_MEM_READW_ENABLED 1
+#define TRACE_LANCE_MEM_WRITEW_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_MDIO_READ_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_TX_FRAME_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_RX_FRAME_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_ENABLED 1
+#define TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_ENABLED 1
+#define TRACE_MIPSNET_SEND_ENABLED 1
+#define TRACE_MIPSNET_RECEIVE_ENABLED 1
+#define TRACE_MIPSNET_READ_ENABLED 1
+#define TRACE_MIPSNET_WRITE_ENABLED 1
+#define TRACE_MIPSNET_IRQ_ENABLED 1
+#define TRACE_OPEN_ETH_MII_WRITE_ENABLED 1
+#define TRACE_OPEN_ETH_MII_READ_ENABLED 1
+#define TRACE_OPEN_ETH_UPDATE_IRQ_ENABLED 1
+#define TRACE_OPEN_ETH_RECEIVE_ENABLED 1
+#define TRACE_OPEN_ETH_RECEIVE_MCAST_ENABLED 1
+#define TRACE_OPEN_ETH_RECEIVE_REJECT_ENABLED 1
+#define TRACE_OPEN_ETH_RECEIVE_DESC_ENABLED 1
+#define TRACE_OPEN_ETH_START_XMIT_ENABLED 1
+#define TRACE_OPEN_ETH_REG_READ_ENABLED 1
+#define TRACE_OPEN_ETH_REG_WRITE_ENABLED 1
+#define TRACE_OPEN_ETH_DESC_READ_ENABLED 1
+#define TRACE_OPEN_ETH_DESC_WRITE_ENABLED 1
+#define TRACE_PCNET_S_RESET_ENABLED 1
+#define TRACE_PCNET_USER_INT_ENABLED 1
+#define TRACE_PCNET_ISR_CHANGE_ENABLED 1
+#define TRACE_PCNET_INIT_ENABLED 1
+#define TRACE_PCNET_RLEN_TLEN_ENABLED 1
+#define TRACE_PCNET_SS32_RDRA_TDRA_ENABLED 1
+#define TRACE_PCNET_APROM_WRITEB_ENABLED 1
+#define TRACE_PCNET_APROM_READB_ENABLED 1
+#define TRACE_PCNET_IOPORT_READ_ENABLED 1
+#define TRACE_PCNET_IOPORT_WRITE_ENABLED 1
+#define TRACE_PCNET_MMIO_WRITEB_ENABLED 1
+#define TRACE_PCNET_MMIO_WRITEW_ENABLED 1
+#define TRACE_PCNET_MMIO_WRITEL_ENABLED 1
+#define TRACE_PCNET_MMIO_READB_ENABLED 1
+#define TRACE_PCNET_MMIO_READW_ENABLED 1
+#define TRACE_PCNET_MMIO_READL_ENABLED 1
+#define TRACE_NET_RX_PKT_PARSED_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_ENABLED 1
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_ENABLED 1
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_IP4_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_IP4_TCP_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_IP6_TCP_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_IP6_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_IP6_EX_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_HASH_ENABLED 1
+#define TRACE_NET_RX_PKT_RSS_ADD_CHUNK_ENABLED 1
+#define TRACE_E1000X_RX_CAN_RECV_DISABLED_ENABLED 1
+#define TRACE_E1000X_VLAN_IS_VLAN_PKT_ENABLED 1
+#define TRACE_E1000X_RX_FLT_UCAST_MATCH_ENABLED 1
+#define TRACE_E1000X_RX_FLT_UCAST_MISMATCH_ENABLED 1
+#define TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_ENABLED 1
+#define TRACE_E1000X_RX_LINK_DOWN_ENABLED 1
+#define TRACE_E1000X_RX_DISABLED_ENABLED 1
+#define TRACE_E1000X_RX_OVERSIZED_ENABLED 1
+#define TRACE_E1000X_MAC_INDICATE_ENABLED 1
+#define TRACE_E1000X_LINK_NEGOTIATION_START_ENABLED 1
+#define TRACE_E1000X_LINK_NEGOTIATION_DONE_ENABLED 1
+#define TRACE_E1000E_CORE_WRITE_ENABLED 1
+#define TRACE_E1000E_CORE_READ_ENABLED 1
+#define TRACE_E1000E_CORE_MDIC_READ_ENABLED 1
+#define TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_ENABLED 1
+#define TRACE_E1000E_CORE_MDIC_WRITE_ENABLED 1
+#define TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_ENABLED 1
+#define TRACE_E1000E_CORE_CTRL_WRITE_ENABLED 1
+#define TRACE_E1000E_CORE_CTRL_SW_RESET_ENABLED 1
+#define TRACE_E1000E_CORE_CTRL_PHY_RESET_ENABLED 1
+#define TRACE_E1000E_LINK_AUTONEG_FLOWCTL_ENABLED 1
+#define TRACE_E1000E_LINK_SET_PARAMS_ENABLED 1
+#define TRACE_E1000E_LINK_READ_PARAMS_ENABLED 1
+#define TRACE_E1000E_LINK_SET_EXT_PARAMS_ENABLED 1
+#define TRACE_E1000E_LINK_STATUS_ENABLED 1
+#define TRACE_E1000E_LINK_STATUS_CHANGED_ENABLED 1
+#define TRACE_E1000E_WRN_REGS_WRITE_RO_ENABLED 1
+#define TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_ENABLED 1
+#define TRACE_E1000E_WRN_REGS_READ_UNKNOWN_ENABLED 1
+#define TRACE_E1000E_WRN_REGS_READ_TRIVIAL_ENABLED 1
+#define TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_ENABLED 1
+#define TRACE_E1000E_WRN_NO_TS_SUPPORT_ENABLED 1
+#define TRACE_E1000E_WRN_NO_SNAP_SUPPORT_ENABLED 1
+#define TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_ENABLED 1
+#define TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_ENABLED 1
+#define TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_ENABLED 1
+#define TRACE_E1000E_TX_DISABLED_ENABLED 1
+#define TRACE_E1000E_TX_DESCR_ENABLED 1
+#define TRACE_E1000E_RING_FREE_SPACE_ENABLED 1
+#define TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_ENABLED 1
+#define TRACE_E1000E_RX_CAN_RECV_ENABLED 1
+#define TRACE_E1000E_RX_HAS_BUFFERS_ENABLED 1
+#define TRACE_E1000E_RX_NULL_DESCRIPTOR_ENABLED 1
+#define TRACE_E1000E_RX_FLT_VLAN_MISMATCH_ENABLED 1
+#define TRACE_E1000E_RX_FLT_VLAN_MATCH_ENABLED 1
+#define TRACE_E1000E_RX_DESC_PS_READ_ENABLED 1
+#define TRACE_E1000E_RX_DESC_PS_WRITE_ENABLED 1
+#define TRACE_E1000E_RX_DESC_BUFF_SIZES_ENABLED 1
+#define TRACE_E1000E_RX_DESC_LEN_ENABLED 1
+#define TRACE_E1000E_RX_DESC_BUFF_WRITE_ENABLED 1
+#define TRACE_E1000E_RX_DESCR_ENABLED 1
+#define TRACE_E1000E_RX_SET_RCTL_ENABLED 1
+#define TRACE_E1000E_RX_RECEIVE_IOV_ENABLED 1
+#define TRACE_E1000E_RX_FLT_DROPPED_ENABLED 1
+#define TRACE_E1000E_RX_WRITTEN_TO_GUEST_ENABLED 1
+#define TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_ENABLED 1
+#define TRACE_E1000E_RX_INTERRUPT_SET_ENABLED 1
+#define TRACE_E1000E_RX_INTERRUPT_DELAYED_ENABLED 1
+#define TRACE_E1000E_RX_SET_CSO_ENABLED 1
+#define TRACE_E1000E_RX_SET_RDT_ENABLED 1
+#define TRACE_E1000E_RX_SET_RFCTL_ENABLED 1
+#define TRACE_E1000E_RX_START_RECV_ENABLED 1
+#define TRACE_E1000E_RX_RSS_STARTED_ENABLED 1
+#define TRACE_E1000E_RX_RSS_DISABLED_ENABLED 1
+#define TRACE_E1000E_RX_RSS_TYPE_ENABLED 1
+#define TRACE_E1000E_RX_RSS_IP4_ENABLED 1
+#define TRACE_E1000E_RX_RSS_IP6_RFCTL_ENABLED 1
+#define TRACE_E1000E_RX_RSS_IP6_ENABLED 1
+#define TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_PROTOCOLS_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_VLAN_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_RSS_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_IP_ID_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_ACK_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_PKT_TYPE_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_NO_VIRTHDR_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_STATUS_FLAGS_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_ENABLED 1
+#define TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_ENABLED 1
+#define TRACE_E1000E_VLAN_VET_ENABLED 1
+#define TRACE_E1000E_IRQ_MSI_NOTIFY_ENABLED 1
+#define TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_ENABLED 1
+#define TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_ENABLED 1
+#define TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_ENABLED 1
+#define TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_ENABLED 1
+#define TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_ENABLED 1
+#define TRACE_E1000E_IRQ_LEGACY_NOTIFY_ENABLED 1
+#define TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_ENABLED 1
+#define TRACE_E1000E_IRQ_POSTPONED_BY_XITR_ENABLED 1
+#define TRACE_E1000E_IRQ_CLEAR_IMS_ENABLED 1
+#define TRACE_E1000E_IRQ_SET_IMS_ENABLED 1
+#define TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_ENABLED 1
+#define TRACE_E1000E_IRQ_ADD_MSI_OTHER_ENABLED 1
+#define TRACE_E1000E_IRQ_PENDING_INTERRUPTS_ENABLED 1
+#define TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_ENABLED 1
+#define TRACE_E1000E_IRQ_SET_CAUSE_EXIT_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_WRITE_ENABLED 1
+#define TRACE_E1000E_IRQ_WRITE_ICS_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_PROCESS_IAME_ENABLED 1
+#define TRACE_E1000E_IRQ_READ_ICS_ENABLED 1
+#define TRACE_E1000E_IRQ_READ_IMS_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_READ_ENTRY_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_READ_EXIT_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_CLEAR_IAME_ENABLED 1
+#define TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_ENABLED 1
+#define TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_ENABLED 1
+#define TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_ENABLED 1
+#define TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_ENABLED 1
+#define TRACE_E1000E_IRQ_REARM_TIMER_ENABLED 1
+#define TRACE_E1000E_IRQ_THROTTLING_TIMER_ENABLED 1
+#define TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_ENABLED 1
+#define TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_ENABLED 1
+#define TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_ENABLED 1
+#define TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_ENABLED 1
+#define TRACE_E1000E_IRQ_EITR_SET_ENABLED 1
+#define TRACE_E1000E_IRQ_ITR_SET_ENABLED 1
+#define TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_ENABLED 1
+#define TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_ENABLED 1
+#define TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_ENABLED 1
+#define TRACE_E1000E_WRN_MSIX_VEC_WRONG_ENABLED 1
+#define TRACE_E1000E_WRN_MSIX_INVALID_ENABLED 1
+#define TRACE_E1000E_MAC_SET_PERMANENT_ENABLED 1
+#define TRACE_E1000E_MAC_SET_SW_ENABLED 1
+#define TRACE_E1000E_CB_PCI_REALIZE_ENABLED 1
+#define TRACE_E1000E_CB_PCI_UNINIT_ENABLED 1
+#define TRACE_E1000E_CB_QDEV_RESET_ENABLED 1
+#define TRACE_E1000E_CB_PRE_SAVE_ENABLED 1
+#define TRACE_E1000E_CB_POST_LOAD_ENABLED 1
+#define TRACE_E1000E_IO_WRITE_ADDR_ENABLED 1
+#define TRACE_E1000E_IO_WRITE_DATA_ENABLED 1
+#define TRACE_E1000E_IO_READ_ADDR_ENABLED 1
+#define TRACE_E1000E_IO_READ_DATA_ENABLED 1
+#define TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_ENABLED 1
+#define TRACE_E1000E_WRN_IO_READ_UNKNOWN_ENABLED 1
+#define TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_ENABLED 1
+#define TRACE_E1000E_WRN_IO_ADDR_FLASH_ENABLED 1
+#define TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_ENABLED 1
+#define TRACE_E1000E_MSI_INIT_FAIL_ENABLED 1
+#define TRACE_E1000E_MSIX_INIT_FAIL_ENABLED 1
+#define TRACE_E1000E_MSIX_USE_VECTOR_FAIL_ENABLED 1
+#define TRACE_E1000E_CFG_SUPPORT_VIRTIO_ENABLED 1
+#define TRACE_E1000E_VM_STATE_RUNNING_ENABLED 1
+#define TRACE_E1000E_VM_STATE_STOPPED_ENABLED 1
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_ENABLED 1
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_ENABLED 1
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_ENABLED 1
+#define TRACE_SPAPR_VLAN_RECEIVE_ENABLED 1
+#define TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_ENABLED 1
+#define TRACE_SPAPR_VLAN_RECEIVE_WROTE_ENABLED 1
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_ENABLED 1
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_ENABLED 1
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_ENABLED 1
+#define TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_ENABLED 1
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_ENABLED 1
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_ENABLED 1
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_ENABLED 1
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_ENABLED 1
+#define TRACE_SUNGEM_TX_CHECKSUM_ENABLED 1
+#define TRACE_SUNGEM_TX_CHECKSUM_OOB_ENABLED 1
+#define TRACE_SUNGEM_TX_UNFINISHED_ENABLED 1
+#define TRACE_SUNGEM_TX_OVERFLOW_ENABLED 1
+#define TRACE_SUNGEM_TX_FINISHED_ENABLED 1
+#define TRACE_SUNGEM_TX_KICK_ENABLED 1
+#define TRACE_SUNGEM_TX_DISABLED_ENABLED 1
+#define TRACE_SUNGEM_TX_PROCESS_ENABLED 1
+#define TRACE_SUNGEM_TX_DESC_ENABLED 1
+#define TRACE_SUNGEM_TX_RESET_ENABLED 1
+#define TRACE_SUNGEM_RX_MAC_DISABLED_ENABLED 1
+#define TRACE_SUNGEM_RX_TXDMA_DISABLED_ENABLED 1
+#define TRACE_SUNGEM_RX_CHECK_ENABLED 1
+#define TRACE_SUNGEM_RX_MAC_CHECK_ENABLED 1
+#define TRACE_SUNGEM_RX_MAC_MULTICAST_ENABLED 1
+#define TRACE_SUNGEM_RX_MAC_COMPARE_ENABLED 1
+#define TRACE_SUNGEM_RX_PACKET_ENABLED 1
+#define TRACE_SUNGEM_RX_DISABLED_ENABLED 1
+#define TRACE_SUNGEM_RX_BAD_FRAME_SIZE_ENABLED 1
+#define TRACE_SUNGEM_RX_UNMATCHED_ENABLED 1
+#define TRACE_SUNGEM_RX_PROCESS_ENABLED 1
+#define TRACE_SUNGEM_RX_RINGFULL_ENABLED 1
+#define TRACE_SUNGEM_RX_DESC_ENABLED 1
+#define TRACE_SUNGEM_RX_RESET_ENABLED 1
+#define TRACE_SUNGEM_RX_KICK_ENABLED 1
+#define TRACE_SUNGEM_RESET_ENABLED 1
+#define TRACE_SUNGEM_MII_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MII_READ_ENABLED 1
+#define TRACE_SUNGEM_MII_INVALID_SOF_ENABLED 1
+#define TRACE_SUNGEM_MII_INVALID_OP_ENABLED 1
+#define TRACE_SUNGEM_MMIO_GREG_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_GREG_READ_ENABLED 1
+#define TRACE_SUNGEM_MMIO_TXDMA_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_TXDMA_READ_ENABLED 1
+#define TRACE_SUNGEM_MMIO_RXDMA_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_RXDMA_READ_ENABLED 1
+#define TRACE_SUNGEM_MMIO_MAC_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_MAC_READ_ENABLED 1
+#define TRACE_SUNGEM_MMIO_MIF_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_MIF_READ_ENABLED 1
+#define TRACE_SUNGEM_MMIO_PCS_WRITE_ENABLED 1
+#define TRACE_SUNGEM_MMIO_PCS_READ_ENABLED 1
+#define TRACE_SUNHME_SEB_WRITE_ENABLED 1
+#define TRACE_SUNHME_SEB_READ_ENABLED 1
+#define TRACE_SUNHME_ETX_WRITE_ENABLED 1
+#define TRACE_SUNHME_ETX_READ_ENABLED 1
+#define TRACE_SUNHME_ERX_WRITE_ENABLED 1
+#define TRACE_SUNHME_ERX_READ_ENABLED 1
+#define TRACE_SUNHME_MAC_WRITE_ENABLED 1
+#define TRACE_SUNHME_MAC_READ_ENABLED 1
+#define TRACE_SUNHME_MII_WRITE_ENABLED 1
+#define TRACE_SUNHME_MII_READ_ENABLED 1
+#define TRACE_SUNHME_MIF_WRITE_ENABLED 1
+#define TRACE_SUNHME_MIF_READ_ENABLED 1
+#define TRACE_SUNHME_TX_DESC_ENABLED 1
+#define TRACE_SUNHME_TX_XSUM_ADD_ENABLED 1
+#define TRACE_SUNHME_TX_XSUM_STUFF_ENABLED 1
+#define TRACE_SUNHME_TX_DONE_ENABLED 1
+#define TRACE_SUNHME_RX_INCOMING_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_DESTMAC_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_BCAST_MATCH_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_HASH_MATCH_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_REJECT_ENABLED 1
+#define TRACE_SUNHME_RX_FILTER_ACCEPT_ENABLED 1
+#define TRACE_SUNHME_RX_DESC_ENABLED 1
+#define TRACE_SUNHME_RX_XSUM_CALC_ENABLED 1
+
+#define TRACE_LANCE_MEM_READW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lance_mem_readw(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_lance_mem_readw(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_lance_mem_readw(addr, ret);
+ }
+}
+
+#define TRACE_LANCE_MEM_WRITEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lance_mem_writew(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_lance_mem_writew(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_lance_mem_writew(addr, val);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_minimac2_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_minimac2_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_MDIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_mdio_write(uint8_t phy_addr, uint8_t addr, uint16_t value)
+{
+}
+
+static inline void trace_milkymist_minimac2_mdio_write(uint8_t phy_addr, uint8_t addr, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_mdio_write(phy_addr, addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_MDIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_mdio_read(uint8_t phy_addr, uint8_t addr, uint16_t value)
+{
+}
+
+static inline void trace_milkymist_minimac2_mdio_read(uint8_t phy_addr, uint8_t addr, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_mdio_read(phy_addr, addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_TX_FRAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_tx_frame(uint32_t length)
+{
+}
+
+static inline void trace_milkymist_minimac2_tx_frame(uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_tx_frame(length);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_RX_FRAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_rx_frame(const void * buf, uint32_t length)
+{
+}
+
+static inline void trace_milkymist_minimac2_rx_frame(const void * buf, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_rx_frame(buf, length);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_RX_TRANSFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_rx_transfer(const void * buf, uint32_t length)
+{
+}
+
+static inline void trace_milkymist_minimac2_rx_transfer(const void * buf, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_rx_transfer(buf, length);
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_RAISE_IRQ_RX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_raise_irq_rx(void)
+{
+}
+
+static inline void trace_milkymist_minimac2_raise_irq_rx(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_raise_irq_rx();
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_LOWER_IRQ_RX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_lower_irq_rx(void)
+{
+}
+
+static inline void trace_milkymist_minimac2_lower_irq_rx(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_lower_irq_rx();
+ }
+}
+
+#define TRACE_MILKYMIST_MINIMAC2_PULSE_IRQ_TX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_minimac2_pulse_irq_tx(void)
+{
+}
+
+static inline void trace_milkymist_minimac2_pulse_irq_tx(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_minimac2_pulse_irq_tx();
+ }
+}
+
+#define TRACE_MIPSNET_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mipsnet_send(uint32_t size)
+{
+}
+
+static inline void trace_mipsnet_send(uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_mipsnet_send(size);
+ }
+}
+
+#define TRACE_MIPSNET_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mipsnet_receive(uint32_t size)
+{
+}
+
+static inline void trace_mipsnet_receive(uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_mipsnet_receive(size);
+ }
+}
+
+#define TRACE_MIPSNET_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mipsnet_read(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mipsnet_read(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mipsnet_read(addr, val);
+ }
+}
+
+#define TRACE_MIPSNET_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mipsnet_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_mipsnet_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_mipsnet_write(addr, val);
+ }
+}
+
+#define TRACE_MIPSNET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mipsnet_irq(uint32_t isr, uint32_t intctl)
+{
+}
+
+static inline void trace_mipsnet_irq(uint32_t isr, uint32_t intctl)
+{
+ if (true) {
+ _nocheck__trace_mipsnet_irq(isr, intctl);
+ }
+}
+
+#define TRACE_OPEN_ETH_MII_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_mii_write(unsigned idx, uint16_t v)
+{
+}
+
+static inline void trace_open_eth_mii_write(unsigned idx, uint16_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_mii_write(idx, v);
+ }
+}
+
+#define TRACE_OPEN_ETH_MII_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_mii_read(unsigned idx, uint16_t v)
+{
+}
+
+static inline void trace_open_eth_mii_read(unsigned idx, uint16_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_mii_read(idx, v);
+ }
+}
+
+#define TRACE_OPEN_ETH_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_update_irq(uint32_t v)
+{
+}
+
+static inline void trace_open_eth_update_irq(uint32_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_update_irq(v);
+ }
+}
+
+#define TRACE_OPEN_ETH_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_receive(unsigned len)
+{
+}
+
+static inline void trace_open_eth_receive(unsigned len)
+{
+ if (true) {
+ _nocheck__trace_open_eth_receive(len);
+ }
+}
+
+#define TRACE_OPEN_ETH_RECEIVE_MCAST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_receive_mcast(unsigned idx, uint32_t h0, uint32_t h1)
+{
+}
+
+static inline void trace_open_eth_receive_mcast(unsigned idx, uint32_t h0, uint32_t h1)
+{
+ if (true) {
+ _nocheck__trace_open_eth_receive_mcast(idx, h0, h1);
+ }
+}
+
+#define TRACE_OPEN_ETH_RECEIVE_REJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_receive_reject(void)
+{
+}
+
+static inline void trace_open_eth_receive_reject(void)
+{
+ if (true) {
+ _nocheck__trace_open_eth_receive_reject();
+ }
+}
+
+#define TRACE_OPEN_ETH_RECEIVE_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_receive_desc(uint32_t addr, uint32_t len_flags)
+{
+}
+
+static inline void trace_open_eth_receive_desc(uint32_t addr, uint32_t len_flags)
+{
+ if (true) {
+ _nocheck__trace_open_eth_receive_desc(addr, len_flags);
+ }
+}
+
+#define TRACE_OPEN_ETH_START_XMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_start_xmit(uint32_t addr, unsigned len, unsigned tx_len)
+{
+}
+
+static inline void trace_open_eth_start_xmit(uint32_t addr, unsigned len, unsigned tx_len)
+{
+ if (true) {
+ _nocheck__trace_open_eth_start_xmit(addr, len, tx_len);
+ }
+}
+
+#define TRACE_OPEN_ETH_REG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_reg_read(uint32_t addr, uint32_t v)
+{
+}
+
+static inline void trace_open_eth_reg_read(uint32_t addr, uint32_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_reg_read(addr, v);
+ }
+}
+
+#define TRACE_OPEN_ETH_REG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_reg_write(uint32_t addr, uint32_t v)
+{
+}
+
+static inline void trace_open_eth_reg_write(uint32_t addr, uint32_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_reg_write(addr, v);
+ }
+}
+
+#define TRACE_OPEN_ETH_DESC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_desc_read(uint32_t addr, uint32_t v)
+{
+}
+
+static inline void trace_open_eth_desc_read(uint32_t addr, uint32_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_desc_read(addr, v);
+ }
+}
+
+#define TRACE_OPEN_ETH_DESC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_eth_desc_write(uint32_t addr, uint32_t v)
+{
+}
+
+static inline void trace_open_eth_desc_write(uint32_t addr, uint32_t v)
+{
+ if (true) {
+ _nocheck__trace_open_eth_desc_write(addr, v);
+ }
+}
+
+#define TRACE_PCNET_S_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_s_reset(void * s)
+{
+}
+
+static inline void trace_pcnet_s_reset(void * s)
+{
+ if (true) {
+ _nocheck__trace_pcnet_s_reset(s);
+ }
+}
+
+#define TRACE_PCNET_USER_INT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_user_int(void * s)
+{
+}
+
+static inline void trace_pcnet_user_int(void * s)
+{
+ if (true) {
+ _nocheck__trace_pcnet_user_int(s);
+ }
+}
+
+#define TRACE_PCNET_ISR_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_isr_change(void * s, uint32_t isr, uint32_t isr_old)
+{
+}
+
+static inline void trace_pcnet_isr_change(void * s, uint32_t isr, uint32_t isr_old)
+{
+ if (true) {
+ _nocheck__trace_pcnet_isr_change(s, isr, isr_old);
+ }
+}
+
+#define TRACE_PCNET_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_init(void * s, uint64_t init_addr)
+{
+}
+
+static inline void trace_pcnet_init(void * s, uint64_t init_addr)
+{
+ if (true) {
+ _nocheck__trace_pcnet_init(s, init_addr);
+ }
+}
+
+#define TRACE_PCNET_RLEN_TLEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_rlen_tlen(void * s, uint32_t rlen, uint32_t tlen)
+{
+}
+
+static inline void trace_pcnet_rlen_tlen(void * s, uint32_t rlen, uint32_t tlen)
+{
+ if (true) {
+ _nocheck__trace_pcnet_rlen_tlen(s, rlen, tlen);
+ }
+}
+
+#define TRACE_PCNET_SS32_RDRA_TDRA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_ss32_rdra_tdra(void * s, uint32_t ss32, uint32_t rdra, uint32_t rcvrl, uint32_t tdra, uint32_t xmtrl)
+{
+}
+
+static inline void trace_pcnet_ss32_rdra_tdra(void * s, uint32_t ss32, uint32_t rdra, uint32_t rcvrl, uint32_t tdra, uint32_t xmtrl)
+{
+ if (true) {
+ _nocheck__trace_pcnet_ss32_rdra_tdra(s, ss32, rdra, rcvrl, tdra, xmtrl);
+ }
+}
+
+#define TRACE_PCNET_APROM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_aprom_writeb(void * opaque, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_aprom_writeb(void * opaque, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_aprom_writeb(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_APROM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_aprom_readb(void * opaque, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_aprom_readb(void * opaque, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_aprom_readb(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_IOPORT_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_ioport_read(void * opaque, uint64_t addr, unsigned size)
+{
+}
+
+static inline void trace_pcnet_ioport_read(void * opaque, uint64_t addr, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_pcnet_ioport_read(opaque, addr, size);
+ }
+}
+
+#define TRACE_PCNET_IOPORT_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_ioport_write(void * opaque, uint64_t addr, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_pcnet_ioport_write(void * opaque, uint64_t addr, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_pcnet_ioport_write(opaque, addr, data, size);
+ }
+}
+
+#define TRACE_PCNET_MMIO_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_writeb(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_writeb(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_writeb(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_MMIO_WRITEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_writew(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_writew(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_writew(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_MMIO_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_writel(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_writel(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_writel(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_MMIO_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_readb(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_readb(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_readb(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_MMIO_READW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_readw(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_readw(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_readw(opaque, addr, val);
+ }
+}
+
+#define TRACE_PCNET_MMIO_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pcnet_mmio_readl(void * opaque, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_pcnet_mmio_readl(void * opaque, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_pcnet_mmio_readl(opaque, addr, val);
+ }
+}
+
+#define TRACE_NET_RX_PKT_PARSED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_parsed(bool ip4, bool ip6, bool udp, bool tcp, size_t l3o, size_t l4o, size_t l5o)
+{
+}
+
+static inline void trace_net_rx_pkt_parsed(bool ip4, bool ip6, bool udp, bool tcp, size_t l3o, size_t l4o, size_t l5o)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_parsed(ip4, ip6, udp, tcp, l3o, l4o, l5o);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_validate_entry(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_validate_entry(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_validate_entry();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_NOT_XXP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_validate_not_xxp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_validate_not_xxp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_validate_not_xxp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_UDP_WITH_NO_CHECKSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_validate_udp_with_no_checksum(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_validate_udp_with_no_checksum(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_validate_udp_with_no_checksum();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_IP4_FRAGMENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_validate_ip4_fragment(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_validate_ip4_fragment(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_validate_ip4_fragment();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_VALIDATE_CSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_validate_csum(bool csum_valid)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_validate_csum(bool csum_valid)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_validate_csum(csum_valid);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_entry(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_entry(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_entry();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_UDP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_ip4_udp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_ip4_udp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_ip4_udp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP4_TCP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_ip4_tcp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_ip4_tcp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_ip4_tcp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_UDP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_ip6_udp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_ip6_udp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_ip6_udp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_IP6_TCP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_ip6_tcp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_ip6_tcp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_ip6_tcp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_PH_CSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_ph_csum(uint32_t cntr, uint16_t csl)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_ph_csum(uint32_t cntr, uint16_t csl)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_ph_csum(cntr, csl);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_CALC_CSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_calc_csum(size_t l4hdr_off, uint16_t csl, uint32_t cntr, uint16_t csum)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_calc_csum(size_t l4hdr_off, uint16_t csl, uint32_t cntr, uint16_t csum)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_calc_csum(l4hdr_off, csl, cntr, csum);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_entry(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_entry(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_entry();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_TCP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_tcp(uint32_t l4_cso)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_tcp(uint32_t l4_cso)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_tcp(l4_cso);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_udp(uint32_t l4_cso)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_udp(uint32_t l4_cso)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_udp(l4_cso);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_NOT_XXP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_not_xxp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_not_xxp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_not_xxp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_IP4_FRAGMENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_ip4_fragment(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_ip4_fragment(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_ip4_fragment();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_UDP_WITH_NO_CHECKSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_udp_with_no_checksum(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_udp_with_no_checksum(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_udp_with_no_checksum();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L4_CSUM_FIX_CSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l4_csum_fix_csum(uint32_t cso, uint16_t csum)
+{
+}
+
+static inline void trace_net_rx_pkt_l4_csum_fix_csum(uint32_t cso, uint16_t csum)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l4_csum_fix_csum(cso, csum);
+ }
+}
+
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l3_csum_validate_entry(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l3_csum_validate_entry(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l3_csum_validate_entry();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_NOT_IP4_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l3_csum_validate_not_ip4(void)
+{
+}
+
+static inline void trace_net_rx_pkt_l3_csum_validate_not_ip4(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l3_csum_validate_not_ip4();
+ }
+}
+
+#define TRACE_NET_RX_PKT_L3_CSUM_VALIDATE_CSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_l3_csum_validate_csum(size_t l3hdr_off, uint32_t csl, uint32_t cntr, uint16_t csum, bool csum_valid)
+{
+}
+
+static inline void trace_net_rx_pkt_l3_csum_validate_csum(size_t l3hdr_off, uint32_t csl, uint32_t cntr, uint16_t csum, bool csum_valid)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_l3_csum_validate_csum(l3hdr_off, csl, cntr, csum, csum_valid);
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_IP4_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_ip4(void)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_ip4(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_ip4();
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_IP4_TCP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_ip4_tcp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_ip4_tcp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_ip4_tcp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_IP6_TCP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_ip6_tcp(void)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_ip6_tcp(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_ip6_tcp();
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_IP6_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_ip6(void)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_ip6(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_ip6();
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_IP6_EX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_ip6_ex(void)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_ip6_ex(void)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_ip6_ex();
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_HASH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_hash(size_t rss_length, uint32_t rss_hash)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_hash(size_t rss_length, uint32_t rss_hash)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_hash(rss_length, rss_hash);
+ }
+}
+
+#define TRACE_NET_RX_PKT_RSS_ADD_CHUNK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_net_rx_pkt_rss_add_chunk(void* ptr, size_t size, size_t input_offset)
+{
+}
+
+static inline void trace_net_rx_pkt_rss_add_chunk(void* ptr, size_t size, size_t input_offset)
+{
+ if (true) {
+ _nocheck__trace_net_rx_pkt_rss_add_chunk(ptr, size, input_offset);
+ }
+}
+
+#define TRACE_E1000X_RX_CAN_RECV_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_can_recv_disabled(bool link_up, bool rx_enabled, bool pci_master)
+{
+}
+
+static inline void trace_e1000x_rx_can_recv_disabled(bool link_up, bool rx_enabled, bool pci_master)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_can_recv_disabled(link_up, rx_enabled, pci_master);
+ }
+}
+
+#define TRACE_E1000X_VLAN_IS_VLAN_PKT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_vlan_is_vlan_pkt(bool is_vlan_pkt, uint16_t eth_proto, uint16_t vet)
+{
+}
+
+static inline void trace_e1000x_vlan_is_vlan_pkt(bool is_vlan_pkt, uint16_t eth_proto, uint16_t vet)
+{
+ if (true) {
+ _nocheck__trace_e1000x_vlan_is_vlan_pkt(is_vlan_pkt, eth_proto, vet);
+ }
+}
+
+#define TRACE_E1000X_RX_FLT_UCAST_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_flt_ucast_match(uint32_t idx, uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_e1000x_rx_flt_ucast_match(uint32_t idx, uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_flt_ucast_match(idx, b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_E1000X_RX_FLT_UCAST_MISMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_flt_ucast_mismatch(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_e1000x_rx_flt_ucast_mismatch(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_flt_ucast_mismatch(b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_E1000X_RX_FLT_INEXACT_MISMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_flt_inexact_mismatch(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint32_t mo, uint32_t mta, uint32_t mta_val)
+{
+}
+
+static inline void trace_e1000x_rx_flt_inexact_mismatch(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint32_t mo, uint32_t mta, uint32_t mta_val)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_flt_inexact_mismatch(b0, b1, b2, b3, b4, b5, mo, mta, mta_val);
+ }
+}
+
+#define TRACE_E1000X_RX_LINK_DOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_link_down(uint32_t status_reg)
+{
+}
+
+static inline void trace_e1000x_rx_link_down(uint32_t status_reg)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_link_down(status_reg);
+ }
+}
+
+#define TRACE_E1000X_RX_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_disabled(uint32_t rctl_reg)
+{
+}
+
+static inline void trace_e1000x_rx_disabled(uint32_t rctl_reg)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_disabled(rctl_reg);
+ }
+}
+
+#define TRACE_E1000X_RX_OVERSIZED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_rx_oversized(size_t size)
+{
+}
+
+static inline void trace_e1000x_rx_oversized(size_t size)
+{
+ if (true) {
+ _nocheck__trace_e1000x_rx_oversized(size);
+ }
+}
+
+#define TRACE_E1000X_MAC_INDICATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_mac_indicate(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_e1000x_mac_indicate(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_e1000x_mac_indicate(b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_E1000X_LINK_NEGOTIATION_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_link_negotiation_start(void)
+{
+}
+
+static inline void trace_e1000x_link_negotiation_start(void)
+{
+ if (true) {
+ _nocheck__trace_e1000x_link_negotiation_start();
+ }
+}
+
+#define TRACE_E1000X_LINK_NEGOTIATION_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000x_link_negotiation_done(void)
+{
+}
+
+static inline void trace_e1000x_link_negotiation_done(void)
+{
+ if (true) {
+ _nocheck__trace_e1000x_link_negotiation_done();
+ }
+}
+
+#define TRACE_E1000E_CORE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_write(uint64_t index, uint32_t size, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_core_write(uint64_t index, uint32_t size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_write(index, size, val);
+ }
+}
+
+#define TRACE_E1000E_CORE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_read(uint64_t index, uint32_t size, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_core_read(uint64_t index, uint32_t size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_read(index, size, val);
+ }
+}
+
+#define TRACE_E1000E_CORE_MDIC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_mdic_read(uint8_t page, uint32_t addr, uint32_t data)
+{
+}
+
+static inline void trace_e1000e_core_mdic_read(uint8_t page, uint32_t addr, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_mdic_read(page, addr, data);
+ }
+}
+
+#define TRACE_E1000E_CORE_MDIC_READ_UNHANDLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_mdic_read_unhandled(uint8_t page, uint32_t addr)
+{
+}
+
+static inline void trace_e1000e_core_mdic_read_unhandled(uint8_t page, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_mdic_read_unhandled(page, addr);
+ }
+}
+
+#define TRACE_E1000E_CORE_MDIC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_mdic_write(uint8_t page, uint32_t addr, uint32_t data)
+{
+}
+
+static inline void trace_e1000e_core_mdic_write(uint8_t page, uint32_t addr, uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_mdic_write(page, addr, data);
+ }
+}
+
+#define TRACE_E1000E_CORE_MDIC_WRITE_UNHANDLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_mdic_write_unhandled(uint8_t page, uint32_t addr)
+{
+}
+
+static inline void trace_e1000e_core_mdic_write_unhandled(uint8_t page, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_mdic_write_unhandled(page, addr);
+ }
+}
+
+#define TRACE_E1000E_CORE_CTRL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_ctrl_write(uint64_t index, uint32_t val)
+{
+}
+
+static inline void trace_e1000e_core_ctrl_write(uint64_t index, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_ctrl_write(index, val);
+ }
+}
+
+#define TRACE_E1000E_CORE_CTRL_SW_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_ctrl_sw_reset(void)
+{
+}
+
+static inline void trace_e1000e_core_ctrl_sw_reset(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_ctrl_sw_reset();
+ }
+}
+
+#define TRACE_E1000E_CORE_CTRL_PHY_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_core_ctrl_phy_reset(void)
+{
+}
+
+static inline void trace_e1000e_core_ctrl_phy_reset(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_core_ctrl_phy_reset();
+ }
+}
+
+#define TRACE_E1000E_LINK_AUTONEG_FLOWCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_autoneg_flowctl(bool enabled)
+{
+}
+
+static inline void trace_e1000e_link_autoneg_flowctl(bool enabled)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_autoneg_flowctl(enabled);
+ }
+}
+
+#define TRACE_E1000E_LINK_SET_PARAMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_set_params(bool autodetect, uint32_t speed, bool force_spd, bool force_dplx, bool rx_fctl, bool tx_fctl)
+{
+}
+
+static inline void trace_e1000e_link_set_params(bool autodetect, uint32_t speed, bool force_spd, bool force_dplx, bool rx_fctl, bool tx_fctl)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_set_params(autodetect, speed, force_spd, force_dplx, rx_fctl, tx_fctl);
+ }
+}
+
+#define TRACE_E1000E_LINK_READ_PARAMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_read_params(bool autodetect, uint32_t speed, bool force_spd, bool force_dplx, bool rx_fctl, bool tx_fctl)
+{
+}
+
+static inline void trace_e1000e_link_read_params(bool autodetect, uint32_t speed, bool force_spd, bool force_dplx, bool rx_fctl, bool tx_fctl)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_read_params(autodetect, speed, force_spd, force_dplx, rx_fctl, tx_fctl);
+ }
+}
+
+#define TRACE_E1000E_LINK_SET_EXT_PARAMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_set_ext_params(bool asd_check, bool speed_select_bypass)
+{
+}
+
+static inline void trace_e1000e_link_set_ext_params(bool asd_check, bool speed_select_bypass)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_set_ext_params(asd_check, speed_select_bypass);
+ }
+}
+
+#define TRACE_E1000E_LINK_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_status(bool link_up, bool full_dplx, uint32_t speed, uint32_t asdv)
+{
+}
+
+static inline void trace_e1000e_link_status(bool link_up, bool full_dplx, uint32_t speed, uint32_t asdv)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_status(link_up, full_dplx, speed, asdv);
+ }
+}
+
+#define TRACE_E1000E_LINK_STATUS_CHANGED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_link_status_changed(bool status)
+{
+}
+
+static inline void trace_e1000e_link_status_changed(bool status)
+{
+ if (true) {
+ _nocheck__trace_e1000e_link_status_changed(status);
+ }
+}
+
+#define TRACE_E1000E_WRN_REGS_WRITE_RO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_regs_write_ro(uint64_t index, uint32_t size, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_wrn_regs_write_ro(uint64_t index, uint32_t size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_regs_write_ro(index, size, val);
+ }
+}
+
+#define TRACE_E1000E_WRN_REGS_WRITE_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_regs_write_unknown(uint64_t index, uint32_t size, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_wrn_regs_write_unknown(uint64_t index, uint32_t size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_regs_write_unknown(index, size, val);
+ }
+}
+
+#define TRACE_E1000E_WRN_REGS_READ_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_regs_read_unknown(uint64_t index, uint32_t size)
+{
+}
+
+static inline void trace_e1000e_wrn_regs_read_unknown(uint64_t index, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_regs_read_unknown(index, size);
+ }
+}
+
+#define TRACE_E1000E_WRN_REGS_READ_TRIVIAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_regs_read_trivial(uint32_t index)
+{
+}
+
+static inline void trace_e1000e_wrn_regs_read_trivial(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_regs_read_trivial(index);
+ }
+}
+
+#define TRACE_E1000E_WRN_REGS_WRITE_TRIVIAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_regs_write_trivial(uint32_t index)
+{
+}
+
+static inline void trace_e1000e_wrn_regs_write_trivial(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_regs_write_trivial(index);
+ }
+}
+
+#define TRACE_E1000E_WRN_NO_TS_SUPPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_no_ts_support(void)
+{
+}
+
+static inline void trace_e1000e_wrn_no_ts_support(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_no_ts_support();
+ }
+}
+
+#define TRACE_E1000E_WRN_NO_SNAP_SUPPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_no_snap_support(void)
+{
+}
+
+static inline void trace_e1000e_wrn_no_snap_support(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_no_snap_support();
+ }
+}
+
+#define TRACE_E1000E_WRN_ISCSI_FILTERING_NOT_SUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_iscsi_filtering_not_supported(void)
+{
+}
+
+static inline void trace_e1000e_wrn_iscsi_filtering_not_supported(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_iscsi_filtering_not_supported();
+ }
+}
+
+#define TRACE_E1000E_WRN_NFSW_FILTERING_NOT_SUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_nfsw_filtering_not_supported(void)
+{
+}
+
+static inline void trace_e1000e_wrn_nfsw_filtering_not_supported(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_nfsw_filtering_not_supported();
+ }
+}
+
+#define TRACE_E1000E_WRN_NFSR_FILTERING_NOT_SUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_nfsr_filtering_not_supported(void)
+{
+}
+
+static inline void trace_e1000e_wrn_nfsr_filtering_not_supported(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_nfsr_filtering_not_supported();
+ }
+}
+
+#define TRACE_E1000E_TX_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_tx_disabled(void)
+{
+}
+
+static inline void trace_e1000e_tx_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_tx_disabled();
+ }
+}
+
+#define TRACE_E1000E_TX_DESCR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_tx_descr(void * addr, uint32_t lower, uint32_t upper)
+{
+}
+
+static inline void trace_e1000e_tx_descr(void * addr, uint32_t lower, uint32_t upper)
+{
+ if (true) {
+ _nocheck__trace_e1000e_tx_descr(addr, lower, upper);
+ }
+}
+
+#define TRACE_E1000E_RING_FREE_SPACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_ring_free_space(int ridx, uint32_t rdlen, uint32_t rdh, uint32_t rdt)
+{
+}
+
+static inline void trace_e1000e_ring_free_space(int ridx, uint32_t rdlen, uint32_t rdh, uint32_t rdt)
+{
+ if (true) {
+ _nocheck__trace_e1000e_ring_free_space(ridx, rdlen, rdh, rdt);
+ }
+}
+
+#define TRACE_E1000E_RX_CAN_RECV_RINGS_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_can_recv_rings_full(void)
+{
+}
+
+static inline void trace_e1000e_rx_can_recv_rings_full(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_can_recv_rings_full();
+ }
+}
+
+#define TRACE_E1000E_RX_CAN_RECV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_can_recv(void)
+{
+}
+
+static inline void trace_e1000e_rx_can_recv(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_can_recv();
+ }
+}
+
+#define TRACE_E1000E_RX_HAS_BUFFERS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_has_buffers(int ridx, uint32_t free_desc, size_t total_size, uint32_t desc_buf_size)
+{
+}
+
+static inline void trace_e1000e_rx_has_buffers(int ridx, uint32_t free_desc, size_t total_size, uint32_t desc_buf_size)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_has_buffers(ridx, free_desc, total_size, desc_buf_size);
+ }
+}
+
+#define TRACE_E1000E_RX_NULL_DESCRIPTOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_null_descriptor(void)
+{
+}
+
+static inline void trace_e1000e_rx_null_descriptor(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_null_descriptor();
+ }
+}
+
+#define TRACE_E1000E_RX_FLT_VLAN_MISMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_flt_vlan_mismatch(uint16_t vid)
+{
+}
+
+static inline void trace_e1000e_rx_flt_vlan_mismatch(uint16_t vid)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_flt_vlan_mismatch(vid);
+ }
+}
+
+#define TRACE_E1000E_RX_FLT_VLAN_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_flt_vlan_match(uint16_t vid)
+{
+}
+
+static inline void trace_e1000e_rx_flt_vlan_match(uint16_t vid)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_flt_vlan_match(vid);
+ }
+}
+
+#define TRACE_E1000E_RX_DESC_PS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_desc_ps_read(uint64_t a0, uint64_t a1, uint64_t a2, uint64_t a3)
+{
+}
+
+static inline void trace_e1000e_rx_desc_ps_read(uint64_t a0, uint64_t a1, uint64_t a2, uint64_t a3)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_desc_ps_read(a0, a1, a2, a3);
+ }
+}
+
+#define TRACE_E1000E_RX_DESC_PS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_desc_ps_write(uint16_t a0, uint16_t a1, uint16_t a2, uint16_t a3)
+{
+}
+
+static inline void trace_e1000e_rx_desc_ps_write(uint16_t a0, uint16_t a1, uint16_t a2, uint16_t a3)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_desc_ps_write(a0, a1, a2, a3);
+ }
+}
+
+#define TRACE_E1000E_RX_DESC_BUFF_SIZES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_desc_buff_sizes(uint32_t b0, uint32_t b1, uint32_t b2, uint32_t b3)
+{
+}
+
+static inline void trace_e1000e_rx_desc_buff_sizes(uint32_t b0, uint32_t b1, uint32_t b2, uint32_t b3)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_desc_buff_sizes(b0, b1, b2, b3);
+ }
+}
+
+#define TRACE_E1000E_RX_DESC_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_desc_len(uint8_t rx_desc_len)
+{
+}
+
+static inline void trace_e1000e_rx_desc_len(uint8_t rx_desc_len)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_desc_len(rx_desc_len);
+ }
+}
+
+#define TRACE_E1000E_RX_DESC_BUFF_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_desc_buff_write(uint8_t idx, uint64_t addr, uint16_t offset, const void* source, uint32_t len)
+{
+}
+
+static inline void trace_e1000e_rx_desc_buff_write(uint8_t idx, uint64_t addr, uint16_t offset, const void* source, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_desc_buff_write(idx, addr, offset, source, len);
+ }
+}
+
+#define TRACE_E1000E_RX_DESCR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_descr(int ridx, uint64_t base, uint8_t len)
+{
+}
+
+static inline void trace_e1000e_rx_descr(int ridx, uint64_t base, uint8_t len)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_descr(ridx, base, len);
+ }
+}
+
+#define TRACE_E1000E_RX_SET_RCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_set_rctl(uint32_t rctl)
+{
+}
+
+static inline void trace_e1000e_rx_set_rctl(uint32_t rctl)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_set_rctl(rctl);
+ }
+}
+
+#define TRACE_E1000E_RX_RECEIVE_IOV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_receive_iov(int iovcnt)
+{
+}
+
+static inline void trace_e1000e_rx_receive_iov(int iovcnt)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_receive_iov(iovcnt);
+ }
+}
+
+#define TRACE_E1000E_RX_FLT_DROPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_flt_dropped(void)
+{
+}
+
+static inline void trace_e1000e_rx_flt_dropped(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_flt_dropped();
+ }
+}
+
+#define TRACE_E1000E_RX_WRITTEN_TO_GUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_written_to_guest(uint32_t causes)
+{
+}
+
+static inline void trace_e1000e_rx_written_to_guest(uint32_t causes)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_written_to_guest(causes);
+ }
+}
+
+#define TRACE_E1000E_RX_NOT_WRITTEN_TO_GUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_not_written_to_guest(uint32_t causes)
+{
+}
+
+static inline void trace_e1000e_rx_not_written_to_guest(uint32_t causes)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_not_written_to_guest(causes);
+ }
+}
+
+#define TRACE_E1000E_RX_INTERRUPT_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_interrupt_set(uint32_t causes)
+{
+}
+
+static inline void trace_e1000e_rx_interrupt_set(uint32_t causes)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_interrupt_set(causes);
+ }
+}
+
+#define TRACE_E1000E_RX_INTERRUPT_DELAYED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_interrupt_delayed(uint32_t causes)
+{
+}
+
+static inline void trace_e1000e_rx_interrupt_delayed(uint32_t causes)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_interrupt_delayed(causes);
+ }
+}
+
+#define TRACE_E1000E_RX_SET_CSO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_set_cso(int cso_state)
+{
+}
+
+static inline void trace_e1000e_rx_set_cso(int cso_state)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_set_cso(cso_state);
+ }
+}
+
+#define TRACE_E1000E_RX_SET_RDT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_set_rdt(int queue_idx, uint32_t val)
+{
+}
+
+static inline void trace_e1000e_rx_set_rdt(int queue_idx, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_set_rdt(queue_idx, val);
+ }
+}
+
+#define TRACE_E1000E_RX_SET_RFCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_set_rfctl(uint32_t val)
+{
+}
+
+static inline void trace_e1000e_rx_set_rfctl(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_set_rfctl(val);
+ }
+}
+
+#define TRACE_E1000E_RX_START_RECV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_start_recv(void)
+{
+}
+
+static inline void trace_e1000e_rx_start_recv(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_start_recv();
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_STARTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_started(void)
+{
+}
+
+static inline void trace_e1000e_rx_rss_started(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_started();
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_disabled(void)
+{
+}
+
+static inline void trace_e1000e_rx_rss_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_disabled();
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_TYPE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_type(uint32_t type)
+{
+}
+
+static inline void trace_e1000e_rx_rss_type(uint32_t type)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_type(type);
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_IP4_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_ip4(bool isfragment, bool istcp, uint32_t mrqc, bool tcpipv4_enabled, bool ipv4_enabled)
+{
+}
+
+static inline void trace_e1000e_rx_rss_ip4(bool isfragment, bool istcp, uint32_t mrqc, bool tcpipv4_enabled, bool ipv4_enabled)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_ip4(isfragment, istcp, mrqc, tcpipv4_enabled, ipv4_enabled);
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_IP6_RFCTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_ip6_rfctl(uint32_t rfctl)
+{
+}
+
+static inline void trace_e1000e_rx_rss_ip6_rfctl(uint32_t rfctl)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_ip6_rfctl(rfctl);
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_IP6_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_ip6(bool ex_dis, bool new_ex_dis, bool istcp, bool has_ext_headers, bool ex_dst_valid, bool ex_src_valid, uint32_t mrqc, bool tcpipv6_enabled, bool ipv6ex_enabled, bool ipv6_enabled)
+{
+}
+
+static inline void trace_e1000e_rx_rss_ip6(bool ex_dis, bool new_ex_dis, bool istcp, bool has_ext_headers, bool ex_dst_valid, bool ex_src_valid, uint32_t mrqc, bool tcpipv6_enabled, bool ipv6ex_enabled, bool ipv6_enabled)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_ip6(ex_dis, new_ex_dis, istcp, has_ext_headers, ex_dst_valid, ex_src_valid, mrqc, tcpipv6_enabled, ipv6ex_enabled, ipv6_enabled);
+ }
+}
+
+#define TRACE_E1000E_RX_RSS_DISPATCHED_TO_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_rss_dispatched_to_queue(int queue_idx)
+{
+}
+
+static inline void trace_e1000e_rx_rss_dispatched_to_queue(int queue_idx)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_rss_dispatched_to_queue(queue_idx);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_PROTOCOLS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_protocols(bool isip4, bool isip6, bool isudp, bool istcp)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_protocols(bool isip4, bool isip6, bool isudp, bool istcp)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_protocols(isip4, isip6, isudp, istcp);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_VLAN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_vlan(uint16_t vlan_tag)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_vlan(uint16_t vlan_tag)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_vlan(vlan_tag);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_RSS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_rss(uint32_t rss, uint32_t mrq)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_rss(uint32_t rss, uint32_t mrq)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_rss(rss, mrq);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_IP_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_ip_id(uint16_t ip_id)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_ip_id(uint16_t ip_id)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_ip_id(ip_id);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_ACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_ack(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_ack(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_ack();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_PKT_TYPE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_pkt_type(uint32_t pkt_type)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_pkt_type(uint32_t pkt_type)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_pkt_type(pkt_type);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_NO_VIRTHDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_no_virthdr(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_no_virthdr(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_no_virthdr();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_VIRTHDR_NO_CSUM_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_virthdr_no_csum_info(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_virthdr_no_csum_info(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_virthdr_no_csum_info();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_L3_CSO_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_l3_cso_disabled(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_l3_cso_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_l3_cso_disabled();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_L4_CSO_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_l4_cso_disabled(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_l4_cso_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_l4_cso_disabled();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_L3_CSUM_VALIDATION_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_l3_csum_validation_failed(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_l3_csum_validation_failed(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_l3_csum_validation_failed();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_L4_CSUM_VALIDATION_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_l4_csum_validation_failed(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_l4_csum_validation_failed(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_l4_csum_validation_failed();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_STATUS_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_status_flags(uint32_t status_flags)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_status_flags(uint32_t status_flags)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_status_flags(status_flags);
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_IPV6_SUM_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_ipv6_sum_disabled(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_ipv6_sum_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_ipv6_sum_disabled();
+ }
+}
+
+#define TRACE_E1000E_RX_METADATA_IPV6_FILTERING_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_rx_metadata_ipv6_filtering_disabled(void)
+{
+}
+
+static inline void trace_e1000e_rx_metadata_ipv6_filtering_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_rx_metadata_ipv6_filtering_disabled();
+ }
+}
+
+#define TRACE_E1000E_VLAN_VET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_vlan_vet(uint16_t vet)
+{
+}
+
+static inline void trace_e1000e_vlan_vet(uint16_t vet)
+{
+ if (true) {
+ _nocheck__trace_e1000e_vlan_vet(vet);
+ }
+}
+
+#define TRACE_E1000E_IRQ_MSI_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_msi_notify(uint32_t cause)
+{
+}
+
+static inline void trace_e1000e_irq_msi_notify(uint32_t cause)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_msi_notify(cause);
+ }
+}
+
+#define TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_INTERRUPTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_throttling_no_pending_interrupts(void)
+{
+}
+
+static inline void trace_e1000e_irq_throttling_no_pending_interrupts(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_throttling_no_pending_interrupts();
+ }
+}
+
+#define TRACE_E1000E_IRQ_MSI_NOTIFY_POSTPONED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_msi_notify_postponed(void)
+{
+}
+
+static inline void trace_e1000e_irq_msi_notify_postponed(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_msi_notify_postponed();
+ }
+}
+
+#define TRACE_E1000E_IRQ_LEGACY_NOTIFY_POSTPONED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_legacy_notify_postponed(void)
+{
+}
+
+static inline void trace_e1000e_irq_legacy_notify_postponed(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_legacy_notify_postponed();
+ }
+}
+
+#define TRACE_E1000E_IRQ_THROTTLING_NO_PENDING_VEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_throttling_no_pending_vec(int idx)
+{
+}
+
+static inline void trace_e1000e_irq_throttling_no_pending_vec(int idx)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_throttling_no_pending_vec(idx);
+ }
+}
+
+#define TRACE_E1000E_IRQ_MSIX_NOTIFY_POSTPONED_VEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_msix_notify_postponed_vec(int idx)
+{
+}
+
+static inline void trace_e1000e_irq_msix_notify_postponed_vec(int idx)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_msix_notify_postponed_vec(idx);
+ }
+}
+
+#define TRACE_E1000E_IRQ_LEGACY_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_legacy_notify(bool level)
+{
+}
+
+static inline void trace_e1000e_irq_legacy_notify(bool level)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_legacy_notify(level);
+ }
+}
+
+#define TRACE_E1000E_IRQ_MSIX_NOTIFY_VEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_msix_notify_vec(uint32_t vector)
+{
+}
+
+static inline void trace_e1000e_irq_msix_notify_vec(uint32_t vector)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_msix_notify_vec(vector);
+ }
+}
+
+#define TRACE_E1000E_IRQ_POSTPONED_BY_XITR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_postponed_by_xitr(uint32_t reg)
+{
+}
+
+static inline void trace_e1000e_irq_postponed_by_xitr(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_postponed_by_xitr(reg);
+ }
+}
+
+#define TRACE_E1000E_IRQ_CLEAR_IMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_clear_ims(uint32_t bits, uint32_t old_ims, uint32_t new_ims)
+{
+}
+
+static inline void trace_e1000e_irq_clear_ims(uint32_t bits, uint32_t old_ims, uint32_t new_ims)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_clear_ims(bits, old_ims, new_ims);
+ }
+}
+
+#define TRACE_E1000E_IRQ_SET_IMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_set_ims(uint32_t bits, uint32_t old_ims, uint32_t new_ims)
+{
+}
+
+static inline void trace_e1000e_irq_set_ims(uint32_t bits, uint32_t old_ims, uint32_t new_ims)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_set_ims(bits, old_ims, new_ims);
+ }
+}
+
+#define TRACE_E1000E_IRQ_FIX_ICR_ASSERTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_fix_icr_asserted(uint32_t new_val)
+{
+}
+
+static inline void trace_e1000e_irq_fix_icr_asserted(uint32_t new_val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_fix_icr_asserted(new_val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ADD_MSI_OTHER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_add_msi_other(uint32_t new_val)
+{
+}
+
+static inline void trace_e1000e_irq_add_msi_other(uint32_t new_val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_add_msi_other(new_val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_PENDING_INTERRUPTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_pending_interrupts(uint32_t pending, uint32_t icr, uint32_t ims)
+{
+}
+
+static inline void trace_e1000e_irq_pending_interrupts(uint32_t pending, uint32_t icr, uint32_t ims)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_pending_interrupts(pending, icr, ims);
+ }
+}
+
+#define TRACE_E1000E_IRQ_SET_CAUSE_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_set_cause_entry(uint32_t val, uint32_t icr)
+{
+}
+
+static inline void trace_e1000e_irq_set_cause_entry(uint32_t val, uint32_t icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_set_cause_entry(val, icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_SET_CAUSE_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_set_cause_exit(uint32_t val, uint32_t icr)
+{
+}
+
+static inline void trace_e1000e_irq_set_cause_exit(uint32_t val, uint32_t icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_set_cause_exit(val, icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_write(uint32_t bits, uint32_t old_icr, uint32_t new_icr)
+{
+}
+
+static inline void trace_e1000e_irq_icr_write(uint32_t bits, uint32_t old_icr, uint32_t new_icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_write(bits, old_icr, new_icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_WRITE_ICS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_write_ics(uint32_t val)
+{
+}
+
+static inline void trace_e1000e_irq_write_ics(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_write_ics(val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_PROCESS_IAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_process_iame(void)
+{
+}
+
+static inline void trace_e1000e_irq_icr_process_iame(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_process_iame();
+ }
+}
+
+#define TRACE_E1000E_IRQ_READ_ICS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_read_ics(uint32_t ics)
+{
+}
+
+static inline void trace_e1000e_irq_read_ics(uint32_t ics)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_read_ics(ics);
+ }
+}
+
+#define TRACE_E1000E_IRQ_READ_IMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_read_ims(uint32_t ims)
+{
+}
+
+static inline void trace_e1000e_irq_read_ims(uint32_t ims)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_read_ims(ims);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_READ_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_read_entry(uint32_t icr)
+{
+}
+
+static inline void trace_e1000e_irq_icr_read_entry(uint32_t icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_read_entry(icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_READ_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_read_exit(uint32_t icr)
+{
+}
+
+static inline void trace_e1000e_irq_icr_read_exit(uint32_t icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_read_exit(icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_CLEAR_ZERO_IMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_clear_zero_ims(void)
+{
+}
+
+static inline void trace_e1000e_irq_icr_clear_zero_ims(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_clear_zero_ims();
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_CLEAR_IAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_clear_iame(void)
+{
+}
+
+static inline void trace_e1000e_irq_icr_clear_iame(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_clear_iame();
+ }
+}
+
+#define TRACE_E1000E_IRQ_IAM_CLEAR_EIAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_iam_clear_eiame(uint32_t iam, uint32_t cause)
+{
+}
+
+static inline void trace_e1000e_irq_iam_clear_eiame(uint32_t iam, uint32_t cause)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_iam_clear_eiame(iam, cause);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ICR_CLEAR_EIAC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_icr_clear_eiac(uint32_t icr, uint32_t eiac)
+{
+}
+
+static inline void trace_e1000e_irq_icr_clear_eiac(uint32_t icr, uint32_t eiac)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_icr_clear_eiac(icr, eiac);
+ }
+}
+
+#define TRACE_E1000E_IRQ_IMS_CLEAR_SET_IMC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_ims_clear_set_imc(uint32_t val)
+{
+}
+
+static inline void trace_e1000e_irq_ims_clear_set_imc(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_ims_clear_set_imc(val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_FIRE_DELAYED_INTERRUPTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_fire_delayed_interrupts(void)
+{
+}
+
+static inline void trace_e1000e_irq_fire_delayed_interrupts(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_fire_delayed_interrupts();
+ }
+}
+
+#define TRACE_E1000E_IRQ_REARM_TIMER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_rearm_timer(uint32_t reg, int64_t delay_ns)
+{
+}
+
+static inline void trace_e1000e_irq_rearm_timer(uint32_t reg, int64_t delay_ns)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_rearm_timer(reg, delay_ns);
+ }
+}
+
+#define TRACE_E1000E_IRQ_THROTTLING_TIMER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_throttling_timer(uint32_t reg)
+{
+}
+
+static inline void trace_e1000e_irq_throttling_timer(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_throttling_timer(reg);
+ }
+}
+
+#define TRACE_E1000E_IRQ_RDTR_FPD_RUNNING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_rdtr_fpd_running(void)
+{
+}
+
+static inline void trace_e1000e_irq_rdtr_fpd_running(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_rdtr_fpd_running();
+ }
+}
+
+#define TRACE_E1000E_IRQ_RDTR_FPD_NOT_RUNNING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_rdtr_fpd_not_running(void)
+{
+}
+
+static inline void trace_e1000e_irq_rdtr_fpd_not_running(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_rdtr_fpd_not_running();
+ }
+}
+
+#define TRACE_E1000E_IRQ_TIDV_FPD_RUNNING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_tidv_fpd_running(void)
+{
+}
+
+static inline void trace_e1000e_irq_tidv_fpd_running(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_tidv_fpd_running();
+ }
+}
+
+#define TRACE_E1000E_IRQ_TIDV_FPD_NOT_RUNNING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_tidv_fpd_not_running(void)
+{
+}
+
+static inline void trace_e1000e_irq_tidv_fpd_not_running(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_tidv_fpd_not_running();
+ }
+}
+
+#define TRACE_E1000E_IRQ_EITR_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_eitr_set(uint32_t eitr_num, uint32_t val)
+{
+}
+
+static inline void trace_e1000e_irq_eitr_set(uint32_t eitr_num, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_eitr_set(eitr_num, val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ITR_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_itr_set(uint32_t val)
+{
+}
+
+static inline void trace_e1000e_irq_itr_set(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_itr_set(val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_FIRE_ALL_TIMERS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_fire_all_timers(uint32_t val)
+{
+}
+
+static inline void trace_e1000e_irq_fire_all_timers(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_fire_all_timers(val);
+ }
+}
+
+#define TRACE_E1000E_IRQ_ADDING_DELAYED_CAUSES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_adding_delayed_causes(uint32_t val, uint32_t icr)
+{
+}
+
+static inline void trace_e1000e_irq_adding_delayed_causes(uint32_t val, uint32_t icr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_adding_delayed_causes(val, icr);
+ }
+}
+
+#define TRACE_E1000E_IRQ_MSIX_PENDING_CLEARING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_irq_msix_pending_clearing(uint32_t cause, uint32_t int_cfg, uint32_t vec)
+{
+}
+
+static inline void trace_e1000e_irq_msix_pending_clearing(uint32_t cause, uint32_t int_cfg, uint32_t vec)
+{
+ if (true) {
+ _nocheck__trace_e1000e_irq_msix_pending_clearing(cause, int_cfg, vec);
+ }
+}
+
+#define TRACE_E1000E_WRN_MSIX_VEC_WRONG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_msix_vec_wrong(uint32_t cause, uint32_t cfg)
+{
+}
+
+static inline void trace_e1000e_wrn_msix_vec_wrong(uint32_t cause, uint32_t cfg)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_msix_vec_wrong(cause, cfg);
+ }
+}
+
+#define TRACE_E1000E_WRN_MSIX_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_msix_invalid(uint32_t cause, uint32_t cfg)
+{
+}
+
+static inline void trace_e1000e_wrn_msix_invalid(uint32_t cause, uint32_t cfg)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_msix_invalid(cause, cfg);
+ }
+}
+
+#define TRACE_E1000E_MAC_SET_PERMANENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_mac_set_permanent(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_e1000e_mac_set_permanent(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_e1000e_mac_set_permanent(b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_E1000E_MAC_SET_SW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_mac_set_sw(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_e1000e_mac_set_sw(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_e1000e_mac_set_sw(b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_E1000E_CB_PCI_REALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cb_pci_realize(void)
+{
+}
+
+static inline void trace_e1000e_cb_pci_realize(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cb_pci_realize();
+ }
+}
+
+#define TRACE_E1000E_CB_PCI_UNINIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cb_pci_uninit(void)
+{
+}
+
+static inline void trace_e1000e_cb_pci_uninit(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cb_pci_uninit();
+ }
+}
+
+#define TRACE_E1000E_CB_QDEV_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cb_qdev_reset(void)
+{
+}
+
+static inline void trace_e1000e_cb_qdev_reset(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cb_qdev_reset();
+ }
+}
+
+#define TRACE_E1000E_CB_PRE_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cb_pre_save(void)
+{
+}
+
+static inline void trace_e1000e_cb_pre_save(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cb_pre_save();
+ }
+}
+
+#define TRACE_E1000E_CB_POST_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cb_post_load(void)
+{
+}
+
+static inline void trace_e1000e_cb_post_load(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cb_post_load();
+ }
+}
+
+#define TRACE_E1000E_IO_WRITE_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_io_write_addr(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_io_write_addr(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_io_write_addr(addr);
+ }
+}
+
+#define TRACE_E1000E_IO_WRITE_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_io_write_data(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_io_write_data(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_io_write_data(addr, val);
+ }
+}
+
+#define TRACE_E1000E_IO_READ_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_io_read_addr(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_io_read_addr(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_io_read_addr(addr);
+ }
+}
+
+#define TRACE_E1000E_IO_READ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_io_read_data(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_e1000e_io_read_data(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_e1000e_io_read_data(addr, val);
+ }
+}
+
+#define TRACE_E1000E_WRN_IO_WRITE_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_io_write_unknown(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_wrn_io_write_unknown(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_io_write_unknown(addr);
+ }
+}
+
+#define TRACE_E1000E_WRN_IO_READ_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_io_read_unknown(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_wrn_io_read_unknown(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_io_read_unknown(addr);
+ }
+}
+
+#define TRACE_E1000E_WRN_IO_ADDR_UNDEFINED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_io_addr_undefined(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_wrn_io_addr_undefined(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_io_addr_undefined(addr);
+ }
+}
+
+#define TRACE_E1000E_WRN_IO_ADDR_FLASH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_io_addr_flash(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_wrn_io_addr_flash(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_io_addr_flash(addr);
+ }
+}
+
+#define TRACE_E1000E_WRN_IO_ADDR_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_wrn_io_addr_unknown(uint64_t addr)
+{
+}
+
+static inline void trace_e1000e_wrn_io_addr_unknown(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_e1000e_wrn_io_addr_unknown(addr);
+ }
+}
+
+#define TRACE_E1000E_MSI_INIT_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_msi_init_fail(int32_t res)
+{
+}
+
+static inline void trace_e1000e_msi_init_fail(int32_t res)
+{
+ if (true) {
+ _nocheck__trace_e1000e_msi_init_fail(res);
+ }
+}
+
+#define TRACE_E1000E_MSIX_INIT_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_msix_init_fail(int32_t res)
+{
+}
+
+static inline void trace_e1000e_msix_init_fail(int32_t res)
+{
+ if (true) {
+ _nocheck__trace_e1000e_msix_init_fail(res);
+ }
+}
+
+#define TRACE_E1000E_MSIX_USE_VECTOR_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_msix_use_vector_fail(uint32_t vec, int32_t res)
+{
+}
+
+static inline void trace_e1000e_msix_use_vector_fail(uint32_t vec, int32_t res)
+{
+ if (true) {
+ _nocheck__trace_e1000e_msix_use_vector_fail(vec, res);
+ }
+}
+
+#define TRACE_E1000E_CFG_SUPPORT_VIRTIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_cfg_support_virtio(bool support)
+{
+}
+
+static inline void trace_e1000e_cfg_support_virtio(bool support)
+{
+ if (true) {
+ _nocheck__trace_e1000e_cfg_support_virtio(support);
+ }
+}
+
+#define TRACE_E1000E_VM_STATE_RUNNING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_vm_state_running(void)
+{
+}
+
+static inline void trace_e1000e_vm_state_running(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_vm_state_running();
+ }
+}
+
+#define TRACE_E1000E_VM_STATE_STOPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_e1000e_vm_state_stopped(void)
+{
+}
+
+static inline void trace_e1000e_vm_state_stopped(void)
+{
+ if (true) {
+ _nocheck__trace_e1000e_vm_state_stopped();
+ }
+}
+
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_POOL_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_get_rx_bd_from_pool_found(int pool, int32_t count, uint32_t rx_bufs)
+{
+}
+
+static inline void trace_spapr_vlan_get_rx_bd_from_pool_found(int pool, int32_t count, uint32_t rx_bufs)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_get_rx_bd_from_pool_found(pool, count, rx_bufs);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_get_rx_bd_from_page(int buf_ptr, uint64_t bd)
+{
+}
+
+static inline void trace_spapr_vlan_get_rx_bd_from_page(int buf_ptr, uint64_t bd)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_get_rx_bd_from_page(buf_ptr, bd);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_GET_RX_BD_FROM_PAGE_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_get_rx_bd_from_page_found(uint32_t use_buf_ptr, uint32_t rx_bufs)
+{
+}
+
+static inline void trace_spapr_vlan_get_rx_bd_from_page_found(uint32_t use_buf_ptr, uint32_t rx_bufs)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_get_rx_bd_from_page_found(use_buf_ptr, rx_bufs);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_RECEIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_receive(const char * id, uint32_t rx_bufs)
+{
+}
+
+static inline void trace_spapr_vlan_receive(const char * id, uint32_t rx_bufs)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_receive(id, rx_bufs);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_RECEIVE_DMA_COMPLETED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_receive_dma_completed(void)
+{
+}
+
+static inline void trace_spapr_vlan_receive_dma_completed(void)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_receive_dma_completed();
+ }
+}
+
+#define TRACE_SPAPR_VLAN_RECEIVE_WROTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_receive_wrote(uint64_t ptr, uint64_t hi, uint64_t lo)
+{
+}
+
+static inline void trace_spapr_vlan_receive_wrote(uint64_t ptr, uint64_t hi, uint64_t lo)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_receive_wrote(ptr, hi, lo);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_add_rxbuf_to_pool_create(int pool, uint64_t len)
+{
+}
+
+static inline void trace_spapr_vlan_add_rxbuf_to_pool_create(int pool, uint64_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_add_rxbuf_to_pool_create(pool, len);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_POOL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_add_rxbuf_to_pool(int pool, uint64_t len, int32_t count)
+{
+}
+
+static inline void trace_spapr_vlan_add_rxbuf_to_pool(int pool, uint64_t len, int32_t count)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_add_rxbuf_to_pool(pool, len, count);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_ADD_RXBUF_TO_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_add_rxbuf_to_page(uint32_t ptr, uint32_t rx_bufs, uint64_t bd)
+{
+}
+
+static inline void trace_spapr_vlan_add_rxbuf_to_page(uint32_t ptr, uint32_t rx_bufs, uint64_t bd)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_add_rxbuf_to_page(ptr, rx_bufs, bd);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_H_ADD_LOGICAL_LAN_BUFFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_h_add_logical_lan_buffer(uint64_t reg, uint64_t buf)
+{
+}
+
+static inline void trace_spapr_vlan_h_add_logical_lan_buffer(uint64_t reg, uint64_t buf)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_h_add_logical_lan_buffer(reg, buf);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_h_send_logical_lan(uint64_t reg, uint64_t continue_token)
+{
+}
+
+static inline void trace_spapr_vlan_h_send_logical_lan(uint64_t reg, uint64_t continue_token)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_h_send_logical_lan(reg, continue_token);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_RXBUFS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_h_send_logical_lan_rxbufs(uint32_t rx_bufs)
+{
+}
+
+static inline void trace_spapr_vlan_h_send_logical_lan_rxbufs(uint32_t rx_bufs)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_h_send_logical_lan_rxbufs(rx_bufs);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_BUF_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_h_send_logical_lan_buf_desc(uint64_t buf)
+{
+}
+
+static inline void trace_spapr_vlan_h_send_logical_lan_buf_desc(uint64_t buf)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_h_send_logical_lan_buf_desc(buf);
+ }
+}
+
+#define TRACE_SPAPR_VLAN_H_SEND_LOGICAL_LAN_TOTAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vlan_h_send_logical_lan_total(int nbufs, unsigned total_len)
+{
+}
+
+static inline void trace_spapr_vlan_h_send_logical_lan_total(int nbufs, unsigned total_len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vlan_h_send_logical_lan_total(nbufs, total_len);
+ }
+}
+
+#define TRACE_SUNGEM_TX_CHECKSUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_checksum(uint16_t start, uint16_t off)
+{
+}
+
+static inline void trace_sungem_tx_checksum(uint16_t start, uint16_t off)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_checksum(start, off);
+ }
+}
+
+#define TRACE_SUNGEM_TX_CHECKSUM_OOB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_checksum_oob(void)
+{
+}
+
+static inline void trace_sungem_tx_checksum_oob(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_checksum_oob();
+ }
+}
+
+#define TRACE_SUNGEM_TX_UNFINISHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_unfinished(void)
+{
+}
+
+static inline void trace_sungem_tx_unfinished(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_unfinished();
+ }
+}
+
+#define TRACE_SUNGEM_TX_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_overflow(void)
+{
+}
+
+static inline void trace_sungem_tx_overflow(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_overflow();
+ }
+}
+
+#define TRACE_SUNGEM_TX_FINISHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_finished(uint32_t size)
+{
+}
+
+static inline void trace_sungem_tx_finished(uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_finished(size);
+ }
+}
+
+#define TRACE_SUNGEM_TX_KICK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_kick(void)
+{
+}
+
+static inline void trace_sungem_tx_kick(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_kick();
+ }
+}
+
+#define TRACE_SUNGEM_TX_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_disabled(void)
+{
+}
+
+static inline void trace_sungem_tx_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_disabled();
+ }
+}
+
+#define TRACE_SUNGEM_TX_PROCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_process(uint32_t comp, uint32_t kick, uint32_t size)
+{
+}
+
+static inline void trace_sungem_tx_process(uint32_t comp, uint32_t kick, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_process(comp, kick, size);
+ }
+}
+
+#define TRACE_SUNGEM_TX_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_desc(uint32_t comp, uint64_t control, uint64_t buffer)
+{
+}
+
+static inline void trace_sungem_tx_desc(uint32_t comp, uint64_t control, uint64_t buffer)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_desc(comp, control, buffer);
+ }
+}
+
+#define TRACE_SUNGEM_TX_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_tx_reset(void)
+{
+}
+
+static inline void trace_sungem_tx_reset(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_tx_reset();
+ }
+}
+
+#define TRACE_SUNGEM_RX_MAC_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_mac_disabled(void)
+{
+}
+
+static inline void trace_sungem_rx_mac_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_mac_disabled();
+ }
+}
+
+#define TRACE_SUNGEM_RX_TXDMA_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_txdma_disabled(void)
+{
+}
+
+static inline void trace_sungem_rx_txdma_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_txdma_disabled();
+ }
+}
+
+#define TRACE_SUNGEM_RX_CHECK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_check(bool full, uint32_t kick, uint32_t done)
+{
+}
+
+static inline void trace_sungem_rx_check(bool full, uint32_t kick, uint32_t done)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_check(full, kick, done);
+ }
+}
+
+#define TRACE_SUNGEM_RX_MAC_CHECK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_mac_check(uint32_t mac0, uint32_t mac1, uint32_t mac2)
+{
+}
+
+static inline void trace_sungem_rx_mac_check(uint32_t mac0, uint32_t mac1, uint32_t mac2)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_mac_check(mac0, mac1, mac2);
+ }
+}
+
+#define TRACE_SUNGEM_RX_MAC_MULTICAST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_mac_multicast(void)
+{
+}
+
+static inline void trace_sungem_rx_mac_multicast(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_mac_multicast();
+ }
+}
+
+#define TRACE_SUNGEM_RX_MAC_COMPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_mac_compare(uint32_t mac0, uint32_t mac1, uint32_t mac2)
+{
+}
+
+static inline void trace_sungem_rx_mac_compare(uint32_t mac0, uint32_t mac1, uint32_t mac2)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_mac_compare(mac0, mac1, mac2);
+ }
+}
+
+#define TRACE_SUNGEM_RX_PACKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_packet(size_t size)
+{
+}
+
+static inline void trace_sungem_rx_packet(size_t size)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_packet(size);
+ }
+}
+
+#define TRACE_SUNGEM_RX_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_disabled(void)
+{
+}
+
+static inline void trace_sungem_rx_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_disabled();
+ }
+}
+
+#define TRACE_SUNGEM_RX_BAD_FRAME_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_bad_frame_size(size_t size)
+{
+}
+
+static inline void trace_sungem_rx_bad_frame_size(size_t size)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_bad_frame_size(size);
+ }
+}
+
+#define TRACE_SUNGEM_RX_UNMATCHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_unmatched(void)
+{
+}
+
+static inline void trace_sungem_rx_unmatched(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_unmatched();
+ }
+}
+
+#define TRACE_SUNGEM_RX_PROCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_process(uint32_t done, uint32_t kick, uint32_t size)
+{
+}
+
+static inline void trace_sungem_rx_process(uint32_t done, uint32_t kick, uint32_t size)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_process(done, kick, size);
+ }
+}
+
+#define TRACE_SUNGEM_RX_RINGFULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_ringfull(void)
+{
+}
+
+static inline void trace_sungem_rx_ringfull(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_ringfull();
+ }
+}
+
+#define TRACE_SUNGEM_RX_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_desc(uint64_t control, uint64_t buffer)
+{
+}
+
+static inline void trace_sungem_rx_desc(uint64_t control, uint64_t buffer)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_desc(control, buffer);
+ }
+}
+
+#define TRACE_SUNGEM_RX_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_reset(void)
+{
+}
+
+static inline void trace_sungem_rx_reset(void)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_reset();
+ }
+}
+
+#define TRACE_SUNGEM_RX_KICK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_rx_kick(uint64_t val)
+{
+}
+
+static inline void trace_sungem_rx_kick(uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_rx_kick(val);
+ }
+}
+
+#define TRACE_SUNGEM_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_reset(bool pci_reset)
+{
+}
+
+static inline void trace_sungem_reset(bool pci_reset)
+{
+ if (true) {
+ _nocheck__trace_sungem_reset(pci_reset);
+ }
+}
+
+#define TRACE_SUNGEM_MII_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mii_write(uint8_t phy_addr, uint8_t reg_addr, uint16_t val)
+{
+}
+
+static inline void trace_sungem_mii_write(uint8_t phy_addr, uint8_t reg_addr, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mii_write(phy_addr, reg_addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MII_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mii_read(uint8_t phy_addr, uint8_t reg_addr, uint16_t val)
+{
+}
+
+static inline void trace_sungem_mii_read(uint8_t phy_addr, uint8_t reg_addr, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mii_read(phy_addr, reg_addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MII_INVALID_SOF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mii_invalid_sof(uint32_t val)
+{
+}
+
+static inline void trace_sungem_mii_invalid_sof(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mii_invalid_sof(val);
+ }
+}
+
+#define TRACE_SUNGEM_MII_INVALID_OP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mii_invalid_op(uint8_t op)
+{
+}
+
+static inline void trace_sungem_mii_invalid_op(uint8_t op)
+{
+ if (true) {
+ _nocheck__trace_sungem_mii_invalid_op(op);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_GREG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_greg_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_greg_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_greg_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_GREG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_greg_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_greg_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_greg_read(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_TXDMA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_txdma_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_txdma_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_txdma_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_TXDMA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_txdma_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_txdma_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_txdma_read(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_RXDMA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_rxdma_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_rxdma_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_rxdma_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_RXDMA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_rxdma_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_rxdma_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_rxdma_read(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_MAC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_mac_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_mac_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_mac_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_MAC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_mac_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_mac_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_mac_read(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_MIF_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_mif_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_mif_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_mif_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_MIF_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_mif_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_mif_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_mif_read(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_PCS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_pcs_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_pcs_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_pcs_write(addr, val);
+ }
+}
+
+#define TRACE_SUNGEM_MMIO_PCS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sungem_mmio_pcs_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sungem_mmio_pcs_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sungem_mmio_pcs_read(addr, val);
+ }
+}
+
+#define TRACE_SUNHME_SEB_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_seb_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_seb_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_seb_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_SEB_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_seb_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_seb_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_seb_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_ETX_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_etx_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_etx_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_etx_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_ETX_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_etx_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_etx_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_etx_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_ERX_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_erx_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_erx_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_erx_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_ERX_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_erx_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_erx_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_erx_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MAC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mac_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_mac_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mac_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MAC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mac_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_mac_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mac_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MII_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mii_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_mii_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mii_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MII_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mii_read(uint8_t addr, uint16_t value)
+{
+}
+
+static inline void trace_sunhme_mii_read(uint8_t addr, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mii_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MIF_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mif_write(uint8_t addr, uint16_t value)
+{
+}
+
+static inline void trace_sunhme_mif_write(uint8_t addr, uint16_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mif_write(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_MIF_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_mif_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_sunhme_mif_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_sunhme_mif_read(addr, value);
+ }
+}
+
+#define TRACE_SUNHME_TX_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_tx_desc(uint64_t buffer, uint32_t status, int cr, int nr)
+{
+}
+
+static inline void trace_sunhme_tx_desc(uint64_t buffer, uint32_t status, int cr, int nr)
+{
+ if (true) {
+ _nocheck__trace_sunhme_tx_desc(buffer, status, cr, nr);
+ }
+}
+
+#define TRACE_SUNHME_TX_XSUM_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_tx_xsum_add(int offset, int len)
+{
+}
+
+static inline void trace_sunhme_tx_xsum_add(int offset, int len)
+{
+ if (true) {
+ _nocheck__trace_sunhme_tx_xsum_add(offset, len);
+ }
+}
+
+#define TRACE_SUNHME_TX_XSUM_STUFF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_tx_xsum_stuff(uint16_t xsum, int offset)
+{
+}
+
+static inline void trace_sunhme_tx_xsum_stuff(uint16_t xsum, int offset)
+{
+ if (true) {
+ _nocheck__trace_sunhme_tx_xsum_stuff(xsum, offset);
+ }
+}
+
+#define TRACE_SUNHME_TX_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_tx_done(int len)
+{
+}
+
+static inline void trace_sunhme_tx_done(int len)
+{
+ if (true) {
+ _nocheck__trace_sunhme_tx_done(len);
+ }
+}
+
+#define TRACE_SUNHME_RX_INCOMING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_incoming(size_t len)
+{
+}
+
+static inline void trace_sunhme_rx_incoming(size_t len)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_incoming(len);
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_DESTMAC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_destmac(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+}
+
+static inline void trace_sunhme_rx_filter_destmac(uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_destmac(b0, b1, b2, b3, b4, b5);
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_LOCAL_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_local_match(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_local_match(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_local_match();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_BCAST_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_bcast_match(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_bcast_match(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_bcast_match();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_HASH_NOMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_hash_nomatch(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_hash_nomatch(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_hash_nomatch();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_HASH_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_hash_match(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_hash_match(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_hash_match();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_PROMISC_MATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_promisc_match(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_promisc_match(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_promisc_match();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_REJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_reject(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_reject(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_reject();
+ }
+}
+
+#define TRACE_SUNHME_RX_FILTER_ACCEPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_filter_accept(void)
+{
+}
+
+static inline void trace_sunhme_rx_filter_accept(void)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_filter_accept();
+ }
+}
+
+#define TRACE_SUNHME_RX_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_desc(uint32_t addr, int offset, uint32_t status, int len, int cr, int nr)
+{
+}
+
+static inline void trace_sunhme_rx_desc(uint32_t addr, int offset, uint32_t status, int len, int cr, int nr)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_desc(addr, offset, status, len, cr, nr);
+ }
+}
+
+#define TRACE_SUNHME_RX_XSUM_CALC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sunhme_rx_xsum_calc(uint16_t xsum)
+{
+}
+
+static inline void trace_sunhme_rx_xsum_calc(uint16_t xsum)
+{
+ if (true) {
+ _nocheck__trace_sunhme_rx_xsum_calc(xsum);
+ }
+}
+#endif /* TRACE_HW_NET_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/nvram/trace.c b/qemu2-auto-generated/hw/nvram/trace.c
new file mode 100644
index 0000000000..1f612a95b8
--- /dev/null
+++ b/qemu2-auto-generated/hw/nvram/trace.c
@@ -0,0 +1,59 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_NVRAM_READ_DSTATE;
+uint16_t _TRACE_NVRAM_WRITE_DSTATE;
+uint16_t _TRACE_FW_CFG_SELECT_DSTATE;
+uint16_t _TRACE_FW_CFG_READ_DSTATE;
+uint16_t _TRACE_FW_CFG_ADD_FILE_DSTATE;
+TraceEvent _TRACE_NVRAM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvram_read",
+ .sstate = TRACE_NVRAM_READ_ENABLED,
+ .dstate = &_TRACE_NVRAM_READ_DSTATE
+};
+TraceEvent _TRACE_NVRAM_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nvram_write",
+ .sstate = TRACE_NVRAM_WRITE_ENABLED,
+ .dstate = &_TRACE_NVRAM_WRITE_DSTATE
+};
+TraceEvent _TRACE_FW_CFG_SELECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "fw_cfg_select",
+ .sstate = TRACE_FW_CFG_SELECT_ENABLED,
+ .dstate = &_TRACE_FW_CFG_SELECT_DSTATE
+};
+TraceEvent _TRACE_FW_CFG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "fw_cfg_read",
+ .sstate = TRACE_FW_CFG_READ_ENABLED,
+ .dstate = &_TRACE_FW_CFG_READ_DSTATE
+};
+TraceEvent _TRACE_FW_CFG_ADD_FILE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "fw_cfg_add_file",
+ .sstate = TRACE_FW_CFG_ADD_FILE_ENABLED,
+ .dstate = &_TRACE_FW_CFG_ADD_FILE_DSTATE
+};
+TraceEvent *hw_nvram_trace_events[] = {
+ &_TRACE_NVRAM_READ_EVENT,
+ &_TRACE_NVRAM_WRITE_EVENT,
+ &_TRACE_FW_CFG_SELECT_EVENT,
+ &_TRACE_FW_CFG_READ_EVENT,
+ &_TRACE_FW_CFG_ADD_FILE_EVENT,
+ NULL,
+};
+
+static void trace_hw_nvram_register_events(void)
+{
+ trace_event_register_group(hw_nvram_trace_events);
+}
+trace_init(trace_hw_nvram_register_events)
diff --git a/qemu2-auto-generated/hw/nvram/trace.h b/qemu2-auto-generated/hw/nvram/trace.h
new file mode 100644
index 0000000000..5ed6471d41
--- /dev/null
+++ b/qemu2-auto-generated/hw/nvram/trace.h
@@ -0,0 +1,94 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_NVRAM_GENERATED_TRACERS_H
+#define TRACE_HW_NVRAM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_NVRAM_READ_EVENT;
+extern TraceEvent _TRACE_NVRAM_WRITE_EVENT;
+extern TraceEvent _TRACE_FW_CFG_SELECT_EVENT;
+extern TraceEvent _TRACE_FW_CFG_READ_EVENT;
+extern TraceEvent _TRACE_FW_CFG_ADD_FILE_EVENT;
+extern uint16_t _TRACE_NVRAM_READ_DSTATE;
+extern uint16_t _TRACE_NVRAM_WRITE_DSTATE;
+extern uint16_t _TRACE_FW_CFG_SELECT_DSTATE;
+extern uint16_t _TRACE_FW_CFG_READ_DSTATE;
+extern uint16_t _TRACE_FW_CFG_ADD_FILE_DSTATE;
+#define TRACE_NVRAM_READ_ENABLED 1
+#define TRACE_NVRAM_WRITE_ENABLED 1
+#define TRACE_FW_CFG_SELECT_ENABLED 1
+#define TRACE_FW_CFG_READ_ENABLED 1
+#define TRACE_FW_CFG_ADD_FILE_ENABLED 1
+
+#define TRACE_NVRAM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvram_read(uint32_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_nvram_read(uint32_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_nvram_read(addr, ret);
+ }
+}
+
+#define TRACE_NVRAM_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nvram_write(uint32_t addr, uint32_t old, uint32_t val)
+{
+}
+
+static inline void trace_nvram_write(uint32_t addr, uint32_t old, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_nvram_write(addr, old, val);
+ }
+}
+
+#define TRACE_FW_CFG_SELECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_fw_cfg_select(void * s, uint16_t key, int ret)
+{
+}
+
+static inline void trace_fw_cfg_select(void * s, uint16_t key, int ret)
+{
+ if (true) {
+ _nocheck__trace_fw_cfg_select(s, key, ret);
+ }
+}
+
+#define TRACE_FW_CFG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_fw_cfg_read(void * s, uint64_t ret)
+{
+}
+
+static inline void trace_fw_cfg_read(void * s, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_fw_cfg_read(s, ret);
+ }
+}
+
+#define TRACE_FW_CFG_ADD_FILE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_fw_cfg_add_file(void * s, int index, char * name, size_t len)
+{
+}
+
+static inline void trace_fw_cfg_add_file(void * s, int index, char * name, size_t len)
+{
+ if (true) {
+ _nocheck__trace_fw_cfg_add_file(s, index, name, len);
+ }
+}
+#endif /* TRACE_HW_NVRAM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/pci-host/trace.c b/qemu2-auto-generated/hw/pci-host/trace.c
new file mode 100644
index 0000000000..4379a9c36b
--- /dev/null
+++ b/qemu2-auto-generated/hw/pci-host/trace.c
@@ -0,0 +1,131 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_GRACKLE_SET_IRQ_DSTATE;
+uint16_t _TRACE_SABRE_SET_REQUEST_DSTATE;
+uint16_t _TRACE_SABRE_CLEAR_REQUEST_DSTATE;
+uint16_t _TRACE_SABRE_CONFIG_WRITE_DSTATE;
+uint16_t _TRACE_SABRE_CONFIG_READ_DSTATE;
+uint16_t _TRACE_SABRE_PCI_CONFIG_WRITE_DSTATE;
+uint16_t _TRACE_SABRE_PCI_CONFIG_READ_DSTATE;
+uint16_t _TRACE_SABRE_PCI_SET_IRQ_DSTATE;
+uint16_t _TRACE_SABRE_PCI_SET_OBIO_IRQ_DSTATE;
+uint16_t _TRACE_UNIN_SET_IRQ_DSTATE;
+uint16_t _TRACE_UNIN_GET_CONFIG_REG_DSTATE;
+uint16_t _TRACE_UNIN_DATA_WRITE_DSTATE;
+uint16_t _TRACE_UNIN_DATA_READ_DSTATE;
+TraceEvent _TRACE_GRACKLE_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grackle_set_irq",
+ .sstate = TRACE_GRACKLE_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_GRACKLE_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SABRE_SET_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_set_request",
+ .sstate = TRACE_SABRE_SET_REQUEST_ENABLED,
+ .dstate = &_TRACE_SABRE_SET_REQUEST_DSTATE
+};
+TraceEvent _TRACE_SABRE_CLEAR_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_clear_request",
+ .sstate = TRACE_SABRE_CLEAR_REQUEST_ENABLED,
+ .dstate = &_TRACE_SABRE_CLEAR_REQUEST_DSTATE
+};
+TraceEvent _TRACE_SABRE_CONFIG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_config_write",
+ .sstate = TRACE_SABRE_CONFIG_WRITE_ENABLED,
+ .dstate = &_TRACE_SABRE_CONFIG_WRITE_DSTATE
+};
+TraceEvent _TRACE_SABRE_CONFIG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_config_read",
+ .sstate = TRACE_SABRE_CONFIG_READ_ENABLED,
+ .dstate = &_TRACE_SABRE_CONFIG_READ_DSTATE
+};
+TraceEvent _TRACE_SABRE_PCI_CONFIG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_pci_config_write",
+ .sstate = TRACE_SABRE_PCI_CONFIG_WRITE_ENABLED,
+ .dstate = &_TRACE_SABRE_PCI_CONFIG_WRITE_DSTATE
+};
+TraceEvent _TRACE_SABRE_PCI_CONFIG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_pci_config_read",
+ .sstate = TRACE_SABRE_PCI_CONFIG_READ_ENABLED,
+ .dstate = &_TRACE_SABRE_PCI_CONFIG_READ_DSTATE
+};
+TraceEvent _TRACE_SABRE_PCI_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_pci_set_irq",
+ .sstate = TRACE_SABRE_PCI_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_SABRE_PCI_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SABRE_PCI_SET_OBIO_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sabre_pci_set_obio_irq",
+ .sstate = TRACE_SABRE_PCI_SET_OBIO_IRQ_ENABLED,
+ .dstate = &_TRACE_SABRE_PCI_SET_OBIO_IRQ_DSTATE
+};
+TraceEvent _TRACE_UNIN_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "unin_set_irq",
+ .sstate = TRACE_UNIN_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_UNIN_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_UNIN_GET_CONFIG_REG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "unin_get_config_reg",
+ .sstate = TRACE_UNIN_GET_CONFIG_REG_ENABLED,
+ .dstate = &_TRACE_UNIN_GET_CONFIG_REG_DSTATE
+};
+TraceEvent _TRACE_UNIN_DATA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "unin_data_write",
+ .sstate = TRACE_UNIN_DATA_WRITE_ENABLED,
+ .dstate = &_TRACE_UNIN_DATA_WRITE_DSTATE
+};
+TraceEvent _TRACE_UNIN_DATA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "unin_data_read",
+ .sstate = TRACE_UNIN_DATA_READ_ENABLED,
+ .dstate = &_TRACE_UNIN_DATA_READ_DSTATE
+};
+TraceEvent *hw_pci_host_trace_events[] = {
+ &_TRACE_GRACKLE_SET_IRQ_EVENT,
+ &_TRACE_SABRE_SET_REQUEST_EVENT,
+ &_TRACE_SABRE_CLEAR_REQUEST_EVENT,
+ &_TRACE_SABRE_CONFIG_WRITE_EVENT,
+ &_TRACE_SABRE_CONFIG_READ_EVENT,
+ &_TRACE_SABRE_PCI_CONFIG_WRITE_EVENT,
+ &_TRACE_SABRE_PCI_CONFIG_READ_EVENT,
+ &_TRACE_SABRE_PCI_SET_IRQ_EVENT,
+ &_TRACE_SABRE_PCI_SET_OBIO_IRQ_EVENT,
+ &_TRACE_UNIN_SET_IRQ_EVENT,
+ &_TRACE_UNIN_GET_CONFIG_REG_EVENT,
+ &_TRACE_UNIN_DATA_WRITE_EVENT,
+ &_TRACE_UNIN_DATA_READ_EVENT,
+ NULL,
+};
+
+static void trace_hw_pci_host_register_events(void)
+{
+ trace_event_register_group(hw_pci_host_trace_events);
+}
+trace_init(trace_hw_pci_host_register_events)
diff --git a/qemu2-auto-generated/hw/pci-host/trace.h b/qemu2-auto-generated/hw/pci-host/trace.h
new file mode 100644
index 0000000000..6eeba51544
--- /dev/null
+++ b/qemu2-auto-generated/hw/pci-host/trace.h
@@ -0,0 +1,230 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_PCI_HOST_GENERATED_TRACERS_H
+#define TRACE_HW_PCI_HOST_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_GRACKLE_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_SABRE_SET_REQUEST_EVENT;
+extern TraceEvent _TRACE_SABRE_CLEAR_REQUEST_EVENT;
+extern TraceEvent _TRACE_SABRE_CONFIG_WRITE_EVENT;
+extern TraceEvent _TRACE_SABRE_CONFIG_READ_EVENT;
+extern TraceEvent _TRACE_SABRE_PCI_CONFIG_WRITE_EVENT;
+extern TraceEvent _TRACE_SABRE_PCI_CONFIG_READ_EVENT;
+extern TraceEvent _TRACE_SABRE_PCI_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_SABRE_PCI_SET_OBIO_IRQ_EVENT;
+extern TraceEvent _TRACE_UNIN_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_UNIN_GET_CONFIG_REG_EVENT;
+extern TraceEvent _TRACE_UNIN_DATA_WRITE_EVENT;
+extern TraceEvent _TRACE_UNIN_DATA_READ_EVENT;
+extern uint16_t _TRACE_GRACKLE_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_SABRE_SET_REQUEST_DSTATE;
+extern uint16_t _TRACE_SABRE_CLEAR_REQUEST_DSTATE;
+extern uint16_t _TRACE_SABRE_CONFIG_WRITE_DSTATE;
+extern uint16_t _TRACE_SABRE_CONFIG_READ_DSTATE;
+extern uint16_t _TRACE_SABRE_PCI_CONFIG_WRITE_DSTATE;
+extern uint16_t _TRACE_SABRE_PCI_CONFIG_READ_DSTATE;
+extern uint16_t _TRACE_SABRE_PCI_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_SABRE_PCI_SET_OBIO_IRQ_DSTATE;
+extern uint16_t _TRACE_UNIN_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_UNIN_GET_CONFIG_REG_DSTATE;
+extern uint16_t _TRACE_UNIN_DATA_WRITE_DSTATE;
+extern uint16_t _TRACE_UNIN_DATA_READ_DSTATE;
+#define TRACE_GRACKLE_SET_IRQ_ENABLED 1
+#define TRACE_SABRE_SET_REQUEST_ENABLED 1
+#define TRACE_SABRE_CLEAR_REQUEST_ENABLED 1
+#define TRACE_SABRE_CONFIG_WRITE_ENABLED 1
+#define TRACE_SABRE_CONFIG_READ_ENABLED 1
+#define TRACE_SABRE_PCI_CONFIG_WRITE_ENABLED 1
+#define TRACE_SABRE_PCI_CONFIG_READ_ENABLED 1
+#define TRACE_SABRE_PCI_SET_IRQ_ENABLED 1
+#define TRACE_SABRE_PCI_SET_OBIO_IRQ_ENABLED 1
+#define TRACE_UNIN_SET_IRQ_ENABLED 1
+#define TRACE_UNIN_GET_CONFIG_REG_ENABLED 1
+#define TRACE_UNIN_DATA_WRITE_ENABLED 1
+#define TRACE_UNIN_DATA_READ_ENABLED 1
+
+#define TRACE_GRACKLE_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grackle_set_irq(int irq_num, int level)
+{
+}
+
+static inline void trace_grackle_set_irq(int irq_num, int level)
+{
+ if (true) {
+ _nocheck__trace_grackle_set_irq(irq_num, level);
+ }
+}
+
+#define TRACE_SABRE_SET_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_set_request(int irq_num)
+{
+}
+
+static inline void trace_sabre_set_request(int irq_num)
+{
+ if (true) {
+ _nocheck__trace_sabre_set_request(irq_num);
+ }
+}
+
+#define TRACE_SABRE_CLEAR_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_clear_request(int irq_num)
+{
+}
+
+static inline void trace_sabre_clear_request(int irq_num)
+{
+ if (true) {
+ _nocheck__trace_sabre_clear_request(irq_num);
+ }
+}
+
+#define TRACE_SABRE_CONFIG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_config_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sabre_config_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sabre_config_write(addr, val);
+ }
+}
+
+#define TRACE_SABRE_CONFIG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_config_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sabre_config_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sabre_config_read(addr, val);
+ }
+}
+
+#define TRACE_SABRE_PCI_CONFIG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_pci_config_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sabre_pci_config_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sabre_pci_config_write(addr, val);
+ }
+}
+
+#define TRACE_SABRE_PCI_CONFIG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_pci_config_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_sabre_pci_config_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_sabre_pci_config_read(addr, val);
+ }
+}
+
+#define TRACE_SABRE_PCI_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_pci_set_irq(int irq_num, int level)
+{
+}
+
+static inline void trace_sabre_pci_set_irq(int irq_num, int level)
+{
+ if (true) {
+ _nocheck__trace_sabre_pci_set_irq(irq_num, level);
+ }
+}
+
+#define TRACE_SABRE_PCI_SET_OBIO_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sabre_pci_set_obio_irq(int irq_num, int level)
+{
+}
+
+static inline void trace_sabre_pci_set_obio_irq(int irq_num, int level)
+{
+ if (true) {
+ _nocheck__trace_sabre_pci_set_obio_irq(irq_num, level);
+ }
+}
+
+#define TRACE_UNIN_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_unin_set_irq(int irq_num, int level)
+{
+}
+
+static inline void trace_unin_set_irq(int irq_num, int level)
+{
+ if (true) {
+ _nocheck__trace_unin_set_irq(irq_num, level);
+ }
+}
+
+#define TRACE_UNIN_GET_CONFIG_REG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_unin_get_config_reg(uint32_t reg, uint32_t addr, uint32_t retval)
+{
+}
+
+static inline void trace_unin_get_config_reg(uint32_t reg, uint32_t addr, uint32_t retval)
+{
+ if (true) {
+ _nocheck__trace_unin_get_config_reg(reg, addr, retval);
+ }
+}
+
+#define TRACE_UNIN_DATA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_unin_data_write(uint64_t addr, unsigned len, uint64_t val)
+{
+}
+
+static inline void trace_unin_data_write(uint64_t addr, unsigned len, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_unin_data_write(addr, len, val);
+ }
+}
+
+#define TRACE_UNIN_DATA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_unin_data_read(uint64_t addr, unsigned len, uint64_t val)
+{
+}
+
+static inline void trace_unin_data_read(uint64_t addr, unsigned len, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_unin_data_read(addr, len, val);
+ }
+}
+#endif /* TRACE_HW_PCI_HOST_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/pci/trace.c b/qemu2-auto-generated/hw/pci/trace.c
new file mode 100644
index 0000000000..7930079a76
--- /dev/null
+++ b/qemu2-auto-generated/hw/pci/trace.c
@@ -0,0 +1,59 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_PCI_UPDATE_MAPPINGS_DEL_DSTATE;
+uint16_t _TRACE_PCI_UPDATE_MAPPINGS_ADD_DSTATE;
+uint16_t _TRACE_PCI_CFG_READ_DSTATE;
+uint16_t _TRACE_PCI_CFG_WRITE_DSTATE;
+uint16_t _TRACE_MSIX_WRITE_CONFIG_DSTATE;
+TraceEvent _TRACE_PCI_UPDATE_MAPPINGS_DEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pci_update_mappings_del",
+ .sstate = TRACE_PCI_UPDATE_MAPPINGS_DEL_ENABLED,
+ .dstate = &_TRACE_PCI_UPDATE_MAPPINGS_DEL_DSTATE
+};
+TraceEvent _TRACE_PCI_UPDATE_MAPPINGS_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pci_update_mappings_add",
+ .sstate = TRACE_PCI_UPDATE_MAPPINGS_ADD_ENABLED,
+ .dstate = &_TRACE_PCI_UPDATE_MAPPINGS_ADD_DSTATE
+};
+TraceEvent _TRACE_PCI_CFG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pci_cfg_read",
+ .sstate = TRACE_PCI_CFG_READ_ENABLED,
+ .dstate = &_TRACE_PCI_CFG_READ_DSTATE
+};
+TraceEvent _TRACE_PCI_CFG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pci_cfg_write",
+ .sstate = TRACE_PCI_CFG_WRITE_ENABLED,
+ .dstate = &_TRACE_PCI_CFG_WRITE_DSTATE
+};
+TraceEvent _TRACE_MSIX_WRITE_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "msix_write_config",
+ .sstate = TRACE_MSIX_WRITE_CONFIG_ENABLED,
+ .dstate = &_TRACE_MSIX_WRITE_CONFIG_DSTATE
+};
+TraceEvent *hw_pci_trace_events[] = {
+ &_TRACE_PCI_UPDATE_MAPPINGS_DEL_EVENT,
+ &_TRACE_PCI_UPDATE_MAPPINGS_ADD_EVENT,
+ &_TRACE_PCI_CFG_READ_EVENT,
+ &_TRACE_PCI_CFG_WRITE_EVENT,
+ &_TRACE_MSIX_WRITE_CONFIG_EVENT,
+ NULL,
+};
+
+static void trace_hw_pci_register_events(void)
+{
+ trace_event_register_group(hw_pci_trace_events);
+}
+trace_init(trace_hw_pci_register_events)
diff --git a/qemu2-auto-generated/hw/pci/trace.h b/qemu2-auto-generated/hw/pci/trace.h
new file mode 100644
index 0000000000..224fe76a8b
--- /dev/null
+++ b/qemu2-auto-generated/hw/pci/trace.h
@@ -0,0 +1,94 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_PCI_GENERATED_TRACERS_H
+#define TRACE_HW_PCI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_PCI_UPDATE_MAPPINGS_DEL_EVENT;
+extern TraceEvent _TRACE_PCI_UPDATE_MAPPINGS_ADD_EVENT;
+extern TraceEvent _TRACE_PCI_CFG_READ_EVENT;
+extern TraceEvent _TRACE_PCI_CFG_WRITE_EVENT;
+extern TraceEvent _TRACE_MSIX_WRITE_CONFIG_EVENT;
+extern uint16_t _TRACE_PCI_UPDATE_MAPPINGS_DEL_DSTATE;
+extern uint16_t _TRACE_PCI_UPDATE_MAPPINGS_ADD_DSTATE;
+extern uint16_t _TRACE_PCI_CFG_READ_DSTATE;
+extern uint16_t _TRACE_PCI_CFG_WRITE_DSTATE;
+extern uint16_t _TRACE_MSIX_WRITE_CONFIG_DSTATE;
+#define TRACE_PCI_UPDATE_MAPPINGS_DEL_ENABLED 1
+#define TRACE_PCI_UPDATE_MAPPINGS_ADD_ENABLED 1
+#define TRACE_PCI_CFG_READ_ENABLED 1
+#define TRACE_PCI_CFG_WRITE_ENABLED 1
+#define TRACE_MSIX_WRITE_CONFIG_ENABLED 1
+
+#define TRACE_PCI_UPDATE_MAPPINGS_DEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pci_update_mappings_del(void * d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size)
+{
+}
+
+static inline void trace_pci_update_mappings_del(void * d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_pci_update_mappings_del(d, bus, slot, func, bar, addr, size);
+ }
+}
+
+#define TRACE_PCI_UPDATE_MAPPINGS_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pci_update_mappings_add(void * d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size)
+{
+}
+
+static inline void trace_pci_update_mappings_add(void * d, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_pci_update_mappings_add(d, bus, slot, func, bar, addr, size);
+ }
+}
+
+#define TRACE_PCI_CFG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pci_cfg_read(const char * dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val)
+{
+}
+
+static inline void trace_pci_cfg_read(const char * dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val)
+{
+ if (true) {
+ _nocheck__trace_pci_cfg_read(dev, devid, fnid, offs, val);
+ }
+}
+
+#define TRACE_PCI_CFG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pci_cfg_write(const char * dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val)
+{
+}
+
+static inline void trace_pci_cfg_write(const char * dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val)
+{
+ if (true) {
+ _nocheck__trace_pci_cfg_write(dev, devid, fnid, offs, val);
+ }
+}
+
+#define TRACE_MSIX_WRITE_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_msix_write_config(char * name, bool enabled, bool masked)
+{
+}
+
+static inline void trace_msix_write_config(char * name, bool enabled, bool masked)
+{
+ if (true) {
+ _nocheck__trace_msix_write_config(name, enabled, masked);
+ }
+}
+#endif /* TRACE_HW_PCI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/ppc/trace.c b/qemu2-auto-generated/hw/ppc/trace.c
new file mode 100644
index 0000000000..c4c0a2ef23
--- /dev/null
+++ b/qemu2-auto-generated/hw/ppc/trace.c
@@ -0,0 +1,716 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_SPAPR_PCI_MSI_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_MSI_SETUP_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_MSI_WRITE_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_LSI_SET_DSTATE;
+uint16_t _TRACE_SPAPR_PCI_MSI_RETRY_DSTATE;
+uint16_t _TRACE_SPAPR_CAS_FAILED_DSTATE;
+uint16_t _TRACE_SPAPR_CAS_CONTINUE_DSTATE;
+uint16_t _TRACE_SPAPR_IRQ_ALLOC_DSTATE;
+uint16_t _TRACE_SPAPR_IRQ_ALLOC_BLOCK_DSTATE;
+uint16_t _TRACE_SPAPR_IRQ_FREE_DSTATE;
+uint16_t _TRACE_SPAPR_IRQ_FREE_WARN_DSTATE;
+uint16_t _TRACE_SPAPR_CAS_PVR_TRY_DSTATE;
+uint16_t _TRACE_SPAPR_CAS_PVR_DSTATE;
+uint16_t _TRACE_SPAPR_H_RESIZE_HPT_PREPARE_DSTATE;
+uint16_t _TRACE_SPAPR_H_RESIZE_HPT_COMMIT_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PUT_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_GET_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_INDIRECT_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_STUFF_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PCI_PUT_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PCI_GET_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PCI_INDIRECT_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PCI_STUFF_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_XLATE_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_NEW_TABLE_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_PRE_SAVE_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_POST_LOAD_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_DDW_QUERY_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_DDW_CREATE_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_DDW_REMOVE_DSTATE;
+uint16_t _TRACE_SPAPR_IOMMU_DDW_RESET_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_DR_INDICATOR_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_CONFIGURED_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_ATTACH_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_DETACH_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_AWAITING_QUIESCE_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_AWAITING_ALLOCATION_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_RESET_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_REALIZE_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_REALIZE_CHILD_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_REALIZE_COMPLETE_DSTATE;
+uint16_t _TRACE_SPAPR_DRC_UNREALIZE_DSTATE;
+uint16_t _TRACE_SPAPR_OVEC_PARSE_VECTOR_DSTATE;
+uint16_t _TRACE_SPAPR_OVEC_POPULATE_DT_DSTATE;
+uint16_t _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_DSTATE;
+uint16_t _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_DSTATE;
+uint16_t _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_DSTATE;
+uint16_t _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_DSTATE;
+uint16_t _TRACE_SPAPR_VIO_H_REG_CRQ_DSTATE;
+uint16_t _TRACE_SPAPR_VIO_FREE_CRQ_DSTATE;
+uint16_t _TRACE_PPC_TB_ADJUST_DSTATE;
+uint16_t _TRACE_PREP_IO_800_WRITEB_DSTATE;
+uint16_t _TRACE_PREP_IO_800_READB_DSTATE;
+uint16_t _TRACE_PREP_SYSTEMIO_READ_DSTATE;
+uint16_t _TRACE_PREP_SYSTEMIO_WRITE_DSTATE;
+uint16_t _TRACE_RS6000MC_ID_READ_DSTATE;
+uint16_t _TRACE_RS6000MC_PRESENCE_READ_DSTATE;
+uint16_t _TRACE_RS6000MC_SIZE_READ_DSTATE;
+uint16_t _TRACE_RS6000MC_SIZE_WRITE_DSTATE;
+uint16_t _TRACE_RS6000MC_PARITY_READ_DSTATE;
+uint16_t _TRACE_MAC99_UNINORTH_WRITE_DSTATE;
+uint16_t _TRACE_MAC99_UNINORTH_READ_DSTATE;
+uint16_t _TRACE_PPC4XX_PCI_MAP_IRQ_DSTATE;
+uint16_t _TRACE_PPC4XX_PCI_SET_IRQ_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_MAP_IRQ_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_SET_IRQ_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_UPDATE_PIM_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_UPDATE_POM_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_REG_READ_DSTATE;
+uint16_t _TRACE_PPC440_PCIX_REG_WRITE_DSTATE;
+TraceEvent _TRACE_SPAPR_PCI_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_msi",
+ .sstate = TRACE_SPAPR_PCI_MSI_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_MSI_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_MSI_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_msi_setup",
+ .sstate = TRACE_SPAPR_PCI_MSI_SETUP_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_MSI_SETUP_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_rtas_ibm_change_msi",
+ .sstate = TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_rtas_ibm_query_interrupt_source_number",
+ .sstate = TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_MSI_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_msi_write",
+ .sstate = TRACE_SPAPR_PCI_MSI_WRITE_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_MSI_WRITE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_LSI_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_lsi_set",
+ .sstate = TRACE_SPAPR_PCI_LSI_SET_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_LSI_SET_DSTATE
+};
+TraceEvent _TRACE_SPAPR_PCI_MSI_RETRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_pci_msi_retry",
+ .sstate = TRACE_SPAPR_PCI_MSI_RETRY_ENABLED,
+ .dstate = &_TRACE_SPAPR_PCI_MSI_RETRY_DSTATE
+};
+TraceEvent _TRACE_SPAPR_CAS_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_cas_failed",
+ .sstate = TRACE_SPAPR_CAS_FAILED_ENABLED,
+ .dstate = &_TRACE_SPAPR_CAS_FAILED_DSTATE
+};
+TraceEvent _TRACE_SPAPR_CAS_CONTINUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_cas_continue",
+ .sstate = TRACE_SPAPR_CAS_CONTINUE_ENABLED,
+ .dstate = &_TRACE_SPAPR_CAS_CONTINUE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IRQ_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_irq_alloc",
+ .sstate = TRACE_SPAPR_IRQ_ALLOC_ENABLED,
+ .dstate = &_TRACE_SPAPR_IRQ_ALLOC_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IRQ_ALLOC_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_irq_alloc_block",
+ .sstate = TRACE_SPAPR_IRQ_ALLOC_BLOCK_ENABLED,
+ .dstate = &_TRACE_SPAPR_IRQ_ALLOC_BLOCK_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IRQ_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_irq_free",
+ .sstate = TRACE_SPAPR_IRQ_FREE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IRQ_FREE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IRQ_FREE_WARN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_irq_free_warn",
+ .sstate = TRACE_SPAPR_IRQ_FREE_WARN_ENABLED,
+ .dstate = &_TRACE_SPAPR_IRQ_FREE_WARN_DSTATE
+};
+TraceEvent _TRACE_SPAPR_CAS_PVR_TRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_cas_pvr_try",
+ .sstate = TRACE_SPAPR_CAS_PVR_TRY_ENABLED,
+ .dstate = &_TRACE_SPAPR_CAS_PVR_TRY_DSTATE
+};
+TraceEvent _TRACE_SPAPR_CAS_PVR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_cas_pvr",
+ .sstate = TRACE_SPAPR_CAS_PVR_ENABLED,
+ .dstate = &_TRACE_SPAPR_CAS_PVR_DSTATE
+};
+TraceEvent _TRACE_SPAPR_H_RESIZE_HPT_PREPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_h_resize_hpt_prepare",
+ .sstate = TRACE_SPAPR_H_RESIZE_HPT_PREPARE_ENABLED,
+ .dstate = &_TRACE_SPAPR_H_RESIZE_HPT_PREPARE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_H_RESIZE_HPT_COMMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_h_resize_hpt_commit",
+ .sstate = TRACE_SPAPR_H_RESIZE_HPT_COMMIT_ENABLED,
+ .dstate = &_TRACE_SPAPR_H_RESIZE_HPT_COMMIT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_put",
+ .sstate = TRACE_SPAPR_IOMMU_PUT_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PUT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_get",
+ .sstate = TRACE_SPAPR_IOMMU_GET_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_GET_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_INDIRECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_indirect",
+ .sstate = TRACE_SPAPR_IOMMU_INDIRECT_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_INDIRECT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_STUFF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_stuff",
+ .sstate = TRACE_SPAPR_IOMMU_STUFF_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_STUFF_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PCI_PUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_pci_put",
+ .sstate = TRACE_SPAPR_IOMMU_PCI_PUT_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PCI_PUT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PCI_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_pci_get",
+ .sstate = TRACE_SPAPR_IOMMU_PCI_GET_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PCI_GET_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PCI_INDIRECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_pci_indirect",
+ .sstate = TRACE_SPAPR_IOMMU_PCI_INDIRECT_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PCI_INDIRECT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PCI_STUFF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_pci_stuff",
+ .sstate = TRACE_SPAPR_IOMMU_PCI_STUFF_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PCI_STUFF_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_XLATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_xlate",
+ .sstate = TRACE_SPAPR_IOMMU_XLATE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_XLATE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_NEW_TABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_new_table",
+ .sstate = TRACE_SPAPR_IOMMU_NEW_TABLE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_NEW_TABLE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_PRE_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_pre_save",
+ .sstate = TRACE_SPAPR_IOMMU_PRE_SAVE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_PRE_SAVE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_POST_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_post_load",
+ .sstate = TRACE_SPAPR_IOMMU_POST_LOAD_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_POST_LOAD_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_DDW_QUERY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_ddw_query",
+ .sstate = TRACE_SPAPR_IOMMU_DDW_QUERY_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_DDW_QUERY_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_DDW_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_ddw_create",
+ .sstate = TRACE_SPAPR_IOMMU_DDW_CREATE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_DDW_CREATE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_DDW_REMOVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_ddw_remove",
+ .sstate = TRACE_SPAPR_IOMMU_DDW_REMOVE_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_DDW_REMOVE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_IOMMU_DDW_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_iommu_ddw_reset",
+ .sstate = TRACE_SPAPR_IOMMU_DDW_RESET_ENABLED,
+ .dstate = &_TRACE_SPAPR_IOMMU_DDW_RESET_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_isolation_state",
+ .sstate = TRACE_SPAPR_DRC_SET_ISOLATION_STATE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_isolation_state_finalizing",
+ .sstate = TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_isolation_state_deferring",
+ .sstate = TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_DR_INDICATOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_dr_indicator",
+ .sstate = TRACE_SPAPR_DRC_SET_DR_INDICATOR_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_DR_INDICATOR_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_allocation_state",
+ .sstate = TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_allocation_state_finalizing",
+ .sstate = TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_CONFIGURED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_configured",
+ .sstate = TRACE_SPAPR_DRC_SET_CONFIGURED_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_CONFIGURED_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_set_configured_skipping",
+ .sstate = TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_attach",
+ .sstate = TRACE_SPAPR_DRC_ATTACH_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_ATTACH_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_detach",
+ .sstate = TRACE_SPAPR_DRC_DETACH_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_DETACH_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_AWAITING_QUIESCE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_awaiting_quiesce",
+ .sstate = TRACE_SPAPR_DRC_AWAITING_QUIESCE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_AWAITING_QUIESCE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_AWAITING_ALLOCATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_awaiting_allocation",
+ .sstate = TRACE_SPAPR_DRC_AWAITING_ALLOCATION_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_AWAITING_ALLOCATION_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_reset",
+ .sstate = TRACE_SPAPR_DRC_RESET_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_RESET_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_REALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_realize",
+ .sstate = TRACE_SPAPR_DRC_REALIZE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_REALIZE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_REALIZE_CHILD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_realize_child",
+ .sstate = TRACE_SPAPR_DRC_REALIZE_CHILD_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_REALIZE_CHILD_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_REALIZE_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_realize_complete",
+ .sstate = TRACE_SPAPR_DRC_REALIZE_COMPLETE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_REALIZE_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_DRC_UNREALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_drc_unrealize",
+ .sstate = TRACE_SPAPR_DRC_UNREALIZE_ENABLED,
+ .dstate = &_TRACE_SPAPR_DRC_UNREALIZE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_OVEC_PARSE_VECTOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_ovec_parse_vector",
+ .sstate = TRACE_SPAPR_OVEC_PARSE_VECTOR_ENABLED,
+ .dstate = &_TRACE_SPAPR_OVEC_PARSE_VECTOR_DSTATE
+};
+TraceEvent _TRACE_SPAPR_OVEC_POPULATE_DT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_ovec_populate_dt",
+ .sstate = TRACE_SPAPR_OVEC_POPULATE_DT_ENABLED,
+ .dstate = &_TRACE_SPAPR_OVEC_POPULATE_DT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_rtas_get_sensor_state_not_supported",
+ .sstate = TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_ENABLED,
+ .dstate = &_TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_DSTATE
+};
+TraceEvent _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_rtas_get_sensor_state_invalid",
+ .sstate = TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_ENABLED,
+ .dstate = &_TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_DSTATE
+};
+TraceEvent _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_rtas_ibm_configure_connector_invalid",
+ .sstate = TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_ENABLED,
+ .dstate = &_TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_DSTATE
+};
+TraceEvent _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_rtas_ibm_configure_connector_missing_fdt",
+ .sstate = TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_ENABLED,
+ .dstate = &_TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VIO_H_REG_CRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vio_h_reg_crq",
+ .sstate = TRACE_SPAPR_VIO_H_REG_CRQ_ENABLED,
+ .dstate = &_TRACE_SPAPR_VIO_H_REG_CRQ_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VIO_FREE_CRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vio_free_crq",
+ .sstate = TRACE_SPAPR_VIO_FREE_CRQ_ENABLED,
+ .dstate = &_TRACE_SPAPR_VIO_FREE_CRQ_DSTATE
+};
+TraceEvent _TRACE_PPC_TB_ADJUST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc_tb_adjust",
+ .sstate = TRACE_PPC_TB_ADJUST_ENABLED,
+ .dstate = &_TRACE_PPC_TB_ADJUST_DSTATE
+};
+TraceEvent _TRACE_PREP_IO_800_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "prep_io_800_writeb",
+ .sstate = TRACE_PREP_IO_800_WRITEB_ENABLED,
+ .dstate = &_TRACE_PREP_IO_800_WRITEB_DSTATE
+};
+TraceEvent _TRACE_PREP_IO_800_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "prep_io_800_readb",
+ .sstate = TRACE_PREP_IO_800_READB_ENABLED,
+ .dstate = &_TRACE_PREP_IO_800_READB_DSTATE
+};
+TraceEvent _TRACE_PREP_SYSTEMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "prep_systemio_read",
+ .sstate = TRACE_PREP_SYSTEMIO_READ_ENABLED,
+ .dstate = &_TRACE_PREP_SYSTEMIO_READ_DSTATE
+};
+TraceEvent _TRACE_PREP_SYSTEMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "prep_systemio_write",
+ .sstate = TRACE_PREP_SYSTEMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_PREP_SYSTEMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_RS6000MC_ID_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rs6000mc_id_read",
+ .sstate = TRACE_RS6000MC_ID_READ_ENABLED,
+ .dstate = &_TRACE_RS6000MC_ID_READ_DSTATE
+};
+TraceEvent _TRACE_RS6000MC_PRESENCE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rs6000mc_presence_read",
+ .sstate = TRACE_RS6000MC_PRESENCE_READ_ENABLED,
+ .dstate = &_TRACE_RS6000MC_PRESENCE_READ_DSTATE
+};
+TraceEvent _TRACE_RS6000MC_SIZE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rs6000mc_size_read",
+ .sstate = TRACE_RS6000MC_SIZE_READ_ENABLED,
+ .dstate = &_TRACE_RS6000MC_SIZE_READ_DSTATE
+};
+TraceEvent _TRACE_RS6000MC_SIZE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rs6000mc_size_write",
+ .sstate = TRACE_RS6000MC_SIZE_WRITE_ENABLED,
+ .dstate = &_TRACE_RS6000MC_SIZE_WRITE_DSTATE
+};
+TraceEvent _TRACE_RS6000MC_PARITY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rs6000mc_parity_read",
+ .sstate = TRACE_RS6000MC_PARITY_READ_ENABLED,
+ .dstate = &_TRACE_RS6000MC_PARITY_READ_DSTATE
+};
+TraceEvent _TRACE_MAC99_UNINORTH_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mac99_uninorth_write",
+ .sstate = TRACE_MAC99_UNINORTH_WRITE_ENABLED,
+ .dstate = &_TRACE_MAC99_UNINORTH_WRITE_DSTATE
+};
+TraceEvent _TRACE_MAC99_UNINORTH_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mac99_uninorth_read",
+ .sstate = TRACE_MAC99_UNINORTH_READ_ENABLED,
+ .dstate = &_TRACE_MAC99_UNINORTH_READ_DSTATE
+};
+TraceEvent _TRACE_PPC4XX_PCI_MAP_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc4xx_pci_map_irq",
+ .sstate = TRACE_PPC4XX_PCI_MAP_IRQ_ENABLED,
+ .dstate = &_TRACE_PPC4XX_PCI_MAP_IRQ_DSTATE
+};
+TraceEvent _TRACE_PPC4XX_PCI_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc4xx_pci_set_irq",
+ .sstate = TRACE_PPC4XX_PCI_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_PPC4XX_PCI_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_MAP_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_map_irq",
+ .sstate = TRACE_PPC440_PCIX_MAP_IRQ_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_MAP_IRQ_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_set_irq",
+ .sstate = TRACE_PPC440_PCIX_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_UPDATE_PIM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_update_pim",
+ .sstate = TRACE_PPC440_PCIX_UPDATE_PIM_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_UPDATE_PIM_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_UPDATE_POM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_update_pom",
+ .sstate = TRACE_PPC440_PCIX_UPDATE_POM_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_UPDATE_POM_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_REG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_reg_read",
+ .sstate = TRACE_PPC440_PCIX_REG_READ_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_REG_READ_DSTATE
+};
+TraceEvent _TRACE_PPC440_PCIX_REG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppc440_pcix_reg_write",
+ .sstate = TRACE_PPC440_PCIX_REG_WRITE_ENABLED,
+ .dstate = &_TRACE_PPC440_PCIX_REG_WRITE_DSTATE
+};
+TraceEvent *hw_ppc_trace_events[] = {
+ &_TRACE_SPAPR_PCI_MSI_EVENT,
+ &_TRACE_SPAPR_PCI_MSI_SETUP_EVENT,
+ &_TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_EVENT,
+ &_TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_EVENT,
+ &_TRACE_SPAPR_PCI_MSI_WRITE_EVENT,
+ &_TRACE_SPAPR_PCI_LSI_SET_EVENT,
+ &_TRACE_SPAPR_PCI_MSI_RETRY_EVENT,
+ &_TRACE_SPAPR_CAS_FAILED_EVENT,
+ &_TRACE_SPAPR_CAS_CONTINUE_EVENT,
+ &_TRACE_SPAPR_IRQ_ALLOC_EVENT,
+ &_TRACE_SPAPR_IRQ_ALLOC_BLOCK_EVENT,
+ &_TRACE_SPAPR_IRQ_FREE_EVENT,
+ &_TRACE_SPAPR_IRQ_FREE_WARN_EVENT,
+ &_TRACE_SPAPR_CAS_PVR_TRY_EVENT,
+ &_TRACE_SPAPR_CAS_PVR_EVENT,
+ &_TRACE_SPAPR_H_RESIZE_HPT_PREPARE_EVENT,
+ &_TRACE_SPAPR_H_RESIZE_HPT_COMMIT_EVENT,
+ &_TRACE_SPAPR_IOMMU_PUT_EVENT,
+ &_TRACE_SPAPR_IOMMU_GET_EVENT,
+ &_TRACE_SPAPR_IOMMU_INDIRECT_EVENT,
+ &_TRACE_SPAPR_IOMMU_STUFF_EVENT,
+ &_TRACE_SPAPR_IOMMU_PCI_PUT_EVENT,
+ &_TRACE_SPAPR_IOMMU_PCI_GET_EVENT,
+ &_TRACE_SPAPR_IOMMU_PCI_INDIRECT_EVENT,
+ &_TRACE_SPAPR_IOMMU_PCI_STUFF_EVENT,
+ &_TRACE_SPAPR_IOMMU_XLATE_EVENT,
+ &_TRACE_SPAPR_IOMMU_NEW_TABLE_EVENT,
+ &_TRACE_SPAPR_IOMMU_PRE_SAVE_EVENT,
+ &_TRACE_SPAPR_IOMMU_POST_LOAD_EVENT,
+ &_TRACE_SPAPR_IOMMU_DDW_QUERY_EVENT,
+ &_TRACE_SPAPR_IOMMU_DDW_CREATE_EVENT,
+ &_TRACE_SPAPR_IOMMU_DDW_REMOVE_EVENT,
+ &_TRACE_SPAPR_IOMMU_DDW_RESET_EVENT,
+ &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_EVENT,
+ &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_EVENT,
+ &_TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_EVENT,
+ &_TRACE_SPAPR_DRC_SET_DR_INDICATOR_EVENT,
+ &_TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_EVENT,
+ &_TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_EVENT,
+ &_TRACE_SPAPR_DRC_SET_CONFIGURED_EVENT,
+ &_TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_EVENT,
+ &_TRACE_SPAPR_DRC_ATTACH_EVENT,
+ &_TRACE_SPAPR_DRC_DETACH_EVENT,
+ &_TRACE_SPAPR_DRC_AWAITING_QUIESCE_EVENT,
+ &_TRACE_SPAPR_DRC_AWAITING_ALLOCATION_EVENT,
+ &_TRACE_SPAPR_DRC_RESET_EVENT,
+ &_TRACE_SPAPR_DRC_REALIZE_EVENT,
+ &_TRACE_SPAPR_DRC_REALIZE_CHILD_EVENT,
+ &_TRACE_SPAPR_DRC_REALIZE_COMPLETE_EVENT,
+ &_TRACE_SPAPR_DRC_UNREALIZE_EVENT,
+ &_TRACE_SPAPR_OVEC_PARSE_VECTOR_EVENT,
+ &_TRACE_SPAPR_OVEC_POPULATE_DT_EVENT,
+ &_TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_EVENT,
+ &_TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_EVENT,
+ &_TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_EVENT,
+ &_TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_EVENT,
+ &_TRACE_SPAPR_VIO_H_REG_CRQ_EVENT,
+ &_TRACE_SPAPR_VIO_FREE_CRQ_EVENT,
+ &_TRACE_PPC_TB_ADJUST_EVENT,
+ &_TRACE_PREP_IO_800_WRITEB_EVENT,
+ &_TRACE_PREP_IO_800_READB_EVENT,
+ &_TRACE_PREP_SYSTEMIO_READ_EVENT,
+ &_TRACE_PREP_SYSTEMIO_WRITE_EVENT,
+ &_TRACE_RS6000MC_ID_READ_EVENT,
+ &_TRACE_RS6000MC_PRESENCE_READ_EVENT,
+ &_TRACE_RS6000MC_SIZE_READ_EVENT,
+ &_TRACE_RS6000MC_SIZE_WRITE_EVENT,
+ &_TRACE_RS6000MC_PARITY_READ_EVENT,
+ &_TRACE_MAC99_UNINORTH_WRITE_EVENT,
+ &_TRACE_MAC99_UNINORTH_READ_EVENT,
+ &_TRACE_PPC4XX_PCI_MAP_IRQ_EVENT,
+ &_TRACE_PPC4XX_PCI_SET_IRQ_EVENT,
+ &_TRACE_PPC440_PCIX_MAP_IRQ_EVENT,
+ &_TRACE_PPC440_PCIX_SET_IRQ_EVENT,
+ &_TRACE_PPC440_PCIX_UPDATE_PIM_EVENT,
+ &_TRACE_PPC440_PCIX_UPDATE_POM_EVENT,
+ &_TRACE_PPC440_PCIX_REG_READ_EVENT,
+ &_TRACE_PPC440_PCIX_REG_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_ppc_register_events(void)
+{
+ trace_event_register_group(hw_ppc_trace_events);
+}
+trace_init(trace_hw_ppc_register_events)
diff --git a/qemu2-auto-generated/hw/ppc/trace.h b/qemu2-auto-generated/hw/ppc/trace.h
new file mode 100644
index 0000000000..d15020b9fb
--- /dev/null
+++ b/qemu2-auto-generated/hw/ppc/trace.h
@@ -0,0 +1,1335 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_PPC_GENERATED_TRACERS_H
+#define TRACE_HW_PPC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_SPAPR_PCI_MSI_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_MSI_SETUP_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_MSI_WRITE_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_LSI_SET_EVENT;
+extern TraceEvent _TRACE_SPAPR_PCI_MSI_RETRY_EVENT;
+extern TraceEvent _TRACE_SPAPR_CAS_FAILED_EVENT;
+extern TraceEvent _TRACE_SPAPR_CAS_CONTINUE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IRQ_ALLOC_EVENT;
+extern TraceEvent _TRACE_SPAPR_IRQ_ALLOC_BLOCK_EVENT;
+extern TraceEvent _TRACE_SPAPR_IRQ_FREE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IRQ_FREE_WARN_EVENT;
+extern TraceEvent _TRACE_SPAPR_CAS_PVR_TRY_EVENT;
+extern TraceEvent _TRACE_SPAPR_CAS_PVR_EVENT;
+extern TraceEvent _TRACE_SPAPR_H_RESIZE_HPT_PREPARE_EVENT;
+extern TraceEvent _TRACE_SPAPR_H_RESIZE_HPT_COMMIT_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PUT_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_GET_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_INDIRECT_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_STUFF_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PCI_PUT_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PCI_GET_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PCI_INDIRECT_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PCI_STUFF_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_XLATE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_NEW_TABLE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_PRE_SAVE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_POST_LOAD_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_DDW_QUERY_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_DDW_CREATE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_DDW_REMOVE_EVENT;
+extern TraceEvent _TRACE_SPAPR_IOMMU_DDW_RESET_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_DR_INDICATOR_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_CONFIGURED_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_ATTACH_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_DETACH_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_AWAITING_QUIESCE_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_AWAITING_ALLOCATION_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_RESET_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_REALIZE_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_REALIZE_CHILD_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_REALIZE_COMPLETE_EVENT;
+extern TraceEvent _TRACE_SPAPR_DRC_UNREALIZE_EVENT;
+extern TraceEvent _TRACE_SPAPR_OVEC_PARSE_VECTOR_EVENT;
+extern TraceEvent _TRACE_SPAPR_OVEC_POPULATE_DT_EVENT;
+extern TraceEvent _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_EVENT;
+extern TraceEvent _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_EVENT;
+extern TraceEvent _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_EVENT;
+extern TraceEvent _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_EVENT;
+extern TraceEvent _TRACE_SPAPR_VIO_H_REG_CRQ_EVENT;
+extern TraceEvent _TRACE_SPAPR_VIO_FREE_CRQ_EVENT;
+extern TraceEvent _TRACE_PPC_TB_ADJUST_EVENT;
+extern TraceEvent _TRACE_PREP_IO_800_WRITEB_EVENT;
+extern TraceEvent _TRACE_PREP_IO_800_READB_EVENT;
+extern TraceEvent _TRACE_PREP_SYSTEMIO_READ_EVENT;
+extern TraceEvent _TRACE_PREP_SYSTEMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_RS6000MC_ID_READ_EVENT;
+extern TraceEvent _TRACE_RS6000MC_PRESENCE_READ_EVENT;
+extern TraceEvent _TRACE_RS6000MC_SIZE_READ_EVENT;
+extern TraceEvent _TRACE_RS6000MC_SIZE_WRITE_EVENT;
+extern TraceEvent _TRACE_RS6000MC_PARITY_READ_EVENT;
+extern TraceEvent _TRACE_MAC99_UNINORTH_WRITE_EVENT;
+extern TraceEvent _TRACE_MAC99_UNINORTH_READ_EVENT;
+extern TraceEvent _TRACE_PPC4XX_PCI_MAP_IRQ_EVENT;
+extern TraceEvent _TRACE_PPC4XX_PCI_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_MAP_IRQ_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_UPDATE_PIM_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_UPDATE_POM_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_REG_READ_EVENT;
+extern TraceEvent _TRACE_PPC440_PCIX_REG_WRITE_EVENT;
+extern uint16_t _TRACE_SPAPR_PCI_MSI_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_MSI_SETUP_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_MSI_WRITE_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_LSI_SET_DSTATE;
+extern uint16_t _TRACE_SPAPR_PCI_MSI_RETRY_DSTATE;
+extern uint16_t _TRACE_SPAPR_CAS_FAILED_DSTATE;
+extern uint16_t _TRACE_SPAPR_CAS_CONTINUE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IRQ_ALLOC_DSTATE;
+extern uint16_t _TRACE_SPAPR_IRQ_ALLOC_BLOCK_DSTATE;
+extern uint16_t _TRACE_SPAPR_IRQ_FREE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IRQ_FREE_WARN_DSTATE;
+extern uint16_t _TRACE_SPAPR_CAS_PVR_TRY_DSTATE;
+extern uint16_t _TRACE_SPAPR_CAS_PVR_DSTATE;
+extern uint16_t _TRACE_SPAPR_H_RESIZE_HPT_PREPARE_DSTATE;
+extern uint16_t _TRACE_SPAPR_H_RESIZE_HPT_COMMIT_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PUT_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_GET_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_INDIRECT_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_STUFF_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PCI_PUT_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PCI_GET_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PCI_INDIRECT_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PCI_STUFF_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_XLATE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_NEW_TABLE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_PRE_SAVE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_POST_LOAD_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_DDW_QUERY_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_DDW_CREATE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_DDW_REMOVE_DSTATE;
+extern uint16_t _TRACE_SPAPR_IOMMU_DDW_RESET_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_DR_INDICATOR_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_CONFIGURED_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_ATTACH_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_DETACH_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_AWAITING_QUIESCE_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_AWAITING_ALLOCATION_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_RESET_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_REALIZE_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_REALIZE_CHILD_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_REALIZE_COMPLETE_DSTATE;
+extern uint16_t _TRACE_SPAPR_DRC_UNREALIZE_DSTATE;
+extern uint16_t _TRACE_SPAPR_OVEC_PARSE_VECTOR_DSTATE;
+extern uint16_t _TRACE_SPAPR_OVEC_POPULATE_DT_DSTATE;
+extern uint16_t _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_DSTATE;
+extern uint16_t _TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_DSTATE;
+extern uint16_t _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_DSTATE;
+extern uint16_t _TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_DSTATE;
+extern uint16_t _TRACE_SPAPR_VIO_H_REG_CRQ_DSTATE;
+extern uint16_t _TRACE_SPAPR_VIO_FREE_CRQ_DSTATE;
+extern uint16_t _TRACE_PPC_TB_ADJUST_DSTATE;
+extern uint16_t _TRACE_PREP_IO_800_WRITEB_DSTATE;
+extern uint16_t _TRACE_PREP_IO_800_READB_DSTATE;
+extern uint16_t _TRACE_PREP_SYSTEMIO_READ_DSTATE;
+extern uint16_t _TRACE_PREP_SYSTEMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_RS6000MC_ID_READ_DSTATE;
+extern uint16_t _TRACE_RS6000MC_PRESENCE_READ_DSTATE;
+extern uint16_t _TRACE_RS6000MC_SIZE_READ_DSTATE;
+extern uint16_t _TRACE_RS6000MC_SIZE_WRITE_DSTATE;
+extern uint16_t _TRACE_RS6000MC_PARITY_READ_DSTATE;
+extern uint16_t _TRACE_MAC99_UNINORTH_WRITE_DSTATE;
+extern uint16_t _TRACE_MAC99_UNINORTH_READ_DSTATE;
+extern uint16_t _TRACE_PPC4XX_PCI_MAP_IRQ_DSTATE;
+extern uint16_t _TRACE_PPC4XX_PCI_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_MAP_IRQ_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_UPDATE_PIM_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_UPDATE_POM_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_REG_READ_DSTATE;
+extern uint16_t _TRACE_PPC440_PCIX_REG_WRITE_DSTATE;
+#define TRACE_SPAPR_PCI_MSI_ENABLED 1
+#define TRACE_SPAPR_PCI_MSI_SETUP_ENABLED 1
+#define TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_ENABLED 1
+#define TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_ENABLED 1
+#define TRACE_SPAPR_PCI_MSI_WRITE_ENABLED 1
+#define TRACE_SPAPR_PCI_LSI_SET_ENABLED 1
+#define TRACE_SPAPR_PCI_MSI_RETRY_ENABLED 1
+#define TRACE_SPAPR_CAS_FAILED_ENABLED 1
+#define TRACE_SPAPR_CAS_CONTINUE_ENABLED 1
+#define TRACE_SPAPR_IRQ_ALLOC_ENABLED 1
+#define TRACE_SPAPR_IRQ_ALLOC_BLOCK_ENABLED 1
+#define TRACE_SPAPR_IRQ_FREE_ENABLED 1
+#define TRACE_SPAPR_IRQ_FREE_WARN_ENABLED 1
+#define TRACE_SPAPR_CAS_PVR_TRY_ENABLED 1
+#define TRACE_SPAPR_CAS_PVR_ENABLED 1
+#define TRACE_SPAPR_H_RESIZE_HPT_PREPARE_ENABLED 1
+#define TRACE_SPAPR_H_RESIZE_HPT_COMMIT_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PUT_ENABLED 1
+#define TRACE_SPAPR_IOMMU_GET_ENABLED 1
+#define TRACE_SPAPR_IOMMU_INDIRECT_ENABLED 1
+#define TRACE_SPAPR_IOMMU_STUFF_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PCI_PUT_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PCI_GET_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PCI_INDIRECT_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PCI_STUFF_ENABLED 1
+#define TRACE_SPAPR_IOMMU_XLATE_ENABLED 1
+#define TRACE_SPAPR_IOMMU_NEW_TABLE_ENABLED 1
+#define TRACE_SPAPR_IOMMU_PRE_SAVE_ENABLED 1
+#define TRACE_SPAPR_IOMMU_POST_LOAD_ENABLED 1
+#define TRACE_SPAPR_IOMMU_DDW_QUERY_ENABLED 1
+#define TRACE_SPAPR_IOMMU_DDW_CREATE_ENABLED 1
+#define TRACE_SPAPR_IOMMU_DDW_REMOVE_ENABLED 1
+#define TRACE_SPAPR_IOMMU_DDW_RESET_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_DR_INDICATOR_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_CONFIGURED_ENABLED 1
+#define TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_ENABLED 1
+#define TRACE_SPAPR_DRC_ATTACH_ENABLED 1
+#define TRACE_SPAPR_DRC_DETACH_ENABLED 1
+#define TRACE_SPAPR_DRC_AWAITING_QUIESCE_ENABLED 1
+#define TRACE_SPAPR_DRC_AWAITING_ALLOCATION_ENABLED 1
+#define TRACE_SPAPR_DRC_RESET_ENABLED 1
+#define TRACE_SPAPR_DRC_REALIZE_ENABLED 1
+#define TRACE_SPAPR_DRC_REALIZE_CHILD_ENABLED 1
+#define TRACE_SPAPR_DRC_REALIZE_COMPLETE_ENABLED 1
+#define TRACE_SPAPR_DRC_UNREALIZE_ENABLED 1
+#define TRACE_SPAPR_OVEC_PARSE_VECTOR_ENABLED 1
+#define TRACE_SPAPR_OVEC_POPULATE_DT_ENABLED 1
+#define TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_ENABLED 1
+#define TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_ENABLED 1
+#define TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_ENABLED 1
+#define TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_ENABLED 1
+#define TRACE_SPAPR_VIO_H_REG_CRQ_ENABLED 1
+#define TRACE_SPAPR_VIO_FREE_CRQ_ENABLED 1
+#define TRACE_PPC_TB_ADJUST_ENABLED 1
+#define TRACE_PREP_IO_800_WRITEB_ENABLED 1
+#define TRACE_PREP_IO_800_READB_ENABLED 1
+#define TRACE_PREP_SYSTEMIO_READ_ENABLED 1
+#define TRACE_PREP_SYSTEMIO_WRITE_ENABLED 1
+#define TRACE_RS6000MC_ID_READ_ENABLED 1
+#define TRACE_RS6000MC_PRESENCE_READ_ENABLED 1
+#define TRACE_RS6000MC_SIZE_READ_ENABLED 1
+#define TRACE_RS6000MC_SIZE_WRITE_ENABLED 1
+#define TRACE_RS6000MC_PARITY_READ_ENABLED 1
+#define TRACE_MAC99_UNINORTH_WRITE_ENABLED 1
+#define TRACE_MAC99_UNINORTH_READ_ENABLED 1
+#define TRACE_PPC4XX_PCI_MAP_IRQ_ENABLED 1
+#define TRACE_PPC4XX_PCI_SET_IRQ_ENABLED 1
+#define TRACE_PPC440_PCIX_MAP_IRQ_ENABLED 1
+#define TRACE_PPC440_PCIX_SET_IRQ_ENABLED 1
+#define TRACE_PPC440_PCIX_UPDATE_PIM_ENABLED 1
+#define TRACE_PPC440_PCIX_UPDATE_POM_ENABLED 1
+#define TRACE_PPC440_PCIX_REG_READ_ENABLED 1
+#define TRACE_PPC440_PCIX_REG_WRITE_ENABLED 1
+
+#define TRACE_SPAPR_PCI_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_msi(const char * msg, uint32_t ca)
+{
+}
+
+static inline void trace_spapr_pci_msi(const char * msg, uint32_t ca)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_msi(msg, ca);
+ }
+}
+
+#define TRACE_SPAPR_PCI_MSI_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_msi_setup(const char * name, unsigned vector, uint64_t addr)
+{
+}
+
+static inline void trace_spapr_pci_msi_setup(const char * name, unsigned vector, uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_msi_setup(name, vector, addr);
+ }
+}
+
+#define TRACE_SPAPR_PCI_RTAS_IBM_CHANGE_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_rtas_ibm_change_msi(unsigned cfg, unsigned func, unsigned req, unsigned first)
+{
+}
+
+static inline void trace_spapr_pci_rtas_ibm_change_msi(unsigned cfg, unsigned func, unsigned req, unsigned first)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_rtas_ibm_change_msi(cfg, func, req, first);
+ }
+}
+
+#define TRACE_SPAPR_PCI_RTAS_IBM_QUERY_INTERRUPT_SOURCE_NUMBER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_rtas_ibm_query_interrupt_source_number(unsigned ioa, unsigned intr)
+{
+}
+
+static inline void trace_spapr_pci_rtas_ibm_query_interrupt_source_number(unsigned ioa, unsigned intr)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_rtas_ibm_query_interrupt_source_number(ioa, intr);
+ }
+}
+
+#define TRACE_SPAPR_PCI_MSI_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_msi_write(uint64_t addr, uint64_t data, uint32_t dt_irq)
+{
+}
+
+static inline void trace_spapr_pci_msi_write(uint64_t addr, uint64_t data, uint32_t dt_irq)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_msi_write(addr, data, dt_irq);
+ }
+}
+
+#define TRACE_SPAPR_PCI_LSI_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_lsi_set(const char * busname, int pin, uint32_t irq)
+{
+}
+
+static inline void trace_spapr_pci_lsi_set(const char * busname, int pin, uint32_t irq)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_lsi_set(busname, pin, irq);
+ }
+}
+
+#define TRACE_SPAPR_PCI_MSI_RETRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs)
+{
+}
+
+static inline void trace_spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs)
+{
+ if (true) {
+ _nocheck__trace_spapr_pci_msi_retry(config_addr, req_num, max_irqs);
+ }
+}
+
+#define TRACE_SPAPR_CAS_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_cas_failed(unsigned long n)
+{
+}
+
+static inline void trace_spapr_cas_failed(unsigned long n)
+{
+ if (true) {
+ _nocheck__trace_spapr_cas_failed(n);
+ }
+}
+
+#define TRACE_SPAPR_CAS_CONTINUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_cas_continue(unsigned long n)
+{
+}
+
+static inline void trace_spapr_cas_continue(unsigned long n)
+{
+ if (true) {
+ _nocheck__trace_spapr_cas_continue(n);
+ }
+}
+
+#define TRACE_SPAPR_IRQ_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_irq_alloc(int irq)
+{
+}
+
+static inline void trace_spapr_irq_alloc(int irq)
+{
+ if (true) {
+ _nocheck__trace_spapr_irq_alloc(irq);
+ }
+}
+
+#define TRACE_SPAPR_IRQ_ALLOC_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_irq_alloc_block(int first, int num, bool lsi, int align)
+{
+}
+
+static inline void trace_spapr_irq_alloc_block(int first, int num, bool lsi, int align)
+{
+ if (true) {
+ _nocheck__trace_spapr_irq_alloc_block(first, num, lsi, align);
+ }
+}
+
+#define TRACE_SPAPR_IRQ_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_irq_free(int src, int irq, int num)
+{
+}
+
+static inline void trace_spapr_irq_free(int src, int irq, int num)
+{
+ if (true) {
+ _nocheck__trace_spapr_irq_free(src, irq, num);
+ }
+}
+
+#define TRACE_SPAPR_IRQ_FREE_WARN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_irq_free_warn(int src, int irq)
+{
+}
+
+static inline void trace_spapr_irq_free_warn(int src, int irq)
+{
+ if (true) {
+ _nocheck__trace_spapr_irq_free_warn(src, irq);
+ }
+}
+
+#define TRACE_SPAPR_CAS_PVR_TRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_cas_pvr_try(uint32_t pvr)
+{
+}
+
+static inline void trace_spapr_cas_pvr_try(uint32_t pvr)
+{
+ if (true) {
+ _nocheck__trace_spapr_cas_pvr_try(pvr);
+ }
+}
+
+#define TRACE_SPAPR_CAS_PVR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_cas_pvr(uint32_t cur_pvr, bool explicit_match, uint32_t new_pvr)
+{
+}
+
+static inline void trace_spapr_cas_pvr(uint32_t cur_pvr, bool explicit_match, uint32_t new_pvr)
+{
+ if (true) {
+ _nocheck__trace_spapr_cas_pvr(cur_pvr, explicit_match, new_pvr);
+ }
+}
+
+#define TRACE_SPAPR_H_RESIZE_HPT_PREPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_h_resize_hpt_prepare(uint64_t flags, uint64_t shift)
+{
+}
+
+static inline void trace_spapr_h_resize_hpt_prepare(uint64_t flags, uint64_t shift)
+{
+ if (true) {
+ _nocheck__trace_spapr_h_resize_hpt_prepare(flags, shift);
+ }
+}
+
+#define TRACE_SPAPR_H_RESIZE_HPT_COMMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_h_resize_hpt_commit(uint64_t flags, uint64_t shift)
+{
+}
+
+static inline void trace_spapr_h_resize_hpt_commit(uint64_t flags, uint64_t shift)
+{
+ if (true) {
+ _nocheck__trace_spapr_h_resize_hpt_commit(flags, shift);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_put(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_put(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_put(liobn, ioba, tce, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_get(uint64_t liobn, uint64_t ioba, uint64_t ret, uint64_t tce)
+{
+}
+
+static inline void trace_spapr_iommu_get(uint64_t liobn, uint64_t ioba, uint64_t ret, uint64_t tce)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_get(liobn, ioba, ret, tce);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_INDIRECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_indirect(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t iobaN, uint64_t tceN, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_indirect(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t iobaN, uint64_t tceN, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_indirect(liobn, ioba, tce, iobaN, tceN, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_STUFF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_stuff(uint64_t liobn, uint64_t ioba, uint64_t tce_value, uint64_t npages, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_stuff(uint64_t liobn, uint64_t ioba, uint64_t tce_value, uint64_t npages, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_stuff(liobn, ioba, tce_value, npages, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PCI_PUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_pci_put(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_pci_put(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_pci_put(liobn, ioba, tce, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PCI_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_pci_get(uint64_t liobn, uint64_t ioba, uint64_t ret, uint64_t tce)
+{
+}
+
+static inline void trace_spapr_iommu_pci_get(uint64_t liobn, uint64_t ioba, uint64_t ret, uint64_t tce)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_pci_get(liobn, ioba, ret, tce);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PCI_INDIRECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_pci_indirect(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t iobaN, uint64_t tceN, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_pci_indirect(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t iobaN, uint64_t tceN, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_pci_indirect(liobn, ioba, tce, iobaN, tceN, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PCI_STUFF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_pci_stuff(uint64_t liobn, uint64_t ioba, uint64_t tce_value, uint64_t npages, uint64_t ret)
+{
+}
+
+static inline void trace_spapr_iommu_pci_stuff(uint64_t liobn, uint64_t ioba, uint64_t tce_value, uint64_t npages, uint64_t ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_pci_stuff(liobn, ioba, tce_value, npages, ret);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_XLATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_xlate(uint64_t liobn, uint64_t ioba, uint64_t tce, unsigned perm, unsigned pgsize)
+{
+}
+
+static inline void trace_spapr_iommu_xlate(uint64_t liobn, uint64_t ioba, uint64_t tce, unsigned perm, unsigned pgsize)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_xlate(liobn, ioba, tce, perm, pgsize);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_NEW_TABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_new_table(uint64_t liobn, void * table, int fd)
+{
+}
+
+static inline void trace_spapr_iommu_new_table(uint64_t liobn, void * table, int fd)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_new_table(liobn, table, fd);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_PRE_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_pre_save(uint64_t liobn, uint32_t nb, uint64_t offs, uint32_t ps)
+{
+}
+
+static inline void trace_spapr_iommu_pre_save(uint64_t liobn, uint32_t nb, uint64_t offs, uint32_t ps)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_pre_save(liobn, nb, offs, ps);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_POST_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_post_load(uint64_t liobn, uint32_t pre_nb, uint32_t post_nb, uint64_t offs, uint32_t ps)
+{
+}
+
+static inline void trace_spapr_iommu_post_load(uint64_t liobn, uint32_t pre_nb, uint32_t post_nb, uint64_t offs, uint32_t ps)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_post_load(liobn, pre_nb, post_nb, offs, ps);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_DDW_QUERY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_ddw_query(uint64_t buid, uint32_t cfgaddr, unsigned wa, uint64_t win_size, uint32_t pgmask)
+{
+}
+
+static inline void trace_spapr_iommu_ddw_query(uint64_t buid, uint32_t cfgaddr, unsigned wa, uint64_t win_size, uint32_t pgmask)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_ddw_query(buid, cfgaddr, wa, win_size, pgmask);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_DDW_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_ddw_create(uint64_t buid, uint32_t cfgaddr, uint64_t pg_size, uint64_t req_size, uint64_t start, uint32_t liobn)
+{
+}
+
+static inline void trace_spapr_iommu_ddw_create(uint64_t buid, uint32_t cfgaddr, uint64_t pg_size, uint64_t req_size, uint64_t start, uint32_t liobn)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_ddw_create(buid, cfgaddr, pg_size, req_size, start, liobn);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_DDW_REMOVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_ddw_remove(uint32_t liobn)
+{
+}
+
+static inline void trace_spapr_iommu_ddw_remove(uint32_t liobn)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_ddw_remove(liobn);
+ }
+}
+
+#define TRACE_SPAPR_IOMMU_DDW_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_iommu_ddw_reset(uint64_t buid, uint32_t cfgaddr)
+{
+}
+
+static inline void trace_spapr_iommu_ddw_reset(uint64_t buid, uint32_t cfgaddr)
+{
+ if (true) {
+ _nocheck__trace_spapr_iommu_ddw_reset(buid, cfgaddr);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_isolation_state(uint32_t index, int state)
+{
+}
+
+static inline void trace_spapr_drc_set_isolation_state(uint32_t index, int state)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_isolation_state(index, state);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_FINALIZING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_isolation_state_finalizing(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_set_isolation_state_finalizing(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_isolation_state_finalizing(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_ISOLATION_STATE_DEFERRING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_isolation_state_deferring(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_set_isolation_state_deferring(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_isolation_state_deferring(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_DR_INDICATOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_dr_indicator(uint32_t index, int state)
+{
+}
+
+static inline void trace_spapr_drc_set_dr_indicator(uint32_t index, int state)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_dr_indicator(index, state);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_allocation_state(uint32_t index, int state)
+{
+}
+
+static inline void trace_spapr_drc_set_allocation_state(uint32_t index, int state)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_allocation_state(index, state);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_ALLOCATION_STATE_FINALIZING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_allocation_state_finalizing(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_set_allocation_state_finalizing(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_allocation_state_finalizing(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_CONFIGURED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_configured(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_set_configured(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_configured(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_SET_CONFIGURED_SKIPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_set_configured_skipping(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_set_configured_skipping(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_set_configured_skipping(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_attach(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_attach(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_attach(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_detach(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_detach(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_detach(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_AWAITING_QUIESCE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_awaiting_quiesce(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_awaiting_quiesce(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_awaiting_quiesce(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_AWAITING_ALLOCATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_awaiting_allocation(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_awaiting_allocation(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_awaiting_allocation(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_reset(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_reset(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_reset(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_REALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_realize(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_realize(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_realize(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_REALIZE_CHILD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_realize_child(uint32_t index, char * childname)
+{
+}
+
+static inline void trace_spapr_drc_realize_child(uint32_t index, char * childname)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_realize_child(index, childname);
+ }
+}
+
+#define TRACE_SPAPR_DRC_REALIZE_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_realize_complete(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_realize_complete(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_realize_complete(index);
+ }
+}
+
+#define TRACE_SPAPR_DRC_UNREALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_drc_unrealize(uint32_t index)
+{
+}
+
+static inline void trace_spapr_drc_unrealize(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_drc_unrealize(index);
+ }
+}
+
+#define TRACE_SPAPR_OVEC_PARSE_VECTOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_ovec_parse_vector(int vector, int byte, uint16_t vec_len, uint8_t entry)
+{
+}
+
+static inline void trace_spapr_ovec_parse_vector(int vector, int byte, uint16_t vec_len, uint8_t entry)
+{
+ if (true) {
+ _nocheck__trace_spapr_ovec_parse_vector(vector, byte, vec_len, entry);
+ }
+}
+
+#define TRACE_SPAPR_OVEC_POPULATE_DT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_ovec_populate_dt(int byte, uint16_t vec_len, uint8_t entry)
+{
+}
+
+static inline void trace_spapr_ovec_populate_dt(int byte, uint16_t vec_len, uint8_t entry)
+{
+ if (true) {
+ _nocheck__trace_spapr_ovec_populate_dt(byte, vec_len, entry);
+ }
+}
+
+#define TRACE_SPAPR_RTAS_GET_SENSOR_STATE_NOT_SUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_rtas_get_sensor_state_not_supported(uint32_t index, uint32_t type)
+{
+}
+
+static inline void trace_spapr_rtas_get_sensor_state_not_supported(uint32_t index, uint32_t type)
+{
+ if (true) {
+ _nocheck__trace_spapr_rtas_get_sensor_state_not_supported(index, type);
+ }
+}
+
+#define TRACE_SPAPR_RTAS_GET_SENSOR_STATE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_rtas_get_sensor_state_invalid(uint32_t index)
+{
+}
+
+static inline void trace_spapr_rtas_get_sensor_state_invalid(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_rtas_get_sensor_state_invalid(index);
+ }
+}
+
+#define TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_rtas_ibm_configure_connector_invalid(uint32_t index)
+{
+}
+
+static inline void trace_spapr_rtas_ibm_configure_connector_invalid(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_rtas_ibm_configure_connector_invalid(index);
+ }
+}
+
+#define TRACE_SPAPR_RTAS_IBM_CONFIGURE_CONNECTOR_MISSING_FDT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_rtas_ibm_configure_connector_missing_fdt(uint32_t index)
+{
+}
+
+static inline void trace_spapr_rtas_ibm_configure_connector_missing_fdt(uint32_t index)
+{
+ if (true) {
+ _nocheck__trace_spapr_rtas_ibm_configure_connector_missing_fdt(index);
+ }
+}
+
+#define TRACE_SPAPR_VIO_H_REG_CRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vio_h_reg_crq(uint64_t reg, uint64_t queue_addr, uint64_t queue_len)
+{
+}
+
+static inline void trace_spapr_vio_h_reg_crq(uint64_t reg, uint64_t queue_addr, uint64_t queue_len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vio_h_reg_crq(reg, queue_addr, queue_len);
+ }
+}
+
+#define TRACE_SPAPR_VIO_FREE_CRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vio_free_crq(uint32_t reg)
+{
+}
+
+static inline void trace_spapr_vio_free_crq(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_spapr_vio_free_crq(reg);
+ }
+}
+
+#define TRACE_PPC_TB_ADJUST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc_tb_adjust(uint64_t offs1, uint64_t offs2, int64_t diff, int64_t seconds)
+{
+}
+
+static inline void trace_ppc_tb_adjust(uint64_t offs1, uint64_t offs2, int64_t diff, int64_t seconds)
+{
+ if (true) {
+ _nocheck__trace_ppc_tb_adjust(offs1, offs2, diff, seconds);
+ }
+}
+
+#define TRACE_PREP_IO_800_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_prep_io_800_writeb(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_prep_io_800_writeb(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_prep_io_800_writeb(addr, val);
+ }
+}
+
+#define TRACE_PREP_IO_800_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_prep_io_800_readb(uint32_t addr, uint32_t retval)
+{
+}
+
+static inline void trace_prep_io_800_readb(uint32_t addr, uint32_t retval)
+{
+ if (true) {
+ _nocheck__trace_prep_io_800_readb(addr, retval);
+ }
+}
+
+#define TRACE_PREP_SYSTEMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_prep_systemio_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_prep_systemio_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_prep_systemio_read(addr, val);
+ }
+}
+
+#define TRACE_PREP_SYSTEMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_prep_systemio_write(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_prep_systemio_write(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_prep_systemio_write(addr, val);
+ }
+}
+
+#define TRACE_RS6000MC_ID_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rs6000mc_id_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rs6000mc_id_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rs6000mc_id_read(addr, val);
+ }
+}
+
+#define TRACE_RS6000MC_PRESENCE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rs6000mc_presence_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rs6000mc_presence_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rs6000mc_presence_read(addr, val);
+ }
+}
+
+#define TRACE_RS6000MC_SIZE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rs6000mc_size_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rs6000mc_size_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rs6000mc_size_read(addr, val);
+ }
+}
+
+#define TRACE_RS6000MC_SIZE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rs6000mc_size_write(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rs6000mc_size_write(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rs6000mc_size_write(addr, val);
+ }
+}
+
+#define TRACE_RS6000MC_PARITY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rs6000mc_parity_read(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_rs6000mc_parity_read(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_rs6000mc_parity_read(addr, val);
+ }
+}
+
+#define TRACE_MAC99_UNINORTH_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mac99_uninorth_write(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_mac99_uninorth_write(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_mac99_uninorth_write(addr, value);
+ }
+}
+
+#define TRACE_MAC99_UNINORTH_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mac99_uninorth_read(uint64_t addr, uint64_t value)
+{
+}
+
+static inline void trace_mac99_uninorth_read(uint64_t addr, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_mac99_uninorth_read(addr, value);
+ }
+}
+
+#define TRACE_PPC4XX_PCI_MAP_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc4xx_pci_map_irq(int32_t devfn, int irq_num, int slot)
+{
+}
+
+static inline void trace_ppc4xx_pci_map_irq(int32_t devfn, int irq_num, int slot)
+{
+ if (true) {
+ _nocheck__trace_ppc4xx_pci_map_irq(devfn, irq_num, slot);
+ }
+}
+
+#define TRACE_PPC4XX_PCI_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc4xx_pci_set_irq(int irq_num)
+{
+}
+
+static inline void trace_ppc4xx_pci_set_irq(int irq_num)
+{
+ if (true) {
+ _nocheck__trace_ppc4xx_pci_set_irq(irq_num);
+ }
+}
+
+#define TRACE_PPC440_PCIX_MAP_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_map_irq(int32_t devfn, int irq_num, int slot)
+{
+}
+
+static inline void trace_ppc440_pcix_map_irq(int32_t devfn, int irq_num, int slot)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_map_irq(devfn, irq_num, slot);
+ }
+}
+
+#define TRACE_PPC440_PCIX_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_set_irq(int irq_num)
+{
+}
+
+static inline void trace_ppc440_pcix_set_irq(int irq_num)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_set_irq(irq_num);
+ }
+}
+
+#define TRACE_PPC440_PCIX_UPDATE_PIM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_update_pim(int idx, uint64_t size, uint64_t la)
+{
+}
+
+static inline void trace_ppc440_pcix_update_pim(int idx, uint64_t size, uint64_t la)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_update_pim(idx, size, la);
+ }
+}
+
+#define TRACE_PPC440_PCIX_UPDATE_POM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_update_pom(int idx, uint32_t size, uint64_t la, uint64_t pcia)
+{
+}
+
+static inline void trace_ppc440_pcix_update_pom(int idx, uint32_t size, uint64_t la, uint64_t pcia)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_update_pom(idx, size, la, pcia);
+ }
+}
+
+#define TRACE_PPC440_PCIX_REG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_reg_read(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_ppc440_pcix_reg_read(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_reg_read(addr, val);
+ }
+}
+
+#define TRACE_PPC440_PCIX_REG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppc440_pcix_reg_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_ppc440_pcix_reg_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_ppc440_pcix_reg_write(addr, val);
+ }
+}
+#endif /* TRACE_HW_PPC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/rdma/trace.c b/qemu2-auto-generated/hw/rdma/trace.c
new file mode 100644
index 0000000000..5c8fb5e4fd
--- /dev/null
+++ b/qemu2-auto-generated/hw/rdma/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_CREATE_AH_CACHE_HIT_DSTATE;
+uint16_t _TRACE_CREATE_AH_CACHE_MISS_DSTATE;
+TraceEvent _TRACE_CREATE_AH_CACHE_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "create_ah_cache_hit",
+ .sstate = TRACE_CREATE_AH_CACHE_HIT_ENABLED,
+ .dstate = &_TRACE_CREATE_AH_CACHE_HIT_DSTATE
+};
+TraceEvent _TRACE_CREATE_AH_CACHE_MISS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "create_ah_cache_miss",
+ .sstate = TRACE_CREATE_AH_CACHE_MISS_ENABLED,
+ .dstate = &_TRACE_CREATE_AH_CACHE_MISS_DSTATE
+};
+TraceEvent *hw_rdma_trace_events[] = {
+ &_TRACE_CREATE_AH_CACHE_HIT_EVENT,
+ &_TRACE_CREATE_AH_CACHE_MISS_EVENT,
+ NULL,
+};
+
+static void trace_hw_rdma_register_events(void)
+{
+ trace_event_register_group(hw_rdma_trace_events);
+}
+trace_init(trace_hw_rdma_register_events)
diff --git a/qemu2-auto-generated/hw/rdma/trace.h b/qemu2-auto-generated/hw/rdma/trace.h
new file mode 100644
index 0000000000..8d434859b5
--- /dev/null
+++ b/qemu2-auto-generated/hw/rdma/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_RDMA_GENERATED_TRACERS_H
+#define TRACE_HW_RDMA_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CREATE_AH_CACHE_HIT_EVENT;
+extern TraceEvent _TRACE_CREATE_AH_CACHE_MISS_EVENT;
+extern uint16_t _TRACE_CREATE_AH_CACHE_HIT_DSTATE;
+extern uint16_t _TRACE_CREATE_AH_CACHE_MISS_DSTATE;
+#define TRACE_CREATE_AH_CACHE_HIT_ENABLED 1
+#define TRACE_CREATE_AH_CACHE_MISS_ENABLED 1
+
+#define TRACE_CREATE_AH_CACHE_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_create_ah_cache_hit(uint64_t subnet, uint64_t net_id)
+{
+}
+
+static inline void trace_create_ah_cache_hit(uint64_t subnet, uint64_t net_id)
+{
+ if (true) {
+ _nocheck__trace_create_ah_cache_hit(subnet, net_id);
+ }
+}
+
+#define TRACE_CREATE_AH_CACHE_MISS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_create_ah_cache_miss(uint64_t subnet, uint64_t net_id)
+{
+}
+
+static inline void trace_create_ah_cache_miss(uint64_t subnet, uint64_t net_id)
+{
+ if (true) {
+ _nocheck__trace_create_ah_cache_miss(subnet, net_id);
+ }
+}
+#endif /* TRACE_HW_RDMA_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/rdma/vmw/trace.c b/qemu2-auto-generated/hw/rdma/vmw/trace.c
new file mode 100644
index 0000000000..9fe7fae6a3
--- /dev/null
+++ b/qemu2-auto-generated/hw/rdma/vmw/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_PVRDMA_REGS_READ_DSTATE;
+uint16_t _TRACE_PVRDMA_REGS_WRITE_DSTATE;
+TraceEvent _TRACE_PVRDMA_REGS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvrdma_regs_read",
+ .sstate = TRACE_PVRDMA_REGS_READ_ENABLED,
+ .dstate = &_TRACE_PVRDMA_REGS_READ_DSTATE
+};
+TraceEvent _TRACE_PVRDMA_REGS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvrdma_regs_write",
+ .sstate = TRACE_PVRDMA_REGS_WRITE_ENABLED,
+ .dstate = &_TRACE_PVRDMA_REGS_WRITE_DSTATE
+};
+TraceEvent *hw_rdma_vmw_trace_events[] = {
+ &_TRACE_PVRDMA_REGS_READ_EVENT,
+ &_TRACE_PVRDMA_REGS_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_rdma_vmw_register_events(void)
+{
+ trace_event_register_group(hw_rdma_vmw_trace_events);
+}
+trace_init(trace_hw_rdma_vmw_register_events)
diff --git a/qemu2-auto-generated/hw/rdma/vmw/trace.h b/qemu2-auto-generated/hw/rdma/vmw/trace.h
new file mode 100644
index 0000000000..c5f4c266a8
--- /dev/null
+++ b/qemu2-auto-generated/hw/rdma/vmw/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_RDMA_VMW_GENERATED_TRACERS_H
+#define TRACE_HW_RDMA_VMW_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_PVRDMA_REGS_READ_EVENT;
+extern TraceEvent _TRACE_PVRDMA_REGS_WRITE_EVENT;
+extern uint16_t _TRACE_PVRDMA_REGS_READ_DSTATE;
+extern uint16_t _TRACE_PVRDMA_REGS_WRITE_DSTATE;
+#define TRACE_PVRDMA_REGS_READ_ENABLED 1
+#define TRACE_PVRDMA_REGS_WRITE_ENABLED 1
+
+#define TRACE_PVRDMA_REGS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvrdma_regs_read(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_pvrdma_regs_read(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_pvrdma_regs_read(addr, val);
+ }
+}
+
+#define TRACE_PVRDMA_REGS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvrdma_regs_write(uint64_t addr, uint64_t val)
+{
+}
+
+static inline void trace_pvrdma_regs_write(uint64_t addr, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_pvrdma_regs_write(addr, val);
+ }
+}
+#endif /* TRACE_HW_RDMA_VMW_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/s390x/trace.c b/qemu2-auto-generated/hw/s390x/trace.c
new file mode 100644
index 0000000000..1596e62201
--- /dev/null
+++ b/qemu2-auto-generated/hw/s390x/trace.c
@@ -0,0 +1,113 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_CSS_ENABLE_FACILITY_DSTATE;
+uint16_t _TRACE_CSS_CRW_DSTATE;
+uint16_t _TRACE_CSS_CHPID_ADD_DSTATE;
+uint16_t _TRACE_CSS_NEW_IMAGE_DSTATE;
+uint16_t _TRACE_CSS_ASSIGN_SUBCH_DSTATE;
+uint16_t _TRACE_CSS_IO_INTERRUPT_DSTATE;
+uint16_t _TRACE_CSS_ADAPTER_INTERRUPT_DSTATE;
+uint16_t _TRACE_CSS_DO_SIC_DSTATE;
+uint16_t _TRACE_VIRTIO_CCW_INTERPRET_CCW_DSTATE;
+uint16_t _TRACE_VIRTIO_CCW_NEW_DEVICE_DSTATE;
+uint16_t _TRACE_VIRTIO_CCW_SET_IND_DSTATE;
+TraceEvent _TRACE_CSS_ENABLE_FACILITY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_enable_facility",
+ .sstate = TRACE_CSS_ENABLE_FACILITY_ENABLED,
+ .dstate = &_TRACE_CSS_ENABLE_FACILITY_DSTATE
+};
+TraceEvent _TRACE_CSS_CRW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_crw",
+ .sstate = TRACE_CSS_CRW_ENABLED,
+ .dstate = &_TRACE_CSS_CRW_DSTATE
+};
+TraceEvent _TRACE_CSS_CHPID_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_chpid_add",
+ .sstate = TRACE_CSS_CHPID_ADD_ENABLED,
+ .dstate = &_TRACE_CSS_CHPID_ADD_DSTATE
+};
+TraceEvent _TRACE_CSS_NEW_IMAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_new_image",
+ .sstate = TRACE_CSS_NEW_IMAGE_ENABLED,
+ .dstate = &_TRACE_CSS_NEW_IMAGE_DSTATE
+};
+TraceEvent _TRACE_CSS_ASSIGN_SUBCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_assign_subch",
+ .sstate = TRACE_CSS_ASSIGN_SUBCH_ENABLED,
+ .dstate = &_TRACE_CSS_ASSIGN_SUBCH_DSTATE
+};
+TraceEvent _TRACE_CSS_IO_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_io_interrupt",
+ .sstate = TRACE_CSS_IO_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_CSS_IO_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_CSS_ADAPTER_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_adapter_interrupt",
+ .sstate = TRACE_CSS_ADAPTER_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_CSS_ADAPTER_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_CSS_DO_SIC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "css_do_sic",
+ .sstate = TRACE_CSS_DO_SIC_ENABLED,
+ .dstate = &_TRACE_CSS_DO_SIC_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CCW_INTERPRET_CCW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_ccw_interpret_ccw",
+ .sstate = TRACE_VIRTIO_CCW_INTERPRET_CCW_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CCW_INTERPRET_CCW_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CCW_NEW_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_ccw_new_device",
+ .sstate = TRACE_VIRTIO_CCW_NEW_DEVICE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CCW_NEW_DEVICE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_CCW_SET_IND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_ccw_set_ind",
+ .sstate = TRACE_VIRTIO_CCW_SET_IND_ENABLED,
+ .dstate = &_TRACE_VIRTIO_CCW_SET_IND_DSTATE
+};
+TraceEvent *hw_s390x_trace_events[] = {
+ &_TRACE_CSS_ENABLE_FACILITY_EVENT,
+ &_TRACE_CSS_CRW_EVENT,
+ &_TRACE_CSS_CHPID_ADD_EVENT,
+ &_TRACE_CSS_NEW_IMAGE_EVENT,
+ &_TRACE_CSS_ASSIGN_SUBCH_EVENT,
+ &_TRACE_CSS_IO_INTERRUPT_EVENT,
+ &_TRACE_CSS_ADAPTER_INTERRUPT_EVENT,
+ &_TRACE_CSS_DO_SIC_EVENT,
+ &_TRACE_VIRTIO_CCW_INTERPRET_CCW_EVENT,
+ &_TRACE_VIRTIO_CCW_NEW_DEVICE_EVENT,
+ &_TRACE_VIRTIO_CCW_SET_IND_EVENT,
+ NULL,
+};
+
+static void trace_hw_s390x_register_events(void)
+{
+ trace_event_register_group(hw_s390x_trace_events);
+}
+trace_init(trace_hw_s390x_register_events)
diff --git a/qemu2-auto-generated/hw/s390x/trace.h b/qemu2-auto-generated/hw/s390x/trace.h
new file mode 100644
index 0000000000..16a608b235
--- /dev/null
+++ b/qemu2-auto-generated/hw/s390x/trace.h
@@ -0,0 +1,196 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_S390X_GENERATED_TRACERS_H
+#define TRACE_HW_S390X_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CSS_ENABLE_FACILITY_EVENT;
+extern TraceEvent _TRACE_CSS_CRW_EVENT;
+extern TraceEvent _TRACE_CSS_CHPID_ADD_EVENT;
+extern TraceEvent _TRACE_CSS_NEW_IMAGE_EVENT;
+extern TraceEvent _TRACE_CSS_ASSIGN_SUBCH_EVENT;
+extern TraceEvent _TRACE_CSS_IO_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_CSS_ADAPTER_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_CSS_DO_SIC_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CCW_INTERPRET_CCW_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CCW_NEW_DEVICE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_CCW_SET_IND_EVENT;
+extern uint16_t _TRACE_CSS_ENABLE_FACILITY_DSTATE;
+extern uint16_t _TRACE_CSS_CRW_DSTATE;
+extern uint16_t _TRACE_CSS_CHPID_ADD_DSTATE;
+extern uint16_t _TRACE_CSS_NEW_IMAGE_DSTATE;
+extern uint16_t _TRACE_CSS_ASSIGN_SUBCH_DSTATE;
+extern uint16_t _TRACE_CSS_IO_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_CSS_ADAPTER_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_CSS_DO_SIC_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CCW_INTERPRET_CCW_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CCW_NEW_DEVICE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_CCW_SET_IND_DSTATE;
+#define TRACE_CSS_ENABLE_FACILITY_ENABLED 1
+#define TRACE_CSS_CRW_ENABLED 1
+#define TRACE_CSS_CHPID_ADD_ENABLED 1
+#define TRACE_CSS_NEW_IMAGE_ENABLED 1
+#define TRACE_CSS_ASSIGN_SUBCH_ENABLED 1
+#define TRACE_CSS_IO_INTERRUPT_ENABLED 1
+#define TRACE_CSS_ADAPTER_INTERRUPT_ENABLED 1
+#define TRACE_CSS_DO_SIC_ENABLED 1
+#define TRACE_VIRTIO_CCW_INTERPRET_CCW_ENABLED 1
+#define TRACE_VIRTIO_CCW_NEW_DEVICE_ENABLED 1
+#define TRACE_VIRTIO_CCW_SET_IND_ENABLED 1
+
+#define TRACE_CSS_ENABLE_FACILITY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_enable_facility(const char * facility)
+{
+}
+
+static inline void trace_css_enable_facility(const char * facility)
+{
+ if (true) {
+ _nocheck__trace_css_enable_facility(facility);
+ }
+}
+
+#define TRACE_CSS_CRW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_crw(uint8_t rsc, uint8_t erc, uint16_t rsid, const char * chained)
+{
+}
+
+static inline void trace_css_crw(uint8_t rsc, uint8_t erc, uint16_t rsid, const char * chained)
+{
+ if (true) {
+ _nocheck__trace_css_crw(rsc, erc, rsid, chained);
+ }
+}
+
+#define TRACE_CSS_CHPID_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_chpid_add(uint8_t cssid, uint8_t chpid, uint8_t type)
+{
+}
+
+static inline void trace_css_chpid_add(uint8_t cssid, uint8_t chpid, uint8_t type)
+{
+ if (true) {
+ _nocheck__trace_css_chpid_add(cssid, chpid, type);
+ }
+}
+
+#define TRACE_CSS_NEW_IMAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_new_image(uint8_t cssid, const char * default_cssid)
+{
+}
+
+static inline void trace_css_new_image(uint8_t cssid, const char * default_cssid)
+{
+ if (true) {
+ _nocheck__trace_css_new_image(cssid, default_cssid);
+ }
+}
+
+#define TRACE_CSS_ASSIGN_SUBCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_assign_subch(const char * do_assign, uint8_t cssid, uint8_t ssid, uint16_t schid, uint16_t devno)
+{
+}
+
+static inline void trace_css_assign_subch(const char * do_assign, uint8_t cssid, uint8_t ssid, uint16_t schid, uint16_t devno)
+{
+ if (true) {
+ _nocheck__trace_css_assign_subch(do_assign, cssid, ssid, schid, devno);
+ }
+}
+
+#define TRACE_CSS_IO_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_io_interrupt(int cssid, int ssid, int schid, uint32_t intparm, uint8_t isc, const char * conditional)
+{
+}
+
+static inline void trace_css_io_interrupt(int cssid, int ssid, int schid, uint32_t intparm, uint8_t isc, const char * conditional)
+{
+ if (true) {
+ _nocheck__trace_css_io_interrupt(cssid, ssid, schid, intparm, isc, conditional);
+ }
+}
+
+#define TRACE_CSS_ADAPTER_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_adapter_interrupt(uint8_t isc)
+{
+}
+
+static inline void trace_css_adapter_interrupt(uint8_t isc)
+{
+ if (true) {
+ _nocheck__trace_css_adapter_interrupt(isc);
+ }
+}
+
+#define TRACE_CSS_DO_SIC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_css_do_sic(uint16_t mode, uint8_t isc)
+{
+}
+
+static inline void trace_css_do_sic(uint16_t mode, uint8_t isc)
+{
+ if (true) {
+ _nocheck__trace_css_do_sic(mode, isc);
+ }
+}
+
+#define TRACE_VIRTIO_CCW_INTERPRET_CCW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_ccw_interpret_ccw(int cssid, int ssid, int schid, int cmd_code)
+{
+}
+
+static inline void trace_virtio_ccw_interpret_ccw(int cssid, int ssid, int schid, int cmd_code)
+{
+ if (true) {
+ _nocheck__trace_virtio_ccw_interpret_ccw(cssid, ssid, schid, cmd_code);
+ }
+}
+
+#define TRACE_VIRTIO_CCW_NEW_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_ccw_new_device(int cssid, int ssid, int schid, int devno, const char * devno_mode)
+{
+}
+
+static inline void trace_virtio_ccw_new_device(int cssid, int ssid, int schid, int devno, const char * devno_mode)
+{
+ if (true) {
+ _nocheck__trace_virtio_ccw_new_device(cssid, ssid, schid, devno, devno_mode);
+ }
+}
+
+#define TRACE_VIRTIO_CCW_SET_IND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_ccw_set_ind(uint64_t ind_loc, uint8_t ind_old, uint8_t ind_new)
+{
+}
+
+static inline void trace_virtio_ccw_set_ind(uint64_t ind_loc, uint8_t ind_old, uint8_t ind_new)
+{
+ if (true) {
+ _nocheck__trace_virtio_ccw_set_ind(ind_loc, ind_old, ind_new);
+ }
+}
+#endif /* TRACE_HW_S390X_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/scsi/trace.c b/qemu2-auto-generated/hw/scsi/trace.c
new file mode 100644
index 0000000000..6a25090409
--- /dev/null
+++ b/qemu2-auto-generated/hw/scsi/trace.c
@@ -0,0 +1,1940 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_SCSI_REQ_ALLOC_DSTATE;
+uint16_t _TRACE_SCSI_REQ_CANCEL_DSTATE;
+uint16_t _TRACE_SCSI_REQ_DATA_DSTATE;
+uint16_t _TRACE_SCSI_REQ_DATA_CANCELED_DSTATE;
+uint16_t _TRACE_SCSI_REQ_DEQUEUE_DSTATE;
+uint16_t _TRACE_SCSI_REQ_CONTINUE_DSTATE;
+uint16_t _TRACE_SCSI_REQ_CONTINUE_CANCELED_DSTATE;
+uint16_t _TRACE_SCSI_REQ_PARSED_DSTATE;
+uint16_t _TRACE_SCSI_REQ_PARSED_LBA_DSTATE;
+uint16_t _TRACE_SCSI_REQ_PARSE_BAD_DSTATE;
+uint16_t _TRACE_SCSI_REQ_BUILD_SENSE_DSTATE;
+uint16_t _TRACE_SCSI_DEVICE_SET_UA_DSTATE;
+uint16_t _TRACE_SCSI_REPORT_LUNS_DSTATE;
+uint16_t _TRACE_SCSI_INQUIRY_DSTATE;
+uint16_t _TRACE_SCSI_TEST_UNIT_READY_DSTATE;
+uint16_t _TRACE_SCSI_REQUEST_SENSE_DSTATE;
+uint16_t _TRACE_MPTSAS_COMMAND_COMPLETE_DSTATE;
+uint16_t _TRACE_MPTSAS_DIAG_READ_DSTATE;
+uint16_t _TRACE_MPTSAS_DIAG_WRITE_DSTATE;
+uint16_t _TRACE_MPTSAS_IRQ_INTX_DSTATE;
+uint16_t _TRACE_MPTSAS_IRQ_MSI_DSTATE;
+uint16_t _TRACE_MPTSAS_MMIO_READ_DSTATE;
+uint16_t _TRACE_MPTSAS_MMIO_UNHANDLED_READ_DSTATE;
+uint16_t _TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_DSTATE;
+uint16_t _TRACE_MPTSAS_MMIO_WRITE_DSTATE;
+uint16_t _TRACE_MPTSAS_PROCESS_MESSAGE_DSTATE;
+uint16_t _TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_DSTATE;
+uint16_t _TRACE_MPTSAS_RESET_DSTATE;
+uint16_t _TRACE_MPTSAS_SCSI_OVERFLOW_DSTATE;
+uint16_t _TRACE_MPTSAS_SGL_OVERFLOW_DSTATE;
+uint16_t _TRACE_MPTSAS_UNHANDLED_CMD_DSTATE;
+uint16_t _TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_DSTATE;
+uint16_t _TRACE_MPTSAS_CONFIG_SAS_DEVICE_DSTATE;
+uint16_t _TRACE_MPTSAS_CONFIG_SAS_PHY_DSTATE;
+uint16_t _TRACE_MEGASAS_INIT_FIRMWARE_DSTATE;
+uint16_t _TRACE_MEGASAS_INIT_QUEUE_DSTATE;
+uint16_t _TRACE_MEGASAS_INITQ_MAP_FAILED_DSTATE;
+uint16_t _TRACE_MEGASAS_INITQ_MAPPED_DSTATE;
+uint16_t _TRACE_MEGASAS_INITQ_MISMATCH_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_MAPPED_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_NEW_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_BUSY_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_ENQUEUE_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_UPDATE_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_MAP_FAILED_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_COMPLETE_NOIRQ_DSTATE;
+uint16_t _TRACE_MEGASAS_QF_COMPLETE_DSTATE;
+uint16_t _TRACE_MEGASAS_FRAME_BUSY_DSTATE;
+uint16_t _TRACE_MEGASAS_UNHANDLED_FRAME_CMD_DSTATE;
+uint16_t _TRACE_MEGASAS_HANDLE_SCSI_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_DSTATE;
+uint16_t _TRACE_MEGASAS_IOV_READ_OVERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOV_WRITE_OVERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOV_READ_UNDERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_READ_START_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_WRITE_START_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_NODATA_DSTATE;
+uint16_t _TRACE_MEGASAS_SCSI_COMPLETE_DSTATE;
+uint16_t _TRACE_MEGASAS_COMMAND_COMPLETE_DSTATE;
+uint16_t _TRACE_MEGASAS_HANDLE_IO_DSTATE;
+uint16_t _TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_DSTATE;
+uint16_t _TRACE_MEGASAS_IO_READ_START_DSTATE;
+uint16_t _TRACE_MEGASAS_IO_WRITE_START_DSTATE;
+uint16_t _TRACE_MEGASAS_IO_COMPLETE_DSTATE;
+uint16_t _TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOVEC_SGL_INVALID_DSTATE;
+uint16_t _TRACE_MEGASAS_IOVEC_OVERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_IOVEC_UNDERFLOW_DSTATE;
+uint16_t _TRACE_MEGASAS_HANDLE_DCMD_DSTATE;
+uint16_t _TRACE_MEGASAS_FINISH_DCMD_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_FINISH_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_INVALID_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_UNHANDLED_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_ZERO_SGE_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_INVALID_SGE_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_ENTER_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_DUMMY_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_SET_FW_TIME_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_PD_GET_LIST_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_LD_GET_LIST_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_LD_GET_INFO_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_LD_LIST_QUERY_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_PD_GET_INFO_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_PD_LIST_QUERY_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_RESET_LD_DSTATE;
+uint16_t _TRACE_MEGASAS_DCMD_UNSUPPORTED_DSTATE;
+uint16_t _TRACE_MEGASAS_ABORT_FRAME_DSTATE;
+uint16_t _TRACE_MEGASAS_ABORT_NO_CMD_DSTATE;
+uint16_t _TRACE_MEGASAS_ABORT_INVALID_CONTEXT_DSTATE;
+uint16_t _TRACE_MEGASAS_RESET_DSTATE;
+uint16_t _TRACE_MEGASAS_INIT_DSTATE;
+uint16_t _TRACE_MEGASAS_MSIX_RAISE_DSTATE;
+uint16_t _TRACE_MEGASAS_MSI_RAISE_DSTATE;
+uint16_t _TRACE_MEGASAS_IRQ_LOWER_DSTATE;
+uint16_t _TRACE_MEGASAS_IRQ_RAISE_DSTATE;
+uint16_t _TRACE_MEGASAS_INTR_ENABLED_DSTATE;
+uint16_t _TRACE_MEGASAS_INTR_DISABLED_DSTATE;
+uint16_t _TRACE_MEGASAS_MSIX_ENABLED_DSTATE;
+uint16_t _TRACE_MEGASAS_MSI_ENABLED_DSTATE;
+uint16_t _TRACE_MEGASAS_MMIO_READL_DSTATE;
+uint16_t _TRACE_MEGASAS_MMIO_INVALID_READL_DSTATE;
+uint16_t _TRACE_MEGASAS_MMIO_WRITEL_DSTATE;
+uint16_t _TRACE_MEGASAS_MMIO_INVALID_WRITEL_DSTATE;
+uint16_t _TRACE_PVSCSI_RING_INIT_DATA_DSTATE;
+uint16_t _TRACE_PVSCSI_RING_INIT_MSG_DSTATE;
+uint16_t _TRACE_PVSCSI_RING_FLUSH_CMP_DSTATE;
+uint16_t _TRACE_PVSCSI_RING_FLUSH_MSG_DSTATE;
+uint16_t _TRACE_PVSCSI_UPDATE_IRQ_LEVEL_DSTATE;
+uint16_t _TRACE_PVSCSI_UPDATE_IRQ_MSI_DSTATE;
+uint16_t _TRACE_PVSCSI_CMP_RING_PUT_DSTATE;
+uint16_t _TRACE_PVSCSI_MSG_RING_PUT_DSTATE;
+uint16_t _TRACE_PVSCSI_COMPLETE_REQUEST_DSTATE;
+uint16_t _TRACE_PVSCSI_GET_SG_LIST_DSTATE;
+uint16_t _TRACE_PVSCSI_GET_NEXT_SG_ELEM_DSTATE;
+uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_DSTATE;
+uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_DSTATE;
+uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_DSTATE;
+uint16_t _TRACE_PVSCSI_CONVERT_SGLIST_DSTATE;
+uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_DSTATE;
+uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_DSTATE;
+uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_DSTATE;
+uint16_t _TRACE_PVSCSI_PROCESS_IO_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_NOIMPL_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_RESET_DEV_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_ARRIVED_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_ABORT_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_UNKNOWN_DSTATE;
+uint16_t _TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_DSTATE;
+uint16_t _TRACE_PVSCSI_IO_WRITE_DSTATE;
+uint16_t _TRACE_PVSCSI_IO_WRITE_UNKNOWN_DSTATE;
+uint16_t _TRACE_PVSCSI_IO_READ_DSTATE;
+uint16_t _TRACE_PVSCSI_IO_READ_UNKNOWN_DSTATE;
+uint16_t _TRACE_PVSCSI_INIT_MSI_FAIL_DSTATE;
+uint16_t _TRACE_PVSCSI_STATE_DSTATE;
+uint16_t _TRACE_PVSCSI_TX_RINGS_PPN_DSTATE;
+uint16_t _TRACE_PVSCSI_TX_RINGS_NUM_PAGES_DSTATE;
+uint16_t _TRACE_ESP_ERROR_FIFO_OVERRUN_DSTATE;
+uint16_t _TRACE_ESP_ERROR_UNHANDLED_COMMAND_DSTATE;
+uint16_t _TRACE_ESP_ERROR_INVALID_WRITE_DSTATE;
+uint16_t _TRACE_ESP_RAISE_IRQ_DSTATE;
+uint16_t _TRACE_ESP_LOWER_IRQ_DSTATE;
+uint16_t _TRACE_ESP_DMA_ENABLE_DSTATE;
+uint16_t _TRACE_ESP_DMA_DISABLE_DSTATE;
+uint16_t _TRACE_ESP_GET_CMD_DSTATE;
+uint16_t _TRACE_ESP_DO_BUSID_CMD_DSTATE;
+uint16_t _TRACE_ESP_HANDLE_SATN_STOP_DSTATE;
+uint16_t _TRACE_ESP_WRITE_RESPONSE_DSTATE;
+uint16_t _TRACE_ESP_DO_DMA_DSTATE;
+uint16_t _TRACE_ESP_COMMAND_COMPLETE_DSTATE;
+uint16_t _TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_DSTATE;
+uint16_t _TRACE_ESP_COMMAND_COMPLETE_FAIL_DSTATE;
+uint16_t _TRACE_ESP_TRANSFER_DATA_DSTATE;
+uint16_t _TRACE_ESP_HANDLE_TI_DSTATE;
+uint16_t _TRACE_ESP_HANDLE_TI_CMD_DSTATE;
+uint16_t _TRACE_ESP_MEM_READB_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_NOP_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_FLUSH_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_RESET_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_ICCS_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_MSGACC_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_PAD_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SATN_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_RSTATN_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SEL_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SELATN_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SELATNS_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_ENSEL_DSTATE;
+uint16_t _TRACE_ESP_MEM_WRITEB_CMD_DISSEL_DSTATE;
+uint16_t _TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_DSTATE;
+uint16_t _TRACE_ESP_PCI_ERROR_INVALID_READ_DSTATE;
+uint16_t _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DSTATE;
+uint16_t _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_READ_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_WRITE_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_IDLE_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_BLAST_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_ABORT_DSTATE;
+uint16_t _TRACE_ESP_PCI_DMA_START_DSTATE;
+uint16_t _TRACE_ESP_PCI_SBAC_READ_DSTATE;
+uint16_t _TRACE_ESP_PCI_SBAC_WRITE_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SEND_RSP_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_TRANSFER_DATA_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_SAVE_REQUEST_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_LOAD_REQUEST_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_PROCESS_LOGIN_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_QUEUE_CMD_DSTATE;
+uint16_t _TRACE_SPAPR_VSCSI_DO_CRQ_DSTATE;
+TraceEvent _TRACE_SCSI_REQ_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_alloc",
+ .sstate = TRACE_SCSI_REQ_ALLOC_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_ALLOC_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_cancel",
+ .sstate = TRACE_SCSI_REQ_CANCEL_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_CANCEL_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_data",
+ .sstate = TRACE_SCSI_REQ_DATA_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_DATA_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_DATA_CANCELED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_data_canceled",
+ .sstate = TRACE_SCSI_REQ_DATA_CANCELED_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_DATA_CANCELED_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_DEQUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_dequeue",
+ .sstate = TRACE_SCSI_REQ_DEQUEUE_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_DEQUEUE_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_CONTINUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_continue",
+ .sstate = TRACE_SCSI_REQ_CONTINUE_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_CONTINUE_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_CONTINUE_CANCELED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_continue_canceled",
+ .sstate = TRACE_SCSI_REQ_CONTINUE_CANCELED_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_CONTINUE_CANCELED_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_PARSED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_parsed",
+ .sstate = TRACE_SCSI_REQ_PARSED_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_PARSED_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_PARSED_LBA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_parsed_lba",
+ .sstate = TRACE_SCSI_REQ_PARSED_LBA_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_PARSED_LBA_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_PARSE_BAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_parse_bad",
+ .sstate = TRACE_SCSI_REQ_PARSE_BAD_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_PARSE_BAD_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQ_BUILD_SENSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_req_build_sense",
+ .sstate = TRACE_SCSI_REQ_BUILD_SENSE_ENABLED,
+ .dstate = &_TRACE_SCSI_REQ_BUILD_SENSE_DSTATE
+};
+TraceEvent _TRACE_SCSI_DEVICE_SET_UA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_device_set_ua",
+ .sstate = TRACE_SCSI_DEVICE_SET_UA_ENABLED,
+ .dstate = &_TRACE_SCSI_DEVICE_SET_UA_DSTATE
+};
+TraceEvent _TRACE_SCSI_REPORT_LUNS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_report_luns",
+ .sstate = TRACE_SCSI_REPORT_LUNS_ENABLED,
+ .dstate = &_TRACE_SCSI_REPORT_LUNS_DSTATE
+};
+TraceEvent _TRACE_SCSI_INQUIRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_inquiry",
+ .sstate = TRACE_SCSI_INQUIRY_ENABLED,
+ .dstate = &_TRACE_SCSI_INQUIRY_DSTATE
+};
+TraceEvent _TRACE_SCSI_TEST_UNIT_READY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_test_unit_ready",
+ .sstate = TRACE_SCSI_TEST_UNIT_READY_ENABLED,
+ .dstate = &_TRACE_SCSI_TEST_UNIT_READY_DSTATE
+};
+TraceEvent _TRACE_SCSI_REQUEST_SENSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "scsi_request_sense",
+ .sstate = TRACE_SCSI_REQUEST_SENSE_ENABLED,
+ .dstate = &_TRACE_SCSI_REQUEST_SENSE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_COMMAND_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_command_complete",
+ .sstate = TRACE_MPTSAS_COMMAND_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_COMMAND_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_DIAG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_diag_read",
+ .sstate = TRACE_MPTSAS_DIAG_READ_ENABLED,
+ .dstate = &_TRACE_MPTSAS_DIAG_READ_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_DIAG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_diag_write",
+ .sstate = TRACE_MPTSAS_DIAG_WRITE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_DIAG_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_IRQ_INTX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_irq_intx",
+ .sstate = TRACE_MPTSAS_IRQ_INTX_ENABLED,
+ .dstate = &_TRACE_MPTSAS_IRQ_INTX_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_IRQ_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_irq_msi",
+ .sstate = TRACE_MPTSAS_IRQ_MSI_ENABLED,
+ .dstate = &_TRACE_MPTSAS_IRQ_MSI_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_MMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_mmio_read",
+ .sstate = TRACE_MPTSAS_MMIO_READ_ENABLED,
+ .dstate = &_TRACE_MPTSAS_MMIO_READ_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_MMIO_UNHANDLED_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_mmio_unhandled_read",
+ .sstate = TRACE_MPTSAS_MMIO_UNHANDLED_READ_ENABLED,
+ .dstate = &_TRACE_MPTSAS_MMIO_UNHANDLED_READ_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_mmio_unhandled_write",
+ .sstate = TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_MMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_mmio_write",
+ .sstate = TRACE_MPTSAS_MMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_MMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_PROCESS_MESSAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_process_message",
+ .sstate = TRACE_MPTSAS_PROCESS_MESSAGE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_PROCESS_MESSAGE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_process_scsi_io_request",
+ .sstate = TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_ENABLED,
+ .dstate = &_TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_reset",
+ .sstate = TRACE_MPTSAS_RESET_ENABLED,
+ .dstate = &_TRACE_MPTSAS_RESET_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_SCSI_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_scsi_overflow",
+ .sstate = TRACE_MPTSAS_SCSI_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MPTSAS_SCSI_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_SGL_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_sgl_overflow",
+ .sstate = TRACE_MPTSAS_SGL_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MPTSAS_SGL_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_UNHANDLED_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_unhandled_cmd",
+ .sstate = TRACE_MPTSAS_UNHANDLED_CMD_ENABLED,
+ .dstate = &_TRACE_MPTSAS_UNHANDLED_CMD_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_unhandled_doorbell_cmd",
+ .sstate = TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_ENABLED,
+ .dstate = &_TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_CONFIG_SAS_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_config_sas_device",
+ .sstate = TRACE_MPTSAS_CONFIG_SAS_DEVICE_ENABLED,
+ .dstate = &_TRACE_MPTSAS_CONFIG_SAS_DEVICE_DSTATE
+};
+TraceEvent _TRACE_MPTSAS_CONFIG_SAS_PHY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mptsas_config_sas_phy",
+ .sstate = TRACE_MPTSAS_CONFIG_SAS_PHY_ENABLED,
+ .dstate = &_TRACE_MPTSAS_CONFIG_SAS_PHY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INIT_FIRMWARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_init_firmware",
+ .sstate = TRACE_MEGASAS_INIT_FIRMWARE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INIT_FIRMWARE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INIT_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_init_queue",
+ .sstate = TRACE_MEGASAS_INIT_QUEUE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INIT_QUEUE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INITQ_MAP_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_initq_map_failed",
+ .sstate = TRACE_MEGASAS_INITQ_MAP_FAILED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INITQ_MAP_FAILED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INITQ_MAPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_initq_mapped",
+ .sstate = TRACE_MEGASAS_INITQ_MAPPED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INITQ_MAPPED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INITQ_MISMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_initq_mismatch",
+ .sstate = TRACE_MEGASAS_INITQ_MISMATCH_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INITQ_MISMATCH_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_MAPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_mapped",
+ .sstate = TRACE_MEGASAS_QF_MAPPED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_MAPPED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_new",
+ .sstate = TRACE_MEGASAS_QF_NEW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_NEW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_BUSY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_busy",
+ .sstate = TRACE_MEGASAS_QF_BUSY_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_BUSY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_ENQUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_enqueue",
+ .sstate = TRACE_MEGASAS_QF_ENQUEUE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_ENQUEUE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_update",
+ .sstate = TRACE_MEGASAS_QF_UPDATE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_UPDATE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_MAP_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_map_failed",
+ .sstate = TRACE_MEGASAS_QF_MAP_FAILED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_MAP_FAILED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_COMPLETE_NOIRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_complete_noirq",
+ .sstate = TRACE_MEGASAS_QF_COMPLETE_NOIRQ_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_COMPLETE_NOIRQ_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_QF_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_qf_complete",
+ .sstate = TRACE_MEGASAS_QF_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_QF_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_FRAME_BUSY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_frame_busy",
+ .sstate = TRACE_MEGASAS_FRAME_BUSY_ENABLED,
+ .dstate = &_TRACE_MEGASAS_FRAME_BUSY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_UNHANDLED_FRAME_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_unhandled_frame_cmd",
+ .sstate = TRACE_MEGASAS_UNHANDLED_FRAME_CMD_ENABLED,
+ .dstate = &_TRACE_MEGASAS_UNHANDLED_FRAME_CMD_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_HANDLE_SCSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_handle_scsi",
+ .sstate = TRACE_MEGASAS_HANDLE_SCSI_ENABLED,
+ .dstate = &_TRACE_MEGASAS_HANDLE_SCSI_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_target_not_present",
+ .sstate = TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_invalid_cdb_len",
+ .sstate = TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOV_READ_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iov_read_overflow",
+ .sstate = TRACE_MEGASAS_IOV_READ_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOV_READ_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOV_WRITE_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iov_write_overflow",
+ .sstate = TRACE_MEGASAS_IOV_WRITE_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOV_WRITE_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOV_READ_UNDERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iov_read_underflow",
+ .sstate = TRACE_MEGASAS_IOV_READ_UNDERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOV_READ_UNDERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iov_write_underflow",
+ .sstate = TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_req_alloc_failed",
+ .sstate = TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_READ_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_read_start",
+ .sstate = TRACE_MEGASAS_SCSI_READ_START_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_READ_START_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_WRITE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_write_start",
+ .sstate = TRACE_MEGASAS_SCSI_WRITE_START_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_WRITE_START_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_NODATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_nodata",
+ .sstate = TRACE_MEGASAS_SCSI_NODATA_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_NODATA_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_SCSI_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_scsi_complete",
+ .sstate = TRACE_MEGASAS_SCSI_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_SCSI_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_COMMAND_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_command_complete",
+ .sstate = TRACE_MEGASAS_COMMAND_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_COMMAND_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_HANDLE_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_handle_io",
+ .sstate = TRACE_MEGASAS_HANDLE_IO_ENABLED,
+ .dstate = &_TRACE_MEGASAS_HANDLE_IO_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_io_target_not_present",
+ .sstate = TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IO_READ_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_io_read_start",
+ .sstate = TRACE_MEGASAS_IO_READ_START_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IO_READ_START_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IO_WRITE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_io_write_start",
+ .sstate = TRACE_MEGASAS_IO_WRITE_START_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IO_WRITE_START_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IO_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_io_complete",
+ .sstate = TRACE_MEGASAS_IO_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IO_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iovec_sgl_overflow",
+ .sstate = TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iovec_sgl_underflow",
+ .sstate = TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOVEC_SGL_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iovec_sgl_invalid",
+ .sstate = TRACE_MEGASAS_IOVEC_SGL_INVALID_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOVEC_SGL_INVALID_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOVEC_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iovec_overflow",
+ .sstate = TRACE_MEGASAS_IOVEC_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOVEC_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IOVEC_UNDERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_iovec_underflow",
+ .sstate = TRACE_MEGASAS_IOVEC_UNDERFLOW_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IOVEC_UNDERFLOW_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_HANDLE_DCMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_handle_dcmd",
+ .sstate = TRACE_MEGASAS_HANDLE_DCMD_ENABLED,
+ .dstate = &_TRACE_MEGASAS_HANDLE_DCMD_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_FINISH_DCMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_finish_dcmd",
+ .sstate = TRACE_MEGASAS_FINISH_DCMD_ENABLED,
+ .dstate = &_TRACE_MEGASAS_FINISH_DCMD_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_req_alloc_failed",
+ .sstate = TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_internal_submit",
+ .sstate = TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_internal_finish",
+ .sstate = TRACE_MEGASAS_DCMD_INTERNAL_FINISH_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_INTERNAL_FINISH_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_internal_invalid",
+ .sstate = TRACE_MEGASAS_DCMD_INTERNAL_INVALID_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_INTERNAL_INVALID_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_UNHANDLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_unhandled",
+ .sstate = TRACE_MEGASAS_DCMD_UNHANDLED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_UNHANDLED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_ZERO_SGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_zero_sge",
+ .sstate = TRACE_MEGASAS_DCMD_ZERO_SGE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_ZERO_SGE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_INVALID_SGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_invalid_sge",
+ .sstate = TRACE_MEGASAS_DCMD_INVALID_SGE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_INVALID_SGE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_invalid_xfer_len",
+ .sstate = TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_enter",
+ .sstate = TRACE_MEGASAS_DCMD_ENTER_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_ENTER_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_DUMMY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_dummy",
+ .sstate = TRACE_MEGASAS_DCMD_DUMMY_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_DUMMY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_SET_FW_TIME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_set_fw_time",
+ .sstate = TRACE_MEGASAS_DCMD_SET_FW_TIME_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_SET_FW_TIME_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_PD_GET_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_pd_get_list",
+ .sstate = TRACE_MEGASAS_DCMD_PD_GET_LIST_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_PD_GET_LIST_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_LD_GET_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_ld_get_list",
+ .sstate = TRACE_MEGASAS_DCMD_LD_GET_LIST_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_LD_GET_LIST_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_LD_GET_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_ld_get_info",
+ .sstate = TRACE_MEGASAS_DCMD_LD_GET_INFO_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_LD_GET_INFO_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_LD_LIST_QUERY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_ld_list_query",
+ .sstate = TRACE_MEGASAS_DCMD_LD_LIST_QUERY_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_LD_LIST_QUERY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_PD_GET_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_pd_get_info",
+ .sstate = TRACE_MEGASAS_DCMD_PD_GET_INFO_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_PD_GET_INFO_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_PD_LIST_QUERY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_pd_list_query",
+ .sstate = TRACE_MEGASAS_DCMD_PD_LIST_QUERY_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_PD_LIST_QUERY_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_RESET_LD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_reset_ld",
+ .sstate = TRACE_MEGASAS_DCMD_RESET_LD_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_RESET_LD_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_DCMD_UNSUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_dcmd_unsupported",
+ .sstate = TRACE_MEGASAS_DCMD_UNSUPPORTED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_DCMD_UNSUPPORTED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_ABORT_FRAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_abort_frame",
+ .sstate = TRACE_MEGASAS_ABORT_FRAME_ENABLED,
+ .dstate = &_TRACE_MEGASAS_ABORT_FRAME_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_ABORT_NO_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_abort_no_cmd",
+ .sstate = TRACE_MEGASAS_ABORT_NO_CMD_ENABLED,
+ .dstate = &_TRACE_MEGASAS_ABORT_NO_CMD_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_ABORT_INVALID_CONTEXT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_abort_invalid_context",
+ .sstate = TRACE_MEGASAS_ABORT_INVALID_CONTEXT_ENABLED,
+ .dstate = &_TRACE_MEGASAS_ABORT_INVALID_CONTEXT_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_reset",
+ .sstate = TRACE_MEGASAS_RESET_ENABLED,
+ .dstate = &_TRACE_MEGASAS_RESET_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_init",
+ .sstate = TRACE_MEGASAS_INIT_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INIT_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MSIX_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_msix_raise",
+ .sstate = TRACE_MEGASAS_MSIX_RAISE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MSIX_RAISE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MSI_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_msi_raise",
+ .sstate = TRACE_MEGASAS_MSI_RAISE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MSI_RAISE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IRQ_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_irq_lower",
+ .sstate = TRACE_MEGASAS_IRQ_LOWER_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IRQ_LOWER_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_IRQ_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_irq_raise",
+ .sstate = TRACE_MEGASAS_IRQ_RAISE_ENABLED,
+ .dstate = &_TRACE_MEGASAS_IRQ_RAISE_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INTR_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_intr_enabled",
+ .sstate = TRACE_MEGASAS_INTR_ENABLED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INTR_ENABLED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_INTR_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_intr_disabled",
+ .sstate = TRACE_MEGASAS_INTR_DISABLED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_INTR_DISABLED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MSIX_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_msix_enabled",
+ .sstate = TRACE_MEGASAS_MSIX_ENABLED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MSIX_ENABLED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MSI_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_msi_enabled",
+ .sstate = TRACE_MEGASAS_MSI_ENABLED_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MSI_ENABLED_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MMIO_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_mmio_readl",
+ .sstate = TRACE_MEGASAS_MMIO_READL_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MMIO_READL_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MMIO_INVALID_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_mmio_invalid_readl",
+ .sstate = TRACE_MEGASAS_MMIO_INVALID_READL_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MMIO_INVALID_READL_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MMIO_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_mmio_writel",
+ .sstate = TRACE_MEGASAS_MMIO_WRITEL_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MMIO_WRITEL_DSTATE
+};
+TraceEvent _TRACE_MEGASAS_MMIO_INVALID_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "megasas_mmio_invalid_writel",
+ .sstate = TRACE_MEGASAS_MMIO_INVALID_WRITEL_ENABLED,
+ .dstate = &_TRACE_MEGASAS_MMIO_INVALID_WRITEL_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_RING_INIT_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_ring_init_data",
+ .sstate = TRACE_PVSCSI_RING_INIT_DATA_ENABLED,
+ .dstate = &_TRACE_PVSCSI_RING_INIT_DATA_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_RING_INIT_MSG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_ring_init_msg",
+ .sstate = TRACE_PVSCSI_RING_INIT_MSG_ENABLED,
+ .dstate = &_TRACE_PVSCSI_RING_INIT_MSG_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_RING_FLUSH_CMP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_ring_flush_cmp",
+ .sstate = TRACE_PVSCSI_RING_FLUSH_CMP_ENABLED,
+ .dstate = &_TRACE_PVSCSI_RING_FLUSH_CMP_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_RING_FLUSH_MSG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_ring_flush_msg",
+ .sstate = TRACE_PVSCSI_RING_FLUSH_MSG_ENABLED,
+ .dstate = &_TRACE_PVSCSI_RING_FLUSH_MSG_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_UPDATE_IRQ_LEVEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_update_irq_level",
+ .sstate = TRACE_PVSCSI_UPDATE_IRQ_LEVEL_ENABLED,
+ .dstate = &_TRACE_PVSCSI_UPDATE_IRQ_LEVEL_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_UPDATE_IRQ_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_update_irq_msi",
+ .sstate = TRACE_PVSCSI_UPDATE_IRQ_MSI_ENABLED,
+ .dstate = &_TRACE_PVSCSI_UPDATE_IRQ_MSI_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_CMP_RING_PUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_cmp_ring_put",
+ .sstate = TRACE_PVSCSI_CMP_RING_PUT_ENABLED,
+ .dstate = &_TRACE_PVSCSI_CMP_RING_PUT_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_MSG_RING_PUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_msg_ring_put",
+ .sstate = TRACE_PVSCSI_MSG_RING_PUT_ENABLED,
+ .dstate = &_TRACE_PVSCSI_MSG_RING_PUT_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_COMPLETE_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_complete_request",
+ .sstate = TRACE_PVSCSI_COMPLETE_REQUEST_ENABLED,
+ .dstate = &_TRACE_PVSCSI_COMPLETE_REQUEST_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_GET_SG_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_get_sg_list",
+ .sstate = TRACE_PVSCSI_GET_SG_LIST_ENABLED,
+ .dstate = &_TRACE_PVSCSI_GET_SG_LIST_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_GET_NEXT_SG_ELEM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_get_next_sg_elem",
+ .sstate = TRACE_PVSCSI_GET_NEXT_SG_ELEM_ENABLED,
+ .dstate = &_TRACE_PVSCSI_GET_NEXT_SG_ELEM_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_command_complete_not_found",
+ .sstate = TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_ENABLED,
+ .dstate = &_TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_command_complete_data_run",
+ .sstate = TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_command_complete_sense_len",
+ .sstate = TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_CONVERT_SGLIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_convert_sglist",
+ .sstate = TRACE_PVSCSI_CONVERT_SGLIST_ENABLED,
+ .dstate = &_TRACE_PVSCSI_CONVERT_SGLIST_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_process_req_descr",
+ .sstate = TRACE_PVSCSI_PROCESS_REQ_DESCR_ENABLED,
+ .dstate = &_TRACE_PVSCSI_PROCESS_REQ_DESCR_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_process_req_descr_unknown_device",
+ .sstate = TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_ENABLED,
+ .dstate = &_TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_process_req_descr_invalid_dir",
+ .sstate = TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_ENABLED,
+ .dstate = &_TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_PROCESS_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_process_io",
+ .sstate = TRACE_PVSCSI_PROCESS_IO_ENABLED,
+ .dstate = &_TRACE_PVSCSI_PROCESS_IO_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_NOIMPL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_noimpl",
+ .sstate = TRACE_PVSCSI_ON_CMD_NOIMPL_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_NOIMPL_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_RESET_DEV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_reset_dev",
+ .sstate = TRACE_PVSCSI_ON_CMD_RESET_DEV_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_RESET_DEV_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_ARRIVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_arrived",
+ .sstate = TRACE_PVSCSI_ON_CMD_ARRIVED_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_ARRIVED_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_ABORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_abort",
+ .sstate = TRACE_PVSCSI_ON_CMD_ABORT_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_ABORT_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_unknown",
+ .sstate = TRACE_PVSCSI_ON_CMD_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_on_cmd_unknown_data",
+ .sstate = TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_ENABLED,
+ .dstate = &_TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_IO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_io_write",
+ .sstate = TRACE_PVSCSI_IO_WRITE_ENABLED,
+ .dstate = &_TRACE_PVSCSI_IO_WRITE_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_IO_WRITE_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_io_write_unknown",
+ .sstate = TRACE_PVSCSI_IO_WRITE_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_IO_WRITE_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_IO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_io_read",
+ .sstate = TRACE_PVSCSI_IO_READ_ENABLED,
+ .dstate = &_TRACE_PVSCSI_IO_READ_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_IO_READ_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_io_read_unknown",
+ .sstate = TRACE_PVSCSI_IO_READ_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_IO_READ_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_INIT_MSI_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_init_msi_fail",
+ .sstate = TRACE_PVSCSI_INIT_MSI_FAIL_ENABLED,
+ .dstate = &_TRACE_PVSCSI_INIT_MSI_FAIL_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_state",
+ .sstate = TRACE_PVSCSI_STATE_ENABLED,
+ .dstate = &_TRACE_PVSCSI_STATE_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_TX_RINGS_PPN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_tx_rings_ppn",
+ .sstate = TRACE_PVSCSI_TX_RINGS_PPN_ENABLED,
+ .dstate = &_TRACE_PVSCSI_TX_RINGS_PPN_DSTATE
+};
+TraceEvent _TRACE_PVSCSI_TX_RINGS_NUM_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pvscsi_tx_rings_num_pages",
+ .sstate = TRACE_PVSCSI_TX_RINGS_NUM_PAGES_ENABLED,
+ .dstate = &_TRACE_PVSCSI_TX_RINGS_NUM_PAGES_DSTATE
+};
+TraceEvent _TRACE_ESP_ERROR_FIFO_OVERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_error_fifo_overrun",
+ .sstate = TRACE_ESP_ERROR_FIFO_OVERRUN_ENABLED,
+ .dstate = &_TRACE_ESP_ERROR_FIFO_OVERRUN_DSTATE
+};
+TraceEvent _TRACE_ESP_ERROR_UNHANDLED_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_error_unhandled_command",
+ .sstate = TRACE_ESP_ERROR_UNHANDLED_COMMAND_ENABLED,
+ .dstate = &_TRACE_ESP_ERROR_UNHANDLED_COMMAND_DSTATE
+};
+TraceEvent _TRACE_ESP_ERROR_INVALID_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_error_invalid_write",
+ .sstate = TRACE_ESP_ERROR_INVALID_WRITE_ENABLED,
+ .dstate = &_TRACE_ESP_ERROR_INVALID_WRITE_DSTATE
+};
+TraceEvent _TRACE_ESP_RAISE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_raise_irq",
+ .sstate = TRACE_ESP_RAISE_IRQ_ENABLED,
+ .dstate = &_TRACE_ESP_RAISE_IRQ_DSTATE
+};
+TraceEvent _TRACE_ESP_LOWER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_lower_irq",
+ .sstate = TRACE_ESP_LOWER_IRQ_ENABLED,
+ .dstate = &_TRACE_ESP_LOWER_IRQ_DSTATE
+};
+TraceEvent _TRACE_ESP_DMA_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_dma_enable",
+ .sstate = TRACE_ESP_DMA_ENABLE_ENABLED,
+ .dstate = &_TRACE_ESP_DMA_ENABLE_DSTATE
+};
+TraceEvent _TRACE_ESP_DMA_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_dma_disable",
+ .sstate = TRACE_ESP_DMA_DISABLE_ENABLED,
+ .dstate = &_TRACE_ESP_DMA_DISABLE_DSTATE
+};
+TraceEvent _TRACE_ESP_GET_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_get_cmd",
+ .sstate = TRACE_ESP_GET_CMD_ENABLED,
+ .dstate = &_TRACE_ESP_GET_CMD_DSTATE
+};
+TraceEvent _TRACE_ESP_DO_BUSID_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_do_busid_cmd",
+ .sstate = TRACE_ESP_DO_BUSID_CMD_ENABLED,
+ .dstate = &_TRACE_ESP_DO_BUSID_CMD_DSTATE
+};
+TraceEvent _TRACE_ESP_HANDLE_SATN_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_handle_satn_stop",
+ .sstate = TRACE_ESP_HANDLE_SATN_STOP_ENABLED,
+ .dstate = &_TRACE_ESP_HANDLE_SATN_STOP_DSTATE
+};
+TraceEvent _TRACE_ESP_WRITE_RESPONSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_write_response",
+ .sstate = TRACE_ESP_WRITE_RESPONSE_ENABLED,
+ .dstate = &_TRACE_ESP_WRITE_RESPONSE_DSTATE
+};
+TraceEvent _TRACE_ESP_DO_DMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_do_dma",
+ .sstate = TRACE_ESP_DO_DMA_ENABLED,
+ .dstate = &_TRACE_ESP_DO_DMA_DSTATE
+};
+TraceEvent _TRACE_ESP_COMMAND_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_command_complete",
+ .sstate = TRACE_ESP_COMMAND_COMPLETE_ENABLED,
+ .dstate = &_TRACE_ESP_COMMAND_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_command_complete_unexpected",
+ .sstate = TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_ENABLED,
+ .dstate = &_TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_DSTATE
+};
+TraceEvent _TRACE_ESP_COMMAND_COMPLETE_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_command_complete_fail",
+ .sstate = TRACE_ESP_COMMAND_COMPLETE_FAIL_ENABLED,
+ .dstate = &_TRACE_ESP_COMMAND_COMPLETE_FAIL_DSTATE
+};
+TraceEvent _TRACE_ESP_TRANSFER_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_transfer_data",
+ .sstate = TRACE_ESP_TRANSFER_DATA_ENABLED,
+ .dstate = &_TRACE_ESP_TRANSFER_DATA_DSTATE
+};
+TraceEvent _TRACE_ESP_HANDLE_TI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_handle_ti",
+ .sstate = TRACE_ESP_HANDLE_TI_ENABLED,
+ .dstate = &_TRACE_ESP_HANDLE_TI_DSTATE
+};
+TraceEvent _TRACE_ESP_HANDLE_TI_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_handle_ti_cmd",
+ .sstate = TRACE_ESP_HANDLE_TI_CMD_ENABLED,
+ .dstate = &_TRACE_ESP_HANDLE_TI_CMD_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_READB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_readb",
+ .sstate = TRACE_ESP_MEM_READB_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_READB_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb",
+ .sstate = TRACE_ESP_MEM_WRITEB_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_NOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_nop",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_NOP_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_NOP_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_flush",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_FLUSH_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_FLUSH_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_reset",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_RESET_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_RESET_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_bus_reset",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_ICCS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_iccs",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_ICCS_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_ICCS_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_MSGACC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_msgacc",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_MSGACC_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_MSGACC_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_PAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_pad",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_PAD_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_PAD_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SATN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_satn",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_SATN_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_SATN_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_RSTATN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_rstatn",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_RSTATN_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_RSTATN_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_sel",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_SEL_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_SEL_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SELATN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_selatn",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_SELATN_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_SELATN_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SELATNS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_selatns",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_SELATNS_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_SELATNS_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_ENSEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_ensel",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_ENSEL_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_ENSEL_DSTATE
+};
+TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_DISSEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_mem_writeb_cmd_dissel",
+ .sstate = TRACE_ESP_MEM_WRITEB_CMD_DISSEL_ENABLED,
+ .dstate = &_TRACE_ESP_MEM_WRITEB_CMD_DISSEL_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_error_invalid_dma_direction",
+ .sstate = TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_error_invalid_read",
+ .sstate = TRACE_ESP_PCI_ERROR_INVALID_READ_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_ERROR_INVALID_READ_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_error_invalid_write",
+ .sstate = TRACE_ESP_PCI_ERROR_INVALID_WRITE_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_ERROR_INVALID_WRITE_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_error_invalid_write_dma",
+ .sstate = TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_read",
+ .sstate = TRACE_ESP_PCI_DMA_READ_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_READ_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_write",
+ .sstate = TRACE_ESP_PCI_DMA_WRITE_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_WRITE_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_IDLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_idle",
+ .sstate = TRACE_ESP_PCI_DMA_IDLE_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_IDLE_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_BLAST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_blast",
+ .sstate = TRACE_ESP_PCI_DMA_BLAST_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_BLAST_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_ABORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_abort",
+ .sstate = TRACE_ESP_PCI_DMA_ABORT_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_ABORT_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_DMA_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_dma_start",
+ .sstate = TRACE_ESP_PCI_DMA_START_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_DMA_START_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_SBAC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_sbac_read",
+ .sstate = TRACE_ESP_PCI_SBAC_READ_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_SBAC_READ_DSTATE
+};
+TraceEvent _TRACE_ESP_PCI_SBAC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "esp_pci_sbac_write",
+ .sstate = TRACE_ESP_PCI_SBAC_WRITE_ENABLED,
+ .dstate = &_TRACE_ESP_PCI_SBAC_WRITE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SEND_RSP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_send_rsp",
+ .sstate = TRACE_SPAPR_VSCSI_SEND_RSP_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SEND_RSP_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_no_data",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_direct",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_indirect",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_out_of_range",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_dma_read_error",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_indirect_seg_ext",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_out_of_desc",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_out_of_desc_boundary",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_fetch_desc_done",
+ .sstate = TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_srp_indirect_data",
+ .sstate = TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_srp_indirect_data_rw",
+ .sstate = TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_srp_indirect_data_buf",
+ .sstate = TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_srp_transfer_data",
+ .sstate = TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_TRANSFER_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_transfer_data",
+ .sstate = TRACE_SPAPR_VSCSI_TRANSFER_DATA_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_TRANSFER_DATA_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_command_complete",
+ .sstate = TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_command_complete_sense_data1",
+ .sstate = TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_command_complete_sense_data2",
+ .sstate = TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_command_complete_status",
+ .sstate = TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_SAVE_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_save_request",
+ .sstate = TRACE_SPAPR_VSCSI_SAVE_REQUEST_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_SAVE_REQUEST_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_LOAD_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_load_request",
+ .sstate = TRACE_SPAPR_VSCSI_LOAD_REQUEST_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_LOAD_REQUEST_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_PROCESS_LOGIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_process_login",
+ .sstate = TRACE_SPAPR_VSCSI_PROCESS_LOGIN_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_PROCESS_LOGIN_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_queue_cmd_no_drive",
+ .sstate = TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_QUEUE_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_queue_cmd",
+ .sstate = TRACE_SPAPR_VSCSI_QUEUE_CMD_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_QUEUE_CMD_DSTATE
+};
+TraceEvent _TRACE_SPAPR_VSCSI_DO_CRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "spapr_vscsi_do_crq",
+ .sstate = TRACE_SPAPR_VSCSI_DO_CRQ_ENABLED,
+ .dstate = &_TRACE_SPAPR_VSCSI_DO_CRQ_DSTATE
+};
+TraceEvent *hw_scsi_trace_events[] = {
+ &_TRACE_SCSI_REQ_ALLOC_EVENT,
+ &_TRACE_SCSI_REQ_CANCEL_EVENT,
+ &_TRACE_SCSI_REQ_DATA_EVENT,
+ &_TRACE_SCSI_REQ_DATA_CANCELED_EVENT,
+ &_TRACE_SCSI_REQ_DEQUEUE_EVENT,
+ &_TRACE_SCSI_REQ_CONTINUE_EVENT,
+ &_TRACE_SCSI_REQ_CONTINUE_CANCELED_EVENT,
+ &_TRACE_SCSI_REQ_PARSED_EVENT,
+ &_TRACE_SCSI_REQ_PARSED_LBA_EVENT,
+ &_TRACE_SCSI_REQ_PARSE_BAD_EVENT,
+ &_TRACE_SCSI_REQ_BUILD_SENSE_EVENT,
+ &_TRACE_SCSI_DEVICE_SET_UA_EVENT,
+ &_TRACE_SCSI_REPORT_LUNS_EVENT,
+ &_TRACE_SCSI_INQUIRY_EVENT,
+ &_TRACE_SCSI_TEST_UNIT_READY_EVENT,
+ &_TRACE_SCSI_REQUEST_SENSE_EVENT,
+ &_TRACE_MPTSAS_COMMAND_COMPLETE_EVENT,
+ &_TRACE_MPTSAS_DIAG_READ_EVENT,
+ &_TRACE_MPTSAS_DIAG_WRITE_EVENT,
+ &_TRACE_MPTSAS_IRQ_INTX_EVENT,
+ &_TRACE_MPTSAS_IRQ_MSI_EVENT,
+ &_TRACE_MPTSAS_MMIO_READ_EVENT,
+ &_TRACE_MPTSAS_MMIO_UNHANDLED_READ_EVENT,
+ &_TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_EVENT,
+ &_TRACE_MPTSAS_MMIO_WRITE_EVENT,
+ &_TRACE_MPTSAS_PROCESS_MESSAGE_EVENT,
+ &_TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_EVENT,
+ &_TRACE_MPTSAS_RESET_EVENT,
+ &_TRACE_MPTSAS_SCSI_OVERFLOW_EVENT,
+ &_TRACE_MPTSAS_SGL_OVERFLOW_EVENT,
+ &_TRACE_MPTSAS_UNHANDLED_CMD_EVENT,
+ &_TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_EVENT,
+ &_TRACE_MPTSAS_CONFIG_SAS_DEVICE_EVENT,
+ &_TRACE_MPTSAS_CONFIG_SAS_PHY_EVENT,
+ &_TRACE_MEGASAS_INIT_FIRMWARE_EVENT,
+ &_TRACE_MEGASAS_INIT_QUEUE_EVENT,
+ &_TRACE_MEGASAS_INITQ_MAP_FAILED_EVENT,
+ &_TRACE_MEGASAS_INITQ_MAPPED_EVENT,
+ &_TRACE_MEGASAS_INITQ_MISMATCH_EVENT,
+ &_TRACE_MEGASAS_QF_MAPPED_EVENT,
+ &_TRACE_MEGASAS_QF_NEW_EVENT,
+ &_TRACE_MEGASAS_QF_BUSY_EVENT,
+ &_TRACE_MEGASAS_QF_ENQUEUE_EVENT,
+ &_TRACE_MEGASAS_QF_UPDATE_EVENT,
+ &_TRACE_MEGASAS_QF_MAP_FAILED_EVENT,
+ &_TRACE_MEGASAS_QF_COMPLETE_NOIRQ_EVENT,
+ &_TRACE_MEGASAS_QF_COMPLETE_EVENT,
+ &_TRACE_MEGASAS_FRAME_BUSY_EVENT,
+ &_TRACE_MEGASAS_UNHANDLED_FRAME_CMD_EVENT,
+ &_TRACE_MEGASAS_HANDLE_SCSI_EVENT,
+ &_TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_EVENT,
+ &_TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_EVENT,
+ &_TRACE_MEGASAS_IOV_READ_OVERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOV_WRITE_OVERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOV_READ_UNDERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_EVENT,
+ &_TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_EVENT,
+ &_TRACE_MEGASAS_SCSI_READ_START_EVENT,
+ &_TRACE_MEGASAS_SCSI_WRITE_START_EVENT,
+ &_TRACE_MEGASAS_SCSI_NODATA_EVENT,
+ &_TRACE_MEGASAS_SCSI_COMPLETE_EVENT,
+ &_TRACE_MEGASAS_COMMAND_COMPLETE_EVENT,
+ &_TRACE_MEGASAS_HANDLE_IO_EVENT,
+ &_TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_EVENT,
+ &_TRACE_MEGASAS_IO_READ_START_EVENT,
+ &_TRACE_MEGASAS_IO_WRITE_START_EVENT,
+ &_TRACE_MEGASAS_IO_COMPLETE_EVENT,
+ &_TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOVEC_SGL_INVALID_EVENT,
+ &_TRACE_MEGASAS_IOVEC_OVERFLOW_EVENT,
+ &_TRACE_MEGASAS_IOVEC_UNDERFLOW_EVENT,
+ &_TRACE_MEGASAS_HANDLE_DCMD_EVENT,
+ &_TRACE_MEGASAS_FINISH_DCMD_EVENT,
+ &_TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_EVENT,
+ &_TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_EVENT,
+ &_TRACE_MEGASAS_DCMD_INTERNAL_FINISH_EVENT,
+ &_TRACE_MEGASAS_DCMD_INTERNAL_INVALID_EVENT,
+ &_TRACE_MEGASAS_DCMD_UNHANDLED_EVENT,
+ &_TRACE_MEGASAS_DCMD_ZERO_SGE_EVENT,
+ &_TRACE_MEGASAS_DCMD_INVALID_SGE_EVENT,
+ &_TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_EVENT,
+ &_TRACE_MEGASAS_DCMD_ENTER_EVENT,
+ &_TRACE_MEGASAS_DCMD_DUMMY_EVENT,
+ &_TRACE_MEGASAS_DCMD_SET_FW_TIME_EVENT,
+ &_TRACE_MEGASAS_DCMD_PD_GET_LIST_EVENT,
+ &_TRACE_MEGASAS_DCMD_LD_GET_LIST_EVENT,
+ &_TRACE_MEGASAS_DCMD_LD_GET_INFO_EVENT,
+ &_TRACE_MEGASAS_DCMD_LD_LIST_QUERY_EVENT,
+ &_TRACE_MEGASAS_DCMD_PD_GET_INFO_EVENT,
+ &_TRACE_MEGASAS_DCMD_PD_LIST_QUERY_EVENT,
+ &_TRACE_MEGASAS_DCMD_RESET_LD_EVENT,
+ &_TRACE_MEGASAS_DCMD_UNSUPPORTED_EVENT,
+ &_TRACE_MEGASAS_ABORT_FRAME_EVENT,
+ &_TRACE_MEGASAS_ABORT_NO_CMD_EVENT,
+ &_TRACE_MEGASAS_ABORT_INVALID_CONTEXT_EVENT,
+ &_TRACE_MEGASAS_RESET_EVENT,
+ &_TRACE_MEGASAS_INIT_EVENT,
+ &_TRACE_MEGASAS_MSIX_RAISE_EVENT,
+ &_TRACE_MEGASAS_MSI_RAISE_EVENT,
+ &_TRACE_MEGASAS_IRQ_LOWER_EVENT,
+ &_TRACE_MEGASAS_IRQ_RAISE_EVENT,
+ &_TRACE_MEGASAS_INTR_ENABLED_EVENT,
+ &_TRACE_MEGASAS_INTR_DISABLED_EVENT,
+ &_TRACE_MEGASAS_MSIX_ENABLED_EVENT,
+ &_TRACE_MEGASAS_MSI_ENABLED_EVENT,
+ &_TRACE_MEGASAS_MMIO_READL_EVENT,
+ &_TRACE_MEGASAS_MMIO_INVALID_READL_EVENT,
+ &_TRACE_MEGASAS_MMIO_WRITEL_EVENT,
+ &_TRACE_MEGASAS_MMIO_INVALID_WRITEL_EVENT,
+ &_TRACE_PVSCSI_RING_INIT_DATA_EVENT,
+ &_TRACE_PVSCSI_RING_INIT_MSG_EVENT,
+ &_TRACE_PVSCSI_RING_FLUSH_CMP_EVENT,
+ &_TRACE_PVSCSI_RING_FLUSH_MSG_EVENT,
+ &_TRACE_PVSCSI_UPDATE_IRQ_LEVEL_EVENT,
+ &_TRACE_PVSCSI_UPDATE_IRQ_MSI_EVENT,
+ &_TRACE_PVSCSI_CMP_RING_PUT_EVENT,
+ &_TRACE_PVSCSI_MSG_RING_PUT_EVENT,
+ &_TRACE_PVSCSI_COMPLETE_REQUEST_EVENT,
+ &_TRACE_PVSCSI_GET_SG_LIST_EVENT,
+ &_TRACE_PVSCSI_GET_NEXT_SG_ELEM_EVENT,
+ &_TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_EVENT,
+ &_TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_EVENT,
+ &_TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_EVENT,
+ &_TRACE_PVSCSI_CONVERT_SGLIST_EVENT,
+ &_TRACE_PVSCSI_PROCESS_REQ_DESCR_EVENT,
+ &_TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_EVENT,
+ &_TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_EVENT,
+ &_TRACE_PVSCSI_PROCESS_IO_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_NOIMPL_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_RESET_DEV_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_ARRIVED_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_ABORT_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_UNKNOWN_EVENT,
+ &_TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_EVENT,
+ &_TRACE_PVSCSI_IO_WRITE_EVENT,
+ &_TRACE_PVSCSI_IO_WRITE_UNKNOWN_EVENT,
+ &_TRACE_PVSCSI_IO_READ_EVENT,
+ &_TRACE_PVSCSI_IO_READ_UNKNOWN_EVENT,
+ &_TRACE_PVSCSI_INIT_MSI_FAIL_EVENT,
+ &_TRACE_PVSCSI_STATE_EVENT,
+ &_TRACE_PVSCSI_TX_RINGS_PPN_EVENT,
+ &_TRACE_PVSCSI_TX_RINGS_NUM_PAGES_EVENT,
+ &_TRACE_ESP_ERROR_FIFO_OVERRUN_EVENT,
+ &_TRACE_ESP_ERROR_UNHANDLED_COMMAND_EVENT,
+ &_TRACE_ESP_ERROR_INVALID_WRITE_EVENT,
+ &_TRACE_ESP_RAISE_IRQ_EVENT,
+ &_TRACE_ESP_LOWER_IRQ_EVENT,
+ &_TRACE_ESP_DMA_ENABLE_EVENT,
+ &_TRACE_ESP_DMA_DISABLE_EVENT,
+ &_TRACE_ESP_GET_CMD_EVENT,
+ &_TRACE_ESP_DO_BUSID_CMD_EVENT,
+ &_TRACE_ESP_HANDLE_SATN_STOP_EVENT,
+ &_TRACE_ESP_WRITE_RESPONSE_EVENT,
+ &_TRACE_ESP_DO_DMA_EVENT,
+ &_TRACE_ESP_COMMAND_COMPLETE_EVENT,
+ &_TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_EVENT,
+ &_TRACE_ESP_COMMAND_COMPLETE_FAIL_EVENT,
+ &_TRACE_ESP_TRANSFER_DATA_EVENT,
+ &_TRACE_ESP_HANDLE_TI_EVENT,
+ &_TRACE_ESP_HANDLE_TI_CMD_EVENT,
+ &_TRACE_ESP_MEM_READB_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_NOP_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_FLUSH_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_RESET_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_ICCS_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_MSGACC_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_PAD_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_SATN_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_RSTATN_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_SEL_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_SELATN_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_SELATNS_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_ENSEL_EVENT,
+ &_TRACE_ESP_MEM_WRITEB_CMD_DISSEL_EVENT,
+ &_TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_EVENT,
+ &_TRACE_ESP_PCI_ERROR_INVALID_READ_EVENT,
+ &_TRACE_ESP_PCI_ERROR_INVALID_WRITE_EVENT,
+ &_TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_EVENT,
+ &_TRACE_ESP_PCI_DMA_READ_EVENT,
+ &_TRACE_ESP_PCI_DMA_WRITE_EVENT,
+ &_TRACE_ESP_PCI_DMA_IDLE_EVENT,
+ &_TRACE_ESP_PCI_DMA_BLAST_EVENT,
+ &_TRACE_ESP_PCI_DMA_ABORT_EVENT,
+ &_TRACE_ESP_PCI_DMA_START_EVENT,
+ &_TRACE_ESP_PCI_SBAC_READ_EVENT,
+ &_TRACE_ESP_PCI_SBAC_WRITE_EVENT,
+ &_TRACE_SPAPR_VSCSI_SEND_RSP_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_EVENT,
+ &_TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_EVENT,
+ &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_EVENT,
+ &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_EVENT,
+ &_TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_EVENT,
+ &_TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_EVENT,
+ &_TRACE_SPAPR_VSCSI_TRANSFER_DATA_EVENT,
+ &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_EVENT,
+ &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_EVENT,
+ &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_EVENT,
+ &_TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_EVENT,
+ &_TRACE_SPAPR_VSCSI_SAVE_REQUEST_EVENT,
+ &_TRACE_SPAPR_VSCSI_LOAD_REQUEST_EVENT,
+ &_TRACE_SPAPR_VSCSI_PROCESS_LOGIN_EVENT,
+ &_TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_EVENT,
+ &_TRACE_SPAPR_VSCSI_QUEUE_CMD_EVENT,
+ &_TRACE_SPAPR_VSCSI_DO_CRQ_EVENT,
+ NULL,
+};
+
+static void trace_hw_scsi_register_events(void)
+{
+ trace_event_register_group(hw_scsi_trace_events);
+}
+trace_init(trace_hw_scsi_register_events)
diff --git a/qemu2-auto-generated/hw/scsi/trace.h b/qemu2-auto-generated/hw/scsi/trace.h
new file mode 100644
index 0000000000..be4535cddd
--- /dev/null
+++ b/qemu2-auto-generated/hw/scsi/trace.h
@@ -0,0 +1,3647 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_SCSI_GENERATED_TRACERS_H
+#define TRACE_HW_SCSI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_SCSI_REQ_ALLOC_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_CANCEL_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_DATA_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_DATA_CANCELED_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_DEQUEUE_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_CONTINUE_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_CONTINUE_CANCELED_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_PARSED_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_PARSED_LBA_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_PARSE_BAD_EVENT;
+extern TraceEvent _TRACE_SCSI_REQ_BUILD_SENSE_EVENT;
+extern TraceEvent _TRACE_SCSI_DEVICE_SET_UA_EVENT;
+extern TraceEvent _TRACE_SCSI_REPORT_LUNS_EVENT;
+extern TraceEvent _TRACE_SCSI_INQUIRY_EVENT;
+extern TraceEvent _TRACE_SCSI_TEST_UNIT_READY_EVENT;
+extern TraceEvent _TRACE_SCSI_REQUEST_SENSE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_COMMAND_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_DIAG_READ_EVENT;
+extern TraceEvent _TRACE_MPTSAS_DIAG_WRITE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_IRQ_INTX_EVENT;
+extern TraceEvent _TRACE_MPTSAS_IRQ_MSI_EVENT;
+extern TraceEvent _TRACE_MPTSAS_MMIO_READ_EVENT;
+extern TraceEvent _TRACE_MPTSAS_MMIO_UNHANDLED_READ_EVENT;
+extern TraceEvent _TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_MMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_PROCESS_MESSAGE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_EVENT;
+extern TraceEvent _TRACE_MPTSAS_RESET_EVENT;
+extern TraceEvent _TRACE_MPTSAS_SCSI_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MPTSAS_SGL_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MPTSAS_UNHANDLED_CMD_EVENT;
+extern TraceEvent _TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_EVENT;
+extern TraceEvent _TRACE_MPTSAS_CONFIG_SAS_DEVICE_EVENT;
+extern TraceEvent _TRACE_MPTSAS_CONFIG_SAS_PHY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INIT_FIRMWARE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INIT_QUEUE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INITQ_MAP_FAILED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INITQ_MAPPED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INITQ_MISMATCH_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_MAPPED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_NEW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_BUSY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_ENQUEUE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_UPDATE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_MAP_FAILED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_COMPLETE_NOIRQ_EVENT;
+extern TraceEvent _TRACE_MEGASAS_QF_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_FRAME_BUSY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_UNHANDLED_FRAME_CMD_EVENT;
+extern TraceEvent _TRACE_MEGASAS_HANDLE_SCSI_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOV_READ_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOV_WRITE_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOV_READ_UNDERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_READ_START_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_WRITE_START_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_NODATA_EVENT;
+extern TraceEvent _TRACE_MEGASAS_SCSI_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_COMMAND_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_HANDLE_IO_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IO_READ_START_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IO_WRITE_START_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IO_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOVEC_SGL_INVALID_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOVEC_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IOVEC_UNDERFLOW_EVENT;
+extern TraceEvent _TRACE_MEGASAS_HANDLE_DCMD_EVENT;
+extern TraceEvent _TRACE_MEGASAS_FINISH_DCMD_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_FINISH_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_INTERNAL_INVALID_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_UNHANDLED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_ZERO_SGE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_INVALID_SGE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_ENTER_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_DUMMY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_SET_FW_TIME_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_PD_GET_LIST_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_LD_GET_LIST_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_LD_GET_INFO_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_LD_LIST_QUERY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_PD_GET_INFO_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_PD_LIST_QUERY_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_RESET_LD_EVENT;
+extern TraceEvent _TRACE_MEGASAS_DCMD_UNSUPPORTED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_ABORT_FRAME_EVENT;
+extern TraceEvent _TRACE_MEGASAS_ABORT_NO_CMD_EVENT;
+extern TraceEvent _TRACE_MEGASAS_ABORT_INVALID_CONTEXT_EVENT;
+extern TraceEvent _TRACE_MEGASAS_RESET_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INIT_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MSIX_RAISE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MSI_RAISE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IRQ_LOWER_EVENT;
+extern TraceEvent _TRACE_MEGASAS_IRQ_RAISE_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INTR_ENABLED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_INTR_DISABLED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MSIX_ENABLED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MSI_ENABLED_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MMIO_READL_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MMIO_INVALID_READL_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MMIO_WRITEL_EVENT;
+extern TraceEvent _TRACE_MEGASAS_MMIO_INVALID_WRITEL_EVENT;
+extern TraceEvent _TRACE_PVSCSI_RING_INIT_DATA_EVENT;
+extern TraceEvent _TRACE_PVSCSI_RING_INIT_MSG_EVENT;
+extern TraceEvent _TRACE_PVSCSI_RING_FLUSH_CMP_EVENT;
+extern TraceEvent _TRACE_PVSCSI_RING_FLUSH_MSG_EVENT;
+extern TraceEvent _TRACE_PVSCSI_UPDATE_IRQ_LEVEL_EVENT;
+extern TraceEvent _TRACE_PVSCSI_UPDATE_IRQ_MSI_EVENT;
+extern TraceEvent _TRACE_PVSCSI_CMP_RING_PUT_EVENT;
+extern TraceEvent _TRACE_PVSCSI_MSG_RING_PUT_EVENT;
+extern TraceEvent _TRACE_PVSCSI_COMPLETE_REQUEST_EVENT;
+extern TraceEvent _TRACE_PVSCSI_GET_SG_LIST_EVENT;
+extern TraceEvent _TRACE_PVSCSI_GET_NEXT_SG_ELEM_EVENT;
+extern TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_EVENT;
+extern TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_CONVERT_SGLIST_EVENT;
+extern TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_EVENT;
+extern TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_EVENT;
+extern TraceEvent _TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_EVENT;
+extern TraceEvent _TRACE_PVSCSI_PROCESS_IO_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_NOIMPL_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_RESET_DEV_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_ARRIVED_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_ABORT_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_EVENT;
+extern TraceEvent _TRACE_PVSCSI_IO_WRITE_EVENT;
+extern TraceEvent _TRACE_PVSCSI_IO_WRITE_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_IO_READ_EVENT;
+extern TraceEvent _TRACE_PVSCSI_IO_READ_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_INIT_MSI_FAIL_EVENT;
+extern TraceEvent _TRACE_PVSCSI_STATE_EVENT;
+extern TraceEvent _TRACE_PVSCSI_TX_RINGS_PPN_EVENT;
+extern TraceEvent _TRACE_PVSCSI_TX_RINGS_NUM_PAGES_EVENT;
+extern TraceEvent _TRACE_ESP_ERROR_FIFO_OVERRUN_EVENT;
+extern TraceEvent _TRACE_ESP_ERROR_UNHANDLED_COMMAND_EVENT;
+extern TraceEvent _TRACE_ESP_ERROR_INVALID_WRITE_EVENT;
+extern TraceEvent _TRACE_ESP_RAISE_IRQ_EVENT;
+extern TraceEvent _TRACE_ESP_LOWER_IRQ_EVENT;
+extern TraceEvent _TRACE_ESP_DMA_ENABLE_EVENT;
+extern TraceEvent _TRACE_ESP_DMA_DISABLE_EVENT;
+extern TraceEvent _TRACE_ESP_GET_CMD_EVENT;
+extern TraceEvent _TRACE_ESP_DO_BUSID_CMD_EVENT;
+extern TraceEvent _TRACE_ESP_HANDLE_SATN_STOP_EVENT;
+extern TraceEvent _TRACE_ESP_WRITE_RESPONSE_EVENT;
+extern TraceEvent _TRACE_ESP_DO_DMA_EVENT;
+extern TraceEvent _TRACE_ESP_COMMAND_COMPLETE_EVENT;
+extern TraceEvent _TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_EVENT;
+extern TraceEvent _TRACE_ESP_COMMAND_COMPLETE_FAIL_EVENT;
+extern TraceEvent _TRACE_ESP_TRANSFER_DATA_EVENT;
+extern TraceEvent _TRACE_ESP_HANDLE_TI_EVENT;
+extern TraceEvent _TRACE_ESP_HANDLE_TI_CMD_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_READB_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_NOP_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_FLUSH_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_RESET_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_ICCS_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_MSGACC_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_PAD_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SATN_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_RSTATN_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SEL_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SELATN_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_SELATNS_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_ENSEL_EVENT;
+extern TraceEvent _TRACE_ESP_MEM_WRITEB_CMD_DISSEL_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_READ_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_WRITE_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_READ_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_WRITE_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_IDLE_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_BLAST_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_ABORT_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_DMA_START_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_SBAC_READ_EVENT;
+extern TraceEvent _TRACE_ESP_PCI_SBAC_WRITE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SEND_RSP_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_TRANSFER_DATA_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_SAVE_REQUEST_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_LOAD_REQUEST_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_PROCESS_LOGIN_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_QUEUE_CMD_EVENT;
+extern TraceEvent _TRACE_SPAPR_VSCSI_DO_CRQ_EVENT;
+extern uint16_t _TRACE_SCSI_REQ_ALLOC_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_CANCEL_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_DATA_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_DATA_CANCELED_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_DEQUEUE_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_CONTINUE_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_CONTINUE_CANCELED_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_PARSED_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_PARSED_LBA_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_PARSE_BAD_DSTATE;
+extern uint16_t _TRACE_SCSI_REQ_BUILD_SENSE_DSTATE;
+extern uint16_t _TRACE_SCSI_DEVICE_SET_UA_DSTATE;
+extern uint16_t _TRACE_SCSI_REPORT_LUNS_DSTATE;
+extern uint16_t _TRACE_SCSI_INQUIRY_DSTATE;
+extern uint16_t _TRACE_SCSI_TEST_UNIT_READY_DSTATE;
+extern uint16_t _TRACE_SCSI_REQUEST_SENSE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_COMMAND_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_DIAG_READ_DSTATE;
+extern uint16_t _TRACE_MPTSAS_DIAG_WRITE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_IRQ_INTX_DSTATE;
+extern uint16_t _TRACE_MPTSAS_IRQ_MSI_DSTATE;
+extern uint16_t _TRACE_MPTSAS_MMIO_READ_DSTATE;
+extern uint16_t _TRACE_MPTSAS_MMIO_UNHANDLED_READ_DSTATE;
+extern uint16_t _TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_MMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_PROCESS_MESSAGE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_DSTATE;
+extern uint16_t _TRACE_MPTSAS_RESET_DSTATE;
+extern uint16_t _TRACE_MPTSAS_SCSI_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MPTSAS_SGL_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MPTSAS_UNHANDLED_CMD_DSTATE;
+extern uint16_t _TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_DSTATE;
+extern uint16_t _TRACE_MPTSAS_CONFIG_SAS_DEVICE_DSTATE;
+extern uint16_t _TRACE_MPTSAS_CONFIG_SAS_PHY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INIT_FIRMWARE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INIT_QUEUE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INITQ_MAP_FAILED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INITQ_MAPPED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INITQ_MISMATCH_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_MAPPED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_NEW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_BUSY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_ENQUEUE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_UPDATE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_MAP_FAILED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_COMPLETE_NOIRQ_DSTATE;
+extern uint16_t _TRACE_MEGASAS_QF_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_FRAME_BUSY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_UNHANDLED_FRAME_CMD_DSTATE;
+extern uint16_t _TRACE_MEGASAS_HANDLE_SCSI_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOV_READ_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOV_WRITE_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOV_READ_UNDERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_READ_START_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_WRITE_START_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_NODATA_DSTATE;
+extern uint16_t _TRACE_MEGASAS_SCSI_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_COMMAND_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_HANDLE_IO_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IO_READ_START_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IO_WRITE_START_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IO_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOVEC_SGL_INVALID_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOVEC_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IOVEC_UNDERFLOW_DSTATE;
+extern uint16_t _TRACE_MEGASAS_HANDLE_DCMD_DSTATE;
+extern uint16_t _TRACE_MEGASAS_FINISH_DCMD_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_FINISH_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_INTERNAL_INVALID_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_UNHANDLED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_ZERO_SGE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_INVALID_SGE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_ENTER_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_DUMMY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_SET_FW_TIME_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_PD_GET_LIST_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_LD_GET_LIST_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_LD_GET_INFO_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_LD_LIST_QUERY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_PD_GET_INFO_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_PD_LIST_QUERY_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_RESET_LD_DSTATE;
+extern uint16_t _TRACE_MEGASAS_DCMD_UNSUPPORTED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_ABORT_FRAME_DSTATE;
+extern uint16_t _TRACE_MEGASAS_ABORT_NO_CMD_DSTATE;
+extern uint16_t _TRACE_MEGASAS_ABORT_INVALID_CONTEXT_DSTATE;
+extern uint16_t _TRACE_MEGASAS_RESET_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INIT_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MSIX_RAISE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MSI_RAISE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IRQ_LOWER_DSTATE;
+extern uint16_t _TRACE_MEGASAS_IRQ_RAISE_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INTR_ENABLED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_INTR_DISABLED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MSIX_ENABLED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MSI_ENABLED_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MMIO_READL_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MMIO_INVALID_READL_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MMIO_WRITEL_DSTATE;
+extern uint16_t _TRACE_MEGASAS_MMIO_INVALID_WRITEL_DSTATE;
+extern uint16_t _TRACE_PVSCSI_RING_INIT_DATA_DSTATE;
+extern uint16_t _TRACE_PVSCSI_RING_INIT_MSG_DSTATE;
+extern uint16_t _TRACE_PVSCSI_RING_FLUSH_CMP_DSTATE;
+extern uint16_t _TRACE_PVSCSI_RING_FLUSH_MSG_DSTATE;
+extern uint16_t _TRACE_PVSCSI_UPDATE_IRQ_LEVEL_DSTATE;
+extern uint16_t _TRACE_PVSCSI_UPDATE_IRQ_MSI_DSTATE;
+extern uint16_t _TRACE_PVSCSI_CMP_RING_PUT_DSTATE;
+extern uint16_t _TRACE_PVSCSI_MSG_RING_PUT_DSTATE;
+extern uint16_t _TRACE_PVSCSI_COMPLETE_REQUEST_DSTATE;
+extern uint16_t _TRACE_PVSCSI_GET_SG_LIST_DSTATE;
+extern uint16_t _TRACE_PVSCSI_GET_NEXT_SG_ELEM_DSTATE;
+extern uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_DSTATE;
+extern uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_CONVERT_SGLIST_DSTATE;
+extern uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_DSTATE;
+extern uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_DSTATE;
+extern uint16_t _TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_DSTATE;
+extern uint16_t _TRACE_PVSCSI_PROCESS_IO_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_NOIMPL_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_RESET_DEV_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_ARRIVED_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_ABORT_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_DSTATE;
+extern uint16_t _TRACE_PVSCSI_IO_WRITE_DSTATE;
+extern uint16_t _TRACE_PVSCSI_IO_WRITE_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_IO_READ_DSTATE;
+extern uint16_t _TRACE_PVSCSI_IO_READ_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_INIT_MSI_FAIL_DSTATE;
+extern uint16_t _TRACE_PVSCSI_STATE_DSTATE;
+extern uint16_t _TRACE_PVSCSI_TX_RINGS_PPN_DSTATE;
+extern uint16_t _TRACE_PVSCSI_TX_RINGS_NUM_PAGES_DSTATE;
+extern uint16_t _TRACE_ESP_ERROR_FIFO_OVERRUN_DSTATE;
+extern uint16_t _TRACE_ESP_ERROR_UNHANDLED_COMMAND_DSTATE;
+extern uint16_t _TRACE_ESP_ERROR_INVALID_WRITE_DSTATE;
+extern uint16_t _TRACE_ESP_RAISE_IRQ_DSTATE;
+extern uint16_t _TRACE_ESP_LOWER_IRQ_DSTATE;
+extern uint16_t _TRACE_ESP_DMA_ENABLE_DSTATE;
+extern uint16_t _TRACE_ESP_DMA_DISABLE_DSTATE;
+extern uint16_t _TRACE_ESP_GET_CMD_DSTATE;
+extern uint16_t _TRACE_ESP_DO_BUSID_CMD_DSTATE;
+extern uint16_t _TRACE_ESP_HANDLE_SATN_STOP_DSTATE;
+extern uint16_t _TRACE_ESP_WRITE_RESPONSE_DSTATE;
+extern uint16_t _TRACE_ESP_DO_DMA_DSTATE;
+extern uint16_t _TRACE_ESP_COMMAND_COMPLETE_DSTATE;
+extern uint16_t _TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_DSTATE;
+extern uint16_t _TRACE_ESP_COMMAND_COMPLETE_FAIL_DSTATE;
+extern uint16_t _TRACE_ESP_TRANSFER_DATA_DSTATE;
+extern uint16_t _TRACE_ESP_HANDLE_TI_DSTATE;
+extern uint16_t _TRACE_ESP_HANDLE_TI_CMD_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_READB_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_NOP_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_FLUSH_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_RESET_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_ICCS_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_MSGACC_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_PAD_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SATN_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_RSTATN_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SEL_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SELATN_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_SELATNS_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_ENSEL_DSTATE;
+extern uint16_t _TRACE_ESP_MEM_WRITEB_CMD_DISSEL_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_ERROR_INVALID_READ_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_READ_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_WRITE_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_IDLE_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_BLAST_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_ABORT_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_DMA_START_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_SBAC_READ_DSTATE;
+extern uint16_t _TRACE_ESP_PCI_SBAC_WRITE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SEND_RSP_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_TRANSFER_DATA_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_SAVE_REQUEST_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_LOAD_REQUEST_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_PROCESS_LOGIN_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_QUEUE_CMD_DSTATE;
+extern uint16_t _TRACE_SPAPR_VSCSI_DO_CRQ_DSTATE;
+#define TRACE_SCSI_REQ_ALLOC_ENABLED 1
+#define TRACE_SCSI_REQ_CANCEL_ENABLED 1
+#define TRACE_SCSI_REQ_DATA_ENABLED 1
+#define TRACE_SCSI_REQ_DATA_CANCELED_ENABLED 1
+#define TRACE_SCSI_REQ_DEQUEUE_ENABLED 1
+#define TRACE_SCSI_REQ_CONTINUE_ENABLED 1
+#define TRACE_SCSI_REQ_CONTINUE_CANCELED_ENABLED 1
+#define TRACE_SCSI_REQ_PARSED_ENABLED 1
+#define TRACE_SCSI_REQ_PARSED_LBA_ENABLED 1
+#define TRACE_SCSI_REQ_PARSE_BAD_ENABLED 1
+#define TRACE_SCSI_REQ_BUILD_SENSE_ENABLED 1
+#define TRACE_SCSI_DEVICE_SET_UA_ENABLED 1
+#define TRACE_SCSI_REPORT_LUNS_ENABLED 1
+#define TRACE_SCSI_INQUIRY_ENABLED 1
+#define TRACE_SCSI_TEST_UNIT_READY_ENABLED 1
+#define TRACE_SCSI_REQUEST_SENSE_ENABLED 1
+#define TRACE_MPTSAS_COMMAND_COMPLETE_ENABLED 1
+#define TRACE_MPTSAS_DIAG_READ_ENABLED 1
+#define TRACE_MPTSAS_DIAG_WRITE_ENABLED 1
+#define TRACE_MPTSAS_IRQ_INTX_ENABLED 1
+#define TRACE_MPTSAS_IRQ_MSI_ENABLED 1
+#define TRACE_MPTSAS_MMIO_READ_ENABLED 1
+#define TRACE_MPTSAS_MMIO_UNHANDLED_READ_ENABLED 1
+#define TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_ENABLED 1
+#define TRACE_MPTSAS_MMIO_WRITE_ENABLED 1
+#define TRACE_MPTSAS_PROCESS_MESSAGE_ENABLED 1
+#define TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_ENABLED 1
+#define TRACE_MPTSAS_RESET_ENABLED 1
+#define TRACE_MPTSAS_SCSI_OVERFLOW_ENABLED 1
+#define TRACE_MPTSAS_SGL_OVERFLOW_ENABLED 1
+#define TRACE_MPTSAS_UNHANDLED_CMD_ENABLED 1
+#define TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_ENABLED 1
+#define TRACE_MPTSAS_CONFIG_SAS_DEVICE_ENABLED 1
+#define TRACE_MPTSAS_CONFIG_SAS_PHY_ENABLED 1
+#define TRACE_MEGASAS_INIT_FIRMWARE_ENABLED 1
+#define TRACE_MEGASAS_INIT_QUEUE_ENABLED 1
+#define TRACE_MEGASAS_INITQ_MAP_FAILED_ENABLED 1
+#define TRACE_MEGASAS_INITQ_MAPPED_ENABLED 1
+#define TRACE_MEGASAS_INITQ_MISMATCH_ENABLED 1
+#define TRACE_MEGASAS_QF_MAPPED_ENABLED 1
+#define TRACE_MEGASAS_QF_NEW_ENABLED 1
+#define TRACE_MEGASAS_QF_BUSY_ENABLED 1
+#define TRACE_MEGASAS_QF_ENQUEUE_ENABLED 1
+#define TRACE_MEGASAS_QF_UPDATE_ENABLED 1
+#define TRACE_MEGASAS_QF_MAP_FAILED_ENABLED 1
+#define TRACE_MEGASAS_QF_COMPLETE_NOIRQ_ENABLED 1
+#define TRACE_MEGASAS_QF_COMPLETE_ENABLED 1
+#define TRACE_MEGASAS_FRAME_BUSY_ENABLED 1
+#define TRACE_MEGASAS_UNHANDLED_FRAME_CMD_ENABLED 1
+#define TRACE_MEGASAS_HANDLE_SCSI_ENABLED 1
+#define TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_ENABLED 1
+#define TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_ENABLED 1
+#define TRACE_MEGASAS_IOV_READ_OVERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOV_WRITE_OVERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOV_READ_UNDERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_ENABLED 1
+#define TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_ENABLED 1
+#define TRACE_MEGASAS_SCSI_READ_START_ENABLED 1
+#define TRACE_MEGASAS_SCSI_WRITE_START_ENABLED 1
+#define TRACE_MEGASAS_SCSI_NODATA_ENABLED 1
+#define TRACE_MEGASAS_SCSI_COMPLETE_ENABLED 1
+#define TRACE_MEGASAS_COMMAND_COMPLETE_ENABLED 1
+#define TRACE_MEGASAS_HANDLE_IO_ENABLED 1
+#define TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_ENABLED 1
+#define TRACE_MEGASAS_IO_READ_START_ENABLED 1
+#define TRACE_MEGASAS_IO_WRITE_START_ENABLED 1
+#define TRACE_MEGASAS_IO_COMPLETE_ENABLED 1
+#define TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOVEC_SGL_INVALID_ENABLED 1
+#define TRACE_MEGASAS_IOVEC_OVERFLOW_ENABLED 1
+#define TRACE_MEGASAS_IOVEC_UNDERFLOW_ENABLED 1
+#define TRACE_MEGASAS_HANDLE_DCMD_ENABLED 1
+#define TRACE_MEGASAS_FINISH_DCMD_ENABLED 1
+#define TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_ENABLED 1
+#define TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_ENABLED 1
+#define TRACE_MEGASAS_DCMD_INTERNAL_FINISH_ENABLED 1
+#define TRACE_MEGASAS_DCMD_INTERNAL_INVALID_ENABLED 1
+#define TRACE_MEGASAS_DCMD_UNHANDLED_ENABLED 1
+#define TRACE_MEGASAS_DCMD_ZERO_SGE_ENABLED 1
+#define TRACE_MEGASAS_DCMD_INVALID_SGE_ENABLED 1
+#define TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_ENABLED 1
+#define TRACE_MEGASAS_DCMD_ENTER_ENABLED 1
+#define TRACE_MEGASAS_DCMD_DUMMY_ENABLED 1
+#define TRACE_MEGASAS_DCMD_SET_FW_TIME_ENABLED 1
+#define TRACE_MEGASAS_DCMD_PD_GET_LIST_ENABLED 1
+#define TRACE_MEGASAS_DCMD_LD_GET_LIST_ENABLED 1
+#define TRACE_MEGASAS_DCMD_LD_GET_INFO_ENABLED 1
+#define TRACE_MEGASAS_DCMD_LD_LIST_QUERY_ENABLED 1
+#define TRACE_MEGASAS_DCMD_PD_GET_INFO_ENABLED 1
+#define TRACE_MEGASAS_DCMD_PD_LIST_QUERY_ENABLED 1
+#define TRACE_MEGASAS_DCMD_RESET_LD_ENABLED 1
+#define TRACE_MEGASAS_DCMD_UNSUPPORTED_ENABLED 1
+#define TRACE_MEGASAS_ABORT_FRAME_ENABLED 1
+#define TRACE_MEGASAS_ABORT_NO_CMD_ENABLED 1
+#define TRACE_MEGASAS_ABORT_INVALID_CONTEXT_ENABLED 1
+#define TRACE_MEGASAS_RESET_ENABLED 1
+#define TRACE_MEGASAS_INIT_ENABLED 1
+#define TRACE_MEGASAS_MSIX_RAISE_ENABLED 1
+#define TRACE_MEGASAS_MSI_RAISE_ENABLED 1
+#define TRACE_MEGASAS_IRQ_LOWER_ENABLED 1
+#define TRACE_MEGASAS_IRQ_RAISE_ENABLED 1
+#define TRACE_MEGASAS_INTR_ENABLED_ENABLED 1
+#define TRACE_MEGASAS_INTR_DISABLED_ENABLED 1
+#define TRACE_MEGASAS_MSIX_ENABLED_ENABLED 1
+#define TRACE_MEGASAS_MSI_ENABLED_ENABLED 1
+#define TRACE_MEGASAS_MMIO_READL_ENABLED 1
+#define TRACE_MEGASAS_MMIO_INVALID_READL_ENABLED 1
+#define TRACE_MEGASAS_MMIO_WRITEL_ENABLED 1
+#define TRACE_MEGASAS_MMIO_INVALID_WRITEL_ENABLED 1
+#define TRACE_PVSCSI_RING_INIT_DATA_ENABLED 1
+#define TRACE_PVSCSI_RING_INIT_MSG_ENABLED 1
+#define TRACE_PVSCSI_RING_FLUSH_CMP_ENABLED 1
+#define TRACE_PVSCSI_RING_FLUSH_MSG_ENABLED 1
+#define TRACE_PVSCSI_UPDATE_IRQ_LEVEL_ENABLED 1
+#define TRACE_PVSCSI_UPDATE_IRQ_MSI_ENABLED 1
+#define TRACE_PVSCSI_CMP_RING_PUT_ENABLED 1
+#define TRACE_PVSCSI_MSG_RING_PUT_ENABLED 1
+#define TRACE_PVSCSI_COMPLETE_REQUEST_ENABLED 1
+#define TRACE_PVSCSI_GET_SG_LIST_ENABLED 1
+#define TRACE_PVSCSI_GET_NEXT_SG_ELEM_ENABLED 1
+#define TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_ENABLED 1
+#define TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_ENABLED 1
+#define TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_ENABLED 1
+#define TRACE_PVSCSI_CONVERT_SGLIST_ENABLED 1
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_ENABLED 1
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_ENABLED 1
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_ENABLED 1
+#define TRACE_PVSCSI_PROCESS_IO_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_NOIMPL_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_RESET_DEV_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_ARRIVED_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_ABORT_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_UNKNOWN_ENABLED 1
+#define TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_ENABLED 1
+#define TRACE_PVSCSI_IO_WRITE_ENABLED 1
+#define TRACE_PVSCSI_IO_WRITE_UNKNOWN_ENABLED 1
+#define TRACE_PVSCSI_IO_READ_ENABLED 1
+#define TRACE_PVSCSI_IO_READ_UNKNOWN_ENABLED 1
+#define TRACE_PVSCSI_INIT_MSI_FAIL_ENABLED 1
+#define TRACE_PVSCSI_STATE_ENABLED 1
+#define TRACE_PVSCSI_TX_RINGS_PPN_ENABLED 1
+#define TRACE_PVSCSI_TX_RINGS_NUM_PAGES_ENABLED 1
+#define TRACE_ESP_ERROR_FIFO_OVERRUN_ENABLED 1
+#define TRACE_ESP_ERROR_UNHANDLED_COMMAND_ENABLED 1
+#define TRACE_ESP_ERROR_INVALID_WRITE_ENABLED 1
+#define TRACE_ESP_RAISE_IRQ_ENABLED 1
+#define TRACE_ESP_LOWER_IRQ_ENABLED 1
+#define TRACE_ESP_DMA_ENABLE_ENABLED 1
+#define TRACE_ESP_DMA_DISABLE_ENABLED 1
+#define TRACE_ESP_GET_CMD_ENABLED 1
+#define TRACE_ESP_DO_BUSID_CMD_ENABLED 1
+#define TRACE_ESP_HANDLE_SATN_STOP_ENABLED 1
+#define TRACE_ESP_WRITE_RESPONSE_ENABLED 1
+#define TRACE_ESP_DO_DMA_ENABLED 1
+#define TRACE_ESP_COMMAND_COMPLETE_ENABLED 1
+#define TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_ENABLED 1
+#define TRACE_ESP_COMMAND_COMPLETE_FAIL_ENABLED 1
+#define TRACE_ESP_TRANSFER_DATA_ENABLED 1
+#define TRACE_ESP_HANDLE_TI_ENABLED 1
+#define TRACE_ESP_HANDLE_TI_CMD_ENABLED 1
+#define TRACE_ESP_MEM_READB_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_NOP_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_FLUSH_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_RESET_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_ICCS_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_MSGACC_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_PAD_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_SATN_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_RSTATN_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_SEL_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_SELATN_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_SELATNS_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_ENSEL_ENABLED 1
+#define TRACE_ESP_MEM_WRITEB_CMD_DISSEL_ENABLED 1
+#define TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_ENABLED 1
+#define TRACE_ESP_PCI_ERROR_INVALID_READ_ENABLED 1
+#define TRACE_ESP_PCI_ERROR_INVALID_WRITE_ENABLED 1
+#define TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_ENABLED 1
+#define TRACE_ESP_PCI_DMA_READ_ENABLED 1
+#define TRACE_ESP_PCI_DMA_WRITE_ENABLED 1
+#define TRACE_ESP_PCI_DMA_IDLE_ENABLED 1
+#define TRACE_ESP_PCI_DMA_BLAST_ENABLED 1
+#define TRACE_ESP_PCI_DMA_ABORT_ENABLED 1
+#define TRACE_ESP_PCI_DMA_START_ENABLED 1
+#define TRACE_ESP_PCI_SBAC_READ_ENABLED 1
+#define TRACE_ESP_PCI_SBAC_WRITE_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SEND_RSP_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_ENABLED 1
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_ENABLED 1
+#define TRACE_SPAPR_VSCSI_TRANSFER_DATA_ENABLED 1
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_ENABLED 1
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_ENABLED 1
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_ENABLED 1
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_ENABLED 1
+#define TRACE_SPAPR_VSCSI_SAVE_REQUEST_ENABLED 1
+#define TRACE_SPAPR_VSCSI_LOAD_REQUEST_ENABLED 1
+#define TRACE_SPAPR_VSCSI_PROCESS_LOGIN_ENABLED 1
+#define TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_ENABLED 1
+#define TRACE_SPAPR_VSCSI_QUEUE_CMD_ENABLED 1
+#define TRACE_SPAPR_VSCSI_DO_CRQ_ENABLED 1
+
+#define TRACE_SCSI_REQ_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_alloc(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_req_alloc(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_alloc(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQ_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_cancel(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_req_cancel(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_cancel(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_data(int target, int lun, int tag, int len)
+{
+}
+
+static inline void trace_scsi_req_data(int target, int lun, int tag, int len)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_data(target, lun, tag, len);
+ }
+}
+
+#define TRACE_SCSI_REQ_DATA_CANCELED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_data_canceled(int target, int lun, int tag, int len)
+{
+}
+
+static inline void trace_scsi_req_data_canceled(int target, int lun, int tag, int len)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_data_canceled(target, lun, tag, len);
+ }
+}
+
+#define TRACE_SCSI_REQ_DEQUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_dequeue(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_req_dequeue(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_dequeue(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQ_CONTINUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_continue(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_req_continue(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_continue(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQ_CONTINUE_CANCELED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_continue_canceled(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_req_continue_canceled(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_continue_canceled(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQ_PARSED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_parsed(int target, int lun, int tag, int cmd, int mode, int xfer)
+{
+}
+
+static inline void trace_scsi_req_parsed(int target, int lun, int tag, int cmd, int mode, int xfer)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_parsed(target, lun, tag, cmd, mode, xfer);
+ }
+}
+
+#define TRACE_SCSI_REQ_PARSED_LBA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_parsed_lba(int target, int lun, int tag, int cmd, uint64_t lba)
+{
+}
+
+static inline void trace_scsi_req_parsed_lba(int target, int lun, int tag, int cmd, uint64_t lba)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_parsed_lba(target, lun, tag, cmd, lba);
+ }
+}
+
+#define TRACE_SCSI_REQ_PARSE_BAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_parse_bad(int target, int lun, int tag, int cmd)
+{
+}
+
+static inline void trace_scsi_req_parse_bad(int target, int lun, int tag, int cmd)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_parse_bad(target, lun, tag, cmd);
+ }
+}
+
+#define TRACE_SCSI_REQ_BUILD_SENSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_req_build_sense(int target, int lun, int tag, int key, int asc, int ascq)
+{
+}
+
+static inline void trace_scsi_req_build_sense(int target, int lun, int tag, int key, int asc, int ascq)
+{
+ if (true) {
+ _nocheck__trace_scsi_req_build_sense(target, lun, tag, key, asc, ascq);
+ }
+}
+
+#define TRACE_SCSI_DEVICE_SET_UA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_device_set_ua(int target, int lun, int key, int asc, int ascq)
+{
+}
+
+static inline void trace_scsi_device_set_ua(int target, int lun, int key, int asc, int ascq)
+{
+ if (true) {
+ _nocheck__trace_scsi_device_set_ua(target, lun, key, asc, ascq);
+ }
+}
+
+#define TRACE_SCSI_REPORT_LUNS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_report_luns(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_report_luns(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_report_luns(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_INQUIRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_inquiry(int target, int lun, int tag, int cdb1, int cdb2)
+{
+}
+
+static inline void trace_scsi_inquiry(int target, int lun, int tag, int cdb1, int cdb2)
+{
+ if (true) {
+ _nocheck__trace_scsi_inquiry(target, lun, tag, cdb1, cdb2);
+ }
+}
+
+#define TRACE_SCSI_TEST_UNIT_READY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_test_unit_ready(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_test_unit_ready(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_test_unit_ready(target, lun, tag);
+ }
+}
+
+#define TRACE_SCSI_REQUEST_SENSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_scsi_request_sense(int target, int lun, int tag)
+{
+}
+
+static inline void trace_scsi_request_sense(int target, int lun, int tag)
+{
+ if (true) {
+ _nocheck__trace_scsi_request_sense(target, lun, tag);
+ }
+}
+
+#define TRACE_MPTSAS_COMMAND_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_command_complete(void * dev, uint32_t ctx, uint32_t status, uint32_t resid)
+{
+}
+
+static inline void trace_mptsas_command_complete(void * dev, uint32_t ctx, uint32_t status, uint32_t resid)
+{
+ if (true) {
+ _nocheck__trace_mptsas_command_complete(dev, ctx, status, resid);
+ }
+}
+
+#define TRACE_MPTSAS_DIAG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_diag_read(void * dev, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mptsas_diag_read(void * dev, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mptsas_diag_read(dev, addr, val);
+ }
+}
+
+#define TRACE_MPTSAS_DIAG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_diag_write(void * dev, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mptsas_diag_write(void * dev, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mptsas_diag_write(dev, addr, val);
+ }
+}
+
+#define TRACE_MPTSAS_IRQ_INTX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_irq_intx(void * dev, int level)
+{
+}
+
+static inline void trace_mptsas_irq_intx(void * dev, int level)
+{
+ if (true) {
+ _nocheck__trace_mptsas_irq_intx(dev, level);
+ }
+}
+
+#define TRACE_MPTSAS_IRQ_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_irq_msi(void * dev)
+{
+}
+
+static inline void trace_mptsas_irq_msi(void * dev)
+{
+ if (true) {
+ _nocheck__trace_mptsas_irq_msi(dev);
+ }
+}
+
+#define TRACE_MPTSAS_MMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_mmio_read(void * dev, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mptsas_mmio_read(void * dev, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mptsas_mmio_read(dev, addr, val);
+ }
+}
+
+#define TRACE_MPTSAS_MMIO_UNHANDLED_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_mmio_unhandled_read(void * dev, uint32_t addr)
+{
+}
+
+static inline void trace_mptsas_mmio_unhandled_read(void * dev, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_mptsas_mmio_unhandled_read(dev, addr);
+ }
+}
+
+#define TRACE_MPTSAS_MMIO_UNHANDLED_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_mmio_unhandled_write(void * dev, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mptsas_mmio_unhandled_write(void * dev, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mptsas_mmio_unhandled_write(dev, addr, val);
+ }
+}
+
+#define TRACE_MPTSAS_MMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_mmio_write(void * dev, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_mptsas_mmio_write(void * dev, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_mptsas_mmio_write(dev, addr, val);
+ }
+}
+
+#define TRACE_MPTSAS_PROCESS_MESSAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_process_message(void * dev, int msg, uint32_t ctx)
+{
+}
+
+static inline void trace_mptsas_process_message(void * dev, int msg, uint32_t ctx)
+{
+ if (true) {
+ _nocheck__trace_mptsas_process_message(dev, msg, ctx);
+ }
+}
+
+#define TRACE_MPTSAS_PROCESS_SCSI_IO_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_process_scsi_io_request(void * dev, int bus, int target, int lun, uint64_t len)
+{
+}
+
+static inline void trace_mptsas_process_scsi_io_request(void * dev, int bus, int target, int lun, uint64_t len)
+{
+ if (true) {
+ _nocheck__trace_mptsas_process_scsi_io_request(dev, bus, target, lun, len);
+ }
+}
+
+#define TRACE_MPTSAS_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_reset(void * dev)
+{
+}
+
+static inline void trace_mptsas_reset(void * dev)
+{
+ if (true) {
+ _nocheck__trace_mptsas_reset(dev);
+ }
+}
+
+#define TRACE_MPTSAS_SCSI_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_scsi_overflow(void * dev, uint32_t ctx, uint64_t req, uint64_t found)
+{
+}
+
+static inline void trace_mptsas_scsi_overflow(void * dev, uint32_t ctx, uint64_t req, uint64_t found)
+{
+ if (true) {
+ _nocheck__trace_mptsas_scsi_overflow(dev, ctx, req, found);
+ }
+}
+
+#define TRACE_MPTSAS_SGL_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_sgl_overflow(void * dev, uint32_t ctx, uint64_t req, uint64_t found)
+{
+}
+
+static inline void trace_mptsas_sgl_overflow(void * dev, uint32_t ctx, uint64_t req, uint64_t found)
+{
+ if (true) {
+ _nocheck__trace_mptsas_sgl_overflow(dev, ctx, req, found);
+ }
+}
+
+#define TRACE_MPTSAS_UNHANDLED_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_unhandled_cmd(void * dev, uint32_t ctx, uint8_t msg_cmd)
+{
+}
+
+static inline void trace_mptsas_unhandled_cmd(void * dev, uint32_t ctx, uint8_t msg_cmd)
+{
+ if (true) {
+ _nocheck__trace_mptsas_unhandled_cmd(dev, ctx, msg_cmd);
+ }
+}
+
+#define TRACE_MPTSAS_UNHANDLED_DOORBELL_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_unhandled_doorbell_cmd(void * dev, int cmd)
+{
+}
+
+static inline void trace_mptsas_unhandled_doorbell_cmd(void * dev, int cmd)
+{
+ if (true) {
+ _nocheck__trace_mptsas_unhandled_doorbell_cmd(dev, cmd);
+ }
+}
+
+#define TRACE_MPTSAS_CONFIG_SAS_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_config_sas_device(void * dev, int address, int port, int phy_handle, int dev_handle, int page)
+{
+}
+
+static inline void trace_mptsas_config_sas_device(void * dev, int address, int port, int phy_handle, int dev_handle, int page)
+{
+ if (true) {
+ _nocheck__trace_mptsas_config_sas_device(dev, address, port, phy_handle, dev_handle, page);
+ }
+}
+
+#define TRACE_MPTSAS_CONFIG_SAS_PHY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mptsas_config_sas_phy(void * dev, int address, int port, int phy_handle, int dev_handle, int page)
+{
+}
+
+static inline void trace_mptsas_config_sas_phy(void * dev, int address, int port, int phy_handle, int dev_handle, int page)
+{
+ if (true) {
+ _nocheck__trace_mptsas_config_sas_phy(dev, address, port, phy_handle, dev_handle, page);
+ }
+}
+
+#define TRACE_MEGASAS_INIT_FIRMWARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_init_firmware(uint64_t pa)
+{
+}
+
+static inline void trace_megasas_init_firmware(uint64_t pa)
+{
+ if (true) {
+ _nocheck__trace_megasas_init_firmware(pa);
+ }
+}
+
+#define TRACE_MEGASAS_INIT_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, uint64_t tail, uint32_t flags)
+{
+}
+
+static inline void trace_megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, uint64_t tail, uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_megasas_init_queue(queue_pa, queue_len, head, tail, flags);
+ }
+}
+
+#define TRACE_MEGASAS_INITQ_MAP_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_initq_map_failed(int frame)
+{
+}
+
+static inline void trace_megasas_initq_map_failed(int frame)
+{
+ if (true) {
+ _nocheck__trace_megasas_initq_map_failed(frame);
+ }
+}
+
+#define TRACE_MEGASAS_INITQ_MAPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_initq_mapped(uint64_t pa)
+{
+}
+
+static inline void trace_megasas_initq_mapped(uint64_t pa)
+{
+ if (true) {
+ _nocheck__trace_megasas_initq_mapped(pa);
+ }
+}
+
+#define TRACE_MEGASAS_INITQ_MISMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_initq_mismatch(int queue_len, int fw_cmds)
+{
+}
+
+static inline void trace_megasas_initq_mismatch(int queue_len, int fw_cmds)
+{
+ if (true) {
+ _nocheck__trace_megasas_initq_mismatch(queue_len, fw_cmds);
+ }
+}
+
+#define TRACE_MEGASAS_QF_MAPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_mapped(unsigned int index)
+{
+}
+
+static inline void trace_megasas_qf_mapped(unsigned int index)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_mapped(index);
+ }
+}
+
+#define TRACE_MEGASAS_QF_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_new(unsigned int index, uint64_t frame)
+{
+}
+
+static inline void trace_megasas_qf_new(unsigned int index, uint64_t frame)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_new(index, frame);
+ }
+}
+
+#define TRACE_MEGASAS_QF_BUSY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_busy(unsigned long pa)
+{
+}
+
+static inline void trace_megasas_qf_busy(unsigned long pa)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_busy(pa);
+ }
+}
+
+#define TRACE_MEGASAS_QF_ENQUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t context, unsigned int head, unsigned int tail, int busy)
+{
+}
+
+static inline void trace_megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t context, unsigned int head, unsigned int tail, int busy)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_enqueue(index, count, context, head, tail, busy);
+ }
+}
+
+#define TRACE_MEGASAS_QF_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_update(unsigned int head, unsigned int tail, unsigned int busy)
+{
+}
+
+static inline void trace_megasas_qf_update(unsigned int head, unsigned int tail, unsigned int busy)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_update(head, tail, busy);
+ }
+}
+
+#define TRACE_MEGASAS_QF_MAP_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_map_failed(int cmd, unsigned long frame)
+{
+}
+
+static inline void trace_megasas_qf_map_failed(int cmd, unsigned long frame)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_map_failed(cmd, frame);
+ }
+}
+
+#define TRACE_MEGASAS_QF_COMPLETE_NOIRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_complete_noirq(uint64_t context)
+{
+}
+
+static inline void trace_megasas_qf_complete_noirq(uint64_t context)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_complete_noirq(context);
+ }
+}
+
+#define TRACE_MEGASAS_QF_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_qf_complete(uint64_t context, unsigned int head, unsigned int tail, int busy)
+{
+}
+
+static inline void trace_megasas_qf_complete(uint64_t context, unsigned int head, unsigned int tail, int busy)
+{
+ if (true) {
+ _nocheck__trace_megasas_qf_complete(context, head, tail, busy);
+ }
+}
+
+#define TRACE_MEGASAS_FRAME_BUSY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_frame_busy(uint64_t addr)
+{
+}
+
+static inline void trace_megasas_frame_busy(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_megasas_frame_busy(addr);
+ }
+}
+
+#define TRACE_MEGASAS_UNHANDLED_FRAME_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd)
+{
+}
+
+static inline void trace_megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd)
+{
+ if (true) {
+ _nocheck__trace_megasas_unhandled_frame_cmd(cmd, frame_cmd);
+ }
+}
+
+#define TRACE_MEGASAS_HANDLE_SCSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_handle_scsi(const char * frame, int bus, int dev, int lun, void * sdev, unsigned long size)
+{
+}
+
+static inline void trace_megasas_handle_scsi(const char * frame, int bus, int dev, int lun, void * sdev, unsigned long size)
+{
+ if (true) {
+ _nocheck__trace_megasas_handle_scsi(frame, bus, dev, lun, sdev, size);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_TARGET_NOT_PRESENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_target_not_present(const char * frame, int bus, int dev, int lun)
+{
+}
+
+static inline void trace_megasas_scsi_target_not_present(const char * frame, int bus, int dev, int lun)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_target_not_present(frame, bus, dev, lun);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_INVALID_CDB_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_invalid_cdb_len(const char * frame, int bus, int dev, int lun, int len)
+{
+}
+
+static inline void trace_megasas_scsi_invalid_cdb_len(const char * frame, int bus, int dev, int lun, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_invalid_cdb_len(frame, bus, dev, lun, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOV_READ_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iov_read_overflow(int cmd, int bytes, int len)
+{
+}
+
+static inline void trace_megasas_iov_read_overflow(int cmd, int bytes, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_iov_read_overflow(cmd, bytes, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOV_WRITE_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iov_write_overflow(int cmd, int bytes, int len)
+{
+}
+
+static inline void trace_megasas_iov_write_overflow(int cmd, int bytes, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_iov_write_overflow(cmd, bytes, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOV_READ_UNDERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iov_read_underflow(int cmd, int bytes, int len)
+{
+}
+
+static inline void trace_megasas_iov_read_underflow(int cmd, int bytes, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_iov_read_underflow(cmd, bytes, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOV_WRITE_UNDERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iov_write_underflow(int cmd, int bytes, int len)
+{
+}
+
+static inline void trace_megasas_iov_write_underflow(int cmd, int bytes, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_iov_write_underflow(cmd, bytes, len);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_REQ_ALLOC_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_req_alloc_failed(const char * frame, int dev, int lun)
+{
+}
+
+static inline void trace_megasas_scsi_req_alloc_failed(const char * frame, int dev, int lun)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_req_alloc_failed(frame, dev, lun);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_READ_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_read_start(int cmd, int len)
+{
+}
+
+static inline void trace_megasas_scsi_read_start(int cmd, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_read_start(cmd, len);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_WRITE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_write_start(int cmd, int len)
+{
+}
+
+static inline void trace_megasas_scsi_write_start(int cmd, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_write_start(cmd, len);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_NODATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_nodata(int cmd)
+{
+}
+
+static inline void trace_megasas_scsi_nodata(int cmd)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_nodata(cmd);
+ }
+}
+
+#define TRACE_MEGASAS_SCSI_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_scsi_complete(int cmd, uint32_t status, int len, int xfer)
+{
+}
+
+static inline void trace_megasas_scsi_complete(int cmd, uint32_t status, int len, int xfer)
+{
+ if (true) {
+ _nocheck__trace_megasas_scsi_complete(cmd, status, len, xfer);
+ }
+}
+
+#define TRACE_MEGASAS_COMMAND_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_command_complete(int cmd, uint32_t status, uint32_t resid)
+{
+}
+
+static inline void trace_megasas_command_complete(int cmd, uint32_t status, uint32_t resid)
+{
+ if (true) {
+ _nocheck__trace_megasas_command_complete(cmd, status, resid);
+ }
+}
+
+#define TRACE_MEGASAS_HANDLE_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_handle_io(int cmd, const char * frame, int dev, int lun, unsigned long lba, unsigned long count)
+{
+}
+
+static inline void trace_megasas_handle_io(int cmd, const char * frame, int dev, int lun, unsigned long lba, unsigned long count)
+{
+ if (true) {
+ _nocheck__trace_megasas_handle_io(cmd, frame, dev, lun, lba, count);
+ }
+}
+
+#define TRACE_MEGASAS_IO_TARGET_NOT_PRESENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_io_target_not_present(int cmd, const char * frame, int dev, int lun)
+{
+}
+
+static inline void trace_megasas_io_target_not_present(int cmd, const char * frame, int dev, int lun)
+{
+ if (true) {
+ _nocheck__trace_megasas_io_target_not_present(cmd, frame, dev, lun);
+ }
+}
+
+#define TRACE_MEGASAS_IO_READ_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_io_read_start(int cmd, unsigned long lba, unsigned long count, unsigned long len)
+{
+}
+
+static inline void trace_megasas_io_read_start(int cmd, unsigned long lba, unsigned long count, unsigned long len)
+{
+ if (true) {
+ _nocheck__trace_megasas_io_read_start(cmd, lba, count, len);
+ }
+}
+
+#define TRACE_MEGASAS_IO_WRITE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_io_write_start(int cmd, unsigned long lba, unsigned long count, unsigned long len)
+{
+}
+
+static inline void trace_megasas_io_write_start(int cmd, unsigned long lba, unsigned long count, unsigned long len)
+{
+ if (true) {
+ _nocheck__trace_megasas_io_write_start(cmd, lba, count, len);
+ }
+}
+
+#define TRACE_MEGASAS_IO_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_io_complete(int cmd, uint32_t len)
+{
+}
+
+static inline void trace_megasas_io_complete(int cmd, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_megasas_io_complete(cmd, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOVEC_SGL_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iovec_sgl_overflow(int cmd, int index, int limit)
+{
+}
+
+static inline void trace_megasas_iovec_sgl_overflow(int cmd, int index, int limit)
+{
+ if (true) {
+ _nocheck__trace_megasas_iovec_sgl_overflow(cmd, index, limit);
+ }
+}
+
+#define TRACE_MEGASAS_IOVEC_SGL_UNDERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iovec_sgl_underflow(int cmd, int index)
+{
+}
+
+static inline void trace_megasas_iovec_sgl_underflow(int cmd, int index)
+{
+ if (true) {
+ _nocheck__trace_megasas_iovec_sgl_underflow(cmd, index);
+ }
+}
+
+#define TRACE_MEGASAS_IOVEC_SGL_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iovec_sgl_invalid(int cmd, int index, uint64_t pa, uint32_t len)
+{
+}
+
+static inline void trace_megasas_iovec_sgl_invalid(int cmd, int index, uint64_t pa, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_megasas_iovec_sgl_invalid(cmd, index, pa, len);
+ }
+}
+
+#define TRACE_MEGASAS_IOVEC_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iovec_overflow(int cmd, int len, int limit)
+{
+}
+
+static inline void trace_megasas_iovec_overflow(int cmd, int len, int limit)
+{
+ if (true) {
+ _nocheck__trace_megasas_iovec_overflow(cmd, len, limit);
+ }
+}
+
+#define TRACE_MEGASAS_IOVEC_UNDERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_iovec_underflow(int cmd, int len, int limit)
+{
+}
+
+static inline void trace_megasas_iovec_underflow(int cmd, int len, int limit)
+{
+ if (true) {
+ _nocheck__trace_megasas_iovec_underflow(cmd, len, limit);
+ }
+}
+
+#define TRACE_MEGASAS_HANDLE_DCMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_handle_dcmd(int cmd, int opcode)
+{
+}
+
+static inline void trace_megasas_handle_dcmd(int cmd, int opcode)
+{
+ if (true) {
+ _nocheck__trace_megasas_handle_dcmd(cmd, opcode);
+ }
+}
+
+#define TRACE_MEGASAS_FINISH_DCMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_finish_dcmd(int cmd, int size)
+{
+}
+
+static inline void trace_megasas_finish_dcmd(int cmd, int size)
+{
+ if (true) {
+ _nocheck__trace_megasas_finish_dcmd(cmd, size);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_REQ_ALLOC_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_req_alloc_failed(int cmd, const char * desc)
+{
+}
+
+static inline void trace_megasas_dcmd_req_alloc_failed(int cmd, const char * desc)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_req_alloc_failed(cmd, desc);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_INTERNAL_SUBMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_internal_submit(int cmd, const char * desc, int dev)
+{
+}
+
+static inline void trace_megasas_dcmd_internal_submit(int cmd, const char * desc, int dev)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_internal_submit(cmd, desc, dev);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_INTERNAL_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_internal_finish(int cmd, int opcode, int lun)
+{
+}
+
+static inline void trace_megasas_dcmd_internal_finish(int cmd, int opcode, int lun)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_internal_finish(cmd, opcode, lun);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_INTERNAL_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_internal_invalid(int cmd, int opcode)
+{
+}
+
+static inline void trace_megasas_dcmd_internal_invalid(int cmd, int opcode)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_internal_invalid(cmd, opcode);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_UNHANDLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_unhandled(int cmd, int opcode, int len)
+{
+}
+
+static inline void trace_megasas_dcmd_unhandled(int cmd, int opcode, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_unhandled(cmd, opcode, len);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_ZERO_SGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_zero_sge(int cmd)
+{
+}
+
+static inline void trace_megasas_dcmd_zero_sge(int cmd)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_zero_sge(cmd);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_INVALID_SGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_invalid_sge(int cmd, int count)
+{
+}
+
+static inline void trace_megasas_dcmd_invalid_sge(int cmd, int count)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_invalid_sge(cmd, count);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_INVALID_XFER_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_invalid_xfer_len(int cmd, unsigned long size, unsigned long max)
+{
+}
+
+static inline void trace_megasas_dcmd_invalid_xfer_len(int cmd, unsigned long size, unsigned long max)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_invalid_xfer_len(cmd, size, max);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_enter(int cmd, const char * dcmd, int len)
+{
+}
+
+static inline void trace_megasas_dcmd_enter(int cmd, const char * dcmd, int len)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_enter(cmd, dcmd, len);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_DUMMY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_dummy(int cmd, unsigned long size)
+{
+}
+
+static inline void trace_megasas_dcmd_dummy(int cmd, unsigned long size)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_dummy(cmd, size);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_SET_FW_TIME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_set_fw_time(int cmd, unsigned long time)
+{
+}
+
+static inline void trace_megasas_dcmd_set_fw_time(int cmd, unsigned long time)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_set_fw_time(cmd, time);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_PD_GET_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_pd_get_list(int cmd, int num, int max, int offset)
+{
+}
+
+static inline void trace_megasas_dcmd_pd_get_list(int cmd, int num, int max, int offset)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_pd_get_list(cmd, num, max, offset);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_LD_GET_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_ld_get_list(int cmd, int num, int max)
+{
+}
+
+static inline void trace_megasas_dcmd_ld_get_list(int cmd, int num, int max)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_ld_get_list(cmd, num, max);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_LD_GET_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_ld_get_info(int cmd, int ld_id)
+{
+}
+
+static inline void trace_megasas_dcmd_ld_get_info(int cmd, int ld_id)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_ld_get_info(cmd, ld_id);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_LD_LIST_QUERY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_ld_list_query(int cmd, int flags)
+{
+}
+
+static inline void trace_megasas_dcmd_ld_list_query(int cmd, int flags)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_ld_list_query(cmd, flags);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_PD_GET_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_pd_get_info(int cmd, int pd_id)
+{
+}
+
+static inline void trace_megasas_dcmd_pd_get_info(int cmd, int pd_id)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_pd_get_info(cmd, pd_id);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_PD_LIST_QUERY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_pd_list_query(int cmd, int flags)
+{
+}
+
+static inline void trace_megasas_dcmd_pd_list_query(int cmd, int flags)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_pd_list_query(cmd, flags);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_RESET_LD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_reset_ld(int cmd, int target_id)
+{
+}
+
+static inline void trace_megasas_dcmd_reset_ld(int cmd, int target_id)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_reset_ld(cmd, target_id);
+ }
+}
+
+#define TRACE_MEGASAS_DCMD_UNSUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_dcmd_unsupported(int cmd, unsigned long size)
+{
+}
+
+static inline void trace_megasas_dcmd_unsupported(int cmd, unsigned long size)
+{
+ if (true) {
+ _nocheck__trace_megasas_dcmd_unsupported(cmd, size);
+ }
+}
+
+#define TRACE_MEGASAS_ABORT_FRAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_abort_frame(int cmd, int abort_cmd)
+{
+}
+
+static inline void trace_megasas_abort_frame(int cmd, int abort_cmd)
+{
+ if (true) {
+ _nocheck__trace_megasas_abort_frame(cmd, abort_cmd);
+ }
+}
+
+#define TRACE_MEGASAS_ABORT_NO_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_abort_no_cmd(int cmd, uint64_t context)
+{
+}
+
+static inline void trace_megasas_abort_no_cmd(int cmd, uint64_t context)
+{
+ if (true) {
+ _nocheck__trace_megasas_abort_no_cmd(cmd, context);
+ }
+}
+
+#define TRACE_MEGASAS_ABORT_INVALID_CONTEXT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_abort_invalid_context(int cmd, uint64_t context, int abort_cmd)
+{
+}
+
+static inline void trace_megasas_abort_invalid_context(int cmd, uint64_t context, int abort_cmd)
+{
+ if (true) {
+ _nocheck__trace_megasas_abort_invalid_context(cmd, context, abort_cmd);
+ }
+}
+
+#define TRACE_MEGASAS_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_reset(int fw_state)
+{
+}
+
+static inline void trace_megasas_reset(int fw_state)
+{
+ if (true) {
+ _nocheck__trace_megasas_reset(fw_state);
+ }
+}
+
+#define TRACE_MEGASAS_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_init(int sges, int cmds, const char * mode)
+{
+}
+
+static inline void trace_megasas_init(int sges, int cmds, const char * mode)
+{
+ if (true) {
+ _nocheck__trace_megasas_init(sges, cmds, mode);
+ }
+}
+
+#define TRACE_MEGASAS_MSIX_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_msix_raise(int vector)
+{
+}
+
+static inline void trace_megasas_msix_raise(int vector)
+{
+ if (true) {
+ _nocheck__trace_megasas_msix_raise(vector);
+ }
+}
+
+#define TRACE_MEGASAS_MSI_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_msi_raise(int vector)
+{
+}
+
+static inline void trace_megasas_msi_raise(int vector)
+{
+ if (true) {
+ _nocheck__trace_megasas_msi_raise(vector);
+ }
+}
+
+#define TRACE_MEGASAS_IRQ_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_irq_lower(void)
+{
+}
+
+static inline void trace_megasas_irq_lower(void)
+{
+ if (true) {
+ _nocheck__trace_megasas_irq_lower();
+ }
+}
+
+#define TRACE_MEGASAS_IRQ_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_irq_raise(void)
+{
+}
+
+static inline void trace_megasas_irq_raise(void)
+{
+ if (true) {
+ _nocheck__trace_megasas_irq_raise();
+ }
+}
+
+#define TRACE_MEGASAS_INTR_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_intr_enabled(void)
+{
+}
+
+static inline void trace_megasas_intr_enabled(void)
+{
+ if (true) {
+ _nocheck__trace_megasas_intr_enabled();
+ }
+}
+
+#define TRACE_MEGASAS_INTR_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_intr_disabled(void)
+{
+}
+
+static inline void trace_megasas_intr_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_megasas_intr_disabled();
+ }
+}
+
+#define TRACE_MEGASAS_MSIX_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_msix_enabled(int vector)
+{
+}
+
+static inline void trace_megasas_msix_enabled(int vector)
+{
+ if (true) {
+ _nocheck__trace_megasas_msix_enabled(vector);
+ }
+}
+
+#define TRACE_MEGASAS_MSI_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_msi_enabled(int vector)
+{
+}
+
+static inline void trace_megasas_msi_enabled(int vector)
+{
+ if (true) {
+ _nocheck__trace_megasas_msi_enabled(vector);
+ }
+}
+
+#define TRACE_MEGASAS_MMIO_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_mmio_readl(const char * reg, uint32_t val)
+{
+}
+
+static inline void trace_megasas_mmio_readl(const char * reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_megasas_mmio_readl(reg, val);
+ }
+}
+
+#define TRACE_MEGASAS_MMIO_INVALID_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_mmio_invalid_readl(unsigned long addr)
+{
+}
+
+static inline void trace_megasas_mmio_invalid_readl(unsigned long addr)
+{
+ if (true) {
+ _nocheck__trace_megasas_mmio_invalid_readl(addr);
+ }
+}
+
+#define TRACE_MEGASAS_MMIO_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_mmio_writel(const char * reg, uint32_t val)
+{
+}
+
+static inline void trace_megasas_mmio_writel(const char * reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_megasas_mmio_writel(reg, val);
+ }
+}
+
+#define TRACE_MEGASAS_MMIO_INVALID_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_megasas_mmio_invalid_writel(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_megasas_mmio_invalid_writel(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_megasas_mmio_invalid_writel(addr, val);
+ }
+}
+
+#define TRACE_PVSCSI_RING_INIT_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_ring_init_data(uint32_t txr_len_log2, uint32_t rxr_len_log2)
+{
+}
+
+static inline void trace_pvscsi_ring_init_data(uint32_t txr_len_log2, uint32_t rxr_len_log2)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_ring_init_data(txr_len_log2, rxr_len_log2);
+ }
+}
+
+#define TRACE_PVSCSI_RING_INIT_MSG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_ring_init_msg(uint32_t len_log2)
+{
+}
+
+static inline void trace_pvscsi_ring_init_msg(uint32_t len_log2)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_ring_init_msg(len_log2);
+ }
+}
+
+#define TRACE_PVSCSI_RING_FLUSH_CMP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_ring_flush_cmp(uint64_t filled_cmp_ptr)
+{
+}
+
+static inline void trace_pvscsi_ring_flush_cmp(uint64_t filled_cmp_ptr)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_ring_flush_cmp(filled_cmp_ptr);
+ }
+}
+
+#define TRACE_PVSCSI_RING_FLUSH_MSG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_ring_flush_msg(uint64_t filled_cmp_ptr)
+{
+}
+
+static inline void trace_pvscsi_ring_flush_msg(uint64_t filled_cmp_ptr)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_ring_flush_msg(filled_cmp_ptr);
+ }
+}
+
+#define TRACE_PVSCSI_UPDATE_IRQ_LEVEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_update_irq_level(bool raise, uint64_t mask, uint64_t status)
+{
+}
+
+static inline void trace_pvscsi_update_irq_level(bool raise, uint64_t mask, uint64_t status)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_update_irq_level(raise, mask, status);
+ }
+}
+
+#define TRACE_PVSCSI_UPDATE_IRQ_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_update_irq_msi(void)
+{
+}
+
+static inline void trace_pvscsi_update_irq_msi(void)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_update_irq_msi();
+ }
+}
+
+#define TRACE_PVSCSI_CMP_RING_PUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_cmp_ring_put(unsigned long addr)
+{
+}
+
+static inline void trace_pvscsi_cmp_ring_put(unsigned long addr)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_cmp_ring_put(addr);
+ }
+}
+
+#define TRACE_PVSCSI_MSG_RING_PUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_msg_ring_put(unsigned long addr)
+{
+}
+
+static inline void trace_pvscsi_msg_ring_put(unsigned long addr)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_msg_ring_put(addr);
+ }
+}
+
+#define TRACE_PVSCSI_COMPLETE_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_complete_request(uint64_t context, uint64_t len, uint8_t sense_key)
+{
+}
+
+static inline void trace_pvscsi_complete_request(uint64_t context, uint64_t len, uint8_t sense_key)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_complete_request(context, len, sense_key);
+ }
+}
+
+#define TRACE_PVSCSI_GET_SG_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_get_sg_list(int nsg, size_t size)
+{
+}
+
+static inline void trace_pvscsi_get_sg_list(int nsg, size_t size)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_get_sg_list(nsg, size);
+ }
+}
+
+#define TRACE_PVSCSI_GET_NEXT_SG_ELEM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_get_next_sg_elem(uint32_t flags)
+{
+}
+
+static inline void trace_pvscsi_get_next_sg_elem(uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_get_next_sg_elem(flags);
+ }
+}
+
+#define TRACE_PVSCSI_COMMAND_COMPLETE_NOT_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_command_complete_not_found(uint32_t tag)
+{
+}
+
+static inline void trace_pvscsi_command_complete_not_found(uint32_t tag)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_command_complete_not_found(tag);
+ }
+}
+
+#define TRACE_PVSCSI_COMMAND_COMPLETE_DATA_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_command_complete_data_run(void)
+{
+}
+
+static inline void trace_pvscsi_command_complete_data_run(void)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_command_complete_data_run();
+ }
+}
+
+#define TRACE_PVSCSI_COMMAND_COMPLETE_SENSE_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_command_complete_sense_len(int len)
+{
+}
+
+static inline void trace_pvscsi_command_complete_sense_len(int len)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_command_complete_sense_len(len);
+ }
+}
+
+#define TRACE_PVSCSI_CONVERT_SGLIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_convert_sglist(uint64_t context, unsigned long addr, uint32_t resid)
+{
+}
+
+static inline void trace_pvscsi_convert_sglist(uint64_t context, unsigned long addr, uint32_t resid)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_convert_sglist(context, addr, resid);
+ }
+}
+
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_process_req_descr(uint8_t cmd, uint64_t ctx)
+{
+}
+
+static inline void trace_pvscsi_process_req_descr(uint8_t cmd, uint64_t ctx)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_process_req_descr(cmd, ctx);
+ }
+}
+
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_UNKNOWN_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_process_req_descr_unknown_device(void)
+{
+}
+
+static inline void trace_pvscsi_process_req_descr_unknown_device(void)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_process_req_descr_unknown_device();
+ }
+}
+
+#define TRACE_PVSCSI_PROCESS_REQ_DESCR_INVALID_DIR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_process_req_descr_invalid_dir(void)
+{
+}
+
+static inline void trace_pvscsi_process_req_descr_invalid_dir(void)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_process_req_descr_invalid_dir();
+ }
+}
+
+#define TRACE_PVSCSI_PROCESS_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_process_io(unsigned long addr)
+{
+}
+
+static inline void trace_pvscsi_process_io(unsigned long addr)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_process_io(addr);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_NOIMPL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_noimpl(const char* cmd)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_noimpl(const char* cmd)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_noimpl(cmd);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_RESET_DEV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_reset_dev(uint32_t tgt, int lun, void* dev)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_reset_dev(uint32_t tgt, int lun, void* dev)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_reset_dev(tgt, lun, dev);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_ARRIVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_arrived(const char* cmd)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_arrived(const char* cmd)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_arrived(cmd);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_ABORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_abort(uint64_t ctx, uint32_t tgt)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_abort(uint64_t ctx, uint32_t tgt)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_abort(ctx, tgt);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_unknown(uint64_t cmd_id)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_unknown(uint64_t cmd_id)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_unknown(cmd_id);
+ }
+}
+
+#define TRACE_PVSCSI_ON_CMD_UNKNOWN_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_on_cmd_unknown_data(uint32_t data)
+{
+}
+
+static inline void trace_pvscsi_on_cmd_unknown_data(uint32_t data)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_on_cmd_unknown_data(data);
+ }
+}
+
+#define TRACE_PVSCSI_IO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_io_write(const char* cmd, uint64_t val)
+{
+}
+
+static inline void trace_pvscsi_io_write(const char* cmd, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_io_write(cmd, val);
+ }
+}
+
+#define TRACE_PVSCSI_IO_WRITE_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_io_write_unknown(unsigned long addr, unsigned sz, uint64_t val)
+{
+}
+
+static inline void trace_pvscsi_io_write_unknown(unsigned long addr, unsigned sz, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_io_write_unknown(addr, sz, val);
+ }
+}
+
+#define TRACE_PVSCSI_IO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_io_read(const char* cmd, uint64_t status)
+{
+}
+
+static inline void trace_pvscsi_io_read(const char* cmd, uint64_t status)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_io_read(cmd, status);
+ }
+}
+
+#define TRACE_PVSCSI_IO_READ_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_io_read_unknown(unsigned long addr, unsigned sz)
+{
+}
+
+static inline void trace_pvscsi_io_read_unknown(unsigned long addr, unsigned sz)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_io_read_unknown(addr, sz);
+ }
+}
+
+#define TRACE_PVSCSI_INIT_MSI_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_init_msi_fail(int res)
+{
+}
+
+static inline void trace_pvscsi_init_msi_fail(int res)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_init_msi_fail(res);
+ }
+}
+
+#define TRACE_PVSCSI_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_state(const char* state)
+{
+}
+
+static inline void trace_pvscsi_state(const char* state)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_state(state);
+ }
+}
+
+#define TRACE_PVSCSI_TX_RINGS_PPN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_tx_rings_ppn(const char* label, uint64_t ppn)
+{
+}
+
+static inline void trace_pvscsi_tx_rings_ppn(const char* label, uint64_t ppn)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_tx_rings_ppn(label, ppn);
+ }
+}
+
+#define TRACE_PVSCSI_TX_RINGS_NUM_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pvscsi_tx_rings_num_pages(const char* label, uint32_t num)
+{
+}
+
+static inline void trace_pvscsi_tx_rings_num_pages(const char* label, uint32_t num)
+{
+ if (true) {
+ _nocheck__trace_pvscsi_tx_rings_num_pages(label, num);
+ }
+}
+
+#define TRACE_ESP_ERROR_FIFO_OVERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_error_fifo_overrun(void)
+{
+}
+
+static inline void trace_esp_error_fifo_overrun(void)
+{
+ if (true) {
+ _nocheck__trace_esp_error_fifo_overrun();
+ }
+}
+
+#define TRACE_ESP_ERROR_UNHANDLED_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_error_unhandled_command(uint32_t val)
+{
+}
+
+static inline void trace_esp_error_unhandled_command(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_error_unhandled_command(val);
+ }
+}
+
+#define TRACE_ESP_ERROR_INVALID_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_error_invalid_write(uint32_t val, uint32_t addr)
+{
+}
+
+static inline void trace_esp_error_invalid_write(uint32_t val, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_esp_error_invalid_write(val, addr);
+ }
+}
+
+#define TRACE_ESP_RAISE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_raise_irq(void)
+{
+}
+
+static inline void trace_esp_raise_irq(void)
+{
+ if (true) {
+ _nocheck__trace_esp_raise_irq();
+ }
+}
+
+#define TRACE_ESP_LOWER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_lower_irq(void)
+{
+}
+
+static inline void trace_esp_lower_irq(void)
+{
+ if (true) {
+ _nocheck__trace_esp_lower_irq();
+ }
+}
+
+#define TRACE_ESP_DMA_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_dma_enable(void)
+{
+}
+
+static inline void trace_esp_dma_enable(void)
+{
+ if (true) {
+ _nocheck__trace_esp_dma_enable();
+ }
+}
+
+#define TRACE_ESP_DMA_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_dma_disable(void)
+{
+}
+
+static inline void trace_esp_dma_disable(void)
+{
+ if (true) {
+ _nocheck__trace_esp_dma_disable();
+ }
+}
+
+#define TRACE_ESP_GET_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_get_cmd(uint32_t dmalen, int target)
+{
+}
+
+static inline void trace_esp_get_cmd(uint32_t dmalen, int target)
+{
+ if (true) {
+ _nocheck__trace_esp_get_cmd(dmalen, target);
+ }
+}
+
+#define TRACE_ESP_DO_BUSID_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_do_busid_cmd(uint8_t busid)
+{
+}
+
+static inline void trace_esp_do_busid_cmd(uint8_t busid)
+{
+ if (true) {
+ _nocheck__trace_esp_do_busid_cmd(busid);
+ }
+}
+
+#define TRACE_ESP_HANDLE_SATN_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_handle_satn_stop(uint32_t cmdlen)
+{
+}
+
+static inline void trace_esp_handle_satn_stop(uint32_t cmdlen)
+{
+ if (true) {
+ _nocheck__trace_esp_handle_satn_stop(cmdlen);
+ }
+}
+
+#define TRACE_ESP_WRITE_RESPONSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_write_response(uint32_t status)
+{
+}
+
+static inline void trace_esp_write_response(uint32_t status)
+{
+ if (true) {
+ _nocheck__trace_esp_write_response(status);
+ }
+}
+
+#define TRACE_ESP_DO_DMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_do_dma(uint32_t cmdlen, uint32_t len)
+{
+}
+
+static inline void trace_esp_do_dma(uint32_t cmdlen, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_esp_do_dma(cmdlen, len);
+ }
+}
+
+#define TRACE_ESP_COMMAND_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_command_complete(void)
+{
+}
+
+static inline void trace_esp_command_complete(void)
+{
+ if (true) {
+ _nocheck__trace_esp_command_complete();
+ }
+}
+
+#define TRACE_ESP_COMMAND_COMPLETE_UNEXPECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_command_complete_unexpected(void)
+{
+}
+
+static inline void trace_esp_command_complete_unexpected(void)
+{
+ if (true) {
+ _nocheck__trace_esp_command_complete_unexpected();
+ }
+}
+
+#define TRACE_ESP_COMMAND_COMPLETE_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_command_complete_fail(void)
+{
+}
+
+static inline void trace_esp_command_complete_fail(void)
+{
+ if (true) {
+ _nocheck__trace_esp_command_complete_fail();
+ }
+}
+
+#define TRACE_ESP_TRANSFER_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_transfer_data(uint32_t dma_left, int32_t ti_size)
+{
+}
+
+static inline void trace_esp_transfer_data(uint32_t dma_left, int32_t ti_size)
+{
+ if (true) {
+ _nocheck__trace_esp_transfer_data(dma_left, ti_size);
+ }
+}
+
+#define TRACE_ESP_HANDLE_TI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_handle_ti(uint32_t minlen)
+{
+}
+
+static inline void trace_esp_handle_ti(uint32_t minlen)
+{
+ if (true) {
+ _nocheck__trace_esp_handle_ti(minlen);
+ }
+}
+
+#define TRACE_ESP_HANDLE_TI_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_handle_ti_cmd(uint32_t cmdlen)
+{
+}
+
+static inline void trace_esp_handle_ti_cmd(uint32_t cmdlen)
+{
+ if (true) {
+ _nocheck__trace_esp_handle_ti_cmd(cmdlen);
+ }
+}
+
+#define TRACE_ESP_MEM_READB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_readb(uint32_t saddr, uint8_t reg)
+{
+}
+
+static inline void trace_esp_mem_readb(uint32_t saddr, uint8_t reg)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_readb(saddr, reg);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb(uint32_t saddr, uint8_t reg, uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb(uint32_t saddr, uint8_t reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb(saddr, reg, val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_NOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_nop(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_nop(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_nop(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_flush(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_flush(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_flush(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_reset(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_reset(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_reset(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_BUS_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_bus_reset(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_bus_reset(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_bus_reset(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_ICCS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_iccs(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_iccs(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_iccs(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_MSGACC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_msgacc(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_msgacc(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_msgacc(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_PAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_pad(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_pad(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_pad(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_SATN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_satn(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_satn(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_satn(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_RSTATN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_rstatn(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_rstatn(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_rstatn(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_SEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_sel(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_sel(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_sel(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_SELATN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_selatn(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_selatn(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_selatn(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_SELATNS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_selatns(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_selatns(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_selatns(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_ENSEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_ensel(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_ensel(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_ensel(val);
+ }
+}
+
+#define TRACE_ESP_MEM_WRITEB_CMD_DISSEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_mem_writeb_cmd_dissel(uint32_t val)
+{
+}
+
+static inline void trace_esp_mem_writeb_cmd_dissel(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_mem_writeb_cmd_dissel(val);
+ }
+}
+
+#define TRACE_ESP_PCI_ERROR_INVALID_DMA_DIRECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_error_invalid_dma_direction(void)
+{
+}
+
+static inline void trace_esp_pci_error_invalid_dma_direction(void)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_error_invalid_dma_direction();
+ }
+}
+
+#define TRACE_ESP_PCI_ERROR_INVALID_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_error_invalid_read(uint32_t reg)
+{
+}
+
+static inline void trace_esp_pci_error_invalid_read(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_error_invalid_read(reg);
+ }
+}
+
+#define TRACE_ESP_PCI_ERROR_INVALID_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_error_invalid_write(uint32_t reg)
+{
+}
+
+static inline void trace_esp_pci_error_invalid_write(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_error_invalid_write(reg);
+ }
+}
+
+#define TRACE_ESP_PCI_ERROR_INVALID_WRITE_DMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_error_invalid_write_dma(uint32_t val, uint32_t addr)
+{
+}
+
+static inline void trace_esp_pci_error_invalid_write_dma(uint32_t val, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_error_invalid_write_dma(val, addr);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_read(uint32_t saddr, uint32_t reg)
+{
+}
+
+static inline void trace_esp_pci_dma_read(uint32_t saddr, uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_read(saddr, reg);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_write(uint32_t saddr, uint32_t reg, uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_dma_write(uint32_t saddr, uint32_t reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_write(saddr, reg, val);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_IDLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_idle(uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_dma_idle(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_idle(val);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_BLAST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_blast(uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_dma_blast(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_blast(val);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_ABORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_abort(uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_dma_abort(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_abort(val);
+ }
+}
+
+#define TRACE_ESP_PCI_DMA_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_dma_start(uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_dma_start(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_dma_start(val);
+ }
+}
+
+#define TRACE_ESP_PCI_SBAC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_sbac_read(uint32_t reg)
+{
+}
+
+static inline void trace_esp_pci_sbac_read(uint32_t reg)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_sbac_read(reg);
+ }
+}
+
+#define TRACE_ESP_PCI_SBAC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_esp_pci_sbac_write(uint32_t reg, uint32_t val)
+{
+}
+
+static inline void trace_esp_pci_sbac_write(uint32_t reg, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_esp_pci_sbac_write(reg, val);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SEND_RSP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_send_rsp(uint8_t status, int32_t res_in, int32_t res_out)
+{
+}
+
+static inline void trace_spapr_vscsi_send_rsp(uint8_t status, int32_t res_in, int32_t res_out)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_send_rsp(status, res_in, res_out);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_NO_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_no_data(void)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_no_data(void)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_no_data();
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DIRECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_direct(void)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_direct(void)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_direct();
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_indirect(uint32_t qtag, unsigned desc, unsigned local_desc)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_indirect(uint32_t qtag, unsigned desc, unsigned local_desc)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_indirect(qtag, desc, local_desc);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_out_of_range(unsigned desc, unsigned desc_offset)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_out_of_range(unsigned desc, unsigned desc_offset)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_out_of_range(desc, desc_offset);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DMA_READ_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_dma_read_error(int rc)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_dma_read_error(int rc)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_dma_read_error(rc);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_INDIRECT_SEG_EXT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_indirect_seg_ext(uint32_t qtag, unsigned n, unsigned desc, uint64_t va, uint32_t len)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_indirect_seg_ext(uint32_t qtag, unsigned n, unsigned desc, uint64_t va, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_indirect_seg_ext(qtag, n, desc, va, len);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_out_of_desc(void)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_out_of_desc(void)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_out_of_desc();
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_OUT_OF_DESC_BOUNDARY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_out_of_desc_boundary(unsigned offset, unsigned desc, uint32_t len)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_out_of_desc_boundary(unsigned offset, unsigned desc, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_out_of_desc_boundary(offset, desc, len);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_FETCH_DESC_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_fetch_desc_done(unsigned desc_num, unsigned desc_offset, uint64_t va, uint32_t len)
+{
+}
+
+static inline void trace_spapr_vscsi_fetch_desc_done(unsigned desc_num, unsigned desc_offset, uint64_t va, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_fetch_desc_done(desc_num, desc_offset, va, len);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_srp_indirect_data(uint32_t len)
+{
+}
+
+static inline void trace_spapr_vscsi_srp_indirect_data(uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_srp_indirect_data(len);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_RW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_srp_indirect_data_rw(int writing, int rc)
+{
+}
+
+static inline void trace_spapr_vscsi_srp_indirect_data_rw(int writing, int rc)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_srp_indirect_data_rw(writing, rc);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SRP_INDIRECT_DATA_BUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_srp_indirect_data_buf(unsigned a, unsigned b, unsigned c, unsigned d)
+{
+}
+
+static inline void trace_spapr_vscsi_srp_indirect_data_buf(unsigned a, unsigned b, unsigned c, unsigned d)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_srp_indirect_data_buf(a, b, c, d);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SRP_TRANSFER_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_srp_transfer_data(uint32_t len)
+{
+}
+
+static inline void trace_spapr_vscsi_srp_transfer_data(uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_srp_transfer_data(len);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_TRANSFER_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_transfer_data(uint32_t tag, uint32_t len, void * req)
+{
+}
+
+static inline void trace_spapr_vscsi_transfer_data(uint32_t tag, uint32_t len, void * req)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_transfer_data(tag, len, req);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_command_complete(uint32_t tag, uint32_t status, void * req)
+{
+}
+
+static inline void trace_spapr_vscsi_command_complete(uint32_t tag, uint32_t status, void * req)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_command_complete(tag, status, req);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_command_complete_sense_data1(uint32_t len, unsigned s0, unsigned s1, unsigned s2, unsigned s3, unsigned s4, unsigned s5, unsigned s6, unsigned s7)
+{
+}
+
+static inline void trace_spapr_vscsi_command_complete_sense_data1(uint32_t len, unsigned s0, unsigned s1, unsigned s2, unsigned s3, unsigned s4, unsigned s5, unsigned s6, unsigned s7)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_command_complete_sense_data1(len, s0, s1, s2, s3, s4, s5, s6, s7);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_SENSE_DATA2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_command_complete_sense_data2(unsigned s8, unsigned s9, unsigned s10, unsigned s11, unsigned s12, unsigned s13, unsigned s14, unsigned s15)
+{
+}
+
+static inline void trace_spapr_vscsi_command_complete_sense_data2(unsigned s8, unsigned s9, unsigned s10, unsigned s11, unsigned s12, unsigned s13, unsigned s14, unsigned s15)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_command_complete_sense_data2(s8, s9, s10, s11, s12, s13, s14, s15);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_COMMAND_COMPLETE_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_command_complete_status(uint32_t status)
+{
+}
+
+static inline void trace_spapr_vscsi_command_complete_status(uint32_t status)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_command_complete_status(status);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_SAVE_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_save_request(uint32_t qtag, unsigned desc, unsigned offset)
+{
+}
+
+static inline void trace_spapr_vscsi_save_request(uint32_t qtag, unsigned desc, unsigned offset)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_save_request(qtag, desc, offset);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_LOAD_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_load_request(uint32_t qtag, unsigned desc, unsigned offset)
+{
+}
+
+static inline void trace_spapr_vscsi_load_request(uint32_t qtag, unsigned desc, unsigned offset)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_load_request(qtag, desc, offset);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_PROCESS_LOGIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_process_login(void)
+{
+}
+
+static inline void trace_spapr_vscsi_process_login(void)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_process_login();
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_QUEUE_CMD_NO_DRIVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_queue_cmd_no_drive(uint64_t lun)
+{
+}
+
+static inline void trace_spapr_vscsi_queue_cmd_no_drive(uint64_t lun)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_queue_cmd_no_drive(lun);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_QUEUE_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_queue_cmd(uint32_t qtag, unsigned cdb, const char * cmd, int lun, int ret)
+{
+}
+
+static inline void trace_spapr_vscsi_queue_cmd(uint32_t qtag, unsigned cdb, const char * cmd, int lun, int ret)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_queue_cmd(qtag, cdb, cmd, lun, ret);
+ }
+}
+
+#define TRACE_SPAPR_VSCSI_DO_CRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_spapr_vscsi_do_crq(unsigned c0, unsigned c1)
+{
+}
+
+static inline void trace_spapr_vscsi_do_crq(unsigned c0, unsigned c1)
+{
+ if (true) {
+ _nocheck__trace_spapr_vscsi_do_crq(c0, c1);
+ }
+}
+#endif /* TRACE_HW_SCSI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/sd/trace.c b/qemu2-auto-generated/hw/sd/trace.c
new file mode 100644
index 0000000000..222434e8b5
--- /dev/null
+++ b/qemu2-auto-generated/hw/sd/trace.c
@@ -0,0 +1,419 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_BCM2835_SDHOST_READ_DSTATE;
+uint16_t _TRACE_BCM2835_SDHOST_WRITE_DSTATE;
+uint16_t _TRACE_BCM2835_SDHOST_EDM_CHANGE_DSTATE;
+uint16_t _TRACE_BCM2835_SDHOST_UPDATE_IRQ_DSTATE;
+uint16_t _TRACE_SDBUS_COMMAND_DSTATE;
+uint16_t _TRACE_SDBUS_READ_DSTATE;
+uint16_t _TRACE_SDBUS_WRITE_DSTATE;
+uint16_t _TRACE_SDBUS_SET_VOLTAGE_DSTATE;
+uint16_t _TRACE_SDBUS_GET_DAT_LINES_DSTATE;
+uint16_t _TRACE_SDBUS_GET_CMD_LINE_DSTATE;
+uint16_t _TRACE_SDHCI_SET_INSERTED_DSTATE;
+uint16_t _TRACE_SDHCI_SEND_COMMAND_DSTATE;
+uint16_t _TRACE_SDHCI_ERROR_DSTATE;
+uint16_t _TRACE_SDHCI_RESPONSE4_DSTATE;
+uint16_t _TRACE_SDHCI_RESPONSE16_DSTATE;
+uint16_t _TRACE_SDHCI_END_TRANSFER_DSTATE;
+uint16_t _TRACE_SDHCI_ADMA_DSTATE;
+uint16_t _TRACE_SDHCI_ADMA_LOOP_DSTATE;
+uint16_t _TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_DSTATE;
+uint16_t _TRACE_SDHCI_ACCESS_DSTATE;
+uint16_t _TRACE_SDHCI_READ_DATAPORT_DSTATE;
+uint16_t _TRACE_SDHCI_WRITE_DATAPORT_DSTATE;
+uint16_t _TRACE_SDHCI_CAPAREG_DSTATE;
+uint16_t _TRACE_SDCARD_NORMAL_COMMAND_DSTATE;
+uint16_t _TRACE_SDCARD_APP_COMMAND_DSTATE;
+uint16_t _TRACE_SDCARD_RESPONSE_DSTATE;
+uint16_t _TRACE_SDCARD_POWERUP_DSTATE;
+uint16_t _TRACE_SDCARD_INQUIRY_CMD41_DSTATE;
+uint16_t _TRACE_SDCARD_SET_ENABLE_DSTATE;
+uint16_t _TRACE_SDCARD_RESET_DSTATE;
+uint16_t _TRACE_SDCARD_SET_BLOCKLEN_DSTATE;
+uint16_t _TRACE_SDCARD_INSERTED_DSTATE;
+uint16_t _TRACE_SDCARD_EJECTED_DSTATE;
+uint16_t _TRACE_SDCARD_ERASE_DSTATE;
+uint16_t _TRACE_SDCARD_LOCK_DSTATE;
+uint16_t _TRACE_SDCARD_UNLOCK_DSTATE;
+uint16_t _TRACE_SDCARD_READ_BLOCK_DSTATE;
+uint16_t _TRACE_SDCARD_WRITE_BLOCK_DSTATE;
+uint16_t _TRACE_SDCARD_WRITE_DATA_DSTATE;
+uint16_t _TRACE_SDCARD_READ_DATA_DSTATE;
+uint16_t _TRACE_SDCARD_SET_VOLTAGE_DSTATE;
+uint16_t _TRACE_MILKYMIST_MEMCARD_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_PXA2XX_MMCI_READ_DSTATE;
+uint16_t _TRACE_PXA2XX_MMCI_WRITE_DSTATE;
+TraceEvent _TRACE_BCM2835_SDHOST_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bcm2835_sdhost_read",
+ .sstate = TRACE_BCM2835_SDHOST_READ_ENABLED,
+ .dstate = &_TRACE_BCM2835_SDHOST_READ_DSTATE
+};
+TraceEvent _TRACE_BCM2835_SDHOST_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bcm2835_sdhost_write",
+ .sstate = TRACE_BCM2835_SDHOST_WRITE_ENABLED,
+ .dstate = &_TRACE_BCM2835_SDHOST_WRITE_DSTATE
+};
+TraceEvent _TRACE_BCM2835_SDHOST_EDM_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bcm2835_sdhost_edm_change",
+ .sstate = TRACE_BCM2835_SDHOST_EDM_CHANGE_ENABLED,
+ .dstate = &_TRACE_BCM2835_SDHOST_EDM_CHANGE_DSTATE
+};
+TraceEvent _TRACE_BCM2835_SDHOST_UPDATE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "bcm2835_sdhost_update_irq",
+ .sstate = TRACE_BCM2835_SDHOST_UPDATE_IRQ_ENABLED,
+ .dstate = &_TRACE_BCM2835_SDHOST_UPDATE_IRQ_DSTATE
+};
+TraceEvent _TRACE_SDBUS_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_command",
+ .sstate = TRACE_SDBUS_COMMAND_ENABLED,
+ .dstate = &_TRACE_SDBUS_COMMAND_DSTATE
+};
+TraceEvent _TRACE_SDBUS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_read",
+ .sstate = TRACE_SDBUS_READ_ENABLED,
+ .dstate = &_TRACE_SDBUS_READ_DSTATE
+};
+TraceEvent _TRACE_SDBUS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_write",
+ .sstate = TRACE_SDBUS_WRITE_ENABLED,
+ .dstate = &_TRACE_SDBUS_WRITE_DSTATE
+};
+TraceEvent _TRACE_SDBUS_SET_VOLTAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_set_voltage",
+ .sstate = TRACE_SDBUS_SET_VOLTAGE_ENABLED,
+ .dstate = &_TRACE_SDBUS_SET_VOLTAGE_DSTATE
+};
+TraceEvent _TRACE_SDBUS_GET_DAT_LINES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_get_dat_lines",
+ .sstate = TRACE_SDBUS_GET_DAT_LINES_ENABLED,
+ .dstate = &_TRACE_SDBUS_GET_DAT_LINES_DSTATE
+};
+TraceEvent _TRACE_SDBUS_GET_CMD_LINE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdbus_get_cmd_line",
+ .sstate = TRACE_SDBUS_GET_CMD_LINE_ENABLED,
+ .dstate = &_TRACE_SDBUS_GET_CMD_LINE_DSTATE
+};
+TraceEvent _TRACE_SDHCI_SET_INSERTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_set_inserted",
+ .sstate = TRACE_SDHCI_SET_INSERTED_ENABLED,
+ .dstate = &_TRACE_SDHCI_SET_INSERTED_DSTATE
+};
+TraceEvent _TRACE_SDHCI_SEND_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_send_command",
+ .sstate = TRACE_SDHCI_SEND_COMMAND_ENABLED,
+ .dstate = &_TRACE_SDHCI_SEND_COMMAND_DSTATE
+};
+TraceEvent _TRACE_SDHCI_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_error",
+ .sstate = TRACE_SDHCI_ERROR_ENABLED,
+ .dstate = &_TRACE_SDHCI_ERROR_DSTATE
+};
+TraceEvent _TRACE_SDHCI_RESPONSE4_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_response4",
+ .sstate = TRACE_SDHCI_RESPONSE4_ENABLED,
+ .dstate = &_TRACE_SDHCI_RESPONSE4_DSTATE
+};
+TraceEvent _TRACE_SDHCI_RESPONSE16_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_response16",
+ .sstate = TRACE_SDHCI_RESPONSE16_ENABLED,
+ .dstate = &_TRACE_SDHCI_RESPONSE16_DSTATE
+};
+TraceEvent _TRACE_SDHCI_END_TRANSFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_end_transfer",
+ .sstate = TRACE_SDHCI_END_TRANSFER_ENABLED,
+ .dstate = &_TRACE_SDHCI_END_TRANSFER_DSTATE
+};
+TraceEvent _TRACE_SDHCI_ADMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_adma",
+ .sstate = TRACE_SDHCI_ADMA_ENABLED,
+ .dstate = &_TRACE_SDHCI_ADMA_DSTATE
+};
+TraceEvent _TRACE_SDHCI_ADMA_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_adma_loop",
+ .sstate = TRACE_SDHCI_ADMA_LOOP_ENABLED,
+ .dstate = &_TRACE_SDHCI_ADMA_LOOP_DSTATE
+};
+TraceEvent _TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_adma_transfer_completed",
+ .sstate = TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_ENABLED,
+ .dstate = &_TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_DSTATE
+};
+TraceEvent _TRACE_SDHCI_ACCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_access",
+ .sstate = TRACE_SDHCI_ACCESS_ENABLED,
+ .dstate = &_TRACE_SDHCI_ACCESS_DSTATE
+};
+TraceEvent _TRACE_SDHCI_READ_DATAPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_read_dataport",
+ .sstate = TRACE_SDHCI_READ_DATAPORT_ENABLED,
+ .dstate = &_TRACE_SDHCI_READ_DATAPORT_DSTATE
+};
+TraceEvent _TRACE_SDHCI_WRITE_DATAPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_write_dataport",
+ .sstate = TRACE_SDHCI_WRITE_DATAPORT_ENABLED,
+ .dstate = &_TRACE_SDHCI_WRITE_DATAPORT_DSTATE
+};
+TraceEvent _TRACE_SDHCI_CAPAREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdhci_capareg",
+ .sstate = TRACE_SDHCI_CAPAREG_ENABLED,
+ .dstate = &_TRACE_SDHCI_CAPAREG_DSTATE
+};
+TraceEvent _TRACE_SDCARD_NORMAL_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_normal_command",
+ .sstate = TRACE_SDCARD_NORMAL_COMMAND_ENABLED,
+ .dstate = &_TRACE_SDCARD_NORMAL_COMMAND_DSTATE
+};
+TraceEvent _TRACE_SDCARD_APP_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_app_command",
+ .sstate = TRACE_SDCARD_APP_COMMAND_ENABLED,
+ .dstate = &_TRACE_SDCARD_APP_COMMAND_DSTATE
+};
+TraceEvent _TRACE_SDCARD_RESPONSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_response",
+ .sstate = TRACE_SDCARD_RESPONSE_ENABLED,
+ .dstate = &_TRACE_SDCARD_RESPONSE_DSTATE
+};
+TraceEvent _TRACE_SDCARD_POWERUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_powerup",
+ .sstate = TRACE_SDCARD_POWERUP_ENABLED,
+ .dstate = &_TRACE_SDCARD_POWERUP_DSTATE
+};
+TraceEvent _TRACE_SDCARD_INQUIRY_CMD41_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_inquiry_cmd41",
+ .sstate = TRACE_SDCARD_INQUIRY_CMD41_ENABLED,
+ .dstate = &_TRACE_SDCARD_INQUIRY_CMD41_DSTATE
+};
+TraceEvent _TRACE_SDCARD_SET_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_set_enable",
+ .sstate = TRACE_SDCARD_SET_ENABLE_ENABLED,
+ .dstate = &_TRACE_SDCARD_SET_ENABLE_DSTATE
+};
+TraceEvent _TRACE_SDCARD_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_reset",
+ .sstate = TRACE_SDCARD_RESET_ENABLED,
+ .dstate = &_TRACE_SDCARD_RESET_DSTATE
+};
+TraceEvent _TRACE_SDCARD_SET_BLOCKLEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_set_blocklen",
+ .sstate = TRACE_SDCARD_SET_BLOCKLEN_ENABLED,
+ .dstate = &_TRACE_SDCARD_SET_BLOCKLEN_DSTATE
+};
+TraceEvent _TRACE_SDCARD_INSERTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_inserted",
+ .sstate = TRACE_SDCARD_INSERTED_ENABLED,
+ .dstate = &_TRACE_SDCARD_INSERTED_DSTATE
+};
+TraceEvent _TRACE_SDCARD_EJECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_ejected",
+ .sstate = TRACE_SDCARD_EJECTED_ENABLED,
+ .dstate = &_TRACE_SDCARD_EJECTED_DSTATE
+};
+TraceEvent _TRACE_SDCARD_ERASE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_erase",
+ .sstate = TRACE_SDCARD_ERASE_ENABLED,
+ .dstate = &_TRACE_SDCARD_ERASE_DSTATE
+};
+TraceEvent _TRACE_SDCARD_LOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_lock",
+ .sstate = TRACE_SDCARD_LOCK_ENABLED,
+ .dstate = &_TRACE_SDCARD_LOCK_DSTATE
+};
+TraceEvent _TRACE_SDCARD_UNLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_unlock",
+ .sstate = TRACE_SDCARD_UNLOCK_ENABLED,
+ .dstate = &_TRACE_SDCARD_UNLOCK_DSTATE
+};
+TraceEvent _TRACE_SDCARD_READ_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_read_block",
+ .sstate = TRACE_SDCARD_READ_BLOCK_ENABLED,
+ .dstate = &_TRACE_SDCARD_READ_BLOCK_DSTATE
+};
+TraceEvent _TRACE_SDCARD_WRITE_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_write_block",
+ .sstate = TRACE_SDCARD_WRITE_BLOCK_ENABLED,
+ .dstate = &_TRACE_SDCARD_WRITE_BLOCK_DSTATE
+};
+TraceEvent _TRACE_SDCARD_WRITE_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_write_data",
+ .sstate = TRACE_SDCARD_WRITE_DATA_ENABLED,
+ .dstate = &_TRACE_SDCARD_WRITE_DATA_DSTATE
+};
+TraceEvent _TRACE_SDCARD_READ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_read_data",
+ .sstate = TRACE_SDCARD_READ_DATA_ENABLED,
+ .dstate = &_TRACE_SDCARD_READ_DATA_DSTATE
+};
+TraceEvent _TRACE_SDCARD_SET_VOLTAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sdcard_set_voltage",
+ .sstate = TRACE_SDCARD_SET_VOLTAGE_ENABLED,
+ .dstate = &_TRACE_SDCARD_SET_VOLTAGE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MEMCARD_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_memcard_memory_read",
+ .sstate = TRACE_MILKYMIST_MEMCARD_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MEMCARD_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_memcard_memory_write",
+ .sstate = TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_PXA2XX_MMCI_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pxa2xx_mmci_read",
+ .sstate = TRACE_PXA2XX_MMCI_READ_ENABLED,
+ .dstate = &_TRACE_PXA2XX_MMCI_READ_DSTATE
+};
+TraceEvent _TRACE_PXA2XX_MMCI_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pxa2xx_mmci_write",
+ .sstate = TRACE_PXA2XX_MMCI_WRITE_ENABLED,
+ .dstate = &_TRACE_PXA2XX_MMCI_WRITE_DSTATE
+};
+TraceEvent *hw_sd_trace_events[] = {
+ &_TRACE_BCM2835_SDHOST_READ_EVENT,
+ &_TRACE_BCM2835_SDHOST_WRITE_EVENT,
+ &_TRACE_BCM2835_SDHOST_EDM_CHANGE_EVENT,
+ &_TRACE_BCM2835_SDHOST_UPDATE_IRQ_EVENT,
+ &_TRACE_SDBUS_COMMAND_EVENT,
+ &_TRACE_SDBUS_READ_EVENT,
+ &_TRACE_SDBUS_WRITE_EVENT,
+ &_TRACE_SDBUS_SET_VOLTAGE_EVENT,
+ &_TRACE_SDBUS_GET_DAT_LINES_EVENT,
+ &_TRACE_SDBUS_GET_CMD_LINE_EVENT,
+ &_TRACE_SDHCI_SET_INSERTED_EVENT,
+ &_TRACE_SDHCI_SEND_COMMAND_EVENT,
+ &_TRACE_SDHCI_ERROR_EVENT,
+ &_TRACE_SDHCI_RESPONSE4_EVENT,
+ &_TRACE_SDHCI_RESPONSE16_EVENT,
+ &_TRACE_SDHCI_END_TRANSFER_EVENT,
+ &_TRACE_SDHCI_ADMA_EVENT,
+ &_TRACE_SDHCI_ADMA_LOOP_EVENT,
+ &_TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_EVENT,
+ &_TRACE_SDHCI_ACCESS_EVENT,
+ &_TRACE_SDHCI_READ_DATAPORT_EVENT,
+ &_TRACE_SDHCI_WRITE_DATAPORT_EVENT,
+ &_TRACE_SDHCI_CAPAREG_EVENT,
+ &_TRACE_SDCARD_NORMAL_COMMAND_EVENT,
+ &_TRACE_SDCARD_APP_COMMAND_EVENT,
+ &_TRACE_SDCARD_RESPONSE_EVENT,
+ &_TRACE_SDCARD_POWERUP_EVENT,
+ &_TRACE_SDCARD_INQUIRY_CMD41_EVENT,
+ &_TRACE_SDCARD_SET_ENABLE_EVENT,
+ &_TRACE_SDCARD_RESET_EVENT,
+ &_TRACE_SDCARD_SET_BLOCKLEN_EVENT,
+ &_TRACE_SDCARD_INSERTED_EVENT,
+ &_TRACE_SDCARD_EJECTED_EVENT,
+ &_TRACE_SDCARD_ERASE_EVENT,
+ &_TRACE_SDCARD_LOCK_EVENT,
+ &_TRACE_SDCARD_UNLOCK_EVENT,
+ &_TRACE_SDCARD_READ_BLOCK_EVENT,
+ &_TRACE_SDCARD_WRITE_BLOCK_EVENT,
+ &_TRACE_SDCARD_WRITE_DATA_EVENT,
+ &_TRACE_SDCARD_READ_DATA_EVENT,
+ &_TRACE_SDCARD_SET_VOLTAGE_EVENT,
+ &_TRACE_MILKYMIST_MEMCARD_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_EVENT,
+ &_TRACE_PXA2XX_MMCI_READ_EVENT,
+ &_TRACE_PXA2XX_MMCI_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_hw_sd_register_events(void)
+{
+ trace_event_register_group(hw_sd_trace_events);
+}
+trace_init(trace_hw_sd_register_events)
diff --git a/qemu2-auto-generated/hw/sd/trace.h b/qemu2-auto-generated/hw/sd/trace.h
new file mode 100644
index 0000000000..4a06852f2c
--- /dev/null
+++ b/qemu2-auto-generated/hw/sd/trace.h
@@ -0,0 +1,774 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_SD_GENERATED_TRACERS_H
+#define TRACE_HW_SD_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_BCM2835_SDHOST_READ_EVENT;
+extern TraceEvent _TRACE_BCM2835_SDHOST_WRITE_EVENT;
+extern TraceEvent _TRACE_BCM2835_SDHOST_EDM_CHANGE_EVENT;
+extern TraceEvent _TRACE_BCM2835_SDHOST_UPDATE_IRQ_EVENT;
+extern TraceEvent _TRACE_SDBUS_COMMAND_EVENT;
+extern TraceEvent _TRACE_SDBUS_READ_EVENT;
+extern TraceEvent _TRACE_SDBUS_WRITE_EVENT;
+extern TraceEvent _TRACE_SDBUS_SET_VOLTAGE_EVENT;
+extern TraceEvent _TRACE_SDBUS_GET_DAT_LINES_EVENT;
+extern TraceEvent _TRACE_SDBUS_GET_CMD_LINE_EVENT;
+extern TraceEvent _TRACE_SDHCI_SET_INSERTED_EVENT;
+extern TraceEvent _TRACE_SDHCI_SEND_COMMAND_EVENT;
+extern TraceEvent _TRACE_SDHCI_ERROR_EVENT;
+extern TraceEvent _TRACE_SDHCI_RESPONSE4_EVENT;
+extern TraceEvent _TRACE_SDHCI_RESPONSE16_EVENT;
+extern TraceEvent _TRACE_SDHCI_END_TRANSFER_EVENT;
+extern TraceEvent _TRACE_SDHCI_ADMA_EVENT;
+extern TraceEvent _TRACE_SDHCI_ADMA_LOOP_EVENT;
+extern TraceEvent _TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_EVENT;
+extern TraceEvent _TRACE_SDHCI_ACCESS_EVENT;
+extern TraceEvent _TRACE_SDHCI_READ_DATAPORT_EVENT;
+extern TraceEvent _TRACE_SDHCI_WRITE_DATAPORT_EVENT;
+extern TraceEvent _TRACE_SDHCI_CAPAREG_EVENT;
+extern TraceEvent _TRACE_SDCARD_NORMAL_COMMAND_EVENT;
+extern TraceEvent _TRACE_SDCARD_APP_COMMAND_EVENT;
+extern TraceEvent _TRACE_SDCARD_RESPONSE_EVENT;
+extern TraceEvent _TRACE_SDCARD_POWERUP_EVENT;
+extern TraceEvent _TRACE_SDCARD_INQUIRY_CMD41_EVENT;
+extern TraceEvent _TRACE_SDCARD_SET_ENABLE_EVENT;
+extern TraceEvent _TRACE_SDCARD_RESET_EVENT;
+extern TraceEvent _TRACE_SDCARD_SET_BLOCKLEN_EVENT;
+extern TraceEvent _TRACE_SDCARD_INSERTED_EVENT;
+extern TraceEvent _TRACE_SDCARD_EJECTED_EVENT;
+extern TraceEvent _TRACE_SDCARD_ERASE_EVENT;
+extern TraceEvent _TRACE_SDCARD_LOCK_EVENT;
+extern TraceEvent _TRACE_SDCARD_UNLOCK_EVENT;
+extern TraceEvent _TRACE_SDCARD_READ_BLOCK_EVENT;
+extern TraceEvent _TRACE_SDCARD_WRITE_BLOCK_EVENT;
+extern TraceEvent _TRACE_SDCARD_WRITE_DATA_EVENT;
+extern TraceEvent _TRACE_SDCARD_READ_DATA_EVENT;
+extern TraceEvent _TRACE_SDCARD_SET_VOLTAGE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MEMCARD_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_PXA2XX_MMCI_READ_EVENT;
+extern TraceEvent _TRACE_PXA2XX_MMCI_WRITE_EVENT;
+extern uint16_t _TRACE_BCM2835_SDHOST_READ_DSTATE;
+extern uint16_t _TRACE_BCM2835_SDHOST_WRITE_DSTATE;
+extern uint16_t _TRACE_BCM2835_SDHOST_EDM_CHANGE_DSTATE;
+extern uint16_t _TRACE_BCM2835_SDHOST_UPDATE_IRQ_DSTATE;
+extern uint16_t _TRACE_SDBUS_COMMAND_DSTATE;
+extern uint16_t _TRACE_SDBUS_READ_DSTATE;
+extern uint16_t _TRACE_SDBUS_WRITE_DSTATE;
+extern uint16_t _TRACE_SDBUS_SET_VOLTAGE_DSTATE;
+extern uint16_t _TRACE_SDBUS_GET_DAT_LINES_DSTATE;
+extern uint16_t _TRACE_SDBUS_GET_CMD_LINE_DSTATE;
+extern uint16_t _TRACE_SDHCI_SET_INSERTED_DSTATE;
+extern uint16_t _TRACE_SDHCI_SEND_COMMAND_DSTATE;
+extern uint16_t _TRACE_SDHCI_ERROR_DSTATE;
+extern uint16_t _TRACE_SDHCI_RESPONSE4_DSTATE;
+extern uint16_t _TRACE_SDHCI_RESPONSE16_DSTATE;
+extern uint16_t _TRACE_SDHCI_END_TRANSFER_DSTATE;
+extern uint16_t _TRACE_SDHCI_ADMA_DSTATE;
+extern uint16_t _TRACE_SDHCI_ADMA_LOOP_DSTATE;
+extern uint16_t _TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_DSTATE;
+extern uint16_t _TRACE_SDHCI_ACCESS_DSTATE;
+extern uint16_t _TRACE_SDHCI_READ_DATAPORT_DSTATE;
+extern uint16_t _TRACE_SDHCI_WRITE_DATAPORT_DSTATE;
+extern uint16_t _TRACE_SDHCI_CAPAREG_DSTATE;
+extern uint16_t _TRACE_SDCARD_NORMAL_COMMAND_DSTATE;
+extern uint16_t _TRACE_SDCARD_APP_COMMAND_DSTATE;
+extern uint16_t _TRACE_SDCARD_RESPONSE_DSTATE;
+extern uint16_t _TRACE_SDCARD_POWERUP_DSTATE;
+extern uint16_t _TRACE_SDCARD_INQUIRY_CMD41_DSTATE;
+extern uint16_t _TRACE_SDCARD_SET_ENABLE_DSTATE;
+extern uint16_t _TRACE_SDCARD_RESET_DSTATE;
+extern uint16_t _TRACE_SDCARD_SET_BLOCKLEN_DSTATE;
+extern uint16_t _TRACE_SDCARD_INSERTED_DSTATE;
+extern uint16_t _TRACE_SDCARD_EJECTED_DSTATE;
+extern uint16_t _TRACE_SDCARD_ERASE_DSTATE;
+extern uint16_t _TRACE_SDCARD_LOCK_DSTATE;
+extern uint16_t _TRACE_SDCARD_UNLOCK_DSTATE;
+extern uint16_t _TRACE_SDCARD_READ_BLOCK_DSTATE;
+extern uint16_t _TRACE_SDCARD_WRITE_BLOCK_DSTATE;
+extern uint16_t _TRACE_SDCARD_WRITE_DATA_DSTATE;
+extern uint16_t _TRACE_SDCARD_READ_DATA_DSTATE;
+extern uint16_t _TRACE_SDCARD_SET_VOLTAGE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MEMCARD_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_PXA2XX_MMCI_READ_DSTATE;
+extern uint16_t _TRACE_PXA2XX_MMCI_WRITE_DSTATE;
+#define TRACE_BCM2835_SDHOST_READ_ENABLED 1
+#define TRACE_BCM2835_SDHOST_WRITE_ENABLED 1
+#define TRACE_BCM2835_SDHOST_EDM_CHANGE_ENABLED 1
+#define TRACE_BCM2835_SDHOST_UPDATE_IRQ_ENABLED 1
+#define TRACE_SDBUS_COMMAND_ENABLED 1
+#define TRACE_SDBUS_READ_ENABLED 1
+#define TRACE_SDBUS_WRITE_ENABLED 1
+#define TRACE_SDBUS_SET_VOLTAGE_ENABLED 1
+#define TRACE_SDBUS_GET_DAT_LINES_ENABLED 1
+#define TRACE_SDBUS_GET_CMD_LINE_ENABLED 1
+#define TRACE_SDHCI_SET_INSERTED_ENABLED 1
+#define TRACE_SDHCI_SEND_COMMAND_ENABLED 1
+#define TRACE_SDHCI_ERROR_ENABLED 1
+#define TRACE_SDHCI_RESPONSE4_ENABLED 1
+#define TRACE_SDHCI_RESPONSE16_ENABLED 1
+#define TRACE_SDHCI_END_TRANSFER_ENABLED 1
+#define TRACE_SDHCI_ADMA_ENABLED 1
+#define TRACE_SDHCI_ADMA_LOOP_ENABLED 1
+#define TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_ENABLED 1
+#define TRACE_SDHCI_ACCESS_ENABLED 1
+#define TRACE_SDHCI_READ_DATAPORT_ENABLED 1
+#define TRACE_SDHCI_WRITE_DATAPORT_ENABLED 1
+#define TRACE_SDHCI_CAPAREG_ENABLED 1
+#define TRACE_SDCARD_NORMAL_COMMAND_ENABLED 1
+#define TRACE_SDCARD_APP_COMMAND_ENABLED 1
+#define TRACE_SDCARD_RESPONSE_ENABLED 1
+#define TRACE_SDCARD_POWERUP_ENABLED 1
+#define TRACE_SDCARD_INQUIRY_CMD41_ENABLED 1
+#define TRACE_SDCARD_SET_ENABLE_ENABLED 1
+#define TRACE_SDCARD_RESET_ENABLED 1
+#define TRACE_SDCARD_SET_BLOCKLEN_ENABLED 1
+#define TRACE_SDCARD_INSERTED_ENABLED 1
+#define TRACE_SDCARD_EJECTED_ENABLED 1
+#define TRACE_SDCARD_ERASE_ENABLED 1
+#define TRACE_SDCARD_LOCK_ENABLED 1
+#define TRACE_SDCARD_UNLOCK_ENABLED 1
+#define TRACE_SDCARD_READ_BLOCK_ENABLED 1
+#define TRACE_SDCARD_WRITE_BLOCK_ENABLED 1
+#define TRACE_SDCARD_WRITE_DATA_ENABLED 1
+#define TRACE_SDCARD_READ_DATA_ENABLED 1
+#define TRACE_SDCARD_SET_VOLTAGE_ENABLED 1
+#define TRACE_MILKYMIST_MEMCARD_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_ENABLED 1
+#define TRACE_PXA2XX_MMCI_READ_ENABLED 1
+#define TRACE_PXA2XX_MMCI_WRITE_ENABLED 1
+
+#define TRACE_BCM2835_SDHOST_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bcm2835_sdhost_read(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_bcm2835_sdhost_read(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_bcm2835_sdhost_read(offset, data, size);
+ }
+}
+
+#define TRACE_BCM2835_SDHOST_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bcm2835_sdhost_write(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_bcm2835_sdhost_write(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_bcm2835_sdhost_write(offset, data, size);
+ }
+}
+
+#define TRACE_BCM2835_SDHOST_EDM_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bcm2835_sdhost_edm_change(const char * why, uint32_t edm)
+{
+}
+
+static inline void trace_bcm2835_sdhost_edm_change(const char * why, uint32_t edm)
+{
+ if (true) {
+ _nocheck__trace_bcm2835_sdhost_edm_change(why, edm);
+ }
+}
+
+#define TRACE_BCM2835_SDHOST_UPDATE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_bcm2835_sdhost_update_irq(uint32_t irq)
+{
+}
+
+static inline void trace_bcm2835_sdhost_update_irq(uint32_t irq)
+{
+ if (true) {
+ _nocheck__trace_bcm2835_sdhost_update_irq(irq);
+ }
+}
+
+#define TRACE_SDBUS_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_command(const char * bus_name, uint8_t cmd, uint32_t arg, uint8_t crc)
+{
+}
+
+static inline void trace_sdbus_command(const char * bus_name, uint8_t cmd, uint32_t arg, uint8_t crc)
+{
+ if (true) {
+ _nocheck__trace_sdbus_command(bus_name, cmd, arg, crc);
+ }
+}
+
+#define TRACE_SDBUS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_read(const char * bus_name, uint8_t value)
+{
+}
+
+static inline void trace_sdbus_read(const char * bus_name, uint8_t value)
+{
+ if (true) {
+ _nocheck__trace_sdbus_read(bus_name, value);
+ }
+}
+
+#define TRACE_SDBUS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_write(const char * bus_name, uint8_t value)
+{
+}
+
+static inline void trace_sdbus_write(const char * bus_name, uint8_t value)
+{
+ if (true) {
+ _nocheck__trace_sdbus_write(bus_name, value);
+ }
+}
+
+#define TRACE_SDBUS_SET_VOLTAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_set_voltage(const char * bus_name, uint16_t millivolts)
+{
+}
+
+static inline void trace_sdbus_set_voltage(const char * bus_name, uint16_t millivolts)
+{
+ if (true) {
+ _nocheck__trace_sdbus_set_voltage(bus_name, millivolts);
+ }
+}
+
+#define TRACE_SDBUS_GET_DAT_LINES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_get_dat_lines(const char * bus_name, uint8_t dat_lines)
+{
+}
+
+static inline void trace_sdbus_get_dat_lines(const char * bus_name, uint8_t dat_lines)
+{
+ if (true) {
+ _nocheck__trace_sdbus_get_dat_lines(bus_name, dat_lines);
+ }
+}
+
+#define TRACE_SDBUS_GET_CMD_LINE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdbus_get_cmd_line(const char * bus_name, bool cmd_line)
+{
+}
+
+static inline void trace_sdbus_get_cmd_line(const char * bus_name, bool cmd_line)
+{
+ if (true) {
+ _nocheck__trace_sdbus_get_cmd_line(bus_name, cmd_line);
+ }
+}
+
+#define TRACE_SDHCI_SET_INSERTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_set_inserted(const char * level)
+{
+}
+
+static inline void trace_sdhci_set_inserted(const char * level)
+{
+ if (true) {
+ _nocheck__trace_sdhci_set_inserted(level);
+ }
+}
+
+#define TRACE_SDHCI_SEND_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_send_command(uint8_t cmd, uint32_t arg)
+{
+}
+
+static inline void trace_sdhci_send_command(uint8_t cmd, uint32_t arg)
+{
+ if (true) {
+ _nocheck__trace_sdhci_send_command(cmd, arg);
+ }
+}
+
+#define TRACE_SDHCI_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_error(const char * msg)
+{
+}
+
+static inline void trace_sdhci_error(const char * msg)
+{
+ if (true) {
+ _nocheck__trace_sdhci_error(msg);
+ }
+}
+
+#define TRACE_SDHCI_RESPONSE4_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_response4(uint32_t r0)
+{
+}
+
+static inline void trace_sdhci_response4(uint32_t r0)
+{
+ if (true) {
+ _nocheck__trace_sdhci_response4(r0);
+ }
+}
+
+#define TRACE_SDHCI_RESPONSE16_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_response16(uint32_t r3, uint32_t r2, uint32_t r1, uint32_t r0)
+{
+}
+
+static inline void trace_sdhci_response16(uint32_t r3, uint32_t r2, uint32_t r1, uint32_t r0)
+{
+ if (true) {
+ _nocheck__trace_sdhci_response16(r3, r2, r1, r0);
+ }
+}
+
+#define TRACE_SDHCI_END_TRANSFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_end_transfer(uint8_t cmd, uint32_t arg)
+{
+}
+
+static inline void trace_sdhci_end_transfer(uint8_t cmd, uint32_t arg)
+{
+ if (true) {
+ _nocheck__trace_sdhci_end_transfer(cmd, arg);
+ }
+}
+
+#define TRACE_SDHCI_ADMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_adma(const char * desc, uint32_t sysad)
+{
+}
+
+static inline void trace_sdhci_adma(const char * desc, uint32_t sysad)
+{
+ if (true) {
+ _nocheck__trace_sdhci_adma(desc, sysad);
+ }
+}
+
+#define TRACE_SDHCI_ADMA_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_adma_loop(uint64_t addr, uint16_t length, uint8_t attr)
+{
+}
+
+static inline void trace_sdhci_adma_loop(uint64_t addr, uint16_t length, uint8_t attr)
+{
+ if (true) {
+ _nocheck__trace_sdhci_adma_loop(addr, length, attr);
+ }
+}
+
+#define TRACE_SDHCI_ADMA_TRANSFER_COMPLETED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_adma_transfer_completed(void)
+{
+}
+
+static inline void trace_sdhci_adma_transfer_completed(void)
+{
+ if (true) {
+ _nocheck__trace_sdhci_adma_transfer_completed();
+ }
+}
+
+#define TRACE_SDHCI_ACCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_access(const char * access, unsigned int size, uint64_t offset, const char * dir, uint64_t val, uint64_t val2)
+{
+}
+
+static inline void trace_sdhci_access(const char * access, unsigned int size, uint64_t offset, const char * dir, uint64_t val, uint64_t val2)
+{
+ if (true) {
+ _nocheck__trace_sdhci_access(access, size, offset, dir, val, val2);
+ }
+}
+
+#define TRACE_SDHCI_READ_DATAPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_read_dataport(uint16_t data_count)
+{
+}
+
+static inline void trace_sdhci_read_dataport(uint16_t data_count)
+{
+ if (true) {
+ _nocheck__trace_sdhci_read_dataport(data_count);
+ }
+}
+
+#define TRACE_SDHCI_WRITE_DATAPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_write_dataport(uint16_t data_count)
+{
+}
+
+static inline void trace_sdhci_write_dataport(uint16_t data_count)
+{
+ if (true) {
+ _nocheck__trace_sdhci_write_dataport(data_count);
+ }
+}
+
+#define TRACE_SDHCI_CAPAREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdhci_capareg(const char * desc, uint16_t val)
+{
+}
+
+static inline void trace_sdhci_capareg(const char * desc, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_sdhci_capareg(desc, val);
+ }
+}
+
+#define TRACE_SDCARD_NORMAL_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_normal_command(const char * proto, const char * cmd_desc, uint8_t cmd, uint32_t arg, const char * state)
+{
+}
+
+static inline void trace_sdcard_normal_command(const char * proto, const char * cmd_desc, uint8_t cmd, uint32_t arg, const char * state)
+{
+ if (true) {
+ _nocheck__trace_sdcard_normal_command(proto, cmd_desc, cmd, arg, state);
+ }
+}
+
+#define TRACE_SDCARD_APP_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_app_command(const char * proto, const char * acmd_desc, uint8_t acmd, uint32_t arg, const char * state)
+{
+}
+
+static inline void trace_sdcard_app_command(const char * proto, const char * acmd_desc, uint8_t acmd, uint32_t arg, const char * state)
+{
+ if (true) {
+ _nocheck__trace_sdcard_app_command(proto, acmd_desc, acmd, arg, state);
+ }
+}
+
+#define TRACE_SDCARD_RESPONSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_response(const char * rspdesc, int rsplen)
+{
+}
+
+static inline void trace_sdcard_response(const char * rspdesc, int rsplen)
+{
+ if (true) {
+ _nocheck__trace_sdcard_response(rspdesc, rsplen);
+ }
+}
+
+#define TRACE_SDCARD_POWERUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_powerup(void)
+{
+}
+
+static inline void trace_sdcard_powerup(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_powerup();
+ }
+}
+
+#define TRACE_SDCARD_INQUIRY_CMD41_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_inquiry_cmd41(void)
+{
+}
+
+static inline void trace_sdcard_inquiry_cmd41(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_inquiry_cmd41();
+ }
+}
+
+#define TRACE_SDCARD_SET_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_set_enable(bool current_state, bool new_state)
+{
+}
+
+static inline void trace_sdcard_set_enable(bool current_state, bool new_state)
+{
+ if (true) {
+ _nocheck__trace_sdcard_set_enable(current_state, new_state);
+ }
+}
+
+#define TRACE_SDCARD_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_reset(void)
+{
+}
+
+static inline void trace_sdcard_reset(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_reset();
+ }
+}
+
+#define TRACE_SDCARD_SET_BLOCKLEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_set_blocklen(uint16_t length)
+{
+}
+
+static inline void trace_sdcard_set_blocklen(uint16_t length)
+{
+ if (true) {
+ _nocheck__trace_sdcard_set_blocklen(length);
+ }
+}
+
+#define TRACE_SDCARD_INSERTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_inserted(bool readonly)
+{
+}
+
+static inline void trace_sdcard_inserted(bool readonly)
+{
+ if (true) {
+ _nocheck__trace_sdcard_inserted(readonly);
+ }
+}
+
+#define TRACE_SDCARD_EJECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_ejected(void)
+{
+}
+
+static inline void trace_sdcard_ejected(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_ejected();
+ }
+}
+
+#define TRACE_SDCARD_ERASE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_erase(void)
+{
+}
+
+static inline void trace_sdcard_erase(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_erase();
+ }
+}
+
+#define TRACE_SDCARD_LOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_lock(void)
+{
+}
+
+static inline void trace_sdcard_lock(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_lock();
+ }
+}
+
+#define TRACE_SDCARD_UNLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_unlock(void)
+{
+}
+
+static inline void trace_sdcard_unlock(void)
+{
+ if (true) {
+ _nocheck__trace_sdcard_unlock();
+ }
+}
+
+#define TRACE_SDCARD_READ_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_read_block(uint64_t addr, uint32_t len)
+{
+}
+
+static inline void trace_sdcard_read_block(uint64_t addr, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_sdcard_read_block(addr, len);
+ }
+}
+
+#define TRACE_SDCARD_WRITE_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_write_block(uint64_t addr, uint32_t len)
+{
+}
+
+static inline void trace_sdcard_write_block(uint64_t addr, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_sdcard_write_block(addr, len);
+ }
+}
+
+#define TRACE_SDCARD_WRITE_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_write_data(const char * proto, const char * cmd_desc, uint8_t cmd, uint8_t value)
+{
+}
+
+static inline void trace_sdcard_write_data(const char * proto, const char * cmd_desc, uint8_t cmd, uint8_t value)
+{
+ if (true) {
+ _nocheck__trace_sdcard_write_data(proto, cmd_desc, cmd, value);
+ }
+}
+
+#define TRACE_SDCARD_READ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_read_data(const char * proto, const char * cmd_desc, uint8_t cmd, int length)
+{
+}
+
+static inline void trace_sdcard_read_data(const char * proto, const char * cmd_desc, uint8_t cmd, int length)
+{
+ if (true) {
+ _nocheck__trace_sdcard_read_data(proto, cmd_desc, cmd, length);
+ }
+}
+
+#define TRACE_SDCARD_SET_VOLTAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sdcard_set_voltage(uint16_t millivolts)
+{
+}
+
+static inline void trace_sdcard_set_voltage(uint16_t millivolts)
+{
+ if (true) {
+ _nocheck__trace_sdcard_set_voltage(millivolts);
+ }
+}
+
+#define TRACE_MILKYMIST_MEMCARD_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_memcard_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_memcard_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_memcard_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_MEMCARD_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_memcard_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_memcard_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_memcard_memory_write(addr, value);
+ }
+}
+
+#define TRACE_PXA2XX_MMCI_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pxa2xx_mmci_read(uint8_t size, uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_pxa2xx_mmci_read(uint8_t size, uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_pxa2xx_mmci_read(size, addr, value);
+ }
+}
+
+#define TRACE_PXA2XX_MMCI_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pxa2xx_mmci_write(uint8_t size, uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_pxa2xx_mmci_write(uint8_t size, uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_pxa2xx_mmci_write(size, addr, value);
+ }
+}
+#endif /* TRACE_HW_SD_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/sparc/trace.c b/qemu2-auto-generated/hw/sparc/trace.c
new file mode 100644
index 0000000000..dd8fccba13
--- /dev/null
+++ b/qemu2-auto-generated/hw/sparc/trace.c
@@ -0,0 +1,140 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_SUN4M_CPU_INTERRUPT_DSTATE;
+uint16_t _TRACE_SUN4M_CPU_RESET_INTERRUPT_DSTATE;
+uint16_t _TRACE_SUN4M_CPU_SET_IRQ_RAISE_DSTATE;
+uint16_t _TRACE_SUN4M_CPU_SET_IRQ_LOWER_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_MEM_READL_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_TRANSLATE_PA_DSTATE;
+uint16_t _TRACE_SUN4M_IOMMU_BAD_ADDR_DSTATE;
+uint16_t _TRACE_LEON3_SET_IRQ_DSTATE;
+uint16_t _TRACE_LEON3_RESET_IRQ_DSTATE;
+TraceEvent _TRACE_SUN4M_CPU_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_cpu_interrupt",
+ .sstate = TRACE_SUN4M_CPU_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_SUN4M_CPU_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_SUN4M_CPU_RESET_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_cpu_reset_interrupt",
+ .sstate = TRACE_SUN4M_CPU_RESET_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_SUN4M_CPU_RESET_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_SUN4M_CPU_SET_IRQ_RAISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_cpu_set_irq_raise",
+ .sstate = TRACE_SUN4M_CPU_SET_IRQ_RAISE_ENABLED,
+ .dstate = &_TRACE_SUN4M_CPU_SET_IRQ_RAISE_DSTATE
+};
+TraceEvent _TRACE_SUN4M_CPU_SET_IRQ_LOWER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_cpu_set_irq_lower",
+ .sstate = TRACE_SUN4M_CPU_SET_IRQ_LOWER_ENABLED,
+ .dstate = &_TRACE_SUN4M_CPU_SET_IRQ_LOWER_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_mem_readl",
+ .sstate = TRACE_SUN4M_IOMMU_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_mem_writel",
+ .sstate = TRACE_SUN4M_IOMMU_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_mem_writel_ctrl",
+ .sstate = TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_mem_writel_tlbflush",
+ .sstate = TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_mem_writel_pgflush",
+ .sstate = TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_page_get_flags",
+ .sstate = TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_TRANSLATE_PA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_translate_pa",
+ .sstate = TRACE_SUN4M_IOMMU_TRANSLATE_PA_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_TRANSLATE_PA_DSTATE
+};
+TraceEvent _TRACE_SUN4M_IOMMU_BAD_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4m_iommu_bad_addr",
+ .sstate = TRACE_SUN4M_IOMMU_BAD_ADDR_ENABLED,
+ .dstate = &_TRACE_SUN4M_IOMMU_BAD_ADDR_DSTATE
+};
+TraceEvent _TRACE_LEON3_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "leon3_set_irq",
+ .sstate = TRACE_LEON3_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_LEON3_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_LEON3_RESET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "leon3_reset_irq",
+ .sstate = TRACE_LEON3_RESET_IRQ_ENABLED,
+ .dstate = &_TRACE_LEON3_RESET_IRQ_DSTATE
+};
+TraceEvent *hw_sparc_trace_events[] = {
+ &_TRACE_SUN4M_CPU_INTERRUPT_EVENT,
+ &_TRACE_SUN4M_CPU_RESET_INTERRUPT_EVENT,
+ &_TRACE_SUN4M_CPU_SET_IRQ_RAISE_EVENT,
+ &_TRACE_SUN4M_CPU_SET_IRQ_LOWER_EVENT,
+ &_TRACE_SUN4M_IOMMU_MEM_READL_EVENT,
+ &_TRACE_SUN4M_IOMMU_MEM_WRITEL_EVENT,
+ &_TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_EVENT,
+ &_TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_EVENT,
+ &_TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_EVENT,
+ &_TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_EVENT,
+ &_TRACE_SUN4M_IOMMU_TRANSLATE_PA_EVENT,
+ &_TRACE_SUN4M_IOMMU_BAD_ADDR_EVENT,
+ &_TRACE_LEON3_SET_IRQ_EVENT,
+ &_TRACE_LEON3_RESET_IRQ_EVENT,
+ NULL,
+};
+
+static void trace_hw_sparc_register_events(void)
+{
+ trace_event_register_group(hw_sparc_trace_events);
+}
+trace_init(trace_hw_sparc_register_events)
diff --git a/qemu2-auto-generated/hw/sparc/trace.h b/qemu2-auto-generated/hw/sparc/trace.h
new file mode 100644
index 0000000000..c99158ba69
--- /dev/null
+++ b/qemu2-auto-generated/hw/sparc/trace.h
@@ -0,0 +1,247 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_SPARC_GENERATED_TRACERS_H
+#define TRACE_HW_SPARC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_SUN4M_CPU_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_SUN4M_CPU_RESET_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_SUN4M_CPU_SET_IRQ_RAISE_EVENT;
+extern TraceEvent _TRACE_SUN4M_CPU_SET_IRQ_LOWER_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_TRANSLATE_PA_EVENT;
+extern TraceEvent _TRACE_SUN4M_IOMMU_BAD_ADDR_EVENT;
+extern TraceEvent _TRACE_LEON3_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_LEON3_RESET_IRQ_EVENT;
+extern uint16_t _TRACE_SUN4M_CPU_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_SUN4M_CPU_RESET_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_SUN4M_CPU_SET_IRQ_RAISE_DSTATE;
+extern uint16_t _TRACE_SUN4M_CPU_SET_IRQ_LOWER_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_TRANSLATE_PA_DSTATE;
+extern uint16_t _TRACE_SUN4M_IOMMU_BAD_ADDR_DSTATE;
+extern uint16_t _TRACE_LEON3_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_LEON3_RESET_IRQ_DSTATE;
+#define TRACE_SUN4M_CPU_INTERRUPT_ENABLED 1
+#define TRACE_SUN4M_CPU_RESET_INTERRUPT_ENABLED 1
+#define TRACE_SUN4M_CPU_SET_IRQ_RAISE_ENABLED 1
+#define TRACE_SUN4M_CPU_SET_IRQ_LOWER_ENABLED 1
+#define TRACE_SUN4M_IOMMU_MEM_READL_ENABLED 1
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_ENABLED 1
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_ENABLED 1
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_ENABLED 1
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_ENABLED 1
+#define TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_ENABLED 1
+#define TRACE_SUN4M_IOMMU_TRANSLATE_PA_ENABLED 1
+#define TRACE_SUN4M_IOMMU_BAD_ADDR_ENABLED 1
+#define TRACE_LEON3_SET_IRQ_ENABLED 1
+#define TRACE_LEON3_RESET_IRQ_ENABLED 1
+
+#define TRACE_SUN4M_CPU_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_cpu_interrupt(unsigned int level)
+{
+}
+
+static inline void trace_sun4m_cpu_interrupt(unsigned int level)
+{
+ if (true) {
+ _nocheck__trace_sun4m_cpu_interrupt(level);
+ }
+}
+
+#define TRACE_SUN4M_CPU_RESET_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_cpu_reset_interrupt(unsigned int level)
+{
+}
+
+static inline void trace_sun4m_cpu_reset_interrupt(unsigned int level)
+{
+ if (true) {
+ _nocheck__trace_sun4m_cpu_reset_interrupt(level);
+ }
+}
+
+#define TRACE_SUN4M_CPU_SET_IRQ_RAISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_cpu_set_irq_raise(int level)
+{
+}
+
+static inline void trace_sun4m_cpu_set_irq_raise(int level)
+{
+ if (true) {
+ _nocheck__trace_sun4m_cpu_set_irq_raise(level);
+ }
+}
+
+#define TRACE_SUN4M_CPU_SET_IRQ_LOWER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_cpu_set_irq_lower(int level)
+{
+}
+
+static inline void trace_sun4m_cpu_set_irq_lower(int level)
+{
+ if (true) {
+ _nocheck__trace_sun4m_cpu_set_irq_lower(level);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_mem_readl(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_sun4m_iommu_mem_readl(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_mem_readl(addr, ret);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_mem_writel(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_sun4m_iommu_mem_writel(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_mem_writel(addr, val);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_CTRL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_mem_writel_ctrl(uint64_t iostart)
+{
+}
+
+static inline void trace_sun4m_iommu_mem_writel_ctrl(uint64_t iostart)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_mem_writel_ctrl(iostart);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_TLBFLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_mem_writel_tlbflush(uint32_t val)
+{
+}
+
+static inline void trace_sun4m_iommu_mem_writel_tlbflush(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_mem_writel_tlbflush(val);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_MEM_WRITEL_PGFLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_mem_writel_pgflush(uint32_t val)
+{
+}
+
+static inline void trace_sun4m_iommu_mem_writel_pgflush(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_mem_writel_pgflush(val);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_PAGE_GET_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_page_get_flags(uint64_t pa, uint64_t iopte, uint32_t ret)
+{
+}
+
+static inline void trace_sun4m_iommu_page_get_flags(uint64_t pa, uint64_t iopte, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_page_get_flags(pa, iopte, ret);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_TRANSLATE_PA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_translate_pa(uint64_t addr, uint64_t pa, uint32_t iopte)
+{
+}
+
+static inline void trace_sun4m_iommu_translate_pa(uint64_t addr, uint64_t pa, uint32_t iopte)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_translate_pa(addr, pa, iopte);
+ }
+}
+
+#define TRACE_SUN4M_IOMMU_BAD_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4m_iommu_bad_addr(uint64_t addr)
+{
+}
+
+static inline void trace_sun4m_iommu_bad_addr(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_sun4m_iommu_bad_addr(addr);
+ }
+}
+
+#define TRACE_LEON3_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_leon3_set_irq(int intno)
+{
+}
+
+static inline void trace_leon3_set_irq(int intno)
+{
+ if (true) {
+ _nocheck__trace_leon3_set_irq(intno);
+ }
+}
+
+#define TRACE_LEON3_RESET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_leon3_reset_irq(int intno)
+{
+}
+
+static inline void trace_leon3_reset_irq(int intno)
+{
+ if (true) {
+ _nocheck__trace_leon3_reset_irq(intno);
+ }
+}
+#endif /* TRACE_HW_SPARC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/sparc64/trace.c b/qemu2-auto-generated/hw/sparc64/trace.c
new file mode 100644
index 0000000000..1989cbe0cb
--- /dev/null
+++ b/qemu2-auto-generated/hw/sparc64/trace.c
@@ -0,0 +1,194 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_EBUS_ISA_IRQ_HANDLER_DSTATE;
+uint16_t _TRACE_SUN4U_IOMMU_MEM_READ_DSTATE;
+uint16_t _TRACE_SUN4U_IOMMU_MEM_WRITE_DSTATE;
+uint16_t _TRACE_SUN4U_IOMMU_TRANSLATE_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_IRQ_FIRE_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_STICK_IRQ_FIRE_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_SET_COUNT_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_GET_COUNT_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_SET_LIMIT_DSTATE;
+uint16_t _TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_DSTATE;
+TraceEvent _TRACE_EBUS_ISA_IRQ_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ebus_isa_irq_handler",
+ .sstate = TRACE_EBUS_ISA_IRQ_HANDLER_ENABLED,
+ .dstate = &_TRACE_EBUS_ISA_IRQ_HANDLER_DSTATE
+};
+TraceEvent _TRACE_SUN4U_IOMMU_MEM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4u_iommu_mem_read",
+ .sstate = TRACE_SUN4U_IOMMU_MEM_READ_ENABLED,
+ .dstate = &_TRACE_SUN4U_IOMMU_MEM_READ_DSTATE
+};
+TraceEvent _TRACE_SUN4U_IOMMU_MEM_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4u_iommu_mem_write",
+ .sstate = TRACE_SUN4U_IOMMU_MEM_WRITE_ENABLED,
+ .dstate = &_TRACE_SUN4U_IOMMU_MEM_WRITE_DSTATE
+};
+TraceEvent _TRACE_SUN4U_IOMMU_TRANSLATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sun4u_iommu_translate",
+ .sstate = TRACE_SUN4U_IOMMU_TRANSLATE_ENABLED,
+ .dstate = &_TRACE_SUN4U_IOMMU_TRANSLATE_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_check_irqs_reset_irq",
+ .sstate = TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_check_irqs_noset_irq",
+ .sstate = TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_check_irqs_set_irq",
+ .sstate = TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_check_irqs_disabled",
+ .sstate = TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_ivec_raise_irq",
+ .sstate = TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_ivec_lower_irq",
+ .sstate = TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_irq_disabled",
+ .sstate = TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_IRQ_FIRE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_irq_fire",
+ .sstate = TRACE_SPARC64_CPU_TICK_IRQ_FIRE_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_IRQ_FIRE_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_stick_irq_disabled",
+ .sstate = TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_STICK_IRQ_FIRE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_stick_irq_fire",
+ .sstate = TRACE_SPARC64_CPU_STICK_IRQ_FIRE_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_STICK_IRQ_FIRE_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_hstick_irq_disabled",
+ .sstate = TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_hstick_irq_fire",
+ .sstate = TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_SET_COUNT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_set_count",
+ .sstate = TRACE_SPARC64_CPU_TICK_SET_COUNT_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_SET_COUNT_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_GET_COUNT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_get_count",
+ .sstate = TRACE_SPARC64_CPU_TICK_GET_COUNT_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_GET_COUNT_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_SET_LIMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_set_limit",
+ .sstate = TRACE_SPARC64_CPU_TICK_SET_LIMIT_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_SET_LIMIT_DSTATE
+};
+TraceEvent _TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sparc64_cpu_tick_set_limit_zero",
+ .sstate = TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_ENABLED,
+ .dstate = &_TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_DSTATE
+};
+TraceEvent *hw_sparc64_trace_events[] = {
+ &_TRACE_EBUS_ISA_IRQ_HANDLER_EVENT,
+ &_TRACE_SUN4U_IOMMU_MEM_READ_EVENT,
+ &_TRACE_SUN4U_IOMMU_MEM_WRITE_EVENT,
+ &_TRACE_SUN4U_IOMMU_TRANSLATE_EVENT,
+ &_TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_EVENT,
+ &_TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_EVENT,
+ &_TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_EVENT,
+ &_TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_EVENT,
+ &_TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_EVENT,
+ &_TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_IRQ_FIRE_EVENT,
+ &_TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_EVENT,
+ &_TRACE_SPARC64_CPU_STICK_IRQ_FIRE_EVENT,
+ &_TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_EVENT,
+ &_TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_SET_COUNT_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_GET_COUNT_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_SET_LIMIT_EVENT,
+ &_TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_EVENT,
+ NULL,
+};
+
+static void trace_hw_sparc64_register_events(void)
+{
+ trace_event_register_group(hw_sparc64_trace_events);
+}
+trace_init(trace_hw_sparc64_register_events)
diff --git a/qemu2-auto-generated/hw/sparc64/trace.h b/qemu2-auto-generated/hw/sparc64/trace.h
new file mode 100644
index 0000000000..7506319b3d
--- /dev/null
+++ b/qemu2-auto-generated/hw/sparc64/trace.h
@@ -0,0 +1,349 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_SPARC64_GENERATED_TRACERS_H
+#define TRACE_HW_SPARC64_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_EBUS_ISA_IRQ_HANDLER_EVENT;
+extern TraceEvent _TRACE_SUN4U_IOMMU_MEM_READ_EVENT;
+extern TraceEvent _TRACE_SUN4U_IOMMU_MEM_WRITE_EVENT;
+extern TraceEvent _TRACE_SUN4U_IOMMU_TRANSLATE_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_IRQ_FIRE_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_STICK_IRQ_FIRE_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_SET_COUNT_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_GET_COUNT_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_SET_LIMIT_EVENT;
+extern TraceEvent _TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_EVENT;
+extern uint16_t _TRACE_EBUS_ISA_IRQ_HANDLER_DSTATE;
+extern uint16_t _TRACE_SUN4U_IOMMU_MEM_READ_DSTATE;
+extern uint16_t _TRACE_SUN4U_IOMMU_MEM_WRITE_DSTATE;
+extern uint16_t _TRACE_SUN4U_IOMMU_TRANSLATE_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_IRQ_FIRE_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_STICK_IRQ_FIRE_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_SET_COUNT_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_GET_COUNT_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_SET_LIMIT_DSTATE;
+extern uint16_t _TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_DSTATE;
+#define TRACE_EBUS_ISA_IRQ_HANDLER_ENABLED 1
+#define TRACE_SUN4U_IOMMU_MEM_READ_ENABLED 1
+#define TRACE_SUN4U_IOMMU_MEM_WRITE_ENABLED 1
+#define TRACE_SUN4U_IOMMU_TRANSLATE_ENABLED 1
+#define TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_ENABLED 1
+#define TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_ENABLED 1
+#define TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_ENABLED 1
+#define TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_ENABLED 1
+#define TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_ENABLED 1
+#define TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_IRQ_FIRE_ENABLED 1
+#define TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_ENABLED 1
+#define TRACE_SPARC64_CPU_STICK_IRQ_FIRE_ENABLED 1
+#define TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_ENABLED 1
+#define TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_SET_COUNT_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_GET_COUNT_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_SET_LIMIT_ENABLED 1
+#define TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_ENABLED 1
+
+#define TRACE_EBUS_ISA_IRQ_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ebus_isa_irq_handler(int n, int level)
+{
+}
+
+static inline void trace_ebus_isa_irq_handler(int n, int level)
+{
+ if (true) {
+ _nocheck__trace_ebus_isa_irq_handler(n, level);
+ }
+}
+
+#define TRACE_SUN4U_IOMMU_MEM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4u_iommu_mem_read(uint64_t addr, uint64_t val, int size)
+{
+}
+
+static inline void trace_sun4u_iommu_mem_read(uint64_t addr, uint64_t val, int size)
+{
+ if (true) {
+ _nocheck__trace_sun4u_iommu_mem_read(addr, val, size);
+ }
+}
+
+#define TRACE_SUN4U_IOMMU_MEM_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4u_iommu_mem_write(uint64_t addr, uint64_t val, int size)
+{
+}
+
+static inline void trace_sun4u_iommu_mem_write(uint64_t addr, uint64_t val, int size)
+{
+ if (true) {
+ _nocheck__trace_sun4u_iommu_mem_write(addr, val, size);
+ }
+}
+
+#define TRACE_SUN4U_IOMMU_TRANSLATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sun4u_iommu_translate(uint64_t addr, uint64_t trans_addr, uint64_t tte)
+{
+}
+
+static inline void trace_sun4u_iommu_translate(uint64_t addr, uint64_t trans_addr, uint64_t tte)
+{
+ if (true) {
+ _nocheck__trace_sun4u_iommu_translate(addr, trans_addr, tte);
+ }
+}
+
+#define TRACE_SPARC64_CPU_CHECK_IRQS_RESET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_check_irqs_reset_irq(int intno)
+{
+}
+
+static inline void trace_sparc64_cpu_check_irqs_reset_irq(int intno)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_check_irqs_reset_irq(intno);
+ }
+}
+
+#define TRACE_SPARC64_CPU_CHECK_IRQS_NOSET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_check_irqs_noset_irq(uint32_t tl, uint32_t tt, int intno)
+{
+}
+
+static inline void trace_sparc64_cpu_check_irqs_noset_irq(uint32_t tl, uint32_t tt, int intno)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_check_irqs_noset_irq(tl, tt, intno);
+ }
+}
+
+#define TRACE_SPARC64_CPU_CHECK_IRQS_SET_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_check_irqs_set_irq(unsigned int i, int old, int new)
+{
+}
+
+static inline void trace_sparc64_cpu_check_irqs_set_irq(unsigned int i, int old, int new)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_check_irqs_set_irq(i, old, new);
+ }
+}
+
+#define TRACE_SPARC64_CPU_CHECK_IRQS_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_check_irqs_disabled(uint32_t pil, uint32_t pil_in, uint32_t softint, int intno)
+{
+}
+
+static inline void trace_sparc64_cpu_check_irqs_disabled(uint32_t pil, uint32_t pil_in, uint32_t softint, int intno)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_check_irqs_disabled(pil, pil_in, softint, intno);
+ }
+}
+
+#define TRACE_SPARC64_CPU_IVEC_RAISE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_ivec_raise_irq(int irq)
+{
+}
+
+static inline void trace_sparc64_cpu_ivec_raise_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_ivec_raise_irq(irq);
+ }
+}
+
+#define TRACE_SPARC64_CPU_IVEC_LOWER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_ivec_lower_irq(int irq)
+{
+}
+
+static inline void trace_sparc64_cpu_ivec_lower_irq(int irq)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_ivec_lower_irq(irq);
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_IRQ_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_irq_disabled(void)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_irq_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_irq_disabled();
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_IRQ_FIRE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_irq_fire(void)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_irq_fire(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_irq_fire();
+ }
+}
+
+#define TRACE_SPARC64_CPU_STICK_IRQ_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_stick_irq_disabled(void)
+{
+}
+
+static inline void trace_sparc64_cpu_stick_irq_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_stick_irq_disabled();
+ }
+}
+
+#define TRACE_SPARC64_CPU_STICK_IRQ_FIRE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_stick_irq_fire(void)
+{
+}
+
+static inline void trace_sparc64_cpu_stick_irq_fire(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_stick_irq_fire();
+ }
+}
+
+#define TRACE_SPARC64_CPU_HSTICK_IRQ_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_hstick_irq_disabled(void)
+{
+}
+
+static inline void trace_sparc64_cpu_hstick_irq_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_hstick_irq_disabled();
+ }
+}
+
+#define TRACE_SPARC64_CPU_HSTICK_IRQ_FIRE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_hstick_irq_fire(void)
+{
+}
+
+static inline void trace_sparc64_cpu_hstick_irq_fire(void)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_hstick_irq_fire();
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_SET_COUNT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_set_count(const char * name, uint64_t real_count, const char * npt, void * p)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_set_count(const char * name, uint64_t real_count, const char * npt, void * p)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_set_count(name, real_count, npt, p);
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_GET_COUNT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_get_count(const char * name, uint64_t real_count, const char * npt, void * p)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_get_count(const char * name, uint64_t real_count, const char * npt, void * p)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_get_count(name, real_count, npt, p);
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_SET_LIMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_set_limit(const char * name, uint64_t real_limit, const char * dis, void * p, uint64_t limit, uint64_t t, uint64_t dt)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_set_limit(const char * name, uint64_t real_limit, const char * dis, void * p, uint64_t limit, uint64_t t, uint64_t dt)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_set_limit(name, real_limit, dis, p, limit, t, dt);
+ }
+}
+
+#define TRACE_SPARC64_CPU_TICK_SET_LIMIT_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sparc64_cpu_tick_set_limit_zero(const char * name)
+{
+}
+
+static inline void trace_sparc64_cpu_tick_set_limit_zero(const char * name)
+{
+ if (true) {
+ _nocheck__trace_sparc64_cpu_tick_set_limit_zero(name);
+ }
+}
+#endif /* TRACE_HW_SPARC64_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/timer/trace.c b/qemu2-auto-generated/hw/timer/trace.c
new file mode 100644
index 0000000000..cae2b36063
--- /dev/null
+++ b/qemu2-auto-generated/hw/timer/trace.c
@@ -0,0 +1,446 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_SLAVIO_TIMER_GET_OUT_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_IRQ_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_READL_INVALID_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_READL_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_DSTATE;
+uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_ENABLE_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_DISABLED_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_RESTART_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_SET_SCALER_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_HIT_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_READL_DSTATE;
+uint16_t _TRACE_GRLIB_GPTIMER_WRITEL_DSTATE;
+uint16_t _TRACE_LM32_TIMER_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_LM32_TIMER_MEMORY_READ_DSTATE;
+uint16_t _TRACE_LM32_TIMER_HIT_DSTATE;
+uint16_t _TRACE_LM32_TIMER_IRQ_STATE_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_MEMORY_READ_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_START_TIMER0_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_START_TIMER1_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_DSTATE;
+uint16_t _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_CTRL_ENABLE_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_SET_CTRL2_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_SET_VALUE_DSTATE;
+uint16_t _TRACE_ASPEED_TIMER_READ_DSTATE;
+uint16_t _TRACE_SYSTICK_RELOAD_DSTATE;
+uint16_t _TRACE_SYSTICK_TIMER_TICK_DSTATE;
+uint16_t _TRACE_SYSTICK_READ_DSTATE;
+uint16_t _TRACE_SYSTICK_WRITE_DSTATE;
+uint16_t _TRACE_CMSDK_APB_TIMER_READ_DSTATE;
+uint16_t _TRACE_CMSDK_APB_TIMER_WRITE_DSTATE;
+uint16_t _TRACE_CMSDK_APB_TIMER_RESET_DSTATE;
+uint16_t _TRACE_XLNX_ZYNQMP_RTC_GETTIME_DSTATE;
+TraceEvent _TRACE_SLAVIO_TIMER_GET_OUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_get_out",
+ .sstate = TRACE_SLAVIO_TIMER_GET_OUT_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_GET_OUT_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_irq",
+ .sstate = TRACE_SLAVIO_TIMER_IRQ_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_IRQ_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_READL_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_readl_invalid",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_READL_INVALID_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_READL_INVALID_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_readl",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_READL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_READL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_limit",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_counter_invalid",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_status_start",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_status_stop",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_mode_user",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_mode_counter",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_mode_invalid",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_DSTATE
+};
+TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "slavio_timer_mem_writel_invalid",
+ .sstate = TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_ENABLED,
+ .dstate = &_TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_enable",
+ .sstate = TRACE_GRLIB_GPTIMER_ENABLE_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_ENABLE_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_disabled",
+ .sstate = TRACE_GRLIB_GPTIMER_DISABLED_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_DISABLED_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_RESTART_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_restart",
+ .sstate = TRACE_GRLIB_GPTIMER_RESTART_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_RESTART_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_SET_SCALER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_set_scaler",
+ .sstate = TRACE_GRLIB_GPTIMER_SET_SCALER_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_SET_SCALER_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_hit",
+ .sstate = TRACE_GRLIB_GPTIMER_HIT_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_HIT_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_READL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_readl",
+ .sstate = TRACE_GRLIB_GPTIMER_READL_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_READL_DSTATE
+};
+TraceEvent _TRACE_GRLIB_GPTIMER_WRITEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "grlib_gptimer_writel",
+ .sstate = TRACE_GRLIB_GPTIMER_WRITEL_ENABLED,
+ .dstate = &_TRACE_GRLIB_GPTIMER_WRITEL_DSTATE
+};
+TraceEvent _TRACE_LM32_TIMER_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_timer_memory_write",
+ .sstate = TRACE_LM32_TIMER_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_LM32_TIMER_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_LM32_TIMER_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_timer_memory_read",
+ .sstate = TRACE_LM32_TIMER_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_LM32_TIMER_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_LM32_TIMER_HIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_timer_hit",
+ .sstate = TRACE_LM32_TIMER_HIT_ENABLED,
+ .dstate = &_TRACE_LM32_TIMER_HIT_DSTATE
+};
+TraceEvent _TRACE_LM32_TIMER_IRQ_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lm32_timer_irq_state",
+ .sstate = TRACE_LM32_TIMER_IRQ_STATE_ENABLED,
+ .dstate = &_TRACE_LM32_TIMER_IRQ_STATE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_MEMORY_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_memory_read",
+ .sstate = TRACE_MILKYMIST_SYSCTL_MEMORY_READ_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_MEMORY_READ_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_memory_write",
+ .sstate = TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_icap_write",
+ .sstate = TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_START_TIMER0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_start_timer0",
+ .sstate = TRACE_MILKYMIST_SYSCTL_START_TIMER0_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_START_TIMER0_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_stop_timer0",
+ .sstate = TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_START_TIMER1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_start_timer1",
+ .sstate = TRACE_MILKYMIST_SYSCTL_START_TIMER1_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_START_TIMER1_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_stop_timer1",
+ .sstate = TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_pulse_irq_timer0",
+ .sstate = TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_DSTATE
+};
+TraceEvent _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "milkymist_sysctl_pulse_irq_timer1",
+ .sstate = TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_ENABLED,
+ .dstate = &_TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_CTRL_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_ctrl_enable",
+ .sstate = TRACE_ASPEED_TIMER_CTRL_ENABLE_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_CTRL_ENABLE_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_ctrl_external_clock",
+ .sstate = TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_ctrl_overflow_interrupt",
+ .sstate = TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_ctrl_pulse_enable",
+ .sstate = TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_SET_CTRL2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_set_ctrl2",
+ .sstate = TRACE_ASPEED_TIMER_SET_CTRL2_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_SET_CTRL2_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_SET_VALUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_set_value",
+ .sstate = TRACE_ASPEED_TIMER_SET_VALUE_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_SET_VALUE_DSTATE
+};
+TraceEvent _TRACE_ASPEED_TIMER_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aspeed_timer_read",
+ .sstate = TRACE_ASPEED_TIMER_READ_ENABLED,
+ .dstate = &_TRACE_ASPEED_TIMER_READ_DSTATE
+};
+TraceEvent _TRACE_SYSTICK_RELOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "systick_reload",
+ .sstate = TRACE_SYSTICK_RELOAD_ENABLED,
+ .dstate = &_TRACE_SYSTICK_RELOAD_DSTATE
+};
+TraceEvent _TRACE_SYSTICK_TIMER_TICK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "systick_timer_tick",
+ .sstate = TRACE_SYSTICK_TIMER_TICK_ENABLED,
+ .dstate = &_TRACE_SYSTICK_TIMER_TICK_DSTATE
+};
+TraceEvent _TRACE_SYSTICK_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "systick_read",
+ .sstate = TRACE_SYSTICK_READ_ENABLED,
+ .dstate = &_TRACE_SYSTICK_READ_DSTATE
+};
+TraceEvent _TRACE_SYSTICK_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "systick_write",
+ .sstate = TRACE_SYSTICK_WRITE_ENABLED,
+ .dstate = &_TRACE_SYSTICK_WRITE_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_TIMER_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_timer_read",
+ .sstate = TRACE_CMSDK_APB_TIMER_READ_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_TIMER_READ_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_TIMER_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_timer_write",
+ .sstate = TRACE_CMSDK_APB_TIMER_WRITE_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_TIMER_WRITE_DSTATE
+};
+TraceEvent _TRACE_CMSDK_APB_TIMER_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cmsdk_apb_timer_reset",
+ .sstate = TRACE_CMSDK_APB_TIMER_RESET_ENABLED,
+ .dstate = &_TRACE_CMSDK_APB_TIMER_RESET_DSTATE
+};
+TraceEvent _TRACE_XLNX_ZYNQMP_RTC_GETTIME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xlnx_zynqmp_rtc_gettime",
+ .sstate = TRACE_XLNX_ZYNQMP_RTC_GETTIME_ENABLED,
+ .dstate = &_TRACE_XLNX_ZYNQMP_RTC_GETTIME_DSTATE
+};
+TraceEvent *hw_timer_trace_events[] = {
+ &_TRACE_SLAVIO_TIMER_GET_OUT_EVENT,
+ &_TRACE_SLAVIO_TIMER_IRQ_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_READL_INVALID_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_READL_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_EVENT,
+ &_TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_EVENT,
+ &_TRACE_GRLIB_GPTIMER_ENABLE_EVENT,
+ &_TRACE_GRLIB_GPTIMER_DISABLED_EVENT,
+ &_TRACE_GRLIB_GPTIMER_RESTART_EVENT,
+ &_TRACE_GRLIB_GPTIMER_SET_SCALER_EVENT,
+ &_TRACE_GRLIB_GPTIMER_HIT_EVENT,
+ &_TRACE_GRLIB_GPTIMER_READL_EVENT,
+ &_TRACE_GRLIB_GPTIMER_WRITEL_EVENT,
+ &_TRACE_LM32_TIMER_MEMORY_WRITE_EVENT,
+ &_TRACE_LM32_TIMER_MEMORY_READ_EVENT,
+ &_TRACE_LM32_TIMER_HIT_EVENT,
+ &_TRACE_LM32_TIMER_IRQ_STATE_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_MEMORY_READ_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_START_TIMER0_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_START_TIMER1_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_EVENT,
+ &_TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_EVENT,
+ &_TRACE_ASPEED_TIMER_CTRL_ENABLE_EVENT,
+ &_TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_EVENT,
+ &_TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_EVENT,
+ &_TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_EVENT,
+ &_TRACE_ASPEED_TIMER_SET_CTRL2_EVENT,
+ &_TRACE_ASPEED_TIMER_SET_VALUE_EVENT,
+ &_TRACE_ASPEED_TIMER_READ_EVENT,
+ &_TRACE_SYSTICK_RELOAD_EVENT,
+ &_TRACE_SYSTICK_TIMER_TICK_EVENT,
+ &_TRACE_SYSTICK_READ_EVENT,
+ &_TRACE_SYSTICK_WRITE_EVENT,
+ &_TRACE_CMSDK_APB_TIMER_READ_EVENT,
+ &_TRACE_CMSDK_APB_TIMER_WRITE_EVENT,
+ &_TRACE_CMSDK_APB_TIMER_RESET_EVENT,
+ &_TRACE_XLNX_ZYNQMP_RTC_GETTIME_EVENT,
+ NULL,
+};
+
+static void trace_hw_timer_register_events(void)
+{
+ trace_event_register_group(hw_timer_trace_events);
+}
+trace_init(trace_hw_timer_register_events)
diff --git a/qemu2-auto-generated/hw/timer/trace.h b/qemu2-auto-generated/hw/timer/trace.h
new file mode 100644
index 0000000000..eb0cb35c08
--- /dev/null
+++ b/qemu2-auto-generated/hw/timer/trace.h
@@ -0,0 +1,825 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_TIMER_GENERATED_TRACERS_H
+#define TRACE_HW_TIMER_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_SLAVIO_TIMER_GET_OUT_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_IRQ_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_READL_INVALID_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_READL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_EVENT;
+extern TraceEvent _TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_ENABLE_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_DISABLED_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_RESTART_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_SET_SCALER_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_HIT_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_READL_EVENT;
+extern TraceEvent _TRACE_GRLIB_GPTIMER_WRITEL_EVENT;
+extern TraceEvent _TRACE_LM32_TIMER_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_LM32_TIMER_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_LM32_TIMER_HIT_EVENT;
+extern TraceEvent _TRACE_LM32_TIMER_IRQ_STATE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_MEMORY_READ_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_START_TIMER0_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_START_TIMER1_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_EVENT;
+extern TraceEvent _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_CTRL_ENABLE_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_SET_CTRL2_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_SET_VALUE_EVENT;
+extern TraceEvent _TRACE_ASPEED_TIMER_READ_EVENT;
+extern TraceEvent _TRACE_SYSTICK_RELOAD_EVENT;
+extern TraceEvent _TRACE_SYSTICK_TIMER_TICK_EVENT;
+extern TraceEvent _TRACE_SYSTICK_READ_EVENT;
+extern TraceEvent _TRACE_SYSTICK_WRITE_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_TIMER_READ_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_TIMER_WRITE_EVENT;
+extern TraceEvent _TRACE_CMSDK_APB_TIMER_RESET_EVENT;
+extern TraceEvent _TRACE_XLNX_ZYNQMP_RTC_GETTIME_EVENT;
+extern uint16_t _TRACE_SLAVIO_TIMER_GET_OUT_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_IRQ_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_READL_INVALID_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_READL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_DSTATE;
+extern uint16_t _TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_ENABLE_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_DISABLED_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_RESTART_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_SET_SCALER_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_HIT_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_READL_DSTATE;
+extern uint16_t _TRACE_GRLIB_GPTIMER_WRITEL_DSTATE;
+extern uint16_t _TRACE_LM32_TIMER_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_LM32_TIMER_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_LM32_TIMER_HIT_DSTATE;
+extern uint16_t _TRACE_LM32_TIMER_IRQ_STATE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_MEMORY_READ_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_START_TIMER0_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_START_TIMER1_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_DSTATE;
+extern uint16_t _TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_CTRL_ENABLE_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_SET_CTRL2_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_SET_VALUE_DSTATE;
+extern uint16_t _TRACE_ASPEED_TIMER_READ_DSTATE;
+extern uint16_t _TRACE_SYSTICK_RELOAD_DSTATE;
+extern uint16_t _TRACE_SYSTICK_TIMER_TICK_DSTATE;
+extern uint16_t _TRACE_SYSTICK_READ_DSTATE;
+extern uint16_t _TRACE_SYSTICK_WRITE_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_TIMER_READ_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_TIMER_WRITE_DSTATE;
+extern uint16_t _TRACE_CMSDK_APB_TIMER_RESET_DSTATE;
+extern uint16_t _TRACE_XLNX_ZYNQMP_RTC_GETTIME_DSTATE;
+#define TRACE_SLAVIO_TIMER_GET_OUT_ENABLED 1
+#define TRACE_SLAVIO_TIMER_IRQ_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_READL_INVALID_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_READL_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_ENABLED 1
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_ENABLE_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_DISABLED_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_RESTART_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_SET_SCALER_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_HIT_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_READL_ENABLED 1
+#define TRACE_GRLIB_GPTIMER_WRITEL_ENABLED 1
+#define TRACE_LM32_TIMER_MEMORY_WRITE_ENABLED 1
+#define TRACE_LM32_TIMER_MEMORY_READ_ENABLED 1
+#define TRACE_LM32_TIMER_HIT_ENABLED 1
+#define TRACE_LM32_TIMER_IRQ_STATE_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_MEMORY_READ_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_START_TIMER0_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_START_TIMER1_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_ENABLED 1
+#define TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_ENABLED 1
+#define TRACE_ASPEED_TIMER_CTRL_ENABLE_ENABLED 1
+#define TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_ENABLED 1
+#define TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_ENABLED 1
+#define TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_ENABLED 1
+#define TRACE_ASPEED_TIMER_SET_CTRL2_ENABLED 1
+#define TRACE_ASPEED_TIMER_SET_VALUE_ENABLED 1
+#define TRACE_ASPEED_TIMER_READ_ENABLED 1
+#define TRACE_SYSTICK_RELOAD_ENABLED 1
+#define TRACE_SYSTICK_TIMER_TICK_ENABLED 1
+#define TRACE_SYSTICK_READ_ENABLED 1
+#define TRACE_SYSTICK_WRITE_ENABLED 1
+#define TRACE_CMSDK_APB_TIMER_READ_ENABLED 1
+#define TRACE_CMSDK_APB_TIMER_WRITE_ENABLED 1
+#define TRACE_CMSDK_APB_TIMER_RESET_ENABLED 1
+#define TRACE_XLNX_ZYNQMP_RTC_GETTIME_ENABLED 1
+
+#define TRACE_SLAVIO_TIMER_GET_OUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_get_out(uint64_t limit, uint32_t counthigh, uint32_t count)
+{
+}
+
+static inline void trace_slavio_timer_get_out(uint64_t limit, uint32_t counthigh, uint32_t count)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_get_out(limit, counthigh, count);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_irq(uint32_t counthigh, uint32_t count)
+{
+}
+
+static inline void trace_slavio_timer_irq(uint32_t counthigh, uint32_t count)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_irq(counthigh, count);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_READL_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_readl_invalid(uint64_t addr)
+{
+}
+
+static inline void trace_slavio_timer_mem_readl_invalid(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_readl_invalid(addr);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_readl(uint64_t addr, uint32_t ret)
+{
+}
+
+static inline void trace_slavio_timer_mem_readl(uint64_t addr, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_readl(addr, ret);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel(uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel(uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel(addr, val);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_LIMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_limit(unsigned int timer_index, uint64_t count)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_limit(unsigned int timer_index, uint64_t count)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_limit(timer_index, count);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_COUNTER_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_counter_invalid(void)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_counter_invalid(void)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_counter_invalid();
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_status_start(unsigned int timer_index)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_status_start(unsigned int timer_index)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_status_start(timer_index);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_STATUS_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_status_stop(unsigned int timer_index)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_status_stop(unsigned int timer_index)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_status_stop(timer_index);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_USER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_mode_user(unsigned int timer_index)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_mode_user(unsigned int timer_index)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_mode_user(timer_index);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_COUNTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_mode_counter(unsigned int timer_index)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_mode_counter(unsigned int timer_index)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_mode_counter(timer_index);
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_MODE_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_mode_invalid(void)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_mode_invalid(void)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_mode_invalid();
+ }
+}
+
+#define TRACE_SLAVIO_TIMER_MEM_WRITEL_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_slavio_timer_mem_writel_invalid(uint64_t addr)
+{
+}
+
+static inline void trace_slavio_timer_mem_writel_invalid(uint64_t addr)
+{
+ if (true) {
+ _nocheck__trace_slavio_timer_mem_writel_invalid(addr);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_enable(int id, uint32_t count)
+{
+}
+
+static inline void trace_grlib_gptimer_enable(int id, uint32_t count)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_enable(id, count);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_disabled(int id, uint32_t config)
+{
+}
+
+static inline void trace_grlib_gptimer_disabled(int id, uint32_t config)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_disabled(id, config);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_RESTART_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_restart(int id, uint32_t reload)
+{
+}
+
+static inline void trace_grlib_gptimer_restart(int id, uint32_t reload)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_restart(id, reload);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_SET_SCALER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_set_scaler(uint32_t scaler, uint32_t freq)
+{
+}
+
+static inline void trace_grlib_gptimer_set_scaler(uint32_t scaler, uint32_t freq)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_set_scaler(scaler, freq);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_hit(int id)
+{
+}
+
+static inline void trace_grlib_gptimer_hit(int id)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_hit(id);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_READL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_readl(int id, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_grlib_gptimer_readl(int id, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_readl(id, addr, val);
+ }
+}
+
+#define TRACE_GRLIB_GPTIMER_WRITEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_grlib_gptimer_writel(int id, uint64_t addr, uint32_t val)
+{
+}
+
+static inline void trace_grlib_gptimer_writel(int id, uint64_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_grlib_gptimer_writel(id, addr, val);
+ }
+}
+
+#define TRACE_LM32_TIMER_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_timer_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_lm32_timer_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_timer_memory_write(addr, value);
+ }
+}
+
+#define TRACE_LM32_TIMER_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_timer_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_lm32_timer_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_lm32_timer_memory_read(addr, value);
+ }
+}
+
+#define TRACE_LM32_TIMER_HIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_timer_hit(void)
+{
+}
+
+static inline void trace_lm32_timer_hit(void)
+{
+ if (true) {
+ _nocheck__trace_lm32_timer_hit();
+ }
+}
+
+#define TRACE_LM32_TIMER_IRQ_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lm32_timer_irq_state(int level)
+{
+}
+
+static inline void trace_lm32_timer_irq_state(int level)
+{
+ if (true) {
+ _nocheck__trace_lm32_timer_irq_state(level);
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_MEMORY_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_memory_read(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_sysctl_memory_read(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_memory_read(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_MEMORY_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_memory_write(uint32_t addr, uint32_t value)
+{
+}
+
+static inline void trace_milkymist_sysctl_memory_write(uint32_t addr, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_memory_write(addr, value);
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_ICAP_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_icap_write(uint32_t value)
+{
+}
+
+static inline void trace_milkymist_sysctl_icap_write(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_icap_write(value);
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_START_TIMER0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_start_timer0(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_start_timer0(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_start_timer0();
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_STOP_TIMER0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_stop_timer0(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_stop_timer0(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_stop_timer0();
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_START_TIMER1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_start_timer1(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_start_timer1(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_start_timer1();
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_STOP_TIMER1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_stop_timer1(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_stop_timer1(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_stop_timer1();
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_pulse_irq_timer0(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_pulse_irq_timer0(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_pulse_irq_timer0();
+ }
+}
+
+#define TRACE_MILKYMIST_SYSCTL_PULSE_IRQ_TIMER1_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_milkymist_sysctl_pulse_irq_timer1(void)
+{
+}
+
+static inline void trace_milkymist_sysctl_pulse_irq_timer1(void)
+{
+ if (true) {
+ _nocheck__trace_milkymist_sysctl_pulse_irq_timer1();
+ }
+}
+
+#define TRACE_ASPEED_TIMER_CTRL_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_ctrl_enable(uint8_t i, bool enable)
+{
+}
+
+static inline void trace_aspeed_timer_ctrl_enable(uint8_t i, bool enable)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_ctrl_enable(i, enable);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_CTRL_EXTERNAL_CLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_ctrl_external_clock(uint8_t i, bool enable)
+{
+}
+
+static inline void trace_aspeed_timer_ctrl_external_clock(uint8_t i, bool enable)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_ctrl_external_clock(i, enable);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_CTRL_OVERFLOW_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_ctrl_overflow_interrupt(uint8_t i, bool enable)
+{
+}
+
+static inline void trace_aspeed_timer_ctrl_overflow_interrupt(uint8_t i, bool enable)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_ctrl_overflow_interrupt(i, enable);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_CTRL_PULSE_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_ctrl_pulse_enable(uint8_t i, bool enable)
+{
+}
+
+static inline void trace_aspeed_timer_ctrl_pulse_enable(uint8_t i, bool enable)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_ctrl_pulse_enable(i, enable);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_SET_CTRL2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_set_ctrl2(uint32_t value)
+{
+}
+
+static inline void trace_aspeed_timer_set_ctrl2(uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_set_ctrl2(value);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_SET_VALUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_set_value(int timer, int reg, uint32_t value)
+{
+}
+
+static inline void trace_aspeed_timer_set_value(int timer, int reg, uint32_t value)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_set_value(timer, reg, value);
+ }
+}
+
+#define TRACE_ASPEED_TIMER_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aspeed_timer_read(uint64_t offset, unsigned size, uint64_t value)
+{
+}
+
+static inline void trace_aspeed_timer_read(uint64_t offset, unsigned size, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_aspeed_timer_read(offset, size, value);
+ }
+}
+
+#define TRACE_SYSTICK_RELOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_systick_reload(void)
+{
+}
+
+static inline void trace_systick_reload(void)
+{
+ if (true) {
+ _nocheck__trace_systick_reload();
+ }
+}
+
+#define TRACE_SYSTICK_TIMER_TICK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_systick_timer_tick(void)
+{
+}
+
+static inline void trace_systick_timer_tick(void)
+{
+ if (true) {
+ _nocheck__trace_systick_timer_tick();
+ }
+}
+
+#define TRACE_SYSTICK_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_systick_read(uint64_t addr, uint32_t value, unsigned size)
+{
+}
+
+static inline void trace_systick_read(uint64_t addr, uint32_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_systick_read(addr, value, size);
+ }
+}
+
+#define TRACE_SYSTICK_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_systick_write(uint64_t addr, uint32_t value, unsigned size)
+{
+}
+
+static inline void trace_systick_write(uint64_t addr, uint32_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_systick_write(addr, value, size);
+ }
+}
+
+#define TRACE_CMSDK_APB_TIMER_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_timer_read(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_cmsdk_apb_timer_read(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_timer_read(offset, data, size);
+ }
+}
+
+#define TRACE_CMSDK_APB_TIMER_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_timer_write(uint64_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_cmsdk_apb_timer_write(uint64_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_timer_write(offset, data, size);
+ }
+}
+
+#define TRACE_CMSDK_APB_TIMER_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cmsdk_apb_timer_reset(void)
+{
+}
+
+static inline void trace_cmsdk_apb_timer_reset(void)
+{
+ if (true) {
+ _nocheck__trace_cmsdk_apb_timer_reset();
+ }
+}
+
+#define TRACE_XLNX_ZYNQMP_RTC_GETTIME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xlnx_zynqmp_rtc_gettime(int year, int month, int day, int hour, int min, int sec)
+{
+}
+
+static inline void trace_xlnx_zynqmp_rtc_gettime(int year, int month, int day, int hour, int min, int sec)
+{
+ if (true) {
+ _nocheck__trace_xlnx_zynqmp_rtc_gettime(year, month, day, hour, min, sec);
+ }
+}
+#endif /* TRACE_HW_TIMER_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/tpm/trace.c b/qemu2-auto-generated/hw/tpm/trace.c
new file mode 100644
index 0000000000..4cfaa39f5e
--- /dev/null
+++ b/qemu2-auto-generated/hw/tpm/trace.c
@@ -0,0 +1,329 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_TPM_CRB_MMIO_READ_DSTATE;
+uint16_t _TRACE_TPM_CRB_MMIO_WRITE_DSTATE;
+uint16_t _TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_DSTATE;
+uint16_t _TRACE_TPM_PASSTHROUGH_RESET_DSTATE;
+uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_DSTATE;
+uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_DSTATE;
+uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_DSTATE;
+uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_DSTATE;
+uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_SET_LOCALITY_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_HANDLE_REQUEST_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_PROBE_CAPS_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_STARTUP_TPM_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_DSTATE;
+uint16_t _TRACE_TPM_EMULATOR_INST_INIT_DSTATE;
+uint16_t _TRACE_TPM_TIS_RAISE_IRQ_DSTATE;
+uint16_t _TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_DSTATE;
+uint16_t _TRACE_TPM_TIS_ABORT_DSTATE;
+uint16_t _TRACE_TPM_TIS_DATA_READ_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_READ_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_DSTATE;
+uint16_t _TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_DSTATE;
+TraceEvent _TRACE_TPM_CRB_MMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_crb_mmio_read",
+ .sstate = TRACE_TPM_CRB_MMIO_READ_ENABLED,
+ .dstate = &_TRACE_TPM_CRB_MMIO_READ_DSTATE
+};
+TraceEvent _TRACE_TPM_CRB_MMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_crb_mmio_write",
+ .sstate = TRACE_TPM_CRB_MMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_TPM_CRB_MMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_passthrough_handle_request",
+ .sstate = TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_ENABLED,
+ .dstate = &_TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_DSTATE
+};
+TraceEvent _TRACE_TPM_PASSTHROUGH_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_passthrough_reset",
+ .sstate = TRACE_TPM_PASSTHROUGH_RESET_ENABLED,
+ .dstate = &_TRACE_TPM_PASSTHROUGH_RESET_DSTATE
+};
+TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_util_get_buffer_size_hdr_len",
+ .sstate = TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_ENABLED,
+ .dstate = &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_DSTATE
+};
+TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_util_get_buffer_size_len",
+ .sstate = TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_ENABLED,
+ .dstate = &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_DSTATE
+};
+TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_util_get_buffer_size_hdr_len2",
+ .sstate = TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_ENABLED,
+ .dstate = &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_DSTATE
+};
+TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_util_get_buffer_size_len2",
+ .sstate = TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_ENABLED,
+ .dstate = &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_DSTATE
+};
+TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_util_get_buffer_size",
+ .sstate = TRACE_TPM_UTIL_GET_BUFFER_SIZE_ENABLED,
+ .dstate = &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_SET_LOCALITY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_set_locality",
+ .sstate = TRACE_TPM_EMULATOR_SET_LOCALITY_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_SET_LOCALITY_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_HANDLE_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_handle_request",
+ .sstate = TRACE_TPM_EMULATOR_HANDLE_REQUEST_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_HANDLE_REQUEST_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_PROBE_CAPS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_probe_caps",
+ .sstate = TRACE_TPM_EMULATOR_PROBE_CAPS_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_PROBE_CAPS_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_set_buffer_size",
+ .sstate = TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_STARTUP_TPM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_startup_tpm",
+ .sstate = TRACE_TPM_EMULATOR_STARTUP_TPM_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_STARTUP_TPM_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_get_tpm_established_flag",
+ .sstate = TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_cancel_cmd_not_supt",
+ .sstate = TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_handle_device_opts_tpm12",
+ .sstate = TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_handle_device_opts_tpm2",
+ .sstate = TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_handle_device_opts_unspec",
+ .sstate = TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_handle_device_opts_startup_error",
+ .sstate = TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_DSTATE
+};
+TraceEvent _TRACE_TPM_EMULATOR_INST_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_emulator_inst_init",
+ .sstate = TRACE_TPM_EMULATOR_INST_INIT_ENABLED,
+ .dstate = &_TRACE_TPM_EMULATOR_INST_INIT_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_RAISE_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_raise_irq",
+ .sstate = TRACE_TPM_TIS_RAISE_IRQ_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_RAISE_IRQ_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_new_active_locality",
+ .sstate = TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_ABORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_abort",
+ .sstate = TRACE_TPM_TIS_ABORT_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_ABORT_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_DATA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_data_read",
+ .sstate = TRACE_TPM_TIS_DATA_READ_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_DATA_READ_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_read",
+ .sstate = TRACE_TPM_TIS_MMIO_READ_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_READ_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_locty4",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_release_locty",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_locty_req_use",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_next_locty",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_locty_seized",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_init_abort",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_lowering_irq",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_DSTATE
+};
+TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "tpm_tis_mmio_write_data2send",
+ .sstate = TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_ENABLED,
+ .dstate = &_TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_DSTATE
+};
+TraceEvent *hw_tpm_trace_events[] = {
+ &_TRACE_TPM_CRB_MMIO_READ_EVENT,
+ &_TRACE_TPM_CRB_MMIO_WRITE_EVENT,
+ &_TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_EVENT,
+ &_TRACE_TPM_PASSTHROUGH_RESET_EVENT,
+ &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_EVENT,
+ &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_EVENT,
+ &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_EVENT,
+ &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_EVENT,
+ &_TRACE_TPM_UTIL_GET_BUFFER_SIZE_EVENT,
+ &_TRACE_TPM_EMULATOR_SET_LOCALITY_EVENT,
+ &_TRACE_TPM_EMULATOR_HANDLE_REQUEST_EVENT,
+ &_TRACE_TPM_EMULATOR_PROBE_CAPS_EVENT,
+ &_TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_EVENT,
+ &_TRACE_TPM_EMULATOR_STARTUP_TPM_EVENT,
+ &_TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_EVENT,
+ &_TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_EVENT,
+ &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_EVENT,
+ &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_EVENT,
+ &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_EVENT,
+ &_TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_EVENT,
+ &_TRACE_TPM_EMULATOR_INST_INIT_EVENT,
+ &_TRACE_TPM_TIS_RAISE_IRQ_EVENT,
+ &_TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_EVENT,
+ &_TRACE_TPM_TIS_ABORT_EVENT,
+ &_TRACE_TPM_TIS_DATA_READ_EVENT,
+ &_TRACE_TPM_TIS_MMIO_READ_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_EVENT,
+ &_TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_EVENT,
+ NULL,
+};
+
+static void trace_hw_tpm_register_events(void)
+{
+ trace_event_register_group(hw_tpm_trace_events);
+}
+trace_init(trace_hw_tpm_register_events)
diff --git a/qemu2-auto-generated/hw/tpm/trace.h b/qemu2-auto-generated/hw/tpm/trace.h
new file mode 100644
index 0000000000..3c77a0e463
--- /dev/null
+++ b/qemu2-auto-generated/hw/tpm/trace.h
@@ -0,0 +1,604 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_TPM_GENERATED_TRACERS_H
+#define TRACE_HW_TPM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_TPM_CRB_MMIO_READ_EVENT;
+extern TraceEvent _TRACE_TPM_CRB_MMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_EVENT;
+extern TraceEvent _TRACE_TPM_PASSTHROUGH_RESET_EVENT;
+extern TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_EVENT;
+extern TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_EVENT;
+extern TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_EVENT;
+extern TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_EVENT;
+extern TraceEvent _TRACE_TPM_UTIL_GET_BUFFER_SIZE_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_SET_LOCALITY_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_HANDLE_REQUEST_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_PROBE_CAPS_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_STARTUP_TPM_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_EVENT;
+extern TraceEvent _TRACE_TPM_EMULATOR_INST_INIT_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_RAISE_IRQ_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_ABORT_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_DATA_READ_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_READ_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_EVENT;
+extern TraceEvent _TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_EVENT;
+extern uint16_t _TRACE_TPM_CRB_MMIO_READ_DSTATE;
+extern uint16_t _TRACE_TPM_CRB_MMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_DSTATE;
+extern uint16_t _TRACE_TPM_PASSTHROUGH_RESET_DSTATE;
+extern uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_DSTATE;
+extern uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_DSTATE;
+extern uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_DSTATE;
+extern uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_DSTATE;
+extern uint16_t _TRACE_TPM_UTIL_GET_BUFFER_SIZE_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_SET_LOCALITY_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_HANDLE_REQUEST_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_PROBE_CAPS_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_STARTUP_TPM_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_DSTATE;
+extern uint16_t _TRACE_TPM_EMULATOR_INST_INIT_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_RAISE_IRQ_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_ABORT_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_DATA_READ_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_READ_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_DSTATE;
+extern uint16_t _TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_DSTATE;
+#define TRACE_TPM_CRB_MMIO_READ_ENABLED 1
+#define TRACE_TPM_CRB_MMIO_WRITE_ENABLED 1
+#define TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_ENABLED 1
+#define TRACE_TPM_PASSTHROUGH_RESET_ENABLED 1
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_ENABLED 1
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_ENABLED 1
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_ENABLED 1
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_ENABLED 1
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_ENABLED 1
+#define TRACE_TPM_EMULATOR_SET_LOCALITY_ENABLED 1
+#define TRACE_TPM_EMULATOR_HANDLE_REQUEST_ENABLED 1
+#define TRACE_TPM_EMULATOR_PROBE_CAPS_ENABLED 1
+#define TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_ENABLED 1
+#define TRACE_TPM_EMULATOR_STARTUP_TPM_ENABLED 1
+#define TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_ENABLED 1
+#define TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_ENABLED 1
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_ENABLED 1
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_ENABLED 1
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_ENABLED 1
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_ENABLED 1
+#define TRACE_TPM_EMULATOR_INST_INIT_ENABLED 1
+#define TRACE_TPM_TIS_RAISE_IRQ_ENABLED 1
+#define TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_ENABLED 1
+#define TRACE_TPM_TIS_ABORT_ENABLED 1
+#define TRACE_TPM_TIS_DATA_READ_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_READ_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_ENABLED 1
+#define TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_ENABLED 1
+
+#define TRACE_TPM_CRB_MMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val)
+{
+}
+
+static inline void trace_tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_tpm_crb_mmio_read(addr, size, val);
+ }
+}
+
+#define TRACE_TPM_CRB_MMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_crb_mmio_write(uint64_t addr, unsigned size, uint32_t val)
+{
+}
+
+static inline void trace_tpm_crb_mmio_write(uint64_t addr, unsigned size, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_tpm_crb_mmio_write(addr, size, val);
+ }
+}
+
+#define TRACE_TPM_PASSTHROUGH_HANDLE_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_passthrough_handle_request(void * cmd)
+{
+}
+
+static inline void trace_tpm_passthrough_handle_request(void * cmd)
+{
+ if (true) {
+ _nocheck__trace_tpm_passthrough_handle_request(cmd);
+ }
+}
+
+#define TRACE_TPM_PASSTHROUGH_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_passthrough_reset(void)
+{
+}
+
+static inline void trace_tpm_passthrough_reset(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_passthrough_reset();
+ }
+}
+
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_util_get_buffer_size_hdr_len(uint32_t len, size_t expected)
+{
+}
+
+static inline void trace_tpm_util_get_buffer_size_hdr_len(uint32_t len, size_t expected)
+{
+ if (true) {
+ _nocheck__trace_tpm_util_get_buffer_size_hdr_len(len, expected);
+ }
+}
+
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_util_get_buffer_size_len(uint32_t len, size_t expected)
+{
+}
+
+static inline void trace_tpm_util_get_buffer_size_len(uint32_t len, size_t expected)
+{
+ if (true) {
+ _nocheck__trace_tpm_util_get_buffer_size_len(len, expected);
+ }
+}
+
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_HDR_LEN2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_util_get_buffer_size_hdr_len2(uint32_t len, size_t expected)
+{
+}
+
+static inline void trace_tpm_util_get_buffer_size_hdr_len2(uint32_t len, size_t expected)
+{
+ if (true) {
+ _nocheck__trace_tpm_util_get_buffer_size_hdr_len2(len, expected);
+ }
+}
+
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_LEN2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_util_get_buffer_size_len2(uint32_t len, size_t expected)
+{
+}
+
+static inline void trace_tpm_util_get_buffer_size_len2(uint32_t len, size_t expected)
+{
+ if (true) {
+ _nocheck__trace_tpm_util_get_buffer_size_len2(len, expected);
+ }
+}
+
+#define TRACE_TPM_UTIL_GET_BUFFER_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_util_get_buffer_size(size_t len)
+{
+}
+
+static inline void trace_tpm_util_get_buffer_size(size_t len)
+{
+ if (true) {
+ _nocheck__trace_tpm_util_get_buffer_size(len);
+ }
+}
+
+#define TRACE_TPM_EMULATOR_SET_LOCALITY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_set_locality(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_emulator_set_locality(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_set_locality(locty);
+ }
+}
+
+#define TRACE_TPM_EMULATOR_HANDLE_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_handle_request(void)
+{
+}
+
+static inline void trace_tpm_emulator_handle_request(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_handle_request();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_PROBE_CAPS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_probe_caps(uint64_t caps)
+{
+}
+
+static inline void trace_tpm_emulator_probe_caps(uint64_t caps)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_probe_caps(caps);
+ }
+}
+
+#define TRACE_TPM_EMULATOR_SET_BUFFER_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_set_buffer_size(uint32_t buffersize, uint32_t minsize, uint32_t maxsize)
+{
+}
+
+static inline void trace_tpm_emulator_set_buffer_size(uint32_t buffersize, uint32_t minsize, uint32_t maxsize)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_set_buffer_size(buffersize, minsize, maxsize);
+ }
+}
+
+#define TRACE_TPM_EMULATOR_STARTUP_TPM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_startup_tpm(void)
+{
+}
+
+static inline void trace_tpm_emulator_startup_tpm(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_startup_tpm();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_GET_TPM_ESTABLISHED_FLAG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_get_tpm_established_flag(uint8_t flag)
+{
+}
+
+static inline void trace_tpm_emulator_get_tpm_established_flag(uint8_t flag)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_get_tpm_established_flag(flag);
+ }
+}
+
+#define TRACE_TPM_EMULATOR_CANCEL_CMD_NOT_SUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_cancel_cmd_not_supt(void)
+{
+}
+
+static inline void trace_tpm_emulator_cancel_cmd_not_supt(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_cancel_cmd_not_supt();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM12_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_handle_device_opts_tpm12(void)
+{
+}
+
+static inline void trace_tpm_emulator_handle_device_opts_tpm12(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_handle_device_opts_tpm12();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_TPM2_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_handle_device_opts_tpm2(void)
+{
+}
+
+static inline void trace_tpm_emulator_handle_device_opts_tpm2(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_handle_device_opts_tpm2();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_UNSPEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_handle_device_opts_unspec(void)
+{
+}
+
+static inline void trace_tpm_emulator_handle_device_opts_unspec(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_handle_device_opts_unspec();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_HANDLE_DEVICE_OPTS_STARTUP_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_handle_device_opts_startup_error(void)
+{
+}
+
+static inline void trace_tpm_emulator_handle_device_opts_startup_error(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_handle_device_opts_startup_error();
+ }
+}
+
+#define TRACE_TPM_EMULATOR_INST_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_emulator_inst_init(void)
+{
+}
+
+static inline void trace_tpm_emulator_inst_init(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_emulator_inst_init();
+ }
+}
+
+#define TRACE_TPM_TIS_RAISE_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_raise_irq(uint32_t irqmask)
+{
+}
+
+static inline void trace_tpm_tis_raise_irq(uint32_t irqmask)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_raise_irq(irqmask);
+ }
+}
+
+#define TRACE_TPM_TIS_NEW_ACTIVE_LOCALITY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_new_active_locality(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_tis_new_active_locality(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_new_active_locality(locty);
+ }
+}
+
+#define TRACE_TPM_TIS_ABORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_abort(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_tis_abort(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_abort(locty);
+ }
+}
+
+#define TRACE_TPM_TIS_DATA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_data_read(uint32_t value, uint32_t off)
+{
+}
+
+static inline void trace_tpm_tis_data_read(uint32_t value, uint32_t off)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_data_read(value, off);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_read(unsigned size, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_tpm_tis_mmio_read(unsigned size, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_read(size, addr, val);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write(unsigned size, uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write(unsigned size, uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write(size, addr, val);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY4_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_locty4(void)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_locty4(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_locty4();
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_RELEASE_LOCTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_release_locty(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_release_locty(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_release_locty(locty);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY_REQ_USE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_locty_req_use(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_locty_req_use(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_locty_req_use(locty);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_NEXT_LOCTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_next_locty(uint8_t locty)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_next_locty(uint8_t locty)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_next_locty(locty);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_LOCTY_SEIZED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_locty_seized(uint8_t locty, uint8_t active)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_locty_seized(uint8_t locty, uint8_t active)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_locty_seized(locty, active);
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_INIT_ABORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_init_abort(void)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_init_abort(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_init_abort();
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_LOWERING_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_lowering_irq(void)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_lowering_irq(void)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_lowering_irq();
+ }
+}
+
+#define TRACE_TPM_TIS_MMIO_WRITE_DATA2SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_tpm_tis_mmio_write_data2send(uint32_t value, unsigned size)
+{
+}
+
+static inline void trace_tpm_tis_mmio_write_data2send(uint32_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_tpm_tis_mmio_write_data2send(value, size);
+ }
+}
+#endif /* TRACE_HW_TPM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/usb/trace.c b/qemu2-auto-generated/hw/usb/trace.c
new file mode 100644
index 0000000000..a6678eb13d
--- /dev/null
+++ b/qemu2-auto-generated/hw/usb/trace.c
@@ -0,0 +1,2219 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_USB_PACKET_STATE_CHANGE_DSTATE;
+uint16_t _TRACE_USB_PACKET_STATE_FAULT_DSTATE;
+uint16_t _TRACE_USB_PORT_CLAIM_DSTATE;
+uint16_t _TRACE_USB_PORT_ATTACH_DSTATE;
+uint16_t _TRACE_USB_PORT_DETACH_DSTATE;
+uint16_t _TRACE_USB_PORT_RELEASE_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_READ_FAILED_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_HEAD_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_SO_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_NAK_DSTATE;
+uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_DSTATE;
+uint16_t _TRACE_USB_OHCI_PORT_ATTACH_DSTATE;
+uint16_t _TRACE_USB_OHCI_PORT_DETACH_DSTATE;
+uint16_t _TRACE_USB_OHCI_PORT_WAKEUP_DSTATE;
+uint16_t _TRACE_USB_OHCI_PORT_SUSPEND_DSTATE;
+uint16_t _TRACE_USB_OHCI_PORT_RESET_DSTATE;
+uint16_t _TRACE_USB_OHCI_REMOTE_WAKEUP_DSTATE;
+uint16_t _TRACE_USB_OHCI_RESET_DSTATE;
+uint16_t _TRACE_USB_OHCI_START_DSTATE;
+uint16_t _TRACE_USB_OHCI_RESUME_DSTATE;
+uint16_t _TRACE_USB_OHCI_STOP_DSTATE;
+uint16_t _TRACE_USB_OHCI_EXIT_DSTATE;
+uint16_t _TRACE_USB_OHCI_SET_CTL_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_UNDERRUN_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_DEV_ERROR_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_NAK_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_STALL_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_BABBLE_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_READ_ERROR_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_BAD_DIRECTION_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_SKIP_ASYNC_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_PKT_HDR_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_PKT_SHORT_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_PKT_FULL_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_TOO_MANY_PENDING_DSTATE;
+uint16_t _TRACE_USB_OHCI_TD_PACKET_STATUS_DSTATE;
+uint16_t _TRACE_USB_OHCI_ED_READ_ERROR_DSTATE;
+uint16_t _TRACE_USB_OHCI_ED_PKT_DSTATE;
+uint16_t _TRACE_USB_OHCI_ED_PKT_FLAGS_DSTATE;
+uint16_t _TRACE_USB_OHCI_HCCA_READ_ERROR_DSTATE;
+uint16_t _TRACE_USB_OHCI_MEM_READ_UNALIGNED_DSTATE;
+uint16_t _TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_DSTATE;
+uint16_t _TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_DSTATE;
+uint16_t _TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_DSTATE;
+uint16_t _TRACE_USB_OHCI_PROCESS_LISTS_DSTATE;
+uint16_t _TRACE_USB_OHCI_SET_FRAME_INTERVAL_DSTATE;
+uint16_t _TRACE_USB_OHCI_HUB_POWER_UP_DSTATE;
+uint16_t _TRACE_USB_OHCI_HUB_POWER_DOWN_DSTATE;
+uint16_t _TRACE_USB_OHCI_INIT_TIME_DSTATE;
+uint16_t _TRACE_USB_OHCI_DIE_DSTATE;
+uint16_t _TRACE_USB_OHCI_ASYNC_COMPLETE_DSTATE;
+uint16_t _TRACE_USB_EHCI_RESET_DSTATE;
+uint16_t _TRACE_USB_EHCI_UNREALIZE_DSTATE;
+uint16_t _TRACE_USB_EHCI_OPREG_READ_DSTATE;
+uint16_t _TRACE_USB_EHCI_OPREG_WRITE_DSTATE;
+uint16_t _TRACE_USB_EHCI_OPREG_CHANGE_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORTSC_READ_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORTSC_WRITE_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORTSC_CHANGE_DSTATE;
+uint16_t _TRACE_USB_EHCI_USBSTS_DSTATE;
+uint16_t _TRACE_USB_EHCI_STATE_DSTATE;
+uint16_t _TRACE_USB_EHCI_QH_PTRS_DSTATE;
+uint16_t _TRACE_USB_EHCI_QH_FIELDS_DSTATE;
+uint16_t _TRACE_USB_EHCI_QH_BITS_DSTATE;
+uint16_t _TRACE_USB_EHCI_QTD_PTRS_DSTATE;
+uint16_t _TRACE_USB_EHCI_QTD_FIELDS_DSTATE;
+uint16_t _TRACE_USB_EHCI_QTD_BITS_DSTATE;
+uint16_t _TRACE_USB_EHCI_ITD_DSTATE;
+uint16_t _TRACE_USB_EHCI_SITD_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_ATTACH_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_DETACH_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_RESET_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_SUSPEND_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_WAKEUP_DSTATE;
+uint16_t _TRACE_USB_EHCI_PORT_RESUME_DSTATE;
+uint16_t _TRACE_USB_EHCI_QUEUE_ACTION_DSTATE;
+uint16_t _TRACE_USB_EHCI_PACKET_ACTION_DSTATE;
+uint16_t _TRACE_USB_EHCI_IRQ_DSTATE;
+uint16_t _TRACE_USB_EHCI_GUEST_BUG_DSTATE;
+uint16_t _TRACE_USB_EHCI_DOORBELL_RING_DSTATE;
+uint16_t _TRACE_USB_EHCI_DOORBELL_ACK_DSTATE;
+uint16_t _TRACE_USB_EHCI_DMA_ERROR_DSTATE;
+uint16_t _TRACE_USB_UHCI_RESET_DSTATE;
+uint16_t _TRACE_USB_UHCI_EXIT_DSTATE;
+uint16_t _TRACE_USB_UHCI_SCHEDULE_START_DSTATE;
+uint16_t _TRACE_USB_UHCI_SCHEDULE_STOP_DSTATE;
+uint16_t _TRACE_USB_UHCI_FRAME_START_DSTATE;
+uint16_t _TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_DSTATE;
+uint16_t _TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_DSTATE;
+uint16_t _TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_DSTATE;
+uint16_t _TRACE_USB_UHCI_MMIO_READW_DSTATE;
+uint16_t _TRACE_USB_UHCI_MMIO_WRITEW_DSTATE;
+uint16_t _TRACE_USB_UHCI_QUEUE_ADD_DSTATE;
+uint16_t _TRACE_USB_UHCI_QUEUE_DEL_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_ADD_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_LINK_ASYNC_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_CANCEL_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_STALL_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_DSTATE;
+uint16_t _TRACE_USB_UHCI_PACKET_DEL_DSTATE;
+uint16_t _TRACE_USB_UHCI_QH_LOAD_DSTATE;
+uint16_t _TRACE_USB_UHCI_TD_LOAD_DSTATE;
+uint16_t _TRACE_USB_UHCI_TD_QUEUE_DSTATE;
+uint16_t _TRACE_USB_UHCI_TD_NEXTQH_DSTATE;
+uint16_t _TRACE_USB_UHCI_TD_ASYNC_DSTATE;
+uint16_t _TRACE_USB_UHCI_TD_COMPLETE_DSTATE;
+uint16_t _TRACE_USB_XHCI_RESET_DSTATE;
+uint16_t _TRACE_USB_XHCI_EXIT_DSTATE;
+uint16_t _TRACE_USB_XHCI_RUN_DSTATE;
+uint16_t _TRACE_USB_XHCI_STOP_DSTATE;
+uint16_t _TRACE_USB_XHCI_CAP_READ_DSTATE;
+uint16_t _TRACE_USB_XHCI_OPER_READ_DSTATE;
+uint16_t _TRACE_USB_XHCI_PORT_READ_DSTATE;
+uint16_t _TRACE_USB_XHCI_RUNTIME_READ_DSTATE;
+uint16_t _TRACE_USB_XHCI_DOORBELL_READ_DSTATE;
+uint16_t _TRACE_USB_XHCI_OPER_WRITE_DSTATE;
+uint16_t _TRACE_USB_XHCI_PORT_WRITE_DSTATE;
+uint16_t _TRACE_USB_XHCI_RUNTIME_WRITE_DSTATE;
+uint16_t _TRACE_USB_XHCI_DOORBELL_WRITE_DSTATE;
+uint16_t _TRACE_USB_XHCI_IRQ_INTX_DSTATE;
+uint16_t _TRACE_USB_XHCI_IRQ_MSI_DSTATE;
+uint16_t _TRACE_USB_XHCI_IRQ_MSIX_DSTATE;
+uint16_t _TRACE_USB_XHCI_IRQ_MSIX_USE_DSTATE;
+uint16_t _TRACE_USB_XHCI_IRQ_MSIX_UNUSE_DSTATE;
+uint16_t _TRACE_USB_XHCI_QUEUE_EVENT_DSTATE;
+uint16_t _TRACE_USB_XHCI_FETCH_TRB_DSTATE;
+uint16_t _TRACE_USB_XHCI_PORT_RESET_DSTATE;
+uint16_t _TRACE_USB_XHCI_PORT_LINK_DSTATE;
+uint16_t _TRACE_USB_XHCI_PORT_NOTIFY_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_ENABLE_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_DISABLE_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_ADDRESS_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_CONFIGURE_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_EVALUATE_DSTATE;
+uint16_t _TRACE_USB_XHCI_SLOT_RESET_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_ENABLE_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_DISABLE_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_SET_DEQUEUE_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_KICK_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_STOP_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_RESET_DSTATE;
+uint16_t _TRACE_USB_XHCI_EP_STATE_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_START_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_ASYNC_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_NAK_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_RETRY_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_SUCCESS_DSTATE;
+uint16_t _TRACE_USB_XHCI_XFER_ERROR_DSTATE;
+uint16_t _TRACE_USB_XHCI_UNIMPLEMENTED_DSTATE;
+uint16_t _TRACE_USB_XHCI_ENFORCED_LIMIT_DSTATE;
+uint16_t _TRACE_USB_DESC_DEVICE_DSTATE;
+uint16_t _TRACE_USB_DESC_DEVICE_QUALIFIER_DSTATE;
+uint16_t _TRACE_USB_DESC_CONFIG_DSTATE;
+uint16_t _TRACE_USB_DESC_OTHER_SPEED_CONFIG_DSTATE;
+uint16_t _TRACE_USB_DESC_STRING_DSTATE;
+uint16_t _TRACE_USB_DESC_BOS_DSTATE;
+uint16_t _TRACE_USB_DESC_MSOS_DSTATE;
+uint16_t _TRACE_USB_SET_ADDR_DSTATE;
+uint16_t _TRACE_USB_SET_CONFIG_DSTATE;
+uint16_t _TRACE_USB_SET_INTERFACE_DSTATE;
+uint16_t _TRACE_USB_CLEAR_DEVICE_FEATURE_DSTATE;
+uint16_t _TRACE_USB_SET_DEVICE_FEATURE_DSTATE;
+uint16_t _TRACE_USB_HUB_RESET_DSTATE;
+uint16_t _TRACE_USB_HUB_CONTROL_DSTATE;
+uint16_t _TRACE_USB_HUB_GET_PORT_STATUS_DSTATE;
+uint16_t _TRACE_USB_HUB_SET_PORT_FEATURE_DSTATE;
+uint16_t _TRACE_USB_HUB_CLEAR_PORT_FEATURE_DSTATE;
+uint16_t _TRACE_USB_HUB_ATTACH_DSTATE;
+uint16_t _TRACE_USB_HUB_DETACH_DSTATE;
+uint16_t _TRACE_USB_HUB_STATUS_REPORT_DSTATE;
+uint16_t _TRACE_USB_UAS_RESET_DSTATE;
+uint16_t _TRACE_USB_UAS_COMMAND_DSTATE;
+uint16_t _TRACE_USB_UAS_RESPONSE_DSTATE;
+uint16_t _TRACE_USB_UAS_SENSE_DSTATE;
+uint16_t _TRACE_USB_UAS_READ_READY_DSTATE;
+uint16_t _TRACE_USB_UAS_WRITE_READY_DSTATE;
+uint16_t _TRACE_USB_UAS_XFER_DATA_DSTATE;
+uint16_t _TRACE_USB_UAS_SCSI_DATA_DSTATE;
+uint16_t _TRACE_USB_UAS_SCSI_COMPLETE_DSTATE;
+uint16_t _TRACE_USB_UAS_TMF_ABORT_TASK_DSTATE;
+uint16_t _TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_DSTATE;
+uint16_t _TRACE_USB_UAS_TMF_UNSUPPORTED_DSTATE;
+uint16_t _TRACE_USB_MTP_RESET_DSTATE;
+uint16_t _TRACE_USB_MTP_COMMAND_DSTATE;
+uint16_t _TRACE_USB_MTP_SUCCESS_DSTATE;
+uint16_t _TRACE_USB_MTP_ERROR_DSTATE;
+uint16_t _TRACE_USB_MTP_DATA_IN_DSTATE;
+uint16_t _TRACE_USB_MTP_XFER_DSTATE;
+uint16_t _TRACE_USB_MTP_NAK_DSTATE;
+uint16_t _TRACE_USB_MTP_STALL_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_DEVICE_INFO_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_OPEN_SESSION_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_CLOSE_SESSION_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_STORAGE_IDS_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_STORAGE_INFO_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_NUM_OBJECTS_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_INFO_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_DSTATE;
+uint16_t _TRACE_USB_MTP_OP_UNKNOWN_DSTATE;
+uint16_t _TRACE_USB_MTP_OBJECT_ALLOC_DSTATE;
+uint16_t _TRACE_USB_MTP_OBJECT_FREE_DSTATE;
+uint16_t _TRACE_USB_MTP_ADD_CHILD_DSTATE;
+uint16_t _TRACE_USB_MTP_INOTIFY_EVENT_DSTATE;
+uint16_t _TRACE_USB_HOST_OPEN_STARTED_DSTATE;
+uint16_t _TRACE_USB_HOST_OPEN_SUCCESS_DSTATE;
+uint16_t _TRACE_USB_HOST_OPEN_FAILURE_DSTATE;
+uint16_t _TRACE_USB_HOST_CLOSE_DSTATE;
+uint16_t _TRACE_USB_HOST_ATTACH_KERNEL_DSTATE;
+uint16_t _TRACE_USB_HOST_DETACH_KERNEL_DSTATE;
+uint16_t _TRACE_USB_HOST_SET_ADDRESS_DSTATE;
+uint16_t _TRACE_USB_HOST_SET_CONFIG_DSTATE;
+uint16_t _TRACE_USB_HOST_SET_INTERFACE_DSTATE;
+uint16_t _TRACE_USB_HOST_CLAIM_INTERFACE_DSTATE;
+uint16_t _TRACE_USB_HOST_RELEASE_INTERFACE_DSTATE;
+uint16_t _TRACE_USB_HOST_REQ_CONTROL_DSTATE;
+uint16_t _TRACE_USB_HOST_REQ_DATA_DSTATE;
+uint16_t _TRACE_USB_HOST_REQ_COMPLETE_DSTATE;
+uint16_t _TRACE_USB_HOST_REQ_EMULATED_DSTATE;
+uint16_t _TRACE_USB_HOST_REQ_CANCELED_DSTATE;
+uint16_t _TRACE_USB_HOST_ISO_START_DSTATE;
+uint16_t _TRACE_USB_HOST_ISO_STOP_DSTATE;
+uint16_t _TRACE_USB_HOST_ISO_OUT_OF_BUFS_DSTATE;
+uint16_t _TRACE_USB_HOST_RESET_DSTATE;
+uint16_t _TRACE_USB_HOST_AUTO_SCAN_ENABLED_DSTATE;
+uint16_t _TRACE_USB_HOST_AUTO_SCAN_DISABLED_DSTATE;
+uint16_t _TRACE_USB_HOST_PARSE_CONFIG_DSTATE;
+uint16_t _TRACE_USB_HOST_PARSE_INTERFACE_DSTATE;
+uint16_t _TRACE_USB_HOST_PARSE_ENDPOINT_DSTATE;
+uint16_t _TRACE_USB_HOST_PARSE_ERROR_DSTATE;
+TraceEvent _TRACE_USB_PACKET_STATE_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_packet_state_change",
+ .sstate = TRACE_USB_PACKET_STATE_CHANGE_ENABLED,
+ .dstate = &_TRACE_USB_PACKET_STATE_CHANGE_DSTATE
+};
+TraceEvent _TRACE_USB_PACKET_STATE_FAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_packet_state_fault",
+ .sstate = TRACE_USB_PACKET_STATE_FAULT_ENABLED,
+ .dstate = &_TRACE_USB_PACKET_STATE_FAULT_DSTATE
+};
+TraceEvent _TRACE_USB_PORT_CLAIM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_port_claim",
+ .sstate = TRACE_USB_PORT_CLAIM_ENABLED,
+ .dstate = &_TRACE_USB_PORT_CLAIM_DSTATE
+};
+TraceEvent _TRACE_USB_PORT_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_port_attach",
+ .sstate = TRACE_USB_PORT_ATTACH_ENABLED,
+ .dstate = &_TRACE_USB_PORT_ATTACH_DSTATE
+};
+TraceEvent _TRACE_USB_PORT_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_port_detach",
+ .sstate = TRACE_USB_PORT_DETACH_ENABLED,
+ .dstate = &_TRACE_USB_PORT_DETACH_DSTATE
+};
+TraceEvent _TRACE_USB_PORT_RELEASE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_port_release",
+ .sstate = TRACE_USB_PORT_RELEASE_ENABLED,
+ .dstate = &_TRACE_USB_PORT_RELEASE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_READ_FAILED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_read_failed",
+ .sstate = TRACE_USB_OHCI_ISO_TD_READ_FAILED_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_READ_FAILED_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_HEAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_head",
+ .sstate = TRACE_USB_OHCI_ISO_TD_HEAD_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_HEAD_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_head_offset",
+ .sstate = TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_relative_frame_number_neg",
+ .sstate = TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_relative_frame_number_big",
+ .sstate = TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_bad_direction",
+ .sstate = TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_bad_bp_be",
+ .sstate = TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_bad_cc_not_accessed",
+ .sstate = TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_bad_cc_overrun",
+ .sstate = TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_SO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_so",
+ .sstate = TRACE_USB_OHCI_ISO_TD_SO_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_SO_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_data_overrun",
+ .sstate = TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_data_underrun",
+ .sstate = TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_NAK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_nak",
+ .sstate = TRACE_USB_OHCI_ISO_TD_NAK_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_NAK_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_iso_td_bad_response",
+ .sstate = TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PORT_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_port_attach",
+ .sstate = TRACE_USB_OHCI_PORT_ATTACH_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PORT_ATTACH_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PORT_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_port_detach",
+ .sstate = TRACE_USB_OHCI_PORT_DETACH_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PORT_DETACH_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PORT_WAKEUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_port_wakeup",
+ .sstate = TRACE_USB_OHCI_PORT_WAKEUP_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PORT_WAKEUP_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PORT_SUSPEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_port_suspend",
+ .sstate = TRACE_USB_OHCI_PORT_SUSPEND_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PORT_SUSPEND_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PORT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_port_reset",
+ .sstate = TRACE_USB_OHCI_PORT_RESET_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PORT_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_REMOTE_WAKEUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_remote_wakeup",
+ .sstate = TRACE_USB_OHCI_REMOTE_WAKEUP_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_REMOTE_WAKEUP_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_reset",
+ .sstate = TRACE_USB_OHCI_RESET_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_start",
+ .sstate = TRACE_USB_OHCI_START_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_START_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_RESUME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_resume",
+ .sstate = TRACE_USB_OHCI_RESUME_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_RESUME_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_stop",
+ .sstate = TRACE_USB_OHCI_STOP_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_STOP_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_exit",
+ .sstate = TRACE_USB_OHCI_EXIT_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_EXIT_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_SET_CTL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_set_ctl",
+ .sstate = TRACE_USB_OHCI_SET_CTL_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_SET_CTL_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_UNDERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_underrun",
+ .sstate = TRACE_USB_OHCI_TD_UNDERRUN_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_UNDERRUN_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_DEV_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_dev_error",
+ .sstate = TRACE_USB_OHCI_TD_DEV_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_DEV_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_NAK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_nak",
+ .sstate = TRACE_USB_OHCI_TD_NAK_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_NAK_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_STALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_stall",
+ .sstate = TRACE_USB_OHCI_TD_STALL_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_STALL_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_BABBLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_babble",
+ .sstate = TRACE_USB_OHCI_TD_BABBLE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_BABBLE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_bad_device_response",
+ .sstate = TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_READ_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_read_error",
+ .sstate = TRACE_USB_OHCI_TD_READ_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_READ_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_BAD_DIRECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_bad_direction",
+ .sstate = TRACE_USB_OHCI_TD_BAD_DIRECTION_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_BAD_DIRECTION_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_SKIP_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_skip_async",
+ .sstate = TRACE_USB_OHCI_TD_SKIP_ASYNC_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_SKIP_ASYNC_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_PKT_HDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_pkt_hdr",
+ .sstate = TRACE_USB_OHCI_TD_PKT_HDR_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_PKT_HDR_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_PKT_SHORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_pkt_short",
+ .sstate = TRACE_USB_OHCI_TD_PKT_SHORT_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_PKT_SHORT_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_PKT_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_pkt_full",
+ .sstate = TRACE_USB_OHCI_TD_PKT_FULL_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_PKT_FULL_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_TOO_MANY_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_too_many_pending",
+ .sstate = TRACE_USB_OHCI_TD_TOO_MANY_PENDING_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_TOO_MANY_PENDING_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_TD_PACKET_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_td_packet_status",
+ .sstate = TRACE_USB_OHCI_TD_PACKET_STATUS_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_TD_PACKET_STATUS_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ED_READ_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_ed_read_error",
+ .sstate = TRACE_USB_OHCI_ED_READ_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ED_READ_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ED_PKT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_ed_pkt",
+ .sstate = TRACE_USB_OHCI_ED_PKT_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ED_PKT_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ED_PKT_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_ed_pkt_flags",
+ .sstate = TRACE_USB_OHCI_ED_PKT_FLAGS_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ED_PKT_FLAGS_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_HCCA_READ_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_hcca_read_error",
+ .sstate = TRACE_USB_OHCI_HCCA_READ_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_HCCA_READ_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_MEM_READ_UNALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_mem_read_unaligned",
+ .sstate = TRACE_USB_OHCI_MEM_READ_UNALIGNED_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_MEM_READ_UNALIGNED_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_mem_read_bad_offset",
+ .sstate = TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_mem_write_unaligned",
+ .sstate = TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_mem_write_bad_offset",
+ .sstate = TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_PROCESS_LISTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_process_lists",
+ .sstate = TRACE_USB_OHCI_PROCESS_LISTS_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_PROCESS_LISTS_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_SET_FRAME_INTERVAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_set_frame_interval",
+ .sstate = TRACE_USB_OHCI_SET_FRAME_INTERVAL_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_SET_FRAME_INTERVAL_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_HUB_POWER_UP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_hub_power_up",
+ .sstate = TRACE_USB_OHCI_HUB_POWER_UP_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_HUB_POWER_UP_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_HUB_POWER_DOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_hub_power_down",
+ .sstate = TRACE_USB_OHCI_HUB_POWER_DOWN_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_HUB_POWER_DOWN_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_INIT_TIME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_init_time",
+ .sstate = TRACE_USB_OHCI_INIT_TIME_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_INIT_TIME_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_DIE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_die",
+ .sstate = TRACE_USB_OHCI_DIE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_DIE_DSTATE
+};
+TraceEvent _TRACE_USB_OHCI_ASYNC_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ohci_async_complete",
+ .sstate = TRACE_USB_OHCI_ASYNC_COMPLETE_ENABLED,
+ .dstate = &_TRACE_USB_OHCI_ASYNC_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_reset",
+ .sstate = TRACE_USB_EHCI_RESET_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_UNREALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_unrealize",
+ .sstate = TRACE_USB_EHCI_UNREALIZE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_UNREALIZE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_OPREG_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_opreg_read",
+ .sstate = TRACE_USB_EHCI_OPREG_READ_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_OPREG_READ_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_OPREG_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_opreg_write",
+ .sstate = TRACE_USB_EHCI_OPREG_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_OPREG_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_OPREG_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_opreg_change",
+ .sstate = TRACE_USB_EHCI_OPREG_CHANGE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_OPREG_CHANGE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORTSC_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_portsc_read",
+ .sstate = TRACE_USB_EHCI_PORTSC_READ_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORTSC_READ_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORTSC_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_portsc_write",
+ .sstate = TRACE_USB_EHCI_PORTSC_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORTSC_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORTSC_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_portsc_change",
+ .sstate = TRACE_USB_EHCI_PORTSC_CHANGE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORTSC_CHANGE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_USBSTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_usbsts",
+ .sstate = TRACE_USB_EHCI_USBSTS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_USBSTS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_state",
+ .sstate = TRACE_USB_EHCI_STATE_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_STATE_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QH_PTRS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qh_ptrs",
+ .sstate = TRACE_USB_EHCI_QH_PTRS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QH_PTRS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QH_FIELDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qh_fields",
+ .sstate = TRACE_USB_EHCI_QH_FIELDS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QH_FIELDS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QH_BITS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qh_bits",
+ .sstate = TRACE_USB_EHCI_QH_BITS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QH_BITS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QTD_PTRS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qtd_ptrs",
+ .sstate = TRACE_USB_EHCI_QTD_PTRS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QTD_PTRS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QTD_FIELDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qtd_fields",
+ .sstate = TRACE_USB_EHCI_QTD_FIELDS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QTD_FIELDS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QTD_BITS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_qtd_bits",
+ .sstate = TRACE_USB_EHCI_QTD_BITS_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QTD_BITS_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_ITD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_itd",
+ .sstate = TRACE_USB_EHCI_ITD_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_ITD_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_SITD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_sitd",
+ .sstate = TRACE_USB_EHCI_SITD_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_SITD_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_attach",
+ .sstate = TRACE_USB_EHCI_PORT_ATTACH_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_ATTACH_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_detach",
+ .sstate = TRACE_USB_EHCI_PORT_DETACH_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_DETACH_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_reset",
+ .sstate = TRACE_USB_EHCI_PORT_RESET_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_SUSPEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_suspend",
+ .sstate = TRACE_USB_EHCI_PORT_SUSPEND_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_SUSPEND_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_WAKEUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_wakeup",
+ .sstate = TRACE_USB_EHCI_PORT_WAKEUP_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_WAKEUP_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PORT_RESUME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_port_resume",
+ .sstate = TRACE_USB_EHCI_PORT_RESUME_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PORT_RESUME_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_QUEUE_ACTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_queue_action",
+ .sstate = TRACE_USB_EHCI_QUEUE_ACTION_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_QUEUE_ACTION_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_PACKET_ACTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_packet_action",
+ .sstate = TRACE_USB_EHCI_PACKET_ACTION_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_PACKET_ACTION_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_IRQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_irq",
+ .sstate = TRACE_USB_EHCI_IRQ_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_IRQ_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_GUEST_BUG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_guest_bug",
+ .sstate = TRACE_USB_EHCI_GUEST_BUG_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_GUEST_BUG_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_DOORBELL_RING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_doorbell_ring",
+ .sstate = TRACE_USB_EHCI_DOORBELL_RING_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_DOORBELL_RING_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_DOORBELL_ACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_doorbell_ack",
+ .sstate = TRACE_USB_EHCI_DOORBELL_ACK_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_DOORBELL_ACK_DSTATE
+};
+TraceEvent _TRACE_USB_EHCI_DMA_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_ehci_dma_error",
+ .sstate = TRACE_USB_EHCI_DMA_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_EHCI_DMA_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_reset",
+ .sstate = TRACE_USB_UHCI_RESET_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_exit",
+ .sstate = TRACE_USB_UHCI_EXIT_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_EXIT_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_SCHEDULE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_schedule_start",
+ .sstate = TRACE_USB_UHCI_SCHEDULE_START_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_SCHEDULE_START_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_SCHEDULE_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_schedule_stop",
+ .sstate = TRACE_USB_UHCI_SCHEDULE_STOP_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_SCHEDULE_STOP_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_FRAME_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_frame_start",
+ .sstate = TRACE_USB_UHCI_FRAME_START_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_FRAME_START_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_frame_stop_bandwidth",
+ .sstate = TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_frame_loop_stop_idle",
+ .sstate = TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_frame_loop_continue",
+ .sstate = TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_MMIO_READW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_mmio_readw",
+ .sstate = TRACE_USB_UHCI_MMIO_READW_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_MMIO_READW_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_MMIO_WRITEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_mmio_writew",
+ .sstate = TRACE_USB_UHCI_MMIO_WRITEW_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_MMIO_WRITEW_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_QUEUE_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_queue_add",
+ .sstate = TRACE_USB_UHCI_QUEUE_ADD_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_QUEUE_ADD_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_QUEUE_DEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_queue_del",
+ .sstate = TRACE_USB_UHCI_QUEUE_DEL_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_QUEUE_DEL_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_add",
+ .sstate = TRACE_USB_UHCI_PACKET_ADD_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_ADD_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_LINK_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_link_async",
+ .sstate = TRACE_USB_UHCI_PACKET_LINK_ASYNC_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_LINK_ASYNC_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_unlink_async",
+ .sstate = TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_cancel",
+ .sstate = TRACE_USB_UHCI_PACKET_CANCEL_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_CANCEL_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_complete_success",
+ .sstate = TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_complete_shortxfer",
+ .sstate = TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_STALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_complete_stall",
+ .sstate = TRACE_USB_UHCI_PACKET_COMPLETE_STALL_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_COMPLETE_STALL_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_complete_babble",
+ .sstate = TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_complete_error",
+ .sstate = TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_PACKET_DEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_packet_del",
+ .sstate = TRACE_USB_UHCI_PACKET_DEL_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_PACKET_DEL_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_QH_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_qh_load",
+ .sstate = TRACE_USB_UHCI_QH_LOAD_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_QH_LOAD_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_TD_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_td_load",
+ .sstate = TRACE_USB_UHCI_TD_LOAD_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_TD_LOAD_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_TD_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_td_queue",
+ .sstate = TRACE_USB_UHCI_TD_QUEUE_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_TD_QUEUE_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_TD_NEXTQH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_td_nextqh",
+ .sstate = TRACE_USB_UHCI_TD_NEXTQH_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_TD_NEXTQH_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_TD_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_td_async",
+ .sstate = TRACE_USB_UHCI_TD_ASYNC_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_TD_ASYNC_DSTATE
+};
+TraceEvent _TRACE_USB_UHCI_TD_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uhci_td_complete",
+ .sstate = TRACE_USB_UHCI_TD_COMPLETE_ENABLED,
+ .dstate = &_TRACE_USB_UHCI_TD_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_reset",
+ .sstate = TRACE_USB_XHCI_RESET_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_exit",
+ .sstate = TRACE_USB_XHCI_EXIT_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EXIT_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_run",
+ .sstate = TRACE_USB_XHCI_RUN_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_RUN_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_stop",
+ .sstate = TRACE_USB_XHCI_STOP_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_STOP_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_CAP_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_cap_read",
+ .sstate = TRACE_USB_XHCI_CAP_READ_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_CAP_READ_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_OPER_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_oper_read",
+ .sstate = TRACE_USB_XHCI_OPER_READ_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_OPER_READ_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_PORT_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_port_read",
+ .sstate = TRACE_USB_XHCI_PORT_READ_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_PORT_READ_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_RUNTIME_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_runtime_read",
+ .sstate = TRACE_USB_XHCI_RUNTIME_READ_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_RUNTIME_READ_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_DOORBELL_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_doorbell_read",
+ .sstate = TRACE_USB_XHCI_DOORBELL_READ_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_DOORBELL_READ_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_OPER_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_oper_write",
+ .sstate = TRACE_USB_XHCI_OPER_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_OPER_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_PORT_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_port_write",
+ .sstate = TRACE_USB_XHCI_PORT_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_PORT_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_RUNTIME_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_runtime_write",
+ .sstate = TRACE_USB_XHCI_RUNTIME_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_RUNTIME_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_DOORBELL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_doorbell_write",
+ .sstate = TRACE_USB_XHCI_DOORBELL_WRITE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_DOORBELL_WRITE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_IRQ_INTX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_irq_intx",
+ .sstate = TRACE_USB_XHCI_IRQ_INTX_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_IRQ_INTX_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_IRQ_MSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_irq_msi",
+ .sstate = TRACE_USB_XHCI_IRQ_MSI_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_IRQ_MSI_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_irq_msix",
+ .sstate = TRACE_USB_XHCI_IRQ_MSIX_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_IRQ_MSIX_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_USE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_irq_msix_use",
+ .sstate = TRACE_USB_XHCI_IRQ_MSIX_USE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_IRQ_MSIX_USE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_UNUSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_irq_msix_unuse",
+ .sstate = TRACE_USB_XHCI_IRQ_MSIX_UNUSE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_IRQ_MSIX_UNUSE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_QUEUE_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_queue_event",
+ .sstate = TRACE_USB_XHCI_QUEUE_EVENT_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_QUEUE_EVENT_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_FETCH_TRB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_fetch_trb",
+ .sstate = TRACE_USB_XHCI_FETCH_TRB_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_FETCH_TRB_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_PORT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_port_reset",
+ .sstate = TRACE_USB_XHCI_PORT_RESET_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_PORT_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_PORT_LINK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_port_link",
+ .sstate = TRACE_USB_XHCI_PORT_LINK_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_PORT_LINK_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_PORT_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_port_notify",
+ .sstate = TRACE_USB_XHCI_PORT_NOTIFY_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_PORT_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_enable",
+ .sstate = TRACE_USB_XHCI_SLOT_ENABLE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_ENABLE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_disable",
+ .sstate = TRACE_USB_XHCI_SLOT_DISABLE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_DISABLE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_ADDRESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_address",
+ .sstate = TRACE_USB_XHCI_SLOT_ADDRESS_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_ADDRESS_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_CONFIGURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_configure",
+ .sstate = TRACE_USB_XHCI_SLOT_CONFIGURE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_CONFIGURE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_EVALUATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_evaluate",
+ .sstate = TRACE_USB_XHCI_SLOT_EVALUATE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_EVALUATE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_SLOT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_slot_reset",
+ .sstate = TRACE_USB_XHCI_SLOT_RESET_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_SLOT_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_enable",
+ .sstate = TRACE_USB_XHCI_EP_ENABLE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_ENABLE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_disable",
+ .sstate = TRACE_USB_XHCI_EP_DISABLE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_DISABLE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_SET_DEQUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_set_dequeue",
+ .sstate = TRACE_USB_XHCI_EP_SET_DEQUEUE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_SET_DEQUEUE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_KICK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_kick",
+ .sstate = TRACE_USB_XHCI_EP_KICK_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_KICK_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_stop",
+ .sstate = TRACE_USB_XHCI_EP_STOP_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_STOP_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_reset",
+ .sstate = TRACE_USB_XHCI_EP_RESET_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_EP_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_ep_state",
+ .sstate = TRACE_USB_XHCI_EP_STATE_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_EP_STATE_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_start",
+ .sstate = TRACE_USB_XHCI_XFER_START_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_START_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_async",
+ .sstate = TRACE_USB_XHCI_XFER_ASYNC_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_ASYNC_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_NAK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_nak",
+ .sstate = TRACE_USB_XHCI_XFER_NAK_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_NAK_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_RETRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_retry",
+ .sstate = TRACE_USB_XHCI_XFER_RETRY_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_RETRY_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_success",
+ .sstate = TRACE_USB_XHCI_XFER_SUCCESS_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_XFER_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_xfer_error",
+ .sstate = TRACE_USB_XHCI_XFER_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_XFER_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_UNIMPLEMENTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_unimplemented",
+ .sstate = TRACE_USB_XHCI_UNIMPLEMENTED_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_UNIMPLEMENTED_DSTATE
+};
+TraceEvent _TRACE_USB_XHCI_ENFORCED_LIMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_xhci_enforced_limit",
+ .sstate = TRACE_USB_XHCI_ENFORCED_LIMIT_ENABLED,
+ .dstate = &_TRACE_USB_XHCI_ENFORCED_LIMIT_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_device",
+ .sstate = TRACE_USB_DESC_DEVICE_ENABLED,
+ .dstate = &_TRACE_USB_DESC_DEVICE_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_DEVICE_QUALIFIER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_device_qualifier",
+ .sstate = TRACE_USB_DESC_DEVICE_QUALIFIER_ENABLED,
+ .dstate = &_TRACE_USB_DESC_DEVICE_QUALIFIER_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_config",
+ .sstate = TRACE_USB_DESC_CONFIG_ENABLED,
+ .dstate = &_TRACE_USB_DESC_CONFIG_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_OTHER_SPEED_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_other_speed_config",
+ .sstate = TRACE_USB_DESC_OTHER_SPEED_CONFIG_ENABLED,
+ .dstate = &_TRACE_USB_DESC_OTHER_SPEED_CONFIG_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_STRING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_string",
+ .sstate = TRACE_USB_DESC_STRING_ENABLED,
+ .dstate = &_TRACE_USB_DESC_STRING_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_BOS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_bos",
+ .sstate = TRACE_USB_DESC_BOS_ENABLED,
+ .dstate = &_TRACE_USB_DESC_BOS_DSTATE
+};
+TraceEvent _TRACE_USB_DESC_MSOS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_desc_msos",
+ .sstate = TRACE_USB_DESC_MSOS_ENABLED,
+ .dstate = &_TRACE_USB_DESC_MSOS_DSTATE
+};
+TraceEvent _TRACE_USB_SET_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_set_addr",
+ .sstate = TRACE_USB_SET_ADDR_ENABLED,
+ .dstate = &_TRACE_USB_SET_ADDR_DSTATE
+};
+TraceEvent _TRACE_USB_SET_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_set_config",
+ .sstate = TRACE_USB_SET_CONFIG_ENABLED,
+ .dstate = &_TRACE_USB_SET_CONFIG_DSTATE
+};
+TraceEvent _TRACE_USB_SET_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_set_interface",
+ .sstate = TRACE_USB_SET_INTERFACE_ENABLED,
+ .dstate = &_TRACE_USB_SET_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_USB_CLEAR_DEVICE_FEATURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_clear_device_feature",
+ .sstate = TRACE_USB_CLEAR_DEVICE_FEATURE_ENABLED,
+ .dstate = &_TRACE_USB_CLEAR_DEVICE_FEATURE_DSTATE
+};
+TraceEvent _TRACE_USB_SET_DEVICE_FEATURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_set_device_feature",
+ .sstate = TRACE_USB_SET_DEVICE_FEATURE_ENABLED,
+ .dstate = &_TRACE_USB_SET_DEVICE_FEATURE_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_reset",
+ .sstate = TRACE_USB_HUB_RESET_ENABLED,
+ .dstate = &_TRACE_USB_HUB_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_CONTROL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_control",
+ .sstate = TRACE_USB_HUB_CONTROL_ENABLED,
+ .dstate = &_TRACE_USB_HUB_CONTROL_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_GET_PORT_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_get_port_status",
+ .sstate = TRACE_USB_HUB_GET_PORT_STATUS_ENABLED,
+ .dstate = &_TRACE_USB_HUB_GET_PORT_STATUS_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_SET_PORT_FEATURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_set_port_feature",
+ .sstate = TRACE_USB_HUB_SET_PORT_FEATURE_ENABLED,
+ .dstate = &_TRACE_USB_HUB_SET_PORT_FEATURE_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_CLEAR_PORT_FEATURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_clear_port_feature",
+ .sstate = TRACE_USB_HUB_CLEAR_PORT_FEATURE_ENABLED,
+ .dstate = &_TRACE_USB_HUB_CLEAR_PORT_FEATURE_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_attach",
+ .sstate = TRACE_USB_HUB_ATTACH_ENABLED,
+ .dstate = &_TRACE_USB_HUB_ATTACH_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_detach",
+ .sstate = TRACE_USB_HUB_DETACH_ENABLED,
+ .dstate = &_TRACE_USB_HUB_DETACH_DSTATE
+};
+TraceEvent _TRACE_USB_HUB_STATUS_REPORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_hub_status_report",
+ .sstate = TRACE_USB_HUB_STATUS_REPORT_ENABLED,
+ .dstate = &_TRACE_USB_HUB_STATUS_REPORT_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_reset",
+ .sstate = TRACE_USB_UAS_RESET_ENABLED,
+ .dstate = &_TRACE_USB_UAS_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_command",
+ .sstate = TRACE_USB_UAS_COMMAND_ENABLED,
+ .dstate = &_TRACE_USB_UAS_COMMAND_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_RESPONSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_response",
+ .sstate = TRACE_USB_UAS_RESPONSE_ENABLED,
+ .dstate = &_TRACE_USB_UAS_RESPONSE_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_SENSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_sense",
+ .sstate = TRACE_USB_UAS_SENSE_ENABLED,
+ .dstate = &_TRACE_USB_UAS_SENSE_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_READ_READY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_read_ready",
+ .sstate = TRACE_USB_UAS_READ_READY_ENABLED,
+ .dstate = &_TRACE_USB_UAS_READ_READY_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_WRITE_READY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_write_ready",
+ .sstate = TRACE_USB_UAS_WRITE_READY_ENABLED,
+ .dstate = &_TRACE_USB_UAS_WRITE_READY_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_XFER_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_xfer_data",
+ .sstate = TRACE_USB_UAS_XFER_DATA_ENABLED,
+ .dstate = &_TRACE_USB_UAS_XFER_DATA_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_SCSI_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_scsi_data",
+ .sstate = TRACE_USB_UAS_SCSI_DATA_ENABLED,
+ .dstate = &_TRACE_USB_UAS_SCSI_DATA_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_SCSI_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_scsi_complete",
+ .sstate = TRACE_USB_UAS_SCSI_COMPLETE_ENABLED,
+ .dstate = &_TRACE_USB_UAS_SCSI_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_TMF_ABORT_TASK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_tmf_abort_task",
+ .sstate = TRACE_USB_UAS_TMF_ABORT_TASK_ENABLED,
+ .dstate = &_TRACE_USB_UAS_TMF_ABORT_TASK_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_tmf_logical_unit_reset",
+ .sstate = TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_ENABLED,
+ .dstate = &_TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_UAS_TMF_UNSUPPORTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_uas_tmf_unsupported",
+ .sstate = TRACE_USB_UAS_TMF_UNSUPPORTED_ENABLED,
+ .dstate = &_TRACE_USB_UAS_TMF_UNSUPPORTED_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_reset",
+ .sstate = TRACE_USB_MTP_RESET_ENABLED,
+ .dstate = &_TRACE_USB_MTP_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_command",
+ .sstate = TRACE_USB_MTP_COMMAND_ENABLED,
+ .dstate = &_TRACE_USB_MTP_COMMAND_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_success",
+ .sstate = TRACE_USB_MTP_SUCCESS_ENABLED,
+ .dstate = &_TRACE_USB_MTP_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_error",
+ .sstate = TRACE_USB_MTP_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_MTP_ERROR_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_DATA_IN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_data_in",
+ .sstate = TRACE_USB_MTP_DATA_IN_ENABLED,
+ .dstate = &_TRACE_USB_MTP_DATA_IN_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_XFER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_xfer",
+ .sstate = TRACE_USB_MTP_XFER_ENABLED,
+ .dstate = &_TRACE_USB_MTP_XFER_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_NAK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_nak",
+ .sstate = TRACE_USB_MTP_NAK_ENABLED,
+ .dstate = &_TRACE_USB_MTP_NAK_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_STALL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_stall",
+ .sstate = TRACE_USB_MTP_STALL_ENABLED,
+ .dstate = &_TRACE_USB_MTP_STALL_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_DEVICE_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_device_info",
+ .sstate = TRACE_USB_MTP_OP_GET_DEVICE_INFO_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_DEVICE_INFO_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_OPEN_SESSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_open_session",
+ .sstate = TRACE_USB_MTP_OP_OPEN_SESSION_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_OPEN_SESSION_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_CLOSE_SESSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_close_session",
+ .sstate = TRACE_USB_MTP_OP_CLOSE_SESSION_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_CLOSE_SESSION_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_STORAGE_IDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_storage_ids",
+ .sstate = TRACE_USB_MTP_OP_GET_STORAGE_IDS_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_STORAGE_IDS_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_STORAGE_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_storage_info",
+ .sstate = TRACE_USB_MTP_OP_GET_STORAGE_INFO_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_STORAGE_INFO_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_NUM_OBJECTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_num_objects",
+ .sstate = TRACE_USB_MTP_OP_GET_NUM_OBJECTS_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_NUM_OBJECTS_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_object_handles",
+ .sstate = TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_object_info",
+ .sstate = TRACE_USB_MTP_OP_GET_OBJECT_INFO_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_OBJECT_INFO_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_object",
+ .sstate = TRACE_USB_MTP_OP_GET_OBJECT_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_OBJECT_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_get_partial_object",
+ .sstate = TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OP_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_op_unknown",
+ .sstate = TRACE_USB_MTP_OP_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OP_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OBJECT_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_object_alloc",
+ .sstate = TRACE_USB_MTP_OBJECT_ALLOC_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OBJECT_ALLOC_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_OBJECT_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_object_free",
+ .sstate = TRACE_USB_MTP_OBJECT_FREE_ENABLED,
+ .dstate = &_TRACE_USB_MTP_OBJECT_FREE_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_ADD_CHILD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_add_child",
+ .sstate = TRACE_USB_MTP_ADD_CHILD_ENABLED,
+ .dstate = &_TRACE_USB_MTP_ADD_CHILD_DSTATE
+};
+TraceEvent _TRACE_USB_MTP_INOTIFY_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_mtp_inotify_event",
+ .sstate = TRACE_USB_MTP_INOTIFY_EVENT_ENABLED,
+ .dstate = &_TRACE_USB_MTP_INOTIFY_EVENT_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_OPEN_STARTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_open_started",
+ .sstate = TRACE_USB_HOST_OPEN_STARTED_ENABLED,
+ .dstate = &_TRACE_USB_HOST_OPEN_STARTED_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_OPEN_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_open_success",
+ .sstate = TRACE_USB_HOST_OPEN_SUCCESS_ENABLED,
+ .dstate = &_TRACE_USB_HOST_OPEN_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_OPEN_FAILURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_open_failure",
+ .sstate = TRACE_USB_HOST_OPEN_FAILURE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_OPEN_FAILURE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_close",
+ .sstate = TRACE_USB_HOST_CLOSE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_CLOSE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_ATTACH_KERNEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_attach_kernel",
+ .sstate = TRACE_USB_HOST_ATTACH_KERNEL_ENABLED,
+ .dstate = &_TRACE_USB_HOST_ATTACH_KERNEL_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_DETACH_KERNEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_detach_kernel",
+ .sstate = TRACE_USB_HOST_DETACH_KERNEL_ENABLED,
+ .dstate = &_TRACE_USB_HOST_DETACH_KERNEL_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_SET_ADDRESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_set_address",
+ .sstate = TRACE_USB_HOST_SET_ADDRESS_ENABLED,
+ .dstate = &_TRACE_USB_HOST_SET_ADDRESS_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_SET_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_set_config",
+ .sstate = TRACE_USB_HOST_SET_CONFIG_ENABLED,
+ .dstate = &_TRACE_USB_HOST_SET_CONFIG_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_SET_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_set_interface",
+ .sstate = TRACE_USB_HOST_SET_INTERFACE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_SET_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_CLAIM_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_claim_interface",
+ .sstate = TRACE_USB_HOST_CLAIM_INTERFACE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_CLAIM_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_RELEASE_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_release_interface",
+ .sstate = TRACE_USB_HOST_RELEASE_INTERFACE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_RELEASE_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_REQ_CONTROL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_req_control",
+ .sstate = TRACE_USB_HOST_REQ_CONTROL_ENABLED,
+ .dstate = &_TRACE_USB_HOST_REQ_CONTROL_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_REQ_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_req_data",
+ .sstate = TRACE_USB_HOST_REQ_DATA_ENABLED,
+ .dstate = &_TRACE_USB_HOST_REQ_DATA_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_REQ_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_req_complete",
+ .sstate = TRACE_USB_HOST_REQ_COMPLETE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_REQ_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_REQ_EMULATED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_req_emulated",
+ .sstate = TRACE_USB_HOST_REQ_EMULATED_ENABLED,
+ .dstate = &_TRACE_USB_HOST_REQ_EMULATED_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_REQ_CANCELED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_req_canceled",
+ .sstate = TRACE_USB_HOST_REQ_CANCELED_ENABLED,
+ .dstate = &_TRACE_USB_HOST_REQ_CANCELED_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_ISO_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_iso_start",
+ .sstate = TRACE_USB_HOST_ISO_START_ENABLED,
+ .dstate = &_TRACE_USB_HOST_ISO_START_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_ISO_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_iso_stop",
+ .sstate = TRACE_USB_HOST_ISO_STOP_ENABLED,
+ .dstate = &_TRACE_USB_HOST_ISO_STOP_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_ISO_OUT_OF_BUFS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_iso_out_of_bufs",
+ .sstate = TRACE_USB_HOST_ISO_OUT_OF_BUFS_ENABLED,
+ .dstate = &_TRACE_USB_HOST_ISO_OUT_OF_BUFS_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_reset",
+ .sstate = TRACE_USB_HOST_RESET_ENABLED,
+ .dstate = &_TRACE_USB_HOST_RESET_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_AUTO_SCAN_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_auto_scan_enabled",
+ .sstate = TRACE_USB_HOST_AUTO_SCAN_ENABLED_ENABLED,
+ .dstate = &_TRACE_USB_HOST_AUTO_SCAN_ENABLED_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_AUTO_SCAN_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_auto_scan_disabled",
+ .sstate = TRACE_USB_HOST_AUTO_SCAN_DISABLED_ENABLED,
+ .dstate = &_TRACE_USB_HOST_AUTO_SCAN_DISABLED_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_PARSE_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_parse_config",
+ .sstate = TRACE_USB_HOST_PARSE_CONFIG_ENABLED,
+ .dstate = &_TRACE_USB_HOST_PARSE_CONFIG_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_PARSE_INTERFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_parse_interface",
+ .sstate = TRACE_USB_HOST_PARSE_INTERFACE_ENABLED,
+ .dstate = &_TRACE_USB_HOST_PARSE_INTERFACE_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_PARSE_ENDPOINT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_parse_endpoint",
+ .sstate = TRACE_USB_HOST_PARSE_ENDPOINT_ENABLED,
+ .dstate = &_TRACE_USB_HOST_PARSE_ENDPOINT_DSTATE
+};
+TraceEvent _TRACE_USB_HOST_PARSE_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "usb_host_parse_error",
+ .sstate = TRACE_USB_HOST_PARSE_ERROR_ENABLED,
+ .dstate = &_TRACE_USB_HOST_PARSE_ERROR_DSTATE
+};
+TraceEvent *hw_usb_trace_events[] = {
+ &_TRACE_USB_PACKET_STATE_CHANGE_EVENT,
+ &_TRACE_USB_PACKET_STATE_FAULT_EVENT,
+ &_TRACE_USB_PORT_CLAIM_EVENT,
+ &_TRACE_USB_PORT_ATTACH_EVENT,
+ &_TRACE_USB_PORT_DETACH_EVENT,
+ &_TRACE_USB_PORT_RELEASE_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_READ_FAILED_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_HEAD_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_SO_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_NAK_EVENT,
+ &_TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_EVENT,
+ &_TRACE_USB_OHCI_PORT_ATTACH_EVENT,
+ &_TRACE_USB_OHCI_PORT_DETACH_EVENT,
+ &_TRACE_USB_OHCI_PORT_WAKEUP_EVENT,
+ &_TRACE_USB_OHCI_PORT_SUSPEND_EVENT,
+ &_TRACE_USB_OHCI_PORT_RESET_EVENT,
+ &_TRACE_USB_OHCI_REMOTE_WAKEUP_EVENT,
+ &_TRACE_USB_OHCI_RESET_EVENT,
+ &_TRACE_USB_OHCI_START_EVENT,
+ &_TRACE_USB_OHCI_RESUME_EVENT,
+ &_TRACE_USB_OHCI_STOP_EVENT,
+ &_TRACE_USB_OHCI_EXIT_EVENT,
+ &_TRACE_USB_OHCI_SET_CTL_EVENT,
+ &_TRACE_USB_OHCI_TD_UNDERRUN_EVENT,
+ &_TRACE_USB_OHCI_TD_DEV_ERROR_EVENT,
+ &_TRACE_USB_OHCI_TD_NAK_EVENT,
+ &_TRACE_USB_OHCI_TD_STALL_EVENT,
+ &_TRACE_USB_OHCI_TD_BABBLE_EVENT,
+ &_TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_EVENT,
+ &_TRACE_USB_OHCI_TD_READ_ERROR_EVENT,
+ &_TRACE_USB_OHCI_TD_BAD_DIRECTION_EVENT,
+ &_TRACE_USB_OHCI_TD_SKIP_ASYNC_EVENT,
+ &_TRACE_USB_OHCI_TD_PKT_HDR_EVENT,
+ &_TRACE_USB_OHCI_TD_PKT_SHORT_EVENT,
+ &_TRACE_USB_OHCI_TD_PKT_FULL_EVENT,
+ &_TRACE_USB_OHCI_TD_TOO_MANY_PENDING_EVENT,
+ &_TRACE_USB_OHCI_TD_PACKET_STATUS_EVENT,
+ &_TRACE_USB_OHCI_ED_READ_ERROR_EVENT,
+ &_TRACE_USB_OHCI_ED_PKT_EVENT,
+ &_TRACE_USB_OHCI_ED_PKT_FLAGS_EVENT,
+ &_TRACE_USB_OHCI_HCCA_READ_ERROR_EVENT,
+ &_TRACE_USB_OHCI_MEM_READ_UNALIGNED_EVENT,
+ &_TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_EVENT,
+ &_TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_EVENT,
+ &_TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_EVENT,
+ &_TRACE_USB_OHCI_PROCESS_LISTS_EVENT,
+ &_TRACE_USB_OHCI_SET_FRAME_INTERVAL_EVENT,
+ &_TRACE_USB_OHCI_HUB_POWER_UP_EVENT,
+ &_TRACE_USB_OHCI_HUB_POWER_DOWN_EVENT,
+ &_TRACE_USB_OHCI_INIT_TIME_EVENT,
+ &_TRACE_USB_OHCI_DIE_EVENT,
+ &_TRACE_USB_OHCI_ASYNC_COMPLETE_EVENT,
+ &_TRACE_USB_EHCI_RESET_EVENT,
+ &_TRACE_USB_EHCI_UNREALIZE_EVENT,
+ &_TRACE_USB_EHCI_OPREG_READ_EVENT,
+ &_TRACE_USB_EHCI_OPREG_WRITE_EVENT,
+ &_TRACE_USB_EHCI_OPREG_CHANGE_EVENT,
+ &_TRACE_USB_EHCI_PORTSC_READ_EVENT,
+ &_TRACE_USB_EHCI_PORTSC_WRITE_EVENT,
+ &_TRACE_USB_EHCI_PORTSC_CHANGE_EVENT,
+ &_TRACE_USB_EHCI_USBSTS_EVENT,
+ &_TRACE_USB_EHCI_STATE_EVENT,
+ &_TRACE_USB_EHCI_QH_PTRS_EVENT,
+ &_TRACE_USB_EHCI_QH_FIELDS_EVENT,
+ &_TRACE_USB_EHCI_QH_BITS_EVENT,
+ &_TRACE_USB_EHCI_QTD_PTRS_EVENT,
+ &_TRACE_USB_EHCI_QTD_FIELDS_EVENT,
+ &_TRACE_USB_EHCI_QTD_BITS_EVENT,
+ &_TRACE_USB_EHCI_ITD_EVENT,
+ &_TRACE_USB_EHCI_SITD_EVENT,
+ &_TRACE_USB_EHCI_PORT_ATTACH_EVENT,
+ &_TRACE_USB_EHCI_PORT_DETACH_EVENT,
+ &_TRACE_USB_EHCI_PORT_RESET_EVENT,
+ &_TRACE_USB_EHCI_PORT_SUSPEND_EVENT,
+ &_TRACE_USB_EHCI_PORT_WAKEUP_EVENT,
+ &_TRACE_USB_EHCI_PORT_RESUME_EVENT,
+ &_TRACE_USB_EHCI_QUEUE_ACTION_EVENT,
+ &_TRACE_USB_EHCI_PACKET_ACTION_EVENT,
+ &_TRACE_USB_EHCI_IRQ_EVENT,
+ &_TRACE_USB_EHCI_GUEST_BUG_EVENT,
+ &_TRACE_USB_EHCI_DOORBELL_RING_EVENT,
+ &_TRACE_USB_EHCI_DOORBELL_ACK_EVENT,
+ &_TRACE_USB_EHCI_DMA_ERROR_EVENT,
+ &_TRACE_USB_UHCI_RESET_EVENT,
+ &_TRACE_USB_UHCI_EXIT_EVENT,
+ &_TRACE_USB_UHCI_SCHEDULE_START_EVENT,
+ &_TRACE_USB_UHCI_SCHEDULE_STOP_EVENT,
+ &_TRACE_USB_UHCI_FRAME_START_EVENT,
+ &_TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_EVENT,
+ &_TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_EVENT,
+ &_TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_EVENT,
+ &_TRACE_USB_UHCI_MMIO_READW_EVENT,
+ &_TRACE_USB_UHCI_MMIO_WRITEW_EVENT,
+ &_TRACE_USB_UHCI_QUEUE_ADD_EVENT,
+ &_TRACE_USB_UHCI_QUEUE_DEL_EVENT,
+ &_TRACE_USB_UHCI_PACKET_ADD_EVENT,
+ &_TRACE_USB_UHCI_PACKET_LINK_ASYNC_EVENT,
+ &_TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_EVENT,
+ &_TRACE_USB_UHCI_PACKET_CANCEL_EVENT,
+ &_TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_EVENT,
+ &_TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_EVENT,
+ &_TRACE_USB_UHCI_PACKET_COMPLETE_STALL_EVENT,
+ &_TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_EVENT,
+ &_TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_EVENT,
+ &_TRACE_USB_UHCI_PACKET_DEL_EVENT,
+ &_TRACE_USB_UHCI_QH_LOAD_EVENT,
+ &_TRACE_USB_UHCI_TD_LOAD_EVENT,
+ &_TRACE_USB_UHCI_TD_QUEUE_EVENT,
+ &_TRACE_USB_UHCI_TD_NEXTQH_EVENT,
+ &_TRACE_USB_UHCI_TD_ASYNC_EVENT,
+ &_TRACE_USB_UHCI_TD_COMPLETE_EVENT,
+ &_TRACE_USB_XHCI_RESET_EVENT,
+ &_TRACE_USB_XHCI_EXIT_EVENT,
+ &_TRACE_USB_XHCI_RUN_EVENT,
+ &_TRACE_USB_XHCI_STOP_EVENT,
+ &_TRACE_USB_XHCI_CAP_READ_EVENT,
+ &_TRACE_USB_XHCI_OPER_READ_EVENT,
+ &_TRACE_USB_XHCI_PORT_READ_EVENT,
+ &_TRACE_USB_XHCI_RUNTIME_READ_EVENT,
+ &_TRACE_USB_XHCI_DOORBELL_READ_EVENT,
+ &_TRACE_USB_XHCI_OPER_WRITE_EVENT,
+ &_TRACE_USB_XHCI_PORT_WRITE_EVENT,
+ &_TRACE_USB_XHCI_RUNTIME_WRITE_EVENT,
+ &_TRACE_USB_XHCI_DOORBELL_WRITE_EVENT,
+ &_TRACE_USB_XHCI_IRQ_INTX_EVENT,
+ &_TRACE_USB_XHCI_IRQ_MSI_EVENT,
+ &_TRACE_USB_XHCI_IRQ_MSIX_EVENT,
+ &_TRACE_USB_XHCI_IRQ_MSIX_USE_EVENT,
+ &_TRACE_USB_XHCI_IRQ_MSIX_UNUSE_EVENT,
+ &_TRACE_USB_XHCI_QUEUE_EVENT_EVENT,
+ &_TRACE_USB_XHCI_FETCH_TRB_EVENT,
+ &_TRACE_USB_XHCI_PORT_RESET_EVENT,
+ &_TRACE_USB_XHCI_PORT_LINK_EVENT,
+ &_TRACE_USB_XHCI_PORT_NOTIFY_EVENT,
+ &_TRACE_USB_XHCI_SLOT_ENABLE_EVENT,
+ &_TRACE_USB_XHCI_SLOT_DISABLE_EVENT,
+ &_TRACE_USB_XHCI_SLOT_ADDRESS_EVENT,
+ &_TRACE_USB_XHCI_SLOT_CONFIGURE_EVENT,
+ &_TRACE_USB_XHCI_SLOT_EVALUATE_EVENT,
+ &_TRACE_USB_XHCI_SLOT_RESET_EVENT,
+ &_TRACE_USB_XHCI_EP_ENABLE_EVENT,
+ &_TRACE_USB_XHCI_EP_DISABLE_EVENT,
+ &_TRACE_USB_XHCI_EP_SET_DEQUEUE_EVENT,
+ &_TRACE_USB_XHCI_EP_KICK_EVENT,
+ &_TRACE_USB_XHCI_EP_STOP_EVENT,
+ &_TRACE_USB_XHCI_EP_RESET_EVENT,
+ &_TRACE_USB_XHCI_EP_STATE_EVENT,
+ &_TRACE_USB_XHCI_XFER_START_EVENT,
+ &_TRACE_USB_XHCI_XFER_ASYNC_EVENT,
+ &_TRACE_USB_XHCI_XFER_NAK_EVENT,
+ &_TRACE_USB_XHCI_XFER_RETRY_EVENT,
+ &_TRACE_USB_XHCI_XFER_SUCCESS_EVENT,
+ &_TRACE_USB_XHCI_XFER_ERROR_EVENT,
+ &_TRACE_USB_XHCI_UNIMPLEMENTED_EVENT,
+ &_TRACE_USB_XHCI_ENFORCED_LIMIT_EVENT,
+ &_TRACE_USB_DESC_DEVICE_EVENT,
+ &_TRACE_USB_DESC_DEVICE_QUALIFIER_EVENT,
+ &_TRACE_USB_DESC_CONFIG_EVENT,
+ &_TRACE_USB_DESC_OTHER_SPEED_CONFIG_EVENT,
+ &_TRACE_USB_DESC_STRING_EVENT,
+ &_TRACE_USB_DESC_BOS_EVENT,
+ &_TRACE_USB_DESC_MSOS_EVENT,
+ &_TRACE_USB_SET_ADDR_EVENT,
+ &_TRACE_USB_SET_CONFIG_EVENT,
+ &_TRACE_USB_SET_INTERFACE_EVENT,
+ &_TRACE_USB_CLEAR_DEVICE_FEATURE_EVENT,
+ &_TRACE_USB_SET_DEVICE_FEATURE_EVENT,
+ &_TRACE_USB_HUB_RESET_EVENT,
+ &_TRACE_USB_HUB_CONTROL_EVENT,
+ &_TRACE_USB_HUB_GET_PORT_STATUS_EVENT,
+ &_TRACE_USB_HUB_SET_PORT_FEATURE_EVENT,
+ &_TRACE_USB_HUB_CLEAR_PORT_FEATURE_EVENT,
+ &_TRACE_USB_HUB_ATTACH_EVENT,
+ &_TRACE_USB_HUB_DETACH_EVENT,
+ &_TRACE_USB_HUB_STATUS_REPORT_EVENT,
+ &_TRACE_USB_UAS_RESET_EVENT,
+ &_TRACE_USB_UAS_COMMAND_EVENT,
+ &_TRACE_USB_UAS_RESPONSE_EVENT,
+ &_TRACE_USB_UAS_SENSE_EVENT,
+ &_TRACE_USB_UAS_READ_READY_EVENT,
+ &_TRACE_USB_UAS_WRITE_READY_EVENT,
+ &_TRACE_USB_UAS_XFER_DATA_EVENT,
+ &_TRACE_USB_UAS_SCSI_DATA_EVENT,
+ &_TRACE_USB_UAS_SCSI_COMPLETE_EVENT,
+ &_TRACE_USB_UAS_TMF_ABORT_TASK_EVENT,
+ &_TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_EVENT,
+ &_TRACE_USB_UAS_TMF_UNSUPPORTED_EVENT,
+ &_TRACE_USB_MTP_RESET_EVENT,
+ &_TRACE_USB_MTP_COMMAND_EVENT,
+ &_TRACE_USB_MTP_SUCCESS_EVENT,
+ &_TRACE_USB_MTP_ERROR_EVENT,
+ &_TRACE_USB_MTP_DATA_IN_EVENT,
+ &_TRACE_USB_MTP_XFER_EVENT,
+ &_TRACE_USB_MTP_NAK_EVENT,
+ &_TRACE_USB_MTP_STALL_EVENT,
+ &_TRACE_USB_MTP_OP_GET_DEVICE_INFO_EVENT,
+ &_TRACE_USB_MTP_OP_OPEN_SESSION_EVENT,
+ &_TRACE_USB_MTP_OP_CLOSE_SESSION_EVENT,
+ &_TRACE_USB_MTP_OP_GET_STORAGE_IDS_EVENT,
+ &_TRACE_USB_MTP_OP_GET_STORAGE_INFO_EVENT,
+ &_TRACE_USB_MTP_OP_GET_NUM_OBJECTS_EVENT,
+ &_TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_EVENT,
+ &_TRACE_USB_MTP_OP_GET_OBJECT_INFO_EVENT,
+ &_TRACE_USB_MTP_OP_GET_OBJECT_EVENT,
+ &_TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_EVENT,
+ &_TRACE_USB_MTP_OP_UNKNOWN_EVENT,
+ &_TRACE_USB_MTP_OBJECT_ALLOC_EVENT,
+ &_TRACE_USB_MTP_OBJECT_FREE_EVENT,
+ &_TRACE_USB_MTP_ADD_CHILD_EVENT,
+ &_TRACE_USB_MTP_INOTIFY_EVENT_EVENT,
+ &_TRACE_USB_HOST_OPEN_STARTED_EVENT,
+ &_TRACE_USB_HOST_OPEN_SUCCESS_EVENT,
+ &_TRACE_USB_HOST_OPEN_FAILURE_EVENT,
+ &_TRACE_USB_HOST_CLOSE_EVENT,
+ &_TRACE_USB_HOST_ATTACH_KERNEL_EVENT,
+ &_TRACE_USB_HOST_DETACH_KERNEL_EVENT,
+ &_TRACE_USB_HOST_SET_ADDRESS_EVENT,
+ &_TRACE_USB_HOST_SET_CONFIG_EVENT,
+ &_TRACE_USB_HOST_SET_INTERFACE_EVENT,
+ &_TRACE_USB_HOST_CLAIM_INTERFACE_EVENT,
+ &_TRACE_USB_HOST_RELEASE_INTERFACE_EVENT,
+ &_TRACE_USB_HOST_REQ_CONTROL_EVENT,
+ &_TRACE_USB_HOST_REQ_DATA_EVENT,
+ &_TRACE_USB_HOST_REQ_COMPLETE_EVENT,
+ &_TRACE_USB_HOST_REQ_EMULATED_EVENT,
+ &_TRACE_USB_HOST_REQ_CANCELED_EVENT,
+ &_TRACE_USB_HOST_ISO_START_EVENT,
+ &_TRACE_USB_HOST_ISO_STOP_EVENT,
+ &_TRACE_USB_HOST_ISO_OUT_OF_BUFS_EVENT,
+ &_TRACE_USB_HOST_RESET_EVENT,
+ &_TRACE_USB_HOST_AUTO_SCAN_ENABLED_EVENT,
+ &_TRACE_USB_HOST_AUTO_SCAN_DISABLED_EVENT,
+ &_TRACE_USB_HOST_PARSE_CONFIG_EVENT,
+ &_TRACE_USB_HOST_PARSE_INTERFACE_EVENT,
+ &_TRACE_USB_HOST_PARSE_ENDPOINT_EVENT,
+ &_TRACE_USB_HOST_PARSE_ERROR_EVENT,
+ NULL,
+};
+
+static void trace_hw_usb_register_events(void)
+{
+ trace_event_register_group(hw_usb_trace_events);
+}
+trace_init(trace_hw_usb_register_events)
diff --git a/qemu2-auto-generated/hw/usb/trace.h b/qemu2-auto-generated/hw/usb/trace.h
new file mode 100644
index 0000000000..b8dffbc4bf
--- /dev/null
+++ b/qemu2-auto-generated/hw/usb/trace.h
@@ -0,0 +1,4174 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_USB_GENERATED_TRACERS_H
+#define TRACE_HW_USB_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_USB_PACKET_STATE_CHANGE_EVENT;
+extern TraceEvent _TRACE_USB_PACKET_STATE_FAULT_EVENT;
+extern TraceEvent _TRACE_USB_PORT_CLAIM_EVENT;
+extern TraceEvent _TRACE_USB_PORT_ATTACH_EVENT;
+extern TraceEvent _TRACE_USB_PORT_DETACH_EVENT;
+extern TraceEvent _TRACE_USB_PORT_RELEASE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_READ_FAILED_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_HEAD_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_SO_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_NAK_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PORT_ATTACH_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PORT_DETACH_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PORT_WAKEUP_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PORT_SUSPEND_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PORT_RESET_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_REMOTE_WAKEUP_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_RESET_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_START_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_RESUME_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_STOP_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_EXIT_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_SET_CTL_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_UNDERRUN_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_DEV_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_NAK_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_STALL_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_BABBLE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_READ_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_BAD_DIRECTION_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_SKIP_ASYNC_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_PKT_HDR_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_PKT_SHORT_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_PKT_FULL_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_TOO_MANY_PENDING_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_TD_PACKET_STATUS_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ED_READ_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ED_PKT_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ED_PKT_FLAGS_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_HCCA_READ_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_MEM_READ_UNALIGNED_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_PROCESS_LISTS_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_SET_FRAME_INTERVAL_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_HUB_POWER_UP_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_HUB_POWER_DOWN_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_INIT_TIME_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_DIE_EVENT;
+extern TraceEvent _TRACE_USB_OHCI_ASYNC_COMPLETE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_RESET_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_UNREALIZE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_OPREG_READ_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_OPREG_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_OPREG_CHANGE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORTSC_READ_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORTSC_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORTSC_CHANGE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_USBSTS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_STATE_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QH_PTRS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QH_FIELDS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QH_BITS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QTD_PTRS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QTD_FIELDS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QTD_BITS_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_ITD_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_SITD_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_ATTACH_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_DETACH_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_RESET_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_SUSPEND_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_WAKEUP_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PORT_RESUME_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_QUEUE_ACTION_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_PACKET_ACTION_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_IRQ_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_GUEST_BUG_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_DOORBELL_RING_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_DOORBELL_ACK_EVENT;
+extern TraceEvent _TRACE_USB_EHCI_DMA_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_RESET_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_EXIT_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_SCHEDULE_START_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_SCHEDULE_STOP_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_FRAME_START_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_MMIO_READW_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_MMIO_WRITEW_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_QUEUE_ADD_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_QUEUE_DEL_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_ADD_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_LINK_ASYNC_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_CANCEL_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_STALL_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_PACKET_DEL_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_QH_LOAD_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_TD_LOAD_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_TD_QUEUE_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_TD_NEXTQH_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_TD_ASYNC_EVENT;
+extern TraceEvent _TRACE_USB_UHCI_TD_COMPLETE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_RESET_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EXIT_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_RUN_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_STOP_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_CAP_READ_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_OPER_READ_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_PORT_READ_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_RUNTIME_READ_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_DOORBELL_READ_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_OPER_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_PORT_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_RUNTIME_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_DOORBELL_WRITE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_IRQ_INTX_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_IRQ_MSI_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_USE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_IRQ_MSIX_UNUSE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_QUEUE_EVENT_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_FETCH_TRB_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_PORT_RESET_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_PORT_LINK_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_PORT_NOTIFY_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_ENABLE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_DISABLE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_ADDRESS_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_CONFIGURE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_EVALUATE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_SLOT_RESET_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_ENABLE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_DISABLE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_SET_DEQUEUE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_KICK_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_STOP_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_RESET_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_EP_STATE_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_START_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_ASYNC_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_NAK_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_RETRY_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_SUCCESS_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_XFER_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_UNIMPLEMENTED_EVENT;
+extern TraceEvent _TRACE_USB_XHCI_ENFORCED_LIMIT_EVENT;
+extern TraceEvent _TRACE_USB_DESC_DEVICE_EVENT;
+extern TraceEvent _TRACE_USB_DESC_DEVICE_QUALIFIER_EVENT;
+extern TraceEvent _TRACE_USB_DESC_CONFIG_EVENT;
+extern TraceEvent _TRACE_USB_DESC_OTHER_SPEED_CONFIG_EVENT;
+extern TraceEvent _TRACE_USB_DESC_STRING_EVENT;
+extern TraceEvent _TRACE_USB_DESC_BOS_EVENT;
+extern TraceEvent _TRACE_USB_DESC_MSOS_EVENT;
+extern TraceEvent _TRACE_USB_SET_ADDR_EVENT;
+extern TraceEvent _TRACE_USB_SET_CONFIG_EVENT;
+extern TraceEvent _TRACE_USB_SET_INTERFACE_EVENT;
+extern TraceEvent _TRACE_USB_CLEAR_DEVICE_FEATURE_EVENT;
+extern TraceEvent _TRACE_USB_SET_DEVICE_FEATURE_EVENT;
+extern TraceEvent _TRACE_USB_HUB_RESET_EVENT;
+extern TraceEvent _TRACE_USB_HUB_CONTROL_EVENT;
+extern TraceEvent _TRACE_USB_HUB_GET_PORT_STATUS_EVENT;
+extern TraceEvent _TRACE_USB_HUB_SET_PORT_FEATURE_EVENT;
+extern TraceEvent _TRACE_USB_HUB_CLEAR_PORT_FEATURE_EVENT;
+extern TraceEvent _TRACE_USB_HUB_ATTACH_EVENT;
+extern TraceEvent _TRACE_USB_HUB_DETACH_EVENT;
+extern TraceEvent _TRACE_USB_HUB_STATUS_REPORT_EVENT;
+extern TraceEvent _TRACE_USB_UAS_RESET_EVENT;
+extern TraceEvent _TRACE_USB_UAS_COMMAND_EVENT;
+extern TraceEvent _TRACE_USB_UAS_RESPONSE_EVENT;
+extern TraceEvent _TRACE_USB_UAS_SENSE_EVENT;
+extern TraceEvent _TRACE_USB_UAS_READ_READY_EVENT;
+extern TraceEvent _TRACE_USB_UAS_WRITE_READY_EVENT;
+extern TraceEvent _TRACE_USB_UAS_XFER_DATA_EVENT;
+extern TraceEvent _TRACE_USB_UAS_SCSI_DATA_EVENT;
+extern TraceEvent _TRACE_USB_UAS_SCSI_COMPLETE_EVENT;
+extern TraceEvent _TRACE_USB_UAS_TMF_ABORT_TASK_EVENT;
+extern TraceEvent _TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_EVENT;
+extern TraceEvent _TRACE_USB_UAS_TMF_UNSUPPORTED_EVENT;
+extern TraceEvent _TRACE_USB_MTP_RESET_EVENT;
+extern TraceEvent _TRACE_USB_MTP_COMMAND_EVENT;
+extern TraceEvent _TRACE_USB_MTP_SUCCESS_EVENT;
+extern TraceEvent _TRACE_USB_MTP_ERROR_EVENT;
+extern TraceEvent _TRACE_USB_MTP_DATA_IN_EVENT;
+extern TraceEvent _TRACE_USB_MTP_XFER_EVENT;
+extern TraceEvent _TRACE_USB_MTP_NAK_EVENT;
+extern TraceEvent _TRACE_USB_MTP_STALL_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_DEVICE_INFO_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_OPEN_SESSION_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_CLOSE_SESSION_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_STORAGE_IDS_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_STORAGE_INFO_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_NUM_OBJECTS_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_INFO_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_OBJECT_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OP_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OBJECT_ALLOC_EVENT;
+extern TraceEvent _TRACE_USB_MTP_OBJECT_FREE_EVENT;
+extern TraceEvent _TRACE_USB_MTP_ADD_CHILD_EVENT;
+extern TraceEvent _TRACE_USB_MTP_INOTIFY_EVENT_EVENT;
+extern TraceEvent _TRACE_USB_HOST_OPEN_STARTED_EVENT;
+extern TraceEvent _TRACE_USB_HOST_OPEN_SUCCESS_EVENT;
+extern TraceEvent _TRACE_USB_HOST_OPEN_FAILURE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_CLOSE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_ATTACH_KERNEL_EVENT;
+extern TraceEvent _TRACE_USB_HOST_DETACH_KERNEL_EVENT;
+extern TraceEvent _TRACE_USB_HOST_SET_ADDRESS_EVENT;
+extern TraceEvent _TRACE_USB_HOST_SET_CONFIG_EVENT;
+extern TraceEvent _TRACE_USB_HOST_SET_INTERFACE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_CLAIM_INTERFACE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_RELEASE_INTERFACE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_REQ_CONTROL_EVENT;
+extern TraceEvent _TRACE_USB_HOST_REQ_DATA_EVENT;
+extern TraceEvent _TRACE_USB_HOST_REQ_COMPLETE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_REQ_EMULATED_EVENT;
+extern TraceEvent _TRACE_USB_HOST_REQ_CANCELED_EVENT;
+extern TraceEvent _TRACE_USB_HOST_ISO_START_EVENT;
+extern TraceEvent _TRACE_USB_HOST_ISO_STOP_EVENT;
+extern TraceEvent _TRACE_USB_HOST_ISO_OUT_OF_BUFS_EVENT;
+extern TraceEvent _TRACE_USB_HOST_RESET_EVENT;
+extern TraceEvent _TRACE_USB_HOST_AUTO_SCAN_ENABLED_EVENT;
+extern TraceEvent _TRACE_USB_HOST_AUTO_SCAN_DISABLED_EVENT;
+extern TraceEvent _TRACE_USB_HOST_PARSE_CONFIG_EVENT;
+extern TraceEvent _TRACE_USB_HOST_PARSE_INTERFACE_EVENT;
+extern TraceEvent _TRACE_USB_HOST_PARSE_ENDPOINT_EVENT;
+extern TraceEvent _TRACE_USB_HOST_PARSE_ERROR_EVENT;
+extern uint16_t _TRACE_USB_PACKET_STATE_CHANGE_DSTATE;
+extern uint16_t _TRACE_USB_PACKET_STATE_FAULT_DSTATE;
+extern uint16_t _TRACE_USB_PORT_CLAIM_DSTATE;
+extern uint16_t _TRACE_USB_PORT_ATTACH_DSTATE;
+extern uint16_t _TRACE_USB_PORT_DETACH_DSTATE;
+extern uint16_t _TRACE_USB_PORT_RELEASE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_READ_FAILED_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_HEAD_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_SO_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_NAK_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PORT_ATTACH_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PORT_DETACH_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PORT_WAKEUP_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PORT_SUSPEND_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PORT_RESET_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_REMOTE_WAKEUP_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_RESET_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_START_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_RESUME_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_STOP_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_EXIT_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_SET_CTL_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_UNDERRUN_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_DEV_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_NAK_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_STALL_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_BABBLE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_READ_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_BAD_DIRECTION_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_SKIP_ASYNC_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_PKT_HDR_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_PKT_SHORT_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_PKT_FULL_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_TOO_MANY_PENDING_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_TD_PACKET_STATUS_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ED_READ_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ED_PKT_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ED_PKT_FLAGS_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_HCCA_READ_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_MEM_READ_UNALIGNED_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_PROCESS_LISTS_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_SET_FRAME_INTERVAL_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_HUB_POWER_UP_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_HUB_POWER_DOWN_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_INIT_TIME_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_DIE_DSTATE;
+extern uint16_t _TRACE_USB_OHCI_ASYNC_COMPLETE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_RESET_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_UNREALIZE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_OPREG_READ_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_OPREG_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_OPREG_CHANGE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORTSC_READ_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORTSC_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORTSC_CHANGE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_USBSTS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_STATE_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QH_PTRS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QH_FIELDS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QH_BITS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QTD_PTRS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QTD_FIELDS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QTD_BITS_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_ITD_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_SITD_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_ATTACH_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_DETACH_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_RESET_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_SUSPEND_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_WAKEUP_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PORT_RESUME_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_QUEUE_ACTION_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_PACKET_ACTION_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_IRQ_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_GUEST_BUG_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_DOORBELL_RING_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_DOORBELL_ACK_DSTATE;
+extern uint16_t _TRACE_USB_EHCI_DMA_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_RESET_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_EXIT_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_SCHEDULE_START_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_SCHEDULE_STOP_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_FRAME_START_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_MMIO_READW_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_MMIO_WRITEW_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_QUEUE_ADD_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_QUEUE_DEL_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_ADD_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_LINK_ASYNC_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_CANCEL_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_STALL_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_PACKET_DEL_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_QH_LOAD_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_TD_LOAD_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_TD_QUEUE_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_TD_NEXTQH_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_TD_ASYNC_DSTATE;
+extern uint16_t _TRACE_USB_UHCI_TD_COMPLETE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_RESET_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EXIT_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_RUN_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_STOP_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_CAP_READ_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_OPER_READ_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_PORT_READ_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_RUNTIME_READ_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_DOORBELL_READ_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_OPER_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_PORT_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_RUNTIME_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_DOORBELL_WRITE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_IRQ_INTX_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_IRQ_MSI_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_IRQ_MSIX_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_IRQ_MSIX_USE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_IRQ_MSIX_UNUSE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_QUEUE_EVENT_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_FETCH_TRB_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_PORT_RESET_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_PORT_LINK_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_PORT_NOTIFY_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_ENABLE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_DISABLE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_ADDRESS_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_CONFIGURE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_EVALUATE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_SLOT_RESET_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_ENABLE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_DISABLE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_SET_DEQUEUE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_KICK_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_STOP_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_RESET_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_EP_STATE_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_START_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_ASYNC_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_NAK_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_RETRY_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_SUCCESS_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_XFER_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_UNIMPLEMENTED_DSTATE;
+extern uint16_t _TRACE_USB_XHCI_ENFORCED_LIMIT_DSTATE;
+extern uint16_t _TRACE_USB_DESC_DEVICE_DSTATE;
+extern uint16_t _TRACE_USB_DESC_DEVICE_QUALIFIER_DSTATE;
+extern uint16_t _TRACE_USB_DESC_CONFIG_DSTATE;
+extern uint16_t _TRACE_USB_DESC_OTHER_SPEED_CONFIG_DSTATE;
+extern uint16_t _TRACE_USB_DESC_STRING_DSTATE;
+extern uint16_t _TRACE_USB_DESC_BOS_DSTATE;
+extern uint16_t _TRACE_USB_DESC_MSOS_DSTATE;
+extern uint16_t _TRACE_USB_SET_ADDR_DSTATE;
+extern uint16_t _TRACE_USB_SET_CONFIG_DSTATE;
+extern uint16_t _TRACE_USB_SET_INTERFACE_DSTATE;
+extern uint16_t _TRACE_USB_CLEAR_DEVICE_FEATURE_DSTATE;
+extern uint16_t _TRACE_USB_SET_DEVICE_FEATURE_DSTATE;
+extern uint16_t _TRACE_USB_HUB_RESET_DSTATE;
+extern uint16_t _TRACE_USB_HUB_CONTROL_DSTATE;
+extern uint16_t _TRACE_USB_HUB_GET_PORT_STATUS_DSTATE;
+extern uint16_t _TRACE_USB_HUB_SET_PORT_FEATURE_DSTATE;
+extern uint16_t _TRACE_USB_HUB_CLEAR_PORT_FEATURE_DSTATE;
+extern uint16_t _TRACE_USB_HUB_ATTACH_DSTATE;
+extern uint16_t _TRACE_USB_HUB_DETACH_DSTATE;
+extern uint16_t _TRACE_USB_HUB_STATUS_REPORT_DSTATE;
+extern uint16_t _TRACE_USB_UAS_RESET_DSTATE;
+extern uint16_t _TRACE_USB_UAS_COMMAND_DSTATE;
+extern uint16_t _TRACE_USB_UAS_RESPONSE_DSTATE;
+extern uint16_t _TRACE_USB_UAS_SENSE_DSTATE;
+extern uint16_t _TRACE_USB_UAS_READ_READY_DSTATE;
+extern uint16_t _TRACE_USB_UAS_WRITE_READY_DSTATE;
+extern uint16_t _TRACE_USB_UAS_XFER_DATA_DSTATE;
+extern uint16_t _TRACE_USB_UAS_SCSI_DATA_DSTATE;
+extern uint16_t _TRACE_USB_UAS_SCSI_COMPLETE_DSTATE;
+extern uint16_t _TRACE_USB_UAS_TMF_ABORT_TASK_DSTATE;
+extern uint16_t _TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_DSTATE;
+extern uint16_t _TRACE_USB_UAS_TMF_UNSUPPORTED_DSTATE;
+extern uint16_t _TRACE_USB_MTP_RESET_DSTATE;
+extern uint16_t _TRACE_USB_MTP_COMMAND_DSTATE;
+extern uint16_t _TRACE_USB_MTP_SUCCESS_DSTATE;
+extern uint16_t _TRACE_USB_MTP_ERROR_DSTATE;
+extern uint16_t _TRACE_USB_MTP_DATA_IN_DSTATE;
+extern uint16_t _TRACE_USB_MTP_XFER_DSTATE;
+extern uint16_t _TRACE_USB_MTP_NAK_DSTATE;
+extern uint16_t _TRACE_USB_MTP_STALL_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_DEVICE_INFO_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_OPEN_SESSION_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_CLOSE_SESSION_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_STORAGE_IDS_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_STORAGE_INFO_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_NUM_OBJECTS_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_INFO_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_OBJECT_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OP_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OBJECT_ALLOC_DSTATE;
+extern uint16_t _TRACE_USB_MTP_OBJECT_FREE_DSTATE;
+extern uint16_t _TRACE_USB_MTP_ADD_CHILD_DSTATE;
+extern uint16_t _TRACE_USB_MTP_INOTIFY_EVENT_DSTATE;
+extern uint16_t _TRACE_USB_HOST_OPEN_STARTED_DSTATE;
+extern uint16_t _TRACE_USB_HOST_OPEN_SUCCESS_DSTATE;
+extern uint16_t _TRACE_USB_HOST_OPEN_FAILURE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_CLOSE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_ATTACH_KERNEL_DSTATE;
+extern uint16_t _TRACE_USB_HOST_DETACH_KERNEL_DSTATE;
+extern uint16_t _TRACE_USB_HOST_SET_ADDRESS_DSTATE;
+extern uint16_t _TRACE_USB_HOST_SET_CONFIG_DSTATE;
+extern uint16_t _TRACE_USB_HOST_SET_INTERFACE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_CLAIM_INTERFACE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_RELEASE_INTERFACE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_REQ_CONTROL_DSTATE;
+extern uint16_t _TRACE_USB_HOST_REQ_DATA_DSTATE;
+extern uint16_t _TRACE_USB_HOST_REQ_COMPLETE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_REQ_EMULATED_DSTATE;
+extern uint16_t _TRACE_USB_HOST_REQ_CANCELED_DSTATE;
+extern uint16_t _TRACE_USB_HOST_ISO_START_DSTATE;
+extern uint16_t _TRACE_USB_HOST_ISO_STOP_DSTATE;
+extern uint16_t _TRACE_USB_HOST_ISO_OUT_OF_BUFS_DSTATE;
+extern uint16_t _TRACE_USB_HOST_RESET_DSTATE;
+extern uint16_t _TRACE_USB_HOST_AUTO_SCAN_ENABLED_DSTATE;
+extern uint16_t _TRACE_USB_HOST_AUTO_SCAN_DISABLED_DSTATE;
+extern uint16_t _TRACE_USB_HOST_PARSE_CONFIG_DSTATE;
+extern uint16_t _TRACE_USB_HOST_PARSE_INTERFACE_DSTATE;
+extern uint16_t _TRACE_USB_HOST_PARSE_ENDPOINT_DSTATE;
+extern uint16_t _TRACE_USB_HOST_PARSE_ERROR_DSTATE;
+#define TRACE_USB_PACKET_STATE_CHANGE_ENABLED 1
+#define TRACE_USB_PACKET_STATE_FAULT_ENABLED 1
+#define TRACE_USB_PORT_CLAIM_ENABLED 1
+#define TRACE_USB_PORT_ATTACH_ENABLED 1
+#define TRACE_USB_PORT_DETACH_ENABLED 1
+#define TRACE_USB_PORT_RELEASE_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_READ_FAILED_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_HEAD_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_SO_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_NAK_ENABLED 1
+#define TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_ENABLED 1
+#define TRACE_USB_OHCI_PORT_ATTACH_ENABLED 1
+#define TRACE_USB_OHCI_PORT_DETACH_ENABLED 1
+#define TRACE_USB_OHCI_PORT_WAKEUP_ENABLED 1
+#define TRACE_USB_OHCI_PORT_SUSPEND_ENABLED 1
+#define TRACE_USB_OHCI_PORT_RESET_ENABLED 1
+#define TRACE_USB_OHCI_REMOTE_WAKEUP_ENABLED 1
+#define TRACE_USB_OHCI_RESET_ENABLED 1
+#define TRACE_USB_OHCI_START_ENABLED 1
+#define TRACE_USB_OHCI_RESUME_ENABLED 1
+#define TRACE_USB_OHCI_STOP_ENABLED 1
+#define TRACE_USB_OHCI_EXIT_ENABLED 1
+#define TRACE_USB_OHCI_SET_CTL_ENABLED 1
+#define TRACE_USB_OHCI_TD_UNDERRUN_ENABLED 1
+#define TRACE_USB_OHCI_TD_DEV_ERROR_ENABLED 1
+#define TRACE_USB_OHCI_TD_NAK_ENABLED 1
+#define TRACE_USB_OHCI_TD_STALL_ENABLED 1
+#define TRACE_USB_OHCI_TD_BABBLE_ENABLED 1
+#define TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_ENABLED 1
+#define TRACE_USB_OHCI_TD_READ_ERROR_ENABLED 1
+#define TRACE_USB_OHCI_TD_BAD_DIRECTION_ENABLED 1
+#define TRACE_USB_OHCI_TD_SKIP_ASYNC_ENABLED 1
+#define TRACE_USB_OHCI_TD_PKT_HDR_ENABLED 1
+#define TRACE_USB_OHCI_TD_PKT_SHORT_ENABLED 1
+#define TRACE_USB_OHCI_TD_PKT_FULL_ENABLED 1
+#define TRACE_USB_OHCI_TD_TOO_MANY_PENDING_ENABLED 1
+#define TRACE_USB_OHCI_TD_PACKET_STATUS_ENABLED 1
+#define TRACE_USB_OHCI_ED_READ_ERROR_ENABLED 1
+#define TRACE_USB_OHCI_ED_PKT_ENABLED 1
+#define TRACE_USB_OHCI_ED_PKT_FLAGS_ENABLED 1
+#define TRACE_USB_OHCI_HCCA_READ_ERROR_ENABLED 1
+#define TRACE_USB_OHCI_MEM_READ_UNALIGNED_ENABLED 1
+#define TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_ENABLED 1
+#define TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_ENABLED 1
+#define TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_ENABLED 1
+#define TRACE_USB_OHCI_PROCESS_LISTS_ENABLED 1
+#define TRACE_USB_OHCI_SET_FRAME_INTERVAL_ENABLED 1
+#define TRACE_USB_OHCI_HUB_POWER_UP_ENABLED 1
+#define TRACE_USB_OHCI_HUB_POWER_DOWN_ENABLED 1
+#define TRACE_USB_OHCI_INIT_TIME_ENABLED 1
+#define TRACE_USB_OHCI_DIE_ENABLED 1
+#define TRACE_USB_OHCI_ASYNC_COMPLETE_ENABLED 1
+#define TRACE_USB_EHCI_RESET_ENABLED 1
+#define TRACE_USB_EHCI_UNREALIZE_ENABLED 1
+#define TRACE_USB_EHCI_OPREG_READ_ENABLED 1
+#define TRACE_USB_EHCI_OPREG_WRITE_ENABLED 1
+#define TRACE_USB_EHCI_OPREG_CHANGE_ENABLED 1
+#define TRACE_USB_EHCI_PORTSC_READ_ENABLED 1
+#define TRACE_USB_EHCI_PORTSC_WRITE_ENABLED 1
+#define TRACE_USB_EHCI_PORTSC_CHANGE_ENABLED 1
+#define TRACE_USB_EHCI_USBSTS_ENABLED 1
+#define TRACE_USB_EHCI_STATE_ENABLED 1
+#define TRACE_USB_EHCI_QH_PTRS_ENABLED 1
+#define TRACE_USB_EHCI_QH_FIELDS_ENABLED 1
+#define TRACE_USB_EHCI_QH_BITS_ENABLED 1
+#define TRACE_USB_EHCI_QTD_PTRS_ENABLED 1
+#define TRACE_USB_EHCI_QTD_FIELDS_ENABLED 1
+#define TRACE_USB_EHCI_QTD_BITS_ENABLED 1
+#define TRACE_USB_EHCI_ITD_ENABLED 1
+#define TRACE_USB_EHCI_SITD_ENABLED 1
+#define TRACE_USB_EHCI_PORT_ATTACH_ENABLED 1
+#define TRACE_USB_EHCI_PORT_DETACH_ENABLED 1
+#define TRACE_USB_EHCI_PORT_RESET_ENABLED 1
+#define TRACE_USB_EHCI_PORT_SUSPEND_ENABLED 1
+#define TRACE_USB_EHCI_PORT_WAKEUP_ENABLED 1
+#define TRACE_USB_EHCI_PORT_RESUME_ENABLED 1
+#define TRACE_USB_EHCI_QUEUE_ACTION_ENABLED 1
+#define TRACE_USB_EHCI_PACKET_ACTION_ENABLED 1
+#define TRACE_USB_EHCI_IRQ_ENABLED 1
+#define TRACE_USB_EHCI_GUEST_BUG_ENABLED 1
+#define TRACE_USB_EHCI_DOORBELL_RING_ENABLED 1
+#define TRACE_USB_EHCI_DOORBELL_ACK_ENABLED 1
+#define TRACE_USB_EHCI_DMA_ERROR_ENABLED 1
+#define TRACE_USB_UHCI_RESET_ENABLED 1
+#define TRACE_USB_UHCI_EXIT_ENABLED 1
+#define TRACE_USB_UHCI_SCHEDULE_START_ENABLED 1
+#define TRACE_USB_UHCI_SCHEDULE_STOP_ENABLED 1
+#define TRACE_USB_UHCI_FRAME_START_ENABLED 1
+#define TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_ENABLED 1
+#define TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_ENABLED 1
+#define TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_ENABLED 1
+#define TRACE_USB_UHCI_MMIO_READW_ENABLED 1
+#define TRACE_USB_UHCI_MMIO_WRITEW_ENABLED 1
+#define TRACE_USB_UHCI_QUEUE_ADD_ENABLED 1
+#define TRACE_USB_UHCI_QUEUE_DEL_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_ADD_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_LINK_ASYNC_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_CANCEL_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_COMPLETE_STALL_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_ENABLED 1
+#define TRACE_USB_UHCI_PACKET_DEL_ENABLED 1
+#define TRACE_USB_UHCI_QH_LOAD_ENABLED 1
+#define TRACE_USB_UHCI_TD_LOAD_ENABLED 1
+#define TRACE_USB_UHCI_TD_QUEUE_ENABLED 1
+#define TRACE_USB_UHCI_TD_NEXTQH_ENABLED 1
+#define TRACE_USB_UHCI_TD_ASYNC_ENABLED 1
+#define TRACE_USB_UHCI_TD_COMPLETE_ENABLED 1
+#define TRACE_USB_XHCI_RESET_ENABLED 1
+#define TRACE_USB_XHCI_EXIT_ENABLED 1
+#define TRACE_USB_XHCI_RUN_ENABLED 1
+#define TRACE_USB_XHCI_STOP_ENABLED 1
+#define TRACE_USB_XHCI_CAP_READ_ENABLED 1
+#define TRACE_USB_XHCI_OPER_READ_ENABLED 1
+#define TRACE_USB_XHCI_PORT_READ_ENABLED 1
+#define TRACE_USB_XHCI_RUNTIME_READ_ENABLED 1
+#define TRACE_USB_XHCI_DOORBELL_READ_ENABLED 1
+#define TRACE_USB_XHCI_OPER_WRITE_ENABLED 1
+#define TRACE_USB_XHCI_PORT_WRITE_ENABLED 1
+#define TRACE_USB_XHCI_RUNTIME_WRITE_ENABLED 1
+#define TRACE_USB_XHCI_DOORBELL_WRITE_ENABLED 1
+#define TRACE_USB_XHCI_IRQ_INTX_ENABLED 1
+#define TRACE_USB_XHCI_IRQ_MSI_ENABLED 1
+#define TRACE_USB_XHCI_IRQ_MSIX_ENABLED 1
+#define TRACE_USB_XHCI_IRQ_MSIX_USE_ENABLED 1
+#define TRACE_USB_XHCI_IRQ_MSIX_UNUSE_ENABLED 1
+#define TRACE_USB_XHCI_QUEUE_EVENT_ENABLED 1
+#define TRACE_USB_XHCI_FETCH_TRB_ENABLED 1
+#define TRACE_USB_XHCI_PORT_RESET_ENABLED 1
+#define TRACE_USB_XHCI_PORT_LINK_ENABLED 1
+#define TRACE_USB_XHCI_PORT_NOTIFY_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_ENABLE_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_DISABLE_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_ADDRESS_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_CONFIGURE_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_EVALUATE_ENABLED 1
+#define TRACE_USB_XHCI_SLOT_RESET_ENABLED 1
+#define TRACE_USB_XHCI_EP_ENABLE_ENABLED 1
+#define TRACE_USB_XHCI_EP_DISABLE_ENABLED 1
+#define TRACE_USB_XHCI_EP_SET_DEQUEUE_ENABLED 1
+#define TRACE_USB_XHCI_EP_KICK_ENABLED 1
+#define TRACE_USB_XHCI_EP_STOP_ENABLED 1
+#define TRACE_USB_XHCI_EP_RESET_ENABLED 1
+#define TRACE_USB_XHCI_EP_STATE_ENABLED 1
+#define TRACE_USB_XHCI_XFER_START_ENABLED 1
+#define TRACE_USB_XHCI_XFER_ASYNC_ENABLED 1
+#define TRACE_USB_XHCI_XFER_NAK_ENABLED 1
+#define TRACE_USB_XHCI_XFER_RETRY_ENABLED 1
+#define TRACE_USB_XHCI_XFER_SUCCESS_ENABLED 1
+#define TRACE_USB_XHCI_XFER_ERROR_ENABLED 1
+#define TRACE_USB_XHCI_UNIMPLEMENTED_ENABLED 1
+#define TRACE_USB_XHCI_ENFORCED_LIMIT_ENABLED 1
+#define TRACE_USB_DESC_DEVICE_ENABLED 1
+#define TRACE_USB_DESC_DEVICE_QUALIFIER_ENABLED 1
+#define TRACE_USB_DESC_CONFIG_ENABLED 1
+#define TRACE_USB_DESC_OTHER_SPEED_CONFIG_ENABLED 1
+#define TRACE_USB_DESC_STRING_ENABLED 1
+#define TRACE_USB_DESC_BOS_ENABLED 1
+#define TRACE_USB_DESC_MSOS_ENABLED 1
+#define TRACE_USB_SET_ADDR_ENABLED 1
+#define TRACE_USB_SET_CONFIG_ENABLED 1
+#define TRACE_USB_SET_INTERFACE_ENABLED 1
+#define TRACE_USB_CLEAR_DEVICE_FEATURE_ENABLED 1
+#define TRACE_USB_SET_DEVICE_FEATURE_ENABLED 1
+#define TRACE_USB_HUB_RESET_ENABLED 1
+#define TRACE_USB_HUB_CONTROL_ENABLED 1
+#define TRACE_USB_HUB_GET_PORT_STATUS_ENABLED 1
+#define TRACE_USB_HUB_SET_PORT_FEATURE_ENABLED 1
+#define TRACE_USB_HUB_CLEAR_PORT_FEATURE_ENABLED 1
+#define TRACE_USB_HUB_ATTACH_ENABLED 1
+#define TRACE_USB_HUB_DETACH_ENABLED 1
+#define TRACE_USB_HUB_STATUS_REPORT_ENABLED 1
+#define TRACE_USB_UAS_RESET_ENABLED 1
+#define TRACE_USB_UAS_COMMAND_ENABLED 1
+#define TRACE_USB_UAS_RESPONSE_ENABLED 1
+#define TRACE_USB_UAS_SENSE_ENABLED 1
+#define TRACE_USB_UAS_READ_READY_ENABLED 1
+#define TRACE_USB_UAS_WRITE_READY_ENABLED 1
+#define TRACE_USB_UAS_XFER_DATA_ENABLED 1
+#define TRACE_USB_UAS_SCSI_DATA_ENABLED 1
+#define TRACE_USB_UAS_SCSI_COMPLETE_ENABLED 1
+#define TRACE_USB_UAS_TMF_ABORT_TASK_ENABLED 1
+#define TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_ENABLED 1
+#define TRACE_USB_UAS_TMF_UNSUPPORTED_ENABLED 1
+#define TRACE_USB_MTP_RESET_ENABLED 1
+#define TRACE_USB_MTP_COMMAND_ENABLED 1
+#define TRACE_USB_MTP_SUCCESS_ENABLED 1
+#define TRACE_USB_MTP_ERROR_ENABLED 1
+#define TRACE_USB_MTP_DATA_IN_ENABLED 1
+#define TRACE_USB_MTP_XFER_ENABLED 1
+#define TRACE_USB_MTP_NAK_ENABLED 1
+#define TRACE_USB_MTP_STALL_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_DEVICE_INFO_ENABLED 1
+#define TRACE_USB_MTP_OP_OPEN_SESSION_ENABLED 1
+#define TRACE_USB_MTP_OP_CLOSE_SESSION_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_STORAGE_IDS_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_STORAGE_INFO_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_NUM_OBJECTS_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_OBJECT_INFO_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_OBJECT_ENABLED 1
+#define TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_ENABLED 1
+#define TRACE_USB_MTP_OP_UNKNOWN_ENABLED 1
+#define TRACE_USB_MTP_OBJECT_ALLOC_ENABLED 1
+#define TRACE_USB_MTP_OBJECT_FREE_ENABLED 1
+#define TRACE_USB_MTP_ADD_CHILD_ENABLED 1
+#define TRACE_USB_MTP_INOTIFY_EVENT_ENABLED 1
+#define TRACE_USB_HOST_OPEN_STARTED_ENABLED 1
+#define TRACE_USB_HOST_OPEN_SUCCESS_ENABLED 1
+#define TRACE_USB_HOST_OPEN_FAILURE_ENABLED 1
+#define TRACE_USB_HOST_CLOSE_ENABLED 1
+#define TRACE_USB_HOST_ATTACH_KERNEL_ENABLED 1
+#define TRACE_USB_HOST_DETACH_KERNEL_ENABLED 1
+#define TRACE_USB_HOST_SET_ADDRESS_ENABLED 1
+#define TRACE_USB_HOST_SET_CONFIG_ENABLED 1
+#define TRACE_USB_HOST_SET_INTERFACE_ENABLED 1
+#define TRACE_USB_HOST_CLAIM_INTERFACE_ENABLED 1
+#define TRACE_USB_HOST_RELEASE_INTERFACE_ENABLED 1
+#define TRACE_USB_HOST_REQ_CONTROL_ENABLED 1
+#define TRACE_USB_HOST_REQ_DATA_ENABLED 1
+#define TRACE_USB_HOST_REQ_COMPLETE_ENABLED 1
+#define TRACE_USB_HOST_REQ_EMULATED_ENABLED 1
+#define TRACE_USB_HOST_REQ_CANCELED_ENABLED 1
+#define TRACE_USB_HOST_ISO_START_ENABLED 1
+#define TRACE_USB_HOST_ISO_STOP_ENABLED 1
+#define TRACE_USB_HOST_ISO_OUT_OF_BUFS_ENABLED 1
+#define TRACE_USB_HOST_RESET_ENABLED 1
+#define TRACE_USB_HOST_AUTO_SCAN_ENABLED_ENABLED 1
+#define TRACE_USB_HOST_AUTO_SCAN_DISABLED_ENABLED 1
+#define TRACE_USB_HOST_PARSE_CONFIG_ENABLED 1
+#define TRACE_USB_HOST_PARSE_INTERFACE_ENABLED 1
+#define TRACE_USB_HOST_PARSE_ENDPOINT_ENABLED 1
+#define TRACE_USB_HOST_PARSE_ERROR_ENABLED 1
+
+#define TRACE_USB_PACKET_STATE_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_packet_state_change(int bus, const char * port, int ep, void * p, const char * o, const char * n)
+{
+}
+
+static inline void trace_usb_packet_state_change(int bus, const char * port, int ep, void * p, const char * o, const char * n)
+{
+ if (true) {
+ _nocheck__trace_usb_packet_state_change(bus, port, ep, p, o, n);
+ }
+}
+
+#define TRACE_USB_PACKET_STATE_FAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_packet_state_fault(int bus, const char * port, int ep, void * p, const char * o, const char * n)
+{
+}
+
+static inline void trace_usb_packet_state_fault(int bus, const char * port, int ep, void * p, const char * o, const char * n)
+{
+ if (true) {
+ _nocheck__trace_usb_packet_state_fault(bus, port, ep, p, o, n);
+ }
+}
+
+#define TRACE_USB_PORT_CLAIM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_port_claim(int bus, const char * port)
+{
+}
+
+static inline void trace_usb_port_claim(int bus, const char * port)
+{
+ if (true) {
+ _nocheck__trace_usb_port_claim(bus, port);
+ }
+}
+
+#define TRACE_USB_PORT_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_port_attach(int bus, const char * port, const char * devspeed, const char * portspeed)
+{
+}
+
+static inline void trace_usb_port_attach(int bus, const char * port, const char * devspeed, const char * portspeed)
+{
+ if (true) {
+ _nocheck__trace_usb_port_attach(bus, port, devspeed, portspeed);
+ }
+}
+
+#define TRACE_USB_PORT_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_port_detach(int bus, const char * port)
+{
+}
+
+static inline void trace_usb_port_detach(int bus, const char * port)
+{
+ if (true) {
+ _nocheck__trace_usb_port_detach(bus, port);
+ }
+}
+
+#define TRACE_USB_PORT_RELEASE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_port_release(int bus, const char * port)
+{
+}
+
+static inline void trace_usb_port_release(int bus, const char * port)
+{
+ if (true) {
+ _nocheck__trace_usb_port_release(bus, port);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_READ_FAILED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_read_failed(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_read_failed(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_read_failed(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_HEAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_head(head, tail, flags, bp, next, be, framenum, startframe, framecount, rel_frame_num);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_HEAD_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_head_offset(uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_head_offset(uint32_t o0, uint32_t o1, uint32_t o2, uint32_t o3, uint32_t o4, uint32_t o5, uint32_t o6, uint32_t o7)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_head_offset(o0, o1, o2, o3, o4, o5, o6, o7);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_NEG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_relative_frame_number_neg(int rel)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_relative_frame_number_neg(int rel)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_relative_frame_number_neg(rel);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_RELATIVE_FRAME_NUMBER_BIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_relative_frame_number_big(int rel, int count)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_relative_frame_number_big(int rel, int count)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_relative_frame_number_big(rel, count);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_BAD_DIRECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_bad_direction(int dir)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_bad_direction(int dir)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_bad_direction(dir);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_BAD_BP_BE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_bad_bp_be(uint32_t bp, uint32_t be)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_bad_bp_be(uint32_t bp, uint32_t be)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_bad_bp_be(bp, be);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_BAD_CC_NOT_ACCESSED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_bad_cc_not_accessed(uint32_t start, uint32_t next)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_bad_cc_not_accessed(uint32_t start, uint32_t next)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_bad_cc_not_accessed(start, next);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_BAD_CC_OVERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_bad_cc_overrun(uint32_t start, uint32_t next)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_bad_cc_overrun(uint32_t start, uint32_t next)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_bad_cc_overrun(start, next);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_SO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_so(uint32_t so, uint32_t eo, uint32_t s, uint32_t e, const char * str, ssize_t len, int ret)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_so(uint32_t so, uint32_t eo, uint32_t s, uint32_t e, const char * str, ssize_t len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_so(so, eo, s, e, str, len, ret);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_DATA_OVERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_data_overrun(int ret, ssize_t len)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_data_overrun(int ret, ssize_t len)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_data_overrun(ret, len);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_DATA_UNDERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_data_underrun(int ret)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_data_underrun(int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_data_underrun(ret);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_NAK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_nak(int ret)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_nak(int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_nak(ret);
+ }
+}
+
+#define TRACE_USB_OHCI_ISO_TD_BAD_RESPONSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_iso_td_bad_response(int ret)
+{
+}
+
+static inline void trace_usb_ohci_iso_td_bad_response(int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_iso_td_bad_response(ret);
+ }
+}
+
+#define TRACE_USB_OHCI_PORT_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_port_attach(int index)
+{
+}
+
+static inline void trace_usb_ohci_port_attach(int index)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_port_attach(index);
+ }
+}
+
+#define TRACE_USB_OHCI_PORT_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_port_detach(int index)
+{
+}
+
+static inline void trace_usb_ohci_port_detach(int index)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_port_detach(index);
+ }
+}
+
+#define TRACE_USB_OHCI_PORT_WAKEUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_port_wakeup(int index)
+{
+}
+
+static inline void trace_usb_ohci_port_wakeup(int index)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_port_wakeup(index);
+ }
+}
+
+#define TRACE_USB_OHCI_PORT_SUSPEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_port_suspend(int index)
+{
+}
+
+static inline void trace_usb_ohci_port_suspend(int index)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_port_suspend(index);
+ }
+}
+
+#define TRACE_USB_OHCI_PORT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_port_reset(int index)
+{
+}
+
+static inline void trace_usb_ohci_port_reset(int index)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_port_reset(index);
+ }
+}
+
+#define TRACE_USB_OHCI_REMOTE_WAKEUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_remote_wakeup(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_remote_wakeup(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_remote_wakeup(s);
+ }
+}
+
+#define TRACE_USB_OHCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_reset(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_reset(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_reset(s);
+ }
+}
+
+#define TRACE_USB_OHCI_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_start(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_start(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_start(s);
+ }
+}
+
+#define TRACE_USB_OHCI_RESUME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_resume(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_resume(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_resume(s);
+ }
+}
+
+#define TRACE_USB_OHCI_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_stop(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_stop(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_stop(s);
+ }
+}
+
+#define TRACE_USB_OHCI_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_exit(const char * s)
+{
+}
+
+static inline void trace_usb_ohci_exit(const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_exit(s);
+ }
+}
+
+#define TRACE_USB_OHCI_SET_CTL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_set_ctl(const char * s, uint32_t new_state)
+{
+}
+
+static inline void trace_usb_ohci_set_ctl(const char * s, uint32_t new_state)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_set_ctl(s, new_state);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_UNDERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_underrun(void)
+{
+}
+
+static inline void trace_usb_ohci_td_underrun(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_underrun();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_DEV_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_dev_error(void)
+{
+}
+
+static inline void trace_usb_ohci_td_dev_error(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_dev_error();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_NAK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_nak(void)
+{
+}
+
+static inline void trace_usb_ohci_td_nak(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_nak();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_STALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_stall(void)
+{
+}
+
+static inline void trace_usb_ohci_td_stall(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_stall();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_BABBLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_babble(void)
+{
+}
+
+static inline void trace_usb_ohci_td_babble(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_babble();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_BAD_DEVICE_RESPONSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_bad_device_response(int rc)
+{
+}
+
+static inline void trace_usb_ohci_td_bad_device_response(int rc)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_bad_device_response(rc);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_READ_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_read_error(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_td_read_error(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_read_error(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_BAD_DIRECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_bad_direction(int dir)
+{
+}
+
+static inline void trace_usb_ohci_td_bad_direction(int dir)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_bad_direction(dir);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_SKIP_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_skip_async(void)
+{
+}
+
+static inline void trace_usb_ohci_td_skip_async(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_skip_async();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_PKT_HDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_pkt_hdr(uint32_t addr, int64_t pktlen, int64_t len, const char * s, int flag_r, uint32_t cbp, uint32_t be)
+{
+}
+
+static inline void trace_usb_ohci_td_pkt_hdr(uint32_t addr, int64_t pktlen, int64_t len, const char * s, int flag_r, uint32_t cbp, uint32_t be)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_pkt_hdr(addr, pktlen, len, s, flag_r, cbp, be);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_PKT_SHORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_pkt_short(const char * dir, const char * buf)
+{
+}
+
+static inline void trace_usb_ohci_td_pkt_short(const char * dir, const char * buf)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_pkt_short(dir, buf);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_PKT_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_pkt_full(const char * dir, const char * buf)
+{
+}
+
+static inline void trace_usb_ohci_td_pkt_full(const char * dir, const char * buf)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_pkt_full(dir, buf);
+ }
+}
+
+#define TRACE_USB_OHCI_TD_TOO_MANY_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_too_many_pending(void)
+{
+}
+
+static inline void trace_usb_ohci_td_too_many_pending(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_too_many_pending();
+ }
+}
+
+#define TRACE_USB_OHCI_TD_PACKET_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_td_packet_status(int status)
+{
+}
+
+static inline void trace_usb_ohci_td_packet_status(int status)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_td_packet_status(status);
+ }
+}
+
+#define TRACE_USB_OHCI_ED_READ_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_ed_read_error(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_ed_read_error(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_ed_read_error(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_ED_PKT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_ed_pkt(uint32_t cur, int h, int c, uint32_t head, uint32_t tail, uint32_t next)
+{
+}
+
+static inline void trace_usb_ohci_ed_pkt(uint32_t cur, int h, int c, uint32_t head, uint32_t tail, uint32_t next)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_ed_pkt(cur, h, c, head, tail, next);
+ }
+}
+
+#define TRACE_USB_OHCI_ED_PKT_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_ed_pkt_flags(uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps)
+{
+}
+
+static inline void trace_usb_ohci_ed_pkt_flags(uint32_t fa, uint32_t en, uint32_t d, int s, int k, int f, uint32_t mps)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_ed_pkt_flags(fa, en, d, s, k, f, mps);
+ }
+}
+
+#define TRACE_USB_OHCI_HCCA_READ_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_hcca_read_error(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_hcca_read_error(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_hcca_read_error(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_MEM_READ_UNALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_mem_read_unaligned(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_mem_read_unaligned(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_mem_read_unaligned(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_MEM_READ_BAD_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_mem_read_bad_offset(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_mem_read_bad_offset(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_mem_read_bad_offset(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_MEM_WRITE_UNALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_mem_write_unaligned(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_mem_write_unaligned(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_mem_write_unaligned(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_MEM_WRITE_BAD_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_mem_write_bad_offset(uint32_t addr)
+{
+}
+
+static inline void trace_usb_ohci_mem_write_bad_offset(uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_mem_write_bad_offset(addr);
+ }
+}
+
+#define TRACE_USB_OHCI_PROCESS_LISTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_process_lists(uint32_t head, uint32_t cur)
+{
+}
+
+static inline void trace_usb_ohci_process_lists(uint32_t head, uint32_t cur)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_process_lists(head, cur);
+ }
+}
+
+#define TRACE_USB_OHCI_SET_FRAME_INTERVAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_set_frame_interval(const char * name, uint16_t fi_x, uint16_t fi_u)
+{
+}
+
+static inline void trace_usb_ohci_set_frame_interval(const char * name, uint16_t fi_x, uint16_t fi_u)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_set_frame_interval(name, fi_x, fi_u);
+ }
+}
+
+#define TRACE_USB_OHCI_HUB_POWER_UP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_hub_power_up(void)
+{
+}
+
+static inline void trace_usb_ohci_hub_power_up(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_hub_power_up();
+ }
+}
+
+#define TRACE_USB_OHCI_HUB_POWER_DOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_hub_power_down(void)
+{
+}
+
+static inline void trace_usb_ohci_hub_power_down(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_hub_power_down();
+ }
+}
+
+#define TRACE_USB_OHCI_INIT_TIME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_init_time(int64_t frametime, int64_t bittime)
+{
+}
+
+static inline void trace_usb_ohci_init_time(int64_t frametime, int64_t bittime)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_init_time(frametime, bittime);
+ }
+}
+
+#define TRACE_USB_OHCI_DIE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_die(void)
+{
+}
+
+static inline void trace_usb_ohci_die(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_die();
+ }
+}
+
+#define TRACE_USB_OHCI_ASYNC_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ohci_async_complete(void)
+{
+}
+
+static inline void trace_usb_ohci_async_complete(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ohci_async_complete();
+ }
+}
+
+#define TRACE_USB_EHCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_reset(void)
+{
+}
+
+static inline void trace_usb_ehci_reset(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_reset();
+ }
+}
+
+#define TRACE_USB_EHCI_UNREALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_unrealize(void)
+{
+}
+
+static inline void trace_usb_ehci_unrealize(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_unrealize();
+ }
+}
+
+#define TRACE_USB_EHCI_OPREG_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_opreg_read(uint32_t addr, const char * str, uint32_t val)
+{
+}
+
+static inline void trace_usb_ehci_opreg_read(uint32_t addr, const char * str, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_opreg_read(addr, str, val);
+ }
+}
+
+#define TRACE_USB_EHCI_OPREG_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_opreg_write(uint32_t addr, const char * str, uint32_t val)
+{
+}
+
+static inline void trace_usb_ehci_opreg_write(uint32_t addr, const char * str, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_opreg_write(addr, str, val);
+ }
+}
+
+#define TRACE_USB_EHCI_OPREG_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_opreg_change(uint32_t addr, const char * str, uint32_t new, uint32_t old)
+{
+}
+
+static inline void trace_usb_ehci_opreg_change(uint32_t addr, const char * str, uint32_t new, uint32_t old)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_opreg_change(addr, str, new, old);
+ }
+}
+
+#define TRACE_USB_EHCI_PORTSC_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_portsc_read(uint32_t addr, uint32_t port, uint32_t val)
+{
+}
+
+static inline void trace_usb_ehci_portsc_read(uint32_t addr, uint32_t port, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_portsc_read(addr, port, val);
+ }
+}
+
+#define TRACE_USB_EHCI_PORTSC_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_portsc_write(uint32_t addr, uint32_t port, uint32_t val)
+{
+}
+
+static inline void trace_usb_ehci_portsc_write(uint32_t addr, uint32_t port, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_portsc_write(addr, port, val);
+ }
+}
+
+#define TRACE_USB_EHCI_PORTSC_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_portsc_change(uint32_t addr, uint32_t port, uint32_t new, uint32_t old)
+{
+}
+
+static inline void trace_usb_ehci_portsc_change(uint32_t addr, uint32_t port, uint32_t new, uint32_t old)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_portsc_change(addr, port, new, old);
+ }
+}
+
+#define TRACE_USB_EHCI_USBSTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_usbsts(const char * sts, int state)
+{
+}
+
+static inline void trace_usb_ehci_usbsts(const char * sts, int state)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_usbsts(sts, state);
+ }
+}
+
+#define TRACE_USB_EHCI_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_state(const char * schedule, const char * state)
+{
+}
+
+static inline void trace_usb_ehci_state(const char * schedule, const char * state)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_state(schedule, state);
+ }
+}
+
+#define TRACE_USB_EHCI_QH_PTRS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qh_ptrs(void * q, uint32_t addr, uint32_t nxt, uint32_t c_qtd, uint32_t n_qtd, uint32_t a_qtd)
+{
+}
+
+static inline void trace_usb_ehci_qh_ptrs(void * q, uint32_t addr, uint32_t nxt, uint32_t c_qtd, uint32_t n_qtd, uint32_t a_qtd)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qh_ptrs(q, addr, nxt, c_qtd, n_qtd, a_qtd);
+ }
+}
+
+#define TRACE_USB_EHCI_QH_FIELDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qh_fields(uint32_t addr, int rl, int mplen, int eps, int ep, int devaddr)
+{
+}
+
+static inline void trace_usb_ehci_qh_fields(uint32_t addr, int rl, int mplen, int eps, int ep, int devaddr)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qh_fields(addr, rl, mplen, eps, ep, devaddr);
+ }
+}
+
+#define TRACE_USB_EHCI_QH_BITS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qh_bits(uint32_t addr, int c, int h, int dtc, int i)
+{
+}
+
+static inline void trace_usb_ehci_qh_bits(uint32_t addr, int c, int h, int dtc, int i)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qh_bits(addr, c, h, dtc, i);
+ }
+}
+
+#define TRACE_USB_EHCI_QTD_PTRS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qtd_ptrs(void * q, uint32_t addr, uint32_t nxt, uint32_t altnext)
+{
+}
+
+static inline void trace_usb_ehci_qtd_ptrs(void * q, uint32_t addr, uint32_t nxt, uint32_t altnext)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qtd_ptrs(q, addr, nxt, altnext);
+ }
+}
+
+#define TRACE_USB_EHCI_QTD_FIELDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qtd_fields(uint32_t addr, int tbytes, int cpage, int cerr, int pid)
+{
+}
+
+static inline void trace_usb_ehci_qtd_fields(uint32_t addr, int tbytes, int cpage, int cerr, int pid)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qtd_fields(addr, tbytes, cpage, cerr, pid);
+ }
+}
+
+#define TRACE_USB_EHCI_QTD_BITS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_qtd_bits(uint32_t addr, int ioc, int active, int halt, int babble, int xacterr)
+{
+}
+
+static inline void trace_usb_ehci_qtd_bits(uint32_t addr, int ioc, int active, int halt, int babble, int xacterr)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_qtd_bits(addr, ioc, active, halt, babble, xacterr);
+ }
+}
+
+#define TRACE_USB_EHCI_ITD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_itd(uint32_t addr, uint32_t nxt, uint32_t mplen, uint32_t mult, uint32_t ep, uint32_t devaddr)
+{
+}
+
+static inline void trace_usb_ehci_itd(uint32_t addr, uint32_t nxt, uint32_t mplen, uint32_t mult, uint32_t ep, uint32_t devaddr)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_itd(addr, nxt, mplen, mult, ep, devaddr);
+ }
+}
+
+#define TRACE_USB_EHCI_SITD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_sitd(uint32_t addr, uint32_t nxt, uint32_t active)
+{
+}
+
+static inline void trace_usb_ehci_sitd(uint32_t addr, uint32_t nxt, uint32_t active)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_sitd(addr, nxt, active);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_attach(uint32_t port, const char * owner, const char * device)
+{
+}
+
+static inline void trace_usb_ehci_port_attach(uint32_t port, const char * owner, const char * device)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_attach(port, owner, device);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_detach(uint32_t port, const char * owner)
+{
+}
+
+static inline void trace_usb_ehci_port_detach(uint32_t port, const char * owner)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_detach(port, owner);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_reset(uint32_t port, int enable)
+{
+}
+
+static inline void trace_usb_ehci_port_reset(uint32_t port, int enable)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_reset(port, enable);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_SUSPEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_suspend(uint32_t port)
+{
+}
+
+static inline void trace_usb_ehci_port_suspend(uint32_t port)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_suspend(port);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_WAKEUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_wakeup(uint32_t port)
+{
+}
+
+static inline void trace_usb_ehci_port_wakeup(uint32_t port)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_wakeup(port);
+ }
+}
+
+#define TRACE_USB_EHCI_PORT_RESUME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_port_resume(uint32_t port)
+{
+}
+
+static inline void trace_usb_ehci_port_resume(uint32_t port)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_port_resume(port);
+ }
+}
+
+#define TRACE_USB_EHCI_QUEUE_ACTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_queue_action(void * q, const char * action)
+{
+}
+
+static inline void trace_usb_ehci_queue_action(void * q, const char * action)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_queue_action(q, action);
+ }
+}
+
+#define TRACE_USB_EHCI_PACKET_ACTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_packet_action(void * q, void * p, const char * action)
+{
+}
+
+static inline void trace_usb_ehci_packet_action(void * q, void * p, const char * action)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_packet_action(q, p, action);
+ }
+}
+
+#define TRACE_USB_EHCI_IRQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_irq(uint32_t level, uint32_t frindex, uint32_t sts, uint32_t mask)
+{
+}
+
+static inline void trace_usb_ehci_irq(uint32_t level, uint32_t frindex, uint32_t sts, uint32_t mask)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_irq(level, frindex, sts, mask);
+ }
+}
+
+#define TRACE_USB_EHCI_GUEST_BUG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_guest_bug(const char * reason)
+{
+}
+
+static inline void trace_usb_ehci_guest_bug(const char * reason)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_guest_bug(reason);
+ }
+}
+
+#define TRACE_USB_EHCI_DOORBELL_RING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_doorbell_ring(void)
+{
+}
+
+static inline void trace_usb_ehci_doorbell_ring(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_doorbell_ring();
+ }
+}
+
+#define TRACE_USB_EHCI_DOORBELL_ACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_doorbell_ack(void)
+{
+}
+
+static inline void trace_usb_ehci_doorbell_ack(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_doorbell_ack();
+ }
+}
+
+#define TRACE_USB_EHCI_DMA_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_ehci_dma_error(void)
+{
+}
+
+static inline void trace_usb_ehci_dma_error(void)
+{
+ if (true) {
+ _nocheck__trace_usb_ehci_dma_error();
+ }
+}
+
+#define TRACE_USB_UHCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_reset(void)
+{
+}
+
+static inline void trace_usb_uhci_reset(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_reset();
+ }
+}
+
+#define TRACE_USB_UHCI_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_exit(void)
+{
+}
+
+static inline void trace_usb_uhci_exit(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_exit();
+ }
+}
+
+#define TRACE_USB_UHCI_SCHEDULE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_schedule_start(void)
+{
+}
+
+static inline void trace_usb_uhci_schedule_start(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_schedule_start();
+ }
+}
+
+#define TRACE_USB_UHCI_SCHEDULE_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_schedule_stop(void)
+{
+}
+
+static inline void trace_usb_uhci_schedule_stop(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_schedule_stop();
+ }
+}
+
+#define TRACE_USB_UHCI_FRAME_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_frame_start(uint32_t num)
+{
+}
+
+static inline void trace_usb_uhci_frame_start(uint32_t num)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_frame_start(num);
+ }
+}
+
+#define TRACE_USB_UHCI_FRAME_STOP_BANDWIDTH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_frame_stop_bandwidth(void)
+{
+}
+
+static inline void trace_usb_uhci_frame_stop_bandwidth(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_frame_stop_bandwidth();
+ }
+}
+
+#define TRACE_USB_UHCI_FRAME_LOOP_STOP_IDLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_frame_loop_stop_idle(void)
+{
+}
+
+static inline void trace_usb_uhci_frame_loop_stop_idle(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_frame_loop_stop_idle();
+ }
+}
+
+#define TRACE_USB_UHCI_FRAME_LOOP_CONTINUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_frame_loop_continue(void)
+{
+}
+
+static inline void trace_usb_uhci_frame_loop_continue(void)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_frame_loop_continue();
+ }
+}
+
+#define TRACE_USB_UHCI_MMIO_READW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_mmio_readw(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_usb_uhci_mmio_readw(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_mmio_readw(addr, val);
+ }
+}
+
+#define TRACE_USB_UHCI_MMIO_WRITEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_mmio_writew(uint32_t addr, uint32_t val)
+{
+}
+
+static inline void trace_usb_uhci_mmio_writew(uint32_t addr, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_mmio_writew(addr, val);
+ }
+}
+
+#define TRACE_USB_UHCI_QUEUE_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_queue_add(uint32_t token)
+{
+}
+
+static inline void trace_usb_uhci_queue_add(uint32_t token)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_queue_add(token);
+ }
+}
+
+#define TRACE_USB_UHCI_QUEUE_DEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_queue_del(uint32_t token, const char * reason)
+{
+}
+
+static inline void trace_usb_uhci_queue_del(uint32_t token, const char * reason)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_queue_del(token, reason);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_add(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_add(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_add(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_LINK_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_link_async(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_link_async(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_link_async(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_UNLINK_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_unlink_async(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_unlink_async(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_unlink_async(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_cancel(uint32_t token, uint32_t addr, int done)
+{
+}
+
+static inline void trace_usb_uhci_packet_cancel(uint32_t token, uint32_t addr, int done)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_cancel(token, addr, done);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_COMPLETE_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_complete_success(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_complete_success(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_complete_success(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_COMPLETE_SHORTXFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_complete_shortxfer(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_complete_shortxfer(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_complete_shortxfer(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_COMPLETE_STALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_complete_stall(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_complete_stall(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_complete_stall(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_COMPLETE_BABBLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_complete_babble(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_complete_babble(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_complete_babble(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_COMPLETE_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_complete_error(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_complete_error(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_complete_error(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_PACKET_DEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_packet_del(uint32_t token, uint32_t addr)
+{
+}
+
+static inline void trace_usb_uhci_packet_del(uint32_t token, uint32_t addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_packet_del(token, addr);
+ }
+}
+
+#define TRACE_USB_UHCI_QH_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_qh_load(uint32_t qh)
+{
+}
+
+static inline void trace_usb_uhci_qh_load(uint32_t qh)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_qh_load(qh);
+ }
+}
+
+#define TRACE_USB_UHCI_TD_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_td_load(uint32_t qh, uint32_t td, uint32_t ctrl, uint32_t token)
+{
+}
+
+static inline void trace_usb_uhci_td_load(uint32_t qh, uint32_t td, uint32_t ctrl, uint32_t token)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_td_load(qh, td, ctrl, token);
+ }
+}
+
+#define TRACE_USB_UHCI_TD_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_td_queue(uint32_t td, uint32_t ctrl, uint32_t token)
+{
+}
+
+static inline void trace_usb_uhci_td_queue(uint32_t td, uint32_t ctrl, uint32_t token)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_td_queue(td, ctrl, token);
+ }
+}
+
+#define TRACE_USB_UHCI_TD_NEXTQH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_td_nextqh(uint32_t qh, uint32_t td)
+{
+}
+
+static inline void trace_usb_uhci_td_nextqh(uint32_t qh, uint32_t td)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_td_nextqh(qh, td);
+ }
+}
+
+#define TRACE_USB_UHCI_TD_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_td_async(uint32_t qh, uint32_t td)
+{
+}
+
+static inline void trace_usb_uhci_td_async(uint32_t qh, uint32_t td)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_td_async(qh, td);
+ }
+}
+
+#define TRACE_USB_UHCI_TD_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uhci_td_complete(uint32_t qh, uint32_t td)
+{
+}
+
+static inline void trace_usb_uhci_td_complete(uint32_t qh, uint32_t td)
+{
+ if (true) {
+ _nocheck__trace_usb_uhci_td_complete(qh, td);
+ }
+}
+
+#define TRACE_USB_XHCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_reset(void)
+{
+}
+
+static inline void trace_usb_xhci_reset(void)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_reset();
+ }
+}
+
+#define TRACE_USB_XHCI_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_exit(void)
+{
+}
+
+static inline void trace_usb_xhci_exit(void)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_exit();
+ }
+}
+
+#define TRACE_USB_XHCI_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_run(void)
+{
+}
+
+static inline void trace_usb_xhci_run(void)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_run();
+ }
+}
+
+#define TRACE_USB_XHCI_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_stop(void)
+{
+}
+
+static inline void trace_usb_xhci_stop(void)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_stop();
+ }
+}
+
+#define TRACE_USB_XHCI_CAP_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_cap_read(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_cap_read(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_cap_read(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_OPER_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_oper_read(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_oper_read(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_oper_read(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_PORT_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_port_read(uint32_t port, uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_port_read(uint32_t port, uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_port_read(port, off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_RUNTIME_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_runtime_read(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_runtime_read(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_runtime_read(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_DOORBELL_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_doorbell_read(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_doorbell_read(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_doorbell_read(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_OPER_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_oper_write(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_oper_write(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_oper_write(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_PORT_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_port_write(uint32_t port, uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_port_write(uint32_t port, uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_port_write(port, off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_RUNTIME_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_runtime_write(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_runtime_write(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_runtime_write(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_DOORBELL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_doorbell_write(uint32_t off, uint32_t val)
+{
+}
+
+static inline void trace_usb_xhci_doorbell_write(uint32_t off, uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_doorbell_write(off, val);
+ }
+}
+
+#define TRACE_USB_XHCI_IRQ_INTX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_irq_intx(uint32_t level)
+{
+}
+
+static inline void trace_usb_xhci_irq_intx(uint32_t level)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_irq_intx(level);
+ }
+}
+
+#define TRACE_USB_XHCI_IRQ_MSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_irq_msi(uint32_t nr)
+{
+}
+
+static inline void trace_usb_xhci_irq_msi(uint32_t nr)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_irq_msi(nr);
+ }
+}
+
+#define TRACE_USB_XHCI_IRQ_MSIX_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_irq_msix(uint32_t nr)
+{
+}
+
+static inline void trace_usb_xhci_irq_msix(uint32_t nr)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_irq_msix(nr);
+ }
+}
+
+#define TRACE_USB_XHCI_IRQ_MSIX_USE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_irq_msix_use(uint32_t nr)
+{
+}
+
+static inline void trace_usb_xhci_irq_msix_use(uint32_t nr)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_irq_msix_use(nr);
+ }
+}
+
+#define TRACE_USB_XHCI_IRQ_MSIX_UNUSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_irq_msix_unuse(uint32_t nr)
+{
+}
+
+static inline void trace_usb_xhci_irq_msix_unuse(uint32_t nr)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_irq_msix_unuse(nr);
+ }
+}
+
+#define TRACE_USB_XHCI_QUEUE_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_queue_event(uint32_t vector, uint32_t idx, const char * trb, const char * evt, uint64_t param, uint32_t status, uint32_t control)
+{
+}
+
+static inline void trace_usb_xhci_queue_event(uint32_t vector, uint32_t idx, const char * trb, const char * evt, uint64_t param, uint32_t status, uint32_t control)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_queue_event(vector, idx, trb, evt, param, status, control);
+ }
+}
+
+#define TRACE_USB_XHCI_FETCH_TRB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_fetch_trb(uint64_t addr, const char * name, uint64_t param, uint32_t status, uint32_t control)
+{
+}
+
+static inline void trace_usb_xhci_fetch_trb(uint64_t addr, const char * name, uint64_t param, uint32_t status, uint32_t control)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_fetch_trb(addr, name, param, status, control);
+ }
+}
+
+#define TRACE_USB_XHCI_PORT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_port_reset(uint32_t port, bool warm)
+{
+}
+
+static inline void trace_usb_xhci_port_reset(uint32_t port, bool warm)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_port_reset(port, warm);
+ }
+}
+
+#define TRACE_USB_XHCI_PORT_LINK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_port_link(uint32_t port, uint32_t pls)
+{
+}
+
+static inline void trace_usb_xhci_port_link(uint32_t port, uint32_t pls)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_port_link(port, pls);
+ }
+}
+
+#define TRACE_USB_XHCI_PORT_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_port_notify(uint32_t port, uint32_t pls)
+{
+}
+
+static inline void trace_usb_xhci_port_notify(uint32_t port, uint32_t pls)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_port_notify(port, pls);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_enable(uint32_t slotid)
+{
+}
+
+static inline void trace_usb_xhci_slot_enable(uint32_t slotid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_enable(slotid);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_disable(uint32_t slotid)
+{
+}
+
+static inline void trace_usb_xhci_slot_disable(uint32_t slotid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_disable(slotid);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_ADDRESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_address(uint32_t slotid, const char * port)
+{
+}
+
+static inline void trace_usb_xhci_slot_address(uint32_t slotid, const char * port)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_address(slotid, port);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_CONFIGURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_configure(uint32_t slotid)
+{
+}
+
+static inline void trace_usb_xhci_slot_configure(uint32_t slotid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_configure(slotid);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_EVALUATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_evaluate(uint32_t slotid)
+{
+}
+
+static inline void trace_usb_xhci_slot_evaluate(uint32_t slotid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_evaluate(slotid);
+ }
+}
+
+#define TRACE_USB_XHCI_SLOT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_slot_reset(uint32_t slotid)
+{
+}
+
+static inline void trace_usb_xhci_slot_reset(uint32_t slotid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_slot_reset(slotid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_enable(uint32_t slotid, uint32_t epid)
+{
+}
+
+static inline void trace_usb_xhci_ep_enable(uint32_t slotid, uint32_t epid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_enable(slotid, epid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_disable(uint32_t slotid, uint32_t epid)
+{
+}
+
+static inline void trace_usb_xhci_ep_disable(uint32_t slotid, uint32_t epid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_disable(slotid, epid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_SET_DEQUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_set_dequeue(uint32_t slotid, uint32_t epid, uint32_t streamid, uint64_t param)
+{
+}
+
+static inline void trace_usb_xhci_ep_set_dequeue(uint32_t slotid, uint32_t epid, uint32_t streamid, uint64_t param)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_set_dequeue(slotid, epid, streamid, param);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_KICK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_kick(uint32_t slotid, uint32_t epid, uint32_t streamid)
+{
+}
+
+static inline void trace_usb_xhci_ep_kick(uint32_t slotid, uint32_t epid, uint32_t streamid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_kick(slotid, epid, streamid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_stop(uint32_t slotid, uint32_t epid)
+{
+}
+
+static inline void trace_usb_xhci_ep_stop(uint32_t slotid, uint32_t epid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_stop(slotid, epid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_reset(uint32_t slotid, uint32_t epid)
+{
+}
+
+static inline void trace_usb_xhci_ep_reset(uint32_t slotid, uint32_t epid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_reset(slotid, epid);
+ }
+}
+
+#define TRACE_USB_XHCI_EP_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_ep_state(uint32_t slotid, uint32_t epid, const char * os, const char * ns)
+{
+}
+
+static inline void trace_usb_xhci_ep_state(uint32_t slotid, uint32_t epid, const char * os, const char * ns)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_ep_state(slotid, epid, os, ns);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_start(void * xfer, uint32_t slotid, uint32_t epid, uint32_t streamid)
+{
+}
+
+static inline void trace_usb_xhci_xfer_start(void * xfer, uint32_t slotid, uint32_t epid, uint32_t streamid)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_start(xfer, slotid, epid, streamid);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_async(void * xfer)
+{
+}
+
+static inline void trace_usb_xhci_xfer_async(void * xfer)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_async(xfer);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_NAK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_nak(void * xfer)
+{
+}
+
+static inline void trace_usb_xhci_xfer_nak(void * xfer)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_nak(xfer);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_RETRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_retry(void * xfer)
+{
+}
+
+static inline void trace_usb_xhci_xfer_retry(void * xfer)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_retry(xfer);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_success(void * xfer, uint32_t bytes)
+{
+}
+
+static inline void trace_usb_xhci_xfer_success(void * xfer, uint32_t bytes)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_success(xfer, bytes);
+ }
+}
+
+#define TRACE_USB_XHCI_XFER_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_xfer_error(void * xfer, uint32_t ret)
+{
+}
+
+static inline void trace_usb_xhci_xfer_error(void * xfer, uint32_t ret)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_xfer_error(xfer, ret);
+ }
+}
+
+#define TRACE_USB_XHCI_UNIMPLEMENTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_unimplemented(const char * item, int nr)
+{
+}
+
+static inline void trace_usb_xhci_unimplemented(const char * item, int nr)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_unimplemented(item, nr);
+ }
+}
+
+#define TRACE_USB_XHCI_ENFORCED_LIMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_xhci_enforced_limit(const char * item)
+{
+}
+
+static inline void trace_usb_xhci_enforced_limit(const char * item)
+{
+ if (true) {
+ _nocheck__trace_usb_xhci_enforced_limit(item);
+ }
+}
+
+#define TRACE_USB_DESC_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_device(int addr, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_device(int addr, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_device(addr, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_DEVICE_QUALIFIER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_device_qualifier(int addr, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_device_qualifier(int addr, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_device_qualifier(addr, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_config(int addr, int index, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_config(int addr, int index, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_config(addr, index, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_OTHER_SPEED_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_other_speed_config(int addr, int index, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_other_speed_config(int addr, int index, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_other_speed_config(addr, index, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_STRING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_string(int addr, int index, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_string(int addr, int index, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_string(addr, index, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_BOS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_bos(int addr, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_bos(int addr, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_bos(addr, len, ret);
+ }
+}
+
+#define TRACE_USB_DESC_MSOS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_desc_msos(int addr, int index, int len, int ret)
+{
+}
+
+static inline void trace_usb_desc_msos(int addr, int index, int len, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_desc_msos(addr, index, len, ret);
+ }
+}
+
+#define TRACE_USB_SET_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_set_addr(int addr)
+{
+}
+
+static inline void trace_usb_set_addr(int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_set_addr(addr);
+ }
+}
+
+#define TRACE_USB_SET_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_set_config(int addr, int config, int ret)
+{
+}
+
+static inline void trace_usb_set_config(int addr, int config, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_set_config(addr, config, ret);
+ }
+}
+
+#define TRACE_USB_SET_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_set_interface(int addr, int iface, int alt, int ret)
+{
+}
+
+static inline void trace_usb_set_interface(int addr, int iface, int alt, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_set_interface(addr, iface, alt, ret);
+ }
+}
+
+#define TRACE_USB_CLEAR_DEVICE_FEATURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_clear_device_feature(int addr, int feature, int ret)
+{
+}
+
+static inline void trace_usb_clear_device_feature(int addr, int feature, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_clear_device_feature(addr, feature, ret);
+ }
+}
+
+#define TRACE_USB_SET_DEVICE_FEATURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_set_device_feature(int addr, int feature, int ret)
+{
+}
+
+static inline void trace_usb_set_device_feature(int addr, int feature, int ret)
+{
+ if (true) {
+ _nocheck__trace_usb_set_device_feature(addr, feature, ret);
+ }
+}
+
+#define TRACE_USB_HUB_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_reset(int addr)
+{
+}
+
+static inline void trace_usb_hub_reset(int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_reset(addr);
+ }
+}
+
+#define TRACE_USB_HUB_CONTROL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_control(int addr, int request, int value, int index, int length)
+{
+}
+
+static inline void trace_usb_hub_control(int addr, int request, int value, int index, int length)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_control(addr, request, value, index, length);
+ }
+}
+
+#define TRACE_USB_HUB_GET_PORT_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_get_port_status(int addr, int nr, int status, int changed)
+{
+}
+
+static inline void trace_usb_hub_get_port_status(int addr, int nr, int status, int changed)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_get_port_status(addr, nr, status, changed);
+ }
+}
+
+#define TRACE_USB_HUB_SET_PORT_FEATURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_set_port_feature(int addr, int nr, const char * f)
+{
+}
+
+static inline void trace_usb_hub_set_port_feature(int addr, int nr, const char * f)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_set_port_feature(addr, nr, f);
+ }
+}
+
+#define TRACE_USB_HUB_CLEAR_PORT_FEATURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_clear_port_feature(int addr, int nr, const char * f)
+{
+}
+
+static inline void trace_usb_hub_clear_port_feature(int addr, int nr, const char * f)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_clear_port_feature(addr, nr, f);
+ }
+}
+
+#define TRACE_USB_HUB_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_attach(int addr, int nr)
+{
+}
+
+static inline void trace_usb_hub_attach(int addr, int nr)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_attach(addr, nr);
+ }
+}
+
+#define TRACE_USB_HUB_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_detach(int addr, int nr)
+{
+}
+
+static inline void trace_usb_hub_detach(int addr, int nr)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_detach(addr, nr);
+ }
+}
+
+#define TRACE_USB_HUB_STATUS_REPORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_hub_status_report(int addr, int status)
+{
+}
+
+static inline void trace_usb_hub_status_report(int addr, int status)
+{
+ if (true) {
+ _nocheck__trace_usb_hub_status_report(addr, status);
+ }
+}
+
+#define TRACE_USB_UAS_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_reset(int addr)
+{
+}
+
+static inline void trace_usb_uas_reset(int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_reset(addr);
+ }
+}
+
+#define TRACE_USB_UAS_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_command(int addr, uint16_t tag, int lun, uint32_t lun64_1, uint32_t lun64_2)
+{
+}
+
+static inline void trace_usb_uas_command(int addr, uint16_t tag, int lun, uint32_t lun64_1, uint32_t lun64_2)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_command(addr, tag, lun, lun64_1, lun64_2);
+ }
+}
+
+#define TRACE_USB_UAS_RESPONSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_response(int addr, uint16_t tag, uint8_t code)
+{
+}
+
+static inline void trace_usb_uas_response(int addr, uint16_t tag, uint8_t code)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_response(addr, tag, code);
+ }
+}
+
+#define TRACE_USB_UAS_SENSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_sense(int addr, uint16_t tag, uint8_t status)
+{
+}
+
+static inline void trace_usb_uas_sense(int addr, uint16_t tag, uint8_t status)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_sense(addr, tag, status);
+ }
+}
+
+#define TRACE_USB_UAS_READ_READY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_read_ready(int addr, uint16_t tag)
+{
+}
+
+static inline void trace_usb_uas_read_ready(int addr, uint16_t tag)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_read_ready(addr, tag);
+ }
+}
+
+#define TRACE_USB_UAS_WRITE_READY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_write_ready(int addr, uint16_t tag)
+{
+}
+
+static inline void trace_usb_uas_write_ready(int addr, uint16_t tag)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_write_ready(addr, tag);
+ }
+}
+
+#define TRACE_USB_UAS_XFER_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_xfer_data(int addr, uint16_t tag, uint32_t copy, uint32_t uoff, uint32_t usize, uint32_t soff, uint32_t ssize)
+{
+}
+
+static inline void trace_usb_uas_xfer_data(int addr, uint16_t tag, uint32_t copy, uint32_t uoff, uint32_t usize, uint32_t soff, uint32_t ssize)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_xfer_data(addr, tag, copy, uoff, usize, soff, ssize);
+ }
+}
+
+#define TRACE_USB_UAS_SCSI_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_scsi_data(int addr, uint16_t tag, uint32_t bytes)
+{
+}
+
+static inline void trace_usb_uas_scsi_data(int addr, uint16_t tag, uint32_t bytes)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_scsi_data(addr, tag, bytes);
+ }
+}
+
+#define TRACE_USB_UAS_SCSI_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_scsi_complete(int addr, uint16_t tag, uint32_t status, uint32_t resid)
+{
+}
+
+static inline void trace_usb_uas_scsi_complete(int addr, uint16_t tag, uint32_t status, uint32_t resid)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_scsi_complete(addr, tag, status, resid);
+ }
+}
+
+#define TRACE_USB_UAS_TMF_ABORT_TASK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_tmf_abort_task(int addr, uint16_t tag, uint16_t task_tag)
+{
+}
+
+static inline void trace_usb_uas_tmf_abort_task(int addr, uint16_t tag, uint16_t task_tag)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_tmf_abort_task(addr, tag, task_tag);
+ }
+}
+
+#define TRACE_USB_UAS_TMF_LOGICAL_UNIT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_tmf_logical_unit_reset(int addr, uint16_t tag, int lun)
+{
+}
+
+static inline void trace_usb_uas_tmf_logical_unit_reset(int addr, uint16_t tag, int lun)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_tmf_logical_unit_reset(addr, tag, lun);
+ }
+}
+
+#define TRACE_USB_UAS_TMF_UNSUPPORTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_uas_tmf_unsupported(int addr, uint16_t tag, uint32_t function)
+{
+}
+
+static inline void trace_usb_uas_tmf_unsupported(int addr, uint16_t tag, uint32_t function)
+{
+ if (true) {
+ _nocheck__trace_usb_uas_tmf_unsupported(addr, tag, function);
+ }
+}
+
+#define TRACE_USB_MTP_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_reset(int addr)
+{
+}
+
+static inline void trace_usb_mtp_reset(int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_reset(addr);
+ }
+}
+
+#define TRACE_USB_MTP_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_command(int dev, uint16_t code, uint32_t trans, uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4)
+{
+}
+
+static inline void trace_usb_mtp_command(int dev, uint16_t code, uint32_t trans, uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_command(dev, code, trans, arg0, arg1, arg2, arg3, arg4);
+ }
+}
+
+#define TRACE_USB_MTP_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_success(int dev, uint32_t trans, uint32_t arg0, uint32_t arg1)
+{
+}
+
+static inline void trace_usb_mtp_success(int dev, uint32_t trans, uint32_t arg0, uint32_t arg1)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_success(dev, trans, arg0, arg1);
+ }
+}
+
+#define TRACE_USB_MTP_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_error(int dev, uint16_t code, uint32_t trans, uint32_t arg0, uint32_t arg1)
+{
+}
+
+static inline void trace_usb_mtp_error(int dev, uint16_t code, uint32_t trans, uint32_t arg0, uint32_t arg1)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_error(dev, code, trans, arg0, arg1);
+ }
+}
+
+#define TRACE_USB_MTP_DATA_IN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_data_in(int dev, uint32_t trans, uint32_t len)
+{
+}
+
+static inline void trace_usb_mtp_data_in(int dev, uint32_t trans, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_data_in(dev, trans, len);
+ }
+}
+
+#define TRACE_USB_MTP_XFER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_xfer(int dev, uint32_t ep, uint32_t dlen, uint32_t plen)
+{
+}
+
+static inline void trace_usb_mtp_xfer(int dev, uint32_t ep, uint32_t dlen, uint32_t plen)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_xfer(dev, ep, dlen, plen);
+ }
+}
+
+#define TRACE_USB_MTP_NAK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_nak(int dev, uint32_t ep)
+{
+}
+
+static inline void trace_usb_mtp_nak(int dev, uint32_t ep)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_nak(dev, ep);
+ }
+}
+
+#define TRACE_USB_MTP_STALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_stall(int dev, const char * reason)
+{
+}
+
+static inline void trace_usb_mtp_stall(int dev, const char * reason)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_stall(dev, reason);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_DEVICE_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_device_info(int dev)
+{
+}
+
+static inline void trace_usb_mtp_op_get_device_info(int dev)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_device_info(dev);
+ }
+}
+
+#define TRACE_USB_MTP_OP_OPEN_SESSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_open_session(int dev)
+{
+}
+
+static inline void trace_usb_mtp_op_open_session(int dev)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_open_session(dev);
+ }
+}
+
+#define TRACE_USB_MTP_OP_CLOSE_SESSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_close_session(int dev)
+{
+}
+
+static inline void trace_usb_mtp_op_close_session(int dev)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_close_session(dev);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_STORAGE_IDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_storage_ids(int dev)
+{
+}
+
+static inline void trace_usb_mtp_op_get_storage_ids(int dev)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_storage_ids(dev);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_STORAGE_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_storage_info(int dev)
+{
+}
+
+static inline void trace_usb_mtp_op_get_storage_info(int dev)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_storage_info(dev);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_NUM_OBJECTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_num_objects(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_op_get_num_objects(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_num_objects(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_OBJECT_HANDLES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_object_handles(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_op_get_object_handles(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_object_handles(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_OBJECT_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_object_info(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_op_get_object_info(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_object_info(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_OBJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_object(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_op_get_object(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_object(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_OP_GET_PARTIAL_OBJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_get_partial_object(int dev, uint32_t handle, const char * path, uint32_t offset, uint32_t length)
+{
+}
+
+static inline void trace_usb_mtp_op_get_partial_object(int dev, uint32_t handle, const char * path, uint32_t offset, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_get_partial_object(dev, handle, path, offset, length);
+ }
+}
+
+#define TRACE_USB_MTP_OP_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_op_unknown(int dev, uint32_t code)
+{
+}
+
+static inline void trace_usb_mtp_op_unknown(int dev, uint32_t code)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_op_unknown(dev, code);
+ }
+}
+
+#define TRACE_USB_MTP_OBJECT_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_object_alloc(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_object_alloc(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_object_alloc(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_OBJECT_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_object_free(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_object_free(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_object_free(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_ADD_CHILD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_add_child(int dev, uint32_t handle, const char * path)
+{
+}
+
+static inline void trace_usb_mtp_add_child(int dev, uint32_t handle, const char * path)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_add_child(dev, handle, path);
+ }
+}
+
+#define TRACE_USB_MTP_INOTIFY_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_mtp_inotify_event(int dev, const char * path, uint32_t mask, const char * s)
+{
+}
+
+static inline void trace_usb_mtp_inotify_event(int dev, const char * path, uint32_t mask, const char * s)
+{
+ if (true) {
+ _nocheck__trace_usb_mtp_inotify_event(dev, path, mask, s);
+ }
+}
+
+#define TRACE_USB_HOST_OPEN_STARTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_open_started(int bus, int addr)
+{
+}
+
+static inline void trace_usb_host_open_started(int bus, int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_host_open_started(bus, addr);
+ }
+}
+
+#define TRACE_USB_HOST_OPEN_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_open_success(int bus, int addr)
+{
+}
+
+static inline void trace_usb_host_open_success(int bus, int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_host_open_success(bus, addr);
+ }
+}
+
+#define TRACE_USB_HOST_OPEN_FAILURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_open_failure(int bus, int addr)
+{
+}
+
+static inline void trace_usb_host_open_failure(int bus, int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_host_open_failure(bus, addr);
+ }
+}
+
+#define TRACE_USB_HOST_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_close(int bus, int addr)
+{
+}
+
+static inline void trace_usb_host_close(int bus, int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_host_close(bus, addr);
+ }
+}
+
+#define TRACE_USB_HOST_ATTACH_KERNEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_attach_kernel(int bus, int addr, int interface)
+{
+}
+
+static inline void trace_usb_host_attach_kernel(int bus, int addr, int interface)
+{
+ if (true) {
+ _nocheck__trace_usb_host_attach_kernel(bus, addr, interface);
+ }
+}
+
+#define TRACE_USB_HOST_DETACH_KERNEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_detach_kernel(int bus, int addr, int interface)
+{
+}
+
+static inline void trace_usb_host_detach_kernel(int bus, int addr, int interface)
+{
+ if (true) {
+ _nocheck__trace_usb_host_detach_kernel(bus, addr, interface);
+ }
+}
+
+#define TRACE_USB_HOST_SET_ADDRESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_set_address(int bus, int addr, int config)
+{
+}
+
+static inline void trace_usb_host_set_address(int bus, int addr, int config)
+{
+ if (true) {
+ _nocheck__trace_usb_host_set_address(bus, addr, config);
+ }
+}
+
+#define TRACE_USB_HOST_SET_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_set_config(int bus, int addr, int config)
+{
+}
+
+static inline void trace_usb_host_set_config(int bus, int addr, int config)
+{
+ if (true) {
+ _nocheck__trace_usb_host_set_config(bus, addr, config);
+ }
+}
+
+#define TRACE_USB_HOST_SET_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_set_interface(int bus, int addr, int interface, int alt)
+{
+}
+
+static inline void trace_usb_host_set_interface(int bus, int addr, int interface, int alt)
+{
+ if (true) {
+ _nocheck__trace_usb_host_set_interface(bus, addr, interface, alt);
+ }
+}
+
+#define TRACE_USB_HOST_CLAIM_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_claim_interface(int bus, int addr, int config, int interface)
+{
+}
+
+static inline void trace_usb_host_claim_interface(int bus, int addr, int config, int interface)
+{
+ if (true) {
+ _nocheck__trace_usb_host_claim_interface(bus, addr, config, interface);
+ }
+}
+
+#define TRACE_USB_HOST_RELEASE_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_release_interface(int bus, int addr, int interface)
+{
+}
+
+static inline void trace_usb_host_release_interface(int bus, int addr, int interface)
+{
+ if (true) {
+ _nocheck__trace_usb_host_release_interface(bus, addr, interface);
+ }
+}
+
+#define TRACE_USB_HOST_REQ_CONTROL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_req_control(int bus, int addr, void * p, int req, int value, int index)
+{
+}
+
+static inline void trace_usb_host_req_control(int bus, int addr, void * p, int req, int value, int index)
+{
+ if (true) {
+ _nocheck__trace_usb_host_req_control(bus, addr, p, req, value, index);
+ }
+}
+
+#define TRACE_USB_HOST_REQ_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_req_data(int bus, int addr, void * p, int in, int ep, int size)
+{
+}
+
+static inline void trace_usb_host_req_data(int bus, int addr, void * p, int in, int ep, int size)
+{
+ if (true) {
+ _nocheck__trace_usb_host_req_data(bus, addr, p, in, ep, size);
+ }
+}
+
+#define TRACE_USB_HOST_REQ_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_req_complete(int bus, int addr, void * p, int status, int length)
+{
+}
+
+static inline void trace_usb_host_req_complete(int bus, int addr, void * p, int status, int length)
+{
+ if (true) {
+ _nocheck__trace_usb_host_req_complete(bus, addr, p, status, length);
+ }
+}
+
+#define TRACE_USB_HOST_REQ_EMULATED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_req_emulated(int bus, int addr, void * p, int status)
+{
+}
+
+static inline void trace_usb_host_req_emulated(int bus, int addr, void * p, int status)
+{
+ if (true) {
+ _nocheck__trace_usb_host_req_emulated(bus, addr, p, status);
+ }
+}
+
+#define TRACE_USB_HOST_REQ_CANCELED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_req_canceled(int bus, int addr, void * p)
+{
+}
+
+static inline void trace_usb_host_req_canceled(int bus, int addr, void * p)
+{
+ if (true) {
+ _nocheck__trace_usb_host_req_canceled(bus, addr, p);
+ }
+}
+
+#define TRACE_USB_HOST_ISO_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_iso_start(int bus, int addr, int ep)
+{
+}
+
+static inline void trace_usb_host_iso_start(int bus, int addr, int ep)
+{
+ if (true) {
+ _nocheck__trace_usb_host_iso_start(bus, addr, ep);
+ }
+}
+
+#define TRACE_USB_HOST_ISO_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_iso_stop(int bus, int addr, int ep)
+{
+}
+
+static inline void trace_usb_host_iso_stop(int bus, int addr, int ep)
+{
+ if (true) {
+ _nocheck__trace_usb_host_iso_stop(bus, addr, ep);
+ }
+}
+
+#define TRACE_USB_HOST_ISO_OUT_OF_BUFS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_iso_out_of_bufs(int bus, int addr, int ep)
+{
+}
+
+static inline void trace_usb_host_iso_out_of_bufs(int bus, int addr, int ep)
+{
+ if (true) {
+ _nocheck__trace_usb_host_iso_out_of_bufs(bus, addr, ep);
+ }
+}
+
+#define TRACE_USB_HOST_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_reset(int bus, int addr)
+{
+}
+
+static inline void trace_usb_host_reset(int bus, int addr)
+{
+ if (true) {
+ _nocheck__trace_usb_host_reset(bus, addr);
+ }
+}
+
+#define TRACE_USB_HOST_AUTO_SCAN_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_auto_scan_enabled(void)
+{
+}
+
+static inline void trace_usb_host_auto_scan_enabled(void)
+{
+ if (true) {
+ _nocheck__trace_usb_host_auto_scan_enabled();
+ }
+}
+
+#define TRACE_USB_HOST_AUTO_SCAN_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_auto_scan_disabled(void)
+{
+}
+
+static inline void trace_usb_host_auto_scan_disabled(void)
+{
+ if (true) {
+ _nocheck__trace_usb_host_auto_scan_disabled();
+ }
+}
+
+#define TRACE_USB_HOST_PARSE_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_parse_config(int bus, int addr, int value, int active)
+{
+}
+
+static inline void trace_usb_host_parse_config(int bus, int addr, int value, int active)
+{
+ if (true) {
+ _nocheck__trace_usb_host_parse_config(bus, addr, value, active);
+ }
+}
+
+#define TRACE_USB_HOST_PARSE_INTERFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_parse_interface(int bus, int addr, int num, int alt, int active)
+{
+}
+
+static inline void trace_usb_host_parse_interface(int bus, int addr, int num, int alt, int active)
+{
+ if (true) {
+ _nocheck__trace_usb_host_parse_interface(bus, addr, num, alt, active);
+ }
+}
+
+#define TRACE_USB_HOST_PARSE_ENDPOINT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_parse_endpoint(int bus, int addr, int ep, const char * dir, const char * type, int active)
+{
+}
+
+static inline void trace_usb_host_parse_endpoint(int bus, int addr, int ep, const char * dir, const char * type, int active)
+{
+ if (true) {
+ _nocheck__trace_usb_host_parse_endpoint(bus, addr, ep, dir, type, active);
+ }
+}
+
+#define TRACE_USB_HOST_PARSE_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_usb_host_parse_error(int bus, int addr, const char * errmsg)
+{
+}
+
+static inline void trace_usb_host_parse_error(int bus, int addr, const char * errmsg)
+{
+ if (true) {
+ _nocheck__trace_usb_host_parse_error(bus, addr, errmsg);
+ }
+}
+#endif /* TRACE_HW_USB_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/vfio/trace.c b/qemu2-auto-generated/hw/vfio/trace.c
new file mode 100644
index 0000000000..8ff6894d75
--- /dev/null
+++ b/qemu2-auto-generated/hw/vfio/trace.c
@@ -0,0 +1,1067 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VFIO_INTX_INTERRUPT_DSTATE;
+uint16_t _TRACE_VFIO_INTX_EOI_DSTATE;
+uint16_t _TRACE_VFIO_INTX_ENABLE_KVM_DSTATE;
+uint16_t _TRACE_VFIO_INTX_DISABLE_KVM_DSTATE;
+uint16_t _TRACE_VFIO_INTX_UPDATE_DSTATE;
+uint16_t _TRACE_VFIO_INTX_ENABLE_DSTATE;
+uint16_t _TRACE_VFIO_INTX_DISABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSI_INTERRUPT_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_VECTOR_DO_USE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_VECTOR_RELEASE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_ENABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_PBA_DISABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_PBA_ENABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_DISABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_FIXUP_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_RELO_COST_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_RELO_DSTATE;
+uint16_t _TRACE_VFIO_MSI_ENABLE_DSTATE;
+uint16_t _TRACE_VFIO_MSI_DISABLE_DSTATE;
+uint16_t _TRACE_VFIO_PCI_LOAD_ROM_DSTATE;
+uint16_t _TRACE_VFIO_ROM_READ_DSTATE;
+uint16_t _TRACE_VFIO_PCI_SIZE_ROM_DSTATE;
+uint16_t _TRACE_VFIO_VGA_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_VGA_READ_DSTATE;
+uint16_t _TRACE_VFIO_PCI_READ_CONFIG_DSTATE;
+uint16_t _TRACE_VFIO_PCI_WRITE_CONFIG_DSTATE;
+uint16_t _TRACE_VFIO_MSI_SETUP_DSTATE;
+uint16_t _TRACE_VFIO_MSIX_EARLY_SETUP_DSTATE;
+uint16_t _TRACE_VFIO_CHECK_PCIE_FLR_DSTATE;
+uint16_t _TRACE_VFIO_CHECK_PM_RESET_DSTATE;
+uint16_t _TRACE_VFIO_CHECK_AF_FLR_DSTATE;
+uint16_t _TRACE_VFIO_PCI_HOT_RESET_DSTATE;
+uint16_t _TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_DSTATE;
+uint16_t _TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_DSTATE;
+uint16_t _TRACE_VFIO_PCI_HOT_RESET_RESULT_DSTATE;
+uint16_t _TRACE_VFIO_POPULATE_DEVICE_CONFIG_DSTATE;
+uint16_t _TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_DSTATE;
+uint16_t _TRACE_VFIO_REALIZE_DSTATE;
+uint16_t _TRACE_VFIO_ADD_EXT_CAP_DROPPED_DSTATE;
+uint16_t _TRACE_VFIO_PCI_RESET_DSTATE;
+uint16_t _TRACE_VFIO_PCI_RESET_FLR_DSTATE;
+uint16_t _TRACE_VFIO_PCI_RESET_PM_DSTATE;
+uint16_t _TRACE_VFIO_PCI_EMULATED_VENDOR_ID_DSTATE;
+uint16_t _TRACE_VFIO_PCI_EMULATED_DEVICE_ID_DSTATE;
+uint16_t _TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_DSTATE;
+uint16_t _TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ROM_BLACKLISTED_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_3C3_READ_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_3C3_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_RTL8168_PROBE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_DSTATE;
+uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DSTATE;
+uint16_t _TRACE_VFIO_PCI_IGD_BAR4_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_PCI_IGD_BDSM_ENABLED_DSTATE;
+uint16_t _TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_DSTATE;
+uint16_t _TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_DSTATE;
+uint16_t _TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_DSTATE;
+uint16_t _TRACE_VFIO_REGION_WRITE_DSTATE;
+uint16_t _TRACE_VFIO_REGION_READ_DSTATE;
+uint16_t _TRACE_VFIO_IOMMU_MAP_NOTIFY_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_SKIP_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_RAM_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_DEL_SKIP_DSTATE;
+uint16_t _TRACE_VFIO_LISTENER_REGION_DEL_DSTATE;
+uint16_t _TRACE_VFIO_DISCONNECT_CONTAINER_DSTATE;
+uint16_t _TRACE_VFIO_PUT_GROUP_DSTATE;
+uint16_t _TRACE_VFIO_GET_DEVICE_DSTATE;
+uint16_t _TRACE_VFIO_PUT_BASE_DEVICE_DSTATE;
+uint16_t _TRACE_VFIO_REGION_SETUP_DSTATE;
+uint16_t _TRACE_VFIO_REGION_MMAP_FAULT_DSTATE;
+uint16_t _TRACE_VFIO_REGION_MMAP_DSTATE;
+uint16_t _TRACE_VFIO_REGION_EXIT_DSTATE;
+uint16_t _TRACE_VFIO_REGION_FINALIZE_DSTATE;
+uint16_t _TRACE_VFIO_REGION_MMAPS_SET_ENABLED_DSTATE;
+uint16_t _TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_DSTATE;
+uint16_t _TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_DSTATE;
+uint16_t _TRACE_VFIO_GET_DEV_REGION_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_REALIZE_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_EOI_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_INTP_INTERRUPT_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_DSTATE;
+uint16_t _TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_DSTATE;
+uint16_t _TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_DSTATE;
+uint16_t _TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_DSTATE;
+uint16_t _TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_DSTATE;
+uint16_t _TRACE_VFIO_PREREG_REGISTER_DSTATE;
+uint16_t _TRACE_VFIO_PREREG_UNREGISTER_DSTATE;
+uint16_t _TRACE_VFIO_SPAPR_CREATE_WINDOW_DSTATE;
+uint16_t _TRACE_VFIO_SPAPR_REMOVE_WINDOW_DSTATE;
+uint16_t _TRACE_VFIO_SPAPR_GROUP_ATTACH_DSTATE;
+TraceEvent _TRACE_VFIO_INTX_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_interrupt",
+ .sstate = TRACE_VFIO_INTX_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_EOI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_eoi",
+ .sstate = TRACE_VFIO_INTX_EOI_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_EOI_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_ENABLE_KVM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_enable_kvm",
+ .sstate = TRACE_VFIO_INTX_ENABLE_KVM_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_ENABLE_KVM_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_DISABLE_KVM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_disable_kvm",
+ .sstate = TRACE_VFIO_INTX_DISABLE_KVM_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_DISABLE_KVM_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_update",
+ .sstate = TRACE_VFIO_INTX_UPDATE_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_UPDATE_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_enable",
+ .sstate = TRACE_VFIO_INTX_ENABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTX_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intx_disable",
+ .sstate = TRACE_VFIO_INTX_DISABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_INTX_DISABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSI_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msi_interrupt",
+ .sstate = TRACE_VFIO_MSI_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_VFIO_MSI_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_VECTOR_DO_USE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_vector_do_use",
+ .sstate = TRACE_VFIO_MSIX_VECTOR_DO_USE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_VECTOR_DO_USE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_VECTOR_RELEASE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_vector_release",
+ .sstate = TRACE_VFIO_MSIX_VECTOR_RELEASE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_VECTOR_RELEASE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_enable",
+ .sstate = TRACE_VFIO_MSIX_ENABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_PBA_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_pba_disable",
+ .sstate = TRACE_VFIO_MSIX_PBA_DISABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_PBA_DISABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_PBA_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_pba_enable",
+ .sstate = TRACE_VFIO_MSIX_PBA_ENABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_PBA_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_disable",
+ .sstate = TRACE_VFIO_MSIX_DISABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_DISABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_FIXUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_fixup",
+ .sstate = TRACE_VFIO_MSIX_FIXUP_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_FIXUP_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_RELO_COST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_relo_cost",
+ .sstate = TRACE_VFIO_MSIX_RELO_COST_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_RELO_COST_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_RELO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_relo",
+ .sstate = TRACE_VFIO_MSIX_RELO_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_RELO_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSI_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msi_enable",
+ .sstate = TRACE_VFIO_MSI_ENABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSI_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSI_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msi_disable",
+ .sstate = TRACE_VFIO_MSI_DISABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_MSI_DISABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_LOAD_ROM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_load_rom",
+ .sstate = TRACE_VFIO_PCI_LOAD_ROM_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_LOAD_ROM_DSTATE
+};
+TraceEvent _TRACE_VFIO_ROM_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_rom_read",
+ .sstate = TRACE_VFIO_ROM_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_ROM_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_SIZE_ROM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_size_rom",
+ .sstate = TRACE_VFIO_PCI_SIZE_ROM_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_SIZE_ROM_DSTATE
+};
+TraceEvent _TRACE_VFIO_VGA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_vga_write",
+ .sstate = TRACE_VFIO_VGA_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_VGA_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_VGA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_vga_read",
+ .sstate = TRACE_VFIO_VGA_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_VGA_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_READ_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_read_config",
+ .sstate = TRACE_VFIO_PCI_READ_CONFIG_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_READ_CONFIG_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_WRITE_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_write_config",
+ .sstate = TRACE_VFIO_PCI_WRITE_CONFIG_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_WRITE_CONFIG_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSI_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msi_setup",
+ .sstate = TRACE_VFIO_MSI_SETUP_ENABLED,
+ .dstate = &_TRACE_VFIO_MSI_SETUP_DSTATE
+};
+TraceEvent _TRACE_VFIO_MSIX_EARLY_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_msix_early_setup",
+ .sstate = TRACE_VFIO_MSIX_EARLY_SETUP_ENABLED,
+ .dstate = &_TRACE_VFIO_MSIX_EARLY_SETUP_DSTATE
+};
+TraceEvent _TRACE_VFIO_CHECK_PCIE_FLR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_check_pcie_flr",
+ .sstate = TRACE_VFIO_CHECK_PCIE_FLR_ENABLED,
+ .dstate = &_TRACE_VFIO_CHECK_PCIE_FLR_DSTATE
+};
+TraceEvent _TRACE_VFIO_CHECK_PM_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_check_pm_reset",
+ .sstate = TRACE_VFIO_CHECK_PM_RESET_ENABLED,
+ .dstate = &_TRACE_VFIO_CHECK_PM_RESET_DSTATE
+};
+TraceEvent _TRACE_VFIO_CHECK_AF_FLR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_check_af_flr",
+ .sstate = TRACE_VFIO_CHECK_AF_FLR_ENABLED,
+ .dstate = &_TRACE_VFIO_CHECK_AF_FLR_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_HOT_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_hot_reset",
+ .sstate = TRACE_VFIO_PCI_HOT_RESET_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_HOT_RESET_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_hot_reset_has_dep_devices",
+ .sstate = TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_hot_reset_dep_devices",
+ .sstate = TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_HOT_RESET_RESULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_hot_reset_result",
+ .sstate = TRACE_VFIO_PCI_HOT_RESET_RESULT_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_HOT_RESET_RESULT_DSTATE
+};
+TraceEvent _TRACE_VFIO_POPULATE_DEVICE_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_populate_device_config",
+ .sstate = TRACE_VFIO_POPULATE_DEVICE_CONFIG_ENABLED,
+ .dstate = &_TRACE_VFIO_POPULATE_DEVICE_CONFIG_DSTATE
+};
+TraceEvent _TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_populate_device_get_irq_info_failure",
+ .sstate = TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_ENABLED,
+ .dstate = &_TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_DSTATE
+};
+TraceEvent _TRACE_VFIO_REALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_realize",
+ .sstate = TRACE_VFIO_REALIZE_ENABLED,
+ .dstate = &_TRACE_VFIO_REALIZE_DSTATE
+};
+TraceEvent _TRACE_VFIO_ADD_EXT_CAP_DROPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_add_ext_cap_dropped",
+ .sstate = TRACE_VFIO_ADD_EXT_CAP_DROPPED_ENABLED,
+ .dstate = &_TRACE_VFIO_ADD_EXT_CAP_DROPPED_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_reset",
+ .sstate = TRACE_VFIO_PCI_RESET_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_RESET_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_RESET_FLR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_reset_flr",
+ .sstate = TRACE_VFIO_PCI_RESET_FLR_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_RESET_FLR_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_RESET_PM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_reset_pm",
+ .sstate = TRACE_VFIO_PCI_RESET_PM_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_RESET_PM_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_EMULATED_VENDOR_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_emulated_vendor_id",
+ .sstate = TRACE_VFIO_PCI_EMULATED_VENDOR_ID_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_EMULATED_VENDOR_ID_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_EMULATED_DEVICE_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_emulated_device_id",
+ .sstate = TRACE_VFIO_PCI_EMULATED_DEVICE_ID_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_EMULATED_DEVICE_ID_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_emulated_sub_vendor_id",
+ .sstate = TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_emulated_sub_device_id",
+ .sstate = TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ROM_BLACKLISTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_rom_blacklisted",
+ .sstate = TRACE_VFIO_QUIRK_ROM_BLACKLISTED_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ROM_BLACKLISTED_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_generic_window_address_write",
+ .sstate = TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_generic_window_data_read",
+ .sstate = TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_generic_window_data_write",
+ .sstate = TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_generic_mirror_read",
+ .sstate = TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_generic_mirror_write",
+ .sstate = TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_3C3_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_3c3_read",
+ .sstate = TRACE_VFIO_QUIRK_ATI_3C3_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_3C3_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_3C3_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_3c3_probe",
+ .sstate = TRACE_VFIO_QUIRK_ATI_3C3_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_3C3_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bar4_probe",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bar2_probe",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_3d0_state",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_3d0_read",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_3d0_write",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_3d0_probe",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_bar5_state",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_bar5_probe",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_bar0_msi_ack",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_nvidia_bar0_probe",
+ .sstate = TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_rtl8168_fake_latch",
+ .sstate = TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_rtl8168_msix_write",
+ .sstate = TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_rtl8168_msix_read",
+ .sstate = TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_RTL8168_PROBE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_rtl8168_probe",
+ .sstate = TRACE_VFIO_QUIRK_RTL8168_PROBE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_RTL8168_PROBE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bonaire_reset_skipped",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bonaire_reset_no_smc",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bonaire_reset_timeout",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bonaire_reset_done",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_DSTATE
+};
+TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_quirk_ati_bonaire_reset",
+ .sstate = TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_ENABLED,
+ .dstate = &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_IGD_BAR4_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_igd_bar4_write",
+ .sstate = TRACE_VFIO_PCI_IGD_BAR4_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_IGD_BAR4_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_IGD_BDSM_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_igd_bdsm_enabled",
+ .sstate = TRACE_VFIO_PCI_IGD_BDSM_ENABLED_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_IGD_BDSM_ENABLED_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_igd_opregion_enabled",
+ .sstate = TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_igd_host_bridge_enabled",
+ .sstate = TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_DSTATE
+};
+TraceEvent _TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_pci_igd_lpc_bridge_enabled",
+ .sstate = TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_ENABLED,
+ .dstate = &_TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_write",
+ .sstate = TRACE_VFIO_REGION_WRITE_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_WRITE_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_read",
+ .sstate = TRACE_VFIO_REGION_READ_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_READ_DSTATE
+};
+TraceEvent _TRACE_VFIO_IOMMU_MAP_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_iommu_map_notify",
+ .sstate = TRACE_VFIO_IOMMU_MAP_NOTIFY_ENABLED,
+ .dstate = &_TRACE_VFIO_IOMMU_MAP_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_add_skip",
+ .sstate = TRACE_VFIO_LISTENER_REGION_ADD_SKIP_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_ADD_SKIP_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_add_iommu",
+ .sstate = TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_RAM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_add_ram",
+ .sstate = TRACE_VFIO_LISTENER_REGION_ADD_RAM_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_ADD_RAM_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_add_no_dma_map",
+ .sstate = TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_DEL_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_del_skip",
+ .sstate = TRACE_VFIO_LISTENER_REGION_DEL_SKIP_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_DEL_SKIP_DSTATE
+};
+TraceEvent _TRACE_VFIO_LISTENER_REGION_DEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_listener_region_del",
+ .sstate = TRACE_VFIO_LISTENER_REGION_DEL_ENABLED,
+ .dstate = &_TRACE_VFIO_LISTENER_REGION_DEL_DSTATE
+};
+TraceEvent _TRACE_VFIO_DISCONNECT_CONTAINER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_disconnect_container",
+ .sstate = TRACE_VFIO_DISCONNECT_CONTAINER_ENABLED,
+ .dstate = &_TRACE_VFIO_DISCONNECT_CONTAINER_DSTATE
+};
+TraceEvent _TRACE_VFIO_PUT_GROUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_put_group",
+ .sstate = TRACE_VFIO_PUT_GROUP_ENABLED,
+ .dstate = &_TRACE_VFIO_PUT_GROUP_DSTATE
+};
+TraceEvent _TRACE_VFIO_GET_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_get_device",
+ .sstate = TRACE_VFIO_GET_DEVICE_ENABLED,
+ .dstate = &_TRACE_VFIO_GET_DEVICE_DSTATE
+};
+TraceEvent _TRACE_VFIO_PUT_BASE_DEVICE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_put_base_device",
+ .sstate = TRACE_VFIO_PUT_BASE_DEVICE_ENABLED,
+ .dstate = &_TRACE_VFIO_PUT_BASE_DEVICE_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_setup",
+ .sstate = TRACE_VFIO_REGION_SETUP_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_SETUP_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_MMAP_FAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_mmap_fault",
+ .sstate = TRACE_VFIO_REGION_MMAP_FAULT_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_MMAP_FAULT_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_MMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_mmap",
+ .sstate = TRACE_VFIO_REGION_MMAP_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_MMAP_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_exit",
+ .sstate = TRACE_VFIO_REGION_EXIT_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_EXIT_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_FINALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_finalize",
+ .sstate = TRACE_VFIO_REGION_FINALIZE_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_FINALIZE_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_MMAPS_SET_ENABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_mmaps_set_enabled",
+ .sstate = TRACE_VFIO_REGION_MMAPS_SET_ENABLED_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_MMAPS_SET_ENABLED_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_sparse_mmap_header",
+ .sstate = TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_DSTATE
+};
+TraceEvent _TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_region_sparse_mmap_entry",
+ .sstate = TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_ENABLED,
+ .dstate = &_TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_DSTATE
+};
+TraceEvent _TRACE_VFIO_GET_DEV_REGION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_get_dev_region",
+ .sstate = TRACE_VFIO_GET_DEV_REGION_ENABLED,
+ .dstate = &_TRACE_VFIO_GET_DEV_REGION_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_base_device_init",
+ .sstate = TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_REALIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_realize",
+ .sstate = TRACE_VFIO_PLATFORM_REALIZE_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_REALIZE_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_EOI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_eoi",
+ .sstate = TRACE_VFIO_PLATFORM_EOI_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_EOI_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_intp_mmap_enable",
+ .sstate = TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_INTP_INTERRUPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_intp_interrupt",
+ .sstate = TRACE_VFIO_PLATFORM_INTP_INTERRUPT_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_INTP_INTERRUPT_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_intp_inject_pending_lockheld",
+ .sstate = TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_populate_interrupts",
+ .sstate = TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_DSTATE
+};
+TraceEvent _TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_intp_interrupt_set_pending",
+ .sstate = TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_ENABLED,
+ .dstate = &_TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_start_level_irqfd_injection",
+ .sstate = TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_DSTATE
+};
+TraceEvent _TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_platform_start_edge_irqfd_injection",
+ .sstate = TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_ENABLED,
+ .dstate = &_TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_DSTATE
+};
+TraceEvent _TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_prereg_listener_region_add_skip",
+ .sstate = TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_ENABLED,
+ .dstate = &_TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_DSTATE
+};
+TraceEvent _TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_prereg_listener_region_del_skip",
+ .sstate = TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_ENABLED,
+ .dstate = &_TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_DSTATE
+};
+TraceEvent _TRACE_VFIO_PREREG_REGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_prereg_register",
+ .sstate = TRACE_VFIO_PREREG_REGISTER_ENABLED,
+ .dstate = &_TRACE_VFIO_PREREG_REGISTER_DSTATE
+};
+TraceEvent _TRACE_VFIO_PREREG_UNREGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_prereg_unregister",
+ .sstate = TRACE_VFIO_PREREG_UNREGISTER_ENABLED,
+ .dstate = &_TRACE_VFIO_PREREG_UNREGISTER_DSTATE
+};
+TraceEvent _TRACE_VFIO_SPAPR_CREATE_WINDOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_spapr_create_window",
+ .sstate = TRACE_VFIO_SPAPR_CREATE_WINDOW_ENABLED,
+ .dstate = &_TRACE_VFIO_SPAPR_CREATE_WINDOW_DSTATE
+};
+TraceEvent _TRACE_VFIO_SPAPR_REMOVE_WINDOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_spapr_remove_window",
+ .sstate = TRACE_VFIO_SPAPR_REMOVE_WINDOW_ENABLED,
+ .dstate = &_TRACE_VFIO_SPAPR_REMOVE_WINDOW_DSTATE
+};
+TraceEvent _TRACE_VFIO_SPAPR_GROUP_ATTACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vfio_spapr_group_attach",
+ .sstate = TRACE_VFIO_SPAPR_GROUP_ATTACH_ENABLED,
+ .dstate = &_TRACE_VFIO_SPAPR_GROUP_ATTACH_DSTATE
+};
+TraceEvent *hw_vfio_trace_events[] = {
+ &_TRACE_VFIO_INTX_INTERRUPT_EVENT,
+ &_TRACE_VFIO_INTX_EOI_EVENT,
+ &_TRACE_VFIO_INTX_ENABLE_KVM_EVENT,
+ &_TRACE_VFIO_INTX_DISABLE_KVM_EVENT,
+ &_TRACE_VFIO_INTX_UPDATE_EVENT,
+ &_TRACE_VFIO_INTX_ENABLE_EVENT,
+ &_TRACE_VFIO_INTX_DISABLE_EVENT,
+ &_TRACE_VFIO_MSI_INTERRUPT_EVENT,
+ &_TRACE_VFIO_MSIX_VECTOR_DO_USE_EVENT,
+ &_TRACE_VFIO_MSIX_VECTOR_RELEASE_EVENT,
+ &_TRACE_VFIO_MSIX_ENABLE_EVENT,
+ &_TRACE_VFIO_MSIX_PBA_DISABLE_EVENT,
+ &_TRACE_VFIO_MSIX_PBA_ENABLE_EVENT,
+ &_TRACE_VFIO_MSIX_DISABLE_EVENT,
+ &_TRACE_VFIO_MSIX_FIXUP_EVENT,
+ &_TRACE_VFIO_MSIX_RELO_COST_EVENT,
+ &_TRACE_VFIO_MSIX_RELO_EVENT,
+ &_TRACE_VFIO_MSI_ENABLE_EVENT,
+ &_TRACE_VFIO_MSI_DISABLE_EVENT,
+ &_TRACE_VFIO_PCI_LOAD_ROM_EVENT,
+ &_TRACE_VFIO_ROM_READ_EVENT,
+ &_TRACE_VFIO_PCI_SIZE_ROM_EVENT,
+ &_TRACE_VFIO_VGA_WRITE_EVENT,
+ &_TRACE_VFIO_VGA_READ_EVENT,
+ &_TRACE_VFIO_PCI_READ_CONFIG_EVENT,
+ &_TRACE_VFIO_PCI_WRITE_CONFIG_EVENT,
+ &_TRACE_VFIO_MSI_SETUP_EVENT,
+ &_TRACE_VFIO_MSIX_EARLY_SETUP_EVENT,
+ &_TRACE_VFIO_CHECK_PCIE_FLR_EVENT,
+ &_TRACE_VFIO_CHECK_PM_RESET_EVENT,
+ &_TRACE_VFIO_CHECK_AF_FLR_EVENT,
+ &_TRACE_VFIO_PCI_HOT_RESET_EVENT,
+ &_TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_EVENT,
+ &_TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_EVENT,
+ &_TRACE_VFIO_PCI_HOT_RESET_RESULT_EVENT,
+ &_TRACE_VFIO_POPULATE_DEVICE_CONFIG_EVENT,
+ &_TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_EVENT,
+ &_TRACE_VFIO_REALIZE_EVENT,
+ &_TRACE_VFIO_ADD_EXT_CAP_DROPPED_EVENT,
+ &_TRACE_VFIO_PCI_RESET_EVENT,
+ &_TRACE_VFIO_PCI_RESET_FLR_EVENT,
+ &_TRACE_VFIO_PCI_RESET_PM_EVENT,
+ &_TRACE_VFIO_PCI_EMULATED_VENDOR_ID_EVENT,
+ &_TRACE_VFIO_PCI_EMULATED_DEVICE_ID_EVENT,
+ &_TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_EVENT,
+ &_TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_EVENT,
+ &_TRACE_VFIO_QUIRK_ROM_BLACKLISTED_EVENT,
+ &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_EVENT,
+ &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_EVENT,
+ &_TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_EVENT,
+ &_TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_EVENT,
+ &_TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_3C3_READ_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_3C3_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_EVENT,
+ &_TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_EVENT,
+ &_TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_EVENT,
+ &_TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_EVENT,
+ &_TRACE_VFIO_QUIRK_RTL8168_PROBE_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_EVENT,
+ &_TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_EVENT,
+ &_TRACE_VFIO_PCI_IGD_BAR4_WRITE_EVENT,
+ &_TRACE_VFIO_PCI_IGD_BDSM_ENABLED_EVENT,
+ &_TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_EVENT,
+ &_TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_EVENT,
+ &_TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_EVENT,
+ &_TRACE_VFIO_REGION_WRITE_EVENT,
+ &_TRACE_VFIO_REGION_READ_EVENT,
+ &_TRACE_VFIO_IOMMU_MAP_NOTIFY_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_ADD_SKIP_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_ADD_RAM_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_DEL_SKIP_EVENT,
+ &_TRACE_VFIO_LISTENER_REGION_DEL_EVENT,
+ &_TRACE_VFIO_DISCONNECT_CONTAINER_EVENT,
+ &_TRACE_VFIO_PUT_GROUP_EVENT,
+ &_TRACE_VFIO_GET_DEVICE_EVENT,
+ &_TRACE_VFIO_PUT_BASE_DEVICE_EVENT,
+ &_TRACE_VFIO_REGION_SETUP_EVENT,
+ &_TRACE_VFIO_REGION_MMAP_FAULT_EVENT,
+ &_TRACE_VFIO_REGION_MMAP_EVENT,
+ &_TRACE_VFIO_REGION_EXIT_EVENT,
+ &_TRACE_VFIO_REGION_FINALIZE_EVENT,
+ &_TRACE_VFIO_REGION_MMAPS_SET_ENABLED_EVENT,
+ &_TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_EVENT,
+ &_TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_EVENT,
+ &_TRACE_VFIO_GET_DEV_REGION_EVENT,
+ &_TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_EVENT,
+ &_TRACE_VFIO_PLATFORM_REALIZE_EVENT,
+ &_TRACE_VFIO_PLATFORM_EOI_EVENT,
+ &_TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_EVENT,
+ &_TRACE_VFIO_PLATFORM_INTP_INTERRUPT_EVENT,
+ &_TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_EVENT,
+ &_TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_EVENT,
+ &_TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_EVENT,
+ &_TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_EVENT,
+ &_TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_EVENT,
+ &_TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_EVENT,
+ &_TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_EVENT,
+ &_TRACE_VFIO_PREREG_REGISTER_EVENT,
+ &_TRACE_VFIO_PREREG_UNREGISTER_EVENT,
+ &_TRACE_VFIO_SPAPR_CREATE_WINDOW_EVENT,
+ &_TRACE_VFIO_SPAPR_REMOVE_WINDOW_EVENT,
+ &_TRACE_VFIO_SPAPR_GROUP_ATTACH_EVENT,
+ NULL,
+};
+
+static void trace_hw_vfio_register_events(void)
+{
+ trace_event_register_group(hw_vfio_trace_events);
+}
+trace_init(trace_hw_vfio_register_events)
diff --git a/qemu2-auto-generated/hw/vfio/trace.h b/qemu2-auto-generated/hw/vfio/trace.h
new file mode 100644
index 0000000000..35f4a83817
--- /dev/null
+++ b/qemu2-auto-generated/hw/vfio/trace.h
@@ -0,0 +1,1998 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_VFIO_GENERATED_TRACERS_H
+#define TRACE_HW_VFIO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VFIO_INTX_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_EOI_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_ENABLE_KVM_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_DISABLE_KVM_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_UPDATE_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_ENABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_INTX_DISABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSI_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_VECTOR_DO_USE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_VECTOR_RELEASE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_ENABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_PBA_DISABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_PBA_ENABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_DISABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_FIXUP_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_RELO_COST_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_RELO_EVENT;
+extern TraceEvent _TRACE_VFIO_MSI_ENABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_MSI_DISABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_LOAD_ROM_EVENT;
+extern TraceEvent _TRACE_VFIO_ROM_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_SIZE_ROM_EVENT;
+extern TraceEvent _TRACE_VFIO_VGA_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_VGA_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_READ_CONFIG_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_WRITE_CONFIG_EVENT;
+extern TraceEvent _TRACE_VFIO_MSI_SETUP_EVENT;
+extern TraceEvent _TRACE_VFIO_MSIX_EARLY_SETUP_EVENT;
+extern TraceEvent _TRACE_VFIO_CHECK_PCIE_FLR_EVENT;
+extern TraceEvent _TRACE_VFIO_CHECK_PM_RESET_EVENT;
+extern TraceEvent _TRACE_VFIO_CHECK_AF_FLR_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_HOT_RESET_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_HOT_RESET_RESULT_EVENT;
+extern TraceEvent _TRACE_VFIO_POPULATE_DEVICE_CONFIG_EVENT;
+extern TraceEvent _TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_EVENT;
+extern TraceEvent _TRACE_VFIO_REALIZE_EVENT;
+extern TraceEvent _TRACE_VFIO_ADD_EXT_CAP_DROPPED_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_RESET_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_RESET_FLR_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_RESET_PM_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_EMULATED_VENDOR_ID_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_EMULATED_DEVICE_ID_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ROM_BLACKLISTED_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_3C3_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_3C3_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_RTL8168_PROBE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_EVENT;
+extern TraceEvent _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_IGD_BAR4_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_IGD_BDSM_ENABLED_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_EVENT;
+extern TraceEvent _TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_WRITE_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_READ_EVENT;
+extern TraceEvent _TRACE_VFIO_IOMMU_MAP_NOTIFY_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_SKIP_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_RAM_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_DEL_SKIP_EVENT;
+extern TraceEvent _TRACE_VFIO_LISTENER_REGION_DEL_EVENT;
+extern TraceEvent _TRACE_VFIO_DISCONNECT_CONTAINER_EVENT;
+extern TraceEvent _TRACE_VFIO_PUT_GROUP_EVENT;
+extern TraceEvent _TRACE_VFIO_GET_DEVICE_EVENT;
+extern TraceEvent _TRACE_VFIO_PUT_BASE_DEVICE_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_SETUP_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_MMAP_FAULT_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_MMAP_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_EXIT_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_FINALIZE_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_MMAPS_SET_ENABLED_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_EVENT;
+extern TraceEvent _TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_EVENT;
+extern TraceEvent _TRACE_VFIO_GET_DEV_REGION_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_REALIZE_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_EOI_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_INTP_INTERRUPT_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_EVENT;
+extern TraceEvent _TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_EVENT;
+extern TraceEvent _TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_EVENT;
+extern TraceEvent _TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_EVENT;
+extern TraceEvent _TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_EVENT;
+extern TraceEvent _TRACE_VFIO_PREREG_REGISTER_EVENT;
+extern TraceEvent _TRACE_VFIO_PREREG_UNREGISTER_EVENT;
+extern TraceEvent _TRACE_VFIO_SPAPR_CREATE_WINDOW_EVENT;
+extern TraceEvent _TRACE_VFIO_SPAPR_REMOVE_WINDOW_EVENT;
+extern TraceEvent _TRACE_VFIO_SPAPR_GROUP_ATTACH_EVENT;
+extern uint16_t _TRACE_VFIO_INTX_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_EOI_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_ENABLE_KVM_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_DISABLE_KVM_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_UPDATE_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_ENABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_INTX_DISABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSI_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_VECTOR_DO_USE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_VECTOR_RELEASE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_ENABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_PBA_DISABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_PBA_ENABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_DISABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_FIXUP_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_RELO_COST_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_RELO_DSTATE;
+extern uint16_t _TRACE_VFIO_MSI_ENABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_MSI_DISABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_LOAD_ROM_DSTATE;
+extern uint16_t _TRACE_VFIO_ROM_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_SIZE_ROM_DSTATE;
+extern uint16_t _TRACE_VFIO_VGA_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_VGA_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_READ_CONFIG_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_WRITE_CONFIG_DSTATE;
+extern uint16_t _TRACE_VFIO_MSI_SETUP_DSTATE;
+extern uint16_t _TRACE_VFIO_MSIX_EARLY_SETUP_DSTATE;
+extern uint16_t _TRACE_VFIO_CHECK_PCIE_FLR_DSTATE;
+extern uint16_t _TRACE_VFIO_CHECK_PM_RESET_DSTATE;
+extern uint16_t _TRACE_VFIO_CHECK_AF_FLR_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_HOT_RESET_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_HOT_RESET_RESULT_DSTATE;
+extern uint16_t _TRACE_VFIO_POPULATE_DEVICE_CONFIG_DSTATE;
+extern uint16_t _TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_DSTATE;
+extern uint16_t _TRACE_VFIO_REALIZE_DSTATE;
+extern uint16_t _TRACE_VFIO_ADD_EXT_CAP_DROPPED_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_RESET_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_RESET_FLR_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_RESET_PM_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_EMULATED_VENDOR_ID_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_EMULATED_DEVICE_ID_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ROM_BLACKLISTED_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_3C3_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_3C3_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_RTL8168_PROBE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_DSTATE;
+extern uint16_t _TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_IGD_BAR4_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_IGD_BDSM_ENABLED_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_DSTATE;
+extern uint16_t _TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_WRITE_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_READ_DSTATE;
+extern uint16_t _TRACE_VFIO_IOMMU_MAP_NOTIFY_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_SKIP_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_RAM_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_DEL_SKIP_DSTATE;
+extern uint16_t _TRACE_VFIO_LISTENER_REGION_DEL_DSTATE;
+extern uint16_t _TRACE_VFIO_DISCONNECT_CONTAINER_DSTATE;
+extern uint16_t _TRACE_VFIO_PUT_GROUP_DSTATE;
+extern uint16_t _TRACE_VFIO_GET_DEVICE_DSTATE;
+extern uint16_t _TRACE_VFIO_PUT_BASE_DEVICE_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_SETUP_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_MMAP_FAULT_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_MMAP_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_EXIT_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_FINALIZE_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_MMAPS_SET_ENABLED_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_DSTATE;
+extern uint16_t _TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_DSTATE;
+extern uint16_t _TRACE_VFIO_GET_DEV_REGION_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_REALIZE_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_EOI_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_INTP_INTERRUPT_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_DSTATE;
+extern uint16_t _TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_DSTATE;
+extern uint16_t _TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_DSTATE;
+extern uint16_t _TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_DSTATE;
+extern uint16_t _TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_DSTATE;
+extern uint16_t _TRACE_VFIO_PREREG_REGISTER_DSTATE;
+extern uint16_t _TRACE_VFIO_PREREG_UNREGISTER_DSTATE;
+extern uint16_t _TRACE_VFIO_SPAPR_CREATE_WINDOW_DSTATE;
+extern uint16_t _TRACE_VFIO_SPAPR_REMOVE_WINDOW_DSTATE;
+extern uint16_t _TRACE_VFIO_SPAPR_GROUP_ATTACH_DSTATE;
+#define TRACE_VFIO_INTX_INTERRUPT_ENABLED 1
+#define TRACE_VFIO_INTX_EOI_ENABLED 1
+#define TRACE_VFIO_INTX_ENABLE_KVM_ENABLED 1
+#define TRACE_VFIO_INTX_DISABLE_KVM_ENABLED 1
+#define TRACE_VFIO_INTX_UPDATE_ENABLED 1
+#define TRACE_VFIO_INTX_ENABLE_ENABLED 1
+#define TRACE_VFIO_INTX_DISABLE_ENABLED 1
+#define TRACE_VFIO_MSI_INTERRUPT_ENABLED 1
+#define TRACE_VFIO_MSIX_VECTOR_DO_USE_ENABLED 1
+#define TRACE_VFIO_MSIX_VECTOR_RELEASE_ENABLED 1
+#define TRACE_VFIO_MSIX_ENABLE_ENABLED 1
+#define TRACE_VFIO_MSIX_PBA_DISABLE_ENABLED 1
+#define TRACE_VFIO_MSIX_PBA_ENABLE_ENABLED 1
+#define TRACE_VFIO_MSIX_DISABLE_ENABLED 1
+#define TRACE_VFIO_MSIX_FIXUP_ENABLED 1
+#define TRACE_VFIO_MSIX_RELO_COST_ENABLED 1
+#define TRACE_VFIO_MSIX_RELO_ENABLED 1
+#define TRACE_VFIO_MSI_ENABLE_ENABLED 1
+#define TRACE_VFIO_MSI_DISABLE_ENABLED 1
+#define TRACE_VFIO_PCI_LOAD_ROM_ENABLED 1
+#define TRACE_VFIO_ROM_READ_ENABLED 1
+#define TRACE_VFIO_PCI_SIZE_ROM_ENABLED 1
+#define TRACE_VFIO_VGA_WRITE_ENABLED 1
+#define TRACE_VFIO_VGA_READ_ENABLED 1
+#define TRACE_VFIO_PCI_READ_CONFIG_ENABLED 1
+#define TRACE_VFIO_PCI_WRITE_CONFIG_ENABLED 1
+#define TRACE_VFIO_MSI_SETUP_ENABLED 1
+#define TRACE_VFIO_MSIX_EARLY_SETUP_ENABLED 1
+#define TRACE_VFIO_CHECK_PCIE_FLR_ENABLED 1
+#define TRACE_VFIO_CHECK_PM_RESET_ENABLED 1
+#define TRACE_VFIO_CHECK_AF_FLR_ENABLED 1
+#define TRACE_VFIO_PCI_HOT_RESET_ENABLED 1
+#define TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_ENABLED 1
+#define TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_ENABLED 1
+#define TRACE_VFIO_PCI_HOT_RESET_RESULT_ENABLED 1
+#define TRACE_VFIO_POPULATE_DEVICE_CONFIG_ENABLED 1
+#define TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_ENABLED 1
+#define TRACE_VFIO_REALIZE_ENABLED 1
+#define TRACE_VFIO_ADD_EXT_CAP_DROPPED_ENABLED 1
+#define TRACE_VFIO_PCI_RESET_ENABLED 1
+#define TRACE_VFIO_PCI_RESET_FLR_ENABLED 1
+#define TRACE_VFIO_PCI_RESET_PM_ENABLED 1
+#define TRACE_VFIO_PCI_EMULATED_VENDOR_ID_ENABLED 1
+#define TRACE_VFIO_PCI_EMULATED_DEVICE_ID_ENABLED 1
+#define TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_ENABLED 1
+#define TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_ENABLED 1
+#define TRACE_VFIO_QUIRK_ROM_BLACKLISTED_ENABLED 1
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_ENABLED 1
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_ENABLED 1
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_ENABLED 1
+#define TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_ENABLED 1
+#define TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_3C3_READ_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_3C3_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_ENABLED 1
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_ENABLED 1
+#define TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_ENABLED 1
+#define TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_ENABLED 1
+#define TRACE_VFIO_QUIRK_RTL8168_PROBE_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_ENABLED 1
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_ENABLED 1
+#define TRACE_VFIO_PCI_IGD_BAR4_WRITE_ENABLED 1
+#define TRACE_VFIO_PCI_IGD_BDSM_ENABLED_ENABLED 1
+#define TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_ENABLED 1
+#define TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_ENABLED 1
+#define TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_ENABLED 1
+#define TRACE_VFIO_REGION_WRITE_ENABLED 1
+#define TRACE_VFIO_REGION_READ_ENABLED 1
+#define TRACE_VFIO_IOMMU_MAP_NOTIFY_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_ADD_SKIP_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_ADD_RAM_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_DEL_SKIP_ENABLED 1
+#define TRACE_VFIO_LISTENER_REGION_DEL_ENABLED 1
+#define TRACE_VFIO_DISCONNECT_CONTAINER_ENABLED 1
+#define TRACE_VFIO_PUT_GROUP_ENABLED 1
+#define TRACE_VFIO_GET_DEVICE_ENABLED 1
+#define TRACE_VFIO_PUT_BASE_DEVICE_ENABLED 1
+#define TRACE_VFIO_REGION_SETUP_ENABLED 1
+#define TRACE_VFIO_REGION_MMAP_FAULT_ENABLED 1
+#define TRACE_VFIO_REGION_MMAP_ENABLED 1
+#define TRACE_VFIO_REGION_EXIT_ENABLED 1
+#define TRACE_VFIO_REGION_FINALIZE_ENABLED 1
+#define TRACE_VFIO_REGION_MMAPS_SET_ENABLED_ENABLED 1
+#define TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_ENABLED 1
+#define TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_ENABLED 1
+#define TRACE_VFIO_GET_DEV_REGION_ENABLED 1
+#define TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_ENABLED 1
+#define TRACE_VFIO_PLATFORM_REALIZE_ENABLED 1
+#define TRACE_VFIO_PLATFORM_EOI_ENABLED 1
+#define TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_ENABLED 1
+#define TRACE_VFIO_PLATFORM_INTP_INTERRUPT_ENABLED 1
+#define TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_ENABLED 1
+#define TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_ENABLED 1
+#define TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_ENABLED 1
+#define TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_ENABLED 1
+#define TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_ENABLED 1
+#define TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_ENABLED 1
+#define TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_ENABLED 1
+#define TRACE_VFIO_PREREG_REGISTER_ENABLED 1
+#define TRACE_VFIO_PREREG_UNREGISTER_ENABLED 1
+#define TRACE_VFIO_SPAPR_CREATE_WINDOW_ENABLED 1
+#define TRACE_VFIO_SPAPR_REMOVE_WINDOW_ENABLED 1
+#define TRACE_VFIO_SPAPR_GROUP_ATTACH_ENABLED 1
+
+#define TRACE_VFIO_INTX_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_interrupt(const char * name, char line)
+{
+}
+
+static inline void trace_vfio_intx_interrupt(const char * name, char line)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_interrupt(name, line);
+ }
+}
+
+#define TRACE_VFIO_INTX_EOI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_eoi(const char * name)
+{
+}
+
+static inline void trace_vfio_intx_eoi(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_eoi(name);
+ }
+}
+
+#define TRACE_VFIO_INTX_ENABLE_KVM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_enable_kvm(const char * name)
+{
+}
+
+static inline void trace_vfio_intx_enable_kvm(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_enable_kvm(name);
+ }
+}
+
+#define TRACE_VFIO_INTX_DISABLE_KVM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_disable_kvm(const char * name)
+{
+}
+
+static inline void trace_vfio_intx_disable_kvm(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_disable_kvm(name);
+ }
+}
+
+#define TRACE_VFIO_INTX_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_update(const char * name, int new_irq, int target_irq)
+{
+}
+
+static inline void trace_vfio_intx_update(const char * name, int new_irq, int target_irq)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_update(name, new_irq, target_irq);
+ }
+}
+
+#define TRACE_VFIO_INTX_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_enable(const char * name)
+{
+}
+
+static inline void trace_vfio_intx_enable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_enable(name);
+ }
+}
+
+#define TRACE_VFIO_INTX_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intx_disable(const char * name)
+{
+}
+
+static inline void trace_vfio_intx_disable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_intx_disable(name);
+ }
+}
+
+#define TRACE_VFIO_MSI_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msi_interrupt(const char * name, int index, uint64_t addr, int data)
+{
+}
+
+static inline void trace_vfio_msi_interrupt(const char * name, int index, uint64_t addr, int data)
+{
+ if (true) {
+ _nocheck__trace_vfio_msi_interrupt(name, index, addr, data);
+ }
+}
+
+#define TRACE_VFIO_MSIX_VECTOR_DO_USE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_vector_do_use(const char * name, int index)
+{
+}
+
+static inline void trace_vfio_msix_vector_do_use(const char * name, int index)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_vector_do_use(name, index);
+ }
+}
+
+#define TRACE_VFIO_MSIX_VECTOR_RELEASE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_vector_release(const char * name, int index)
+{
+}
+
+static inline void trace_vfio_msix_vector_release(const char * name, int index)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_vector_release(name, index);
+ }
+}
+
+#define TRACE_VFIO_MSIX_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_enable(const char * name)
+{
+}
+
+static inline void trace_vfio_msix_enable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_enable(name);
+ }
+}
+
+#define TRACE_VFIO_MSIX_PBA_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_pba_disable(const char * name)
+{
+}
+
+static inline void trace_vfio_msix_pba_disable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_pba_disable(name);
+ }
+}
+
+#define TRACE_VFIO_MSIX_PBA_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_pba_enable(const char * name)
+{
+}
+
+static inline void trace_vfio_msix_pba_enable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_pba_enable(name);
+ }
+}
+
+#define TRACE_VFIO_MSIX_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_disable(const char * name)
+{
+}
+
+static inline void trace_vfio_msix_disable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_disable(name);
+ }
+}
+
+#define TRACE_VFIO_MSIX_FIXUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_fixup(const char * name, int bar, uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_msix_fixup(const char * name, int bar, uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_fixup(name, bar, start, end);
+ }
+}
+
+#define TRACE_VFIO_MSIX_RELO_COST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_relo_cost(const char * name, int bar, uint64_t cost)
+{
+}
+
+static inline void trace_vfio_msix_relo_cost(const char * name, int bar, uint64_t cost)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_relo_cost(name, bar, cost);
+ }
+}
+
+#define TRACE_VFIO_MSIX_RELO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_relo(const char * name, int bar, uint64_t offset)
+{
+}
+
+static inline void trace_vfio_msix_relo(const char * name, int bar, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_relo(name, bar, offset);
+ }
+}
+
+#define TRACE_VFIO_MSI_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msi_enable(const char * name, int nr_vectors)
+{
+}
+
+static inline void trace_vfio_msi_enable(const char * name, int nr_vectors)
+{
+ if (true) {
+ _nocheck__trace_vfio_msi_enable(name, nr_vectors);
+ }
+}
+
+#define TRACE_VFIO_MSI_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msi_disable(const char * name)
+{
+}
+
+static inline void trace_vfio_msi_disable(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_msi_disable(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_LOAD_ROM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_load_rom(const char * name, unsigned long size, unsigned long offset, unsigned long flags)
+{
+}
+
+static inline void trace_vfio_pci_load_rom(const char * name, unsigned long size, unsigned long offset, unsigned long flags)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_load_rom(name, size, offset, flags);
+ }
+}
+
+#define TRACE_VFIO_ROM_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_rom_read(const char * name, uint64_t addr, int size, uint64_t data)
+{
+}
+
+static inline void trace_vfio_rom_read(const char * name, uint64_t addr, int size, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_rom_read(name, addr, size, data);
+ }
+}
+
+#define TRACE_VFIO_PCI_SIZE_ROM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_size_rom(const char * name, int size)
+{
+}
+
+static inline void trace_vfio_pci_size_rom(const char * name, int size)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_size_rom(name, size);
+ }
+}
+
+#define TRACE_VFIO_VGA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_vga_write(uint64_t addr, uint64_t data, int size)
+{
+}
+
+static inline void trace_vfio_vga_write(uint64_t addr, uint64_t data, int size)
+{
+ if (true) {
+ _nocheck__trace_vfio_vga_write(addr, data, size);
+ }
+}
+
+#define TRACE_VFIO_VGA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_vga_read(uint64_t addr, int size, uint64_t data)
+{
+}
+
+static inline void trace_vfio_vga_read(uint64_t addr, int size, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_vga_read(addr, size, data);
+ }
+}
+
+#define TRACE_VFIO_PCI_READ_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_read_config(const char * name, int addr, int len, int val)
+{
+}
+
+static inline void trace_vfio_pci_read_config(const char * name, int addr, int len, int val)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_read_config(name, addr, len, val);
+ }
+}
+
+#define TRACE_VFIO_PCI_WRITE_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_write_config(const char * name, int addr, int val, int len)
+{
+}
+
+static inline void trace_vfio_pci_write_config(const char * name, int addr, int val, int len)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_write_config(name, addr, val, len);
+ }
+}
+
+#define TRACE_VFIO_MSI_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msi_setup(const char * name, int pos)
+{
+}
+
+static inline void trace_vfio_msi_setup(const char * name, int pos)
+{
+ if (true) {
+ _nocheck__trace_vfio_msi_setup(name, pos);
+ }
+}
+
+#define TRACE_VFIO_MSIX_EARLY_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_msix_early_setup(const char * name, int pos, int table_bar, int offset, int entries)
+{
+}
+
+static inline void trace_vfio_msix_early_setup(const char * name, int pos, int table_bar, int offset, int entries)
+{
+ if (true) {
+ _nocheck__trace_vfio_msix_early_setup(name, pos, table_bar, offset, entries);
+ }
+}
+
+#define TRACE_VFIO_CHECK_PCIE_FLR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_check_pcie_flr(const char * name)
+{
+}
+
+static inline void trace_vfio_check_pcie_flr(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_check_pcie_flr(name);
+ }
+}
+
+#define TRACE_VFIO_CHECK_PM_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_check_pm_reset(const char * name)
+{
+}
+
+static inline void trace_vfio_check_pm_reset(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_check_pm_reset(name);
+ }
+}
+
+#define TRACE_VFIO_CHECK_AF_FLR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_check_af_flr(const char * name)
+{
+}
+
+static inline void trace_vfio_check_af_flr(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_check_af_flr(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_HOT_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_hot_reset(const char * name, const char * type)
+{
+}
+
+static inline void trace_vfio_pci_hot_reset(const char * name, const char * type)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_hot_reset(name, type);
+ }
+}
+
+#define TRACE_VFIO_PCI_HOT_RESET_HAS_DEP_DEVICES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_hot_reset_has_dep_devices(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_hot_reset_has_dep_devices(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_hot_reset_has_dep_devices(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_HOT_RESET_DEP_DEVICES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_hot_reset_dep_devices(int domain, int bus, int slot, int function, int group_id)
+{
+}
+
+static inline void trace_vfio_pci_hot_reset_dep_devices(int domain, int bus, int slot, int function, int group_id)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_hot_reset_dep_devices(domain, bus, slot, function, group_id);
+ }
+}
+
+#define TRACE_VFIO_PCI_HOT_RESET_RESULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_hot_reset_result(const char * name, const char * result)
+{
+}
+
+static inline void trace_vfio_pci_hot_reset_result(const char * name, const char * result)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_hot_reset_result(name, result);
+ }
+}
+
+#define TRACE_VFIO_POPULATE_DEVICE_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_populate_device_config(const char * name, unsigned long size, unsigned long offset, unsigned long flags)
+{
+}
+
+static inline void trace_vfio_populate_device_config(const char * name, unsigned long size, unsigned long offset, unsigned long flags)
+{
+ if (true) {
+ _nocheck__trace_vfio_populate_device_config(name, size, offset, flags);
+ }
+}
+
+#define TRACE_VFIO_POPULATE_DEVICE_GET_IRQ_INFO_FAILURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_populate_device_get_irq_info_failure(void)
+{
+}
+
+static inline void trace_vfio_populate_device_get_irq_info_failure(void)
+{
+ if (true) {
+ _nocheck__trace_vfio_populate_device_get_irq_info_failure();
+ }
+}
+
+#define TRACE_VFIO_REALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_realize(const char * name, int group_id)
+{
+}
+
+static inline void trace_vfio_realize(const char * name, int group_id)
+{
+ if (true) {
+ _nocheck__trace_vfio_realize(name, group_id);
+ }
+}
+
+#define TRACE_VFIO_ADD_EXT_CAP_DROPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_add_ext_cap_dropped(const char * name, uint16_t cap, uint16_t offset)
+{
+}
+
+static inline void trace_vfio_add_ext_cap_dropped(const char * name, uint16_t cap, uint16_t offset)
+{
+ if (true) {
+ _nocheck__trace_vfio_add_ext_cap_dropped(name, cap, offset);
+ }
+}
+
+#define TRACE_VFIO_PCI_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_reset(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_reset(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_reset(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_RESET_FLR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_reset_flr(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_reset_flr(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_reset_flr(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_RESET_PM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_reset_pm(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_reset_pm(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_reset_pm(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_EMULATED_VENDOR_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_emulated_vendor_id(const char * name, uint16_t val)
+{
+}
+
+static inline void trace_vfio_pci_emulated_vendor_id(const char * name, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_emulated_vendor_id(name, val);
+ }
+}
+
+#define TRACE_VFIO_PCI_EMULATED_DEVICE_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_emulated_device_id(const char * name, uint16_t val)
+{
+}
+
+static inline void trace_vfio_pci_emulated_device_id(const char * name, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_emulated_device_id(name, val);
+ }
+}
+
+#define TRACE_VFIO_PCI_EMULATED_SUB_VENDOR_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_emulated_sub_vendor_id(const char * name, uint16_t val)
+{
+}
+
+static inline void trace_vfio_pci_emulated_sub_vendor_id(const char * name, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_emulated_sub_vendor_id(name, val);
+ }
+}
+
+#define TRACE_VFIO_PCI_EMULATED_SUB_DEVICE_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_emulated_sub_device_id(const char * name, uint16_t val)
+{
+}
+
+static inline void trace_vfio_pci_emulated_sub_device_id(const char * name, uint16_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_emulated_sub_device_id(name, val);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ROM_BLACKLISTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_rom_blacklisted(const char * name, uint16_t vid, uint16_t did)
+{
+}
+
+static inline void trace_vfio_quirk_rom_blacklisted(const char * name, uint16_t vid, uint16_t did)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_rom_blacklisted(name, vid, did);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_ADDRESS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_generic_window_address_write(const char * name, const char * region_name, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_generic_window_address_write(const char * name, const char * region_name, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_generic_window_address_write(name, region_name, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_generic_window_data_read(const char * name, const char * region_name, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_generic_window_data_read(const char * name, const char * region_name, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_generic_window_data_read(name, region_name, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_GENERIC_WINDOW_DATA_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_generic_window_data_write(const char * name, const char * region_name, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_generic_window_data_write(const char * name, const char * region_name, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_generic_window_data_write(name, region_name, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_GENERIC_MIRROR_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_generic_mirror_read(const char * name, const char * region_name, uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_generic_mirror_read(const char * name, const char * region_name, uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_generic_mirror_read(name, region_name, addr, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_GENERIC_MIRROR_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_generic_mirror_write(const char * name, const char * region_name, uint64_t addr, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_generic_mirror_write(const char * name, const char * region_name, uint64_t addr, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_generic_mirror_write(name, region_name, addr, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_3C3_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_3c3_read(const char * name, uint64_t data)
+{
+}
+
+static inline void trace_vfio_quirk_ati_3c3_read(const char * name, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_3c3_read(name, data);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_3C3_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_3c3_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_3c3_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_3c3_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BAR4_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bar4_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bar4_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bar4_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BAR2_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bar2_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bar2_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bar2_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_3d0_state(const char * name, const char * state)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_3d0_state(const char * name, const char * state)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_3d0_state(name, state);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_3d0_read(const char * name, uint8_t offset, unsigned size, uint64_t val)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_3d0_read(const char * name, uint8_t offset, unsigned size, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_3d0_read(name, offset, size, val);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_3d0_write(const char * name, uint8_t offset, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_3d0_write(const char * name, uint8_t offset, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_3d0_write(name, offset, data, size);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_3D0_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_3d0_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_3d0_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_3d0_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR5_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_bar5_state(const char * name, const char * state)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_bar5_state(const char * name, const char * state)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_bar5_state(name, state);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR5_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_bar5_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_bar5_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_bar5_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR0_MSI_ACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_bar0_msi_ack(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_bar0_msi_ack(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_bar0_msi_ack(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_NVIDIA_BAR0_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_nvidia_bar0_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_nvidia_bar0_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_nvidia_bar0_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_RTL8168_FAKE_LATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_rtl8168_fake_latch(const char * name, uint64_t val)
+{
+}
+
+static inline void trace_vfio_quirk_rtl8168_fake_latch(const char * name, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_rtl8168_fake_latch(name, val);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_RTL8168_MSIX_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_rtl8168_msix_write(const char * name, uint16_t offset, uint64_t val)
+{
+}
+
+static inline void trace_vfio_quirk_rtl8168_msix_write(const char * name, uint16_t offset, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_rtl8168_msix_write(name, offset, val);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_RTL8168_MSIX_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_rtl8168_msix_read(const char * name, uint16_t offset, uint64_t val)
+{
+}
+
+static inline void trace_vfio_quirk_rtl8168_msix_read(const char * name, uint16_t offset, uint64_t val)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_rtl8168_msix_read(name, offset, val);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_RTL8168_PROBE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_rtl8168_probe(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_rtl8168_probe(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_rtl8168_probe(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_SKIPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bonaire_reset_skipped(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bonaire_reset_skipped(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bonaire_reset_skipped(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_NO_SMC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bonaire_reset_no_smc(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bonaire_reset_no_smc(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bonaire_reset_no_smc(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_TIMEOUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bonaire_reset_timeout(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bonaire_reset_timeout(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bonaire_reset_timeout(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bonaire_reset_done(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bonaire_reset_done(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bonaire_reset_done(name);
+ }
+}
+
+#define TRACE_VFIO_QUIRK_ATI_BONAIRE_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_quirk_ati_bonaire_reset(const char * name)
+{
+}
+
+static inline void trace_vfio_quirk_ati_bonaire_reset(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_quirk_ati_bonaire_reset(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_IGD_BAR4_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_igd_bar4_write(const char * name, uint32_t index, uint32_t data, uint32_t base)
+{
+}
+
+static inline void trace_vfio_pci_igd_bar4_write(const char * name, uint32_t index, uint32_t data, uint32_t base)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_igd_bar4_write(name, index, data, base);
+ }
+}
+
+#define TRACE_VFIO_PCI_IGD_BDSM_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_igd_bdsm_enabled(const char * name, int size)
+{
+}
+
+static inline void trace_vfio_pci_igd_bdsm_enabled(const char * name, int size)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_igd_bdsm_enabled(name, size);
+ }
+}
+
+#define TRACE_VFIO_PCI_IGD_OPREGION_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_igd_opregion_enabled(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_igd_opregion_enabled(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_igd_opregion_enabled(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_IGD_HOST_BRIDGE_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_igd_host_bridge_enabled(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_igd_host_bridge_enabled(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_igd_host_bridge_enabled(name);
+ }
+}
+
+#define TRACE_VFIO_PCI_IGD_LPC_BRIDGE_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_pci_igd_lpc_bridge_enabled(const char * name)
+{
+}
+
+static inline void trace_vfio_pci_igd_lpc_bridge_enabled(const char * name)
+{
+ if (true) {
+ _nocheck__trace_vfio_pci_igd_lpc_bridge_enabled(name);
+ }
+}
+
+#define TRACE_VFIO_REGION_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_write(const char * name, int index, uint64_t addr, uint64_t data, unsigned size)
+{
+}
+
+static inline void trace_vfio_region_write(const char * name, int index, uint64_t addr, uint64_t data, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_write(name, index, addr, data, size);
+ }
+}
+
+#define TRACE_VFIO_REGION_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_read(char * name, int index, uint64_t addr, unsigned size, uint64_t data)
+{
+}
+
+static inline void trace_vfio_region_read(char * name, int index, uint64_t addr, unsigned size, uint64_t data)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_read(name, index, addr, size, data);
+ }
+}
+
+#define TRACE_VFIO_IOMMU_MAP_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_iommu_map_notify(const char * op, uint64_t iova_start, uint64_t iova_end)
+{
+}
+
+static inline void trace_vfio_iommu_map_notify(const char * op, uint64_t iova_start, uint64_t iova_end)
+{
+ if (true) {
+ _nocheck__trace_vfio_iommu_map_notify(op, iova_start, iova_end);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_ADD_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_add_skip(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_listener_region_add_skip(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_add_skip(start, end);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_ADD_IOMMU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_add_iommu(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_listener_region_add_iommu(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_add_iommu(start, end);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_ADD_RAM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_add_ram(uint64_t iova_start, uint64_t iova_end, void * vaddr)
+{
+}
+
+static inline void trace_vfio_listener_region_add_ram(uint64_t iova_start, uint64_t iova_end, void * vaddr)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_add_ram(iova_start, iova_end, vaddr);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_ADD_NO_DMA_MAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_add_no_dma_map(const char * name, uint64_t iova, uint64_t size, uint64_t page_size)
+{
+}
+
+static inline void trace_vfio_listener_region_add_no_dma_map(const char * name, uint64_t iova, uint64_t size, uint64_t page_size)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_add_no_dma_map(name, iova, size, page_size);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_DEL_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_del_skip(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_listener_region_del_skip(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_del_skip(start, end);
+ }
+}
+
+#define TRACE_VFIO_LISTENER_REGION_DEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_listener_region_del(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_listener_region_del(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_listener_region_del(start, end);
+ }
+}
+
+#define TRACE_VFIO_DISCONNECT_CONTAINER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_disconnect_container(int fd)
+{
+}
+
+static inline void trace_vfio_disconnect_container(int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_disconnect_container(fd);
+ }
+}
+
+#define TRACE_VFIO_PUT_GROUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_put_group(int fd)
+{
+}
+
+static inline void trace_vfio_put_group(int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_put_group(fd);
+ }
+}
+
+#define TRACE_VFIO_GET_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_get_device(const char * name, unsigned int flags, unsigned int num_regions, unsigned int num_irqs)
+{
+}
+
+static inline void trace_vfio_get_device(const char * name, unsigned int flags, unsigned int num_regions, unsigned int num_irqs)
+{
+ if (true) {
+ _nocheck__trace_vfio_get_device(name, flags, num_regions, num_irqs);
+ }
+}
+
+#define TRACE_VFIO_PUT_BASE_DEVICE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_put_base_device(int fd)
+{
+}
+
+static inline void trace_vfio_put_base_device(int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_put_base_device(fd);
+ }
+}
+
+#define TRACE_VFIO_REGION_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_setup(const char * dev, int index, const char * name, unsigned long flags, unsigned long offset, unsigned long size)
+{
+}
+
+static inline void trace_vfio_region_setup(const char * dev, int index, const char * name, unsigned long flags, unsigned long offset, unsigned long size)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_setup(dev, index, name, flags, offset, size);
+ }
+}
+
+#define TRACE_VFIO_REGION_MMAP_FAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_mmap_fault(const char * name, int index, unsigned long offset, unsigned long size, int fault)
+{
+}
+
+static inline void trace_vfio_region_mmap_fault(const char * name, int index, unsigned long offset, unsigned long size, int fault)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_mmap_fault(name, index, offset, size, fault);
+ }
+}
+
+#define TRACE_VFIO_REGION_MMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_mmap(const char * name, unsigned long offset, unsigned long end)
+{
+}
+
+static inline void trace_vfio_region_mmap(const char * name, unsigned long offset, unsigned long end)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_mmap(name, offset, end);
+ }
+}
+
+#define TRACE_VFIO_REGION_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_exit(const char * name, int index)
+{
+}
+
+static inline void trace_vfio_region_exit(const char * name, int index)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_exit(name, index);
+ }
+}
+
+#define TRACE_VFIO_REGION_FINALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_finalize(const char * name, int index)
+{
+}
+
+static inline void trace_vfio_region_finalize(const char * name, int index)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_finalize(name, index);
+ }
+}
+
+#define TRACE_VFIO_REGION_MMAPS_SET_ENABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_mmaps_set_enabled(const char * name, bool enabled)
+{
+}
+
+static inline void trace_vfio_region_mmaps_set_enabled(const char * name, bool enabled)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_mmaps_set_enabled(name, enabled);
+ }
+}
+
+#define TRACE_VFIO_REGION_SPARSE_MMAP_HEADER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_sparse_mmap_header(const char * name, int index, int nr_areas)
+{
+}
+
+static inline void trace_vfio_region_sparse_mmap_header(const char * name, int index, int nr_areas)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_sparse_mmap_header(name, index, nr_areas);
+ }
+}
+
+#define TRACE_VFIO_REGION_SPARSE_MMAP_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_region_sparse_mmap_entry(int i, unsigned long start, unsigned long end)
+{
+}
+
+static inline void trace_vfio_region_sparse_mmap_entry(int i, unsigned long start, unsigned long end)
+{
+ if (true) {
+ _nocheck__trace_vfio_region_sparse_mmap_entry(i, start, end);
+ }
+}
+
+#define TRACE_VFIO_GET_DEV_REGION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_get_dev_region(const char * name, int index, uint32_t type, uint32_t subtype)
+{
+}
+
+static inline void trace_vfio_get_dev_region(const char * name, int index, uint32_t type, uint32_t subtype)
+{
+ if (true) {
+ _nocheck__trace_vfio_get_dev_region(name, index, type, subtype);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_BASE_DEVICE_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_base_device_init(char * name, int groupid)
+{
+}
+
+static inline void trace_vfio_platform_base_device_init(char * name, int groupid)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_base_device_init(name, groupid);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_REALIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_realize(char * name, char * compat)
+{
+}
+
+static inline void trace_vfio_platform_realize(char * name, char * compat)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_realize(name, compat);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_EOI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_eoi(int pin, int fd)
+{
+}
+
+static inline void trace_vfio_platform_eoi(int pin, int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_eoi(pin, fd);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_INTP_MMAP_ENABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_intp_mmap_enable(int pin)
+{
+}
+
+static inline void trace_vfio_platform_intp_mmap_enable(int pin)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_intp_mmap_enable(pin);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_INTP_INTERRUPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_intp_interrupt(int pin, int fd)
+{
+}
+
+static inline void trace_vfio_platform_intp_interrupt(int pin, int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_intp_interrupt(pin, fd);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_INTP_INJECT_PENDING_LOCKHELD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_intp_inject_pending_lockheld(int pin, int fd)
+{
+}
+
+static inline void trace_vfio_platform_intp_inject_pending_lockheld(int pin, int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_intp_inject_pending_lockheld(pin, fd);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_POPULATE_INTERRUPTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_populate_interrupts(int pin, int count, int flags)
+{
+}
+
+static inline void trace_vfio_platform_populate_interrupts(int pin, int count, int flags)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_populate_interrupts(pin, count, flags);
+ }
+}
+
+#define TRACE_VFIO_INTP_INTERRUPT_SET_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_intp_interrupt_set_pending(int index)
+{
+}
+
+static inline void trace_vfio_intp_interrupt_set_pending(int index)
+{
+ if (true) {
+ _nocheck__trace_vfio_intp_interrupt_set_pending(index);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_START_LEVEL_IRQFD_INJECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_start_level_irqfd_injection(int index, int fd, int resamplefd)
+{
+}
+
+static inline void trace_vfio_platform_start_level_irqfd_injection(int index, int fd, int resamplefd)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_start_level_irqfd_injection(index, fd, resamplefd);
+ }
+}
+
+#define TRACE_VFIO_PLATFORM_START_EDGE_IRQFD_INJECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_platform_start_edge_irqfd_injection(int index, int fd)
+{
+}
+
+static inline void trace_vfio_platform_start_edge_irqfd_injection(int index, int fd)
+{
+ if (true) {
+ _nocheck__trace_vfio_platform_start_edge_irqfd_injection(index, fd);
+ }
+}
+
+#define TRACE_VFIO_PREREG_LISTENER_REGION_ADD_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_prereg_listener_region_add_skip(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_prereg_listener_region_add_skip(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_prereg_listener_region_add_skip(start, end);
+ }
+}
+
+#define TRACE_VFIO_PREREG_LISTENER_REGION_DEL_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_prereg_listener_region_del_skip(uint64_t start, uint64_t end)
+{
+}
+
+static inline void trace_vfio_prereg_listener_region_del_skip(uint64_t start, uint64_t end)
+{
+ if (true) {
+ _nocheck__trace_vfio_prereg_listener_region_del_skip(start, end);
+ }
+}
+
+#define TRACE_VFIO_PREREG_REGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_prereg_register(uint64_t va, uint64_t size, int ret)
+{
+}
+
+static inline void trace_vfio_prereg_register(uint64_t va, uint64_t size, int ret)
+{
+ if (true) {
+ _nocheck__trace_vfio_prereg_register(va, size, ret);
+ }
+}
+
+#define TRACE_VFIO_PREREG_UNREGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_prereg_unregister(uint64_t va, uint64_t size, int ret)
+{
+}
+
+static inline void trace_vfio_prereg_unregister(uint64_t va, uint64_t size, int ret)
+{
+ if (true) {
+ _nocheck__trace_vfio_prereg_unregister(va, size, ret);
+ }
+}
+
+#define TRACE_VFIO_SPAPR_CREATE_WINDOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_spapr_create_window(int ps, uint64_t ws, uint64_t off)
+{
+}
+
+static inline void trace_vfio_spapr_create_window(int ps, uint64_t ws, uint64_t off)
+{
+ if (true) {
+ _nocheck__trace_vfio_spapr_create_window(ps, ws, off);
+ }
+}
+
+#define TRACE_VFIO_SPAPR_REMOVE_WINDOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_spapr_remove_window(uint64_t off)
+{
+}
+
+static inline void trace_vfio_spapr_remove_window(uint64_t off)
+{
+ if (true) {
+ _nocheck__trace_vfio_spapr_remove_window(off);
+ }
+}
+
+#define TRACE_VFIO_SPAPR_GROUP_ATTACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vfio_spapr_group_attach(int groupfd, int tablefd)
+{
+}
+
+static inline void trace_vfio_spapr_group_attach(int groupfd, int tablefd)
+{
+ if (true) {
+ _nocheck__trace_vfio_spapr_group_attach(groupfd, tablefd);
+ }
+}
+#endif /* TRACE_HW_VFIO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/virtio/trace.c b/qemu2-auto-generated/hw/virtio/trace.c
new file mode 100644
index 0000000000..e3a7cd7176
--- /dev/null
+++ b/qemu2-auto-generated/hw/virtio/trace.c
@@ -0,0 +1,329 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VHOST_COMMIT_DSTATE;
+uint16_t _TRACE_VHOST_REGION_ADD_SECTION_DSTATE;
+uint16_t _TRACE_VHOST_REGION_ADD_SECTION_MERGE_DSTATE;
+uint16_t _TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_DSTATE;
+uint16_t _TRACE_VHOST_SECTION_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_END_ENTRY_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_END_EXIT_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_LISTEN_DSTATE;
+uint16_t _TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_DSTATE;
+uint16_t _TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_DSTATE;
+uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_DSTATE;
+uint16_t _TRACE_VIRTQUEUE_ALLOC_ELEMENT_DSTATE;
+uint16_t _TRACE_VIRTQUEUE_FILL_DSTATE;
+uint16_t _TRACE_VIRTQUEUE_FLUSH_DSTATE;
+uint16_t _TRACE_VIRTQUEUE_POP_DSTATE;
+uint16_t _TRACE_VIRTIO_QUEUE_NOTIFY_DSTATE;
+uint16_t _TRACE_VIRTIO_NOTIFY_IRQFD_DSTATE;
+uint16_t _TRACE_VIRTIO_NOTIFY_DSTATE;
+uint16_t _TRACE_VIRTIO_SET_STATUS_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_GUEST_NOT_READY_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_CPU_IS_STOPPED_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_POPPED_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_PUSHED_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_REQUEST_DSTATE;
+uint16_t _TRACE_VIRTIO_RNG_VM_STATE_CHANGE_DSTATE;
+uint16_t _TRACE_VIRTIO_BALLOON_BAD_ADDR_DSTATE;
+uint16_t _TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_DSTATE;
+uint16_t _TRACE_VIRTIO_BALLOON_GET_CONFIG_DSTATE;
+uint16_t _TRACE_VIRTIO_BALLOON_SET_CONFIG_DSTATE;
+uint16_t _TRACE_VIRTIO_BALLOON_TO_TARGET_DSTATE;
+TraceEvent _TRACE_VHOST_COMMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_commit",
+ .sstate = TRACE_VHOST_COMMIT_ENABLED,
+ .dstate = &_TRACE_VHOST_COMMIT_DSTATE
+};
+TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_region_add_section",
+ .sstate = TRACE_VHOST_REGION_ADD_SECTION_ENABLED,
+ .dstate = &_TRACE_VHOST_REGION_ADD_SECTION_DSTATE
+};
+TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_MERGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_region_add_section_merge",
+ .sstate = TRACE_VHOST_REGION_ADD_SECTION_MERGE_ENABLED,
+ .dstate = &_TRACE_VHOST_REGION_ADD_SECTION_MERGE_DSTATE
+};
+TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_region_add_section_aligned",
+ .sstate = TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_ENABLED,
+ .dstate = &_TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_DSTATE
+};
+TraceEvent _TRACE_VHOST_SECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_section",
+ .sstate = TRACE_VHOST_SECTION_ENABLED,
+ .dstate = &_TRACE_VHOST_SECTION_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_END_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_end_entry",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_END_ENTRY_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_END_ENTRY_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_END_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_end_exit",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_END_EXIT_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_END_EXIT_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_fault_handler",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_fault_handler_loop",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_fault_handler_found",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_LISTEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_listen",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_LISTEN_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_LISTEN_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_set_mem_table_postcopy",
+ .sstate = TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_set_mem_table_withfd",
+ .sstate = TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_waker",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_WAKER_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_WAKER_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_waker_found",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_DSTATE
+};
+TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_postcopy_waker_nomatch",
+ .sstate = TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_DSTATE
+};
+TraceEvent _TRACE_VIRTQUEUE_ALLOC_ELEMENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtqueue_alloc_element",
+ .sstate = TRACE_VIRTQUEUE_ALLOC_ELEMENT_ENABLED,
+ .dstate = &_TRACE_VIRTQUEUE_ALLOC_ELEMENT_DSTATE
+};
+TraceEvent _TRACE_VIRTQUEUE_FILL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtqueue_fill",
+ .sstate = TRACE_VIRTQUEUE_FILL_ENABLED,
+ .dstate = &_TRACE_VIRTQUEUE_FILL_DSTATE
+};
+TraceEvent _TRACE_VIRTQUEUE_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtqueue_flush",
+ .sstate = TRACE_VIRTQUEUE_FLUSH_ENABLED,
+ .dstate = &_TRACE_VIRTQUEUE_FLUSH_DSTATE
+};
+TraceEvent _TRACE_VIRTQUEUE_POP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtqueue_pop",
+ .sstate = TRACE_VIRTQUEUE_POP_ENABLED,
+ .dstate = &_TRACE_VIRTQUEUE_POP_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_QUEUE_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_queue_notify",
+ .sstate = TRACE_VIRTIO_QUEUE_NOTIFY_ENABLED,
+ .dstate = &_TRACE_VIRTIO_QUEUE_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_NOTIFY_IRQFD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_notify_irqfd",
+ .sstate = TRACE_VIRTIO_NOTIFY_IRQFD_ENABLED,
+ .dstate = &_TRACE_VIRTIO_NOTIFY_IRQFD_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_notify",
+ .sstate = TRACE_VIRTIO_NOTIFY_ENABLED,
+ .dstate = &_TRACE_VIRTIO_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_SET_STATUS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_set_status",
+ .sstate = TRACE_VIRTIO_SET_STATUS_ENABLED,
+ .dstate = &_TRACE_VIRTIO_SET_STATUS_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_GUEST_NOT_READY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_guest_not_ready",
+ .sstate = TRACE_VIRTIO_RNG_GUEST_NOT_READY_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_GUEST_NOT_READY_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_CPU_IS_STOPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_cpu_is_stopped",
+ .sstate = TRACE_VIRTIO_RNG_CPU_IS_STOPPED_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_CPU_IS_STOPPED_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_POPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_popped",
+ .sstate = TRACE_VIRTIO_RNG_POPPED_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_POPPED_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_PUSHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_pushed",
+ .sstate = TRACE_VIRTIO_RNG_PUSHED_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_PUSHED_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_request",
+ .sstate = TRACE_VIRTIO_RNG_REQUEST_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_REQUEST_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_RNG_VM_STATE_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_rng_vm_state_change",
+ .sstate = TRACE_VIRTIO_RNG_VM_STATE_CHANGE_ENABLED,
+ .dstate = &_TRACE_VIRTIO_RNG_VM_STATE_CHANGE_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BALLOON_BAD_ADDR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_balloon_bad_addr",
+ .sstate = TRACE_VIRTIO_BALLOON_BAD_ADDR_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BALLOON_BAD_ADDR_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_balloon_handle_output",
+ .sstate = TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BALLOON_GET_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_balloon_get_config",
+ .sstate = TRACE_VIRTIO_BALLOON_GET_CONFIG_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BALLOON_GET_CONFIG_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BALLOON_SET_CONFIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_balloon_set_config",
+ .sstate = TRACE_VIRTIO_BALLOON_SET_CONFIG_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BALLOON_SET_CONFIG_DSTATE
+};
+TraceEvent _TRACE_VIRTIO_BALLOON_TO_TARGET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "virtio_balloon_to_target",
+ .sstate = TRACE_VIRTIO_BALLOON_TO_TARGET_ENABLED,
+ .dstate = &_TRACE_VIRTIO_BALLOON_TO_TARGET_DSTATE
+};
+TraceEvent *hw_virtio_trace_events[] = {
+ &_TRACE_VHOST_COMMIT_EVENT,
+ &_TRACE_VHOST_REGION_ADD_SECTION_EVENT,
+ &_TRACE_VHOST_REGION_ADD_SECTION_MERGE_EVENT,
+ &_TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_EVENT,
+ &_TRACE_VHOST_SECTION_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_END_ENTRY_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_END_EXIT_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_LISTEN_EVENT,
+ &_TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_EVENT,
+ &_TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_WAKER_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_EVENT,
+ &_TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_EVENT,
+ &_TRACE_VIRTQUEUE_ALLOC_ELEMENT_EVENT,
+ &_TRACE_VIRTQUEUE_FILL_EVENT,
+ &_TRACE_VIRTQUEUE_FLUSH_EVENT,
+ &_TRACE_VIRTQUEUE_POP_EVENT,
+ &_TRACE_VIRTIO_QUEUE_NOTIFY_EVENT,
+ &_TRACE_VIRTIO_NOTIFY_IRQFD_EVENT,
+ &_TRACE_VIRTIO_NOTIFY_EVENT,
+ &_TRACE_VIRTIO_SET_STATUS_EVENT,
+ &_TRACE_VIRTIO_RNG_GUEST_NOT_READY_EVENT,
+ &_TRACE_VIRTIO_RNG_CPU_IS_STOPPED_EVENT,
+ &_TRACE_VIRTIO_RNG_POPPED_EVENT,
+ &_TRACE_VIRTIO_RNG_PUSHED_EVENT,
+ &_TRACE_VIRTIO_RNG_REQUEST_EVENT,
+ &_TRACE_VIRTIO_RNG_VM_STATE_CHANGE_EVENT,
+ &_TRACE_VIRTIO_BALLOON_BAD_ADDR_EVENT,
+ &_TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_EVENT,
+ &_TRACE_VIRTIO_BALLOON_GET_CONFIG_EVENT,
+ &_TRACE_VIRTIO_BALLOON_SET_CONFIG_EVENT,
+ &_TRACE_VIRTIO_BALLOON_TO_TARGET_EVENT,
+ NULL,
+};
+
+static void trace_hw_virtio_register_events(void)
+{
+ trace_event_register_group(hw_virtio_trace_events);
+}
+trace_init(trace_hw_virtio_register_events)
diff --git a/qemu2-auto-generated/hw/virtio/trace.h b/qemu2-auto-generated/hw/virtio/trace.h
new file mode 100644
index 0000000000..4b4d3daec8
--- /dev/null
+++ b/qemu2-auto-generated/hw/virtio/trace.h
@@ -0,0 +1,604 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_VIRTIO_GENERATED_TRACERS_H
+#define TRACE_HW_VIRTIO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VHOST_COMMIT_EVENT;
+extern TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_EVENT;
+extern TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_MERGE_EVENT;
+extern TraceEvent _TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_EVENT;
+extern TraceEvent _TRACE_VHOST_SECTION_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_END_ENTRY_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_END_EXIT_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_LISTEN_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_EVENT;
+extern TraceEvent _TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_EVENT;
+extern TraceEvent _TRACE_VIRTQUEUE_ALLOC_ELEMENT_EVENT;
+extern TraceEvent _TRACE_VIRTQUEUE_FILL_EVENT;
+extern TraceEvent _TRACE_VIRTQUEUE_FLUSH_EVENT;
+extern TraceEvent _TRACE_VIRTQUEUE_POP_EVENT;
+extern TraceEvent _TRACE_VIRTIO_QUEUE_NOTIFY_EVENT;
+extern TraceEvent _TRACE_VIRTIO_NOTIFY_IRQFD_EVENT;
+extern TraceEvent _TRACE_VIRTIO_NOTIFY_EVENT;
+extern TraceEvent _TRACE_VIRTIO_SET_STATUS_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_GUEST_NOT_READY_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_CPU_IS_STOPPED_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_POPPED_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_PUSHED_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_REQUEST_EVENT;
+extern TraceEvent _TRACE_VIRTIO_RNG_VM_STATE_CHANGE_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BALLOON_BAD_ADDR_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BALLOON_GET_CONFIG_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BALLOON_SET_CONFIG_EVENT;
+extern TraceEvent _TRACE_VIRTIO_BALLOON_TO_TARGET_EVENT;
+extern uint16_t _TRACE_VHOST_COMMIT_DSTATE;
+extern uint16_t _TRACE_VHOST_REGION_ADD_SECTION_DSTATE;
+extern uint16_t _TRACE_VHOST_REGION_ADD_SECTION_MERGE_DSTATE;
+extern uint16_t _TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_DSTATE;
+extern uint16_t _TRACE_VHOST_SECTION_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_END_ENTRY_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_END_EXIT_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_LISTEN_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_DSTATE;
+extern uint16_t _TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_DSTATE;
+extern uint16_t _TRACE_VIRTQUEUE_ALLOC_ELEMENT_DSTATE;
+extern uint16_t _TRACE_VIRTQUEUE_FILL_DSTATE;
+extern uint16_t _TRACE_VIRTQUEUE_FLUSH_DSTATE;
+extern uint16_t _TRACE_VIRTQUEUE_POP_DSTATE;
+extern uint16_t _TRACE_VIRTIO_QUEUE_NOTIFY_DSTATE;
+extern uint16_t _TRACE_VIRTIO_NOTIFY_IRQFD_DSTATE;
+extern uint16_t _TRACE_VIRTIO_NOTIFY_DSTATE;
+extern uint16_t _TRACE_VIRTIO_SET_STATUS_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_GUEST_NOT_READY_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_CPU_IS_STOPPED_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_POPPED_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_PUSHED_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_REQUEST_DSTATE;
+extern uint16_t _TRACE_VIRTIO_RNG_VM_STATE_CHANGE_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BALLOON_BAD_ADDR_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BALLOON_GET_CONFIG_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BALLOON_SET_CONFIG_DSTATE;
+extern uint16_t _TRACE_VIRTIO_BALLOON_TO_TARGET_DSTATE;
+#define TRACE_VHOST_COMMIT_ENABLED 1
+#define TRACE_VHOST_REGION_ADD_SECTION_ENABLED 1
+#define TRACE_VHOST_REGION_ADD_SECTION_MERGE_ENABLED 1
+#define TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_ENABLED 1
+#define TRACE_VHOST_SECTION_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_END_ENTRY_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_END_EXIT_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_LISTEN_ENABLED 1
+#define TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_ENABLED 1
+#define TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_ENABLED 1
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_ENABLED 1
+#define TRACE_VIRTQUEUE_ALLOC_ELEMENT_ENABLED 1
+#define TRACE_VIRTQUEUE_FILL_ENABLED 1
+#define TRACE_VIRTQUEUE_FLUSH_ENABLED 1
+#define TRACE_VIRTQUEUE_POP_ENABLED 1
+#define TRACE_VIRTIO_QUEUE_NOTIFY_ENABLED 1
+#define TRACE_VIRTIO_NOTIFY_IRQFD_ENABLED 1
+#define TRACE_VIRTIO_NOTIFY_ENABLED 1
+#define TRACE_VIRTIO_SET_STATUS_ENABLED 1
+#define TRACE_VIRTIO_RNG_GUEST_NOT_READY_ENABLED 1
+#define TRACE_VIRTIO_RNG_CPU_IS_STOPPED_ENABLED 1
+#define TRACE_VIRTIO_RNG_POPPED_ENABLED 1
+#define TRACE_VIRTIO_RNG_PUSHED_ENABLED 1
+#define TRACE_VIRTIO_RNG_REQUEST_ENABLED 1
+#define TRACE_VIRTIO_RNG_VM_STATE_CHANGE_ENABLED 1
+#define TRACE_VIRTIO_BALLOON_BAD_ADDR_ENABLED 1
+#define TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_ENABLED 1
+#define TRACE_VIRTIO_BALLOON_GET_CONFIG_ENABLED 1
+#define TRACE_VIRTIO_BALLOON_SET_CONFIG_ENABLED 1
+#define TRACE_VIRTIO_BALLOON_TO_TARGET_ENABLED 1
+
+#define TRACE_VHOST_COMMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_commit(bool started, bool changed)
+{
+}
+
+static inline void trace_vhost_commit(bool started, bool changed)
+{
+ if (true) {
+ _nocheck__trace_vhost_commit(started, changed);
+ }
+}
+
+#define TRACE_VHOST_REGION_ADD_SECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_region_add_section(const char * name, uint64_t gpa, uint64_t size, uint64_t host)
+{
+}
+
+static inline void trace_vhost_region_add_section(const char * name, uint64_t gpa, uint64_t size, uint64_t host)
+{
+ if (true) {
+ _nocheck__trace_vhost_region_add_section(name, gpa, size, host);
+ }
+}
+
+#define TRACE_VHOST_REGION_ADD_SECTION_MERGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_region_add_section_merge(const char * name, uint64_t new_size, uint64_t gpa, uint64_t owr)
+{
+}
+
+static inline void trace_vhost_region_add_section_merge(const char * name, uint64_t new_size, uint64_t gpa, uint64_t owr)
+{
+ if (true) {
+ _nocheck__trace_vhost_region_add_section_merge(name, new_size, gpa, owr);
+ }
+}
+
+#define TRACE_VHOST_REGION_ADD_SECTION_ALIGNED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_region_add_section_aligned(const char * name, uint64_t gpa, uint64_t size, uint64_t host)
+{
+}
+
+static inline void trace_vhost_region_add_section_aligned(const char * name, uint64_t gpa, uint64_t size, uint64_t host)
+{
+ if (true) {
+ _nocheck__trace_vhost_region_add_section_aligned(name, gpa, size, host);
+ }
+}
+
+#define TRACE_VHOST_SECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_section(const char * name, int r)
+{
+}
+
+static inline void trace_vhost_section(const char * name, int r)
+{
+ if (true) {
+ _nocheck__trace_vhost_section(name, r);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_END_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_end_entry(void)
+{
+}
+
+static inline void trace_vhost_user_postcopy_end_entry(void)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_end_entry();
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_END_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_end_exit(void)
+{
+}
+
+static inline void trace_vhost_user_postcopy_end_exit(void)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_end_exit();
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_fault_handler(const char * name, uint64_t fault_address, int nregions)
+{
+}
+
+static inline void trace_vhost_user_postcopy_fault_handler(const char * name, uint64_t fault_address, int nregions)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_fault_handler(name, fault_address, nregions);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_fault_handler_loop(int i, uint64_t client_base, uint64_t size)
+{
+}
+
+static inline void trace_vhost_user_postcopy_fault_handler_loop(int i, uint64_t client_base, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_fault_handler_loop(i, client_base, size);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_FAULT_HANDLER_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_fault_handler_found(int i, uint64_t region_offset, uint64_t rb_offset)
+{
+}
+
+static inline void trace_vhost_user_postcopy_fault_handler_found(int i, uint64_t region_offset, uint64_t rb_offset)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_fault_handler_found(i, region_offset, rb_offset);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_LISTEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_listen(void)
+{
+}
+
+static inline void trace_vhost_user_postcopy_listen(void)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_listen();
+ }
+}
+
+#define TRACE_VHOST_USER_SET_MEM_TABLE_POSTCOPY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_set_mem_table_postcopy(uint64_t client_addr, uint64_t qhva, int reply_i, int region_i)
+{
+}
+
+static inline void trace_vhost_user_set_mem_table_postcopy(uint64_t client_addr, uint64_t qhva, int reply_i, int region_i)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_set_mem_table_postcopy(client_addr, qhva, reply_i, region_i);
+ }
+}
+
+#define TRACE_VHOST_USER_SET_MEM_TABLE_WITHFD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_set_mem_table_withfd(int index, const char * name, uint64_t memory_size, uint64_t guest_phys_addr, uint64_t userspace_addr, uint64_t offset)
+{
+}
+
+static inline void trace_vhost_user_set_mem_table_withfd(int index, const char * name, uint64_t memory_size, uint64_t guest_phys_addr, uint64_t userspace_addr, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_set_mem_table_withfd(index, name, memory_size, guest_phys_addr, userspace_addr, offset);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_waker(const char * rb, uint64_t rb_offset)
+{
+}
+
+static inline void trace_vhost_user_postcopy_waker(const char * rb, uint64_t rb_offset)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_waker(rb, rb_offset);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_waker_found(uint64_t client_addr)
+{
+}
+
+static inline void trace_vhost_user_postcopy_waker_found(uint64_t client_addr)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_waker_found(client_addr);
+ }
+}
+
+#define TRACE_VHOST_USER_POSTCOPY_WAKER_NOMATCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_postcopy_waker_nomatch(const char * rb, uint64_t rb_offset)
+{
+}
+
+static inline void trace_vhost_user_postcopy_waker_nomatch(const char * rb, uint64_t rb_offset)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_postcopy_waker_nomatch(rb, rb_offset);
+ }
+}
+
+#define TRACE_VIRTQUEUE_ALLOC_ELEMENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtqueue_alloc_element(void * elem, size_t sz, unsigned in_num, unsigned out_num)
+{
+}
+
+static inline void trace_virtqueue_alloc_element(void * elem, size_t sz, unsigned in_num, unsigned out_num)
+{
+ if (true) {
+ _nocheck__trace_virtqueue_alloc_element(elem, sz, in_num, out_num);
+ }
+}
+
+#define TRACE_VIRTQUEUE_FILL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtqueue_fill(void * vq, const void * elem, unsigned int len, unsigned int idx)
+{
+}
+
+static inline void trace_virtqueue_fill(void * vq, const void * elem, unsigned int len, unsigned int idx)
+{
+ if (true) {
+ _nocheck__trace_virtqueue_fill(vq, elem, len, idx);
+ }
+}
+
+#define TRACE_VIRTQUEUE_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtqueue_flush(void * vq, unsigned int count)
+{
+}
+
+static inline void trace_virtqueue_flush(void * vq, unsigned int count)
+{
+ if (true) {
+ _nocheck__trace_virtqueue_flush(vq, count);
+ }
+}
+
+#define TRACE_VIRTQUEUE_POP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtqueue_pop(void * vq, void * elem, unsigned int in_num, unsigned int out_num)
+{
+}
+
+static inline void trace_virtqueue_pop(void * vq, void * elem, unsigned int in_num, unsigned int out_num)
+{
+ if (true) {
+ _nocheck__trace_virtqueue_pop(vq, elem, in_num, out_num);
+ }
+}
+
+#define TRACE_VIRTIO_QUEUE_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_queue_notify(void * vdev, int n, void * vq)
+{
+}
+
+static inline void trace_virtio_queue_notify(void * vdev, int n, void * vq)
+{
+ if (true) {
+ _nocheck__trace_virtio_queue_notify(vdev, n, vq);
+ }
+}
+
+#define TRACE_VIRTIO_NOTIFY_IRQFD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_notify_irqfd(void * vdev, void * vq)
+{
+}
+
+static inline void trace_virtio_notify_irqfd(void * vdev, void * vq)
+{
+ if (true) {
+ _nocheck__trace_virtio_notify_irqfd(vdev, vq);
+ }
+}
+
+#define TRACE_VIRTIO_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_notify(void * vdev, void * vq)
+{
+}
+
+static inline void trace_virtio_notify(void * vdev, void * vq)
+{
+ if (true) {
+ _nocheck__trace_virtio_notify(vdev, vq);
+ }
+}
+
+#define TRACE_VIRTIO_SET_STATUS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_set_status(void * vdev, uint8_t val)
+{
+}
+
+static inline void trace_virtio_set_status(void * vdev, uint8_t val)
+{
+ if (true) {
+ _nocheck__trace_virtio_set_status(vdev, val);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_GUEST_NOT_READY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_guest_not_ready(void * rng)
+{
+}
+
+static inline void trace_virtio_rng_guest_not_ready(void * rng)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_guest_not_ready(rng);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_CPU_IS_STOPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_cpu_is_stopped(void * rng, int size)
+{
+}
+
+static inline void trace_virtio_rng_cpu_is_stopped(void * rng, int size)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_cpu_is_stopped(rng, size);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_POPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_popped(void * rng)
+{
+}
+
+static inline void trace_virtio_rng_popped(void * rng)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_popped(rng);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_PUSHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_pushed(void * rng, size_t len)
+{
+}
+
+static inline void trace_virtio_rng_pushed(void * rng, size_t len)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_pushed(rng, len);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_request(void * rng, size_t size, unsigned quota)
+{
+}
+
+static inline void trace_virtio_rng_request(void * rng, size_t size, unsigned quota)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_request(rng, size, quota);
+ }
+}
+
+#define TRACE_VIRTIO_RNG_VM_STATE_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_rng_vm_state_change(void * rng, int running, int state)
+{
+}
+
+static inline void trace_virtio_rng_vm_state_change(void * rng, int running, int state)
+{
+ if (true) {
+ _nocheck__trace_virtio_rng_vm_state_change(rng, running, state);
+ }
+}
+
+#define TRACE_VIRTIO_BALLOON_BAD_ADDR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_balloon_bad_addr(uint64_t gpa)
+{
+}
+
+static inline void trace_virtio_balloon_bad_addr(uint64_t gpa)
+{
+ if (true) {
+ _nocheck__trace_virtio_balloon_bad_addr(gpa);
+ }
+}
+
+#define TRACE_VIRTIO_BALLOON_HANDLE_OUTPUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_balloon_handle_output(const char * name, uint64_t gpa)
+{
+}
+
+static inline void trace_virtio_balloon_handle_output(const char * name, uint64_t gpa)
+{
+ if (true) {
+ _nocheck__trace_virtio_balloon_handle_output(name, gpa);
+ }
+}
+
+#define TRACE_VIRTIO_BALLOON_GET_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_balloon_get_config(uint32_t num_pages, uint32_t actual)
+{
+}
+
+static inline void trace_virtio_balloon_get_config(uint32_t num_pages, uint32_t actual)
+{
+ if (true) {
+ _nocheck__trace_virtio_balloon_get_config(num_pages, actual);
+ }
+}
+
+#define TRACE_VIRTIO_BALLOON_SET_CONFIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_balloon_set_config(uint32_t actual, uint32_t oldactual)
+{
+}
+
+static inline void trace_virtio_balloon_set_config(uint32_t actual, uint32_t oldactual)
+{
+ if (true) {
+ _nocheck__trace_virtio_balloon_set_config(actual, oldactual);
+ }
+}
+
+#define TRACE_VIRTIO_BALLOON_TO_TARGET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_virtio_balloon_to_target(uint64_t target, uint32_t num_pages)
+{
+}
+
+static inline void trace_virtio_balloon_to_target(uint64_t target, uint32_t num_pages)
+{
+ if (true) {
+ _nocheck__trace_virtio_balloon_to_target(target, num_pages);
+ }
+}
+#endif /* TRACE_HW_VIRTIO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/hw/xen/trace.c b/qemu2-auto-generated/hw/xen/trace.c
new file mode 100644
index 0000000000..8933c3874f
--- /dev/null
+++ b/qemu2-auto-generated/hw/xen/trace.c
@@ -0,0 +1,113 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_XEN_DEFAULT_IOREQ_SERVER_DSTATE;
+uint16_t _TRACE_XEN_IOREQ_SERVER_CREATE_DSTATE;
+uint16_t _TRACE_XEN_IOREQ_SERVER_DESTROY_DSTATE;
+uint16_t _TRACE_XEN_IOREQ_SERVER_STATE_DSTATE;
+uint16_t _TRACE_XEN_MAP_MMIO_RANGE_DSTATE;
+uint16_t _TRACE_XEN_UNMAP_MMIO_RANGE_DSTATE;
+uint16_t _TRACE_XEN_MAP_PORTIO_RANGE_DSTATE;
+uint16_t _TRACE_XEN_UNMAP_PORTIO_RANGE_DSTATE;
+uint16_t _TRACE_XEN_MAP_PCIDEV_DSTATE;
+uint16_t _TRACE_XEN_UNMAP_PCIDEV_DSTATE;
+uint16_t _TRACE_XEN_DOMID_RESTRICT_DSTATE;
+TraceEvent _TRACE_XEN_DEFAULT_IOREQ_SERVER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_default_ioreq_server",
+ .sstate = TRACE_XEN_DEFAULT_IOREQ_SERVER_ENABLED,
+ .dstate = &_TRACE_XEN_DEFAULT_IOREQ_SERVER_DSTATE
+};
+TraceEvent _TRACE_XEN_IOREQ_SERVER_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_ioreq_server_create",
+ .sstate = TRACE_XEN_IOREQ_SERVER_CREATE_ENABLED,
+ .dstate = &_TRACE_XEN_IOREQ_SERVER_CREATE_DSTATE
+};
+TraceEvent _TRACE_XEN_IOREQ_SERVER_DESTROY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_ioreq_server_destroy",
+ .sstate = TRACE_XEN_IOREQ_SERVER_DESTROY_ENABLED,
+ .dstate = &_TRACE_XEN_IOREQ_SERVER_DESTROY_DSTATE
+};
+TraceEvent _TRACE_XEN_IOREQ_SERVER_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_ioreq_server_state",
+ .sstate = TRACE_XEN_IOREQ_SERVER_STATE_ENABLED,
+ .dstate = &_TRACE_XEN_IOREQ_SERVER_STATE_DSTATE
+};
+TraceEvent _TRACE_XEN_MAP_MMIO_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_map_mmio_range",
+ .sstate = TRACE_XEN_MAP_MMIO_RANGE_ENABLED,
+ .dstate = &_TRACE_XEN_MAP_MMIO_RANGE_DSTATE
+};
+TraceEvent _TRACE_XEN_UNMAP_MMIO_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_unmap_mmio_range",
+ .sstate = TRACE_XEN_UNMAP_MMIO_RANGE_ENABLED,
+ .dstate = &_TRACE_XEN_UNMAP_MMIO_RANGE_DSTATE
+};
+TraceEvent _TRACE_XEN_MAP_PORTIO_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_map_portio_range",
+ .sstate = TRACE_XEN_MAP_PORTIO_RANGE_ENABLED,
+ .dstate = &_TRACE_XEN_MAP_PORTIO_RANGE_DSTATE
+};
+TraceEvent _TRACE_XEN_UNMAP_PORTIO_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_unmap_portio_range",
+ .sstate = TRACE_XEN_UNMAP_PORTIO_RANGE_ENABLED,
+ .dstate = &_TRACE_XEN_UNMAP_PORTIO_RANGE_DSTATE
+};
+TraceEvent _TRACE_XEN_MAP_PCIDEV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_map_pcidev",
+ .sstate = TRACE_XEN_MAP_PCIDEV_ENABLED,
+ .dstate = &_TRACE_XEN_MAP_PCIDEV_DSTATE
+};
+TraceEvent _TRACE_XEN_UNMAP_PCIDEV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_unmap_pcidev",
+ .sstate = TRACE_XEN_UNMAP_PCIDEV_ENABLED,
+ .dstate = &_TRACE_XEN_UNMAP_PCIDEV_DSTATE
+};
+TraceEvent _TRACE_XEN_DOMID_RESTRICT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xen_domid_restrict",
+ .sstate = TRACE_XEN_DOMID_RESTRICT_ENABLED,
+ .dstate = &_TRACE_XEN_DOMID_RESTRICT_DSTATE
+};
+TraceEvent *hw_xen_trace_events[] = {
+ &_TRACE_XEN_DEFAULT_IOREQ_SERVER_EVENT,
+ &_TRACE_XEN_IOREQ_SERVER_CREATE_EVENT,
+ &_TRACE_XEN_IOREQ_SERVER_DESTROY_EVENT,
+ &_TRACE_XEN_IOREQ_SERVER_STATE_EVENT,
+ &_TRACE_XEN_MAP_MMIO_RANGE_EVENT,
+ &_TRACE_XEN_UNMAP_MMIO_RANGE_EVENT,
+ &_TRACE_XEN_MAP_PORTIO_RANGE_EVENT,
+ &_TRACE_XEN_UNMAP_PORTIO_RANGE_EVENT,
+ &_TRACE_XEN_MAP_PCIDEV_EVENT,
+ &_TRACE_XEN_UNMAP_PCIDEV_EVENT,
+ &_TRACE_XEN_DOMID_RESTRICT_EVENT,
+ NULL,
+};
+
+static void trace_hw_xen_register_events(void)
+{
+ trace_event_register_group(hw_xen_trace_events);
+}
+trace_init(trace_hw_xen_register_events)
diff --git a/qemu2-auto-generated/hw/xen/trace.h b/qemu2-auto-generated/hw/xen/trace.h
new file mode 100644
index 0000000000..89ad4333da
--- /dev/null
+++ b/qemu2-auto-generated/hw/xen/trace.h
@@ -0,0 +1,196 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_HW_XEN_GENERATED_TRACERS_H
+#define TRACE_HW_XEN_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_XEN_DEFAULT_IOREQ_SERVER_EVENT;
+extern TraceEvent _TRACE_XEN_IOREQ_SERVER_CREATE_EVENT;
+extern TraceEvent _TRACE_XEN_IOREQ_SERVER_DESTROY_EVENT;
+extern TraceEvent _TRACE_XEN_IOREQ_SERVER_STATE_EVENT;
+extern TraceEvent _TRACE_XEN_MAP_MMIO_RANGE_EVENT;
+extern TraceEvent _TRACE_XEN_UNMAP_MMIO_RANGE_EVENT;
+extern TraceEvent _TRACE_XEN_MAP_PORTIO_RANGE_EVENT;
+extern TraceEvent _TRACE_XEN_UNMAP_PORTIO_RANGE_EVENT;
+extern TraceEvent _TRACE_XEN_MAP_PCIDEV_EVENT;
+extern TraceEvent _TRACE_XEN_UNMAP_PCIDEV_EVENT;
+extern TraceEvent _TRACE_XEN_DOMID_RESTRICT_EVENT;
+extern uint16_t _TRACE_XEN_DEFAULT_IOREQ_SERVER_DSTATE;
+extern uint16_t _TRACE_XEN_IOREQ_SERVER_CREATE_DSTATE;
+extern uint16_t _TRACE_XEN_IOREQ_SERVER_DESTROY_DSTATE;
+extern uint16_t _TRACE_XEN_IOREQ_SERVER_STATE_DSTATE;
+extern uint16_t _TRACE_XEN_MAP_MMIO_RANGE_DSTATE;
+extern uint16_t _TRACE_XEN_UNMAP_MMIO_RANGE_DSTATE;
+extern uint16_t _TRACE_XEN_MAP_PORTIO_RANGE_DSTATE;
+extern uint16_t _TRACE_XEN_UNMAP_PORTIO_RANGE_DSTATE;
+extern uint16_t _TRACE_XEN_MAP_PCIDEV_DSTATE;
+extern uint16_t _TRACE_XEN_UNMAP_PCIDEV_DSTATE;
+extern uint16_t _TRACE_XEN_DOMID_RESTRICT_DSTATE;
+#define TRACE_XEN_DEFAULT_IOREQ_SERVER_ENABLED 1
+#define TRACE_XEN_IOREQ_SERVER_CREATE_ENABLED 1
+#define TRACE_XEN_IOREQ_SERVER_DESTROY_ENABLED 1
+#define TRACE_XEN_IOREQ_SERVER_STATE_ENABLED 1
+#define TRACE_XEN_MAP_MMIO_RANGE_ENABLED 1
+#define TRACE_XEN_UNMAP_MMIO_RANGE_ENABLED 1
+#define TRACE_XEN_MAP_PORTIO_RANGE_ENABLED 1
+#define TRACE_XEN_UNMAP_PORTIO_RANGE_ENABLED 1
+#define TRACE_XEN_MAP_PCIDEV_ENABLED 1
+#define TRACE_XEN_UNMAP_PCIDEV_ENABLED 1
+#define TRACE_XEN_DOMID_RESTRICT_ENABLED 1
+
+#define TRACE_XEN_DEFAULT_IOREQ_SERVER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_default_ioreq_server(void)
+{
+}
+
+static inline void trace_xen_default_ioreq_server(void)
+{
+ if (true) {
+ _nocheck__trace_xen_default_ioreq_server();
+ }
+}
+
+#define TRACE_XEN_IOREQ_SERVER_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_ioreq_server_create(uint32_t id)
+{
+}
+
+static inline void trace_xen_ioreq_server_create(uint32_t id)
+{
+ if (true) {
+ _nocheck__trace_xen_ioreq_server_create(id);
+ }
+}
+
+#define TRACE_XEN_IOREQ_SERVER_DESTROY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_ioreq_server_destroy(uint32_t id)
+{
+}
+
+static inline void trace_xen_ioreq_server_destroy(uint32_t id)
+{
+ if (true) {
+ _nocheck__trace_xen_ioreq_server_destroy(id);
+ }
+}
+
+#define TRACE_XEN_IOREQ_SERVER_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_ioreq_server_state(uint32_t id, bool enable)
+{
+}
+
+static inline void trace_xen_ioreq_server_state(uint32_t id, bool enable)
+{
+ if (true) {
+ _nocheck__trace_xen_ioreq_server_state(id, enable);
+ }
+}
+
+#define TRACE_XEN_MAP_MMIO_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_map_mmio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+}
+
+static inline void trace_xen_map_mmio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+ if (true) {
+ _nocheck__trace_xen_map_mmio_range(id, start_addr, end_addr);
+ }
+}
+
+#define TRACE_XEN_UNMAP_MMIO_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_unmap_mmio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+}
+
+static inline void trace_xen_unmap_mmio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+ if (true) {
+ _nocheck__trace_xen_unmap_mmio_range(id, start_addr, end_addr);
+ }
+}
+
+#define TRACE_XEN_MAP_PORTIO_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_map_portio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+}
+
+static inline void trace_xen_map_portio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+ if (true) {
+ _nocheck__trace_xen_map_portio_range(id, start_addr, end_addr);
+ }
+}
+
+#define TRACE_XEN_UNMAP_PORTIO_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_unmap_portio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+}
+
+static inline void trace_xen_unmap_portio_range(uint32_t id, uint64_t start_addr, uint64_t end_addr)
+{
+ if (true) {
+ _nocheck__trace_xen_unmap_portio_range(id, start_addr, end_addr);
+ }
+}
+
+#define TRACE_XEN_MAP_PCIDEV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_map_pcidev(uint32_t id, uint8_t bus, uint8_t dev, uint8_t func)
+{
+}
+
+static inline void trace_xen_map_pcidev(uint32_t id, uint8_t bus, uint8_t dev, uint8_t func)
+{
+ if (true) {
+ _nocheck__trace_xen_map_pcidev(id, bus, dev, func);
+ }
+}
+
+#define TRACE_XEN_UNMAP_PCIDEV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_unmap_pcidev(uint32_t id, uint8_t bus, uint8_t dev, uint8_t func)
+{
+}
+
+static inline void trace_xen_unmap_pcidev(uint32_t id, uint8_t bus, uint8_t dev, uint8_t func)
+{
+ if (true) {
+ _nocheck__trace_xen_unmap_pcidev(id, bus, dev, func);
+ }
+}
+
+#define TRACE_XEN_DOMID_RESTRICT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xen_domid_restrict(int err)
+{
+}
+
+static inline void trace_xen_domid_restrict(int err)
+{
+ if (true) {
+ _nocheck__trace_xen_domid_restrict(err);
+ }
+}
+#endif /* TRACE_HW_XEN_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/io/trace.c b/qemu2-auto-generated/io/trace.c
new file mode 100644
index 0000000000..3383fbac72
--- /dev/null
+++ b/qemu2-auto-generated/io/trace.c
@@ -0,0 +1,464 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_QIO_TASK_NEW_DSTATE;
+uint16_t _TRACE_QIO_TASK_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_TASK_THREAD_START_DSTATE;
+uint16_t _TRACE_QIO_TASK_THREAD_RUN_DSTATE;
+uint16_t _TRACE_QIO_TASK_THREAD_EXIT_DSTATE;
+uint16_t _TRACE_QIO_TASK_THREAD_RESULT_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_NEW_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_NEW_FD_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_FILE_NEW_FD_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_FILE_NEW_PATH_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_NEW_SERVER_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_COMMAND_NEW_PID_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_COMMAND_ABORT_DSTATE;
+uint16_t _TRACE_QIO_CHANNEL_COMMAND_WAIT_DSTATE;
+TraceEvent _TRACE_QIO_TASK_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_new",
+ .sstate = TRACE_QIO_TASK_NEW_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_NEW_DSTATE
+};
+TraceEvent _TRACE_QIO_TASK_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_complete",
+ .sstate = TRACE_QIO_TASK_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_TASK_THREAD_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_thread_start",
+ .sstate = TRACE_QIO_TASK_THREAD_START_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_THREAD_START_DSTATE
+};
+TraceEvent _TRACE_QIO_TASK_THREAD_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_thread_run",
+ .sstate = TRACE_QIO_TASK_THREAD_RUN_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_THREAD_RUN_DSTATE
+};
+TraceEvent _TRACE_QIO_TASK_THREAD_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_thread_exit",
+ .sstate = TRACE_QIO_TASK_THREAD_EXIT_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_THREAD_EXIT_DSTATE
+};
+TraceEvent _TRACE_QIO_TASK_THREAD_RESULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_task_thread_result",
+ .sstate = TRACE_QIO_TASK_THREAD_RESULT_ENABLED,
+ .dstate = &_TRACE_QIO_TASK_THREAD_RESULT_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_new",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_NEW_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_NEW_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_NEW_FD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_new_fd",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_NEW_FD_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_NEW_FD_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_connect_sync",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_connect_async",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_connect_fail",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_connect_complete",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_listen_sync",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_listen_async",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_listen_fail",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_listen_complete",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_dgram_sync",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_dgram_async",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_dgram_fail",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_dgram_complete",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_accept",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_ACCEPT_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_accept_fail",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_socket_accept_complete",
+ .sstate = TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_FILE_NEW_FD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_file_new_fd",
+ .sstate = TRACE_QIO_CHANNEL_FILE_NEW_FD_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_FILE_NEW_FD_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_FILE_NEW_PATH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_file_new_path",
+ .sstate = TRACE_QIO_CHANNEL_FILE_NEW_PATH_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_FILE_NEW_PATH_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_new_client",
+ .sstate = TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_NEW_SERVER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_new_server",
+ .sstate = TRACE_QIO_CHANNEL_TLS_NEW_SERVER_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_NEW_SERVER_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_handshake_start",
+ .sstate = TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_handshake_pending",
+ .sstate = TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_handshake_fail",
+ .sstate = TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_handshake_complete",
+ .sstate = TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_credentials_allow",
+ .sstate = TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_tls_credentials_deny",
+ .sstate = TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_new_server",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_handshake_start",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_handshake_pending",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_handshake_reply",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_handshake_fail",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_handshake_complete",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_http_greeting",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_http_request",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_header_partial_decode",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_header_full_decode",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_payload_decode",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_encode",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_websock_close",
+ .sstate = TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_COMMAND_NEW_PID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_command_new_pid",
+ .sstate = TRACE_QIO_CHANNEL_COMMAND_NEW_PID_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_COMMAND_NEW_PID_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_command_new_spawn",
+ .sstate = TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_COMMAND_ABORT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_command_abort",
+ .sstate = TRACE_QIO_CHANNEL_COMMAND_ABORT_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_COMMAND_ABORT_DSTATE
+};
+TraceEvent _TRACE_QIO_CHANNEL_COMMAND_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qio_channel_command_wait",
+ .sstate = TRACE_QIO_CHANNEL_COMMAND_WAIT_ENABLED,
+ .dstate = &_TRACE_QIO_CHANNEL_COMMAND_WAIT_DSTATE
+};
+TraceEvent *io_trace_events[] = {
+ &_TRACE_QIO_TASK_NEW_EVENT,
+ &_TRACE_QIO_TASK_COMPLETE_EVENT,
+ &_TRACE_QIO_TASK_THREAD_START_EVENT,
+ &_TRACE_QIO_TASK_THREAD_RUN_EVENT,
+ &_TRACE_QIO_TASK_THREAD_EXIT_EVENT,
+ &_TRACE_QIO_TASK_THREAD_RESULT_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_NEW_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_NEW_FD_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_FILE_NEW_FD_EVENT,
+ &_TRACE_QIO_CHANNEL_FILE_NEW_PATH_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_NEW_SERVER_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_EVENT,
+ &_TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_EVENT,
+ &_TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_EVENT,
+ &_TRACE_QIO_CHANNEL_COMMAND_NEW_PID_EVENT,
+ &_TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_EVENT,
+ &_TRACE_QIO_CHANNEL_COMMAND_ABORT_EVENT,
+ &_TRACE_QIO_CHANNEL_COMMAND_WAIT_EVENT,
+ NULL,
+};
+
+static void trace_io_register_events(void)
+{
+ trace_event_register_group(io_trace_events);
+}
+trace_init(trace_io_register_events)
diff --git a/qemu2-auto-generated/io/trace.h b/qemu2-auto-generated/io/trace.h
new file mode 100644
index 0000000000..c0692447cd
--- /dev/null
+++ b/qemu2-auto-generated/io/trace.h
@@ -0,0 +1,859 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_IO_GENERATED_TRACERS_H
+#define TRACE_IO_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_QIO_TASK_NEW_EVENT;
+extern TraceEvent _TRACE_QIO_TASK_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_TASK_THREAD_START_EVENT;
+extern TraceEvent _TRACE_QIO_TASK_THREAD_RUN_EVENT;
+extern TraceEvent _TRACE_QIO_TASK_THREAD_EXIT_EVENT;
+extern TraceEvent _TRACE_QIO_TASK_THREAD_RESULT_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_NEW_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_NEW_FD_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_FILE_NEW_FD_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_FILE_NEW_PATH_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_NEW_SERVER_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_COMMAND_NEW_PID_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_COMMAND_ABORT_EVENT;
+extern TraceEvent _TRACE_QIO_CHANNEL_COMMAND_WAIT_EVENT;
+extern uint16_t _TRACE_QIO_TASK_NEW_DSTATE;
+extern uint16_t _TRACE_QIO_TASK_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_TASK_THREAD_START_DSTATE;
+extern uint16_t _TRACE_QIO_TASK_THREAD_RUN_DSTATE;
+extern uint16_t _TRACE_QIO_TASK_THREAD_EXIT_DSTATE;
+extern uint16_t _TRACE_QIO_TASK_THREAD_RESULT_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_NEW_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_NEW_FD_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_FILE_NEW_FD_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_FILE_NEW_PATH_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_NEW_SERVER_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_COMMAND_NEW_PID_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_COMMAND_ABORT_DSTATE;
+extern uint16_t _TRACE_QIO_CHANNEL_COMMAND_WAIT_DSTATE;
+#define TRACE_QIO_TASK_NEW_ENABLED 1
+#define TRACE_QIO_TASK_COMPLETE_ENABLED 1
+#define TRACE_QIO_TASK_THREAD_START_ENABLED 1
+#define TRACE_QIO_TASK_THREAD_RUN_ENABLED 1
+#define TRACE_QIO_TASK_THREAD_EXIT_ENABLED 1
+#define TRACE_QIO_TASK_THREAD_RESULT_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_NEW_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_NEW_FD_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_FILE_NEW_FD_ENABLED 1
+#define TRACE_QIO_CHANNEL_FILE_NEW_PATH_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_NEW_SERVER_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_ENABLED 1
+#define TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_ENABLED 1
+#define TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_ENABLED 1
+#define TRACE_QIO_CHANNEL_COMMAND_NEW_PID_ENABLED 1
+#define TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_ENABLED 1
+#define TRACE_QIO_CHANNEL_COMMAND_ABORT_ENABLED 1
+#define TRACE_QIO_CHANNEL_COMMAND_WAIT_ENABLED 1
+
+#define TRACE_QIO_TASK_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_new(void * task, void * source, void * func, void * opaque)
+{
+}
+
+static inline void trace_qio_task_new(void * task, void * source, void * func, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_qio_task_new(task, source, func, opaque);
+ }
+}
+
+#define TRACE_QIO_TASK_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_complete(void * task)
+{
+}
+
+static inline void trace_qio_task_complete(void * task)
+{
+ if (true) {
+ _nocheck__trace_qio_task_complete(task);
+ }
+}
+
+#define TRACE_QIO_TASK_THREAD_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_thread_start(void * task, void * worker, void * opaque)
+{
+}
+
+static inline void trace_qio_task_thread_start(void * task, void * worker, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_qio_task_thread_start(task, worker, opaque);
+ }
+}
+
+#define TRACE_QIO_TASK_THREAD_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_thread_run(void * task)
+{
+}
+
+static inline void trace_qio_task_thread_run(void * task)
+{
+ if (true) {
+ _nocheck__trace_qio_task_thread_run(task);
+ }
+}
+
+#define TRACE_QIO_TASK_THREAD_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_thread_exit(void * task)
+{
+}
+
+static inline void trace_qio_task_thread_exit(void * task)
+{
+ if (true) {
+ _nocheck__trace_qio_task_thread_exit(task);
+ }
+}
+
+#define TRACE_QIO_TASK_THREAD_RESULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_task_thread_result(void * task)
+{
+}
+
+static inline void trace_qio_task_thread_result(void * task)
+{
+ if (true) {
+ _nocheck__trace_qio_task_thread_result(task);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_new(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_new(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_new(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_NEW_FD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_new_fd(void * ioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_socket_new_fd(void * ioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_new_fd(ioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_connect_sync(void * ioc, void * addr)
+{
+}
+
+static inline void trace_qio_channel_socket_connect_sync(void * ioc, void * addr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_connect_sync(ioc, addr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_connect_async(void * ioc, void * addr)
+{
+}
+
+static inline void trace_qio_channel_socket_connect_async(void * ioc, void * addr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_connect_async(ioc, addr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_connect_fail(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_connect_fail(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_connect_fail(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_CONNECT_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_connect_complete(void * ioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_socket_connect_complete(void * ioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_connect_complete(ioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_listen_sync(void * ioc, void * addr)
+{
+}
+
+static inline void trace_qio_channel_socket_listen_sync(void * ioc, void * addr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_listen_sync(ioc, addr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_listen_async(void * ioc, void * addr)
+{
+}
+
+static inline void trace_qio_channel_socket_listen_async(void * ioc, void * addr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_listen_async(ioc, addr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_listen_fail(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_listen_fail(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_listen_fail(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_LISTEN_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_listen_complete(void * ioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_socket_listen_complete(void * ioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_listen_complete(ioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_dgram_sync(void * ioc, void * localAddr, void * remoteAddr)
+{
+}
+
+static inline void trace_qio_channel_socket_dgram_sync(void * ioc, void * localAddr, void * remoteAddr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_dgram_sync(ioc, localAddr, remoteAddr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_ASYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_dgram_async(void * ioc, void * localAddr, void * remoteAddr)
+{
+}
+
+static inline void trace_qio_channel_socket_dgram_async(void * ioc, void * localAddr, void * remoteAddr)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_dgram_async(ioc, localAddr, remoteAddr);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_dgram_fail(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_dgram_fail(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_dgram_fail(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_DGRAM_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_dgram_complete(void * ioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_socket_dgram_complete(void * ioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_dgram_complete(ioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_accept(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_accept(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_accept(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_accept_fail(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_socket_accept_fail(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_accept_fail(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_SOCKET_ACCEPT_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_socket_accept_complete(void * ioc, void * cioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_socket_accept_complete(void * ioc, void * cioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_socket_accept_complete(ioc, cioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_FILE_NEW_FD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_file_new_fd(void * ioc, int fd)
+{
+}
+
+static inline void trace_qio_channel_file_new_fd(void * ioc, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_file_new_fd(ioc, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_FILE_NEW_PATH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_file_new_path(void * ioc, const char * path, int flags, int mode, int fd)
+{
+}
+
+static inline void trace_qio_channel_file_new_path(void * ioc, const char * path, int flags, int mode, int fd)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_file_new_path(ioc, path, flags, mode, fd);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_NEW_CLIENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_new_client(void * ioc, void * master, void * creds, const char * hostname)
+{
+}
+
+static inline void trace_qio_channel_tls_new_client(void * ioc, void * master, void * creds, const char * hostname)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_new_client(ioc, master, creds, hostname);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_NEW_SERVER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_new_server(void * ioc, void * master, void * creds, const char * aclname)
+{
+}
+
+static inline void trace_qio_channel_tls_new_server(void * ioc, void * master, void * creds, const char * aclname)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_new_server(ioc, master, creds, aclname);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_handshake_start(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_tls_handshake_start(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_handshake_start(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_handshake_pending(void * ioc, int status)
+{
+}
+
+static inline void trace_qio_channel_tls_handshake_pending(void * ioc, int status)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_handshake_pending(ioc, status);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_handshake_fail(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_tls_handshake_fail(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_handshake_fail(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_HANDSHAKE_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_handshake_complete(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_tls_handshake_complete(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_handshake_complete(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_CREDENTIALS_ALLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_credentials_allow(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_tls_credentials_allow(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_credentials_allow(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_TLS_CREDENTIALS_DENY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_tls_credentials_deny(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_tls_credentials_deny(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_tls_credentials_deny(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_NEW_SERVER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_new_server(void * ioc, void * master)
+{
+}
+
+static inline void trace_qio_channel_websock_new_server(void * ioc, void * master)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_new_server(ioc, master);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_handshake_start(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_websock_handshake_start(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_handshake_start(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_handshake_pending(void * ioc, int status)
+{
+}
+
+static inline void trace_qio_channel_websock_handshake_pending(void * ioc, int status)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_handshake_pending(ioc, status);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_handshake_reply(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_websock_handshake_reply(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_handshake_reply(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_handshake_fail(void * ioc, const char * msg)
+{
+}
+
+static inline void trace_qio_channel_websock_handshake_fail(void * ioc, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_handshake_fail(ioc, msg);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HANDSHAKE_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_handshake_complete(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_websock_handshake_complete(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_handshake_complete(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HTTP_GREETING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_http_greeting(void * ioc, const char * greeting)
+{
+}
+
+static inline void trace_qio_channel_websock_http_greeting(void * ioc, const char * greeting)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_http_greeting(ioc, greeting);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HTTP_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_http_request(void * ioc, const char * protocols, const char * version, const char * host, const char * connection, const char * upgrade, const char * key)
+{
+}
+
+static inline void trace_qio_channel_websock_http_request(void * ioc, const char * protocols, const char * version, const char * host, const char * connection, const char * upgrade, const char * key)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_http_request(ioc, protocols, version, host, connection, upgrade, key);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HEADER_PARTIAL_DECODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_header_partial_decode(void * ioc, size_t payloadlen, unsigned char fin, unsigned char opcode, unsigned char has_mask)
+{
+}
+
+static inline void trace_qio_channel_websock_header_partial_decode(void * ioc, size_t payloadlen, unsigned char fin, unsigned char opcode, unsigned char has_mask)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_header_partial_decode(ioc, payloadlen, fin, opcode, has_mask);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_HEADER_FULL_DECODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_header_full_decode(void * ioc, size_t headerlen, size_t payloadlen, uint32_t mask)
+{
+}
+
+static inline void trace_qio_channel_websock_header_full_decode(void * ioc, size_t headerlen, size_t payloadlen, uint32_t mask)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_header_full_decode(ioc, headerlen, payloadlen, mask);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_PAYLOAD_DECODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_payload_decode(void * ioc, uint8_t opcode, size_t payload_remain)
+{
+}
+
+static inline void trace_qio_channel_websock_payload_decode(void * ioc, uint8_t opcode, size_t payload_remain)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_payload_decode(ioc, opcode, payload_remain);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_ENCODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_encode(void * ioc, uint8_t opcode, size_t payloadlen, size_t headerlen)
+{
+}
+
+static inline void trace_qio_channel_websock_encode(void * ioc, uint8_t opcode, size_t payloadlen, size_t headerlen)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_encode(ioc, opcode, payloadlen, headerlen);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_WEBSOCK_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_websock_close(void * ioc)
+{
+}
+
+static inline void trace_qio_channel_websock_close(void * ioc)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_websock_close(ioc);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_COMMAND_NEW_PID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_command_new_pid(void * ioc, int writefd, int readfd, int pid)
+{
+}
+
+static inline void trace_qio_channel_command_new_pid(void * ioc, int writefd, int readfd, int pid)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_command_new_pid(ioc, writefd, readfd, pid);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_COMMAND_NEW_SPAWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_command_new_spawn(void * ioc, const char * binary, int flags)
+{
+}
+
+static inline void trace_qio_channel_command_new_spawn(void * ioc, const char * binary, int flags)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_command_new_spawn(ioc, binary, flags);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_COMMAND_ABORT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_command_abort(void * ioc, int pid)
+{
+}
+
+static inline void trace_qio_channel_command_abort(void * ioc, int pid)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_command_abort(ioc, pid);
+ }
+}
+
+#define TRACE_QIO_CHANNEL_COMMAND_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qio_channel_command_wait(void * ioc, int pid, int ret, int status)
+{
+}
+
+static inline void trace_qio_channel_command_wait(void * ioc, int pid, int ret, int status)
+{
+ if (true) {
+ _nocheck__trace_qio_channel_command_wait(ioc, pid, ret, status);
+ }
+}
+#endif /* TRACE_IO_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/linux-user/trace.c b/qemu2-auto-generated/linux-user/trace.c
new file mode 100644
index 0000000000..28abf7c9a3
--- /dev/null
+++ b/qemu2-auto-generated/linux-user/trace.c
@@ -0,0 +1,95 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_USER_SETUP_FRAME_DSTATE;
+uint16_t _TRACE_USER_SETUP_RT_FRAME_DSTATE;
+uint16_t _TRACE_USER_DO_RT_SIGRETURN_DSTATE;
+uint16_t _TRACE_USER_DO_SIGRETURN_DSTATE;
+uint16_t _TRACE_USER_FORCE_SIG_DSTATE;
+uint16_t _TRACE_USER_HANDLE_SIGNAL_DSTATE;
+uint16_t _TRACE_USER_HOST_SIGNAL_DSTATE;
+uint16_t _TRACE_USER_QUEUE_SIGNAL_DSTATE;
+uint16_t _TRACE_USER_S390X_RESTORE_SIGREGS_DSTATE;
+TraceEvent _TRACE_USER_SETUP_FRAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_setup_frame",
+ .sstate = TRACE_USER_SETUP_FRAME_ENABLED,
+ .dstate = &_TRACE_USER_SETUP_FRAME_DSTATE
+};
+TraceEvent _TRACE_USER_SETUP_RT_FRAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_setup_rt_frame",
+ .sstate = TRACE_USER_SETUP_RT_FRAME_ENABLED,
+ .dstate = &_TRACE_USER_SETUP_RT_FRAME_DSTATE
+};
+TraceEvent _TRACE_USER_DO_RT_SIGRETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_do_rt_sigreturn",
+ .sstate = TRACE_USER_DO_RT_SIGRETURN_ENABLED,
+ .dstate = &_TRACE_USER_DO_RT_SIGRETURN_DSTATE
+};
+TraceEvent _TRACE_USER_DO_SIGRETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_do_sigreturn",
+ .sstate = TRACE_USER_DO_SIGRETURN_ENABLED,
+ .dstate = &_TRACE_USER_DO_SIGRETURN_DSTATE
+};
+TraceEvent _TRACE_USER_FORCE_SIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_force_sig",
+ .sstate = TRACE_USER_FORCE_SIG_ENABLED,
+ .dstate = &_TRACE_USER_FORCE_SIG_DSTATE
+};
+TraceEvent _TRACE_USER_HANDLE_SIGNAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_handle_signal",
+ .sstate = TRACE_USER_HANDLE_SIGNAL_ENABLED,
+ .dstate = &_TRACE_USER_HANDLE_SIGNAL_DSTATE
+};
+TraceEvent _TRACE_USER_HOST_SIGNAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_host_signal",
+ .sstate = TRACE_USER_HOST_SIGNAL_ENABLED,
+ .dstate = &_TRACE_USER_HOST_SIGNAL_DSTATE
+};
+TraceEvent _TRACE_USER_QUEUE_SIGNAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_queue_signal",
+ .sstate = TRACE_USER_QUEUE_SIGNAL_ENABLED,
+ .dstate = &_TRACE_USER_QUEUE_SIGNAL_DSTATE
+};
+TraceEvent _TRACE_USER_S390X_RESTORE_SIGREGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "user_s390x_restore_sigregs",
+ .sstate = TRACE_USER_S390X_RESTORE_SIGREGS_ENABLED,
+ .dstate = &_TRACE_USER_S390X_RESTORE_SIGREGS_DSTATE
+};
+TraceEvent *linux_user_trace_events[] = {
+ &_TRACE_USER_SETUP_FRAME_EVENT,
+ &_TRACE_USER_SETUP_RT_FRAME_EVENT,
+ &_TRACE_USER_DO_RT_SIGRETURN_EVENT,
+ &_TRACE_USER_DO_SIGRETURN_EVENT,
+ &_TRACE_USER_FORCE_SIG_EVENT,
+ &_TRACE_USER_HANDLE_SIGNAL_EVENT,
+ &_TRACE_USER_HOST_SIGNAL_EVENT,
+ &_TRACE_USER_QUEUE_SIGNAL_EVENT,
+ &_TRACE_USER_S390X_RESTORE_SIGREGS_EVENT,
+ NULL,
+};
+
+static void trace_linux_user_register_events(void)
+{
+ trace_event_register_group(linux_user_trace_events);
+}
+trace_init(trace_linux_user_register_events)
diff --git a/qemu2-auto-generated/linux-user/trace.h b/qemu2-auto-generated/linux-user/trace.h
new file mode 100644
index 0000000000..7ac9085ece
--- /dev/null
+++ b/qemu2-auto-generated/linux-user/trace.h
@@ -0,0 +1,162 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_LINUX_USER_GENERATED_TRACERS_H
+#define TRACE_LINUX_USER_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_USER_SETUP_FRAME_EVENT;
+extern TraceEvent _TRACE_USER_SETUP_RT_FRAME_EVENT;
+extern TraceEvent _TRACE_USER_DO_RT_SIGRETURN_EVENT;
+extern TraceEvent _TRACE_USER_DO_SIGRETURN_EVENT;
+extern TraceEvent _TRACE_USER_FORCE_SIG_EVENT;
+extern TraceEvent _TRACE_USER_HANDLE_SIGNAL_EVENT;
+extern TraceEvent _TRACE_USER_HOST_SIGNAL_EVENT;
+extern TraceEvent _TRACE_USER_QUEUE_SIGNAL_EVENT;
+extern TraceEvent _TRACE_USER_S390X_RESTORE_SIGREGS_EVENT;
+extern uint16_t _TRACE_USER_SETUP_FRAME_DSTATE;
+extern uint16_t _TRACE_USER_SETUP_RT_FRAME_DSTATE;
+extern uint16_t _TRACE_USER_DO_RT_SIGRETURN_DSTATE;
+extern uint16_t _TRACE_USER_DO_SIGRETURN_DSTATE;
+extern uint16_t _TRACE_USER_FORCE_SIG_DSTATE;
+extern uint16_t _TRACE_USER_HANDLE_SIGNAL_DSTATE;
+extern uint16_t _TRACE_USER_HOST_SIGNAL_DSTATE;
+extern uint16_t _TRACE_USER_QUEUE_SIGNAL_DSTATE;
+extern uint16_t _TRACE_USER_S390X_RESTORE_SIGREGS_DSTATE;
+#define TRACE_USER_SETUP_FRAME_ENABLED 1
+#define TRACE_USER_SETUP_RT_FRAME_ENABLED 1
+#define TRACE_USER_DO_RT_SIGRETURN_ENABLED 1
+#define TRACE_USER_DO_SIGRETURN_ENABLED 1
+#define TRACE_USER_FORCE_SIG_ENABLED 1
+#define TRACE_USER_HANDLE_SIGNAL_ENABLED 1
+#define TRACE_USER_HOST_SIGNAL_ENABLED 1
+#define TRACE_USER_QUEUE_SIGNAL_ENABLED 1
+#define TRACE_USER_S390X_RESTORE_SIGREGS_ENABLED 1
+
+#define TRACE_USER_SETUP_FRAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_setup_frame(void * env, uint64_t frame_addr)
+{
+}
+
+static inline void trace_user_setup_frame(void * env, uint64_t frame_addr)
+{
+ if (true) {
+ _nocheck__trace_user_setup_frame(env, frame_addr);
+ }
+}
+
+#define TRACE_USER_SETUP_RT_FRAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_setup_rt_frame(void * env, uint64_t frame_addr)
+{
+}
+
+static inline void trace_user_setup_rt_frame(void * env, uint64_t frame_addr)
+{
+ if (true) {
+ _nocheck__trace_user_setup_rt_frame(env, frame_addr);
+ }
+}
+
+#define TRACE_USER_DO_RT_SIGRETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_do_rt_sigreturn(void * env, uint64_t frame_addr)
+{
+}
+
+static inline void trace_user_do_rt_sigreturn(void * env, uint64_t frame_addr)
+{
+ if (true) {
+ _nocheck__trace_user_do_rt_sigreturn(env, frame_addr);
+ }
+}
+
+#define TRACE_USER_DO_SIGRETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_do_sigreturn(void * env, uint64_t frame_addr)
+{
+}
+
+static inline void trace_user_do_sigreturn(void * env, uint64_t frame_addr)
+{
+ if (true) {
+ _nocheck__trace_user_do_sigreturn(env, frame_addr);
+ }
+}
+
+#define TRACE_USER_FORCE_SIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_force_sig(void * env, int target_sig, int host_sig)
+{
+}
+
+static inline void trace_user_force_sig(void * env, int target_sig, int host_sig)
+{
+ if (true) {
+ _nocheck__trace_user_force_sig(env, target_sig, host_sig);
+ }
+}
+
+#define TRACE_USER_HANDLE_SIGNAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_handle_signal(void * env, int target_sig)
+{
+}
+
+static inline void trace_user_handle_signal(void * env, int target_sig)
+{
+ if (true) {
+ _nocheck__trace_user_handle_signal(env, target_sig);
+ }
+}
+
+#define TRACE_USER_HOST_SIGNAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_host_signal(void * env, int host_sig, int target_sig)
+{
+}
+
+static inline void trace_user_host_signal(void * env, int host_sig, int target_sig)
+{
+ if (true) {
+ _nocheck__trace_user_host_signal(env, host_sig, target_sig);
+ }
+}
+
+#define TRACE_USER_QUEUE_SIGNAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_queue_signal(void * env, int target_sig)
+{
+}
+
+static inline void trace_user_queue_signal(void * env, int target_sig)
+{
+ if (true) {
+ _nocheck__trace_user_queue_signal(env, target_sig);
+ }
+}
+
+#define TRACE_USER_S390X_RESTORE_SIGREGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_user_s390x_restore_sigregs(void * env, uint64_t sc_psw_addr, uint64_t env_psw_addr)
+{
+}
+
+static inline void trace_user_s390x_restore_sigregs(void * env, uint64_t sc_psw_addr, uint64_t env_psw_addr)
+{
+ if (true) {
+ _nocheck__trace_user_s390x_restore_sigregs(env, sc_psw_addr, env_psw_addr);
+ }
+}
+#endif /* TRACE_LINUX_USER_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/migration/trace.c b/qemu2-auto-generated/migration/trace.c
new file mode 100644
index 0000000000..859583badc
--- /dev/null
+++ b/qemu2-auto-generated/migration/trace.c
@@ -0,0 +1,2030 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_DSTATE;
+uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_DSTATE;
+uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_DSTATE;
+uint16_t _TRACE_QEMU_LOADVM_STATE_POST_MAIN_DSTATE;
+uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_DSTATE;
+uint16_t _TRACE_QEMU_CHECK_SECTION_FOOTER_DSTATE;
+uint16_t _TRACE_SAVE_SECTION_FOOTER_DSTATE;
+uint16_t _TRACE_QEMU_SAVEVM_SEND_PACKAGED_DSTATE;
+uint16_t _TRACE_LOADVM_STATE_SETUP_DSTATE;
+uint16_t _TRACE_LOADVM_STATE_CLEANUP_DSTATE;
+uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_DSTATE;
+uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_DSTATE;
+uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_DSTATE;
+uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_DSTATE;
+uint16_t _TRACE_LOADVM_PROCESS_COMMAND_DSTATE;
+uint16_t _TRACE_LOADVM_PROCESS_COMMAND_PING_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_DSTATE;
+uint16_t _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_DSTATE;
+uint16_t _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_DSTATE;
+uint16_t _TRACE_SAVEVM_COMMAND_SEND_DSTATE;
+uint16_t _TRACE_SAVEVM_SECTION_START_DSTATE;
+uint16_t _TRACE_SAVEVM_SECTION_END_DSTATE;
+uint16_t _TRACE_SAVEVM_SECTION_SKIP_DSTATE;
+uint16_t _TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_DSTATE;
+uint16_t _TRACE_SAVEVM_SEND_PING_DSTATE;
+uint16_t _TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_DSTATE;
+uint16_t _TRACE_SAVEVM_SEND_POSTCOPY_RUN_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_SETUP_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_HEADER_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_ITERATE_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_CLEANUP_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_DSTATE;
+uint16_t _TRACE_SAVEVM_STATE_HANDLER_INSERT_DSTATE;
+uint16_t _TRACE_VMSTATE_SAVE_DSTATE;
+uint16_t _TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_DSTATE;
+uint16_t _TRACE_VMSTATE_SAVE_STATE_LOOP_DSTATE;
+uint16_t _TRACE_VMSTATE_SAVE_STATE_TOP_DSTATE;
+uint16_t _TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_DSTATE;
+uint16_t _TRACE_VMSTATE_SUBSECTION_SAVE_TOP_DSTATE;
+uint16_t _TRACE_VMSTATE_LOAD_DSTATE;
+uint16_t _TRACE_QEMU_ANNOUNCE_SELF_ITER_DSTATE;
+uint16_t _TRACE_VMSTATE_LOAD_FIELD_ERROR_DSTATE;
+uint16_t _TRACE_VMSTATE_LOAD_STATE_DSTATE;
+uint16_t _TRACE_VMSTATE_LOAD_STATE_END_DSTATE;
+uint16_t _TRACE_VMSTATE_LOAD_STATE_FIELD_DSTATE;
+uint16_t _TRACE_VMSTATE_N_ELEMS_DSTATE;
+uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_DSTATE;
+uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_BAD_DSTATE;
+uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_DSTATE;
+uint16_t _TRACE_GET_QTAILQ_DSTATE;
+uint16_t _TRACE_GET_QTAILQ_END_DSTATE;
+uint16_t _TRACE_PUT_QTAILQ_DSTATE;
+uint16_t _TRACE_PUT_QTAILQ_END_DSTATE;
+uint16_t _TRACE_QEMU_FILE_FCLOSE_DSTATE;
+uint16_t _TRACE_GET_QUEUED_PAGE_DSTATE;
+uint16_t _TRACE_GET_QUEUED_PAGE_NOT_DIRTY_DSTATE;
+uint16_t _TRACE_MIGRATION_BITMAP_SYNC_START_DSTATE;
+uint16_t _TRACE_MIGRATION_BITMAP_SYNC_END_DSTATE;
+uint16_t _TRACE_MIGRATION_THROTTLE_DSTATE;
+uint16_t _TRACE_RAM_DISCARD_RANGE_DSTATE;
+uint16_t _TRACE_RAM_LOAD_LOOP_DSTATE;
+uint16_t _TRACE_RAM_LOAD_POSTCOPY_LOOP_DSTATE;
+uint16_t _TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_DSTATE;
+uint16_t _TRACE_RAM_SAVE_PAGE_DSTATE;
+uint16_t _TRACE_RAM_SAVE_QUEUE_PAGES_DSTATE;
+uint16_t _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_DSTATE;
+uint16_t _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_DSTATE;
+uint16_t _TRACE_MIGRATE_SET_STATE_DSTATE;
+uint16_t _TRACE_MIGRATE_FD_CLEANUP_DSTATE;
+uint16_t _TRACE_MIGRATE_FD_ERROR_DSTATE;
+uint16_t _TRACE_MIGRATE_FD_CANCEL_DSTATE;
+uint16_t _TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_DSTATE;
+uint16_t _TRACE_MIGRATE_PENDING_DSTATE;
+uint16_t _TRACE_MIGRATE_SEND_RP_MESSAGE_DSTATE;
+uint16_t _TRACE_MIGRATION_COMPLETION_FILE_ERR_DSTATE;
+uint16_t _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_DSTATE;
+uint16_t _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_DSTATE;
+uint16_t _TRACE_MIGRATION_RETURN_PATH_END_BEFORE_DSTATE;
+uint16_t _TRACE_MIGRATION_RETURN_PATH_END_AFTER_DSTATE;
+uint16_t _TRACE_MIGRATION_THREAD_AFTER_LOOP_DSTATE;
+uint16_t _TRACE_MIGRATION_THREAD_FILE_ERR_DSTATE;
+uint16_t _TRACE_MIGRATION_THREAD_SETUP_COMPLETE_DSTATE;
+uint16_t _TRACE_OPEN_RETURN_PATH_ON_SOURCE_DSTATE;
+uint16_t _TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_DSTATE;
+uint16_t _TRACE_POSTCOPY_START_DSTATE;
+uint16_t _TRACE_POSTCOPY_START_SET_RUN_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_END_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_PONG_DSTATE;
+uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_DSTATE;
+uint16_t _TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_DSTATE;
+uint16_t _TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_DSTATE;
+uint16_t _TRACE_MIGRATION_THREAD_LOW_PENDING_DSTATE;
+uint16_t _TRACE_MIGRATE_STATE_TOO_BIG_DSTATE;
+uint16_t _TRACE_MIGRATE_TRANSFERRED_DSTATE;
+uint16_t _TRACE_PROCESS_INCOMING_MIGRATION_CO_END_DSTATE;
+uint16_t _TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_DSTATE;
+uint16_t _TRACE_MIGRATION_SET_INCOMING_CHANNEL_DSTATE;
+uint16_t _TRACE_MIGRATION_SET_OUTGOING_CHANNEL_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_CLOSE_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_DEST_INIT_TRYING_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_DUMP_GID_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_FILL_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_POLL_RECV_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_POLL_WRITE_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_POLL_OTHER_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_POST_SEND_CONTROL_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_START_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_STOP_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_FLUSH_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_POST_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_TOP_DSTATE;
+uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_ZERO_DSTATE;
+uint16_t _TRACE_RDMA_ADD_BLOCK_DSTATE;
+uint16_t _TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_DSTATE;
+uint16_t _TRACE_RDMA_DELETE_BLOCK_DSTATE;
+uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_DSTATE;
+uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_DSTATE;
+uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_DSTATE;
+uint16_t _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_DSTATE;
+uint16_t _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_DSTATE;
+uint16_t _TRACE_POSTCOPY_DISCARD_SEND_FINISH_DSTATE;
+uint16_t _TRACE_POSTCOPY_DISCARD_SEND_RANGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_CLEANUP_RANGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_INIT_RANGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_NHP_RANGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_PLACE_PAGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_PLACE_PAGE_ZERO_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_DSTATE;
+uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_DSTATE;
+uint16_t _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_DSTATE;
+uint16_t _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_DSTATE;
+uint16_t _TRACE_POSTCOPY_WAKE_SHARED_DSTATE;
+uint16_t _TRACE_SAVE_XBZRLE_PAGE_SKIPPING_DSTATE;
+uint16_t _TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_DSTATE;
+uint16_t _TRACE_RAM_SAVE_ITERATE_BIG_WAIT_DSTATE;
+uint16_t _TRACE_RAM_LOAD_COMPLETE_DSTATE;
+uint16_t _TRACE_MIGRATION_EXEC_OUTGOING_DSTATE;
+uint16_t _TRACE_MIGRATION_EXEC_INCOMING_DSTATE;
+uint16_t _TRACE_MIGRATION_FD_OUTGOING_DSTATE;
+uint16_t _TRACE_MIGRATION_FD_INCOMING_DSTATE;
+uint16_t _TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_DSTATE;
+uint16_t _TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_DSTATE;
+uint16_t _TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_DSTATE;
+uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_DSTATE;
+uint16_t _TRACE_COLO_VM_STATE_CHANGE_DSTATE;
+uint16_t _TRACE_COLO_SEND_MESSAGE_DSTATE;
+uint16_t _TRACE_COLO_RECEIVE_MESSAGE_DSTATE;
+uint16_t _TRACE_COLO_FAILOVER_SET_STATE_DSTATE;
+uint16_t _TRACE_SEND_BITMAP_HEADER_ENTER_DSTATE;
+uint16_t _TRACE_SEND_BITMAP_BITS_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_SAVE_ITERATE_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_SAVE_PENDING_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_COMPLETE_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_HEADER_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_ENTER_DSTATE;
+uint16_t _TRACE_DIRTY_BITMAP_LOAD_SUCCESS_DSTATE;
+TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_loadvm_state_section",
+ .sstate = TRACE_QEMU_LOADVM_STATE_SECTION_ENABLED,
+ .dstate = &_TRACE_QEMU_LOADVM_STATE_SECTION_DSTATE
+};
+TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_loadvm_state_section_command",
+ .sstate = TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_ENABLED,
+ .dstate = &_TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_DSTATE
+};
+TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_loadvm_state_section_partend",
+ .sstate = TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_ENABLED,
+ .dstate = &_TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_DSTATE
+};
+TraceEvent _TRACE_QEMU_LOADVM_STATE_POST_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_loadvm_state_post_main",
+ .sstate = TRACE_QEMU_LOADVM_STATE_POST_MAIN_ENABLED,
+ .dstate = &_TRACE_QEMU_LOADVM_STATE_POST_MAIN_DSTATE
+};
+TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_loadvm_state_section_startfull",
+ .sstate = TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_ENABLED,
+ .dstate = &_TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_DSTATE
+};
+TraceEvent _TRACE_QEMU_CHECK_SECTION_FOOTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_check_section_footer",
+ .sstate = TRACE_QEMU_CHECK_SECTION_FOOTER_ENABLED,
+ .dstate = &_TRACE_QEMU_CHECK_SECTION_FOOTER_DSTATE
+};
+TraceEvent _TRACE_SAVE_SECTION_FOOTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "save_section_footer",
+ .sstate = TRACE_SAVE_SECTION_FOOTER_ENABLED,
+ .dstate = &_TRACE_SAVE_SECTION_FOOTER_DSTATE
+};
+TraceEvent _TRACE_QEMU_SAVEVM_SEND_PACKAGED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_savevm_send_packaged",
+ .sstate = TRACE_QEMU_SAVEVM_SEND_PACKAGED_ENABLED,
+ .dstate = &_TRACE_QEMU_SAVEVM_SEND_PACKAGED_DSTATE
+};
+TraceEvent _TRACE_LOADVM_STATE_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_state_setup",
+ .sstate = TRACE_LOADVM_STATE_SETUP_ENABLED,
+ .dstate = &_TRACE_LOADVM_STATE_SETUP_DSTATE
+};
+TraceEvent _TRACE_LOADVM_STATE_CLEANUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_state_cleanup",
+ .sstate = TRACE_LOADVM_STATE_CLEANUP_ENABLED,
+ .dstate = &_TRACE_LOADVM_STATE_CLEANUP_DSTATE
+};
+TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_handle_cmd_packaged",
+ .sstate = TRACE_LOADVM_HANDLE_CMD_PACKAGED_ENABLED,
+ .dstate = &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_DSTATE
+};
+TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_handle_cmd_packaged_main",
+ .sstate = TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_ENABLED,
+ .dstate = &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_DSTATE
+};
+TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_handle_cmd_packaged_received",
+ .sstate = TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_ENABLED,
+ .dstate = &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_handle_advise",
+ .sstate = TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_handle_listen",
+ .sstate = TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_handle_run",
+ .sstate = TRACE_LOADVM_POSTCOPY_HANDLE_RUN_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_handle_run_cpu_sync",
+ .sstate = TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_handle_run_vmstart",
+ .sstate = TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_ram_handle_discard",
+ .sstate = TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_ram_handle_discard_end",
+ .sstate = TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_DSTATE
+};
+TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_postcopy_ram_handle_discard_header",
+ .sstate = TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_ENABLED,
+ .dstate = &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_DSTATE
+};
+TraceEvent _TRACE_LOADVM_PROCESS_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_process_command",
+ .sstate = TRACE_LOADVM_PROCESS_COMMAND_ENABLED,
+ .dstate = &_TRACE_LOADVM_PROCESS_COMMAND_DSTATE
+};
+TraceEvent _TRACE_LOADVM_PROCESS_COMMAND_PING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "loadvm_process_command_ping",
+ .sstate = TRACE_LOADVM_PROCESS_COMMAND_PING_ENABLED,
+ .dstate = &_TRACE_LOADVM_PROCESS_COMMAND_PING_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_listen_thread_exit",
+ .sstate = TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_listen_thread_start",
+ .sstate = TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_DSTATE
+};
+TraceEvent _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_savevm_send_postcopy_advise",
+ .sstate = TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_ENABLED,
+ .dstate = &_TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_savevm_send_postcopy_ram_discard",
+ .sstate = TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_ENABLED,
+ .dstate = &_TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_COMMAND_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_command_send",
+ .sstate = TRACE_SAVEVM_COMMAND_SEND_ENABLED,
+ .dstate = &_TRACE_SAVEVM_COMMAND_SEND_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SECTION_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_section_start",
+ .sstate = TRACE_SAVEVM_SECTION_START_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SECTION_START_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SECTION_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_section_end",
+ .sstate = TRACE_SAVEVM_SECTION_END_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SECTION_END_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SECTION_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_section_skip",
+ .sstate = TRACE_SAVEVM_SECTION_SKIP_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SECTION_SKIP_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_send_open_return_path",
+ .sstate = TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SEND_PING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_send_ping",
+ .sstate = TRACE_SAVEVM_SEND_PING_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SEND_PING_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_send_postcopy_listen",
+ .sstate = TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_SEND_POSTCOPY_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_send_postcopy_run",
+ .sstate = TRACE_SAVEVM_SEND_POSTCOPY_RUN_ENABLED,
+ .dstate = &_TRACE_SAVEVM_SEND_POSTCOPY_RUN_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_SETUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_setup",
+ .sstate = TRACE_SAVEVM_STATE_SETUP_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_SETUP_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_HEADER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_header",
+ .sstate = TRACE_SAVEVM_STATE_HEADER_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_HEADER_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_ITERATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_iterate",
+ .sstate = TRACE_SAVEVM_STATE_ITERATE_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_ITERATE_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_CLEANUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_cleanup",
+ .sstate = TRACE_SAVEVM_STATE_CLEANUP_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_CLEANUP_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_complete_precopy",
+ .sstate = TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_DSTATE
+};
+TraceEvent _TRACE_SAVEVM_STATE_HANDLER_INSERT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "savevm_state_handler_insert",
+ .sstate = TRACE_SAVEVM_STATE_HANDLER_INSERT_ENABLED,
+ .dstate = &_TRACE_SAVEVM_STATE_HANDLER_INSERT_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_save",
+ .sstate = TRACE_VMSTATE_SAVE_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SAVE_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_save_state_pre_save_res",
+ .sstate = TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SAVE_STATE_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_save_state_loop",
+ .sstate = TRACE_VMSTATE_SAVE_STATE_LOOP_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SAVE_STATE_LOOP_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SAVE_STATE_TOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_save_state_top",
+ .sstate = TRACE_VMSTATE_SAVE_STATE_TOP_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SAVE_STATE_TOP_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_subsection_save_loop",
+ .sstate = TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SUBSECTION_SAVE_TOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_subsection_save_top",
+ .sstate = TRACE_VMSTATE_SUBSECTION_SAVE_TOP_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SUBSECTION_SAVE_TOP_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_load",
+ .sstate = TRACE_VMSTATE_LOAD_ENABLED,
+ .dstate = &_TRACE_VMSTATE_LOAD_DSTATE
+};
+TraceEvent _TRACE_QEMU_ANNOUNCE_SELF_ITER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_announce_self_iter",
+ .sstate = TRACE_QEMU_ANNOUNCE_SELF_ITER_ENABLED,
+ .dstate = &_TRACE_QEMU_ANNOUNCE_SELF_ITER_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_LOAD_FIELD_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_load_field_error",
+ .sstate = TRACE_VMSTATE_LOAD_FIELD_ERROR_ENABLED,
+ .dstate = &_TRACE_VMSTATE_LOAD_FIELD_ERROR_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_LOAD_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_load_state",
+ .sstate = TRACE_VMSTATE_LOAD_STATE_ENABLED,
+ .dstate = &_TRACE_VMSTATE_LOAD_STATE_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_LOAD_STATE_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_load_state_end",
+ .sstate = TRACE_VMSTATE_LOAD_STATE_END_ENABLED,
+ .dstate = &_TRACE_VMSTATE_LOAD_STATE_END_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_LOAD_STATE_FIELD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_load_state_field",
+ .sstate = TRACE_VMSTATE_LOAD_STATE_FIELD_ENABLED,
+ .dstate = &_TRACE_VMSTATE_LOAD_STATE_FIELD_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_N_ELEMS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_n_elems",
+ .sstate = TRACE_VMSTATE_N_ELEMS_ENABLED,
+ .dstate = &_TRACE_VMSTATE_N_ELEMS_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_subsection_load",
+ .sstate = TRACE_VMSTATE_SUBSECTION_LOAD_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SUBSECTION_LOAD_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_BAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_subsection_load_bad",
+ .sstate = TRACE_VMSTATE_SUBSECTION_LOAD_BAD_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SUBSECTION_LOAD_BAD_DSTATE
+};
+TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vmstate_subsection_load_good",
+ .sstate = TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_ENABLED,
+ .dstate = &_TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_DSTATE
+};
+TraceEvent _TRACE_GET_QTAILQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "get_qtailq",
+ .sstate = TRACE_GET_QTAILQ_ENABLED,
+ .dstate = &_TRACE_GET_QTAILQ_DSTATE
+};
+TraceEvent _TRACE_GET_QTAILQ_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "get_qtailq_end",
+ .sstate = TRACE_GET_QTAILQ_END_ENABLED,
+ .dstate = &_TRACE_GET_QTAILQ_END_DSTATE
+};
+TraceEvent _TRACE_PUT_QTAILQ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "put_qtailq",
+ .sstate = TRACE_PUT_QTAILQ_ENABLED,
+ .dstate = &_TRACE_PUT_QTAILQ_DSTATE
+};
+TraceEvent _TRACE_PUT_QTAILQ_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "put_qtailq_end",
+ .sstate = TRACE_PUT_QTAILQ_END_ENABLED,
+ .dstate = &_TRACE_PUT_QTAILQ_END_DSTATE
+};
+TraceEvent _TRACE_QEMU_FILE_FCLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_file_fclose",
+ .sstate = TRACE_QEMU_FILE_FCLOSE_ENABLED,
+ .dstate = &_TRACE_QEMU_FILE_FCLOSE_DSTATE
+};
+TraceEvent _TRACE_GET_QUEUED_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "get_queued_page",
+ .sstate = TRACE_GET_QUEUED_PAGE_ENABLED,
+ .dstate = &_TRACE_GET_QUEUED_PAGE_DSTATE
+};
+TraceEvent _TRACE_GET_QUEUED_PAGE_NOT_DIRTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "get_queued_page_not_dirty",
+ .sstate = TRACE_GET_QUEUED_PAGE_NOT_DIRTY_ENABLED,
+ .dstate = &_TRACE_GET_QUEUED_PAGE_NOT_DIRTY_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_BITMAP_SYNC_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_bitmap_sync_start",
+ .sstate = TRACE_MIGRATION_BITMAP_SYNC_START_ENABLED,
+ .dstate = &_TRACE_MIGRATION_BITMAP_SYNC_START_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_BITMAP_SYNC_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_bitmap_sync_end",
+ .sstate = TRACE_MIGRATION_BITMAP_SYNC_END_ENABLED,
+ .dstate = &_TRACE_MIGRATION_BITMAP_SYNC_END_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_THROTTLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_throttle",
+ .sstate = TRACE_MIGRATION_THROTTLE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_THROTTLE_DSTATE
+};
+TraceEvent _TRACE_RAM_DISCARD_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_discard_range",
+ .sstate = TRACE_RAM_DISCARD_RANGE_ENABLED,
+ .dstate = &_TRACE_RAM_DISCARD_RANGE_DSTATE
+};
+TraceEvent _TRACE_RAM_LOAD_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_load_loop",
+ .sstate = TRACE_RAM_LOAD_LOOP_ENABLED,
+ .dstate = &_TRACE_RAM_LOAD_LOOP_DSTATE
+};
+TraceEvent _TRACE_RAM_LOAD_POSTCOPY_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_load_postcopy_loop",
+ .sstate = TRACE_RAM_LOAD_POSTCOPY_LOOP_ENABLED,
+ .dstate = &_TRACE_RAM_LOAD_POSTCOPY_LOOP_DSTATE
+};
+TraceEvent _TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_postcopy_send_discard_bitmap",
+ .sstate = TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_ENABLED,
+ .dstate = &_TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_DSTATE
+};
+TraceEvent _TRACE_RAM_SAVE_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_save_page",
+ .sstate = TRACE_RAM_SAVE_PAGE_ENABLED,
+ .dstate = &_TRACE_RAM_SAVE_PAGE_DSTATE
+};
+TraceEvent _TRACE_RAM_SAVE_QUEUE_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_save_queue_pages",
+ .sstate = TRACE_RAM_SAVE_QUEUE_PAGES_ENABLED,
+ .dstate = &_TRACE_RAM_SAVE_QUEUE_PAGES_DSTATE
+};
+TraceEvent _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "await_return_path_close_on_source_close",
+ .sstate = TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_ENABLED,
+ .dstate = &_TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_DSTATE
+};
+TraceEvent _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "await_return_path_close_on_source_joining",
+ .sstate = TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_ENABLED,
+ .dstate = &_TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_SET_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_set_state",
+ .sstate = TRACE_MIGRATE_SET_STATE_ENABLED,
+ .dstate = &_TRACE_MIGRATE_SET_STATE_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_FD_CLEANUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_fd_cleanup",
+ .sstate = TRACE_MIGRATE_FD_CLEANUP_ENABLED,
+ .dstate = &_TRACE_MIGRATE_FD_CLEANUP_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_FD_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_fd_error",
+ .sstate = TRACE_MIGRATE_FD_ERROR_ENABLED,
+ .dstate = &_TRACE_MIGRATE_FD_ERROR_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_FD_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_fd_cancel",
+ .sstate = TRACE_MIGRATE_FD_CANCEL_ENABLED,
+ .dstate = &_TRACE_MIGRATE_FD_CANCEL_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_handle_rp_req_pages",
+ .sstate = TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_ENABLED,
+ .dstate = &_TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_pending",
+ .sstate = TRACE_MIGRATE_PENDING_ENABLED,
+ .dstate = &_TRACE_MIGRATE_PENDING_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_SEND_RP_MESSAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_send_rp_message",
+ .sstate = TRACE_MIGRATE_SEND_RP_MESSAGE_ENABLED,
+ .dstate = &_TRACE_MIGRATE_SEND_RP_MESSAGE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_COMPLETION_FILE_ERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_completion_file_err",
+ .sstate = TRACE_MIGRATION_COMPLETION_FILE_ERR_ENABLED,
+ .dstate = &_TRACE_MIGRATION_COMPLETION_FILE_ERR_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_completion_postcopy_end",
+ .sstate = TRACE_MIGRATION_COMPLETION_POSTCOPY_END_ENABLED,
+ .dstate = &_TRACE_MIGRATION_COMPLETION_POSTCOPY_END_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_completion_postcopy_end_after_complete",
+ .sstate = TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_RETURN_PATH_END_BEFORE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_return_path_end_before",
+ .sstate = TRACE_MIGRATION_RETURN_PATH_END_BEFORE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_RETURN_PATH_END_BEFORE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_RETURN_PATH_END_AFTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_return_path_end_after",
+ .sstate = TRACE_MIGRATION_RETURN_PATH_END_AFTER_ENABLED,
+ .dstate = &_TRACE_MIGRATION_RETURN_PATH_END_AFTER_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_THREAD_AFTER_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_thread_after_loop",
+ .sstate = TRACE_MIGRATION_THREAD_AFTER_LOOP_ENABLED,
+ .dstate = &_TRACE_MIGRATION_THREAD_AFTER_LOOP_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_THREAD_FILE_ERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_thread_file_err",
+ .sstate = TRACE_MIGRATION_THREAD_FILE_ERR_ENABLED,
+ .dstate = &_TRACE_MIGRATION_THREAD_FILE_ERR_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_THREAD_SETUP_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_thread_setup_complete",
+ .sstate = TRACE_MIGRATION_THREAD_SETUP_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_THREAD_SETUP_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_OPEN_RETURN_PATH_ON_SOURCE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_return_path_on_source",
+ .sstate = TRACE_OPEN_RETURN_PATH_ON_SOURCE_ENABLED,
+ .dstate = &_TRACE_OPEN_RETURN_PATH_ON_SOURCE_DSTATE
+};
+TraceEvent _TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "open_return_path_on_source_continue",
+ .sstate = TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_ENABLED,
+ .dstate = &_TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_start",
+ .sstate = TRACE_POSTCOPY_START_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_START_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_START_SET_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_start_set_run",
+ .sstate = TRACE_POSTCOPY_START_SET_RUN_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_START_SET_RUN_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_bad_end",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_end",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_END_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_END_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_entry",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_loop_top",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_PONG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_pong",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_PONG_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_PONG_DSTATE
+};
+TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "source_return_path_thread_shut",
+ .sstate = TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_ENABLED,
+ .dstate = &_TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_global_state_post_load",
+ .sstate = TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_ENABLED,
+ .dstate = &_TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_global_state_pre_save",
+ .sstate = TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_ENABLED,
+ .dstate = &_TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_THREAD_LOW_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_thread_low_pending",
+ .sstate = TRACE_MIGRATION_THREAD_LOW_PENDING_ENABLED,
+ .dstate = &_TRACE_MIGRATION_THREAD_LOW_PENDING_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_STATE_TOO_BIG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_state_too_big",
+ .sstate = TRACE_MIGRATE_STATE_TOO_BIG_ENABLED,
+ .dstate = &_TRACE_MIGRATE_STATE_TOO_BIG_DSTATE
+};
+TraceEvent _TRACE_MIGRATE_TRANSFERRED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migrate_transferred",
+ .sstate = TRACE_MIGRATE_TRANSFERRED_ENABLED,
+ .dstate = &_TRACE_MIGRATE_TRANSFERRED_DSTATE
+};
+TraceEvent _TRACE_PROCESS_INCOMING_MIGRATION_CO_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_incoming_migration_co_end",
+ .sstate = TRACE_PROCESS_INCOMING_MIGRATION_CO_END_ENABLED,
+ .dstate = &_TRACE_PROCESS_INCOMING_MIGRATION_CO_END_DSTATE
+};
+TraceEvent _TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "process_incoming_migration_co_postcopy_end_main",
+ .sstate = TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_ENABLED,
+ .dstate = &_TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_SET_INCOMING_CHANNEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_set_incoming_channel",
+ .sstate = TRACE_MIGRATION_SET_INCOMING_CHANNEL_ENABLED,
+ .dstate = &_TRACE_MIGRATION_SET_INCOMING_CHANNEL_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_SET_OUTGOING_CHANNEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_set_outgoing_channel",
+ .sstate = TRACE_MIGRATION_SET_OUTGOING_CHANNEL_ENABLED,
+ .dstate = &_TRACE_MIGRATION_SET_OUTGOING_CHANNEL_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_accept_incoming_migration",
+ .sstate = TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_accept_incoming_migration_accepted",
+ .sstate = TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_accept_pin_state",
+ .sstate = TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_accept_pin_verbsc",
+ .sstate = TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_block_for_wrid_miss",
+ .sstate = TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_cleanup_disconnect",
+ .sstate = TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_cleanup_waiting_for_disconnect",
+ .sstate = TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_close",
+ .sstate = TRACE_QEMU_RDMA_CLOSE_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_CLOSE_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_connect_pin_all_requested",
+ .sstate = TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_connect_pin_all_outcome",
+ .sstate = TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_DEST_INIT_TRYING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_dest_init_trying",
+ .sstate = TRACE_QEMU_RDMA_DEST_INIT_TRYING_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_DEST_INIT_TRYING_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_DUMP_GID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_dump_gid",
+ .sstate = TRACE_QEMU_RDMA_DUMP_GID_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_DUMP_GID_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_exchange_get_response_start",
+ .sstate = TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_exchange_get_response_none",
+ .sstate = TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_exchange_send_issue_callback",
+ .sstate = TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_exchange_send_waiting",
+ .sstate = TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_exchange_send_received",
+ .sstate = TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_FILL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_fill",
+ .sstate = TRACE_QEMU_RDMA_FILL_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_FILL_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_init_ram_blocks",
+ .sstate = TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_POLL_RECV_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_poll_recv",
+ .sstate = TRACE_QEMU_RDMA_POLL_RECV_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_POLL_RECV_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_POLL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_poll_write",
+ .sstate = TRACE_QEMU_RDMA_POLL_WRITE_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_POLL_WRITE_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_POLL_OTHER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_poll_other",
+ .sstate = TRACE_QEMU_RDMA_POLL_OTHER_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_POLL_OTHER_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_POST_SEND_CONTROL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_post_send_control",
+ .sstate = TRACE_QEMU_RDMA_POST_SEND_CONTROL_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_POST_SEND_CONTROL_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_register_and_get_keys",
+ .sstate = TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_compress",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_finished",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_ram_blocks",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_ram_blocks_loop",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_register",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_register_loop",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_register_rkey",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_unregister",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_unregister_loop",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_unregister_success",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_handle_wait",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_start",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_START_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_START_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_STOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_stop",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_STOP_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_STOP_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_registration_stop_ram",
+ .sstate = TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_resolve_host_trying",
+ .sstate = TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_signal_unregister_append",
+ .sstate = TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_signal_unregister_already",
+ .sstate = TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_unregister_waiting_inflight",
+ .sstate = TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_unregister_waiting_proc",
+ .sstate = TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_unregister_waiting_send",
+ .sstate = TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_unregister_waiting_complete",
+ .sstate = TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_FLUSH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_flush",
+ .sstate = TRACE_QEMU_RDMA_WRITE_FLUSH_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_FLUSH_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_block",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_POST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_post",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_POST_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_POST_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_queue_full",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_recvregres",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_sendreg",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_TOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_top",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_TOP_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_TOP_DSTATE
+};
+TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_rdma_write_one_zero",
+ .sstate = TRACE_QEMU_RDMA_WRITE_ONE_ZERO_ENABLED,
+ .dstate = &_TRACE_QEMU_RDMA_WRITE_ONE_ZERO_DSTATE
+};
+TraceEvent _TRACE_RDMA_ADD_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_add_block",
+ .sstate = TRACE_RDMA_ADD_BLOCK_ENABLED,
+ .dstate = &_TRACE_RDMA_ADD_BLOCK_DSTATE
+};
+TraceEvent _TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_block_notification_handle",
+ .sstate = TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_ENABLED,
+ .dstate = &_TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_DSTATE
+};
+TraceEvent _TRACE_RDMA_DELETE_BLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_delete_block",
+ .sstate = TRACE_RDMA_DELETE_BLOCK_ENABLED,
+ .dstate = &_TRACE_RDMA_DELETE_BLOCK_DSTATE
+};
+TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_start_incoming_migration",
+ .sstate = TRACE_RDMA_START_INCOMING_MIGRATION_ENABLED,
+ .dstate = &_TRACE_RDMA_START_INCOMING_MIGRATION_DSTATE
+};
+TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_start_incoming_migration_after_dest_init",
+ .sstate = TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_ENABLED,
+ .dstate = &_TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_DSTATE
+};
+TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_start_incoming_migration_after_rdma_listen",
+ .sstate = TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_ENABLED,
+ .dstate = &_TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_DSTATE
+};
+TraceEvent _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_start_outgoing_migration_after_rdma_connect",
+ .sstate = TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_ENABLED,
+ .dstate = &_TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_DSTATE
+};
+TraceEvent _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "rdma_start_outgoing_migration_after_rdma_source_init",
+ .sstate = TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_ENABLED,
+ .dstate = &_TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_DISCARD_SEND_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_discard_send_finish",
+ .sstate = TRACE_POSTCOPY_DISCARD_SEND_FINISH_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_DISCARD_SEND_FINISH_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_DISCARD_SEND_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_discard_send_range",
+ .sstate = TRACE_POSTCOPY_DISCARD_SEND_RANGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_DISCARD_SEND_RANGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_CLEANUP_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_cleanup_range",
+ .sstate = TRACE_POSTCOPY_CLEANUP_RANGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_CLEANUP_RANGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_INIT_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_init_range",
+ .sstate = TRACE_POSTCOPY_INIT_RANGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_INIT_RANGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_NHP_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_nhp_range",
+ .sstate = TRACE_POSTCOPY_NHP_RANGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_NHP_RANGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_PLACE_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_place_page",
+ .sstate = TRACE_POSTCOPY_PLACE_PAGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_PLACE_PAGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_PLACE_PAGE_ZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_place_page_zero",
+ .sstate = TRACE_POSTCOPY_PLACE_PAGE_ZERO_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_PLACE_PAGE_ZERO_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_enable_notify",
+ .sstate = TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_entry",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_exit",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_fds_core",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_fds_extra",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_quit",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_fault_thread_request",
+ .sstate = TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_incoming_cleanup_closeuf",
+ .sstate = TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_incoming_cleanup_entry",
+ .sstate = TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_incoming_cleanup_exit",
+ .sstate = TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_ram_incoming_cleanup_join",
+ .sstate = TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_request_shared_page",
+ .sstate = TRACE_POSTCOPY_REQUEST_SHARED_PAGE_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_REQUEST_SHARED_PAGE_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_request_shared_page_present",
+ .sstate = TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_DSTATE
+};
+TraceEvent _TRACE_POSTCOPY_WAKE_SHARED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "postcopy_wake_shared",
+ .sstate = TRACE_POSTCOPY_WAKE_SHARED_ENABLED,
+ .dstate = &_TRACE_POSTCOPY_WAKE_SHARED_DSTATE
+};
+TraceEvent _TRACE_SAVE_XBZRLE_PAGE_SKIPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "save_xbzrle_page_skipping",
+ .sstate = TRACE_SAVE_XBZRLE_PAGE_SKIPPING_ENABLED,
+ .dstate = &_TRACE_SAVE_XBZRLE_PAGE_SKIPPING_DSTATE
+};
+TraceEvent _TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "save_xbzrle_page_overflow",
+ .sstate = TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_ENABLED,
+ .dstate = &_TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_DSTATE
+};
+TraceEvent _TRACE_RAM_SAVE_ITERATE_BIG_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_save_iterate_big_wait",
+ .sstate = TRACE_RAM_SAVE_ITERATE_BIG_WAIT_ENABLED,
+ .dstate = &_TRACE_RAM_SAVE_ITERATE_BIG_WAIT_DSTATE
+};
+TraceEvent _TRACE_RAM_LOAD_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_load_complete",
+ .sstate = TRACE_RAM_LOAD_COMPLETE_ENABLED,
+ .dstate = &_TRACE_RAM_LOAD_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_EXEC_OUTGOING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_exec_outgoing",
+ .sstate = TRACE_MIGRATION_EXEC_OUTGOING_ENABLED,
+ .dstate = &_TRACE_MIGRATION_EXEC_OUTGOING_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_EXEC_INCOMING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_exec_incoming",
+ .sstate = TRACE_MIGRATION_EXEC_INCOMING_ENABLED,
+ .dstate = &_TRACE_MIGRATION_EXEC_INCOMING_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_FD_OUTGOING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_fd_outgoing",
+ .sstate = TRACE_MIGRATION_FD_OUTGOING_ENABLED,
+ .dstate = &_TRACE_MIGRATION_FD_OUTGOING_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_FD_INCOMING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_fd_incoming",
+ .sstate = TRACE_MIGRATION_FD_INCOMING_ENABLED,
+ .dstate = &_TRACE_MIGRATION_FD_INCOMING_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_socket_incoming_accepted",
+ .sstate = TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_ENABLED,
+ .dstate = &_TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_socket_outgoing_connected",
+ .sstate = TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_ENABLED,
+ .dstate = &_TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_socket_outgoing_error",
+ .sstate = TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_ENABLED,
+ .dstate = &_TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_outgoing_handshake_start",
+ .sstate = TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_outgoing_handshake_error",
+ .sstate = TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_outgoing_handshake_complete",
+ .sstate = TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_incoming_handshake_start",
+ .sstate = TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_incoming_handshake_error",
+ .sstate = TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_DSTATE
+};
+TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "migration_tls_incoming_handshake_complete",
+ .sstate = TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_ENABLED,
+ .dstate = &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_COLO_VM_STATE_CHANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_vm_state_change",
+ .sstate = TRACE_COLO_VM_STATE_CHANGE_ENABLED,
+ .dstate = &_TRACE_COLO_VM_STATE_CHANGE_DSTATE
+};
+TraceEvent _TRACE_COLO_SEND_MESSAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_send_message",
+ .sstate = TRACE_COLO_SEND_MESSAGE_ENABLED,
+ .dstate = &_TRACE_COLO_SEND_MESSAGE_DSTATE
+};
+TraceEvent _TRACE_COLO_RECEIVE_MESSAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_receive_message",
+ .sstate = TRACE_COLO_RECEIVE_MESSAGE_ENABLED,
+ .dstate = &_TRACE_COLO_RECEIVE_MESSAGE_DSTATE
+};
+TraceEvent _TRACE_COLO_FAILOVER_SET_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_failover_set_state",
+ .sstate = TRACE_COLO_FAILOVER_SET_STATE_ENABLED,
+ .dstate = &_TRACE_COLO_FAILOVER_SET_STATE_DSTATE
+};
+TraceEvent _TRACE_SEND_BITMAP_HEADER_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "send_bitmap_header_enter",
+ .sstate = TRACE_SEND_BITMAP_HEADER_ENTER_ENABLED,
+ .dstate = &_TRACE_SEND_BITMAP_HEADER_ENTER_DSTATE
+};
+TraceEvent _TRACE_SEND_BITMAP_BITS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "send_bitmap_bits",
+ .sstate = TRACE_SEND_BITMAP_BITS_ENABLED,
+ .dstate = &_TRACE_SEND_BITMAP_BITS_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_SAVE_ITERATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_save_iterate",
+ .sstate = TRACE_DIRTY_BITMAP_SAVE_ITERATE_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_SAVE_ITERATE_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_save_complete_enter",
+ .sstate = TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_save_complete_finish",
+ .sstate = TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_SAVE_PENDING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_save_pending",
+ .sstate = TRACE_DIRTY_BITMAP_SAVE_PENDING_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_SAVE_PENDING_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_complete",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_COMPLETE_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_bits_enter",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_bits_zeroes",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_HEADER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_header",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_HEADER_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_HEADER_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_enter",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_ENTER_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_ENTER_DSTATE
+};
+TraceEvent _TRACE_DIRTY_BITMAP_LOAD_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dirty_bitmap_load_success",
+ .sstate = TRACE_DIRTY_BITMAP_LOAD_SUCCESS_ENABLED,
+ .dstate = &_TRACE_DIRTY_BITMAP_LOAD_SUCCESS_DSTATE
+};
+TraceEvent *migration_trace_events[] = {
+ &_TRACE_QEMU_LOADVM_STATE_SECTION_EVENT,
+ &_TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_EVENT,
+ &_TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_EVENT,
+ &_TRACE_QEMU_LOADVM_STATE_POST_MAIN_EVENT,
+ &_TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_EVENT,
+ &_TRACE_QEMU_CHECK_SECTION_FOOTER_EVENT,
+ &_TRACE_SAVE_SECTION_FOOTER_EVENT,
+ &_TRACE_QEMU_SAVEVM_SEND_PACKAGED_EVENT,
+ &_TRACE_LOADVM_STATE_SETUP_EVENT,
+ &_TRACE_LOADVM_STATE_CLEANUP_EVENT,
+ &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_EVENT,
+ &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_EVENT,
+ &_TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_EVENT,
+ &_TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_EVENT,
+ &_TRACE_LOADVM_PROCESS_COMMAND_EVENT,
+ &_TRACE_LOADVM_PROCESS_COMMAND_PING_EVENT,
+ &_TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_EVENT,
+ &_TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_EVENT,
+ &_TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_EVENT,
+ &_TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_EVENT,
+ &_TRACE_SAVEVM_COMMAND_SEND_EVENT,
+ &_TRACE_SAVEVM_SECTION_START_EVENT,
+ &_TRACE_SAVEVM_SECTION_END_EVENT,
+ &_TRACE_SAVEVM_SECTION_SKIP_EVENT,
+ &_TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_EVENT,
+ &_TRACE_SAVEVM_SEND_PING_EVENT,
+ &_TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_EVENT,
+ &_TRACE_SAVEVM_SEND_POSTCOPY_RUN_EVENT,
+ &_TRACE_SAVEVM_STATE_SETUP_EVENT,
+ &_TRACE_SAVEVM_STATE_HEADER_EVENT,
+ &_TRACE_SAVEVM_STATE_ITERATE_EVENT,
+ &_TRACE_SAVEVM_STATE_CLEANUP_EVENT,
+ &_TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_EVENT,
+ &_TRACE_SAVEVM_STATE_HANDLER_INSERT_EVENT,
+ &_TRACE_VMSTATE_SAVE_EVENT,
+ &_TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_EVENT,
+ &_TRACE_VMSTATE_SAVE_STATE_LOOP_EVENT,
+ &_TRACE_VMSTATE_SAVE_STATE_TOP_EVENT,
+ &_TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_EVENT,
+ &_TRACE_VMSTATE_SUBSECTION_SAVE_TOP_EVENT,
+ &_TRACE_VMSTATE_LOAD_EVENT,
+ &_TRACE_QEMU_ANNOUNCE_SELF_ITER_EVENT,
+ &_TRACE_VMSTATE_LOAD_FIELD_ERROR_EVENT,
+ &_TRACE_VMSTATE_LOAD_STATE_EVENT,
+ &_TRACE_VMSTATE_LOAD_STATE_END_EVENT,
+ &_TRACE_VMSTATE_LOAD_STATE_FIELD_EVENT,
+ &_TRACE_VMSTATE_N_ELEMS_EVENT,
+ &_TRACE_VMSTATE_SUBSECTION_LOAD_EVENT,
+ &_TRACE_VMSTATE_SUBSECTION_LOAD_BAD_EVENT,
+ &_TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_EVENT,
+ &_TRACE_GET_QTAILQ_EVENT,
+ &_TRACE_GET_QTAILQ_END_EVENT,
+ &_TRACE_PUT_QTAILQ_EVENT,
+ &_TRACE_PUT_QTAILQ_END_EVENT,
+ &_TRACE_QEMU_FILE_FCLOSE_EVENT,
+ &_TRACE_GET_QUEUED_PAGE_EVENT,
+ &_TRACE_GET_QUEUED_PAGE_NOT_DIRTY_EVENT,
+ &_TRACE_MIGRATION_BITMAP_SYNC_START_EVENT,
+ &_TRACE_MIGRATION_BITMAP_SYNC_END_EVENT,
+ &_TRACE_MIGRATION_THROTTLE_EVENT,
+ &_TRACE_RAM_DISCARD_RANGE_EVENT,
+ &_TRACE_RAM_LOAD_LOOP_EVENT,
+ &_TRACE_RAM_LOAD_POSTCOPY_LOOP_EVENT,
+ &_TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_EVENT,
+ &_TRACE_RAM_SAVE_PAGE_EVENT,
+ &_TRACE_RAM_SAVE_QUEUE_PAGES_EVENT,
+ &_TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_EVENT,
+ &_TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_EVENT,
+ &_TRACE_MIGRATE_SET_STATE_EVENT,
+ &_TRACE_MIGRATE_FD_CLEANUP_EVENT,
+ &_TRACE_MIGRATE_FD_ERROR_EVENT,
+ &_TRACE_MIGRATE_FD_CANCEL_EVENT,
+ &_TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_EVENT,
+ &_TRACE_MIGRATE_PENDING_EVENT,
+ &_TRACE_MIGRATE_SEND_RP_MESSAGE_EVENT,
+ &_TRACE_MIGRATION_COMPLETION_FILE_ERR_EVENT,
+ &_TRACE_MIGRATION_COMPLETION_POSTCOPY_END_EVENT,
+ &_TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_EVENT,
+ &_TRACE_MIGRATION_RETURN_PATH_END_BEFORE_EVENT,
+ &_TRACE_MIGRATION_RETURN_PATH_END_AFTER_EVENT,
+ &_TRACE_MIGRATION_THREAD_AFTER_LOOP_EVENT,
+ &_TRACE_MIGRATION_THREAD_FILE_ERR_EVENT,
+ &_TRACE_MIGRATION_THREAD_SETUP_COMPLETE_EVENT,
+ &_TRACE_OPEN_RETURN_PATH_ON_SOURCE_EVENT,
+ &_TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_EVENT,
+ &_TRACE_POSTCOPY_START_EVENT,
+ &_TRACE_POSTCOPY_START_SET_RUN_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_END_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_PONG_EVENT,
+ &_TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_EVENT,
+ &_TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_EVENT,
+ &_TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_EVENT,
+ &_TRACE_MIGRATION_THREAD_LOW_PENDING_EVENT,
+ &_TRACE_MIGRATE_STATE_TOO_BIG_EVENT,
+ &_TRACE_MIGRATE_TRANSFERRED_EVENT,
+ &_TRACE_PROCESS_INCOMING_MIGRATION_CO_END_EVENT,
+ &_TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_EVENT,
+ &_TRACE_MIGRATION_SET_INCOMING_CHANNEL_EVENT,
+ &_TRACE_MIGRATION_SET_OUTGOING_CHANNEL_EVENT,
+ &_TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_EVENT,
+ &_TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_EVENT,
+ &_TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_EVENT,
+ &_TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_EVENT,
+ &_TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_EVENT,
+ &_TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_EVENT,
+ &_TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_EVENT,
+ &_TRACE_QEMU_RDMA_CLOSE_EVENT,
+ &_TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_EVENT,
+ &_TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_EVENT,
+ &_TRACE_QEMU_RDMA_DEST_INIT_TRYING_EVENT,
+ &_TRACE_QEMU_RDMA_DUMP_GID_EVENT,
+ &_TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_EVENT,
+ &_TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_EVENT,
+ &_TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_EVENT,
+ &_TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_EVENT,
+ &_TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_EVENT,
+ &_TRACE_QEMU_RDMA_FILL_EVENT,
+ &_TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_EVENT,
+ &_TRACE_QEMU_RDMA_POLL_RECV_EVENT,
+ &_TRACE_QEMU_RDMA_POLL_WRITE_EVENT,
+ &_TRACE_QEMU_RDMA_POLL_OTHER_EVENT,
+ &_TRACE_QEMU_RDMA_POST_SEND_CONTROL_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_START_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_STOP_EVENT,
+ &_TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_EVENT,
+ &_TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_EVENT,
+ &_TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_EVENT,
+ &_TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_EVENT,
+ &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_EVENT,
+ &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_EVENT,
+ &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_EVENT,
+ &_TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_FLUSH_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_POST_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_TOP_EVENT,
+ &_TRACE_QEMU_RDMA_WRITE_ONE_ZERO_EVENT,
+ &_TRACE_RDMA_ADD_BLOCK_EVENT,
+ &_TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_EVENT,
+ &_TRACE_RDMA_DELETE_BLOCK_EVENT,
+ &_TRACE_RDMA_START_INCOMING_MIGRATION_EVENT,
+ &_TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_EVENT,
+ &_TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_EVENT,
+ &_TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_EVENT,
+ &_TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_EVENT,
+ &_TRACE_POSTCOPY_DISCARD_SEND_FINISH_EVENT,
+ &_TRACE_POSTCOPY_DISCARD_SEND_RANGE_EVENT,
+ &_TRACE_POSTCOPY_CLEANUP_RANGE_EVENT,
+ &_TRACE_POSTCOPY_INIT_RANGE_EVENT,
+ &_TRACE_POSTCOPY_NHP_RANGE_EVENT,
+ &_TRACE_POSTCOPY_PLACE_PAGE_EVENT,
+ &_TRACE_POSTCOPY_PLACE_PAGE_ZERO_EVENT,
+ &_TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_EVENT,
+ &_TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_EVENT,
+ &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_EVENT,
+ &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_EVENT,
+ &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_EVENT,
+ &_TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_EVENT,
+ &_TRACE_POSTCOPY_REQUEST_SHARED_PAGE_EVENT,
+ &_TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_EVENT,
+ &_TRACE_POSTCOPY_WAKE_SHARED_EVENT,
+ &_TRACE_SAVE_XBZRLE_PAGE_SKIPPING_EVENT,
+ &_TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_EVENT,
+ &_TRACE_RAM_SAVE_ITERATE_BIG_WAIT_EVENT,
+ &_TRACE_RAM_LOAD_COMPLETE_EVENT,
+ &_TRACE_MIGRATION_EXEC_OUTGOING_EVENT,
+ &_TRACE_MIGRATION_EXEC_INCOMING_EVENT,
+ &_TRACE_MIGRATION_FD_OUTGOING_EVENT,
+ &_TRACE_MIGRATION_FD_INCOMING_EVENT,
+ &_TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_EVENT,
+ &_TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_EVENT,
+ &_TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_EVENT,
+ &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_EVENT,
+ &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_EVENT,
+ &_TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_EVENT,
+ &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_EVENT,
+ &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_EVENT,
+ &_TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_EVENT,
+ &_TRACE_COLO_VM_STATE_CHANGE_EVENT,
+ &_TRACE_COLO_SEND_MESSAGE_EVENT,
+ &_TRACE_COLO_RECEIVE_MESSAGE_EVENT,
+ &_TRACE_COLO_FAILOVER_SET_STATE_EVENT,
+ &_TRACE_SEND_BITMAP_HEADER_ENTER_EVENT,
+ &_TRACE_SEND_BITMAP_BITS_EVENT,
+ &_TRACE_DIRTY_BITMAP_SAVE_ITERATE_EVENT,
+ &_TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_EVENT,
+ &_TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_EVENT,
+ &_TRACE_DIRTY_BITMAP_SAVE_PENDING_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_COMPLETE_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_HEADER_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_ENTER_EVENT,
+ &_TRACE_DIRTY_BITMAP_LOAD_SUCCESS_EVENT,
+ NULL,
+};
+
+static void trace_migration_register_events(void)
+{
+ trace_event_register_group(migration_trace_events);
+}
+trace_init(trace_migration_register_events)
diff --git a/qemu2-auto-generated/migration/trace.h b/qemu2-auto-generated/migration/trace.h
new file mode 100644
index 0000000000..979cf87d20
--- /dev/null
+++ b/qemu2-auto-generated/migration/trace.h
@@ -0,0 +1,3817 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_MIGRATION_GENERATED_TRACERS_H
+#define TRACE_MIGRATION_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_EVENT;
+extern TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_EVENT;
+extern TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_EVENT;
+extern TraceEvent _TRACE_QEMU_LOADVM_STATE_POST_MAIN_EVENT;
+extern TraceEvent _TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_EVENT;
+extern TraceEvent _TRACE_QEMU_CHECK_SECTION_FOOTER_EVENT;
+extern TraceEvent _TRACE_SAVE_SECTION_FOOTER_EVENT;
+extern TraceEvent _TRACE_QEMU_SAVEVM_SEND_PACKAGED_EVENT;
+extern TraceEvent _TRACE_LOADVM_STATE_SETUP_EVENT;
+extern TraceEvent _TRACE_LOADVM_STATE_CLEANUP_EVENT;
+extern TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_EVENT;
+extern TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_EVENT;
+extern TraceEvent _TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_EVENT;
+extern TraceEvent _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_EVENT;
+extern TraceEvent _TRACE_LOADVM_PROCESS_COMMAND_EVENT;
+extern TraceEvent _TRACE_LOADVM_PROCESS_COMMAND_PING_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_EVENT;
+extern TraceEvent _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_EVENT;
+extern TraceEvent _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_EVENT;
+extern TraceEvent _TRACE_SAVEVM_COMMAND_SEND_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SECTION_START_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SECTION_END_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SECTION_SKIP_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SEND_PING_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_EVENT;
+extern TraceEvent _TRACE_SAVEVM_SEND_POSTCOPY_RUN_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_SETUP_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_HEADER_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_ITERATE_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_CLEANUP_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_EVENT;
+extern TraceEvent _TRACE_SAVEVM_STATE_HANDLER_INSERT_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SAVE_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SAVE_STATE_LOOP_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SAVE_STATE_TOP_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SUBSECTION_SAVE_TOP_EVENT;
+extern TraceEvent _TRACE_VMSTATE_LOAD_EVENT;
+extern TraceEvent _TRACE_QEMU_ANNOUNCE_SELF_ITER_EVENT;
+extern TraceEvent _TRACE_VMSTATE_LOAD_FIELD_ERROR_EVENT;
+extern TraceEvent _TRACE_VMSTATE_LOAD_STATE_EVENT;
+extern TraceEvent _TRACE_VMSTATE_LOAD_STATE_END_EVENT;
+extern TraceEvent _TRACE_VMSTATE_LOAD_STATE_FIELD_EVENT;
+extern TraceEvent _TRACE_VMSTATE_N_ELEMS_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_BAD_EVENT;
+extern TraceEvent _TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_EVENT;
+extern TraceEvent _TRACE_GET_QTAILQ_EVENT;
+extern TraceEvent _TRACE_GET_QTAILQ_END_EVENT;
+extern TraceEvent _TRACE_PUT_QTAILQ_EVENT;
+extern TraceEvent _TRACE_PUT_QTAILQ_END_EVENT;
+extern TraceEvent _TRACE_QEMU_FILE_FCLOSE_EVENT;
+extern TraceEvent _TRACE_GET_QUEUED_PAGE_EVENT;
+extern TraceEvent _TRACE_GET_QUEUED_PAGE_NOT_DIRTY_EVENT;
+extern TraceEvent _TRACE_MIGRATION_BITMAP_SYNC_START_EVENT;
+extern TraceEvent _TRACE_MIGRATION_BITMAP_SYNC_END_EVENT;
+extern TraceEvent _TRACE_MIGRATION_THROTTLE_EVENT;
+extern TraceEvent _TRACE_RAM_DISCARD_RANGE_EVENT;
+extern TraceEvent _TRACE_RAM_LOAD_LOOP_EVENT;
+extern TraceEvent _TRACE_RAM_LOAD_POSTCOPY_LOOP_EVENT;
+extern TraceEvent _TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_EVENT;
+extern TraceEvent _TRACE_RAM_SAVE_PAGE_EVENT;
+extern TraceEvent _TRACE_RAM_SAVE_QUEUE_PAGES_EVENT;
+extern TraceEvent _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_EVENT;
+extern TraceEvent _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_EVENT;
+extern TraceEvent _TRACE_MIGRATE_SET_STATE_EVENT;
+extern TraceEvent _TRACE_MIGRATE_FD_CLEANUP_EVENT;
+extern TraceEvent _TRACE_MIGRATE_FD_ERROR_EVENT;
+extern TraceEvent _TRACE_MIGRATE_FD_CANCEL_EVENT;
+extern TraceEvent _TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_EVENT;
+extern TraceEvent _TRACE_MIGRATE_PENDING_EVENT;
+extern TraceEvent _TRACE_MIGRATE_SEND_RP_MESSAGE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_COMPLETION_FILE_ERR_EVENT;
+extern TraceEvent _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_EVENT;
+extern TraceEvent _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_RETURN_PATH_END_BEFORE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_RETURN_PATH_END_AFTER_EVENT;
+extern TraceEvent _TRACE_MIGRATION_THREAD_AFTER_LOOP_EVENT;
+extern TraceEvent _TRACE_MIGRATION_THREAD_FILE_ERR_EVENT;
+extern TraceEvent _TRACE_MIGRATION_THREAD_SETUP_COMPLETE_EVENT;
+extern TraceEvent _TRACE_OPEN_RETURN_PATH_ON_SOURCE_EVENT;
+extern TraceEvent _TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_START_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_START_SET_RUN_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_END_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_PONG_EVENT;
+extern TraceEvent _TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_EVENT;
+extern TraceEvent _TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_EVENT;
+extern TraceEvent _TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_THREAD_LOW_PENDING_EVENT;
+extern TraceEvent _TRACE_MIGRATE_STATE_TOO_BIG_EVENT;
+extern TraceEvent _TRACE_MIGRATE_TRANSFERRED_EVENT;
+extern TraceEvent _TRACE_PROCESS_INCOMING_MIGRATION_CO_END_EVENT;
+extern TraceEvent _TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_EVENT;
+extern TraceEvent _TRACE_MIGRATION_SET_INCOMING_CHANNEL_EVENT;
+extern TraceEvent _TRACE_MIGRATION_SET_OUTGOING_CHANNEL_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_CLOSE_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_DEST_INIT_TRYING_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_DUMP_GID_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_FILL_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_POLL_RECV_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_POLL_WRITE_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_POLL_OTHER_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_POST_SEND_CONTROL_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_START_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_STOP_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_FLUSH_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_POST_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_TOP_EVENT;
+extern TraceEvent _TRACE_QEMU_RDMA_WRITE_ONE_ZERO_EVENT;
+extern TraceEvent _TRACE_RDMA_ADD_BLOCK_EVENT;
+extern TraceEvent _TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_EVENT;
+extern TraceEvent _TRACE_RDMA_DELETE_BLOCK_EVENT;
+extern TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_EVENT;
+extern TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_EVENT;
+extern TraceEvent _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_EVENT;
+extern TraceEvent _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_EVENT;
+extern TraceEvent _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_DISCARD_SEND_FINISH_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_DISCARD_SEND_RANGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_CLEANUP_RANGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_INIT_RANGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_NHP_RANGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_PLACE_PAGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_PLACE_PAGE_ZERO_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_EVENT;
+extern TraceEvent _TRACE_POSTCOPY_WAKE_SHARED_EVENT;
+extern TraceEvent _TRACE_SAVE_XBZRLE_PAGE_SKIPPING_EVENT;
+extern TraceEvent _TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_EVENT;
+extern TraceEvent _TRACE_RAM_SAVE_ITERATE_BIG_WAIT_EVENT;
+extern TraceEvent _TRACE_RAM_LOAD_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_EXEC_OUTGOING_EVENT;
+extern TraceEvent _TRACE_MIGRATION_EXEC_INCOMING_EVENT;
+extern TraceEvent _TRACE_MIGRATION_FD_OUTGOING_EVENT;
+extern TraceEvent _TRACE_MIGRATION_FD_INCOMING_EVENT;
+extern TraceEvent _TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_EVENT;
+extern TraceEvent _TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_EVENT;
+extern TraceEvent _TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_EVENT;
+extern TraceEvent _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_EVENT;
+extern TraceEvent _TRACE_COLO_VM_STATE_CHANGE_EVENT;
+extern TraceEvent _TRACE_COLO_SEND_MESSAGE_EVENT;
+extern TraceEvent _TRACE_COLO_RECEIVE_MESSAGE_EVENT;
+extern TraceEvent _TRACE_COLO_FAILOVER_SET_STATE_EVENT;
+extern TraceEvent _TRACE_SEND_BITMAP_HEADER_ENTER_EVENT;
+extern TraceEvent _TRACE_SEND_BITMAP_BITS_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_SAVE_ITERATE_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_SAVE_PENDING_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_COMPLETE_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_HEADER_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_ENTER_EVENT;
+extern TraceEvent _TRACE_DIRTY_BITMAP_LOAD_SUCCESS_EVENT;
+extern uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_DSTATE;
+extern uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_DSTATE;
+extern uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_DSTATE;
+extern uint16_t _TRACE_QEMU_LOADVM_STATE_POST_MAIN_DSTATE;
+extern uint16_t _TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_DSTATE;
+extern uint16_t _TRACE_QEMU_CHECK_SECTION_FOOTER_DSTATE;
+extern uint16_t _TRACE_SAVE_SECTION_FOOTER_DSTATE;
+extern uint16_t _TRACE_QEMU_SAVEVM_SEND_PACKAGED_DSTATE;
+extern uint16_t _TRACE_LOADVM_STATE_SETUP_DSTATE;
+extern uint16_t _TRACE_LOADVM_STATE_CLEANUP_DSTATE;
+extern uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_DSTATE;
+extern uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_DSTATE;
+extern uint16_t _TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_DSTATE;
+extern uint16_t _TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_DSTATE;
+extern uint16_t _TRACE_LOADVM_PROCESS_COMMAND_DSTATE;
+extern uint16_t _TRACE_LOADVM_PROCESS_COMMAND_PING_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_DSTATE;
+extern uint16_t _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_DSTATE;
+extern uint16_t _TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_DSTATE;
+extern uint16_t _TRACE_SAVEVM_COMMAND_SEND_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SECTION_START_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SECTION_END_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SECTION_SKIP_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SEND_PING_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_DSTATE;
+extern uint16_t _TRACE_SAVEVM_SEND_POSTCOPY_RUN_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_SETUP_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_HEADER_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_ITERATE_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_CLEANUP_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_DSTATE;
+extern uint16_t _TRACE_SAVEVM_STATE_HANDLER_INSERT_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SAVE_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SAVE_STATE_LOOP_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SAVE_STATE_TOP_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SUBSECTION_SAVE_TOP_DSTATE;
+extern uint16_t _TRACE_VMSTATE_LOAD_DSTATE;
+extern uint16_t _TRACE_QEMU_ANNOUNCE_SELF_ITER_DSTATE;
+extern uint16_t _TRACE_VMSTATE_LOAD_FIELD_ERROR_DSTATE;
+extern uint16_t _TRACE_VMSTATE_LOAD_STATE_DSTATE;
+extern uint16_t _TRACE_VMSTATE_LOAD_STATE_END_DSTATE;
+extern uint16_t _TRACE_VMSTATE_LOAD_STATE_FIELD_DSTATE;
+extern uint16_t _TRACE_VMSTATE_N_ELEMS_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_BAD_DSTATE;
+extern uint16_t _TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_DSTATE;
+extern uint16_t _TRACE_GET_QTAILQ_DSTATE;
+extern uint16_t _TRACE_GET_QTAILQ_END_DSTATE;
+extern uint16_t _TRACE_PUT_QTAILQ_DSTATE;
+extern uint16_t _TRACE_PUT_QTAILQ_END_DSTATE;
+extern uint16_t _TRACE_QEMU_FILE_FCLOSE_DSTATE;
+extern uint16_t _TRACE_GET_QUEUED_PAGE_DSTATE;
+extern uint16_t _TRACE_GET_QUEUED_PAGE_NOT_DIRTY_DSTATE;
+extern uint16_t _TRACE_MIGRATION_BITMAP_SYNC_START_DSTATE;
+extern uint16_t _TRACE_MIGRATION_BITMAP_SYNC_END_DSTATE;
+extern uint16_t _TRACE_MIGRATION_THROTTLE_DSTATE;
+extern uint16_t _TRACE_RAM_DISCARD_RANGE_DSTATE;
+extern uint16_t _TRACE_RAM_LOAD_LOOP_DSTATE;
+extern uint16_t _TRACE_RAM_LOAD_POSTCOPY_LOOP_DSTATE;
+extern uint16_t _TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_DSTATE;
+extern uint16_t _TRACE_RAM_SAVE_PAGE_DSTATE;
+extern uint16_t _TRACE_RAM_SAVE_QUEUE_PAGES_DSTATE;
+extern uint16_t _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_DSTATE;
+extern uint16_t _TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_DSTATE;
+extern uint16_t _TRACE_MIGRATE_SET_STATE_DSTATE;
+extern uint16_t _TRACE_MIGRATE_FD_CLEANUP_DSTATE;
+extern uint16_t _TRACE_MIGRATE_FD_ERROR_DSTATE;
+extern uint16_t _TRACE_MIGRATE_FD_CANCEL_DSTATE;
+extern uint16_t _TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_DSTATE;
+extern uint16_t _TRACE_MIGRATE_PENDING_DSTATE;
+extern uint16_t _TRACE_MIGRATE_SEND_RP_MESSAGE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_COMPLETION_FILE_ERR_DSTATE;
+extern uint16_t _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_DSTATE;
+extern uint16_t _TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_RETURN_PATH_END_BEFORE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_RETURN_PATH_END_AFTER_DSTATE;
+extern uint16_t _TRACE_MIGRATION_THREAD_AFTER_LOOP_DSTATE;
+extern uint16_t _TRACE_MIGRATION_THREAD_FILE_ERR_DSTATE;
+extern uint16_t _TRACE_MIGRATION_THREAD_SETUP_COMPLETE_DSTATE;
+extern uint16_t _TRACE_OPEN_RETURN_PATH_ON_SOURCE_DSTATE;
+extern uint16_t _TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_START_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_START_SET_RUN_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_END_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_PONG_DSTATE;
+extern uint16_t _TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_DSTATE;
+extern uint16_t _TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_DSTATE;
+extern uint16_t _TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_THREAD_LOW_PENDING_DSTATE;
+extern uint16_t _TRACE_MIGRATE_STATE_TOO_BIG_DSTATE;
+extern uint16_t _TRACE_MIGRATE_TRANSFERRED_DSTATE;
+extern uint16_t _TRACE_PROCESS_INCOMING_MIGRATION_CO_END_DSTATE;
+extern uint16_t _TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_DSTATE;
+extern uint16_t _TRACE_MIGRATION_SET_INCOMING_CHANNEL_DSTATE;
+extern uint16_t _TRACE_MIGRATION_SET_OUTGOING_CHANNEL_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_CLOSE_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_DEST_INIT_TRYING_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_DUMP_GID_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_FILL_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_POLL_RECV_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_POLL_WRITE_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_POLL_OTHER_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_POST_SEND_CONTROL_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_START_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_STOP_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_FLUSH_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_POST_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_TOP_DSTATE;
+extern uint16_t _TRACE_QEMU_RDMA_WRITE_ONE_ZERO_DSTATE;
+extern uint16_t _TRACE_RDMA_ADD_BLOCK_DSTATE;
+extern uint16_t _TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_DSTATE;
+extern uint16_t _TRACE_RDMA_DELETE_BLOCK_DSTATE;
+extern uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_DSTATE;
+extern uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_DSTATE;
+extern uint16_t _TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_DSTATE;
+extern uint16_t _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_DSTATE;
+extern uint16_t _TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_DISCARD_SEND_FINISH_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_DISCARD_SEND_RANGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_CLEANUP_RANGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_INIT_RANGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_NHP_RANGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_PLACE_PAGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_PLACE_PAGE_ZERO_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_DSTATE;
+extern uint16_t _TRACE_POSTCOPY_WAKE_SHARED_DSTATE;
+extern uint16_t _TRACE_SAVE_XBZRLE_PAGE_SKIPPING_DSTATE;
+extern uint16_t _TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_DSTATE;
+extern uint16_t _TRACE_RAM_SAVE_ITERATE_BIG_WAIT_DSTATE;
+extern uint16_t _TRACE_RAM_LOAD_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_EXEC_OUTGOING_DSTATE;
+extern uint16_t _TRACE_MIGRATION_EXEC_INCOMING_DSTATE;
+extern uint16_t _TRACE_MIGRATION_FD_OUTGOING_DSTATE;
+extern uint16_t _TRACE_MIGRATION_FD_INCOMING_DSTATE;
+extern uint16_t _TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_DSTATE;
+extern uint16_t _TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_DSTATE;
+extern uint16_t _TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_DSTATE;
+extern uint16_t _TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_DSTATE;
+extern uint16_t _TRACE_COLO_VM_STATE_CHANGE_DSTATE;
+extern uint16_t _TRACE_COLO_SEND_MESSAGE_DSTATE;
+extern uint16_t _TRACE_COLO_RECEIVE_MESSAGE_DSTATE;
+extern uint16_t _TRACE_COLO_FAILOVER_SET_STATE_DSTATE;
+extern uint16_t _TRACE_SEND_BITMAP_HEADER_ENTER_DSTATE;
+extern uint16_t _TRACE_SEND_BITMAP_BITS_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_SAVE_ITERATE_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_SAVE_PENDING_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_COMPLETE_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_HEADER_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_ENTER_DSTATE;
+extern uint16_t _TRACE_DIRTY_BITMAP_LOAD_SUCCESS_DSTATE;
+#define TRACE_QEMU_LOADVM_STATE_SECTION_ENABLED 1
+#define TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_ENABLED 1
+#define TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_ENABLED 1
+#define TRACE_QEMU_LOADVM_STATE_POST_MAIN_ENABLED 1
+#define TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_ENABLED 1
+#define TRACE_QEMU_CHECK_SECTION_FOOTER_ENABLED 1
+#define TRACE_SAVE_SECTION_FOOTER_ENABLED 1
+#define TRACE_QEMU_SAVEVM_SEND_PACKAGED_ENABLED 1
+#define TRACE_LOADVM_STATE_SETUP_ENABLED 1
+#define TRACE_LOADVM_STATE_CLEANUP_ENABLED 1
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_ENABLED 1
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_ENABLED 1
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_ENABLED 1
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_ENABLED 1
+#define TRACE_LOADVM_PROCESS_COMMAND_ENABLED 1
+#define TRACE_LOADVM_PROCESS_COMMAND_PING_ENABLED 1
+#define TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_ENABLED 1
+#define TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_ENABLED 1
+#define TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_ENABLED 1
+#define TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_ENABLED 1
+#define TRACE_SAVEVM_COMMAND_SEND_ENABLED 1
+#define TRACE_SAVEVM_SECTION_START_ENABLED 1
+#define TRACE_SAVEVM_SECTION_END_ENABLED 1
+#define TRACE_SAVEVM_SECTION_SKIP_ENABLED 1
+#define TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_ENABLED 1
+#define TRACE_SAVEVM_SEND_PING_ENABLED 1
+#define TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_ENABLED 1
+#define TRACE_SAVEVM_SEND_POSTCOPY_RUN_ENABLED 1
+#define TRACE_SAVEVM_STATE_SETUP_ENABLED 1
+#define TRACE_SAVEVM_STATE_HEADER_ENABLED 1
+#define TRACE_SAVEVM_STATE_ITERATE_ENABLED 1
+#define TRACE_SAVEVM_STATE_CLEANUP_ENABLED 1
+#define TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_ENABLED 1
+#define TRACE_SAVEVM_STATE_HANDLER_INSERT_ENABLED 1
+#define TRACE_VMSTATE_SAVE_ENABLED 1
+#define TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_ENABLED 1
+#define TRACE_VMSTATE_SAVE_STATE_LOOP_ENABLED 1
+#define TRACE_VMSTATE_SAVE_STATE_TOP_ENABLED 1
+#define TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_ENABLED 1
+#define TRACE_VMSTATE_SUBSECTION_SAVE_TOP_ENABLED 1
+#define TRACE_VMSTATE_LOAD_ENABLED 1
+#define TRACE_QEMU_ANNOUNCE_SELF_ITER_ENABLED 1
+#define TRACE_VMSTATE_LOAD_FIELD_ERROR_ENABLED 1
+#define TRACE_VMSTATE_LOAD_STATE_ENABLED 1
+#define TRACE_VMSTATE_LOAD_STATE_END_ENABLED 1
+#define TRACE_VMSTATE_LOAD_STATE_FIELD_ENABLED 1
+#define TRACE_VMSTATE_N_ELEMS_ENABLED 1
+#define TRACE_VMSTATE_SUBSECTION_LOAD_ENABLED 1
+#define TRACE_VMSTATE_SUBSECTION_LOAD_BAD_ENABLED 1
+#define TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_ENABLED 1
+#define TRACE_GET_QTAILQ_ENABLED 1
+#define TRACE_GET_QTAILQ_END_ENABLED 1
+#define TRACE_PUT_QTAILQ_ENABLED 1
+#define TRACE_PUT_QTAILQ_END_ENABLED 1
+#define TRACE_QEMU_FILE_FCLOSE_ENABLED 1
+#define TRACE_GET_QUEUED_PAGE_ENABLED 1
+#define TRACE_GET_QUEUED_PAGE_NOT_DIRTY_ENABLED 1
+#define TRACE_MIGRATION_BITMAP_SYNC_START_ENABLED 1
+#define TRACE_MIGRATION_BITMAP_SYNC_END_ENABLED 1
+#define TRACE_MIGRATION_THROTTLE_ENABLED 1
+#define TRACE_RAM_DISCARD_RANGE_ENABLED 1
+#define TRACE_RAM_LOAD_LOOP_ENABLED 1
+#define TRACE_RAM_LOAD_POSTCOPY_LOOP_ENABLED 1
+#define TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_ENABLED 1
+#define TRACE_RAM_SAVE_PAGE_ENABLED 1
+#define TRACE_RAM_SAVE_QUEUE_PAGES_ENABLED 1
+#define TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_ENABLED 1
+#define TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_ENABLED 1
+#define TRACE_MIGRATE_SET_STATE_ENABLED 1
+#define TRACE_MIGRATE_FD_CLEANUP_ENABLED 1
+#define TRACE_MIGRATE_FD_ERROR_ENABLED 1
+#define TRACE_MIGRATE_FD_CANCEL_ENABLED 1
+#define TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_ENABLED 1
+#define TRACE_MIGRATE_PENDING_ENABLED 1
+#define TRACE_MIGRATE_SEND_RP_MESSAGE_ENABLED 1
+#define TRACE_MIGRATION_COMPLETION_FILE_ERR_ENABLED 1
+#define TRACE_MIGRATION_COMPLETION_POSTCOPY_END_ENABLED 1
+#define TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_ENABLED 1
+#define TRACE_MIGRATION_RETURN_PATH_END_BEFORE_ENABLED 1
+#define TRACE_MIGRATION_RETURN_PATH_END_AFTER_ENABLED 1
+#define TRACE_MIGRATION_THREAD_AFTER_LOOP_ENABLED 1
+#define TRACE_MIGRATION_THREAD_FILE_ERR_ENABLED 1
+#define TRACE_MIGRATION_THREAD_SETUP_COMPLETE_ENABLED 1
+#define TRACE_OPEN_RETURN_PATH_ON_SOURCE_ENABLED 1
+#define TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_ENABLED 1
+#define TRACE_POSTCOPY_START_ENABLED 1
+#define TRACE_POSTCOPY_START_SET_RUN_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_END_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_PONG_ENABLED 1
+#define TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_ENABLED 1
+#define TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_ENABLED 1
+#define TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_ENABLED 1
+#define TRACE_MIGRATION_THREAD_LOW_PENDING_ENABLED 1
+#define TRACE_MIGRATE_STATE_TOO_BIG_ENABLED 1
+#define TRACE_MIGRATE_TRANSFERRED_ENABLED 1
+#define TRACE_PROCESS_INCOMING_MIGRATION_CO_END_ENABLED 1
+#define TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_ENABLED 1
+#define TRACE_MIGRATION_SET_INCOMING_CHANNEL_ENABLED 1
+#define TRACE_MIGRATION_SET_OUTGOING_CHANNEL_ENABLED 1
+#define TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ENABLED 1
+#define TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_ENABLED 1
+#define TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_ENABLED 1
+#define TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_ENABLED 1
+#define TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_ENABLED 1
+#define TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_ENABLED 1
+#define TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_ENABLED 1
+#define TRACE_QEMU_RDMA_CLOSE_ENABLED 1
+#define TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_ENABLED 1
+#define TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_ENABLED 1
+#define TRACE_QEMU_RDMA_DEST_INIT_TRYING_ENABLED 1
+#define TRACE_QEMU_RDMA_DUMP_GID_ENABLED 1
+#define TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_ENABLED 1
+#define TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_ENABLED 1
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_ENABLED 1
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_ENABLED 1
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_ENABLED 1
+#define TRACE_QEMU_RDMA_FILL_ENABLED 1
+#define TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_ENABLED 1
+#define TRACE_QEMU_RDMA_POLL_RECV_ENABLED 1
+#define TRACE_QEMU_RDMA_POLL_WRITE_ENABLED 1
+#define TRACE_QEMU_RDMA_POLL_OTHER_ENABLED 1
+#define TRACE_QEMU_RDMA_POST_SEND_CONTROL_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_START_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_STOP_ENABLED 1
+#define TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_ENABLED 1
+#define TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_ENABLED 1
+#define TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_ENABLED 1
+#define TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_ENABLED 1
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_ENABLED 1
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_ENABLED 1
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_ENABLED 1
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_FLUSH_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_POST_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_TOP_ENABLED 1
+#define TRACE_QEMU_RDMA_WRITE_ONE_ZERO_ENABLED 1
+#define TRACE_RDMA_ADD_BLOCK_ENABLED 1
+#define TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_ENABLED 1
+#define TRACE_RDMA_DELETE_BLOCK_ENABLED 1
+#define TRACE_RDMA_START_INCOMING_MIGRATION_ENABLED 1
+#define TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_ENABLED 1
+#define TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_ENABLED 1
+#define TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_ENABLED 1
+#define TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_ENABLED 1
+#define TRACE_POSTCOPY_DISCARD_SEND_FINISH_ENABLED 1
+#define TRACE_POSTCOPY_DISCARD_SEND_RANGE_ENABLED 1
+#define TRACE_POSTCOPY_CLEANUP_RANGE_ENABLED 1
+#define TRACE_POSTCOPY_INIT_RANGE_ENABLED 1
+#define TRACE_POSTCOPY_NHP_RANGE_ENABLED 1
+#define TRACE_POSTCOPY_PLACE_PAGE_ENABLED 1
+#define TRACE_POSTCOPY_PLACE_PAGE_ZERO_ENABLED 1
+#define TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_ENABLED 1
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_ENABLED 1
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_ENABLED 1
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_ENABLED 1
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_ENABLED 1
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_ENABLED 1
+#define TRACE_POSTCOPY_REQUEST_SHARED_PAGE_ENABLED 1
+#define TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_ENABLED 1
+#define TRACE_POSTCOPY_WAKE_SHARED_ENABLED 1
+#define TRACE_SAVE_XBZRLE_PAGE_SKIPPING_ENABLED 1
+#define TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_ENABLED 1
+#define TRACE_RAM_SAVE_ITERATE_BIG_WAIT_ENABLED 1
+#define TRACE_RAM_LOAD_COMPLETE_ENABLED 1
+#define TRACE_MIGRATION_EXEC_OUTGOING_ENABLED 1
+#define TRACE_MIGRATION_EXEC_INCOMING_ENABLED 1
+#define TRACE_MIGRATION_FD_OUTGOING_ENABLED 1
+#define TRACE_MIGRATION_FD_INCOMING_ENABLED 1
+#define TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_ENABLED 1
+#define TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_ENABLED 1
+#define TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_ENABLED 1
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_ENABLED 1
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_ENABLED 1
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_ENABLED 1
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_ENABLED 1
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_ENABLED 1
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_ENABLED 1
+#define TRACE_COLO_VM_STATE_CHANGE_ENABLED 1
+#define TRACE_COLO_SEND_MESSAGE_ENABLED 1
+#define TRACE_COLO_RECEIVE_MESSAGE_ENABLED 1
+#define TRACE_COLO_FAILOVER_SET_STATE_ENABLED 1
+#define TRACE_SEND_BITMAP_HEADER_ENTER_ENABLED 1
+#define TRACE_SEND_BITMAP_BITS_ENABLED 1
+#define TRACE_DIRTY_BITMAP_SAVE_ITERATE_ENABLED 1
+#define TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_ENABLED 1
+#define TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_ENABLED 1
+#define TRACE_DIRTY_BITMAP_SAVE_PENDING_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_COMPLETE_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_HEADER_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_ENTER_ENABLED 1
+#define TRACE_DIRTY_BITMAP_LOAD_SUCCESS_ENABLED 1
+
+#define TRACE_QEMU_LOADVM_STATE_SECTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_loadvm_state_section(unsigned int section_type)
+{
+}
+
+static inline void trace_qemu_loadvm_state_section(unsigned int section_type)
+{
+ if (true) {
+ _nocheck__trace_qemu_loadvm_state_section(section_type);
+ }
+}
+
+#define TRACE_QEMU_LOADVM_STATE_SECTION_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_loadvm_state_section_command(int ret)
+{
+}
+
+static inline void trace_qemu_loadvm_state_section_command(int ret)
+{
+ if (true) {
+ _nocheck__trace_qemu_loadvm_state_section_command(ret);
+ }
+}
+
+#define TRACE_QEMU_LOADVM_STATE_SECTION_PARTEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_loadvm_state_section_partend(uint32_t section_id)
+{
+}
+
+static inline void trace_qemu_loadvm_state_section_partend(uint32_t section_id)
+{
+ if (true) {
+ _nocheck__trace_qemu_loadvm_state_section_partend(section_id);
+ }
+}
+
+#define TRACE_QEMU_LOADVM_STATE_POST_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_loadvm_state_post_main(int ret)
+{
+}
+
+static inline void trace_qemu_loadvm_state_post_main(int ret)
+{
+ if (true) {
+ _nocheck__trace_qemu_loadvm_state_post_main(ret);
+ }
+}
+
+#define TRACE_QEMU_LOADVM_STATE_SECTION_STARTFULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_loadvm_state_section_startfull(uint32_t section_id, const char * idstr, uint32_t instance_id, uint32_t version_id)
+{
+}
+
+static inline void trace_qemu_loadvm_state_section_startfull(uint32_t section_id, const char * idstr, uint32_t instance_id, uint32_t version_id)
+{
+ if (true) {
+ _nocheck__trace_qemu_loadvm_state_section_startfull(section_id, idstr, instance_id, version_id);
+ }
+}
+
+#define TRACE_QEMU_CHECK_SECTION_FOOTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_check_section_footer(uint32_t section_id, const char * idstr, uint32_t expect, const char* err)
+{
+}
+
+static inline void trace_qemu_check_section_footer(uint32_t section_id, const char * idstr, uint32_t expect, const char* err)
+{
+ if (true) {
+ _nocheck__trace_qemu_check_section_footer(section_id, idstr, expect, err);
+ }
+}
+
+#define TRACE_SAVE_SECTION_FOOTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_save_section_footer(uint32_t section_id, const char * idstr, int save)
+{
+}
+
+static inline void trace_save_section_footer(uint32_t section_id, const char * idstr, int save)
+{
+ if (true) {
+ _nocheck__trace_save_section_footer(section_id, idstr, save);
+ }
+}
+
+#define TRACE_QEMU_SAVEVM_SEND_PACKAGED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_savevm_send_packaged(void)
+{
+}
+
+static inline void trace_qemu_savevm_send_packaged(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_savevm_send_packaged();
+ }
+}
+
+#define TRACE_LOADVM_STATE_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_state_setup(void)
+{
+}
+
+static inline void trace_loadvm_state_setup(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_state_setup();
+ }
+}
+
+#define TRACE_LOADVM_STATE_CLEANUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_state_cleanup(void)
+{
+}
+
+static inline void trace_loadvm_state_cleanup(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_state_cleanup();
+ }
+}
+
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_handle_cmd_packaged(unsigned int length)
+{
+}
+
+static inline void trace_loadvm_handle_cmd_packaged(unsigned int length)
+{
+ if (true) {
+ _nocheck__trace_loadvm_handle_cmd_packaged(length);
+ }
+}
+
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_handle_cmd_packaged_main(int ret)
+{
+}
+
+static inline void trace_loadvm_handle_cmd_packaged_main(int ret)
+{
+ if (true) {
+ _nocheck__trace_loadvm_handle_cmd_packaged_main(ret);
+ }
+}
+
+#define TRACE_LOADVM_HANDLE_CMD_PACKAGED_RECEIVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_handle_cmd_packaged_received(int ret)
+{
+}
+
+static inline void trace_loadvm_handle_cmd_packaged_received(int ret)
+{
+ if (true) {
+ _nocheck__trace_loadvm_handle_cmd_packaged_received(ret);
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_HANDLE_ADVISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_handle_advise(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_handle_advise(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_handle_advise();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_HANDLE_LISTEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_handle_listen(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_handle_listen(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_handle_listen();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_handle_run(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_handle_run(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_handle_run();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_CPU_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_handle_run_cpu_sync(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_handle_run_cpu_sync(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_handle_run_cpu_sync();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_HANDLE_RUN_VMSTART_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_handle_run_vmstart(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_handle_run_vmstart(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_handle_run_vmstart();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_ram_handle_discard(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_ram_handle_discard(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_ram_handle_discard();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_ram_handle_discard_end(void)
+{
+}
+
+static inline void trace_loadvm_postcopy_ram_handle_discard_end(void)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_ram_handle_discard_end();
+ }
+}
+
+#define TRACE_LOADVM_POSTCOPY_RAM_HANDLE_DISCARD_HEADER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_postcopy_ram_handle_discard_header(const char * ramid, uint16_t len)
+{
+}
+
+static inline void trace_loadvm_postcopy_ram_handle_discard_header(const char * ramid, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_loadvm_postcopy_ram_handle_discard_header(ramid, len);
+ }
+}
+
+#define TRACE_LOADVM_PROCESS_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_process_command(uint16_t com, uint16_t len)
+{
+}
+
+static inline void trace_loadvm_process_command(uint16_t com, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_loadvm_process_command(com, len);
+ }
+}
+
+#define TRACE_LOADVM_PROCESS_COMMAND_PING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_loadvm_process_command_ping(uint32_t val)
+{
+}
+
+static inline void trace_loadvm_process_command_ping(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_loadvm_process_command_ping(val);
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_LISTEN_THREAD_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_listen_thread_exit(void)
+{
+}
+
+static inline void trace_postcopy_ram_listen_thread_exit(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_listen_thread_exit();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_LISTEN_THREAD_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_listen_thread_start(void)
+{
+}
+
+static inline void trace_postcopy_ram_listen_thread_start(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_listen_thread_start();
+ }
+}
+
+#define TRACE_QEMU_SAVEVM_SEND_POSTCOPY_ADVISE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_savevm_send_postcopy_advise(void)
+{
+}
+
+static inline void trace_qemu_savevm_send_postcopy_advise(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_savevm_send_postcopy_advise();
+ }
+}
+
+#define TRACE_QEMU_SAVEVM_SEND_POSTCOPY_RAM_DISCARD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_savevm_send_postcopy_ram_discard(const char * id, uint16_t len)
+{
+}
+
+static inline void trace_qemu_savevm_send_postcopy_ram_discard(const char * id, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_qemu_savevm_send_postcopy_ram_discard(id, len);
+ }
+}
+
+#define TRACE_SAVEVM_COMMAND_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_command_send(uint16_t command, uint16_t len)
+{
+}
+
+static inline void trace_savevm_command_send(uint16_t command, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_savevm_command_send(command, len);
+ }
+}
+
+#define TRACE_SAVEVM_SECTION_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_section_start(const char * id, unsigned int section_id)
+{
+}
+
+static inline void trace_savevm_section_start(const char * id, unsigned int section_id)
+{
+ if (true) {
+ _nocheck__trace_savevm_section_start(id, section_id);
+ }
+}
+
+#define TRACE_SAVEVM_SECTION_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_section_end(const char * id, unsigned int section_id, int ret)
+{
+}
+
+static inline void trace_savevm_section_end(const char * id, unsigned int section_id, int ret)
+{
+ if (true) {
+ _nocheck__trace_savevm_section_end(id, section_id, ret);
+ }
+}
+
+#define TRACE_SAVEVM_SECTION_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_section_skip(const char * id, unsigned int section_id)
+{
+}
+
+static inline void trace_savevm_section_skip(const char * id, unsigned int section_id)
+{
+ if (true) {
+ _nocheck__trace_savevm_section_skip(id, section_id);
+ }
+}
+
+#define TRACE_SAVEVM_SEND_OPEN_RETURN_PATH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_send_open_return_path(void)
+{
+}
+
+static inline void trace_savevm_send_open_return_path(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_send_open_return_path();
+ }
+}
+
+#define TRACE_SAVEVM_SEND_PING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_send_ping(uint32_t val)
+{
+}
+
+static inline void trace_savevm_send_ping(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_savevm_send_ping(val);
+ }
+}
+
+#define TRACE_SAVEVM_SEND_POSTCOPY_LISTEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_send_postcopy_listen(void)
+{
+}
+
+static inline void trace_savevm_send_postcopy_listen(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_send_postcopy_listen();
+ }
+}
+
+#define TRACE_SAVEVM_SEND_POSTCOPY_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_send_postcopy_run(void)
+{
+}
+
+static inline void trace_savevm_send_postcopy_run(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_send_postcopy_run();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_SETUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_setup(void)
+{
+}
+
+static inline void trace_savevm_state_setup(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_setup();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_HEADER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_header(void)
+{
+}
+
+static inline void trace_savevm_state_header(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_header();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_ITERATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_iterate(void)
+{
+}
+
+static inline void trace_savevm_state_iterate(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_iterate();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_CLEANUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_cleanup(void)
+{
+}
+
+static inline void trace_savevm_state_cleanup(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_cleanup();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_COMPLETE_PRECOPY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_complete_precopy(void)
+{
+}
+
+static inline void trace_savevm_state_complete_precopy(void)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_complete_precopy();
+ }
+}
+
+#define TRACE_SAVEVM_STATE_HANDLER_INSERT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_savevm_state_handler_insert(const char * idstr, int instance_id, const char * vmname)
+{
+}
+
+static inline void trace_savevm_state_handler_insert(const char * idstr, int instance_id, const char * vmname)
+{
+ if (true) {
+ _nocheck__trace_savevm_state_handler_insert(idstr, instance_id, vmname);
+ }
+}
+
+#define TRACE_VMSTATE_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_save(const char * idstr, const char * vmsd_name)
+{
+}
+
+static inline void trace_vmstate_save(const char * idstr, const char * vmsd_name)
+{
+ if (true) {
+ _nocheck__trace_vmstate_save(idstr, vmsd_name);
+ }
+}
+
+#define TRACE_VMSTATE_SAVE_STATE_PRE_SAVE_RES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_save_state_pre_save_res(const char * name, int res)
+{
+}
+
+static inline void trace_vmstate_save_state_pre_save_res(const char * name, int res)
+{
+ if (true) {
+ _nocheck__trace_vmstate_save_state_pre_save_res(name, res);
+ }
+}
+
+#define TRACE_VMSTATE_SAVE_STATE_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_save_state_loop(const char * name, const char * field, int n_elems)
+{
+}
+
+static inline void trace_vmstate_save_state_loop(const char * name, const char * field, int n_elems)
+{
+ if (true) {
+ _nocheck__trace_vmstate_save_state_loop(name, field, n_elems);
+ }
+}
+
+#define TRACE_VMSTATE_SAVE_STATE_TOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_save_state_top(const char * idstr)
+{
+}
+
+static inline void trace_vmstate_save_state_top(const char * idstr)
+{
+ if (true) {
+ _nocheck__trace_vmstate_save_state_top(idstr);
+ }
+}
+
+#define TRACE_VMSTATE_SUBSECTION_SAVE_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_subsection_save_loop(const char * name, const char * sub)
+{
+}
+
+static inline void trace_vmstate_subsection_save_loop(const char * name, const char * sub)
+{
+ if (true) {
+ _nocheck__trace_vmstate_subsection_save_loop(name, sub);
+ }
+}
+
+#define TRACE_VMSTATE_SUBSECTION_SAVE_TOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_subsection_save_top(const char * idstr)
+{
+}
+
+static inline void trace_vmstate_subsection_save_top(const char * idstr)
+{
+ if (true) {
+ _nocheck__trace_vmstate_subsection_save_top(idstr);
+ }
+}
+
+#define TRACE_VMSTATE_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_load(const char * idstr, const char * vmsd_name)
+{
+}
+
+static inline void trace_vmstate_load(const char * idstr, const char * vmsd_name)
+{
+ if (true) {
+ _nocheck__trace_vmstate_load(idstr, vmsd_name);
+ }
+}
+
+#define TRACE_QEMU_ANNOUNCE_SELF_ITER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_announce_self_iter(const char * mac)
+{
+}
+
+static inline void trace_qemu_announce_self_iter(const char * mac)
+{
+ if (true) {
+ _nocheck__trace_qemu_announce_self_iter(mac);
+ }
+}
+
+#define TRACE_VMSTATE_LOAD_FIELD_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_load_field_error(const char * field, int ret)
+{
+}
+
+static inline void trace_vmstate_load_field_error(const char * field, int ret)
+{
+ if (true) {
+ _nocheck__trace_vmstate_load_field_error(field, ret);
+ }
+}
+
+#define TRACE_VMSTATE_LOAD_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_load_state(const char * name, int version_id)
+{
+}
+
+static inline void trace_vmstate_load_state(const char * name, int version_id)
+{
+ if (true) {
+ _nocheck__trace_vmstate_load_state(name, version_id);
+ }
+}
+
+#define TRACE_VMSTATE_LOAD_STATE_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_load_state_end(const char * name, const char * reason, int val)
+{
+}
+
+static inline void trace_vmstate_load_state_end(const char * name, const char * reason, int val)
+{
+ if (true) {
+ _nocheck__trace_vmstate_load_state_end(name, reason, val);
+ }
+}
+
+#define TRACE_VMSTATE_LOAD_STATE_FIELD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_load_state_field(const char * name, const char * field)
+{
+}
+
+static inline void trace_vmstate_load_state_field(const char * name, const char * field)
+{
+ if (true) {
+ _nocheck__trace_vmstate_load_state_field(name, field);
+ }
+}
+
+#define TRACE_VMSTATE_N_ELEMS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_n_elems(const char * name, int n_elems)
+{
+}
+
+static inline void trace_vmstate_n_elems(const char * name, int n_elems)
+{
+ if (true) {
+ _nocheck__trace_vmstate_n_elems(name, n_elems);
+ }
+}
+
+#define TRACE_VMSTATE_SUBSECTION_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_subsection_load(const char * parent)
+{
+}
+
+static inline void trace_vmstate_subsection_load(const char * parent)
+{
+ if (true) {
+ _nocheck__trace_vmstate_subsection_load(parent);
+ }
+}
+
+#define TRACE_VMSTATE_SUBSECTION_LOAD_BAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_subsection_load_bad(const char * parent, const char * sub, const char * sub2)
+{
+}
+
+static inline void trace_vmstate_subsection_load_bad(const char * parent, const char * sub, const char * sub2)
+{
+ if (true) {
+ _nocheck__trace_vmstate_subsection_load_bad(parent, sub, sub2);
+ }
+}
+
+#define TRACE_VMSTATE_SUBSECTION_LOAD_GOOD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vmstate_subsection_load_good(const char * parent)
+{
+}
+
+static inline void trace_vmstate_subsection_load_good(const char * parent)
+{
+ if (true) {
+ _nocheck__trace_vmstate_subsection_load_good(parent);
+ }
+}
+
+#define TRACE_GET_QTAILQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_get_qtailq(const char * name, int version_id)
+{
+}
+
+static inline void trace_get_qtailq(const char * name, int version_id)
+{
+ if (true) {
+ _nocheck__trace_get_qtailq(name, version_id);
+ }
+}
+
+#define TRACE_GET_QTAILQ_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_get_qtailq_end(const char * name, const char * reason, int val)
+{
+}
+
+static inline void trace_get_qtailq_end(const char * name, const char * reason, int val)
+{
+ if (true) {
+ _nocheck__trace_get_qtailq_end(name, reason, val);
+ }
+}
+
+#define TRACE_PUT_QTAILQ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_put_qtailq(const char * name, int version_id)
+{
+}
+
+static inline void trace_put_qtailq(const char * name, int version_id)
+{
+ if (true) {
+ _nocheck__trace_put_qtailq(name, version_id);
+ }
+}
+
+#define TRACE_PUT_QTAILQ_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_put_qtailq_end(const char * name, const char * reason)
+{
+}
+
+static inline void trace_put_qtailq_end(const char * name, const char * reason)
+{
+ if (true) {
+ _nocheck__trace_put_qtailq_end(name, reason);
+ }
+}
+
+#define TRACE_QEMU_FILE_FCLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_file_fclose(void)
+{
+}
+
+static inline void trace_qemu_file_fclose(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_file_fclose();
+ }
+}
+
+#define TRACE_GET_QUEUED_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_get_queued_page(const char * block_name, uint64_t tmp_offset, unsigned long page_abs)
+{
+}
+
+static inline void trace_get_queued_page(const char * block_name, uint64_t tmp_offset, unsigned long page_abs)
+{
+ if (true) {
+ _nocheck__trace_get_queued_page(block_name, tmp_offset, page_abs);
+ }
+}
+
+#define TRACE_GET_QUEUED_PAGE_NOT_DIRTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_get_queued_page_not_dirty(const char * block_name, uint64_t tmp_offset, unsigned long page_abs, int sent)
+{
+}
+
+static inline void trace_get_queued_page_not_dirty(const char * block_name, uint64_t tmp_offset, unsigned long page_abs, int sent)
+{
+ if (true) {
+ _nocheck__trace_get_queued_page_not_dirty(block_name, tmp_offset, page_abs, sent);
+ }
+}
+
+#define TRACE_MIGRATION_BITMAP_SYNC_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_bitmap_sync_start(void)
+{
+}
+
+static inline void trace_migration_bitmap_sync_start(void)
+{
+ if (true) {
+ _nocheck__trace_migration_bitmap_sync_start();
+ }
+}
+
+#define TRACE_MIGRATION_BITMAP_SYNC_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_bitmap_sync_end(uint64_t dirty_pages)
+{
+}
+
+static inline void trace_migration_bitmap_sync_end(uint64_t dirty_pages)
+{
+ if (true) {
+ _nocheck__trace_migration_bitmap_sync_end(dirty_pages);
+ }
+}
+
+#define TRACE_MIGRATION_THROTTLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_throttle(void)
+{
+}
+
+static inline void trace_migration_throttle(void)
+{
+ if (true) {
+ _nocheck__trace_migration_throttle();
+ }
+}
+
+#define TRACE_RAM_DISCARD_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_discard_range(const char * rbname, uint64_t start, size_t len)
+{
+}
+
+static inline void trace_ram_discard_range(const char * rbname, uint64_t start, size_t len)
+{
+ if (true) {
+ _nocheck__trace_ram_discard_range(rbname, start, len);
+ }
+}
+
+#define TRACE_RAM_LOAD_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_load_loop(const char * rbname, uint64_t addr, int flags, void * host)
+{
+}
+
+static inline void trace_ram_load_loop(const char * rbname, uint64_t addr, int flags, void * host)
+{
+ if (true) {
+ _nocheck__trace_ram_load_loop(rbname, addr, flags, host);
+ }
+}
+
+#define TRACE_RAM_LOAD_POSTCOPY_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_load_postcopy_loop(uint64_t addr, int flags)
+{
+}
+
+static inline void trace_ram_load_postcopy_loop(uint64_t addr, int flags)
+{
+ if (true) {
+ _nocheck__trace_ram_load_postcopy_loop(addr, flags);
+ }
+}
+
+#define TRACE_RAM_POSTCOPY_SEND_DISCARD_BITMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_postcopy_send_discard_bitmap(void)
+{
+}
+
+static inline void trace_ram_postcopy_send_discard_bitmap(void)
+{
+ if (true) {
+ _nocheck__trace_ram_postcopy_send_discard_bitmap();
+ }
+}
+
+#define TRACE_RAM_SAVE_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_save_page(const char * rbname, uint64_t offset, void * host)
+{
+}
+
+static inline void trace_ram_save_page(const char * rbname, uint64_t offset, void * host)
+{
+ if (true) {
+ _nocheck__trace_ram_save_page(rbname, offset, host);
+ }
+}
+
+#define TRACE_RAM_SAVE_QUEUE_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_save_queue_pages(const char * rbname, size_t start, size_t len)
+{
+}
+
+static inline void trace_ram_save_queue_pages(const char * rbname, size_t start, size_t len)
+{
+ if (true) {
+ _nocheck__trace_ram_save_queue_pages(rbname, start, len);
+ }
+}
+
+#define TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_await_return_path_close_on_source_close(void)
+{
+}
+
+static inline void trace_await_return_path_close_on_source_close(void)
+{
+ if (true) {
+ _nocheck__trace_await_return_path_close_on_source_close();
+ }
+}
+
+#define TRACE_AWAIT_RETURN_PATH_CLOSE_ON_SOURCE_JOINING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_await_return_path_close_on_source_joining(void)
+{
+}
+
+static inline void trace_await_return_path_close_on_source_joining(void)
+{
+ if (true) {
+ _nocheck__trace_await_return_path_close_on_source_joining();
+ }
+}
+
+#define TRACE_MIGRATE_SET_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_set_state(const char * new_state)
+{
+}
+
+static inline void trace_migrate_set_state(const char * new_state)
+{
+ if (true) {
+ _nocheck__trace_migrate_set_state(new_state);
+ }
+}
+
+#define TRACE_MIGRATE_FD_CLEANUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_fd_cleanup(void)
+{
+}
+
+static inline void trace_migrate_fd_cleanup(void)
+{
+ if (true) {
+ _nocheck__trace_migrate_fd_cleanup();
+ }
+}
+
+#define TRACE_MIGRATE_FD_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_fd_error(const char * error_desc)
+{
+}
+
+static inline void trace_migrate_fd_error(const char * error_desc)
+{
+ if (true) {
+ _nocheck__trace_migrate_fd_error(error_desc);
+ }
+}
+
+#define TRACE_MIGRATE_FD_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_fd_cancel(void)
+{
+}
+
+static inline void trace_migrate_fd_cancel(void)
+{
+ if (true) {
+ _nocheck__trace_migrate_fd_cancel();
+ }
+}
+
+#define TRACE_MIGRATE_HANDLE_RP_REQ_PAGES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_handle_rp_req_pages(const char * rbname, size_t start, size_t len)
+{
+}
+
+static inline void trace_migrate_handle_rp_req_pages(const char * rbname, size_t start, size_t len)
+{
+ if (true) {
+ _nocheck__trace_migrate_handle_rp_req_pages(rbname, start, len);
+ }
+}
+
+#define TRACE_MIGRATE_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t compat, uint64_t post)
+{
+}
+
+static inline void trace_migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t compat, uint64_t post)
+{
+ if (true) {
+ _nocheck__trace_migrate_pending(size, max, pre, compat, post);
+ }
+}
+
+#define TRACE_MIGRATE_SEND_RP_MESSAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_send_rp_message(int msg_type, uint16_t len)
+{
+}
+
+static inline void trace_migrate_send_rp_message(int msg_type, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_migrate_send_rp_message(msg_type, len);
+ }
+}
+
+#define TRACE_MIGRATION_COMPLETION_FILE_ERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_completion_file_err(void)
+{
+}
+
+static inline void trace_migration_completion_file_err(void)
+{
+ if (true) {
+ _nocheck__trace_migration_completion_file_err();
+ }
+}
+
+#define TRACE_MIGRATION_COMPLETION_POSTCOPY_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_completion_postcopy_end(void)
+{
+}
+
+static inline void trace_migration_completion_postcopy_end(void)
+{
+ if (true) {
+ _nocheck__trace_migration_completion_postcopy_end();
+ }
+}
+
+#define TRACE_MIGRATION_COMPLETION_POSTCOPY_END_AFTER_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_completion_postcopy_end_after_complete(void)
+{
+}
+
+static inline void trace_migration_completion_postcopy_end_after_complete(void)
+{
+ if (true) {
+ _nocheck__trace_migration_completion_postcopy_end_after_complete();
+ }
+}
+
+#define TRACE_MIGRATION_RETURN_PATH_END_BEFORE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_return_path_end_before(void)
+{
+}
+
+static inline void trace_migration_return_path_end_before(void)
+{
+ if (true) {
+ _nocheck__trace_migration_return_path_end_before();
+ }
+}
+
+#define TRACE_MIGRATION_RETURN_PATH_END_AFTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_return_path_end_after(int rp_error)
+{
+}
+
+static inline void trace_migration_return_path_end_after(int rp_error)
+{
+ if (true) {
+ _nocheck__trace_migration_return_path_end_after(rp_error);
+ }
+}
+
+#define TRACE_MIGRATION_THREAD_AFTER_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_thread_after_loop(void)
+{
+}
+
+static inline void trace_migration_thread_after_loop(void)
+{
+ if (true) {
+ _nocheck__trace_migration_thread_after_loop();
+ }
+}
+
+#define TRACE_MIGRATION_THREAD_FILE_ERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_thread_file_err(void)
+{
+}
+
+static inline void trace_migration_thread_file_err(void)
+{
+ if (true) {
+ _nocheck__trace_migration_thread_file_err();
+ }
+}
+
+#define TRACE_MIGRATION_THREAD_SETUP_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_thread_setup_complete(void)
+{
+}
+
+static inline void trace_migration_thread_setup_complete(void)
+{
+ if (true) {
+ _nocheck__trace_migration_thread_setup_complete();
+ }
+}
+
+#define TRACE_OPEN_RETURN_PATH_ON_SOURCE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_return_path_on_source(void)
+{
+}
+
+static inline void trace_open_return_path_on_source(void)
+{
+ if (true) {
+ _nocheck__trace_open_return_path_on_source();
+ }
+}
+
+#define TRACE_OPEN_RETURN_PATH_ON_SOURCE_CONTINUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_open_return_path_on_source_continue(void)
+{
+}
+
+static inline void trace_open_return_path_on_source_continue(void)
+{
+ if (true) {
+ _nocheck__trace_open_return_path_on_source_continue();
+ }
+}
+
+#define TRACE_POSTCOPY_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_start(void)
+{
+}
+
+static inline void trace_postcopy_start(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_start();
+ }
+}
+
+#define TRACE_POSTCOPY_START_SET_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_start_set_run(void)
+{
+}
+
+static inline void trace_postcopy_start_set_run(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_start_set_run();
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_BAD_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_bad_end(void)
+{
+}
+
+static inline void trace_source_return_path_thread_bad_end(void)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_bad_end();
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_end(void)
+{
+}
+
+static inline void trace_source_return_path_thread_end(void)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_end();
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_entry(void)
+{
+}
+
+static inline void trace_source_return_path_thread_entry(void)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_entry();
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_LOOP_TOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_loop_top(void)
+{
+}
+
+static inline void trace_source_return_path_thread_loop_top(void)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_loop_top();
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_PONG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_pong(uint32_t val)
+{
+}
+
+static inline void trace_source_return_path_thread_pong(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_pong(val);
+ }
+}
+
+#define TRACE_SOURCE_RETURN_PATH_THREAD_SHUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_source_return_path_thread_shut(uint32_t val)
+{
+}
+
+static inline void trace_source_return_path_thread_shut(uint32_t val)
+{
+ if (true) {
+ _nocheck__trace_source_return_path_thread_shut(val);
+ }
+}
+
+#define TRACE_MIGRATE_GLOBAL_STATE_POST_LOAD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_global_state_post_load(const char * state)
+{
+}
+
+static inline void trace_migrate_global_state_post_load(const char * state)
+{
+ if (true) {
+ _nocheck__trace_migrate_global_state_post_load(state);
+ }
+}
+
+#define TRACE_MIGRATE_GLOBAL_STATE_PRE_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_global_state_pre_save(const char * state)
+{
+}
+
+static inline void trace_migrate_global_state_pre_save(const char * state)
+{
+ if (true) {
+ _nocheck__trace_migrate_global_state_pre_save(state);
+ }
+}
+
+#define TRACE_MIGRATION_THREAD_LOW_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_thread_low_pending(uint64_t pending)
+{
+}
+
+static inline void trace_migration_thread_low_pending(uint64_t pending)
+{
+ if (true) {
+ _nocheck__trace_migration_thread_low_pending(pending);
+ }
+}
+
+#define TRACE_MIGRATE_STATE_TOO_BIG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_state_too_big(void)
+{
+}
+
+static inline void trace_migrate_state_too_big(void)
+{
+ if (true) {
+ _nocheck__trace_migrate_state_too_big();
+ }
+}
+
+#define TRACE_MIGRATE_TRANSFERRED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migrate_transferred(uint64_t tranferred, uint64_t time_spent, double bandwidth, uint64_t size)
+{
+}
+
+static inline void trace_migrate_transferred(uint64_t tranferred, uint64_t time_spent, double bandwidth, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_migrate_transferred(tranferred, time_spent, bandwidth, size);
+ }
+}
+
+#define TRACE_PROCESS_INCOMING_MIGRATION_CO_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_incoming_migration_co_end(int ret, int ps)
+{
+}
+
+static inline void trace_process_incoming_migration_co_end(int ret, int ps)
+{
+ if (true) {
+ _nocheck__trace_process_incoming_migration_co_end(ret, ps);
+ }
+}
+
+#define TRACE_PROCESS_INCOMING_MIGRATION_CO_POSTCOPY_END_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_process_incoming_migration_co_postcopy_end_main(void)
+{
+}
+
+static inline void trace_process_incoming_migration_co_postcopy_end_main(void)
+{
+ if (true) {
+ _nocheck__trace_process_incoming_migration_co_postcopy_end_main();
+ }
+}
+
+#define TRACE_MIGRATION_SET_INCOMING_CHANNEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_set_incoming_channel(void * ioc, const char * ioctype)
+{
+}
+
+static inline void trace_migration_set_incoming_channel(void * ioc, const char * ioctype)
+{
+ if (true) {
+ _nocheck__trace_migration_set_incoming_channel(ioc, ioctype);
+ }
+}
+
+#define TRACE_MIGRATION_SET_OUTGOING_CHANNEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_set_outgoing_channel(void * ioc, const char * ioctype, const char * hostname, void * err)
+{
+}
+
+static inline void trace_migration_set_outgoing_channel(void * ioc, const char * ioctype, const char * hostname, void * err)
+{
+ if (true) {
+ _nocheck__trace_migration_set_outgoing_channel(ioc, ioctype, hostname, err);
+ }
+}
+
+#define TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_accept_incoming_migration(void)
+{
+}
+
+static inline void trace_qemu_rdma_accept_incoming_migration(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_accept_incoming_migration();
+ }
+}
+
+#define TRACE_QEMU_RDMA_ACCEPT_INCOMING_MIGRATION_ACCEPTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_accept_incoming_migration_accepted(void)
+{
+}
+
+static inline void trace_qemu_rdma_accept_incoming_migration_accepted(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_accept_incoming_migration_accepted();
+ }
+}
+
+#define TRACE_QEMU_RDMA_ACCEPT_PIN_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_accept_pin_state(bool pin)
+{
+}
+
+static inline void trace_qemu_rdma_accept_pin_state(bool pin)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_accept_pin_state(pin);
+ }
+}
+
+#define TRACE_QEMU_RDMA_ACCEPT_PIN_VERBSC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_accept_pin_verbsc(void * verbs)
+{
+}
+
+static inline void trace_qemu_rdma_accept_pin_verbsc(void * verbs)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_accept_pin_verbsc(verbs);
+ }
+}
+
+#define TRACE_QEMU_RDMA_BLOCK_FOR_WRID_MISS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_block_for_wrid_miss(const char * wcompstr, int wcomp, const char * gcompstr, uint64_t req)
+{
+}
+
+static inline void trace_qemu_rdma_block_for_wrid_miss(const char * wcompstr, int wcomp, const char * gcompstr, uint64_t req)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_block_for_wrid_miss(wcompstr, wcomp, gcompstr, req);
+ }
+}
+
+#define TRACE_QEMU_RDMA_CLEANUP_DISCONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_cleanup_disconnect(void)
+{
+}
+
+static inline void trace_qemu_rdma_cleanup_disconnect(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_cleanup_disconnect();
+ }
+}
+
+#define TRACE_QEMU_RDMA_CLEANUP_WAITING_FOR_DISCONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_cleanup_waiting_for_disconnect(void)
+{
+}
+
+static inline void trace_qemu_rdma_cleanup_waiting_for_disconnect(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_cleanup_waiting_for_disconnect();
+ }
+}
+
+#define TRACE_QEMU_RDMA_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_close(void)
+{
+}
+
+static inline void trace_qemu_rdma_close(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_close();
+ }
+}
+
+#define TRACE_QEMU_RDMA_CONNECT_PIN_ALL_REQUESTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_connect_pin_all_requested(void)
+{
+}
+
+static inline void trace_qemu_rdma_connect_pin_all_requested(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_connect_pin_all_requested();
+ }
+}
+
+#define TRACE_QEMU_RDMA_CONNECT_PIN_ALL_OUTCOME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_connect_pin_all_outcome(bool pin)
+{
+}
+
+static inline void trace_qemu_rdma_connect_pin_all_outcome(bool pin)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_connect_pin_all_outcome(pin);
+ }
+}
+
+#define TRACE_QEMU_RDMA_DEST_INIT_TRYING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_dest_init_trying(const char * host, const char * ip)
+{
+}
+
+static inline void trace_qemu_rdma_dest_init_trying(const char * host, const char * ip)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_dest_init_trying(host, ip);
+ }
+}
+
+#define TRACE_QEMU_RDMA_DUMP_GID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_dump_gid(const char * who, const char * src, const char * dst)
+{
+}
+
+static inline void trace_qemu_rdma_dump_gid(const char * who, const char * src, const char * dst)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_dump_gid(who, src, dst);
+ }
+}
+
+#define TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_exchange_get_response_start(const char * desc)
+{
+}
+
+static inline void trace_qemu_rdma_exchange_get_response_start(const char * desc)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_exchange_get_response_start(desc);
+ }
+}
+
+#define TRACE_QEMU_RDMA_EXCHANGE_GET_RESPONSE_NONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_exchange_get_response_none(const char * desc, int type)
+{
+}
+
+static inline void trace_qemu_rdma_exchange_get_response_none(const char * desc, int type)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_exchange_get_response_none(desc, type);
+ }
+}
+
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_ISSUE_CALLBACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_exchange_send_issue_callback(void)
+{
+}
+
+static inline void trace_qemu_rdma_exchange_send_issue_callback(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_exchange_send_issue_callback();
+ }
+}
+
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_WAITING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_exchange_send_waiting(const char * desc)
+{
+}
+
+static inline void trace_qemu_rdma_exchange_send_waiting(const char * desc)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_exchange_send_waiting(desc);
+ }
+}
+
+#define TRACE_QEMU_RDMA_EXCHANGE_SEND_RECEIVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_exchange_send_received(const char * desc)
+{
+}
+
+static inline void trace_qemu_rdma_exchange_send_received(const char * desc)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_exchange_send_received(desc);
+ }
+}
+
+#define TRACE_QEMU_RDMA_FILL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_fill(size_t control_len, size_t size)
+{
+}
+
+static inline void trace_qemu_rdma_fill(size_t control_len, size_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_fill(control_len, size);
+ }
+}
+
+#define TRACE_QEMU_RDMA_INIT_RAM_BLOCKS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_init_ram_blocks(int blocks)
+{
+}
+
+static inline void trace_qemu_rdma_init_ram_blocks(int blocks)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_init_ram_blocks(blocks);
+ }
+}
+
+#define TRACE_QEMU_RDMA_POLL_RECV_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_poll_recv(const char * compstr, int64_t comp, int64_t id, int sent)
+{
+}
+
+static inline void trace_qemu_rdma_poll_recv(const char * compstr, int64_t comp, int64_t id, int sent)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_poll_recv(compstr, comp, id, sent);
+ }
+}
+
+#define TRACE_QEMU_RDMA_POLL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_poll_write(const char * compstr, int64_t comp, int left, uint64_t block, uint64_t chunk, void * local, void * remote)
+{
+}
+
+static inline void trace_qemu_rdma_poll_write(const char * compstr, int64_t comp, int left, uint64_t block, uint64_t chunk, void * local, void * remote)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_poll_write(compstr, comp, left, block, chunk, local, remote);
+ }
+}
+
+#define TRACE_QEMU_RDMA_POLL_OTHER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_poll_other(const char * compstr, int64_t comp, int left)
+{
+}
+
+static inline void trace_qemu_rdma_poll_other(const char * compstr, int64_t comp, int left)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_poll_other(compstr, comp, left);
+ }
+}
+
+#define TRACE_QEMU_RDMA_POST_SEND_CONTROL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_post_send_control(const char * desc)
+{
+}
+
+static inline void trace_qemu_rdma_post_send_control(const char * desc)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_post_send_control(desc);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTER_AND_GET_KEYS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_register_and_get_keys(uint64_t len, void * start)
+{
+}
+
+static inline void trace_qemu_rdma_register_and_get_keys(uint64_t len, void * start)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_register_and_get_keys(len, start);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_COMPRESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_compress(int64_t length, int index, int64_t offset)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_compress(int64_t length, int index, int64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_compress(length, index, offset);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_FINISHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_finished(void)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_finished(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_finished();
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_ram_blocks(void)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_ram_blocks(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_ram_blocks();
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_RAM_BLOCKS_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_ram_blocks_loop(const char * name, uint64_t offset, uint64_t length, void * local_host_addr, unsigned int src_index)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_ram_blocks_loop(const char * name, uint64_t offset, uint64_t length, void * local_host_addr, unsigned int src_index)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_ram_blocks_loop(name, offset, length, local_host_addr, src_index);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_register(int requests)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_register(int requests)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_register(requests);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_register_loop(int req, int index, uint64_t addr, uint64_t chunks)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_register_loop(int req, int index, uint64_t addr, uint64_t chunks)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_register_loop(req, index, addr, chunks);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_REGISTER_RKEY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_register_rkey(int rkey)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_register_rkey(int rkey)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_register_rkey(rkey);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_unregister(int requests)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_unregister(int requests)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_unregister(requests);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_unregister_loop(int count, int index, uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_unregister_loop(int count, int index, uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_unregister_loop(count, index, chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_UNREGISTER_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_unregister_success(uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_unregister_success(uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_unregister_success(chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_HANDLE_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_handle_wait(void)
+{
+}
+
+static inline void trace_qemu_rdma_registration_handle_wait(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_handle_wait();
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_start(uint64_t flags)
+{
+}
+
+static inline void trace_qemu_rdma_registration_start(uint64_t flags)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_start(flags);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_STOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_stop(uint64_t flags)
+{
+}
+
+static inline void trace_qemu_rdma_registration_stop(uint64_t flags)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_stop(flags);
+ }
+}
+
+#define TRACE_QEMU_RDMA_REGISTRATION_STOP_RAM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_registration_stop_ram(void)
+{
+}
+
+static inline void trace_qemu_rdma_registration_stop_ram(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_registration_stop_ram();
+ }
+}
+
+#define TRACE_QEMU_RDMA_RESOLVE_HOST_TRYING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_resolve_host_trying(const char * host, const char * ip)
+{
+}
+
+static inline void trace_qemu_rdma_resolve_host_trying(const char * host, const char * ip)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_resolve_host_trying(host, ip);
+ }
+}
+
+#define TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_APPEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_signal_unregister_append(uint64_t chunk, int pos)
+{
+}
+
+static inline void trace_qemu_rdma_signal_unregister_append(uint64_t chunk, int pos)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_signal_unregister_append(chunk, pos);
+ }
+}
+
+#define TRACE_QEMU_RDMA_SIGNAL_UNREGISTER_ALREADY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_signal_unregister_already(uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_signal_unregister_already(uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_signal_unregister_already(chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_INFLIGHT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_unregister_waiting_inflight(uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_unregister_waiting_inflight(uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_unregister_waiting_inflight(chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_PROC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_unregister_waiting_proc(uint64_t chunk, int pos)
+{
+}
+
+static inline void trace_qemu_rdma_unregister_waiting_proc(uint64_t chunk, int pos)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_unregister_waiting_proc(chunk, pos);
+ }
+}
+
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_SEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_unregister_waiting_send(uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_unregister_waiting_send(uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_unregister_waiting_send(chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_UNREGISTER_WAITING_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_unregister_waiting_complete(uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_unregister_waiting_complete(uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_unregister_waiting_complete(chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_FLUSH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_flush(int sent)
+{
+}
+
+static inline void trace_qemu_rdma_write_flush(int sent)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_flush(sent);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_block(int count, int block, uint64_t chunk, uint64_t current, uint64_t len, int nb_sent, int nb_chunks)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_block(int count, int block, uint64_t chunk, uint64_t current, uint64_t len, int nb_sent, int nb_chunks)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_block(count, block, chunk, current, len, nb_sent, nb_chunks);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_POST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_post(uint64_t chunk, long addr, long remote, uint32_t len)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_post(uint64_t chunk, long addr, long remote, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_post(chunk, addr, remote, len);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_QUEUE_FULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_queue_full(void)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_queue_full(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_queue_full();
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_RECVREGRES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_recvregres(int mykey, int theirkey, uint64_t chunk)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_recvregres(int mykey, int theirkey, uint64_t chunk)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_recvregres(mykey, theirkey, chunk);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_SENDREG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_sendreg(uint64_t chunk, int len, int index, int64_t offset)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_sendreg(uint64_t chunk, int len, int index, int64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_sendreg(chunk, len, index, offset);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_TOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_top(uint64_t chunks, uint64_t size)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_top(uint64_t chunks, uint64_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_top(chunks, size);
+ }
+}
+
+#define TRACE_QEMU_RDMA_WRITE_ONE_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_rdma_write_one_zero(uint64_t chunk, int len, int index, int64_t offset)
+{
+}
+
+static inline void trace_qemu_rdma_write_one_zero(uint64_t chunk, int len, int index, int64_t offset)
+{
+ if (true) {
+ _nocheck__trace_qemu_rdma_write_one_zero(chunk, len, index, offset);
+ }
+}
+
+#define TRACE_RDMA_ADD_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_add_block(const char * block_name, int block, uint64_t addr, uint64_t offset, uint64_t len, uint64_t end, uint64_t bits, int chunks)
+{
+}
+
+static inline void trace_rdma_add_block(const char * block_name, int block, uint64_t addr, uint64_t offset, uint64_t len, uint64_t end, uint64_t bits, int chunks)
+{
+ if (true) {
+ _nocheck__trace_rdma_add_block(block_name, block, addr, offset, len, end, bits, chunks);
+ }
+}
+
+#define TRACE_RDMA_BLOCK_NOTIFICATION_HANDLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_block_notification_handle(const char * name, int index)
+{
+}
+
+static inline void trace_rdma_block_notification_handle(const char * name, int index)
+{
+ if (true) {
+ _nocheck__trace_rdma_block_notification_handle(name, index);
+ }
+}
+
+#define TRACE_RDMA_DELETE_BLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_delete_block(void * block, uint64_t addr, uint64_t offset, uint64_t len, uint64_t end, uint64_t bits, int chunks)
+{
+}
+
+static inline void trace_rdma_delete_block(void * block, uint64_t addr, uint64_t offset, uint64_t len, uint64_t end, uint64_t bits, int chunks)
+{
+ if (true) {
+ _nocheck__trace_rdma_delete_block(block, addr, offset, len, end, bits, chunks);
+ }
+}
+
+#define TRACE_RDMA_START_INCOMING_MIGRATION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_start_incoming_migration(void)
+{
+}
+
+static inline void trace_rdma_start_incoming_migration(void)
+{
+ if (true) {
+ _nocheck__trace_rdma_start_incoming_migration();
+ }
+}
+
+#define TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_DEST_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_start_incoming_migration_after_dest_init(void)
+{
+}
+
+static inline void trace_rdma_start_incoming_migration_after_dest_init(void)
+{
+ if (true) {
+ _nocheck__trace_rdma_start_incoming_migration_after_dest_init();
+ }
+}
+
+#define TRACE_RDMA_START_INCOMING_MIGRATION_AFTER_RDMA_LISTEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_start_incoming_migration_after_rdma_listen(void)
+{
+}
+
+static inline void trace_rdma_start_incoming_migration_after_rdma_listen(void)
+{
+ if (true) {
+ _nocheck__trace_rdma_start_incoming_migration_after_rdma_listen();
+ }
+}
+
+#define TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_CONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_start_outgoing_migration_after_rdma_connect(void)
+{
+}
+
+static inline void trace_rdma_start_outgoing_migration_after_rdma_connect(void)
+{
+ if (true) {
+ _nocheck__trace_rdma_start_outgoing_migration_after_rdma_connect();
+ }
+}
+
+#define TRACE_RDMA_START_OUTGOING_MIGRATION_AFTER_RDMA_SOURCE_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_rdma_start_outgoing_migration_after_rdma_source_init(void)
+{
+}
+
+static inline void trace_rdma_start_outgoing_migration_after_rdma_source_init(void)
+{
+ if (true) {
+ _nocheck__trace_rdma_start_outgoing_migration_after_rdma_source_init();
+ }
+}
+
+#define TRACE_POSTCOPY_DISCARD_SEND_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_discard_send_finish(const char * ramblock, int nwords, int ncmds)
+{
+}
+
+static inline void trace_postcopy_discard_send_finish(const char * ramblock, int nwords, int ncmds)
+{
+ if (true) {
+ _nocheck__trace_postcopy_discard_send_finish(ramblock, nwords, ncmds);
+ }
+}
+
+#define TRACE_POSTCOPY_DISCARD_SEND_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_discard_send_range(const char * ramblock, unsigned long start, unsigned long length)
+{
+}
+
+static inline void trace_postcopy_discard_send_range(const char * ramblock, unsigned long start, unsigned long length)
+{
+ if (true) {
+ _nocheck__trace_postcopy_discard_send_range(ramblock, start, length);
+ }
+}
+
+#define TRACE_POSTCOPY_CLEANUP_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_cleanup_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+}
+
+static inline void trace_postcopy_cleanup_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+ if (true) {
+ _nocheck__trace_postcopy_cleanup_range(ramblock, host_addr, offset, length);
+ }
+}
+
+#define TRACE_POSTCOPY_INIT_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_init_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+}
+
+static inline void trace_postcopy_init_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+ if (true) {
+ _nocheck__trace_postcopy_init_range(ramblock, host_addr, offset, length);
+ }
+}
+
+#define TRACE_POSTCOPY_NHP_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_nhp_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+}
+
+static inline void trace_postcopy_nhp_range(const char * ramblock, void * host_addr, size_t offset, size_t length)
+{
+ if (true) {
+ _nocheck__trace_postcopy_nhp_range(ramblock, host_addr, offset, length);
+ }
+}
+
+#define TRACE_POSTCOPY_PLACE_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_place_page(void * host_addr)
+{
+}
+
+static inline void trace_postcopy_place_page(void * host_addr)
+{
+ if (true) {
+ _nocheck__trace_postcopy_place_page(host_addr);
+ }
+}
+
+#define TRACE_POSTCOPY_PLACE_PAGE_ZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_place_page_zero(void * host_addr)
+{
+}
+
+static inline void trace_postcopy_place_page_zero(void * host_addr)
+{
+ if (true) {
+ _nocheck__trace_postcopy_place_page_zero(host_addr);
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_ENABLE_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_enable_notify(void)
+{
+}
+
+static inline void trace_postcopy_ram_enable_notify(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_enable_notify();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_entry(void)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_entry(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_entry();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_exit(void)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_exit(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_exit();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_CORE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_fds_core(int baseufd, int quitfd)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_fds_core(int baseufd, int quitfd)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_fds_core(baseufd, quitfd);
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_FDS_EXTRA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_fds_extra(size_t index, const char * name, int fd)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_fds_extra(size_t index, const char * name, int fd)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_fds_extra(index, name, fd);
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_QUIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_quit(void)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_quit(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_quit();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_FAULT_THREAD_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_fault_thread_request(uint64_t hostaddr, const char * ramblock, size_t offset)
+{
+}
+
+static inline void trace_postcopy_ram_fault_thread_request(uint64_t hostaddr, const char * ramblock, size_t offset)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_fault_thread_request(hostaddr, ramblock, offset);
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_CLOSEUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_incoming_cleanup_closeuf(void)
+{
+}
+
+static inline void trace_postcopy_ram_incoming_cleanup_closeuf(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_incoming_cleanup_closeuf();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_incoming_cleanup_entry(void)
+{
+}
+
+static inline void trace_postcopy_ram_incoming_cleanup_entry(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_incoming_cleanup_entry();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_incoming_cleanup_exit(void)
+{
+}
+
+static inline void trace_postcopy_ram_incoming_cleanup_exit(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_incoming_cleanup_exit();
+ }
+}
+
+#define TRACE_POSTCOPY_RAM_INCOMING_CLEANUP_JOIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_ram_incoming_cleanup_join(void)
+{
+}
+
+static inline void trace_postcopy_ram_incoming_cleanup_join(void)
+{
+ if (true) {
+ _nocheck__trace_postcopy_ram_incoming_cleanup_join();
+ }
+}
+
+#define TRACE_POSTCOPY_REQUEST_SHARED_PAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_request_shared_page(const char * sharer, const char * rb, uint64_t rb_offset)
+{
+}
+
+static inline void trace_postcopy_request_shared_page(const char * sharer, const char * rb, uint64_t rb_offset)
+{
+ if (true) {
+ _nocheck__trace_postcopy_request_shared_page(sharer, rb, rb_offset);
+ }
+}
+
+#define TRACE_POSTCOPY_REQUEST_SHARED_PAGE_PRESENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_request_shared_page_present(const char * sharer, const char * rb, uint64_t rb_offset)
+{
+}
+
+static inline void trace_postcopy_request_shared_page_present(const char * sharer, const char * rb, uint64_t rb_offset)
+{
+ if (true) {
+ _nocheck__trace_postcopy_request_shared_page_present(sharer, rb, rb_offset);
+ }
+}
+
+#define TRACE_POSTCOPY_WAKE_SHARED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_postcopy_wake_shared(uint64_t client_addr, const char * rb)
+{
+}
+
+static inline void trace_postcopy_wake_shared(uint64_t client_addr, const char * rb)
+{
+ if (true) {
+ _nocheck__trace_postcopy_wake_shared(client_addr, rb);
+ }
+}
+
+#define TRACE_SAVE_XBZRLE_PAGE_SKIPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_save_xbzrle_page_skipping(void)
+{
+}
+
+static inline void trace_save_xbzrle_page_skipping(void)
+{
+ if (true) {
+ _nocheck__trace_save_xbzrle_page_skipping();
+ }
+}
+
+#define TRACE_SAVE_XBZRLE_PAGE_OVERFLOW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_save_xbzrle_page_overflow(void)
+{
+}
+
+static inline void trace_save_xbzrle_page_overflow(void)
+{
+ if (true) {
+ _nocheck__trace_save_xbzrle_page_overflow();
+ }
+}
+
+#define TRACE_RAM_SAVE_ITERATE_BIG_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_save_iterate_big_wait(uint64_t milliconds, int iterations)
+{
+}
+
+static inline void trace_ram_save_iterate_big_wait(uint64_t milliconds, int iterations)
+{
+ if (true) {
+ _nocheck__trace_ram_save_iterate_big_wait(milliconds, iterations);
+ }
+}
+
+#define TRACE_RAM_LOAD_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_load_complete(int ret, uint64_t seq_iter)
+{
+}
+
+static inline void trace_ram_load_complete(int ret, uint64_t seq_iter)
+{
+ if (true) {
+ _nocheck__trace_ram_load_complete(ret, seq_iter);
+ }
+}
+
+#define TRACE_MIGRATION_EXEC_OUTGOING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_exec_outgoing(const char * cmd)
+{
+}
+
+static inline void trace_migration_exec_outgoing(const char * cmd)
+{
+ if (true) {
+ _nocheck__trace_migration_exec_outgoing(cmd);
+ }
+}
+
+#define TRACE_MIGRATION_EXEC_INCOMING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_exec_incoming(const char * cmd)
+{
+}
+
+static inline void trace_migration_exec_incoming(const char * cmd)
+{
+ if (true) {
+ _nocheck__trace_migration_exec_incoming(cmd);
+ }
+}
+
+#define TRACE_MIGRATION_FD_OUTGOING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_fd_outgoing(int fd)
+{
+}
+
+static inline void trace_migration_fd_outgoing(int fd)
+{
+ if (true) {
+ _nocheck__trace_migration_fd_outgoing(fd);
+ }
+}
+
+#define TRACE_MIGRATION_FD_INCOMING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_fd_incoming(int fd)
+{
+}
+
+static inline void trace_migration_fd_incoming(int fd)
+{
+ if (true) {
+ _nocheck__trace_migration_fd_incoming(fd);
+ }
+}
+
+#define TRACE_MIGRATION_SOCKET_INCOMING_ACCEPTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_socket_incoming_accepted(void)
+{
+}
+
+static inline void trace_migration_socket_incoming_accepted(void)
+{
+ if (true) {
+ _nocheck__trace_migration_socket_incoming_accepted();
+ }
+}
+
+#define TRACE_MIGRATION_SOCKET_OUTGOING_CONNECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_socket_outgoing_connected(const char * hostname)
+{
+}
+
+static inline void trace_migration_socket_outgoing_connected(const char * hostname)
+{
+ if (true) {
+ _nocheck__trace_migration_socket_outgoing_connected(hostname);
+ }
+}
+
+#define TRACE_MIGRATION_SOCKET_OUTGOING_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_socket_outgoing_error(const char * err)
+{
+}
+
+static inline void trace_migration_socket_outgoing_error(const char * err)
+{
+ if (true) {
+ _nocheck__trace_migration_socket_outgoing_error(err);
+ }
+}
+
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_outgoing_handshake_start(const char * hostname)
+{
+}
+
+static inline void trace_migration_tls_outgoing_handshake_start(const char * hostname)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_outgoing_handshake_start(hostname);
+ }
+}
+
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_outgoing_handshake_error(const char * err)
+{
+}
+
+static inline void trace_migration_tls_outgoing_handshake_error(const char * err)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_outgoing_handshake_error(err);
+ }
+}
+
+#define TRACE_MIGRATION_TLS_OUTGOING_HANDSHAKE_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_outgoing_handshake_complete(void)
+{
+}
+
+static inline void trace_migration_tls_outgoing_handshake_complete(void)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_outgoing_handshake_complete();
+ }
+}
+
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_incoming_handshake_start(void)
+{
+}
+
+static inline void trace_migration_tls_incoming_handshake_start(void)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_incoming_handshake_start();
+ }
+}
+
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_incoming_handshake_error(const char * err)
+{
+}
+
+static inline void trace_migration_tls_incoming_handshake_error(const char * err)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_incoming_handshake_error(err);
+ }
+}
+
+#define TRACE_MIGRATION_TLS_INCOMING_HANDSHAKE_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_migration_tls_incoming_handshake_complete(void)
+{
+}
+
+static inline void trace_migration_tls_incoming_handshake_complete(void)
+{
+ if (true) {
+ _nocheck__trace_migration_tls_incoming_handshake_complete();
+ }
+}
+
+#define TRACE_COLO_VM_STATE_CHANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_vm_state_change(const char * old, const char * new)
+{
+}
+
+static inline void trace_colo_vm_state_change(const char * old, const char * new)
+{
+ if (true) {
+ _nocheck__trace_colo_vm_state_change(old, new);
+ }
+}
+
+#define TRACE_COLO_SEND_MESSAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_send_message(const char * msg)
+{
+}
+
+static inline void trace_colo_send_message(const char * msg)
+{
+ if (true) {
+ _nocheck__trace_colo_send_message(msg);
+ }
+}
+
+#define TRACE_COLO_RECEIVE_MESSAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_receive_message(const char * msg)
+{
+}
+
+static inline void trace_colo_receive_message(const char * msg)
+{
+ if (true) {
+ _nocheck__trace_colo_receive_message(msg);
+ }
+}
+
+#define TRACE_COLO_FAILOVER_SET_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_failover_set_state(const char * new_state)
+{
+}
+
+static inline void trace_colo_failover_set_state(const char * new_state)
+{
+ if (true) {
+ _nocheck__trace_colo_failover_set_state(new_state);
+ }
+}
+
+#define TRACE_SEND_BITMAP_HEADER_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_send_bitmap_header_enter(void)
+{
+}
+
+static inline void trace_send_bitmap_header_enter(void)
+{
+ if (true) {
+ _nocheck__trace_send_bitmap_header_enter();
+ }
+}
+
+#define TRACE_SEND_BITMAP_BITS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_send_bitmap_bits(uint32_t flags, uint64_t start_sector, uint32_t nr_sectors, uint64_t data_size)
+{
+}
+
+static inline void trace_send_bitmap_bits(uint32_t flags, uint64_t start_sector, uint32_t nr_sectors, uint64_t data_size)
+{
+ if (true) {
+ _nocheck__trace_send_bitmap_bits(flags, start_sector, nr_sectors, data_size);
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_SAVE_ITERATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_save_iterate(int in_postcopy)
+{
+}
+
+static inline void trace_dirty_bitmap_save_iterate(int in_postcopy)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_save_iterate(in_postcopy);
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_SAVE_COMPLETE_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_save_complete_enter(void)
+{
+}
+
+static inline void trace_dirty_bitmap_save_complete_enter(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_save_complete_enter();
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_SAVE_COMPLETE_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_save_complete_finish(void)
+{
+}
+
+static inline void trace_dirty_bitmap_save_complete_finish(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_save_complete_finish();
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_SAVE_PENDING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_save_pending(uint64_t pending, uint64_t max_size)
+{
+}
+
+static inline void trace_dirty_bitmap_save_pending(uint64_t pending, uint64_t max_size)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_save_pending(pending, max_size);
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_complete(void)
+{
+}
+
+static inline void trace_dirty_bitmap_load_complete(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_complete();
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_BITS_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_bits_enter(uint64_t first_sector, uint32_t nr_sectors)
+{
+}
+
+static inline void trace_dirty_bitmap_load_bits_enter(uint64_t first_sector, uint32_t nr_sectors)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_bits_enter(first_sector, nr_sectors);
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_BITS_ZEROES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_bits_zeroes(void)
+{
+}
+
+static inline void trace_dirty_bitmap_load_bits_zeroes(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_bits_zeroes();
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_HEADER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_header(uint32_t flags)
+{
+}
+
+static inline void trace_dirty_bitmap_load_header(uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_header(flags);
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_enter(void)
+{
+}
+
+static inline void trace_dirty_bitmap_load_enter(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_enter();
+ }
+}
+
+#define TRACE_DIRTY_BITMAP_LOAD_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dirty_bitmap_load_success(void)
+{
+}
+
+static inline void trace_dirty_bitmap_load_success(void)
+{
+ if (true) {
+ _nocheck__trace_dirty_bitmap_load_success();
+ }
+}
+#endif /* TRACE_MIGRATION_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/module_block.h b/qemu2-auto-generated/module_block.h
new file mode 100644
index 0000000000..2d0f97ad50
--- /dev/null
+++ b/qemu2-auto-generated/module_block.h
@@ -0,0 +1,21 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+/*
+ * QEMU Block Module Infrastructure
+ *
+ * Authors:
+ * Marc Mari <markmb@redhat.com>
+ */
+
+#ifndef QEMU_MODULE_BLOCK_H
+#define QEMU_MODULE_BLOCK_H
+
+#include "qemu-common.h"
+
+static const struct {
+ const char *format_name;
+ const char *protocol_name;
+ const char *library_name;
+} block_driver_modules[] = {
+};
+
+#endif
diff --git a/qemu2-auto-generated/nbd/trace.c b/qemu2-auto-generated/nbd/trace.c
new file mode 100644
index 0000000000..3ff471d745
--- /dev/null
+++ b/qemu2-auto-generated/nbd/trace.c
@@ -0,0 +1,608 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_NBD_SEND_OPTION_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_OPTION_REPLY_DSTATE;
+uint16_t _TRACE_NBD_REPLY_ERR_UNSUP_DSTATE;
+uint16_t _TRACE_NBD_OPT_GO_START_DSTATE;
+uint16_t _TRACE_NBD_OPT_GO_SUCCESS_DSTATE;
+uint16_t _TRACE_NBD_OPT_GO_INFO_UNKNOWN_DSTATE;
+uint16_t _TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_DSTATE;
+uint16_t _TRACE_NBD_OPT_META_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_OPT_META_REPLY_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_DSTATE;
+uint16_t _TRACE_NBD_INIT_SET_SOCKET_DSTATE;
+uint16_t _TRACE_NBD_INIT_SET_BLOCK_SIZE_DSTATE;
+uint16_t _TRACE_NBD_INIT_SET_SIZE_DSTATE;
+uint16_t _TRACE_NBD_INIT_TRAILING_BYTES_DSTATE;
+uint16_t _TRACE_NBD_INIT_SET_READONLY_DSTATE;
+uint16_t _TRACE_NBD_INIT_FINISH_DSTATE;
+uint16_t _TRACE_NBD_CLIENT_LOOP_DSTATE;
+uint16_t _TRACE_NBD_CLIENT_LOOP_RET_DSTATE;
+uint16_t _TRACE_NBD_CLIENT_CLEAR_QUEUE_DSTATE;
+uint16_t _TRACE_NBD_CLIENT_CLEAR_SOCKET_DSTATE;
+uint16_t _TRACE_NBD_SEND_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_SIMPLE_REPLY_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_DSTATE;
+uint16_t _TRACE_NBD_UNKNOWN_ERROR_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_LEN_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_ERR_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_LIST_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_SEND_INFO_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_META_CONTEXT_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_BEGIN_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_OLD_STYLE_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_DSTATE;
+uint16_t _TRACE_NBD_NEGOTIATE_SUCCESS_DSTATE;
+uint16_t _TRACE_NBD_RECEIVE_REQUEST_DSTATE;
+uint16_t _TRACE_NBD_BLK_AIO_ATTACHED_DSTATE;
+uint16_t _TRACE_NBD_BLK_AIO_DETACH_DSTATE;
+uint16_t _TRACE_NBD_CO_SEND_SIMPLE_REPLY_DSTATE;
+uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_DONE_DSTATE;
+uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_READ_DSTATE;
+uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_DSTATE;
+uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_ERROR_DSTATE;
+uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_DSTATE;
+uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_DSTATE;
+uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_DSTATE;
+uint16_t _TRACE_NBD_TRIP_DSTATE;
+TraceEvent _TRACE_NBD_SEND_OPTION_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_send_option_request",
+ .sstate = TRACE_NBD_SEND_OPTION_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_SEND_OPTION_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_OPTION_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_option_reply",
+ .sstate = TRACE_NBD_RECEIVE_OPTION_REPLY_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_OPTION_REPLY_DSTATE
+};
+TraceEvent _TRACE_NBD_REPLY_ERR_UNSUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_reply_err_unsup",
+ .sstate = TRACE_NBD_REPLY_ERR_UNSUP_ENABLED,
+ .dstate = &_TRACE_NBD_REPLY_ERR_UNSUP_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_GO_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_go_start",
+ .sstate = TRACE_NBD_OPT_GO_START_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_GO_START_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_GO_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_go_success",
+ .sstate = TRACE_NBD_OPT_GO_SUCCESS_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_GO_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_GO_INFO_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_go_info_unknown",
+ .sstate = TRACE_NBD_OPT_GO_INFO_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_GO_INFO_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_go_info_block_size",
+ .sstate = TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_query_exports_start",
+ .sstate = TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_query_exports_success",
+ .sstate = TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_starttls_new_client",
+ .sstate = TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_starttls_tls_handshake",
+ .sstate = TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_META_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_meta_request",
+ .sstate = TRACE_NBD_OPT_META_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_META_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_OPT_META_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_opt_meta_reply",
+ .sstate = TRACE_NBD_OPT_META_REPLY_ENABLED,
+ .dstate = &_TRACE_NBD_OPT_META_REPLY_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_negotiate",
+ .sstate = TRACE_NBD_RECEIVE_NEGOTIATE_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_NEGOTIATE_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_negotiate_magic",
+ .sstate = TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_negotiate_server_flags",
+ .sstate = TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_negotiate_default_name",
+ .sstate = TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_negotiate_size_flags",
+ .sstate = TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_SET_SOCKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_set_socket",
+ .sstate = TRACE_NBD_INIT_SET_SOCKET_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_SET_SOCKET_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_SET_BLOCK_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_set_block_size",
+ .sstate = TRACE_NBD_INIT_SET_BLOCK_SIZE_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_SET_BLOCK_SIZE_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_SET_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_set_size",
+ .sstate = TRACE_NBD_INIT_SET_SIZE_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_SET_SIZE_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_TRAILING_BYTES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_trailing_bytes",
+ .sstate = TRACE_NBD_INIT_TRAILING_BYTES_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_TRAILING_BYTES_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_SET_READONLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_set_readonly",
+ .sstate = TRACE_NBD_INIT_SET_READONLY_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_SET_READONLY_DSTATE
+};
+TraceEvent _TRACE_NBD_INIT_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_init_finish",
+ .sstate = TRACE_NBD_INIT_FINISH_ENABLED,
+ .dstate = &_TRACE_NBD_INIT_FINISH_DSTATE
+};
+TraceEvent _TRACE_NBD_CLIENT_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_client_loop",
+ .sstate = TRACE_NBD_CLIENT_LOOP_ENABLED,
+ .dstate = &_TRACE_NBD_CLIENT_LOOP_DSTATE
+};
+TraceEvent _TRACE_NBD_CLIENT_LOOP_RET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_client_loop_ret",
+ .sstate = TRACE_NBD_CLIENT_LOOP_RET_ENABLED,
+ .dstate = &_TRACE_NBD_CLIENT_LOOP_RET_DSTATE
+};
+TraceEvent _TRACE_NBD_CLIENT_CLEAR_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_client_clear_queue",
+ .sstate = TRACE_NBD_CLIENT_CLEAR_QUEUE_ENABLED,
+ .dstate = &_TRACE_NBD_CLIENT_CLEAR_QUEUE_DSTATE
+};
+TraceEvent _TRACE_NBD_CLIENT_CLEAR_SOCKET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_client_clear_socket",
+ .sstate = TRACE_NBD_CLIENT_CLEAR_SOCKET_ENABLED,
+ .dstate = &_TRACE_NBD_CLIENT_CLEAR_SOCKET_DSTATE
+};
+TraceEvent _TRACE_NBD_SEND_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_send_request",
+ .sstate = TRACE_NBD_SEND_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_SEND_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_SIMPLE_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_simple_reply",
+ .sstate = TRACE_NBD_RECEIVE_SIMPLE_REPLY_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_SIMPLE_REPLY_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_structured_reply_chunk",
+ .sstate = TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_DSTATE
+};
+TraceEvent _TRACE_NBD_UNKNOWN_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_unknown_error",
+ .sstate = TRACE_NBD_UNKNOWN_ERROR_ENABLED,
+ .dstate = &_TRACE_NBD_UNKNOWN_ERROR_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_LEN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_send_rep_len",
+ .sstate = TRACE_NBD_NEGOTIATE_SEND_REP_LEN_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_SEND_REP_LEN_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_ERR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_send_rep_err",
+ .sstate = TRACE_NBD_NEGOTIATE_SEND_REP_ERR_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_SEND_REP_ERR_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_send_rep_list",
+ .sstate = TRACE_NBD_NEGOTIATE_SEND_REP_LIST_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_SEND_REP_LIST_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_export_name",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_export_name_request",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_SEND_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_send_info",
+ .sstate = TRACE_NBD_NEGOTIATE_SEND_INFO_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_SEND_INFO_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_info_requests",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_info_request",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_info_block_size",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_starttls",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_handle_starttls_handshake",
+ .sstate = TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_META_CONTEXT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_meta_context",
+ .sstate = TRACE_NBD_NEGOTIATE_META_CONTEXT_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_META_CONTEXT_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_meta_query_skip",
+ .sstate = TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_meta_query_parse",
+ .sstate = TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_meta_query_reply",
+ .sstate = TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_options_flags",
+ .sstate = TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_options_check_magic",
+ .sstate = TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_options_check_option",
+ .sstate = TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_BEGIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_begin",
+ .sstate = TRACE_NBD_NEGOTIATE_BEGIN_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_BEGIN_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_OLD_STYLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_old_style",
+ .sstate = TRACE_NBD_NEGOTIATE_OLD_STYLE_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_OLD_STYLE_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_new_style_size_flags",
+ .sstate = TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_DSTATE
+};
+TraceEvent _TRACE_NBD_NEGOTIATE_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_negotiate_success",
+ .sstate = TRACE_NBD_NEGOTIATE_SUCCESS_ENABLED,
+ .dstate = &_TRACE_NBD_NEGOTIATE_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_NBD_RECEIVE_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_receive_request",
+ .sstate = TRACE_NBD_RECEIVE_REQUEST_ENABLED,
+ .dstate = &_TRACE_NBD_RECEIVE_REQUEST_DSTATE
+};
+TraceEvent _TRACE_NBD_BLK_AIO_ATTACHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_blk_aio_attached",
+ .sstate = TRACE_NBD_BLK_AIO_ATTACHED_ENABLED,
+ .dstate = &_TRACE_NBD_BLK_AIO_ATTACHED_DSTATE
+};
+TraceEvent _TRACE_NBD_BLK_AIO_DETACH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_blk_aio_detach",
+ .sstate = TRACE_NBD_BLK_AIO_DETACH_ENABLED,
+ .dstate = &_TRACE_NBD_BLK_AIO_DETACH_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_SEND_SIMPLE_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_send_simple_reply",
+ .sstate = TRACE_NBD_CO_SEND_SIMPLE_REPLY_ENABLED,
+ .dstate = &_TRACE_NBD_CO_SEND_SIMPLE_REPLY_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_send_structured_done",
+ .sstate = TRACE_NBD_CO_SEND_STRUCTURED_DONE_ENABLED,
+ .dstate = &_TRACE_NBD_CO_SEND_STRUCTURED_DONE_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_send_structured_read",
+ .sstate = TRACE_NBD_CO_SEND_STRUCTURED_READ_ENABLED,
+ .dstate = &_TRACE_NBD_CO_SEND_STRUCTURED_READ_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_send_structured_read_hole",
+ .sstate = TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_ENABLED,
+ .dstate = &_TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_send_structured_error",
+ .sstate = TRACE_NBD_CO_SEND_STRUCTURED_ERROR_ENABLED,
+ .dstate = &_TRACE_NBD_CO_SEND_STRUCTURED_ERROR_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_receive_request_decode_type",
+ .sstate = TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_ENABLED,
+ .dstate = &_TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_receive_request_payload_received",
+ .sstate = TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_ENABLED,
+ .dstate = &_TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_DSTATE
+};
+TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_co_receive_request_cmd_write",
+ .sstate = TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_ENABLED,
+ .dstate = &_TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_DSTATE
+};
+TraceEvent _TRACE_NBD_TRIP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "nbd_trip",
+ .sstate = TRACE_NBD_TRIP_ENABLED,
+ .dstate = &_TRACE_NBD_TRIP_DSTATE
+};
+TraceEvent *nbd_trace_events[] = {
+ &_TRACE_NBD_SEND_OPTION_REQUEST_EVENT,
+ &_TRACE_NBD_RECEIVE_OPTION_REPLY_EVENT,
+ &_TRACE_NBD_REPLY_ERR_UNSUP_EVENT,
+ &_TRACE_NBD_OPT_GO_START_EVENT,
+ &_TRACE_NBD_OPT_GO_SUCCESS_EVENT,
+ &_TRACE_NBD_OPT_GO_INFO_UNKNOWN_EVENT,
+ &_TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_EVENT,
+ &_TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_EVENT,
+ &_TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_EVENT,
+ &_TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_EVENT,
+ &_TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_EVENT,
+ &_TRACE_NBD_OPT_META_REQUEST_EVENT,
+ &_TRACE_NBD_OPT_META_REPLY_EVENT,
+ &_TRACE_NBD_RECEIVE_NEGOTIATE_EVENT,
+ &_TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_EVENT,
+ &_TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_EVENT,
+ &_TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_EVENT,
+ &_TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_EVENT,
+ &_TRACE_NBD_INIT_SET_SOCKET_EVENT,
+ &_TRACE_NBD_INIT_SET_BLOCK_SIZE_EVENT,
+ &_TRACE_NBD_INIT_SET_SIZE_EVENT,
+ &_TRACE_NBD_INIT_TRAILING_BYTES_EVENT,
+ &_TRACE_NBD_INIT_SET_READONLY_EVENT,
+ &_TRACE_NBD_INIT_FINISH_EVENT,
+ &_TRACE_NBD_CLIENT_LOOP_EVENT,
+ &_TRACE_NBD_CLIENT_LOOP_RET_EVENT,
+ &_TRACE_NBD_CLIENT_CLEAR_QUEUE_EVENT,
+ &_TRACE_NBD_CLIENT_CLEAR_SOCKET_EVENT,
+ &_TRACE_NBD_SEND_REQUEST_EVENT,
+ &_TRACE_NBD_RECEIVE_SIMPLE_REPLY_EVENT,
+ &_TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_EVENT,
+ &_TRACE_NBD_UNKNOWN_ERROR_EVENT,
+ &_TRACE_NBD_NEGOTIATE_SEND_REP_LEN_EVENT,
+ &_TRACE_NBD_NEGOTIATE_SEND_REP_ERR_EVENT,
+ &_TRACE_NBD_NEGOTIATE_SEND_REP_LIST_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_EVENT,
+ &_TRACE_NBD_NEGOTIATE_SEND_INFO_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_EVENT,
+ &_TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_EVENT,
+ &_TRACE_NBD_NEGOTIATE_META_CONTEXT_EVENT,
+ &_TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_EVENT,
+ &_TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_EVENT,
+ &_TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_EVENT,
+ &_TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_EVENT,
+ &_TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_EVENT,
+ &_TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_EVENT,
+ &_TRACE_NBD_NEGOTIATE_BEGIN_EVENT,
+ &_TRACE_NBD_NEGOTIATE_OLD_STYLE_EVENT,
+ &_TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_EVENT,
+ &_TRACE_NBD_NEGOTIATE_SUCCESS_EVENT,
+ &_TRACE_NBD_RECEIVE_REQUEST_EVENT,
+ &_TRACE_NBD_BLK_AIO_ATTACHED_EVENT,
+ &_TRACE_NBD_BLK_AIO_DETACH_EVENT,
+ &_TRACE_NBD_CO_SEND_SIMPLE_REPLY_EVENT,
+ &_TRACE_NBD_CO_SEND_STRUCTURED_DONE_EVENT,
+ &_TRACE_NBD_CO_SEND_STRUCTURED_READ_EVENT,
+ &_TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_EVENT,
+ &_TRACE_NBD_CO_SEND_STRUCTURED_ERROR_EVENT,
+ &_TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_EVENT,
+ &_TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_EVENT,
+ &_TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_EVENT,
+ &_TRACE_NBD_TRIP_EVENT,
+ NULL,
+};
+
+static void trace_nbd_register_events(void)
+{
+ trace_event_register_group(nbd_trace_events);
+}
+trace_init(trace_nbd_register_events)
diff --git a/qemu2-auto-generated/nbd/trace.h b/qemu2-auto-generated/nbd/trace.h
new file mode 100644
index 0000000000..4e8500fe0d
--- /dev/null
+++ b/qemu2-auto-generated/nbd/trace.h
@@ -0,0 +1,1131 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_NBD_GENERATED_TRACERS_H
+#define TRACE_NBD_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_NBD_SEND_OPTION_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_OPTION_REPLY_EVENT;
+extern TraceEvent _TRACE_NBD_REPLY_ERR_UNSUP_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_GO_START_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_GO_SUCCESS_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_GO_INFO_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_META_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_OPT_META_REPLY_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_SET_SOCKET_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_SET_BLOCK_SIZE_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_SET_SIZE_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_TRAILING_BYTES_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_SET_READONLY_EVENT;
+extern TraceEvent _TRACE_NBD_INIT_FINISH_EVENT;
+extern TraceEvent _TRACE_NBD_CLIENT_LOOP_EVENT;
+extern TraceEvent _TRACE_NBD_CLIENT_LOOP_RET_EVENT;
+extern TraceEvent _TRACE_NBD_CLIENT_CLEAR_QUEUE_EVENT;
+extern TraceEvent _TRACE_NBD_CLIENT_CLEAR_SOCKET_EVENT;
+extern TraceEvent _TRACE_NBD_SEND_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_SIMPLE_REPLY_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_EVENT;
+extern TraceEvent _TRACE_NBD_UNKNOWN_ERROR_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_LEN_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_ERR_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_SEND_REP_LIST_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_SEND_INFO_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_META_CONTEXT_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_BEGIN_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_OLD_STYLE_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_EVENT;
+extern TraceEvent _TRACE_NBD_NEGOTIATE_SUCCESS_EVENT;
+extern TraceEvent _TRACE_NBD_RECEIVE_REQUEST_EVENT;
+extern TraceEvent _TRACE_NBD_BLK_AIO_ATTACHED_EVENT;
+extern TraceEvent _TRACE_NBD_BLK_AIO_DETACH_EVENT;
+extern TraceEvent _TRACE_NBD_CO_SEND_SIMPLE_REPLY_EVENT;
+extern TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_DONE_EVENT;
+extern TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_READ_EVENT;
+extern TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_EVENT;
+extern TraceEvent _TRACE_NBD_CO_SEND_STRUCTURED_ERROR_EVENT;
+extern TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_EVENT;
+extern TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_EVENT;
+extern TraceEvent _TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_EVENT;
+extern TraceEvent _TRACE_NBD_TRIP_EVENT;
+extern uint16_t _TRACE_NBD_SEND_OPTION_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_OPTION_REPLY_DSTATE;
+extern uint16_t _TRACE_NBD_REPLY_ERR_UNSUP_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_GO_START_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_GO_SUCCESS_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_GO_INFO_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_META_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_OPT_META_REPLY_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_SET_SOCKET_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_SET_BLOCK_SIZE_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_SET_SIZE_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_TRAILING_BYTES_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_SET_READONLY_DSTATE;
+extern uint16_t _TRACE_NBD_INIT_FINISH_DSTATE;
+extern uint16_t _TRACE_NBD_CLIENT_LOOP_DSTATE;
+extern uint16_t _TRACE_NBD_CLIENT_LOOP_RET_DSTATE;
+extern uint16_t _TRACE_NBD_CLIENT_CLEAR_QUEUE_DSTATE;
+extern uint16_t _TRACE_NBD_CLIENT_CLEAR_SOCKET_DSTATE;
+extern uint16_t _TRACE_NBD_SEND_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_SIMPLE_REPLY_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_DSTATE;
+extern uint16_t _TRACE_NBD_UNKNOWN_ERROR_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_LEN_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_ERR_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_SEND_REP_LIST_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_SEND_INFO_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_META_CONTEXT_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_BEGIN_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_OLD_STYLE_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_DSTATE;
+extern uint16_t _TRACE_NBD_NEGOTIATE_SUCCESS_DSTATE;
+extern uint16_t _TRACE_NBD_RECEIVE_REQUEST_DSTATE;
+extern uint16_t _TRACE_NBD_BLK_AIO_ATTACHED_DSTATE;
+extern uint16_t _TRACE_NBD_BLK_AIO_DETACH_DSTATE;
+extern uint16_t _TRACE_NBD_CO_SEND_SIMPLE_REPLY_DSTATE;
+extern uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_DONE_DSTATE;
+extern uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_READ_DSTATE;
+extern uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_DSTATE;
+extern uint16_t _TRACE_NBD_CO_SEND_STRUCTURED_ERROR_DSTATE;
+extern uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_DSTATE;
+extern uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_DSTATE;
+extern uint16_t _TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_DSTATE;
+extern uint16_t _TRACE_NBD_TRIP_DSTATE;
+#define TRACE_NBD_SEND_OPTION_REQUEST_ENABLED 1
+#define TRACE_NBD_RECEIVE_OPTION_REPLY_ENABLED 1
+#define TRACE_NBD_REPLY_ERR_UNSUP_ENABLED 1
+#define TRACE_NBD_OPT_GO_START_ENABLED 1
+#define TRACE_NBD_OPT_GO_SUCCESS_ENABLED 1
+#define TRACE_NBD_OPT_GO_INFO_UNKNOWN_ENABLED 1
+#define TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_ENABLED 1
+#define TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_ENABLED 1
+#define TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_ENABLED 1
+#define TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_ENABLED 1
+#define TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_ENABLED 1
+#define TRACE_NBD_OPT_META_REQUEST_ENABLED 1
+#define TRACE_NBD_OPT_META_REPLY_ENABLED 1
+#define TRACE_NBD_RECEIVE_NEGOTIATE_ENABLED 1
+#define TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_ENABLED 1
+#define TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_ENABLED 1
+#define TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_ENABLED 1
+#define TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_ENABLED 1
+#define TRACE_NBD_INIT_SET_SOCKET_ENABLED 1
+#define TRACE_NBD_INIT_SET_BLOCK_SIZE_ENABLED 1
+#define TRACE_NBD_INIT_SET_SIZE_ENABLED 1
+#define TRACE_NBD_INIT_TRAILING_BYTES_ENABLED 1
+#define TRACE_NBD_INIT_SET_READONLY_ENABLED 1
+#define TRACE_NBD_INIT_FINISH_ENABLED 1
+#define TRACE_NBD_CLIENT_LOOP_ENABLED 1
+#define TRACE_NBD_CLIENT_LOOP_RET_ENABLED 1
+#define TRACE_NBD_CLIENT_CLEAR_QUEUE_ENABLED 1
+#define TRACE_NBD_CLIENT_CLEAR_SOCKET_ENABLED 1
+#define TRACE_NBD_SEND_REQUEST_ENABLED 1
+#define TRACE_NBD_RECEIVE_SIMPLE_REPLY_ENABLED 1
+#define TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_ENABLED 1
+#define TRACE_NBD_UNKNOWN_ERROR_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_SEND_REP_LEN_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_SEND_REP_ERR_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_SEND_REP_LIST_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_SEND_INFO_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_META_CONTEXT_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_BEGIN_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_OLD_STYLE_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_ENABLED 1
+#define TRACE_NBD_NEGOTIATE_SUCCESS_ENABLED 1
+#define TRACE_NBD_RECEIVE_REQUEST_ENABLED 1
+#define TRACE_NBD_BLK_AIO_ATTACHED_ENABLED 1
+#define TRACE_NBD_BLK_AIO_DETACH_ENABLED 1
+#define TRACE_NBD_CO_SEND_SIMPLE_REPLY_ENABLED 1
+#define TRACE_NBD_CO_SEND_STRUCTURED_DONE_ENABLED 1
+#define TRACE_NBD_CO_SEND_STRUCTURED_READ_ENABLED 1
+#define TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_ENABLED 1
+#define TRACE_NBD_CO_SEND_STRUCTURED_ERROR_ENABLED 1
+#define TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_ENABLED 1
+#define TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_ENABLED 1
+#define TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_ENABLED 1
+#define TRACE_NBD_TRIP_ENABLED 1
+
+#define TRACE_NBD_SEND_OPTION_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_send_option_request(uint32_t opt, const char * name, uint32_t len)
+{
+}
+
+static inline void trace_nbd_send_option_request(uint32_t opt, const char * name, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_nbd_send_option_request(opt, name, len);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_OPTION_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_option_reply(uint32_t option, const char * optname, uint32_t type, const char * typename, uint32_t length)
+{
+}
+
+static inline void trace_nbd_receive_option_reply(uint32_t option, const char * optname, uint32_t type, const char * typename, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_option_reply(option, optname, type, typename, length);
+ }
+}
+
+#define TRACE_NBD_REPLY_ERR_UNSUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_reply_err_unsup(uint32_t option, const char * name)
+{
+}
+
+static inline void trace_nbd_reply_err_unsup(uint32_t option, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_reply_err_unsup(option, name);
+ }
+}
+
+#define TRACE_NBD_OPT_GO_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_go_start(const char * name)
+{
+}
+
+static inline void trace_nbd_opt_go_start(const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_go_start(name);
+ }
+}
+
+#define TRACE_NBD_OPT_GO_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_go_success(void)
+{
+}
+
+static inline void trace_nbd_opt_go_success(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_go_success();
+ }
+}
+
+#define TRACE_NBD_OPT_GO_INFO_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_go_info_unknown(int info, const char * name)
+{
+}
+
+static inline void trace_nbd_opt_go_info_unknown(int info, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_go_info_unknown(info, name);
+ }
+}
+
+#define TRACE_NBD_OPT_GO_INFO_BLOCK_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_go_info_block_size(uint32_t minimum, uint32_t preferred, uint32_t maximum)
+{
+}
+
+static inline void trace_nbd_opt_go_info_block_size(uint32_t minimum, uint32_t preferred, uint32_t maximum)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_go_info_block_size(minimum, preferred, maximum);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_QUERY_EXPORTS_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_query_exports_start(const char * wantname)
+{
+}
+
+static inline void trace_nbd_receive_query_exports_start(const char * wantname)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_query_exports_start(wantname);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_QUERY_EXPORTS_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_query_exports_success(const char * wantname)
+{
+}
+
+static inline void trace_nbd_receive_query_exports_success(const char * wantname)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_query_exports_success(wantname);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_STARTTLS_NEW_CLIENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_starttls_new_client(void)
+{
+}
+
+static inline void trace_nbd_receive_starttls_new_client(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_starttls_new_client();
+ }
+}
+
+#define TRACE_NBD_RECEIVE_STARTTLS_TLS_HANDSHAKE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_starttls_tls_handshake(void)
+{
+}
+
+static inline void trace_nbd_receive_starttls_tls_handshake(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_starttls_tls_handshake();
+ }
+}
+
+#define TRACE_NBD_OPT_META_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_meta_request(const char * context, const char * export)
+{
+}
+
+static inline void trace_nbd_opt_meta_request(const char * context, const char * export)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_meta_request(context, export);
+ }
+}
+
+#define TRACE_NBD_OPT_META_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_opt_meta_reply(const char * context, uint32_t id)
+{
+}
+
+static inline void trace_nbd_opt_meta_reply(const char * context, uint32_t id)
+{
+ if (true) {
+ _nocheck__trace_nbd_opt_meta_reply(context, id);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_NEGOTIATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_negotiate(void * tlscreds, const char * hostname)
+{
+}
+
+static inline void trace_nbd_receive_negotiate(void * tlscreds, const char * hostname)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_negotiate(tlscreds, hostname);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_NEGOTIATE_MAGIC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_negotiate_magic(uint64_t magic)
+{
+}
+
+static inline void trace_nbd_receive_negotiate_magic(uint64_t magic)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_negotiate_magic(magic);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_NEGOTIATE_SERVER_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_negotiate_server_flags(uint32_t globalflags)
+{
+}
+
+static inline void trace_nbd_receive_negotiate_server_flags(uint32_t globalflags)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_negotiate_server_flags(globalflags);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_NEGOTIATE_DEFAULT_NAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_negotiate_default_name(void)
+{
+}
+
+static inline void trace_nbd_receive_negotiate_default_name(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_negotiate_default_name();
+ }
+}
+
+#define TRACE_NBD_RECEIVE_NEGOTIATE_SIZE_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_negotiate_size_flags(uint64_t size, uint16_t flags)
+{
+}
+
+static inline void trace_nbd_receive_negotiate_size_flags(uint64_t size, uint16_t flags)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_negotiate_size_flags(size, flags);
+ }
+}
+
+#define TRACE_NBD_INIT_SET_SOCKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_set_socket(void)
+{
+}
+
+static inline void trace_nbd_init_set_socket(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_set_socket();
+ }
+}
+
+#define TRACE_NBD_INIT_SET_BLOCK_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_set_block_size(unsigned long block_size)
+{
+}
+
+static inline void trace_nbd_init_set_block_size(unsigned long block_size)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_set_block_size(block_size);
+ }
+}
+
+#define TRACE_NBD_INIT_SET_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_set_size(unsigned long sectors)
+{
+}
+
+static inline void trace_nbd_init_set_size(unsigned long sectors)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_set_size(sectors);
+ }
+}
+
+#define TRACE_NBD_INIT_TRAILING_BYTES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_trailing_bytes(int ignored_bytes)
+{
+}
+
+static inline void trace_nbd_init_trailing_bytes(int ignored_bytes)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_trailing_bytes(ignored_bytes);
+ }
+}
+
+#define TRACE_NBD_INIT_SET_READONLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_set_readonly(void)
+{
+}
+
+static inline void trace_nbd_init_set_readonly(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_set_readonly();
+ }
+}
+
+#define TRACE_NBD_INIT_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_init_finish(void)
+{
+}
+
+static inline void trace_nbd_init_finish(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_init_finish();
+ }
+}
+
+#define TRACE_NBD_CLIENT_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_client_loop(void)
+{
+}
+
+static inline void trace_nbd_client_loop(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_client_loop();
+ }
+}
+
+#define TRACE_NBD_CLIENT_LOOP_RET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_client_loop_ret(int ret, const char * error)
+{
+}
+
+static inline void trace_nbd_client_loop_ret(int ret, const char * error)
+{
+ if (true) {
+ _nocheck__trace_nbd_client_loop_ret(ret, error);
+ }
+}
+
+#define TRACE_NBD_CLIENT_CLEAR_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_client_clear_queue(void)
+{
+}
+
+static inline void trace_nbd_client_clear_queue(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_client_clear_queue();
+ }
+}
+
+#define TRACE_NBD_CLIENT_CLEAR_SOCKET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_client_clear_socket(void)
+{
+}
+
+static inline void trace_nbd_client_clear_socket(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_client_clear_socket();
+ }
+}
+
+#define TRACE_NBD_SEND_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_send_request(uint64_t from, uint32_t len, uint64_t handle, uint16_t flags, uint16_t type, const char * name)
+{
+}
+
+static inline void trace_nbd_send_request(uint64_t from, uint32_t len, uint64_t handle, uint16_t flags, uint16_t type, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_send_request(from, len, handle, flags, type, name);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_SIMPLE_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_simple_reply(int32_t error, const char * errname, uint64_t handle)
+{
+}
+
+static inline void trace_nbd_receive_simple_reply(int32_t error, const char * errname, uint64_t handle)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_simple_reply(error, errname, handle);
+ }
+}
+
+#define TRACE_NBD_RECEIVE_STRUCTURED_REPLY_CHUNK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_structured_reply_chunk(uint16_t flags, uint16_t type, const char * name, uint64_t handle, uint32_t length)
+{
+}
+
+static inline void trace_nbd_receive_structured_reply_chunk(uint16_t flags, uint16_t type, const char * name, uint64_t handle, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_structured_reply_chunk(flags, type, name, handle, length);
+ }
+}
+
+#define TRACE_NBD_UNKNOWN_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_unknown_error(int err)
+{
+}
+
+static inline void trace_nbd_unknown_error(int err)
+{
+ if (true) {
+ _nocheck__trace_nbd_unknown_error(err);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_SEND_REP_LEN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_send_rep_len(uint32_t opt, const char * optname, uint32_t type, const char * typename, uint32_t len)
+{
+}
+
+static inline void trace_nbd_negotiate_send_rep_len(uint32_t opt, const char * optname, uint32_t type, const char * typename, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_send_rep_len(opt, optname, type, typename, len);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_SEND_REP_ERR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_send_rep_err(const char * msg)
+{
+}
+
+static inline void trace_nbd_negotiate_send_rep_err(const char * msg)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_send_rep_err(msg);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_SEND_REP_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_send_rep_list(const char * name, const char * desc)
+{
+}
+
+static inline void trace_nbd_negotiate_send_rep_list(const char * name, const char * desc)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_send_rep_list(name, desc);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_export_name(void)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_export_name(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_export_name();
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_EXPORT_NAME_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_export_name_request(const char * name)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_export_name_request(const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_export_name_request(name);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_SEND_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_send_info(int info, const char * name, uint32_t length)
+{
+}
+
+static inline void trace_nbd_negotiate_send_info(int info, const char * name, uint32_t length)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_send_info(info, name, length);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUESTS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_info_requests(int requests)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_info_requests(int requests)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_info_requests(requests);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_info_request(int request, const char * name)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_info_request(int request, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_info_request(request, name);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_INFO_BLOCK_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_info_block_size(uint32_t minimum, uint32_t preferred, uint32_t maximum)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_info_block_size(uint32_t minimum, uint32_t preferred, uint32_t maximum)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_info_block_size(minimum, preferred, maximum);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_starttls(void)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_starttls(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_starttls();
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_HANDLE_STARTTLS_HANDSHAKE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_handle_starttls_handshake(void)
+{
+}
+
+static inline void trace_nbd_negotiate_handle_starttls_handshake(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_handle_starttls_handshake();
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_META_CONTEXT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_meta_context(const char * optname, const char * export, uint32_t queries)
+{
+}
+
+static inline void trace_nbd_negotiate_meta_context(const char * optname, const char * export, uint32_t queries)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_meta_context(optname, export, queries);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_META_QUERY_SKIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_meta_query_skip(const char * reason)
+{
+}
+
+static inline void trace_nbd_negotiate_meta_query_skip(const char * reason)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_meta_query_skip(reason);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_META_QUERY_PARSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_meta_query_parse(const char * query)
+{
+}
+
+static inline void trace_nbd_negotiate_meta_query_parse(const char * query)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_meta_query_parse(query);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_META_QUERY_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_meta_query_reply(const char * context, uint32_t id)
+{
+}
+
+static inline void trace_nbd_negotiate_meta_query_reply(const char * context, uint32_t id)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_meta_query_reply(context, id);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_OPTIONS_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_options_flags(uint32_t flags)
+{
+}
+
+static inline void trace_nbd_negotiate_options_flags(uint32_t flags)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_options_flags(flags);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_MAGIC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_options_check_magic(uint64_t magic)
+{
+}
+
+static inline void trace_nbd_negotiate_options_check_magic(uint64_t magic)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_options_check_magic(magic);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_OPTIONS_CHECK_OPTION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_options_check_option(uint32_t option, const char * name)
+{
+}
+
+static inline void trace_nbd_negotiate_options_check_option(uint32_t option, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_options_check_option(option, name);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_BEGIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_begin(void)
+{
+}
+
+static inline void trace_nbd_negotiate_begin(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_begin();
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_OLD_STYLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_old_style(uint64_t size, unsigned flags)
+{
+}
+
+static inline void trace_nbd_negotiate_old_style(uint64_t size, unsigned flags)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_old_style(size, flags);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_NEW_STYLE_SIZE_FLAGS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_new_style_size_flags(uint64_t size, unsigned flags)
+{
+}
+
+static inline void trace_nbd_negotiate_new_style_size_flags(uint64_t size, unsigned flags)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_new_style_size_flags(size, flags);
+ }
+}
+
+#define TRACE_NBD_NEGOTIATE_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_negotiate_success(void)
+{
+}
+
+static inline void trace_nbd_negotiate_success(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_negotiate_success();
+ }
+}
+
+#define TRACE_NBD_RECEIVE_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_receive_request(uint32_t magic, uint16_t flags, uint16_t type, uint64_t from, uint32_t len)
+{
+}
+
+static inline void trace_nbd_receive_request(uint32_t magic, uint16_t flags, uint16_t type, uint64_t from, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_nbd_receive_request(magic, flags, type, from, len);
+ }
+}
+
+#define TRACE_NBD_BLK_AIO_ATTACHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_blk_aio_attached(const char * name, void * ctx)
+{
+}
+
+static inline void trace_nbd_blk_aio_attached(const char * name, void * ctx)
+{
+ if (true) {
+ _nocheck__trace_nbd_blk_aio_attached(name, ctx);
+ }
+}
+
+#define TRACE_NBD_BLK_AIO_DETACH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_blk_aio_detach(const char * name, void * ctx)
+{
+}
+
+static inline void trace_nbd_blk_aio_detach(const char * name, void * ctx)
+{
+ if (true) {
+ _nocheck__trace_nbd_blk_aio_detach(name, ctx);
+ }
+}
+
+#define TRACE_NBD_CO_SEND_SIMPLE_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_send_simple_reply(uint64_t handle, uint32_t error, const char * errname, int len)
+{
+}
+
+static inline void trace_nbd_co_send_simple_reply(uint64_t handle, uint32_t error, const char * errname, int len)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_send_simple_reply(handle, error, errname, len);
+ }
+}
+
+#define TRACE_NBD_CO_SEND_STRUCTURED_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_send_structured_done(uint64_t handle)
+{
+}
+
+static inline void trace_nbd_co_send_structured_done(uint64_t handle)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_send_structured_done(handle);
+ }
+}
+
+#define TRACE_NBD_CO_SEND_STRUCTURED_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_send_structured_read(uint64_t handle, uint64_t offset, void * data, size_t size)
+{
+}
+
+static inline void trace_nbd_co_send_structured_read(uint64_t handle, uint64_t offset, void * data, size_t size)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_send_structured_read(handle, offset, data, size);
+ }
+}
+
+#define TRACE_NBD_CO_SEND_STRUCTURED_READ_HOLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_send_structured_read_hole(uint64_t handle, uint64_t offset, size_t size)
+{
+}
+
+static inline void trace_nbd_co_send_structured_read_hole(uint64_t handle, uint64_t offset, size_t size)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_send_structured_read_hole(handle, offset, size);
+ }
+}
+
+#define TRACE_NBD_CO_SEND_STRUCTURED_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_send_structured_error(uint64_t handle, int err, const char * errname, const char * msg)
+{
+}
+
+static inline void trace_nbd_co_send_structured_error(uint64_t handle, int err, const char * errname, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_send_structured_error(handle, err, errname, msg);
+ }
+}
+
+#define TRACE_NBD_CO_RECEIVE_REQUEST_DECODE_TYPE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_receive_request_decode_type(uint64_t handle, uint16_t type, const char * name)
+{
+}
+
+static inline void trace_nbd_co_receive_request_decode_type(uint64_t handle, uint16_t type, const char * name)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_receive_request_decode_type(handle, type, name);
+ }
+}
+
+#define TRACE_NBD_CO_RECEIVE_REQUEST_PAYLOAD_RECEIVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_receive_request_payload_received(uint64_t handle, uint32_t len)
+{
+}
+
+static inline void trace_nbd_co_receive_request_payload_received(uint64_t handle, uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_receive_request_payload_received(handle, len);
+ }
+}
+
+#define TRACE_NBD_CO_RECEIVE_REQUEST_CMD_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_co_receive_request_cmd_write(uint32_t len)
+{
+}
+
+static inline void trace_nbd_co_receive_request_cmd_write(uint32_t len)
+{
+ if (true) {
+ _nocheck__trace_nbd_co_receive_request_cmd_write(len);
+ }
+}
+
+#define TRACE_NBD_TRIP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_nbd_trip(void)
+{
+}
+
+static inline void trace_nbd_trip(void)
+{
+ if (true) {
+ _nocheck__trace_nbd_trip();
+ }
+}
+#endif /* TRACE_NBD_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/net/trace.c b/qemu2-auto-generated/net/trace.c
new file mode 100644
index 0000000000..9f33a60be9
--- /dev/null
+++ b/qemu2-auto-generated/net/trace.c
@@ -0,0 +1,122 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VHOST_USER_EVENT_DSTATE;
+uint16_t _TRACE_COLO_PROXY_MAIN_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_MAIN_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_UDP_MISCOMPARE_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_ICMP_MISCOMPARE_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_IP_INFO_DSTATE;
+uint16_t _TRACE_COLO_OLD_PACKET_CHECK_FOUND_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_MISCOMPARE_DSTATE;
+uint16_t _TRACE_COLO_COMPARE_TCP_INFO_DSTATE;
+uint16_t _TRACE_COLO_FILTER_REWRITER_DEBUG_DSTATE;
+uint16_t _TRACE_COLO_FILTER_REWRITER_PKT_INFO_DSTATE;
+uint16_t _TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_DSTATE;
+TraceEvent _TRACE_VHOST_USER_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vhost_user_event",
+ .sstate = TRACE_VHOST_USER_EVENT_ENABLED,
+ .dstate = &_TRACE_VHOST_USER_EVENT_DSTATE
+};
+TraceEvent _TRACE_COLO_PROXY_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_proxy_main",
+ .sstate = TRACE_COLO_PROXY_MAIN_ENABLED,
+ .dstate = &_TRACE_COLO_PROXY_MAIN_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_MAIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_main",
+ .sstate = TRACE_COLO_COMPARE_MAIN_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_MAIN_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_UDP_MISCOMPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_udp_miscompare",
+ .sstate = TRACE_COLO_COMPARE_UDP_MISCOMPARE_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_UDP_MISCOMPARE_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_ICMP_MISCOMPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_icmp_miscompare",
+ .sstate = TRACE_COLO_COMPARE_ICMP_MISCOMPARE_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_ICMP_MISCOMPARE_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_IP_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_ip_info",
+ .sstate = TRACE_COLO_COMPARE_IP_INFO_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_IP_INFO_DSTATE
+};
+TraceEvent _TRACE_COLO_OLD_PACKET_CHECK_FOUND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_old_packet_check_found",
+ .sstate = TRACE_COLO_OLD_PACKET_CHECK_FOUND_ENABLED,
+ .dstate = &_TRACE_COLO_OLD_PACKET_CHECK_FOUND_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_MISCOMPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_miscompare",
+ .sstate = TRACE_COLO_COMPARE_MISCOMPARE_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_MISCOMPARE_DSTATE
+};
+TraceEvent _TRACE_COLO_COMPARE_TCP_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_compare_tcp_info",
+ .sstate = TRACE_COLO_COMPARE_TCP_INFO_ENABLED,
+ .dstate = &_TRACE_COLO_COMPARE_TCP_INFO_DSTATE
+};
+TraceEvent _TRACE_COLO_FILTER_REWRITER_DEBUG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_filter_rewriter_debug",
+ .sstate = TRACE_COLO_FILTER_REWRITER_DEBUG_ENABLED,
+ .dstate = &_TRACE_COLO_FILTER_REWRITER_DEBUG_DSTATE
+};
+TraceEvent _TRACE_COLO_FILTER_REWRITER_PKT_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_filter_rewriter_pkt_info",
+ .sstate = TRACE_COLO_FILTER_REWRITER_PKT_INFO_ENABLED,
+ .dstate = &_TRACE_COLO_FILTER_REWRITER_PKT_INFO_DSTATE
+};
+TraceEvent _TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "colo_filter_rewriter_conn_offset",
+ .sstate = TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_ENABLED,
+ .dstate = &_TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_DSTATE
+};
+TraceEvent *net_trace_events[] = {
+ &_TRACE_VHOST_USER_EVENT_EVENT,
+ &_TRACE_COLO_PROXY_MAIN_EVENT,
+ &_TRACE_COLO_COMPARE_MAIN_EVENT,
+ &_TRACE_COLO_COMPARE_UDP_MISCOMPARE_EVENT,
+ &_TRACE_COLO_COMPARE_ICMP_MISCOMPARE_EVENT,
+ &_TRACE_COLO_COMPARE_IP_INFO_EVENT,
+ &_TRACE_COLO_OLD_PACKET_CHECK_FOUND_EVENT,
+ &_TRACE_COLO_COMPARE_MISCOMPARE_EVENT,
+ &_TRACE_COLO_COMPARE_TCP_INFO_EVENT,
+ &_TRACE_COLO_FILTER_REWRITER_DEBUG_EVENT,
+ &_TRACE_COLO_FILTER_REWRITER_PKT_INFO_EVENT,
+ &_TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_EVENT,
+ NULL,
+};
+
+static void trace_net_register_events(void)
+{
+ trace_event_register_group(net_trace_events);
+}
+trace_init(trace_net_register_events)
diff --git a/qemu2-auto-generated/net/trace.h b/qemu2-auto-generated/net/trace.h
new file mode 100644
index 0000000000..ab8041c40f
--- /dev/null
+++ b/qemu2-auto-generated/net/trace.h
@@ -0,0 +1,213 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_NET_GENERATED_TRACERS_H
+#define TRACE_NET_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VHOST_USER_EVENT_EVENT;
+extern TraceEvent _TRACE_COLO_PROXY_MAIN_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_MAIN_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_UDP_MISCOMPARE_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_ICMP_MISCOMPARE_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_IP_INFO_EVENT;
+extern TraceEvent _TRACE_COLO_OLD_PACKET_CHECK_FOUND_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_MISCOMPARE_EVENT;
+extern TraceEvent _TRACE_COLO_COMPARE_TCP_INFO_EVENT;
+extern TraceEvent _TRACE_COLO_FILTER_REWRITER_DEBUG_EVENT;
+extern TraceEvent _TRACE_COLO_FILTER_REWRITER_PKT_INFO_EVENT;
+extern TraceEvent _TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_EVENT;
+extern uint16_t _TRACE_VHOST_USER_EVENT_DSTATE;
+extern uint16_t _TRACE_COLO_PROXY_MAIN_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_MAIN_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_UDP_MISCOMPARE_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_ICMP_MISCOMPARE_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_IP_INFO_DSTATE;
+extern uint16_t _TRACE_COLO_OLD_PACKET_CHECK_FOUND_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_MISCOMPARE_DSTATE;
+extern uint16_t _TRACE_COLO_COMPARE_TCP_INFO_DSTATE;
+extern uint16_t _TRACE_COLO_FILTER_REWRITER_DEBUG_DSTATE;
+extern uint16_t _TRACE_COLO_FILTER_REWRITER_PKT_INFO_DSTATE;
+extern uint16_t _TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_DSTATE;
+#define TRACE_VHOST_USER_EVENT_ENABLED 1
+#define TRACE_COLO_PROXY_MAIN_ENABLED 1
+#define TRACE_COLO_COMPARE_MAIN_ENABLED 1
+#define TRACE_COLO_COMPARE_UDP_MISCOMPARE_ENABLED 1
+#define TRACE_COLO_COMPARE_ICMP_MISCOMPARE_ENABLED 1
+#define TRACE_COLO_COMPARE_IP_INFO_ENABLED 1
+#define TRACE_COLO_OLD_PACKET_CHECK_FOUND_ENABLED 1
+#define TRACE_COLO_COMPARE_MISCOMPARE_ENABLED 1
+#define TRACE_COLO_COMPARE_TCP_INFO_ENABLED 1
+#define TRACE_COLO_FILTER_REWRITER_DEBUG_ENABLED 1
+#define TRACE_COLO_FILTER_REWRITER_PKT_INFO_ENABLED 1
+#define TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_ENABLED 1
+
+#define TRACE_VHOST_USER_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vhost_user_event(const char * chr, int event)
+{
+}
+
+static inline void trace_vhost_user_event(const char * chr, int event)
+{
+ if (true) {
+ _nocheck__trace_vhost_user_event(chr, event);
+ }
+}
+
+#define TRACE_COLO_PROXY_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_proxy_main(const char * chr)
+{
+}
+
+static inline void trace_colo_proxy_main(const char * chr)
+{
+ if (true) {
+ _nocheck__trace_colo_proxy_main(chr);
+ }
+}
+
+#define TRACE_COLO_COMPARE_MAIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_main(const char * chr)
+{
+}
+
+static inline void trace_colo_compare_main(const char * chr)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_main(chr);
+ }
+}
+
+#define TRACE_COLO_COMPARE_UDP_MISCOMPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_udp_miscompare(const char * sta, int size)
+{
+}
+
+static inline void trace_colo_compare_udp_miscompare(const char * sta, int size)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_udp_miscompare(sta, size);
+ }
+}
+
+#define TRACE_COLO_COMPARE_ICMP_MISCOMPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_icmp_miscompare(const char * sta, int size)
+{
+}
+
+static inline void trace_colo_compare_icmp_miscompare(const char * sta, int size)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_icmp_miscompare(sta, size);
+ }
+}
+
+#define TRACE_COLO_COMPARE_IP_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_ip_info(int psize, const char * sta, const char * stb, int ssize, const char * stc, const char * std)
+{
+}
+
+static inline void trace_colo_compare_ip_info(int psize, const char * sta, const char * stb, int ssize, const char * stc, const char * std)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_ip_info(psize, sta, stb, ssize, stc, std);
+ }
+}
+
+#define TRACE_COLO_OLD_PACKET_CHECK_FOUND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_old_packet_check_found(int64_t old_time)
+{
+}
+
+static inline void trace_colo_old_packet_check_found(int64_t old_time)
+{
+ if (true) {
+ _nocheck__trace_colo_old_packet_check_found(old_time);
+ }
+}
+
+#define TRACE_COLO_COMPARE_MISCOMPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_miscompare(void)
+{
+}
+
+static inline void trace_colo_compare_miscompare(void)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_miscompare();
+ }
+}
+
+#define TRACE_COLO_COMPARE_TCP_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_compare_tcp_info(const char * pkt, uint32_t seq, uint32_t ack, int hdlen, int pdlen, int offset, int flags)
+{
+}
+
+static inline void trace_colo_compare_tcp_info(const char * pkt, uint32_t seq, uint32_t ack, int hdlen, int pdlen, int offset, int flags)
+{
+ if (true) {
+ _nocheck__trace_colo_compare_tcp_info(pkt, seq, ack, hdlen, pdlen, offset, flags);
+ }
+}
+
+#define TRACE_COLO_FILTER_REWRITER_DEBUG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_filter_rewriter_debug(void)
+{
+}
+
+static inline void trace_colo_filter_rewriter_debug(void)
+{
+ if (true) {
+ _nocheck__trace_colo_filter_rewriter_debug();
+ }
+}
+
+#define TRACE_COLO_FILTER_REWRITER_PKT_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_filter_rewriter_pkt_info(const char * func, const char * src, const char * dst, uint32_t seq, uint32_t ack, uint32_t flag)
+{
+}
+
+static inline void trace_colo_filter_rewriter_pkt_info(const char * func, const char * src, const char * dst, uint32_t seq, uint32_t ack, uint32_t flag)
+{
+ if (true) {
+ _nocheck__trace_colo_filter_rewriter_pkt_info(func, src, dst, seq, ack, flag);
+ }
+}
+
+#define TRACE_COLO_FILTER_REWRITER_CONN_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_colo_filter_rewriter_conn_offset(uint32_t offset)
+{
+}
+
+static inline void trace_colo_filter_rewriter_conn_offset(uint32_t offset)
+{
+ if (true) {
+ _nocheck__trace_colo_filter_rewriter_conn_offset(offset);
+ }
+}
+#endif /* TRACE_NET_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-builtin-types.c b/qemu2-auto-generated/qapi/qapi-builtin-types.c
new file mode 100644
index 0000000000..417ecfe686
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-builtin-types.c
@@ -0,0 +1,226 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/qapi-builtin-types.h"
+#include "qapi/qapi-builtin-visit.h"
+
+void qapi_free_strList(strList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_strList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_numberList(numberList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_numberList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_intList(intList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_intList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int8List(int8List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int8List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int16List(int16List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int16List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int32List(int32List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int32List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int64List(int64List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int64List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint8List(uint8List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint8List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint16List(uint16List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint16List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint32List(uint32List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint32List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint64List(uint64List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint64List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_sizeList(sizeList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_sizeList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_boolList(boolList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_boolList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_anyList(anyList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_anyList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_nullList(nullList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_nullList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QType_lookup = {
+ .array = (const char *const[]) {
+ [QTYPE_NONE] = "none",
+ [QTYPE_QNULL] = "qnull",
+ [QTYPE_QNUM] = "qnum",
+ [QTYPE_QSTRING] = "qstring",
+ [QTYPE_QDICT] = "qdict",
+ [QTYPE_QLIST] = "qlist",
+ [QTYPE_QBOOL] = "qbool",
+ },
+ .size = QTYPE__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_builtin_types_c;
diff --git a/qemu2-auto-generated/qapi/qapi-builtin-types.h b/qemu2-auto-generated/qapi/qapi-builtin-types.h
new file mode 100644
index 0000000000..19fc73e6f8
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-builtin-types.h
@@ -0,0 +1,169 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_BUILTIN_TYPES_H
+#define QAPI_BUILTIN_TYPES_H
+
+#include "qapi/util.h"
+
+typedef struct strList strList;
+
+typedef struct numberList numberList;
+
+typedef struct intList intList;
+
+typedef struct int8List int8List;
+
+typedef struct int16List int16List;
+
+typedef struct int32List int32List;
+
+typedef struct int64List int64List;
+
+typedef struct uint8List uint8List;
+
+typedef struct uint16List uint16List;
+
+typedef struct uint32List uint32List;
+
+typedef struct uint64List uint64List;
+
+typedef struct sizeList sizeList;
+
+typedef struct boolList boolList;
+
+typedef struct anyList anyList;
+
+typedef struct nullList nullList;
+
+typedef enum QType {
+ QTYPE_NONE = 0,
+ QTYPE_QNULL = 1,
+ QTYPE_QNUM = 2,
+ QTYPE_QSTRING = 3,
+ QTYPE_QDICT = 4,
+ QTYPE_QLIST = 5,
+ QTYPE_QBOOL = 6,
+ QTYPE__MAX = 7,
+} QType;
+
+#define QType_str(val) \
+ qapi_enum_lookup(&QType_lookup, (val))
+
+extern const QEnumLookup QType_lookup;
+
+struct strList {
+ strList *next;
+ char *value;
+};
+
+void qapi_free_strList(strList *obj);
+
+struct numberList {
+ numberList *next;
+ double value;
+};
+
+void qapi_free_numberList(numberList *obj);
+
+struct intList {
+ intList *next;
+ int64_t value;
+};
+
+void qapi_free_intList(intList *obj);
+
+struct int8List {
+ int8List *next;
+ int8_t value;
+};
+
+void qapi_free_int8List(int8List *obj);
+
+struct int16List {
+ int16List *next;
+ int16_t value;
+};
+
+void qapi_free_int16List(int16List *obj);
+
+struct int32List {
+ int32List *next;
+ int32_t value;
+};
+
+void qapi_free_int32List(int32List *obj);
+
+struct int64List {
+ int64List *next;
+ int64_t value;
+};
+
+void qapi_free_int64List(int64List *obj);
+
+struct uint8List {
+ uint8List *next;
+ uint8_t value;
+};
+
+void qapi_free_uint8List(uint8List *obj);
+
+struct uint16List {
+ uint16List *next;
+ uint16_t value;
+};
+
+void qapi_free_uint16List(uint16List *obj);
+
+struct uint32List {
+ uint32List *next;
+ uint32_t value;
+};
+
+void qapi_free_uint32List(uint32List *obj);
+
+struct uint64List {
+ uint64List *next;
+ uint64_t value;
+};
+
+void qapi_free_uint64List(uint64List *obj);
+
+struct sizeList {
+ sizeList *next;
+ uint64_t value;
+};
+
+void qapi_free_sizeList(sizeList *obj);
+
+struct boolList {
+ boolList *next;
+ bool value;
+};
+
+void qapi_free_boolList(boolList *obj);
+
+struct anyList {
+ anyList *next;
+ QObject *value;
+};
+
+void qapi_free_anyList(anyList *obj);
+
+struct nullList {
+ nullList *next;
+ QNull *value;
+};
+
+void qapi_free_nullList(nullList *obj);
+
+#endif /* QAPI_BUILTIN_TYPES_H */
diff --git a/qemu2-auto-generated/qapi/qapi-builtin-visit.c b/qemu2-auto-generated/qapi/qapi-builtin-visit.c
new file mode 100644
index 0000000000..0c82c31e14
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-builtin-visit.c
@@ -0,0 +1,490 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qapi-builtin-visit.h"
+
+void visit_type_strList(Visitor *v, const char *name, strList **obj, Error **errp)
+{
+ Error *err = NULL;
+ strList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (strList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_str(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_strList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_numberList(Visitor *v, const char *name, numberList **obj, Error **errp)
+{
+ Error *err = NULL;
+ numberList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (numberList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_number(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_numberList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_intList(Visitor *v, const char *name, intList **obj, Error **errp)
+{
+ Error *err = NULL;
+ intList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (intList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_intList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int8List(Visitor *v, const char *name, int8List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int8List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int8List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int8(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int8List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int16List(Visitor *v, const char *name, int16List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int16List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int16List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int16(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int16List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int32List(Visitor *v, const char *name, int32List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int32List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int32List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int32(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int32List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int64List(Visitor *v, const char *name, int64List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int64List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int64List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int64(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int64List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint8List(Visitor *v, const char *name, uint8List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint8List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint8List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint8(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint8List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint16List(Visitor *v, const char *name, uint16List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint16List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint16List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint16(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint16List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint32List(Visitor *v, const char *name, uint32List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint32List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint32List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint32(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint32List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint64List(Visitor *v, const char *name, uint64List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint64List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint64List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint64(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint64List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_sizeList(Visitor *v, const char *name, sizeList **obj, Error **errp)
+{
+ Error *err = NULL;
+ sizeList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (sizeList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_size(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_sizeList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_boolList(Visitor *v, const char *name, boolList **obj, Error **errp)
+{
+ Error *err = NULL;
+ boolList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (boolList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_bool(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_boolList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_anyList(Visitor *v, const char *name, anyList **obj, Error **errp)
+{
+ Error *err = NULL;
+ anyList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (anyList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_any(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_anyList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_nullList(Visitor *v, const char *name, nullList **obj, Error **errp)
+{
+ Error *err = NULL;
+ nullList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (nullList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_null(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_nullList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QType(Visitor *v, const char *name, QType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QType_lookup, errp);
+ *obj = value;
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_builtin_visit_c;
diff --git a/qemu2-auto-generated/qapi/qapi-builtin-visit.h b/qemu2-auto-generated/qapi/qapi-builtin-visit.h
new file mode 100644
index 0000000000..a40c01dad2
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-builtin-visit.h
@@ -0,0 +1,36 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_BUILTIN_VISIT_H
+#define QAPI_BUILTIN_VISIT_H
+
+#include "qapi/visitor.h"
+#include "qapi/qapi-builtin-types.h"
+
+void visit_type_strList(Visitor *v, const char *name, strList **obj, Error **errp);
+void visit_type_numberList(Visitor *v, const char *name, numberList **obj, Error **errp);
+void visit_type_intList(Visitor *v, const char *name, intList **obj, Error **errp);
+void visit_type_int8List(Visitor *v, const char *name, int8List **obj, Error **errp);
+void visit_type_int16List(Visitor *v, const char *name, int16List **obj, Error **errp);
+void visit_type_int32List(Visitor *v, const char *name, int32List **obj, Error **errp);
+void visit_type_int64List(Visitor *v, const char *name, int64List **obj, Error **errp);
+void visit_type_uint8List(Visitor *v, const char *name, uint8List **obj, Error **errp);
+void visit_type_uint16List(Visitor *v, const char *name, uint16List **obj, Error **errp);
+void visit_type_uint32List(Visitor *v, const char *name, uint32List **obj, Error **errp);
+void visit_type_uint64List(Visitor *v, const char *name, uint64List **obj, Error **errp);
+void visit_type_sizeList(Visitor *v, const char *name, sizeList **obj, Error **errp);
+void visit_type_boolList(Visitor *v, const char *name, boolList **obj, Error **errp);
+void visit_type_anyList(Visitor *v, const char *name, anyList **obj, Error **errp);
+void visit_type_nullList(Visitor *v, const char *name, nullList **obj, Error **errp);
+void visit_type_QType(Visitor *v, const char *name, QType *obj, Error **errp);
+
+#endif /* QAPI_BUILTIN_VISIT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-block-core.c b/qemu2-auto-generated/qapi/qapi-commands-block-core.c
new file mode 100644
index 0000000000..ee3789f374
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-block-core.c
@@ -0,0 +1,1398 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-block-core.h"
+#include "qapi-commands-block-core.h"
+
+
+void qmp_marshal_x_block_latency_histogram_set(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_x_block_latency_histogram_set_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_x_block_latency_histogram_set_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_x_block_latency_histogram_set(arg.device, arg.has_boundaries, arg.boundaries, arg.has_boundaries_read, arg.boundaries_read, arg.has_boundaries_write, arg.boundaries_write, arg.has_boundaries_flush, arg.boundaries_flush, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_x_block_latency_histogram_set_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_BlockInfoList(BlockInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BlockInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_block(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BlockInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_block(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BlockInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_BlockStatsList(BlockStatsList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BlockStatsList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockStatsList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_blockstats(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BlockStatsList *retval;
+ Visitor *v;
+ q_obj_query_blockstats_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_blockstats_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_blockstats(arg.has_query_nodes, arg.query_nodes, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BlockStatsList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_blockstats_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_BlockJobInfoList(BlockJobInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BlockJobInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockJobInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_block_jobs(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BlockJobInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_block_jobs(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BlockJobInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_block_passwd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_passwd_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_passwd_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_passwd(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.password, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_passwd_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_resize(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_resize_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_resize_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_resize(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.size, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_resize_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_snapshot_sync(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevSnapshotSync arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevSnapshotSync_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_snapshot_sync(arg.has_device, arg.device, arg.has_node_name, arg.node_name, arg.snapshot_file, arg.has_snapshot_node_name, arg.snapshot_node_name, arg.has_format, arg.format, arg.has_mode, arg.mode, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevSnapshotSync_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_snapshot(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevSnapshot arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevSnapshot_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_snapshot(arg.node, arg.overlay, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevSnapshot_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_change_backing_file(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_change_backing_file_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_change_backing_file_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_change_backing_file(arg.device, arg.image_node_name, arg.backing_file, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_change_backing_file_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_commit(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_commit_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_commit_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_commit(arg.has_job_id, arg.job_id, arg.device, arg.has_base, arg.base, arg.has_top, arg.top, arg.has_backing_file, arg.backing_file, arg.has_speed, arg.speed, arg.has_filter_node_name, arg.filter_node_name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_commit_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_drive_backup(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ DriveBackup arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_DriveBackup_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_drive_backup(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_DriveBackup_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_backup(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevBackup arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevBackup_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_backup(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevBackup_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_BlockDeviceInfoList(BlockDeviceInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BlockDeviceInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_named_block_nodes(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BlockDeviceInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_named_block_nodes(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BlockDeviceInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_drive_mirror(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ DriveMirror arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_DriveMirror_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_drive_mirror(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_DriveMirror_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_dirty_bitmap_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockDirtyBitmapAdd arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDirtyBitmapAdd_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_dirty_bitmap_add(arg.node, arg.name, arg.has_granularity, arg.granularity, arg.has_persistent, arg.persistent, arg.has_autoload, arg.autoload, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockDirtyBitmapAdd_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_dirty_bitmap_remove(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockDirtyBitmap arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDirtyBitmap_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_dirty_bitmap_remove(arg.node, arg.name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockDirtyBitmap_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_dirty_bitmap_clear(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockDirtyBitmap arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDirtyBitmap_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_dirty_bitmap_clear(arg.node, arg.name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockDirtyBitmap_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_BlockDirtyBitmapSha256(BlockDirtyBitmapSha256 *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BlockDirtyBitmapSha256(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyBitmapSha256(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_x_debug_block_dirty_bitmap_sha256(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BlockDirtyBitmapSha256 *retval;
+ Visitor *v;
+ BlockDirtyBitmap arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDirtyBitmap_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_x_debug_block_dirty_bitmap_sha256(arg.node, arg.name, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BlockDirtyBitmapSha256(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockDirtyBitmap_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_mirror(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_mirror_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_mirror_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_mirror(arg.has_job_id, arg.job_id, arg.device, arg.target, arg.has_replaces, arg.replaces, arg.sync, arg.has_speed, arg.speed, arg.has_granularity, arg.granularity, arg.has_buf_size, arg.buf_size, arg.has_on_source_error, arg.on_source_error, arg.has_on_target_error, arg.on_target_error, arg.has_filter_node_name, arg.filter_node_name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_mirror_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_set_io_throttle(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockIOThrottle arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockIOThrottle_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_set_io_throttle(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockIOThrottle_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_stream(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_stream_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_stream_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_stream(arg.has_job_id, arg.job_id, arg.device, arg.has_base, arg.base, arg.has_base_node, arg.base_node, arg.has_backing_file, arg.backing_file, arg.has_speed, arg.speed, arg.has_on_error, arg.on_error, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_stream_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_set_speed(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_set_speed_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_set_speed_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_set_speed(arg.device, arg.speed, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_set_speed_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_cancel(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_cancel_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_cancel_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_cancel(arg.device, arg.has_force, arg.force, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_cancel_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_pause(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_pause_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_pause_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_pause(arg.device, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_pause_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_resume(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_resume_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_resume_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_resume(arg.device, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_resume_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_complete(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_complete_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_complete_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_complete(arg.device, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_complete_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_dismiss(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_dismiss_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_dismiss_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_dismiss(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_dismiss_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_job_finalize(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_job_finalize_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_job_finalize_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_job_finalize(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_job_finalize_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevOptions arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevOptions_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_add(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevOptions_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_del(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_del_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_del_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_del(arg.node_name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_del_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_x_blockdev_create(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevCreateOptions arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevCreateOptions_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_x_blockdev_create(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevCreateOptions_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_open_tray(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_open_tray_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_open_tray_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_open_tray(arg.has_device, arg.device, arg.has_id, arg.id, arg.has_force, arg.force, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_open_tray_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_close_tray(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_close_tray_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_close_tray_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_close_tray(arg.has_device, arg.device, arg.has_id, arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_close_tray_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_remove_medium(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_remove_medium_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_remove_medium_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_remove_medium(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_remove_medium_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_insert_medium(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_insert_medium_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_insert_medium_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_insert_medium(arg.id, arg.node_name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_insert_medium_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_change_medium(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_blockdev_change_medium_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_change_medium_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_change_medium(arg.has_device, arg.device, arg.has_id, arg.id, arg.filename, arg.has_format, arg.format, arg.has_read_only_mode, arg.read_only_mode, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_change_medium_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_block_set_write_threshold(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_block_set_write_threshold_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_block_set_write_threshold_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_block_set_write_threshold(arg.node_name, arg.write_threshold, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_block_set_write_threshold_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_x_blockdev_change(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_x_blockdev_change_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_x_blockdev_change_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_x_blockdev_change(arg.parent, arg.has_child, arg.child, arg.has_node, arg.node, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_x_blockdev_change_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_x_blockdev_set_iothread(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_x_blockdev_set_iothread_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_x_blockdev_set_iothread_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_x_blockdev_set_iothread(arg.node_name, arg.iothread, arg.has_force, arg.force, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_x_blockdev_set_iothread_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_block_core_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-block-core.h b/qemu2-auto-generated/qapi/qapi-commands-block-core.h
new file mode 100644
index 0000000000..8b32b2f8d4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-block-core.h
@@ -0,0 +1,101 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_BLOCK_CORE_H
+#define QAPI_COMMANDS_BLOCK_CORE_H
+
+#include "qapi-commands-common.h"
+#include "qapi-commands-crypto.h"
+#include "qapi-commands-sockets.h"
+#include "qapi-types-block-core.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_x_block_latency_histogram_set(const char *device, bool has_boundaries, uint64List *boundaries, bool has_boundaries_read, uint64List *boundaries_read, bool has_boundaries_write, uint64List *boundaries_write, bool has_boundaries_flush, uint64List *boundaries_flush, Error **errp);
+void qmp_marshal_x_block_latency_histogram_set(QDict *args, QObject **ret, Error **errp);
+BlockInfoList *qmp_query_block(Error **errp);
+void qmp_marshal_query_block(QDict *args, QObject **ret, Error **errp);
+BlockStatsList *qmp_query_blockstats(bool has_query_nodes, bool query_nodes, Error **errp);
+void qmp_marshal_query_blockstats(QDict *args, QObject **ret, Error **errp);
+BlockJobInfoList *qmp_query_block_jobs(Error **errp);
+void qmp_marshal_query_block_jobs(QDict *args, QObject **ret, Error **errp);
+void qmp_block_passwd(bool has_device, const char *device, bool has_node_name, const char *node_name, const char *password, Error **errp);
+void qmp_marshal_block_passwd(QDict *args, QObject **ret, Error **errp);
+void qmp_block_resize(bool has_device, const char *device, bool has_node_name, const char *node_name, int64_t size, Error **errp);
+void qmp_marshal_block_resize(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_snapshot_sync(bool has_device, const char *device, bool has_node_name, const char *node_name, const char *snapshot_file, bool has_snapshot_node_name, const char *snapshot_node_name, bool has_format, const char *format, bool has_mode, NewImageMode mode, Error **errp);
+void qmp_marshal_blockdev_snapshot_sync(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_snapshot(const char *node, const char *overlay, Error **errp);
+void qmp_marshal_blockdev_snapshot(QDict *args, QObject **ret, Error **errp);
+void qmp_change_backing_file(const char *device, const char *image_node_name, const char *backing_file, Error **errp);
+void qmp_marshal_change_backing_file(QDict *args, QObject **ret, Error **errp);
+void qmp_block_commit(bool has_job_id, const char *job_id, const char *device, bool has_base, const char *base, bool has_top, const char *top, bool has_backing_file, const char *backing_file, bool has_speed, int64_t speed, bool has_filter_node_name, const char *filter_node_name, Error **errp);
+void qmp_marshal_block_commit(QDict *args, QObject **ret, Error **errp);
+void qmp_drive_backup(DriveBackup *arg, Error **errp);
+void qmp_marshal_drive_backup(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_backup(BlockdevBackup *arg, Error **errp);
+void qmp_marshal_blockdev_backup(QDict *args, QObject **ret, Error **errp);
+BlockDeviceInfoList *qmp_query_named_block_nodes(Error **errp);
+void qmp_marshal_query_named_block_nodes(QDict *args, QObject **ret, Error **errp);
+void qmp_drive_mirror(DriveMirror *arg, Error **errp);
+void qmp_marshal_drive_mirror(QDict *args, QObject **ret, Error **errp);
+void qmp_block_dirty_bitmap_add(const char *node, const char *name, bool has_granularity, uint32_t granularity, bool has_persistent, bool persistent, bool has_autoload, bool autoload, Error **errp);
+void qmp_marshal_block_dirty_bitmap_add(QDict *args, QObject **ret, Error **errp);
+void qmp_block_dirty_bitmap_remove(const char *node, const char *name, Error **errp);
+void qmp_marshal_block_dirty_bitmap_remove(QDict *args, QObject **ret, Error **errp);
+void qmp_block_dirty_bitmap_clear(const char *node, const char *name, Error **errp);
+void qmp_marshal_block_dirty_bitmap_clear(QDict *args, QObject **ret, Error **errp);
+BlockDirtyBitmapSha256 *qmp_x_debug_block_dirty_bitmap_sha256(const char *node, const char *name, Error **errp);
+void qmp_marshal_x_debug_block_dirty_bitmap_sha256(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_mirror(bool has_job_id, const char *job_id, const char *device, const char *target, bool has_replaces, const char *replaces, MirrorSyncMode sync, bool has_speed, int64_t speed, bool has_granularity, uint32_t granularity, bool has_buf_size, int64_t buf_size, bool has_on_source_error, BlockdevOnError on_source_error, bool has_on_target_error, BlockdevOnError on_target_error, bool has_filter_node_name, const char *filter_node_name, Error **errp);
+void qmp_marshal_blockdev_mirror(QDict *args, QObject **ret, Error **errp);
+void qmp_block_set_io_throttle(BlockIOThrottle *arg, Error **errp);
+void qmp_marshal_block_set_io_throttle(QDict *args, QObject **ret, Error **errp);
+void qmp_block_stream(bool has_job_id, const char *job_id, const char *device, bool has_base, const char *base, bool has_base_node, const char *base_node, bool has_backing_file, const char *backing_file, bool has_speed, int64_t speed, bool has_on_error, BlockdevOnError on_error, Error **errp);
+void qmp_marshal_block_stream(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_set_speed(const char *device, int64_t speed, Error **errp);
+void qmp_marshal_block_job_set_speed(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_cancel(const char *device, bool has_force, bool force, Error **errp);
+void qmp_marshal_block_job_cancel(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_pause(const char *device, Error **errp);
+void qmp_marshal_block_job_pause(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_resume(const char *device, Error **errp);
+void qmp_marshal_block_job_resume(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_complete(const char *device, Error **errp);
+void qmp_marshal_block_job_complete(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_dismiss(const char *id, Error **errp);
+void qmp_marshal_block_job_dismiss(QDict *args, QObject **ret, Error **errp);
+void qmp_block_job_finalize(const char *id, Error **errp);
+void qmp_marshal_block_job_finalize(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_add(BlockdevOptions *arg, Error **errp);
+void qmp_marshal_blockdev_add(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_del(const char *node_name, Error **errp);
+void qmp_marshal_blockdev_del(QDict *args, QObject **ret, Error **errp);
+void qmp_x_blockdev_create(BlockdevCreateOptions *arg, Error **errp);
+void qmp_marshal_x_blockdev_create(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_open_tray(bool has_device, const char *device, bool has_id, const char *id, bool has_force, bool force, Error **errp);
+void qmp_marshal_blockdev_open_tray(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_close_tray(bool has_device, const char *device, bool has_id, const char *id, Error **errp);
+void qmp_marshal_blockdev_close_tray(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_remove_medium(const char *id, Error **errp);
+void qmp_marshal_blockdev_remove_medium(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_insert_medium(const char *id, const char *node_name, Error **errp);
+void qmp_marshal_blockdev_insert_medium(QDict *args, QObject **ret, Error **errp);
+void qmp_blockdev_change_medium(bool has_device, const char *device, bool has_id, const char *id, const char *filename, bool has_format, const char *format, bool has_read_only_mode, BlockdevChangeReadOnlyMode read_only_mode, Error **errp);
+void qmp_marshal_blockdev_change_medium(QDict *args, QObject **ret, Error **errp);
+void qmp_block_set_write_threshold(const char *node_name, uint64_t write_threshold, Error **errp);
+void qmp_marshal_block_set_write_threshold(QDict *args, QObject **ret, Error **errp);
+void qmp_x_blockdev_change(const char *parent, bool has_child, const char *child, bool has_node, const char *node, Error **errp);
+void qmp_marshal_x_blockdev_change(QDict *args, QObject **ret, Error **errp);
+void qmp_x_blockdev_set_iothread(const char *node_name, StrOrNull *iothread, bool has_force, bool force, Error **errp);
+void qmp_marshal_x_blockdev_set_iothread(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_BLOCK_CORE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-block.c b/qemu2-auto-generated/qapi/qapi-commands-block.c
new file mode 100644
index 0000000000..d63c210c93
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-block.c
@@ -0,0 +1,276 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-block.h"
+#include "qapi-commands-block.h"
+
+
+void qmp_marshal_blockdev_snapshot_internal_sync(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ BlockdevSnapshotInternal arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevSnapshotInternal_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_blockdev_snapshot_internal_sync(arg.device, arg.name, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_BlockdevSnapshotInternal_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_SnapshotInfo(SnapshotInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_SnapshotInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_SnapshotInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_blockdev_snapshot_delete_internal_sync(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ SnapshotInfo *retval;
+ Visitor *v;
+ q_obj_blockdev_snapshot_delete_internal_sync_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_blockdev_snapshot_delete_internal_sync_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_blockdev_snapshot_delete_internal_sync(arg.device, arg.has_id, arg.id, arg.has_name, arg.name, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_SnapshotInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_blockdev_snapshot_delete_internal_sync_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_eject(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_eject_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_eject_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_eject(arg.has_device, arg.device, arg.has_id, arg.id, arg.has_force, arg.force, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_eject_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_nbd_server_start(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_nbd_server_start_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_nbd_server_start_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_nbd_server_start(arg.addr, arg.has_tls_creds, arg.tls_creds, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_nbd_server_start_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_nbd_server_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_nbd_server_add_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_nbd_server_add_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_nbd_server_add(arg.device, arg.has_name, arg.name, arg.has_writable, arg.writable, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_nbd_server_add_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_nbd_server_remove(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_nbd_server_remove_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_nbd_server_remove_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_nbd_server_remove(arg.name, arg.has_mode, arg.mode, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_nbd_server_remove_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_nbd_server_stop(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_nbd_server_stop(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_block_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-block.h b/qemu2-auto-generated/qapi/qapi-commands-block.h
new file mode 100644
index 0000000000..13d906ec17
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-block.h
@@ -0,0 +1,35 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_BLOCK_H
+#define QAPI_COMMANDS_BLOCK_H
+
+#include "qapi-commands-block-core.h"
+#include "qapi-types-block.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_blockdev_snapshot_internal_sync(const char *device, const char *name, Error **errp);
+void qmp_marshal_blockdev_snapshot_internal_sync(QDict *args, QObject **ret, Error **errp);
+SnapshotInfo *qmp_blockdev_snapshot_delete_internal_sync(const char *device, bool has_id, const char *id, bool has_name, const char *name, Error **errp);
+void qmp_marshal_blockdev_snapshot_delete_internal_sync(QDict *args, QObject **ret, Error **errp);
+void qmp_eject(bool has_device, const char *device, bool has_id, const char *id, bool has_force, bool force, Error **errp);
+void qmp_marshal_eject(QDict *args, QObject **ret, Error **errp);
+void qmp_nbd_server_start(SocketAddressLegacy *addr, bool has_tls_creds, const char *tls_creds, Error **errp);
+void qmp_marshal_nbd_server_start(QDict *args, QObject **ret, Error **errp);
+void qmp_nbd_server_add(const char *device, bool has_name, const char *name, bool has_writable, bool writable, Error **errp);
+void qmp_marshal_nbd_server_add(QDict *args, QObject **ret, Error **errp);
+void qmp_nbd_server_remove(const char *name, bool has_mode, NbdServerRemoveMode mode, Error **errp);
+void qmp_marshal_nbd_server_remove(QDict *args, QObject **ret, Error **errp);
+void qmp_nbd_server_stop(Error **errp);
+void qmp_marshal_nbd_server_stop(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_BLOCK_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-char.c b/qemu2-auto-generated/qapi/qapi-commands-char.c
new file mode 100644
index 0000000000..9fee6c6090
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-char.c
@@ -0,0 +1,386 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-char.h"
+#include "qapi-commands-char.h"
+
+
+static void qmp_marshal_output_ChardevInfoList(ChardevInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ChardevInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_chardev(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ChardevInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_chardev(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ChardevInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_ChardevBackendInfoList(ChardevBackendInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ChardevBackendInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevBackendInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_chardev_backends(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ChardevBackendInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_chardev_backends(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ChardevBackendInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_ringbuf_write(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_ringbuf_write_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_ringbuf_write_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_ringbuf_write(arg.device, arg.data, arg.has_format, arg.format, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_ringbuf_write_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_str(char *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_str(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_str(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_ringbuf_read(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ char *retval;
+ Visitor *v;
+ q_obj_ringbuf_read_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_ringbuf_read_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_ringbuf_read(arg.device, arg.size, arg.has_format, arg.format, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_str(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_ringbuf_read_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_ChardevReturn(ChardevReturn *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ChardevReturn(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevReturn(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_chardev_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ChardevReturn *retval;
+ Visitor *v;
+ q_obj_chardev_add_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_chardev_add_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_chardev_add(arg.id, arg.backend, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ChardevReturn(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_chardev_add_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_chardev_change(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ChardevReturn *retval;
+ Visitor *v;
+ q_obj_chardev_change_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_chardev_change_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_chardev_change(arg.id, arg.backend, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ChardevReturn(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_chardev_change_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_chardev_remove(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_chardev_remove_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_chardev_remove_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_chardev_remove(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_chardev_remove_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_chardev_send_break(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_chardev_send_break_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_chardev_send_break_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_chardev_send_break(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_chardev_send_break_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_char_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-char.h b/qemu2-auto-generated/qapi/qapi-commands-char.h
new file mode 100644
index 0000000000..20e7e9fdb2
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-char.h
@@ -0,0 +1,37 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_CHAR_H
+#define QAPI_COMMANDS_CHAR_H
+
+#include "qapi-commands-sockets.h"
+#include "qapi-types-char.h"
+#include "qapi/qmp/dispatch.h"
+
+ChardevInfoList *qmp_query_chardev(Error **errp);
+void qmp_marshal_query_chardev(QDict *args, QObject **ret, Error **errp);
+ChardevBackendInfoList *qmp_query_chardev_backends(Error **errp);
+void qmp_marshal_query_chardev_backends(QDict *args, QObject **ret, Error **errp);
+void qmp_ringbuf_write(const char *device, const char *data, bool has_format, DataFormat format, Error **errp);
+void qmp_marshal_ringbuf_write(QDict *args, QObject **ret, Error **errp);
+char *qmp_ringbuf_read(const char *device, int64_t size, bool has_format, DataFormat format, Error **errp);
+void qmp_marshal_ringbuf_read(QDict *args, QObject **ret, Error **errp);
+ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, Error **errp);
+void qmp_marshal_chardev_add(QDict *args, QObject **ret, Error **errp);
+ChardevReturn *qmp_chardev_change(const char *id, ChardevBackend *backend, Error **errp);
+void qmp_marshal_chardev_change(QDict *args, QObject **ret, Error **errp);
+void qmp_chardev_remove(const char *id, Error **errp);
+void qmp_marshal_chardev_remove(QDict *args, QObject **ret, Error **errp);
+void qmp_chardev_send_break(const char *id, Error **errp);
+void qmp_marshal_chardev_send_break(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_CHAR_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-common.c b/qemu2-auto-generated/qapi/qapi-commands-common.c
new file mode 100644
index 0000000000..7b3a6dc8a6
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-common.c
@@ -0,0 +1,26 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-common.h"
+#include "qapi-commands-common.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_common_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-common.h b/qemu2-auto-generated/qapi/qapi-commands-common.h
new file mode 100644
index 0000000000..a3f84e16c1
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-common.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_COMMON_H
+#define QAPI_COMMANDS_COMMON_H
+
+#include "qapi-types-common.h"
+#include "qapi/qmp/dispatch.h"
+
+
+#endif /* QAPI_COMMANDS_COMMON_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-crypto.c b/qemu2-auto-generated/qapi/qapi-commands-crypto.c
new file mode 100644
index 0000000000..dba3d899b5
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-crypto.c
@@ -0,0 +1,26 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-crypto.h"
+#include "qapi-commands-crypto.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_crypto_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-crypto.h b/qemu2-auto-generated/qapi/qapi-commands-crypto.h
new file mode 100644
index 0000000000..717c714c49
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-crypto.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_CRYPTO_H
+#define QAPI_COMMANDS_CRYPTO_H
+
+#include "qapi-types-crypto.h"
+#include "qapi/qmp/dispatch.h"
+
+
+#endif /* QAPI_COMMANDS_CRYPTO_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-introspect.c b/qemu2-auto-generated/qapi/qapi-commands-introspect.c
new file mode 100644
index 0000000000..3b53002f8f
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-introspect.c
@@ -0,0 +1,26 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-introspect.h"
+#include "qapi-commands-introspect.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_introspect_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-introspect.h b/qemu2-auto-generated/qapi/qapi-commands-introspect.h
new file mode 100644
index 0000000000..1d266e0f05
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-introspect.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_INTROSPECT_H
+#define QAPI_COMMANDS_INTROSPECT_H
+
+#include "qapi-types-introspect.h"
+#include "qapi/qmp/dispatch.h"
+
+
+#endif /* QAPI_COMMANDS_INTROSPECT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-migration.c b/qemu2-auto-generated/qapi/qapi-commands-migration.c
new file mode 100644
index 0000000000..daba668216
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-migration.c
@@ -0,0 +1,808 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-migration.h"
+#include "qapi-commands-migration.h"
+
+
+static void qmp_marshal_output_MigrationInfo(MigrationInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MigrationInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_migrate(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MigrationInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_migrate(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MigrationInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_migrate_set_capabilities(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_set_capabilities_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_set_capabilities_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_set_capabilities(arg.capabilities, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_set_capabilities_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_MigrationCapabilityStatusList(MigrationCapabilityStatusList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MigrationCapabilityStatusList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationCapabilityStatusList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_migrate_capabilities(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MigrationCapabilityStatusList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_migrate_capabilities(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MigrationCapabilityStatusList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_migrate_set_parameters(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ MigrateSetParameters arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_MigrateSetParameters_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_set_parameters(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_MigrateSetParameters_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_MigrationParameters(MigrationParameters *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MigrationParameters(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationParameters(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_migrate_parameters(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MigrationParameters *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_migrate_parameters(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MigrationParameters(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_client_migrate_info(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_client_migrate_info_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_client_migrate_info_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_client_migrate_info(arg.protocol, arg.hostname, arg.has_port, arg.port, arg.has_tls_port, arg.tls_port, arg.has_cert_subject, arg.cert_subject, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_client_migrate_info_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_migrate_start_postcopy(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_migrate_start_postcopy(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_x_colo_lost_heartbeat(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_x_colo_lost_heartbeat(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_migrate_cancel(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_migrate_cancel(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_migrate_continue(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_continue_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_continue_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_continue(arg.state, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_continue_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_migrate_set_downtime(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_set_downtime_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_set_downtime_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_set_downtime(arg.value, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_set_downtime_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_migrate_set_speed(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_set_speed_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_set_speed_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_set_speed(arg.value, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_set_speed_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_migrate_set_cache_size(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_set_cache_size_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_set_cache_size_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_set_cache_size(arg.value, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_set_cache_size_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_int(int64_t ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_int(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_int(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_migrate_cache_size(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ int64_t retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_migrate_cache_size(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_int(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_migrate(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate(arg.uri, arg.has_blk, arg.blk, arg.has_inc, arg.inc, arg.has_detach, arg.detach, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_migrate_incoming(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_migrate_incoming_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_migrate_incoming_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_migrate_incoming(arg.uri, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_migrate_incoming_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_xen_save_devices_state(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_xen_save_devices_state_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_xen_save_devices_state_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_xen_save_devices_state(arg.filename, arg.has_live, arg.live, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_xen_save_devices_state_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_xen_set_replication(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_xen_set_replication_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_xen_set_replication_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_xen_set_replication(arg.enable, arg.primary, arg.has_failover, arg.failover, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_xen_set_replication_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_ReplicationStatus(ReplicationStatus *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ReplicationStatus(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ReplicationStatus(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_xen_replication_status(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ReplicationStatus *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_xen_replication_status(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ReplicationStatus(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_xen_colo_do_checkpoint(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_xen_colo_do_checkpoint(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_migration_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-migration.h b/qemu2-auto-generated/qapi/qapi-commands-migration.h
new file mode 100644
index 0000000000..f441bcde46
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-migration.h
@@ -0,0 +1,61 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_MIGRATION_H
+#define QAPI_COMMANDS_MIGRATION_H
+
+#include "qapi-commands-common.h"
+#include "qapi-types-migration.h"
+#include "qapi/qmp/dispatch.h"
+
+MigrationInfo *qmp_query_migrate(Error **errp);
+void qmp_marshal_query_migrate(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *capabilities, Error **errp);
+void qmp_marshal_migrate_set_capabilities(QDict *args, QObject **ret, Error **errp);
+MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error **errp);
+void qmp_marshal_query_migrate_capabilities(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_set_parameters(MigrateSetParameters *arg, Error **errp);
+void qmp_marshal_migrate_set_parameters(QDict *args, QObject **ret, Error **errp);
+MigrationParameters *qmp_query_migrate_parameters(Error **errp);
+void qmp_marshal_query_migrate_parameters(QDict *args, QObject **ret, Error **errp);
+void qmp_client_migrate_info(const char *protocol, const char *hostname, bool has_port, int64_t port, bool has_tls_port, int64_t tls_port, bool has_cert_subject, const char *cert_subject, Error **errp);
+void qmp_marshal_client_migrate_info(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_start_postcopy(Error **errp);
+void qmp_marshal_migrate_start_postcopy(QDict *args, QObject **ret, Error **errp);
+void qmp_x_colo_lost_heartbeat(Error **errp);
+void qmp_marshal_x_colo_lost_heartbeat(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_cancel(Error **errp);
+void qmp_marshal_migrate_cancel(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_continue(MigrationStatus state, Error **errp);
+void qmp_marshal_migrate_continue(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_set_downtime(double value, Error **errp);
+void qmp_marshal_migrate_set_downtime(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_set_speed(int64_t value, Error **errp);
+void qmp_marshal_migrate_set_speed(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_set_cache_size(int64_t value, Error **errp);
+void qmp_marshal_migrate_set_cache_size(QDict *args, QObject **ret, Error **errp);
+int64_t qmp_query_migrate_cache_size(Error **errp);
+void qmp_marshal_query_migrate_cache_size(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate(const char *uri, bool has_blk, bool blk, bool has_inc, bool inc, bool has_detach, bool detach, Error **errp);
+void qmp_marshal_migrate(QDict *args, QObject **ret, Error **errp);
+void qmp_migrate_incoming(const char *uri, Error **errp);
+void qmp_marshal_migrate_incoming(QDict *args, QObject **ret, Error **errp);
+void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live, Error **errp);
+void qmp_marshal_xen_save_devices_state(QDict *args, QObject **ret, Error **errp);
+void qmp_xen_set_replication(bool enable, bool primary, bool has_failover, bool failover, Error **errp);
+void qmp_marshal_xen_set_replication(QDict *args, QObject **ret, Error **errp);
+ReplicationStatus *qmp_query_xen_replication_status(Error **errp);
+void qmp_marshal_query_xen_replication_status(QDict *args, QObject **ret, Error **errp);
+void qmp_xen_colo_do_checkpoint(Error **errp);
+void qmp_marshal_xen_colo_do_checkpoint(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_MIGRATION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-misc.c b/qemu2-auto-generated/qapi/qapi-commands-misc.c
new file mode 100644
index 0000000000..151322c5f9
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-misc.c
@@ -0,0 +1,3051 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-misc.h"
+#include "qapi-commands-misc.h"
+
+
+void qmp_marshal_qmp_capabilities(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_qmp_capabilities_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qmp_capabilities_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_qmp_capabilities(arg.has_enable, arg.enable, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qmp_capabilities_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_VersionInfo(VersionInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_VersionInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_VersionInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_version(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ VersionInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_version(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_VersionInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CommandInfoList(CommandInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CommandInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_commands(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CommandInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_commands(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CommandInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_add_client(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_add_client_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_add_client_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_add_client(arg.protocol, arg.fdname, arg.has_skipauth, arg.skipauth, arg.has_tls, arg.tls, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_add_client_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_NameInfo(NameInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_NameInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_NameInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_name(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ NameInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_name(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_NameInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_KvmInfo(KvmInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_KvmInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_KvmInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_kvm(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ KvmInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_kvm(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_KvmInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_UuidInfo(UuidInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_UuidInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_UuidInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_uuid(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ UuidInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_uuid(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_UuidInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_EventInfoList(EventInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_EventInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_EventInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_events(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ EventInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_events(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_EventInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CpuInfoList(CpuInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpus(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_cpus(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CpuInfoFastList(CpuInfoFastList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuInfoFastList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoFastList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpus_fast(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuInfoFastList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_cpus_fast(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuInfoFastList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_IOThreadInfoList(IOThreadInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_IOThreadInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_IOThreadInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_iothreads(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ IOThreadInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_iothreads(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_IOThreadInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_BalloonInfo(BalloonInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_BalloonInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_BalloonInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_balloon(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ BalloonInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_balloon(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_BalloonInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_PciInfoList(PciInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_PciInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_pci(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ PciInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_pci(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_PciInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_quit(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_quit(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_stop(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_stop(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_system_reset(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_system_reset(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_system_powerdown(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_system_powerdown(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_cpu_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_cpu_add_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_cpu_add_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_cpu_add(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_cpu_add_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_memsave(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_memsave_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_memsave_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_memsave(arg.val, arg.size, arg.filename, arg.has_cpu_index, arg.cpu_index, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_memsave_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_pmemsave(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_pmemsave_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_pmemsave_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_pmemsave(arg.val, arg.size, arg.filename, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_pmemsave_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_cont(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_cont(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_system_wakeup(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_system_wakeup(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_inject_nmi(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_inject_nmi(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_balloon(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_balloon_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_balloon_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_balloon(arg.value, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_balloon_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_str(char *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_str(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_str(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_human_monitor_command(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ char *retval;
+ Visitor *v;
+ q_obj_human_monitor_command_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_human_monitor_command_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_human_monitor_command(arg.command_line, arg.has_cpu_index, arg.cpu_index, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_str(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_human_monitor_command_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_ObjectPropertyInfoList(ObjectPropertyInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ObjectPropertyInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectPropertyInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_qom_list(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ObjectPropertyInfoList *retval;
+ Visitor *v;
+ q_obj_qom_list_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qom_list_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_qom_list(arg.path, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ObjectPropertyInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qom_list_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_any(QObject *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_any(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_any(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_qom_get(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ QObject *retval;
+ Visitor *v;
+ q_obj_qom_get_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qom_get_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_qom_get(arg.path, arg.property, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_any(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qom_get_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_qom_set(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_qom_set_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qom_set_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_qom_set(arg.path, arg.property, arg.value, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qom_set_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_change(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_change_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_change_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_change(arg.device, arg.target, arg.has_arg, arg.arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_change_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_ObjectTypeInfoList(ObjectTypeInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ObjectTypeInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectTypeInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_qom_list_types(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ObjectTypeInfoList *retval;
+ Visitor *v;
+ q_obj_qom_list_types_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qom_list_types_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_qom_list_types(arg.has_implements, arg.implements, arg.has_abstract, arg.abstract, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ObjectTypeInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qom_list_types_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_device_list_properties(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ObjectPropertyInfoList *retval;
+ Visitor *v;
+ q_obj_device_list_properties_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_device_list_properties_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_device_list_properties(arg.q_typename, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ObjectPropertyInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_device_list_properties_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_qom_list_properties(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ObjectPropertyInfoList *retval;
+ Visitor *v;
+ q_obj_qom_list_properties_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_qom_list_properties_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_qom_list_properties(arg.q_typename, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ObjectPropertyInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_qom_list_properties_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_xen_set_global_dirty_log(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_xen_set_global_dirty_log_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_xen_set_global_dirty_log_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_xen_set_global_dirty_log(arg.enable, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_xen_set_global_dirty_log_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_device_del(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_device_del_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_device_del_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_device_del(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_device_del_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_dump_guest_memory(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_dump_guest_memory_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_dump_guest_memory_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_dump_guest_memory(arg.paging, arg.protocol, arg.has_detach, arg.detach, arg.has_begin, arg.begin, arg.has_length, arg.length, arg.has_format, arg.format, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_dump_guest_memory_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_DumpQueryResult(DumpQueryResult *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_DumpQueryResult(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_DumpQueryResult(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_dump(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ DumpQueryResult *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_dump(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_DumpQueryResult(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_DumpGuestMemoryCapability(DumpGuestMemoryCapability *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_DumpGuestMemoryCapability(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_DumpGuestMemoryCapability(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_dump_guest_memory_capability(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ DumpGuestMemoryCapability *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_dump_guest_memory_capability(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_DumpGuestMemoryCapability(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_dump_skeys(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_dump_skeys_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_dump_skeys_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_dump_skeys(arg.filename, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_dump_skeys_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_object_add(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_object_add_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_object_add_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_object_add(arg.qom_type, arg.id, arg.has_props, arg.props, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_object_add_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_object_del(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_object_del_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_object_del_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_object_del(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_object_del_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_getfd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_getfd_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_getfd_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_getfd(arg.fdname, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_getfd_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_closefd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_closefd_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_closefd_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_closefd(arg.fdname, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_closefd_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_MachineInfoList(MachineInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MachineInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MachineInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_machines(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MachineInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_machines(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MachineInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_MemoryInfo(MemoryInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MemoryInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemoryInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_memory_size_summary(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MemoryInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_memory_size_summary(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MemoryInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CpuDefinitionInfoList(CpuDefinitionInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuDefinitionInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuDefinitionInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpu_definitions(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuDefinitionInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_cpu_definitions(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuDefinitionInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CpuModelExpansionInfo(CpuModelExpansionInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuModelExpansionInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelExpansionInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpu_model_expansion(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuModelExpansionInfo *retval;
+ Visitor *v;
+ q_obj_query_cpu_model_expansion_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_cpu_model_expansion_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_cpu_model_expansion(arg.type, arg.model, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuModelExpansionInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_cpu_model_expansion_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_CpuModelCompareInfo(CpuModelCompareInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuModelCompareInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelCompareInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpu_model_comparison(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuModelCompareInfo *retval;
+ Visitor *v;
+ q_obj_query_cpu_model_comparison_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_cpu_model_comparison_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_cpu_model_comparison(arg.modela, arg.modelb, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuModelCompareInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_cpu_model_comparison_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_CpuModelBaselineInfo(CpuModelBaselineInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CpuModelBaselineInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelBaselineInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_cpu_model_baseline(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CpuModelBaselineInfo *retval;
+ Visitor *v;
+ q_obj_query_cpu_model_baseline_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_cpu_model_baseline_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_cpu_model_baseline(arg.modela, arg.modelb, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CpuModelBaselineInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_cpu_model_baseline_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_AddfdInfo(AddfdInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_AddfdInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_AddfdInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_add_fd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ AddfdInfo *retval;
+ Visitor *v;
+ q_obj_add_fd_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_add_fd_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_add_fd(arg.has_fdset_id, arg.fdset_id, arg.has_opaque, arg.opaque, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_AddfdInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_add_fd_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_remove_fd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_remove_fd_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_remove_fd_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_remove_fd(arg.fdset_id, arg.has_fd, arg.fd, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_remove_fd_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_FdsetInfoList(FdsetInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_FdsetInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_FdsetInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_fdsets(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ FdsetInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_fdsets(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_FdsetInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_TargetInfo(TargetInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_TargetInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_TargetInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_target(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ TargetInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_target(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_TargetInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_CommandLineOptionInfoList(CommandLineOptionInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_CommandLineOptionInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandLineOptionInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_command_line_options(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ CommandLineOptionInfoList *retval;
+ Visitor *v;
+ q_obj_query_command_line_options_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_command_line_options_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_command_line_options(arg.has_option, arg.option, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_CommandLineOptionInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_command_line_options_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_MemdevList(MemdevList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MemdevList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemdevList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_memdev(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MemdevList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_memdev(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MemdevList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_MemoryDeviceInfoList(MemoryDeviceInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MemoryDeviceInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemoryDeviceInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_memory_devices(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MemoryDeviceInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_memory_devices(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MemoryDeviceInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_ACPIOSTInfoList(ACPIOSTInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_ACPIOSTInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_ACPIOSTInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_acpi_ospm_status(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ ACPIOSTInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_acpi_ospm_status(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_ACPIOSTInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_rtc_reset_reinjection(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_rtc_reset_reinjection(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_xen_load_devices_state(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_xen_load_devices_state_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_xen_load_devices_state_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_xen_load_devices_state(arg.filename, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_xen_load_devices_state_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_GICCapabilityList(GICCapabilityList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_GICCapabilityList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_GICCapabilityList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_gic_capabilities(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ GICCapabilityList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_gic_capabilities(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_GICCapabilityList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_HotpluggableCPUList(HotpluggableCPUList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_HotpluggableCPUList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_HotpluggableCPUList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_hotpluggable_cpus(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ HotpluggableCPUList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_hotpluggable_cpus(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_HotpluggableCPUList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_GuidInfo(GuidInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_GuidInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_GuidInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_vm_generation_id(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ GuidInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_vm_generation_id(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_GuidInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_SevInfo(SevInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_SevInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_sev(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ SevInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_sev(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_SevInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_SevLaunchMeasureInfo(SevLaunchMeasureInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_SevLaunchMeasureInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevLaunchMeasureInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_sev_launch_measure(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ SevLaunchMeasureInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_sev_launch_measure(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_SevLaunchMeasureInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_SevCapability(SevCapability *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_SevCapability(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevCapability(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_sev_capabilities(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ SevCapability *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_sev_capabilities(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_SevCapability(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_x_oob_test(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_x_oob_test_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_x_oob_test_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_x_oob_test(arg.lock, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_x_oob_test_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_misc_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-misc.h b/qemu2-auto-generated/qapi/qapi-commands-misc.h
new file mode 100644
index 0000000000..67e6979631
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-misc.h
@@ -0,0 +1,150 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_MISC_H
+#define QAPI_COMMANDS_MISC_H
+
+#include "qapi-types-misc.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_qmp_capabilities(bool has_enable, QMPCapabilityList *enable, Error **errp);
+void qmp_marshal_qmp_capabilities(QDict *args, QObject **ret, Error **errp);
+VersionInfo *qmp_query_version(Error **errp);
+void qmp_marshal_query_version(QDict *args, QObject **ret, Error **errp);
+CommandInfoList *qmp_query_commands(Error **errp);
+void qmp_marshal_query_commands(QDict *args, QObject **ret, Error **errp);
+void qmp_add_client(const char *protocol, const char *fdname, bool has_skipauth, bool skipauth, bool has_tls, bool tls, Error **errp);
+void qmp_marshal_add_client(QDict *args, QObject **ret, Error **errp);
+NameInfo *qmp_query_name(Error **errp);
+void qmp_marshal_query_name(QDict *args, QObject **ret, Error **errp);
+KvmInfo *qmp_query_kvm(Error **errp);
+void qmp_marshal_query_kvm(QDict *args, QObject **ret, Error **errp);
+UuidInfo *qmp_query_uuid(Error **errp);
+void qmp_marshal_query_uuid(QDict *args, QObject **ret, Error **errp);
+EventInfoList *qmp_query_events(Error **errp);
+void qmp_marshal_query_events(QDict *args, QObject **ret, Error **errp);
+CpuInfoList *qmp_query_cpus(Error **errp);
+void qmp_marshal_query_cpus(QDict *args, QObject **ret, Error **errp);
+CpuInfoFastList *qmp_query_cpus_fast(Error **errp);
+void qmp_marshal_query_cpus_fast(QDict *args, QObject **ret, Error **errp);
+IOThreadInfoList *qmp_query_iothreads(Error **errp);
+void qmp_marshal_query_iothreads(QDict *args, QObject **ret, Error **errp);
+BalloonInfo *qmp_query_balloon(Error **errp);
+void qmp_marshal_query_balloon(QDict *args, QObject **ret, Error **errp);
+PciInfoList *qmp_query_pci(Error **errp);
+void qmp_marshal_query_pci(QDict *args, QObject **ret, Error **errp);
+void qmp_quit(Error **errp);
+void qmp_marshal_quit(QDict *args, QObject **ret, Error **errp);
+void qmp_stop(Error **errp);
+void qmp_marshal_stop(QDict *args, QObject **ret, Error **errp);
+void qmp_system_reset(Error **errp);
+void qmp_marshal_system_reset(QDict *args, QObject **ret, Error **errp);
+void qmp_system_powerdown(Error **errp);
+void qmp_marshal_system_powerdown(QDict *args, QObject **ret, Error **errp);
+void qmp_cpu_add(int64_t id, Error **errp);
+void qmp_marshal_cpu_add(QDict *args, QObject **ret, Error **errp);
+void qmp_memsave(int64_t val, int64_t size, const char *filename, bool has_cpu_index, int64_t cpu_index, Error **errp);
+void qmp_marshal_memsave(QDict *args, QObject **ret, Error **errp);
+void qmp_pmemsave(int64_t val, int64_t size, const char *filename, Error **errp);
+void qmp_marshal_pmemsave(QDict *args, QObject **ret, Error **errp);
+void qmp_cont(Error **errp);
+void qmp_marshal_cont(QDict *args, QObject **ret, Error **errp);
+void qmp_system_wakeup(Error **errp);
+void qmp_marshal_system_wakeup(QDict *args, QObject **ret, Error **errp);
+void qmp_inject_nmi(Error **errp);
+void qmp_marshal_inject_nmi(QDict *args, QObject **ret, Error **errp);
+void qmp_balloon(int64_t value, Error **errp);
+void qmp_marshal_balloon(QDict *args, QObject **ret, Error **errp);
+char *qmp_human_monitor_command(const char *command_line, bool has_cpu_index, int64_t cpu_index, Error **errp);
+void qmp_marshal_human_monitor_command(QDict *args, QObject **ret, Error **errp);
+ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp);
+void qmp_marshal_qom_list(QDict *args, QObject **ret, Error **errp);
+QObject *qmp_qom_get(const char *path, const char *property, Error **errp);
+void qmp_marshal_qom_get(QDict *args, QObject **ret, Error **errp);
+void qmp_qom_set(const char *path, const char *property, QObject *value, Error **errp);
+void qmp_marshal_qom_set(QDict *args, QObject **ret, Error **errp);
+void qmp_change(const char *device, const char *target, bool has_arg, const char *arg, Error **errp);
+void qmp_marshal_change(QDict *args, QObject **ret, Error **errp);
+ObjectTypeInfoList *qmp_qom_list_types(bool has_implements, const char *implements, bool has_abstract, bool abstract, Error **errp);
+void qmp_marshal_qom_list_types(QDict *args, QObject **ret, Error **errp);
+ObjectPropertyInfoList *qmp_device_list_properties(const char *q_typename, Error **errp);
+void qmp_marshal_device_list_properties(QDict *args, QObject **ret, Error **errp);
+ObjectPropertyInfoList *qmp_qom_list_properties(const char *q_typename, Error **errp);
+void qmp_marshal_qom_list_properties(QDict *args, QObject **ret, Error **errp);
+void qmp_xen_set_global_dirty_log(bool enable, Error **errp);
+void qmp_marshal_xen_set_global_dirty_log(QDict *args, QObject **ret, Error **errp);
+void qmp_device_del(const char *id, Error **errp);
+void qmp_marshal_device_del(QDict *args, QObject **ret, Error **errp);
+void qmp_dump_guest_memory(bool paging, const char *protocol, bool has_detach, bool detach, bool has_begin, int64_t begin, bool has_length, int64_t length, bool has_format, DumpGuestMemoryFormat format, Error **errp);
+void qmp_marshal_dump_guest_memory(QDict *args, QObject **ret, Error **errp);
+DumpQueryResult *qmp_query_dump(Error **errp);
+void qmp_marshal_query_dump(QDict *args, QObject **ret, Error **errp);
+DumpGuestMemoryCapability *qmp_query_dump_guest_memory_capability(Error **errp);
+void qmp_marshal_query_dump_guest_memory_capability(QDict *args, QObject **ret, Error **errp);
+void qmp_dump_skeys(const char *filename, Error **errp);
+void qmp_marshal_dump_skeys(QDict *args, QObject **ret, Error **errp);
+void qmp_object_add(const char *qom_type, const char *id, bool has_props, QObject *props, Error **errp);
+void qmp_marshal_object_add(QDict *args, QObject **ret, Error **errp);
+void qmp_object_del(const char *id, Error **errp);
+void qmp_marshal_object_del(QDict *args, QObject **ret, Error **errp);
+void qmp_getfd(const char *fdname, Error **errp);
+void qmp_marshal_getfd(QDict *args, QObject **ret, Error **errp);
+void qmp_closefd(const char *fdname, Error **errp);
+void qmp_marshal_closefd(QDict *args, QObject **ret, Error **errp);
+MachineInfoList *qmp_query_machines(Error **errp);
+void qmp_marshal_query_machines(QDict *args, QObject **ret, Error **errp);
+MemoryInfo *qmp_query_memory_size_summary(Error **errp);
+void qmp_marshal_query_memory_size_summary(QDict *args, QObject **ret, Error **errp);
+CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp);
+void qmp_marshal_query_cpu_definitions(QDict *args, QObject **ret, Error **errp);
+CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type, CpuModelInfo *model, Error **errp);
+void qmp_marshal_query_cpu_model_expansion(QDict *args, QObject **ret, Error **errp);
+CpuModelCompareInfo *qmp_query_cpu_model_comparison(CpuModelInfo *modela, CpuModelInfo *modelb, Error **errp);
+void qmp_marshal_query_cpu_model_comparison(QDict *args, QObject **ret, Error **errp);
+CpuModelBaselineInfo *qmp_query_cpu_model_baseline(CpuModelInfo *modela, CpuModelInfo *modelb, Error **errp);
+void qmp_marshal_query_cpu_model_baseline(QDict *args, QObject **ret, Error **errp);
+AddfdInfo *qmp_add_fd(bool has_fdset_id, int64_t fdset_id, bool has_opaque, const char *opaque, Error **errp);
+void qmp_marshal_add_fd(QDict *args, QObject **ret, Error **errp);
+void qmp_remove_fd(int64_t fdset_id, bool has_fd, int64_t fd, Error **errp);
+void qmp_marshal_remove_fd(QDict *args, QObject **ret, Error **errp);
+FdsetInfoList *qmp_query_fdsets(Error **errp);
+void qmp_marshal_query_fdsets(QDict *args, QObject **ret, Error **errp);
+TargetInfo *qmp_query_target(Error **errp);
+void qmp_marshal_query_target(QDict *args, QObject **ret, Error **errp);
+CommandLineOptionInfoList *qmp_query_command_line_options(bool has_option, const char *option, Error **errp);
+void qmp_marshal_query_command_line_options(QDict *args, QObject **ret, Error **errp);
+MemdevList *qmp_query_memdev(Error **errp);
+void qmp_marshal_query_memdev(QDict *args, QObject **ret, Error **errp);
+MemoryDeviceInfoList *qmp_query_memory_devices(Error **errp);
+void qmp_marshal_query_memory_devices(QDict *args, QObject **ret, Error **errp);
+ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp);
+void qmp_marshal_query_acpi_ospm_status(QDict *args, QObject **ret, Error **errp);
+void qmp_rtc_reset_reinjection(Error **errp);
+void qmp_marshal_rtc_reset_reinjection(QDict *args, QObject **ret, Error **errp);
+void qmp_xen_load_devices_state(const char *filename, Error **errp);
+void qmp_marshal_xen_load_devices_state(QDict *args, QObject **ret, Error **errp);
+GICCapabilityList *qmp_query_gic_capabilities(Error **errp);
+void qmp_marshal_query_gic_capabilities(QDict *args, QObject **ret, Error **errp);
+HotpluggableCPUList *qmp_query_hotpluggable_cpus(Error **errp);
+void qmp_marshal_query_hotpluggable_cpus(QDict *args, QObject **ret, Error **errp);
+GuidInfo *qmp_query_vm_generation_id(Error **errp);
+void qmp_marshal_query_vm_generation_id(QDict *args, QObject **ret, Error **errp);
+SevInfo *qmp_query_sev(Error **errp);
+void qmp_marshal_query_sev(QDict *args, QObject **ret, Error **errp);
+SevLaunchMeasureInfo *qmp_query_sev_launch_measure(Error **errp);
+void qmp_marshal_query_sev_launch_measure(QDict *args, QObject **ret, Error **errp);
+SevCapability *qmp_query_sev_capabilities(Error **errp);
+void qmp_marshal_query_sev_capabilities(QDict *args, QObject **ret, Error **errp);
+void qmp_x_oob_test(bool lock, Error **errp);
+void qmp_marshal_x_oob_test(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_MISC_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-net.c b/qemu2-auto-generated/qapi/qapi-commands-net.c
new file mode 100644
index 0000000000..97e65800f4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-net.c
@@ -0,0 +1,145 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-net.h"
+#include "qapi-commands-net.h"
+
+
+void qmp_marshal_set_link(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_set_link_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_set_link_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_set_link(arg.name, arg.up, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_set_link_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_netdev_del(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_netdev_del_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_netdev_del_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_netdev_del(arg.id, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_netdev_del_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_RxFilterInfoList(RxFilterInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_RxFilterInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_RxFilterInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_rx_filter(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ RxFilterInfoList *retval;
+ Visitor *v;
+ q_obj_query_rx_filter_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_rx_filter_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_rx_filter(arg.has_name, arg.name, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_RxFilterInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_rx_filter_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_net_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-net.h b/qemu2-auto-generated/qapi/qapi-commands-net.h
new file mode 100644
index 0000000000..b9e59ea05b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-net.h
@@ -0,0 +1,27 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_NET_H
+#define QAPI_COMMANDS_NET_H
+
+#include "qapi-commands-common.h"
+#include "qapi-types-net.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_set_link(const char *name, bool up, Error **errp);
+void qmp_marshal_set_link(QDict *args, QObject **ret, Error **errp);
+void qmp_netdev_del(const char *id, Error **errp);
+void qmp_marshal_netdev_del(QDict *args, QObject **ret, Error **errp);
+RxFilterInfoList *qmp_query_rx_filter(bool has_name, const char *name, Error **errp);
+void qmp_marshal_query_rx_filter(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_NET_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-rocker.c b/qemu2-auto-generated/qapi/qapi-commands-rocker.c
new file mode 100644
index 0000000000..e22502d488
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-rocker.c
@@ -0,0 +1,246 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-rocker.h"
+#include "qapi-commands-rocker.h"
+
+
+static void qmp_marshal_output_RockerSwitch(RockerSwitch *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_RockerSwitch(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerSwitch(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_rocker(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ RockerSwitch *retval;
+ Visitor *v;
+ q_obj_query_rocker_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_rocker_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_rocker(arg.name, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_RockerSwitch(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_rocker_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_RockerPortList(RockerPortList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_RockerPortList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerPortList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_rocker_ports(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ RockerPortList *retval;
+ Visitor *v;
+ q_obj_query_rocker_ports_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_rocker_ports_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_rocker_ports(arg.name, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_RockerPortList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_rocker_ports_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_RockerOfDpaFlowList(RockerOfDpaFlowList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_RockerOfDpaFlowList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlowList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_rocker_of_dpa_flows(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ RockerOfDpaFlowList *retval;
+ Visitor *v;
+ q_obj_query_rocker_of_dpa_flows_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_rocker_of_dpa_flows_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_rocker_of_dpa_flows(arg.name, arg.has_tbl_id, arg.tbl_id, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_RockerOfDpaFlowList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_rocker_of_dpa_flows_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_RockerOfDpaGroupList(RockerOfDpaGroupList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_RockerOfDpaGroupList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaGroupList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_rocker_of_dpa_groups(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ RockerOfDpaGroupList *retval;
+ Visitor *v;
+ q_obj_query_rocker_of_dpa_groups_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_query_rocker_of_dpa_groups_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_query_rocker_of_dpa_groups(arg.name, arg.has_type, arg.type, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_RockerOfDpaGroupList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_query_rocker_of_dpa_groups_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_rocker_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-rocker.h b/qemu2-auto-generated/qapi/qapi-commands-rocker.h
new file mode 100644
index 0000000000..d5b2a14172
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-rocker.h
@@ -0,0 +1,28 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_ROCKER_H
+#define QAPI_COMMANDS_ROCKER_H
+
+#include "qapi-types-rocker.h"
+#include "qapi/qmp/dispatch.h"
+
+RockerSwitch *qmp_query_rocker(const char *name, Error **errp);
+void qmp_marshal_query_rocker(QDict *args, QObject **ret, Error **errp);
+RockerPortList *qmp_query_rocker_ports(const char *name, Error **errp);
+void qmp_marshal_query_rocker_ports(QDict *args, QObject **ret, Error **errp);
+RockerOfDpaFlowList *qmp_query_rocker_of_dpa_flows(const char *name, bool has_tbl_id, uint32_t tbl_id, Error **errp);
+void qmp_marshal_query_rocker_of_dpa_flows(QDict *args, QObject **ret, Error **errp);
+RockerOfDpaGroupList *qmp_query_rocker_of_dpa_groups(const char *name, bool has_type, uint8_t type, Error **errp);
+void qmp_marshal_query_rocker_of_dpa_groups(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_ROCKER_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-run-state.c b/qemu2-auto-generated/qapi/qapi-commands-run-state.c
new file mode 100644
index 0000000000..bbd7195d66
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-run-state.c
@@ -0,0 +1,116 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-run-state.h"
+#include "qapi-commands-run-state.h"
+
+
+static void qmp_marshal_output_StatusInfo(StatusInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_StatusInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_StatusInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_status(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ StatusInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_status(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_StatusInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_watchdog_set_action(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_watchdog_set_action_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_watchdog_set_action_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_watchdog_set_action(arg.action, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_watchdog_set_action_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_run_state_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-run-state.h b/qemu2-auto-generated/qapi/qapi-commands-run-state.h
new file mode 100644
index 0000000000..4fae875557
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-run-state.h
@@ -0,0 +1,24 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_RUN_STATE_H
+#define QAPI_COMMANDS_RUN_STATE_H
+
+#include "qapi-types-run-state.h"
+#include "qapi/qmp/dispatch.h"
+
+StatusInfo *qmp_query_status(Error **errp);
+void qmp_marshal_query_status(QDict *args, QObject **ret, Error **errp);
+void qmp_watchdog_set_action(WatchdogAction action, Error **errp);
+void qmp_marshal_watchdog_set_action(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_RUN_STATE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-sockets.c b/qemu2-auto-generated/qapi/qapi-commands-sockets.c
new file mode 100644
index 0000000000..f2a54ce179
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-sockets.c
@@ -0,0 +1,26 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-sockets.h"
+#include "qapi-commands-sockets.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_sockets_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-sockets.h b/qemu2-auto-generated/qapi/qapi-commands-sockets.h
new file mode 100644
index 0000000000..2762cae581
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-sockets.h
@@ -0,0 +1,21 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_SOCKETS_H
+#define QAPI_COMMANDS_SOCKETS_H
+
+#include "qapi-commands-common.h"
+#include "qapi-types-sockets.h"
+#include "qapi/qmp/dispatch.h"
+
+
+#endif /* QAPI_COMMANDS_SOCKETS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-tpm.c b/qemu2-auto-generated/qapi/qapi-commands-tpm.c
new file mode 100644
index 0000000000..eb6412bc26
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-tpm.c
@@ -0,0 +1,200 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-tpm.h"
+#include "qapi-commands-tpm.h"
+
+
+static void qmp_marshal_output_TpmModelList(TpmModelList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_TpmModelList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_TpmModelList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_tpm_models(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ TpmModelList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_tpm_models(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_TpmModelList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_TpmTypeList(TpmTypeList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_TpmTypeList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_TpmTypeList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_tpm_types(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ TpmTypeList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_tpm_types(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_TpmTypeList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_TPMInfoList(TPMInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_TPMInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_TPMInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_tpm(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ TPMInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_tpm(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_TPMInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_tpm_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-tpm.h b/qemu2-auto-generated/qapi/qapi-commands-tpm.h
new file mode 100644
index 0000000000..df31323550
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-tpm.h
@@ -0,0 +1,26 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_TPM_H
+#define QAPI_COMMANDS_TPM_H
+
+#include "qapi-types-tpm.h"
+#include "qapi/qmp/dispatch.h"
+
+TpmModelList *qmp_query_tpm_models(Error **errp);
+void qmp_marshal_query_tpm_models(QDict *args, QObject **ret, Error **errp);
+TpmTypeList *qmp_query_tpm_types(Error **errp);
+void qmp_marshal_query_tpm_types(QDict *args, QObject **ret, Error **errp);
+TPMInfoList *qmp_query_tpm(Error **errp);
+void qmp_marshal_query_tpm(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_TPM_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-trace.c b/qemu2-auto-generated/qapi/qapi-commands-trace.c
new file mode 100644
index 0000000000..a6973ab7db
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-trace.c
@@ -0,0 +1,113 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-trace.h"
+#include "qapi-commands-trace.h"
+
+
+static void qmp_marshal_output_TraceEventInfoList(TraceEventInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_TraceEventInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_TraceEventInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_trace_event_get_state(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ TraceEventInfoList *retval;
+ Visitor *v;
+ q_obj_trace_event_get_state_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_trace_event_get_state_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_trace_event_get_state(arg.name, arg.has_vcpu, arg.vcpu, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_TraceEventInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_trace_event_get_state_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_trace_event_set_state(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_trace_event_set_state_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_trace_event_set_state_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_trace_event_set_state(arg.name, arg.enable, arg.has_ignore_unavailable, arg.ignore_unavailable, arg.has_vcpu, arg.vcpu, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_trace_event_set_state_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_trace_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-trace.h b/qemu2-auto-generated/qapi/qapi-commands-trace.h
new file mode 100644
index 0000000000..1e571f35d1
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-trace.h
@@ -0,0 +1,24 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_TRACE_H
+#define QAPI_COMMANDS_TRACE_H
+
+#include "qapi-types-trace.h"
+#include "qapi/qmp/dispatch.h"
+
+TraceEventInfoList *qmp_trace_event_get_state(const char *name, bool has_vcpu, int64_t vcpu, Error **errp);
+void qmp_marshal_trace_event_get_state(QDict *args, QObject **ret, Error **errp);
+void qmp_trace_event_set_state(const char *name, bool enable, bool has_ignore_unavailable, bool ignore_unavailable, bool has_vcpu, int64_t vcpu, Error **errp);
+void qmp_marshal_trace_event_set_state(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_TRACE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-transaction.c b/qemu2-auto-generated/qapi/qapi-commands-transaction.c
new file mode 100644
index 0000000000..aae73ce29b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-transaction.c
@@ -0,0 +1,58 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-transaction.h"
+#include "qapi-commands-transaction.h"
+
+
+void qmp_marshal_transaction(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_transaction_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_transaction_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_transaction(arg.actions, arg.has_properties, arg.properties, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_transaction_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_transaction_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-transaction.h b/qemu2-auto-generated/qapi/qapi-commands-transaction.h
new file mode 100644
index 0000000000..14acde58cd
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-transaction.h
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_TRANSACTION_H
+#define QAPI_COMMANDS_TRANSACTION_H
+
+#include "qapi-commands-block.h"
+#include "qapi-types-transaction.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_transaction(TransactionActionList *actions, bool has_properties, TransactionProperties *properties, Error **errp);
+void qmp_marshal_transaction(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_TRANSACTION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands-ui.c b/qemu2-auto-generated/qapi/qapi-commands-ui.c
new file mode 100644
index 0000000000..2e86af23cf
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-ui.c
@@ -0,0 +1,450 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit-ui.h"
+#include "qapi-commands-ui.h"
+
+
+void qmp_marshal_set_password(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_set_password_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_set_password_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_set_password(arg.protocol, arg.password, arg.has_connected, arg.connected, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_set_password_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_expire_password(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_expire_password_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_expire_password_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_expire_password(arg.protocol, arg.time, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_expire_password_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_screendump(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_screendump_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_screendump_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_screendump(arg.filename, arg.has_device, arg.device, arg.has_head, arg.head, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_screendump_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_SpiceInfo(SpiceInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_SpiceInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_spice(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ SpiceInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_spice(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_SpiceInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_VncInfo(VncInfo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_VncInfo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncInfo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_vnc(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ VncInfo *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_vnc(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_VncInfo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output_VncInfo2List(VncInfo2List *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_VncInfo2List(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncInfo2List(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_vnc_servers(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ VncInfo2List *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_vnc_servers(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_VncInfo2List(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_change_vnc_password(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_change_vnc_password_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_change_vnc_password_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_change_vnc_password(arg.password, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_change_vnc_password_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_MouseInfoList(MouseInfoList *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_MouseInfoList(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_MouseInfoList(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_query_mice(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ MouseInfoList *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_query_mice(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_MouseInfoList(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_send_key(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_send_key_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_send_key_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_send_key(arg.keys, arg.has_hold_time, arg.hold_time, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_send_key_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_input_send_event(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_input_send_event_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_input_send_event_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_input_send_event(arg.has_device, arg.device, arg.has_head, arg.head, arg.events, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_input_send_event_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_ui_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands-ui.h b/qemu2-auto-generated/qapi/qapi-commands-ui.h
new file mode 100644
index 0000000000..eac78107c9
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands-ui.h
@@ -0,0 +1,41 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_UI_H
+#define QAPI_COMMANDS_UI_H
+
+#include "qapi-commands-sockets.h"
+#include "qapi-types-ui.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_set_password(const char *protocol, const char *password, bool has_connected, const char *connected, Error **errp);
+void qmp_marshal_set_password(QDict *args, QObject **ret, Error **errp);
+void qmp_expire_password(const char *protocol, const char *time, Error **errp);
+void qmp_marshal_expire_password(QDict *args, QObject **ret, Error **errp);
+void qmp_screendump(const char *filename, bool has_device, const char *device, bool has_head, int64_t head, Error **errp);
+void qmp_marshal_screendump(QDict *args, QObject **ret, Error **errp);
+SpiceInfo *qmp_query_spice(Error **errp);
+void qmp_marshal_query_spice(QDict *args, QObject **ret, Error **errp);
+VncInfo *qmp_query_vnc(Error **errp);
+void qmp_marshal_query_vnc(QDict *args, QObject **ret, Error **errp);
+VncInfo2List *qmp_query_vnc_servers(Error **errp);
+void qmp_marshal_query_vnc_servers(QDict *args, QObject **ret, Error **errp);
+void qmp_change_vnc_password(const char *password, Error **errp);
+void qmp_marshal_change_vnc_password(QDict *args, QObject **ret, Error **errp);
+MouseInfoList *qmp_query_mice(Error **errp);
+void qmp_marshal_query_mice(QDict *args, QObject **ret, Error **errp);
+void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time, Error **errp);
+void qmp_marshal_send_key(QDict *args, QObject **ret, Error **errp);
+void qmp_input_send_event(bool has_device, const char *device, bool has_head, int64_t head, InputEventList *events, Error **errp);
+void qmp_marshal_input_send_event(QDict *args, QObject **ret, Error **errp);
+
+#endif /* QAPI_COMMANDS_UI_H */
diff --git a/qemu2-auto-generated/qapi/qapi-commands.c b/qemu2-auto-generated/qapi/qapi-commands.c
new file mode 100644
index 0000000000..d11761d8f6
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands.c
@@ -0,0 +1,360 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "qapi-visit.h"
+#include "qapi-commands.h"
+
+
+void qmp_init_marshal(QmpCommandList *cmds)
+{
+ QTAILQ_INIT(cmds);
+
+ qmp_register_command(cmds, "query-status",
+ qmp_marshal_query_status, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "watchdog-set-action",
+ qmp_marshal_watchdog_set_action, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-block-latency-histogram-set",
+ qmp_marshal_x_block_latency_histogram_set, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-block",
+ qmp_marshal_query_block, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-blockstats",
+ qmp_marshal_query_blockstats, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-block-jobs",
+ qmp_marshal_query_block_jobs, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block_passwd",
+ qmp_marshal_block_passwd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block_resize",
+ qmp_marshal_block_resize, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-snapshot-sync",
+ qmp_marshal_blockdev_snapshot_sync, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-snapshot",
+ qmp_marshal_blockdev_snapshot, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "change-backing-file",
+ qmp_marshal_change_backing_file, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-commit",
+ qmp_marshal_block_commit, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "drive-backup",
+ qmp_marshal_drive_backup, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-backup",
+ qmp_marshal_blockdev_backup, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-named-block-nodes",
+ qmp_marshal_query_named_block_nodes, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "drive-mirror",
+ qmp_marshal_drive_mirror, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-dirty-bitmap-add",
+ qmp_marshal_block_dirty_bitmap_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-dirty-bitmap-remove",
+ qmp_marshal_block_dirty_bitmap_remove, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-dirty-bitmap-clear",
+ qmp_marshal_block_dirty_bitmap_clear, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-debug-block-dirty-bitmap-sha256",
+ qmp_marshal_x_debug_block_dirty_bitmap_sha256, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-mirror",
+ qmp_marshal_blockdev_mirror, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block_set_io_throttle",
+ qmp_marshal_block_set_io_throttle, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-stream",
+ qmp_marshal_block_stream, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-set-speed",
+ qmp_marshal_block_job_set_speed, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-cancel",
+ qmp_marshal_block_job_cancel, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-pause",
+ qmp_marshal_block_job_pause, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-resume",
+ qmp_marshal_block_job_resume, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-complete",
+ qmp_marshal_block_job_complete, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-dismiss",
+ qmp_marshal_block_job_dismiss, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-job-finalize",
+ qmp_marshal_block_job_finalize, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-add",
+ qmp_marshal_blockdev_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-del",
+ qmp_marshal_blockdev_del, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-blockdev-create",
+ qmp_marshal_x_blockdev_create, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-open-tray",
+ qmp_marshal_blockdev_open_tray, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-close-tray",
+ qmp_marshal_blockdev_close_tray, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-remove-medium",
+ qmp_marshal_blockdev_remove_medium, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-insert-medium",
+ qmp_marshal_blockdev_insert_medium, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-change-medium",
+ qmp_marshal_blockdev_change_medium, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "block-set-write-threshold",
+ qmp_marshal_block_set_write_threshold, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-blockdev-change",
+ qmp_marshal_x_blockdev_change, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-blockdev-set-iothread",
+ qmp_marshal_x_blockdev_set_iothread, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-snapshot-internal-sync",
+ qmp_marshal_blockdev_snapshot_internal_sync, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "blockdev-snapshot-delete-internal-sync",
+ qmp_marshal_blockdev_snapshot_delete_internal_sync, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "eject",
+ qmp_marshal_eject, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "nbd-server-start",
+ qmp_marshal_nbd_server_start, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "nbd-server-add",
+ qmp_marshal_nbd_server_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "nbd-server-remove",
+ qmp_marshal_nbd_server_remove, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "nbd-server-stop",
+ qmp_marshal_nbd_server_stop, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-chardev",
+ qmp_marshal_query_chardev, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-chardev-backends",
+ qmp_marshal_query_chardev_backends, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "ringbuf-write",
+ qmp_marshal_ringbuf_write, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "ringbuf-read",
+ qmp_marshal_ringbuf_read, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "chardev-add",
+ qmp_marshal_chardev_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "chardev-change",
+ qmp_marshal_chardev_change, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "chardev-remove",
+ qmp_marshal_chardev_remove, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "chardev-send-break",
+ qmp_marshal_chardev_send_break, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "set_link",
+ qmp_marshal_set_link, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "netdev_del",
+ qmp_marshal_netdev_del, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-rx-filter",
+ qmp_marshal_query_rx_filter, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-rocker",
+ qmp_marshal_query_rocker, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-rocker-ports",
+ qmp_marshal_query_rocker_ports, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-rocker-of-dpa-flows",
+ qmp_marshal_query_rocker_of_dpa_flows, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-rocker-of-dpa-groups",
+ qmp_marshal_query_rocker_of_dpa_groups, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-tpm-models",
+ qmp_marshal_query_tpm_models, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-tpm-types",
+ qmp_marshal_query_tpm_types, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-tpm",
+ qmp_marshal_query_tpm, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "set_password",
+ qmp_marshal_set_password, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "expire_password",
+ qmp_marshal_expire_password, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "screendump",
+ qmp_marshal_screendump, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-spice",
+ qmp_marshal_query_spice, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-vnc",
+ qmp_marshal_query_vnc, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-vnc-servers",
+ qmp_marshal_query_vnc_servers, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "change-vnc-password",
+ qmp_marshal_change_vnc_password, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-mice",
+ qmp_marshal_query_mice, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "send-key",
+ qmp_marshal_send_key, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "input-send-event",
+ qmp_marshal_input_send_event, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-migrate",
+ qmp_marshal_query_migrate, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-set-capabilities",
+ qmp_marshal_migrate_set_capabilities, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-migrate-capabilities",
+ qmp_marshal_query_migrate_capabilities, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-set-parameters",
+ qmp_marshal_migrate_set_parameters, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-migrate-parameters",
+ qmp_marshal_query_migrate_parameters, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "client_migrate_info",
+ qmp_marshal_client_migrate_info, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-start-postcopy",
+ qmp_marshal_migrate_start_postcopy, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-colo-lost-heartbeat",
+ qmp_marshal_x_colo_lost_heartbeat, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate_cancel",
+ qmp_marshal_migrate_cancel, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-continue",
+ qmp_marshal_migrate_continue, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate_set_downtime",
+ qmp_marshal_migrate_set_downtime, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate_set_speed",
+ qmp_marshal_migrate_set_speed, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-set-cache-size",
+ qmp_marshal_migrate_set_cache_size, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-migrate-cache-size",
+ qmp_marshal_query_migrate_cache_size, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate",
+ qmp_marshal_migrate, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "migrate-incoming",
+ qmp_marshal_migrate_incoming, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "xen-save-devices-state",
+ qmp_marshal_xen_save_devices_state, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "xen-set-replication",
+ qmp_marshal_xen_set_replication, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-xen-replication-status",
+ qmp_marshal_query_xen_replication_status, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "xen-colo-do-checkpoint",
+ qmp_marshal_xen_colo_do_checkpoint, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "transaction",
+ qmp_marshal_transaction, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "trace-event-get-state",
+ qmp_marshal_trace_event_get_state, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "trace-event-set-state",
+ qmp_marshal_trace_event_set_state, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qmp_capabilities",
+ qmp_marshal_qmp_capabilities, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-version",
+ qmp_marshal_query_version, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-commands",
+ qmp_marshal_query_commands, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "add_client",
+ qmp_marshal_add_client, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-name",
+ qmp_marshal_query_name, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-kvm",
+ qmp_marshal_query_kvm, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-uuid",
+ qmp_marshal_query_uuid, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-events",
+ qmp_marshal_query_events, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpus",
+ qmp_marshal_query_cpus, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpus-fast",
+ qmp_marshal_query_cpus_fast, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-iothreads",
+ qmp_marshal_query_iothreads, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-balloon",
+ qmp_marshal_query_balloon, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-pci",
+ qmp_marshal_query_pci, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "quit",
+ qmp_marshal_quit, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "stop",
+ qmp_marshal_stop, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "system_reset",
+ qmp_marshal_system_reset, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "system_powerdown",
+ qmp_marshal_system_powerdown, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "cpu-add",
+ qmp_marshal_cpu_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "memsave",
+ qmp_marshal_memsave, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "pmemsave",
+ qmp_marshal_pmemsave, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "cont",
+ qmp_marshal_cont, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "system_wakeup",
+ qmp_marshal_system_wakeup, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "inject-nmi",
+ qmp_marshal_inject_nmi, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "balloon",
+ qmp_marshal_balloon, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "human-monitor-command",
+ qmp_marshal_human_monitor_command, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qom-list",
+ qmp_marshal_qom_list, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qom-get",
+ qmp_marshal_qom_get, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qom-set",
+ qmp_marshal_qom_set, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "change",
+ qmp_marshal_change, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qom-list-types",
+ qmp_marshal_qom_list_types, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "device-list-properties",
+ qmp_marshal_device_list_properties, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "qom-list-properties",
+ qmp_marshal_qom_list_properties, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "xen-set-global-dirty-log",
+ qmp_marshal_xen_set_global_dirty_log, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "device_del",
+ qmp_marshal_device_del, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "dump-guest-memory",
+ qmp_marshal_dump_guest_memory, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-dump",
+ qmp_marshal_query_dump, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-dump-guest-memory-capability",
+ qmp_marshal_query_dump_guest_memory_capability, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "dump-skeys",
+ qmp_marshal_dump_skeys, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "object-add",
+ qmp_marshal_object_add, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "object-del",
+ qmp_marshal_object_del, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "getfd",
+ qmp_marshal_getfd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "closefd",
+ qmp_marshal_closefd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-machines",
+ qmp_marshal_query_machines, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-memory-size-summary",
+ qmp_marshal_query_memory_size_summary, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpu-definitions",
+ qmp_marshal_query_cpu_definitions, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpu-model-expansion",
+ qmp_marshal_query_cpu_model_expansion, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpu-model-comparison",
+ qmp_marshal_query_cpu_model_comparison, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-cpu-model-baseline",
+ qmp_marshal_query_cpu_model_baseline, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "add-fd",
+ qmp_marshal_add_fd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "remove-fd",
+ qmp_marshal_remove_fd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-fdsets",
+ qmp_marshal_query_fdsets, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-target",
+ qmp_marshal_query_target, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-command-line-options",
+ qmp_marshal_query_command_line_options, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-memdev",
+ qmp_marshal_query_memdev, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-memory-devices",
+ qmp_marshal_query_memory_devices, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-acpi-ospm-status",
+ qmp_marshal_query_acpi_ospm_status, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "rtc-reset-reinjection",
+ qmp_marshal_rtc_reset_reinjection, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "xen-load-devices-state",
+ qmp_marshal_xen_load_devices_state, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-gic-capabilities",
+ qmp_marshal_query_gic_capabilities, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-hotpluggable-cpus",
+ qmp_marshal_query_hotpluggable_cpus, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-vm-generation-id",
+ qmp_marshal_query_vm_generation_id, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-sev",
+ qmp_marshal_query_sev, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-sev-launch-measure",
+ qmp_marshal_query_sev_launch_measure, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "query-sev-capabilities",
+ qmp_marshal_query_sev_capabilities, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "x-oob-test",
+ qmp_marshal_x_oob_test, QCO_ALLOW_OOB);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_commands_c;
diff --git a/qemu2-auto-generated/qapi/qapi-commands.h b/qemu2-auto-generated/qapi/qapi-commands.h
new file mode 100644
index 0000000000..c52a2078eb
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-commands.h
@@ -0,0 +1,36 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_COMMANDS_H
+#define QAPI_COMMANDS_H
+
+#include "qapi-commands-common.h"
+#include "qapi-commands-sockets.h"
+#include "qapi-commands-run-state.h"
+#include "qapi-commands-crypto.h"
+#include "qapi-commands-block.h"
+#include "qapi-commands-char.h"
+#include "qapi-commands-net.h"
+#include "qapi-commands-rocker.h"
+#include "qapi-commands-tpm.h"
+#include "qapi-commands-ui.h"
+#include "qapi-commands-migration.h"
+#include "qapi-commands-transaction.h"
+#include "qapi-commands-trace.h"
+#include "qapi-commands-introspect.h"
+#include "qapi-commands-misc.h"
+#include "qapi-types.h"
+#include "qapi/qmp/dispatch.h"
+
+void qmp_init_marshal(QmpCommandList *cmds);
+
+#endif /* QAPI_COMMANDS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-doc.texi b/qemu2-auto-generated/qapi/qapi-doc.texi
new file mode 100644
index 0000000000..5ccbbe1684
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-doc.texi
@@ -0,0 +1,17238 @@
+@c AUTOMATICALLY GENERATED, DO NOT MODIFY
+
+@section Introduction
+
+This document describes all commands currently supported by QMP.
+
+Most of the time their usage is exactly the same as in the user Monitor, this
+means that any other document which also describe commands (the manpage,
+QEMU's manual, etc) can and should be consulted.
+
+QMP has two types of commands: regular and query commands. Regular commands
+usually change the Virtual Machine's state someway, while query commands just
+return information. The sections below are divided accordingly.
+
+It's important to observe that all communication examples are formatted in
+a reader-friendly way, so that they're easier to understand. However, in real
+protocol usage, they're emitted as a single line.
+
+Also, the following notation is used to denote data flow:
+
+Example:
+
+@example
+-> data issued by the Client
+@end example
+
+@example
+<- Server data response
+@end example
+
+
+Please, refer to the QMP specification (docs/interop/qmp-spec.txt) for
+detailed information on the Server command and response formats.
+
+@section Stability Considerations
+
+The current QMP command set (described in this file) may be useful for a
+number of use cases, however it's limited and several commands have bad
+defined semantics, specially with regard to command completion.
+
+These problems are going to be solved incrementally in the next QEMU releases
+and we're going to establish a deprecation policy for badly defined commands.
+
+If you're planning to adopt QMP, please observe the following:
+
+@enumerate
+@item
+The deprecation policy will take effect and be documented soon, please
+check the documentation of each used command as soon as a new release of
+QEMU is available
+
+@item
+DO NOT rely on anything which is not explicit documented
+
+@item
+Errors, in special, are not documented. Applications should NOT check
+for specific errors classes or data (it's strongly recommended to only
+check for the "error" key)
+@end enumerate
+
+
+@section Common data types
+
+
+@deftp {Enum} QapiErrorClass
+
+QEMU error classes
+
+@b{Values:}
+@table @asis
+@item @code{GenericError}
+this is used for errors that don't require a specific error
+class. This should be the default case for most errors
+@item @code{CommandNotFound}
+the requested command has not been found
+@item @code{DeviceNotActive}
+a device has failed to be become active
+@item @code{DeviceNotFound}
+the requested device has not been found
+@item @code{KVMMissingCap}
+the requested operation can't be fulfilled because a
+required KVM capability is missing
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Enum} IoOperationType
+
+An enumeration of the I/O operation types
+
+@b{Values:}
+@table @asis
+@item @code{read}
+read operation
+@item @code{write}
+write operation
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Enum} OnOffAuto
+
+An enumeration of three options: on, off, and auto
+
+@b{Values:}
+@table @asis
+@item @code{auto}
+QEMU selects the value between on and off
+@item @code{on}
+Enabled
+@item @code{off}
+Disabled
+@end table
+
+@b{Since:}
+2.2
+
+@end deftp
+
+
+
+@deftp {Enum} OnOffSplit
+
+An enumeration of three values: on, off, and split
+
+@b{Values:}
+@table @asis
+@item @code{on}
+Enabled
+@item @code{off}
+Disabled
+@item @code{split}
+Mixed
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} String
+
+A fat type wrapping 'str', to be embedded in lists.
+
+@b{Members:}
+@table @asis
+@item @code{str: string}
+Not documented
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Alternate} StrOrNull
+
+This is a string value or the explicit lack of a string (null
+pointer in C). Intended for cases when 'optional absent' already
+has a different meaning.
+
+@b{Members:}
+@table @asis
+@item @code{s: string}
+the string value
+@item @code{n: null}
+no string value
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Enum} OffAutoPCIBAR
+
+An enumeration of options for specifying a PCI BAR
+
+@b{Values:}
+@table @asis
+@item @code{off}
+The specified feature is disabled
+@item @code{auto}
+The PCI BAR for the feature is automatically selected
+@item @code{bar0}
+PCI BAR0 is used for the feature
+@item @code{bar1}
+PCI BAR1 is used for the feature
+@item @code{bar2}
+PCI BAR2 is used for the feature
+@item @code{bar3}
+PCI BAR3 is used for the feature
+@item @code{bar4}
+PCI BAR4 is used for the feature
+@item @code{bar5}
+PCI BAR5 is used for the feature
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+@section Socket data types
+
+
+@deftp {Enum} NetworkAddressFamily
+
+The network address family
+
+@b{Values:}
+@table @asis
+@item @code{ipv4}
+IPV4 family
+@item @code{ipv6}
+IPV6 family
+@item @code{unix}
+unix socket
+@item @code{vsock}
+vsock family (since 2.8)
+@item @code{unknown}
+otherwise
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} InetSocketAddressBase
+
+
+
+@b{Members:}
+@table @asis
+@item @code{host: string}
+host part of the address
+@item @code{port: string}
+port part of the address
+@end table
+
+@end deftp
+
+
+
+@deftp {Object} InetSocketAddress
+
+Captures a socket address or address range in the Internet namespace.
+
+@b{Members:}
+@table @asis
+@item @code{numeric: boolean} (optional)
+true if the host/port are guaranteed to be numeric,
+false if name resolution should be attempted. Defaults to false.
+(Since 2.9)
+@item @code{to: int} (optional)
+If present, this is range of possible addresses, with port
+between @code{port} and @code{to}.
+@item @code{ipv4: boolean} (optional)
+whether to accept IPv4 addresses, default try both IPv4 and IPv6
+@item @code{ipv6: boolean} (optional)
+whether to accept IPv6 addresses, default try both IPv4 and IPv6
+@item The members of @code{InetSocketAddressBase}
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} UnixSocketAddress
+
+Captures a socket address in the local ("Unix socket") namespace.
+
+@b{Members:}
+@table @asis
+@item @code{path: string}
+filesystem path to use
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} VsockSocketAddress
+
+Captures a socket address in the vsock namespace.
+
+@b{Members:}
+@table @asis
+@item @code{cid: string}
+unique host identifier
+@item @code{port: string}
+port
+@end table
+
+@b{Note:}
+string types are used to allow for possible future hostname or
+service resolution support.
+
+@b{Since:}
+2.8
+
+@end deftp
+
+
+
+@deftp {Object} SocketAddressLegacy
+
+Captures the address of a socket, which could also be a named file descriptor
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"inet"}, @t{"unix"}, @t{"vsock"}, @t{"fd"}
+@item @code{data: InetSocketAddress} when @code{type} is @t{"inet"}
+@item @code{data: UnixSocketAddress} when @code{type} is @t{"unix"}
+@item @code{data: VsockSocketAddress} when @code{type} is @t{"vsock"}
+@item @code{data: String} when @code{type} is @t{"fd"}
+@end table
+
+@b{Note:}
+This type is deprecated in favor of SocketAddress. The
+difference between SocketAddressLegacy and SocketAddress is that the
+latter is a flat union rather than a simple union. Flat is nicer
+because it avoids nesting on the wire, i.e. that form has fewer @{@}.
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Enum} SocketAddressType
+
+Available SocketAddress types
+
+@b{Values:}
+@table @asis
+@item @code{inet}
+Internet address
+@item @code{unix}
+Unix domain socket
+@item @code{vsock}
+VMCI address
+@item @code{fd}
+decimal is for file descriptor number, otherwise a file descriptor name.
+Named file descriptors are permitted in monitor commands, in combination
+with the 'getfd' command. Decimal file descriptors are permitted at
+startup or other contexts where no monitor context is active.
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} SocketAddress
+
+Captures the address of a socket, which could also be a named file
+descriptor
+
+@b{Members:}
+@table @asis
+@item @code{type: SocketAddressType}
+Transport type
+@item The members of @code{InetSocketAddress} when @code{type} is @t{"inet"}
+@item The members of @code{UnixSocketAddress} when @code{type} is @t{"unix"}
+@item The members of @code{VsockSocketAddress} when @code{type} is @t{"vsock"}
+@item The members of @code{String} when @code{type} is @t{"fd"}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+@section VM run state
+
+
+@deftp {Enum} RunState
+
+An enumeration of VM run states.
+
+@b{Values:}
+@table @asis
+@item @code{debug}
+QEMU is running on a debugger
+@item @code{finish-migrate}
+guest is paused to finish the migration process
+@item @code{inmigrate}
+guest is paused waiting for an incoming migration. Note
+that this state does not tell whether the machine will start at the
+end of the migration. This depends on the command-line -S option and
+any invocation of 'stop' or 'cont' that has happened since QEMU was
+started.
+@item @code{internal-error}
+An internal error that prevents further guest execution
+has occurred
+@item @code{io-error}
+the last IOP has failed and the device is configured to pause
+on I/O errors
+@item @code{paused}
+guest has been paused via the 'stop' command
+@item @code{postmigrate}
+guest is paused following a successful 'migrate'
+@item @code{prelaunch}
+QEMU was started with -S and guest has not started
+@item @code{restore-vm}
+guest is paused to restore VM state
+@item @code{running}
+guest is actively running
+@item @code{save-vm}
+guest is paused to save the VM state
+@item @code{shutdown}
+guest is shut down (and -no-shutdown is in use)
+@item @code{suspended}
+guest is suspended (ACPI S3)
+@item @code{watchdog}
+the watchdog action is configured to pause and has been triggered
+@item @code{guest-panicked}
+guest has been panicked as a result of guest OS panic
+@item @code{colo}
+guest is paused to save/restore VM state under colo checkpoint,
+VM can not get into this state unless colo capability is enabled
+for migration. (since 2.8)
+@end table
+
+@end deftp
+
+
+
+@deftp {Object} StatusInfo
+
+Information about VCPU run state
+
+@b{Members:}
+@table @asis
+@item @code{running: boolean}
+true if all VCPUs are runnable, false if not runnable
+@item @code{singlestep: boolean}
+true if VCPUs are in single-step mode
+@item @code{status: RunState}
+the virtual machine @code{RunState}
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+@code{singlestep} is enabled through the GDB stub
+
+@end deftp
+
+
+
+@deftypefn Command {} query-status
+
+Query the run status of all VCPUs
+
+@b{Returns:}
+@code{StatusInfo} reflecting all VCPUs
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-status" @}
+<- @{ "return": @{ "running": true,
+ "singlestep": false,
+ "status": "running" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SHUTDOWN
+
+Emitted when the virtual machine has shut down, indicating that qemu is
+about to exit.
+
+@b{Arguments:}
+@table @asis
+@item @code{guest: boolean}
+If true, the shutdown was triggered by a guest request (such as
+a guest-initiated ACPI shutdown request or other hardware-specific action)
+rather than a host request (such as sending qemu a SIGINT). (since 2.10)
+@end table
+
+@b{Note:}
+If the command-line option "-no-shutdown" has been specified, qemu will
+not exit, and a STOP event will eventually follow the SHUTDOWN event
+
+@b{Since:}
+0.12.0
+
+@b{Example:}
+@example
+<- @{ "event": "SHUTDOWN", "data": @{ "guest": true @},
+ "timestamp": @{ "seconds": 1267040730, "microseconds": 682951 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} POWERDOWN
+
+Emitted when the virtual machine is powered down through the power control
+system, such as via ACPI.
+
+@b{Since:}
+0.12.0
+
+@b{Example:}
+@example
+<- @{ "event": "POWERDOWN",
+ "timestamp": @{ "seconds": 1267040730, "microseconds": 682951 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} RESET
+
+Emitted when the virtual machine is reset
+
+@b{Arguments:}
+@table @asis
+@item @code{guest: boolean}
+If true, the reset was triggered by a guest request (such as
+a guest-initiated ACPI reboot request or other hardware-specific action)
+rather than a host request (such as the QMP command system_reset).
+(since 2.10)
+@end table
+
+@b{Since:}
+0.12.0
+
+@b{Example:}
+@example
+<- @{ "event": "RESET", "data": @{ "guest": false @},
+ "timestamp": @{ "seconds": 1267041653, "microseconds": 9518 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} STOP
+
+Emitted when the virtual machine is stopped
+
+@b{Since:}
+0.12.0
+
+@b{Example:}
+@example
+<- @{ "event": "STOP",
+ "timestamp": @{ "seconds": 1267041730, "microseconds": 281295 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} RESUME
+
+Emitted when the virtual machine resumes execution
+
+@b{Since:}
+0.12.0
+
+@b{Example:}
+@example
+<- @{ "event": "RESUME",
+ "timestamp": @{ "seconds": 1271770767, "microseconds": 582542 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SUSPEND
+
+Emitted when guest enters a hardware suspension state, for example, S3 state,
+which is sometimes called standby state
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+<- @{ "event": "SUSPEND",
+ "timestamp": @{ "seconds": 1344456160, "microseconds": 309119 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SUSPEND_DISK
+
+Emitted when guest enters a hardware suspension state with data saved on
+disk, for example, S4 state, which is sometimes called hibernate state
+
+@b{Note:}
+QEMU shuts down (similar to event @code{SHUTDOWN}) when entering this state
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+<- @{ "event": "SUSPEND_DISK",
+ "timestamp": @{ "seconds": 1344456160, "microseconds": 309119 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} WAKEUP
+
+Emitted when the guest has woken up from suspend state and is running
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+<- @{ "event": "WAKEUP",
+ "timestamp": @{ "seconds": 1344522075, "microseconds": 745528 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} WATCHDOG
+
+Emitted when the watchdog device's timer is expired
+
+@b{Arguments:}
+@table @asis
+@item @code{action: WatchdogAction}
+action that has been taken
+@end table
+
+@b{Note:}
+If action is "reset", "shutdown", or "pause" the WATCHDOG event is
+followed respectively by the RESET, SHUTDOWN, or STOP events
+
+@b{Note:}
+This event is rate-limited.
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "WATCHDOG",
+ "data": @{ "action": "reset" @},
+ "timestamp": @{ "seconds": 1267061043, "microseconds": 959568 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} WatchdogAction
+
+An enumeration of the actions taken when the watchdog device's timer is
+expired
+
+@b{Values:}
+@table @asis
+@item @code{reset}
+system resets
+@item @code{shutdown}
+system shutdown, note that it is similar to @code{powerdown}, which
+tries to set to system status and notify guest
+@item @code{poweroff}
+system poweroff, the emulator program exits
+@item @code{pause}
+system pauses, similar to @code{stop}
+@item @code{debug}
+system enters debug state
+@item @code{none}
+nothing is done
+@item @code{inject-nmi}
+a non-maskable interrupt is injected into the first VCPU (all
+VCPUS on x86) (since 2.4)
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftypefn Command {} watchdog-set-action
+
+Set watchdog action
+
+@b{Arguments:}
+@table @asis
+@item @code{action: WatchdogAction}
+Not documented
+@end table
+
+@b{Since:}
+2.11
+
+@end deftypefn
+
+
+
+@deftypefn Event {} GUEST_PANICKED
+
+Emitted when guest OS panic is detected
+
+@b{Arguments:}
+@table @asis
+@item @code{action: GuestPanicAction}
+action that has been taken, currently always "pause"
+@item @code{info: GuestPanicInformation} (optional)
+information about a panic (since 2.9)
+@end table
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+<- @{ "event": "GUEST_PANICKED",
+ "data": @{ "action": "pause" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} GuestPanicAction
+
+An enumeration of the actions taken when guest OS panic is detected
+
+@b{Values:}
+@table @asis
+@item @code{pause}
+system pauses
+@item @code{poweroff}
+Not documented
+@end table
+
+@b{Since:}
+2.1 (poweroff since 2.8)
+
+@end deftp
+
+
+
+@deftp {Enum} GuestPanicInformationType
+
+An enumeration of the guest panic information types
+
+@b{Values:}
+@table @asis
+@item @code{hyper-v}
+hyper-v guest panic information type
+@item @code{s390}
+s390 guest panic information type (Since: 2.12)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} GuestPanicInformation
+
+Information about a guest panic
+
+@b{Members:}
+@table @asis
+@item @code{type: GuestPanicInformationType}
+Crash type that defines the hypervisor specific information
+@item The members of @code{GuestPanicInformationHyperV} when @code{type} is @t{"hyper-v"}
+@item The members of @code{GuestPanicInformationS390} when @code{type} is @t{"s390"}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} GuestPanicInformationHyperV
+
+Hyper-V specific guest panic information (HV crash MSRs)
+
+@b{Members:}
+@table @asis
+@item @code{arg1: int}
+Not documented
+@item @code{arg2: int}
+Not documented
+@item @code{arg3: int}
+Not documented
+@item @code{arg4: int}
+Not documented
+@item @code{arg5: int}
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} S390CrashReason
+
+Reason why the CPU is in a crashed state.
+
+@b{Values:}
+@table @asis
+@item @code{unknown}
+no crash reason was set
+@item @code{disabled-wait}
+the CPU has entered a disabled wait state
+@item @code{extint-loop}
+clock comparator or cpu timer interrupt with new PSW enabled
+for external interrupts
+@item @code{pgmint-loop}
+program interrupt with BAD new PSW
+@item @code{opint-loop}
+operation exception interrupt with invalid code at the program
+interrupt new PSW
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} GuestPanicInformationS390
+
+S390 specific guest panic information (PSW)
+
+@b{Members:}
+@table @asis
+@item @code{core: int}
+core id of the CPU that crashed
+@item @code{psw-mask: int}
+control fields of guest PSW
+@item @code{psw-addr: int}
+guest instruction address
+@item @code{reason: S390CrashReason}
+guest crash reason
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+@section Cryptography
+
+
+@deftp {Enum} QCryptoTLSCredsEndpoint
+
+The type of network endpoint that will be using the credentials.
+Most types of credential require different setup / structures
+depending on whether they will be used in a server versus a
+client.
+
+@b{Values:}
+@table @asis
+@item @code{client}
+the network endpoint is acting as the client
+@item @code{server}
+the network endpoint is acting as the server
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoSecretFormat
+
+The data format that the secret is provided in
+
+@b{Values:}
+@table @asis
+@item @code{raw}
+raw bytes. When encoded in JSON only valid UTF-8 sequences can be used
+@item @code{base64}
+arbitrary base64 encoded binary data
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoHashAlgorithm
+
+The supported algorithms for computing content digests
+
+@b{Values:}
+@table @asis
+@item @code{md5}
+MD5. Should not be used in any new code, legacy compat only
+@item @code{sha1}
+SHA-1. Should not be used in any new code, legacy compat only
+@item @code{sha224}
+SHA-224. (since 2.7)
+@item @code{sha256}
+SHA-256. Current recommended strong hash.
+@item @code{sha384}
+SHA-384. (since 2.7)
+@item @code{sha512}
+SHA-512. (since 2.7)
+@item @code{ripemd160}
+RIPEMD-160. (since 2.7)
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoCipherAlgorithm
+
+The supported algorithms for content encryption ciphers
+
+@b{Values:}
+@table @asis
+@item @code{aes-128}
+AES with 128 bit / 16 byte keys
+@item @code{aes-192}
+AES with 192 bit / 24 byte keys
+@item @code{aes-256}
+AES with 256 bit / 32 byte keys
+@item @code{des-rfb}
+RFB specific variant of single DES. Do not use except in VNC.
+@item @code{3des}
+3DES(EDE) with 192 bit / 24 byte keys (since 2.9)
+@item @code{cast5-128}
+Cast5 with 128 bit / 16 byte keys
+@item @code{serpent-128}
+Serpent with 128 bit / 16 byte keys
+@item @code{serpent-192}
+Serpent with 192 bit / 24 byte keys
+@item @code{serpent-256}
+Serpent with 256 bit / 32 byte keys
+@item @code{twofish-128}
+Twofish with 128 bit / 16 byte keys
+@item @code{twofish-192}
+Twofish with 192 bit / 24 byte keys
+@item @code{twofish-256}
+Twofish with 256 bit / 32 byte keys
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoCipherMode
+
+The supported modes for content encryption ciphers
+
+@b{Values:}
+@table @asis
+@item @code{ecb}
+Electronic Code Book
+@item @code{cbc}
+Cipher Block Chaining
+@item @code{xts}
+XEX with tweaked code book and ciphertext stealing
+@item @code{ctr}
+Counter (Since 2.8)
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoIVGenAlgorithm
+
+The supported algorithms for generating initialization
+vectors for full disk encryption. The 'plain' generator
+should not be used for disks with sector numbers larger
+than 2^32, except where compatibility with pre-existing
+Linux dm-crypt volumes is required.
+
+@b{Values:}
+@table @asis
+@item @code{plain}
+64-bit sector number truncated to 32-bits
+@item @code{plain64}
+64-bit sector number
+@item @code{essiv}
+64-bit sector number encrypted with a hash of the encryption key
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} QCryptoBlockFormat
+
+The supported full disk encryption formats
+
+@b{Values:}
+@table @asis
+@item @code{qcow}
+QCow/QCow2 built-in AES-CBC encryption. Use only
+for liberating data from old images.
+@item @code{luks}
+LUKS encryption format. Recommended for new images
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockOptionsBase
+
+The common options that apply to all full disk
+encryption formats
+
+@b{Members:}
+@table @asis
+@item @code{format: QCryptoBlockFormat}
+the encryption format
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockOptionsQCow
+
+The options that apply to QCow/QCow2 AES-CBC encryption format
+
+@b{Members:}
+@table @asis
+@item @code{key-secret: string} (optional)
+the ID of a QCryptoSecret object providing the
+decryption key. Mandatory except when probing image for
+metadata only.
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockOptionsLUKS
+
+The options that apply to LUKS encryption format
+
+@b{Members:}
+@table @asis
+@item @code{key-secret: string} (optional)
+the ID of a QCryptoSecret object providing the
+decryption key. Mandatory except when probing image for
+metadata only.
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockCreateOptionsLUKS
+
+The options that apply to LUKS encryption format initialization
+
+@b{Members:}
+@table @asis
+@item @code{cipher-alg: QCryptoCipherAlgorithm} (optional)
+the cipher algorithm for data encryption
+Currently defaults to 'aes'.
+@item @code{cipher-mode: QCryptoCipherMode} (optional)
+the cipher mode for data encryption
+Currently defaults to 'cbc'
+@item @code{ivgen-alg: QCryptoIVGenAlgorithm} (optional)
+the initialization vector generator
+Currently defaults to 'essiv'
+@item @code{ivgen-hash-alg: QCryptoHashAlgorithm} (optional)
+the initialization vector generator hash
+Currently defaults to 'sha256'
+@item @code{hash-alg: QCryptoHashAlgorithm} (optional)
+the master key hash algorithm
+Currently defaults to 'sha256'
+@item @code{iter-time: int} (optional)
+number of milliseconds to spend in
+PBKDF passphrase processing. Currently defaults
+to 2000. (since 2.8)
+@item The members of @code{QCryptoBlockOptionsLUKS}
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockOpenOptions
+
+The options that are available for all encryption formats
+when opening an existing volume
+
+@b{Members:}
+@table @asis
+@item The members of @code{QCryptoBlockOptionsBase}
+@item The members of @code{QCryptoBlockOptionsQCow} when @code{format} is @t{"qcow"}
+@item The members of @code{QCryptoBlockOptionsLUKS} when @code{format} is @t{"luks"}
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockCreateOptions
+
+The options that are available for all encryption formats
+when initializing a new volume
+
+@b{Members:}
+@table @asis
+@item The members of @code{QCryptoBlockOptionsBase}
+@item The members of @code{QCryptoBlockOptionsQCow} when @code{format} is @t{"qcow"}
+@item The members of @code{QCryptoBlockCreateOptionsLUKS} when @code{format} is @t{"luks"}
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockInfoBase
+
+The common information that applies to all full disk
+encryption formats
+
+@b{Members:}
+@table @asis
+@item @code{format: QCryptoBlockFormat}
+the encryption format
+@end table
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockInfoLUKSSlot
+
+Information about the LUKS block encryption key
+slot options
+
+@b{Members:}
+@table @asis
+@item @code{active: boolean}
+whether the key slot is currently in use
+@item @code{key-offset: int}
+offset to the key material in bytes
+@item @code{iters: int} (optional)
+number of PBKDF2 iterations for key material
+@item @code{stripes: int} (optional)
+number of stripes for splitting key material
+@end table
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockInfoLUKS
+
+Information about the LUKS block encryption options
+
+@b{Members:}
+@table @asis
+@item @code{cipher-alg: QCryptoCipherAlgorithm}
+the cipher algorithm for data encryption
+@item @code{cipher-mode: QCryptoCipherMode}
+the cipher mode for data encryption
+@item @code{ivgen-alg: QCryptoIVGenAlgorithm}
+the initialization vector generator
+@item @code{ivgen-hash-alg: QCryptoHashAlgorithm} (optional)
+the initialization vector generator hash
+@item @code{hash-alg: QCryptoHashAlgorithm}
+the master key hash algorithm
+@item @code{payload-offset: int}
+offset to the payload data in bytes
+@item @code{master-key-iters: int}
+number of PBKDF2 iterations for key material
+@item @code{uuid: string}
+unique identifier for the volume
+@item @code{slots: array of QCryptoBlockInfoLUKSSlot}
+information about each key slot
+@end table
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockInfoQCow
+
+Information about the QCow block encryption options
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftp {Object} QCryptoBlockInfo
+
+Information about the block encryption options
+
+@b{Members:}
+@table @asis
+@item The members of @code{QCryptoBlockInfoBase}
+@item The members of @code{QCryptoBlockInfoQCow} when @code{format} is @t{"qcow"}
+@item The members of @code{QCryptoBlockInfoLUKS} when @code{format} is @t{"luks"}
+@end table
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+@section Block devices
+
+@subsection Block core (VM unrelated)
+
+
+@deftp {Object} SnapshotInfo
+
+
+
+@b{Members:}
+@table @asis
+@item @code{id: string}
+unique snapshot id
+@item @code{name: string}
+user chosen name
+@item @code{vm-state-size: int}
+size of the VM state
+@item @code{date-sec: int}
+UTC date of the snapshot in seconds
+@item @code{date-nsec: int}
+fractional part in nano seconds to be used with date-sec
+@item @code{vm-clock-sec: int}
+VM clock relative to boot in seconds
+@item @code{vm-clock-nsec: int}
+fractional part in nano seconds to be used with vm-clock-sec
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfoSpecificQCow2EncryptionBase
+
+
+
+@b{Members:}
+@table @asis
+@item @code{format: BlockdevQcow2EncryptionFormat}
+The encryption format
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfoSpecificQCow2Encryption
+
+
+
+@b{Members:}
+@table @asis
+@item The members of @code{ImageInfoSpecificQCow2EncryptionBase}
+@item The members of @code{QCryptoBlockInfoQCow} when @code{format} is @t{"aes"}
+@item The members of @code{QCryptoBlockInfoLUKS} when @code{format} is @t{"luks"}
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfoSpecificQCow2
+
+
+
+@b{Members:}
+@table @asis
+@item @code{compat: string}
+compatibility level
+@item @code{lazy-refcounts: boolean} (optional)
+on or off; only valid for compat >= 1.1
+@item @code{corrupt: boolean} (optional)
+true if the image has been marked corrupt; only valid for
+compat >= 1.1 (since 2.2)
+@item @code{refcount-bits: int}
+width of a refcount entry in bits (since 2.3)
+@item @code{encrypt: ImageInfoSpecificQCow2Encryption} (optional)
+details about encryption parameters; only set if image
+is encrypted (since 2.10)
+@end table
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfoSpecificVmdk
+
+
+
+@b{Members:}
+@table @asis
+@item @code{create-type: string}
+The create type of VMDK image
+@item @code{cid: int}
+Content id of image
+@item @code{parent-cid: int}
+Parent VMDK image's cid
+@item @code{extents: array of ImageInfo}
+List of extent files
+@end table
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfoSpecific
+
+A discriminated record of image format specific information structures.
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"qcow2"}, @t{"vmdk"}, @t{"luks"}
+@item @code{data: ImageInfoSpecificQCow2} when @code{type} is @t{"qcow2"}
+@item @code{data: ImageInfoSpecificVmdk} when @code{type} is @t{"vmdk"}
+@item @code{data: QCryptoBlockInfoLUKS} when @code{type} is @t{"luks"}
+@end table
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftp {Object} ImageInfo
+
+Information about a QEMU image file
+
+@b{Members:}
+@table @asis
+@item @code{filename: string}
+name of the image file
+@item @code{format: string}
+format of the image file
+@item @code{virtual-size: int}
+maximum capacity in bytes of the image
+@item @code{actual-size: int} (optional)
+actual size on disk in bytes of the image
+@item @code{dirty-flag: boolean} (optional)
+true if image is not cleanly closed
+@item @code{cluster-size: int} (optional)
+size of a cluster in bytes
+@item @code{encrypted: boolean} (optional)
+true if the image is encrypted
+@item @code{compressed: boolean} (optional)
+true if the image is compressed (Since 1.7)
+@item @code{backing-filename: string} (optional)
+name of the backing file
+@item @code{full-backing-filename: string} (optional)
+full path of the backing file
+@item @code{backing-filename-format: string} (optional)
+the format of the backing file
+@item @code{snapshots: array of SnapshotInfo} (optional)
+list of VM snapshots
+@item @code{backing-image: ImageInfo} (optional)
+info of the backing image (since 1.6)
+@item @code{format-specific: ImageInfoSpecific} (optional)
+structure supplying additional format-specific
+information (since 1.7)
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} ImageCheck
+
+Information about a QEMU image file check
+
+@b{Members:}
+@table @asis
+@item @code{filename: string}
+name of the image file checked
+@item @code{format: string}
+format of the image file checked
+@item @code{check-errors: int}
+number of unexpected errors occurred during check
+@item @code{image-end-offset: int} (optional)
+offset (in bytes) where the image ends, this
+field is present if the driver for the image format
+supports it
+@item @code{corruptions: int} (optional)
+number of corruptions found during the check if any
+@item @code{leaks: int} (optional)
+number of leaks found during the check if any
+@item @code{corruptions-fixed: int} (optional)
+number of corruptions fixed during the check
+if any
+@item @code{leaks-fixed: int} (optional)
+number of leaks fixed during the check if any
+@item @code{total-clusters: int} (optional)
+total number of clusters, this field is present
+if the driver for the image format supports it
+@item @code{allocated-clusters: int} (optional)
+total number of allocated clusters, this
+field is present if the driver for the image format
+supports it
+@item @code{fragmented-clusters: int} (optional)
+total number of fragmented clusters, this
+field is present if the driver for the image format
+supports it
+@item @code{compressed-clusters: int} (optional)
+total number of compressed clusters, this
+field is present if the driver for the image format
+supports it
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftp {Object} MapEntry
+
+Mapping information from a virtual block range to a host file range
+
+@b{Members:}
+@table @asis
+@item @code{start: int}
+the start byte of the mapped virtual range
+@item @code{length: int}
+the number of bytes of the mapped virtual range
+@item @code{data: boolean}
+whether the mapped range has data
+@item @code{zero: boolean}
+whether the virtual blocks are zeroed
+@item @code{depth: int}
+the depth of the mapping
+@item @code{offset: int} (optional)
+the offset in file that the virtual sectors are mapped to
+@item @code{filename: string} (optional)
+filename that is referred to by @code{offset}
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCacheInfo
+
+Cache mode information for a block device
+
+@b{Members:}
+@table @asis
+@item @code{writeback: boolean}
+true if writeback mode is enabled
+@item @code{direct: boolean}
+true if the host page cache is bypassed (O_DIRECT)
+@item @code{no-flush: boolean}
+true if flush requests are ignored for the device
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftp {Object} BlockDeviceInfo
+
+Information about the backing device for a block device.
+
+@b{Members:}
+@table @asis
+@item @code{file: string}
+the filename of the backing device
+@item @code{node-name: string} (optional)
+the name of the block driver node (Since 2.0)
+@item @code{ro: boolean}
+true if the backing device was open read-only
+@item @code{drv: string}
+the name of the block format used to open the backing device. As of
+0.14.0 this can be: 'blkdebug', 'bochs', 'cloop', 'cow', 'dmg',
+'file', 'file', 'ftp', 'ftps', 'host_cdrom', 'host_device',
+'http', 'https', 'luks', 'nbd', 'parallels', 'qcow',
+'qcow2', 'raw', 'vdi', 'vmdk', 'vpc', 'vvfat'
+2.2: 'archipelago' added, 'cow' dropped
+2.3: 'host_floppy' deprecated
+2.5: 'host_floppy' dropped
+2.6: 'luks' added
+2.8: 'replication' added, 'tftp' dropped
+2.9: 'archipelago' dropped
+@item @code{backing_file: string} (optional)
+the name of the backing file (for copy-on-write)
+@item @code{backing_file_depth: int}
+number of files in the backing file chain (since: 1.2)
+@item @code{encrypted: boolean}
+true if the backing device is encrypted
+@item @code{encryption_key_missing: boolean}
+Deprecated; always false
+@item @code{detect_zeroes: BlockdevDetectZeroesOptions}
+detect and optimize zero writes (Since 2.1)
+@item @code{bps: int}
+total throughput limit in bytes per second is specified
+@item @code{bps_rd: int}
+read throughput limit in bytes per second is specified
+@item @code{bps_wr: int}
+write throughput limit in bytes per second is specified
+@item @code{iops: int}
+total I/O operations per second is specified
+@item @code{iops_rd: int}
+read I/O operations per second is specified
+@item @code{iops_wr: int}
+write I/O operations per second is specified
+@item @code{image: ImageInfo}
+the info of image used (since: 1.6)
+@item @code{bps_max: int} (optional)
+total throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{bps_rd_max: int} (optional)
+read throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{bps_wr_max: int} (optional)
+write throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{iops_max: int} (optional)
+total I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{iops_rd_max: int} (optional)
+read I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{iops_wr_max: int} (optional)
+write I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{bps_max_length: int} (optional)
+maximum length of the @code{bps_max} burst
+period, in seconds. (Since 2.6)
+@item @code{bps_rd_max_length: int} (optional)
+maximum length of the @code{bps_rd_max}
+burst period, in seconds. (Since 2.6)
+@item @code{bps_wr_max_length: int} (optional)
+maximum length of the @code{bps_wr_max}
+burst period, in seconds. (Since 2.6)
+@item @code{iops_max_length: int} (optional)
+maximum length of the @code{iops} burst
+period, in seconds. (Since 2.6)
+@item @code{iops_rd_max_length: int} (optional)
+maximum length of the @code{iops_rd_max}
+burst period, in seconds. (Since 2.6)
+@item @code{iops_wr_max_length: int} (optional)
+maximum length of the @code{iops_wr_max}
+burst period, in seconds. (Since 2.6)
+@item @code{iops_size: int} (optional)
+an I/O size in bytes (Since 1.7)
+@item @code{group: string} (optional)
+throttle group name (Since 2.4)
+@item @code{cache: BlockdevCacheInfo}
+the cache mode used for the block device (since: 2.3)
+@item @code{write_threshold: int}
+configured write threshold for the device.
+0 if disabled. (Since 2.3)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Enum} BlockDeviceIoStatus
+
+An enumeration of block device I/O status.
+
+@b{Values:}
+@table @asis
+@item @code{ok}
+The last I/O operation has succeeded
+@item @code{failed}
+The last I/O operation has failed
+@item @code{nospace}
+The last I/O operation has failed due to a no-space condition
+@end table
+
+@b{Since:}
+1.0
+
+@end deftp
+
+
+
+@deftp {Object} BlockDeviceMapEntry
+
+Entry in the metadata map of the device (returned by "qemu-img map")
+
+@b{Members:}
+@table @asis
+@item @code{start: int}
+Offset in the image of the first byte described by this entry
+(in bytes)
+@item @code{length: int}
+Length of the range described by this entry (in bytes)
+@item @code{depth: int}
+Number of layers (0 = top image, 1 = top image's backing file, etc.)
+before reaching one for which the range is allocated. The value is
+in the range 0 to the depth of the image chain - 1.
+@item @code{zero: boolean}
+the sectors in this range read as zeros
+@item @code{data: boolean}
+reading the image will actually read data from a file (in particular,
+if @code{offset} is present this means that the sectors are not simply
+preallocated, but contain actual data in raw format)
+@item @code{offset: int} (optional)
+if present, the image file stores the data for this range in
+raw format at the given offset.
+@end table
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftp {Enum} DirtyBitmapStatus
+
+An enumeration of possible states that a dirty bitmap can report to the user.
+
+@b{Values:}
+@table @asis
+@item @code{frozen}
+The bitmap is currently in-use by a backup operation or block job,
+and is immutable.
+@item @code{disabled}
+The bitmap is currently in-use by an internal operation and is
+read-only. It can still be deleted.
+@item @code{active}
+The bitmap is actively monitoring for new writes, and can be cleared,
+deleted, or used for backup operations.
+@item @code{locked}
+The bitmap is currently in-use by some operation and can not be
+cleared, deleted, or used for backup operations. (Since 2.12)
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} BlockDirtyInfo
+
+Block dirty bitmap information.
+
+@b{Members:}
+@table @asis
+@item @code{name: string} (optional)
+the name of the dirty bitmap (Since 2.4)
+@item @code{count: int}
+number of dirty bytes according to the dirty bitmap
+@item @code{granularity: int}
+granularity of the dirty bitmap in bytes (since 1.4)
+@item @code{status: DirtyBitmapStatus}
+current status of the dirty bitmap (since 2.4)
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} BlockLatencyHistogramInfo
+
+Block latency histogram.
+
+@b{Members:}
+@table @asis
+@item @code{boundaries: array of int}
+list of interval boundary values in nanoseconds, all greater
+than zero and in ascending order.
+For example, the list [10, 50, 100] produces the following
+histogram intervals: [0, 10), [10, 50), [50, 100), [100, +inf).
+@item @code{bins: array of int}
+list of io request counts corresponding to histogram intervals.
+len(@code{bins}) = len(@code{boundaries}) + 1
+For the example above, @code{bins} may be something like [3, 1, 5, 2],
+and corresponding histogram looks like:
+
+5| *
+4| *
+3| @strong{ }
+2| @strong{ } *
+1| @strong{ } @strong{ }
++------------------
+10 50 100
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} x-block-latency-histogram-set
+
+Manage read, write and flush latency histograms for the device.
+
+If only @code{device} parameter is specified, remove all present latency histograms
+for the device. Otherwise, add/reset some of (or all) latency histograms.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+device name to set latency histogram for.
+@item @code{boundaries: array of int} (optional)
+list of interval boundary values (see description in
+BlockLatencyHistogramInfo definition). If specified, all
+latency histograms are removed, and empty ones created for all
+io types with intervals corresponding to @code{boundaries} (except for
+io types, for which specific boundaries are set through the
+following parameters).
+@item @code{boundaries-read: array of int} (optional)
+list of interval boundary values for read latency
+histogram. If specified, old read latency histogram is
+removed, and empty one created with intervals
+corresponding to @code{boundaries-read}. The parameter has higher
+priority then @code{boundaries}.
+@item @code{boundaries-write: array of int} (optional)
+list of interval boundary values for write latency
+histogram.
+@item @code{boundaries-flush: array of int} (optional)
+list of interval boundary values for flush latency
+histogram.
+@end table
+
+@b{Returns:}
+error if device is not found or any boundary arrays are invalid.
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+set new histograms for all io types with intervals
+[0, 10), [10, 50), [50, 100), [100, +inf):
+
+-> @{ "execute": "block-latency-histogram-set",
+ "arguments": @{ "device": "drive0",
+ "boundaries": [10, 50, 100] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Example:}
+@example
+set new histogram only for write, other histograms will remain
+not changed (or not created):
+
+-> @{ "execute": "block-latency-histogram-set",
+ "arguments": @{ "device": "drive0",
+ "boundaries-write": [10, 50, 100] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Example:}
+@example
+set new histograms with the following intervals:
+ read, flush: [0, 10), [10, 50), [50, 100), [100, +inf)
+ write: [0, 1000), [1000, 5000), [5000, +inf)
+
+-> @{ "execute": "block-latency-histogram-set",
+ "arguments": @{ "device": "drive0",
+ "boundaries": [10, 50, 100],
+ "boundaries-write": [1000, 5000] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Example:}
+@example
+remove all latency histograms:
+
+-> @{ "execute": "block-latency-histogram-set",
+ "arguments": @{ "device": "drive0" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BlockInfo
+
+Block device information. This structure describes a virtual device and
+the backing device associated with it.
+
+@b{Members:}
+@table @asis
+@item @code{device: string}
+The device name associated with the virtual device.
+@item @code{qdev: string} (optional)
+The qdev ID, or if no ID is assigned, the QOM path of the block
+device. (since 2.10)
+@item @code{type: string}
+This field is returned only for compatibility reasons, it should
+not be used (always returns 'unknown')
+@item @code{removable: boolean}
+True if the device supports removable media.
+@item @code{locked: boolean}
+True if the guest has locked this device from having its media
+removed
+@item @code{tray_open: boolean} (optional)
+True if the device's tray is open
+(only present if it has a tray)
+@item @code{dirty-bitmaps: array of BlockDirtyInfo} (optional)
+dirty bitmaps information (only present if the
+driver has one or more dirty bitmaps) (Since 2.0)
+@item @code{io-status: BlockDeviceIoStatus} (optional)
+@code{BlockDeviceIoStatus}. Only present if the device
+supports it and the VM is configured to stop on errors
+(supported device models: virtio-blk, IDE, SCSI except
+scsi-generic)
+@item @code{inserted: BlockDeviceInfo} (optional)
+@code{BlockDeviceInfo} describing the device if media is
+present
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} BlockMeasureInfo
+
+Image file size calculation information. This structure describes the size
+requirements for creating a new image file.
+
+The size requirements depend on the new image file format. File size always
+equals virtual disk size for the 'raw' format, even for sparse POSIX files.
+Compact formats such as 'qcow2' represent unallocated and zero regions
+efficiently so file size may be smaller than virtual disk size.
+
+The values are upper bounds that are guaranteed to fit the new image file.
+Subsequent modification, such as internal snapshot or bitmap creation, may
+require additional space and is not covered here.
+
+@b{Members:}
+@table @asis
+@item @code{required: int}
+Size required for a new image file, in bytes.
+@item @code{fully-allocated: int}
+Image file size, in bytes, once data has been written
+to all sectors.
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftypefn Command {} query-block
+
+Get a list of BlockInfo for all virtual block devices.
+
+@b{Returns:}
+a list of @code{BlockInfo} describing each virtual block device. Filter
+nodes that were created implicitly are skipped over.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-block" @}
+<- @{
+ "return":[
+ @{
+ "io-status": "ok",
+ "device":"ide0-hd0",
+ "locked":false,
+ "removable":false,
+ "inserted":@{
+ "ro":false,
+ "drv":"qcow2",
+ "encrypted":false,
+ "file":"disks/test.qcow2",
+ "backing_file_depth":1,
+ "bps":1000000,
+ "bps_rd":0,
+ "bps_wr":0,
+ "iops":1000000,
+ "iops_rd":0,
+ "iops_wr":0,
+ "bps_max": 8000000,
+ "bps_rd_max": 0,
+ "bps_wr_max": 0,
+ "iops_max": 0,
+ "iops_rd_max": 0,
+ "iops_wr_max": 0,
+ "iops_size": 0,
+ "detect_zeroes": "on",
+ "write_threshold": 0,
+ "image":@{
+ "filename":"disks/test.qcow2",
+ "format":"qcow2",
+ "virtual-size":2048000,
+ "backing_file":"base.qcow2",
+ "full-backing-filename":"disks/base.qcow2",
+ "backing-filename-format":"qcow2",
+ "snapshots":[
+ @{
+ "id": "1",
+ "name": "snapshot1",
+ "vm-state-size": 0,
+ "date-sec": 10000200,
+ "date-nsec": 12,
+ "vm-clock-sec": 206,
+ "vm-clock-nsec": 30
+ @}
+ ],
+ "backing-image":@{
+ "filename":"disks/base.qcow2",
+ "format":"qcow2",
+ "virtual-size":2048000
+ @}
+ @}
+ @},
+ "qdev": "ide_disk",
+ "type":"unknown"
+ @},
+ @{
+ "io-status": "ok",
+ "device":"ide1-cd0",
+ "locked":false,
+ "removable":true,
+ "qdev": "/machine/unattached/device[23]",
+ "tray_open": false,
+ "type":"unknown"
+ @},
+ @{
+ "device":"floppy0",
+ "locked":false,
+ "removable":true,
+ "qdev": "/machine/unattached/device[20]",
+ "type":"unknown"
+ @},
+ @{
+ "device":"sd0",
+ "locked":false,
+ "removable":true,
+ "type":"unknown"
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BlockDeviceTimedStats
+
+Statistics of a block device during a given interval of time.
+
+@b{Members:}
+@table @asis
+@item @code{interval_length: int}
+Interval used for calculating the statistics,
+in seconds.
+@item @code{min_rd_latency_ns: int}
+Minimum latency of read operations in the
+defined interval, in nanoseconds.
+@item @code{min_wr_latency_ns: int}
+Minimum latency of write operations in the
+defined interval, in nanoseconds.
+@item @code{min_flush_latency_ns: int}
+Minimum latency of flush operations in the
+defined interval, in nanoseconds.
+@item @code{max_rd_latency_ns: int}
+Maximum latency of read operations in the
+defined interval, in nanoseconds.
+@item @code{max_wr_latency_ns: int}
+Maximum latency of write operations in the
+defined interval, in nanoseconds.
+@item @code{max_flush_latency_ns: int}
+Maximum latency of flush operations in the
+defined interval, in nanoseconds.
+@item @code{avg_rd_latency_ns: int}
+Average latency of read operations in the
+defined interval, in nanoseconds.
+@item @code{avg_wr_latency_ns: int}
+Average latency of write operations in the
+defined interval, in nanoseconds.
+@item @code{avg_flush_latency_ns: int}
+Average latency of flush operations in the
+defined interval, in nanoseconds.
+@item @code{avg_rd_queue_depth: number}
+Average number of pending read operations
+in the defined interval.
+@item @code{avg_wr_queue_depth: number}
+Average number of pending write operations
+in the defined interval.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} BlockDeviceStats
+
+Statistics of a virtual block device or a block backing device.
+
+@b{Members:}
+@table @asis
+@item @code{rd_bytes: int}
+The number of bytes read by the device.
+@item @code{wr_bytes: int}
+The number of bytes written by the device.
+@item @code{rd_operations: int}
+The number of read operations performed by the device.
+@item @code{wr_operations: int}
+The number of write operations performed by the device.
+@item @code{flush_operations: int}
+The number of cache flush operations performed by the
+device (since 0.15.0)
+@item @code{flush_total_time_ns: int}
+Total time spend on cache flushes in nano-seconds
+(since 0.15.0).
+@item @code{wr_total_time_ns: int}
+Total time spend on writes in nano-seconds (since 0.15.0).
+@item @code{rd_total_time_ns: int}
+Total_time_spend on reads in nano-seconds (since 0.15.0).
+@item @code{wr_highest_offset: int}
+The offset after the greatest byte written to the
+device. The intended use of this information is for
+growable sparse files (like qcow2) that are used on top
+of a physical device.
+@item @code{rd_merged: int}
+Number of read requests that have been merged into another
+request (Since 2.3).
+@item @code{wr_merged: int}
+Number of write requests that have been merged into another
+request (Since 2.3).
+@item @code{idle_time_ns: int} (optional)
+Time since the last I/O operation, in
+nanoseconds. If the field is absent it means that
+there haven't been any operations yet (Since 2.5).
+@item @code{failed_rd_operations: int}
+The number of failed read operations
+performed by the device (Since 2.5)
+@item @code{failed_wr_operations: int}
+The number of failed write operations
+performed by the device (Since 2.5)
+@item @code{failed_flush_operations: int}
+The number of failed flush operations
+performed by the device (Since 2.5)
+@item @code{invalid_rd_operations: int}
+The number of invalid read operations
+performed by the device (Since 2.5)
+@item @code{invalid_wr_operations: int}
+The number of invalid write operations
+performed by the device (Since 2.5)
+@item @code{invalid_flush_operations: int}
+The number of invalid flush operations
+performed by the device (Since 2.5)
+@item @code{account_invalid: boolean}
+Whether invalid operations are included in the
+last access statistics (Since 2.5)
+@item @code{account_failed: boolean}
+Whether failed operations are included in the
+latency and last access statistics (Since 2.5)
+@item @code{timed_stats: array of BlockDeviceTimedStats}
+Statistics specific to the set of previously defined
+intervals of time (Since 2.5)
+@item @code{x_rd_latency_histogram: BlockLatencyHistogramInfo} (optional)
+@code{BlockLatencyHistogramInfo}. (Since 2.12)
+@item @code{x_wr_latency_histogram: BlockLatencyHistogramInfo} (optional)
+@code{BlockLatencyHistogramInfo}. (Since 2.12)
+@item @code{x_flush_latency_histogram: BlockLatencyHistogramInfo} (optional)
+@code{BlockLatencyHistogramInfo}. (Since 2.12)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} BlockStats
+
+Statistics of a virtual block device or a block backing device.
+
+@b{Members:}
+@table @asis
+@item @code{device: string} (optional)
+If the stats are for a virtual block device, the name
+corresponding to the virtual block device.
+@item @code{node-name: string} (optional)
+The node name of the device. (Since 2.3)
+@item @code{stats: BlockDeviceStats}
+A @code{BlockDeviceStats} for the device.
+@item @code{parent: BlockStats} (optional)
+This describes the file block device if it has one.
+Contains recursively the statistics of the underlying
+protocol (e.g. the host file for a qcow2 image). If there is
+no underlying protocol, this field is omitted
+@item @code{backing: BlockStats} (optional)
+This describes the backing block device if it has one.
+(Since 2.0)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-blockstats
+
+Query the @code{BlockStats} for all virtual block devices.
+
+@b{Arguments:}
+@table @asis
+@item @code{query-nodes: boolean} (optional)
+If true, the command will query all the block nodes
+that have a node name, in a list which will include "parent"
+information, but not "backing".
+If false or omitted, the behavior is as before - query all the
+device backends, recursively including their "parent" and
+"backing". Filter nodes that were created implicitly are
+skipped over in this mode. (Since 2.3)
+@end table
+
+@b{Returns:}
+A list of @code{BlockStats} for each virtual block devices.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-blockstats" @}
+<- @{
+ "return":[
+ @{
+ "device":"ide0-hd0",
+ "parent":@{
+ "stats":@{
+ "wr_highest_offset":3686448128,
+ "wr_bytes":9786368,
+ "wr_operations":751,
+ "rd_bytes":122567168,
+ "rd_operations":36772
+ "wr_total_times_ns":313253456
+ "rd_total_times_ns":3465673657
+ "flush_total_times_ns":49653
+ "flush_operations":61,
+ "rd_merged":0,
+ "wr_merged":0,
+ "idle_time_ns":2953431879,
+ "account_invalid":true,
+ "account_failed":false
+ @}
+ @},
+ "stats":@{
+ "wr_highest_offset":2821110784,
+ "wr_bytes":9786368,
+ "wr_operations":692,
+ "rd_bytes":122739200,
+ "rd_operations":36604
+ "flush_operations":51,
+ "wr_total_times_ns":313253456
+ "rd_total_times_ns":3465673657
+ "flush_total_times_ns":49653,
+ "rd_merged":0,
+ "wr_merged":0,
+ "idle_time_ns":2953431879,
+ "account_invalid":true,
+ "account_failed":false
+ @}
+ @},
+ @{
+ "device":"ide1-cd0",
+ "stats":@{
+ "wr_highest_offset":0,
+ "wr_bytes":0,
+ "wr_operations":0,
+ "rd_bytes":0,
+ "rd_operations":0
+ "flush_operations":0,
+ "wr_total_times_ns":0
+ "rd_total_times_ns":0
+ "flush_total_times_ns":0,
+ "rd_merged":0,
+ "wr_merged":0,
+ "account_invalid":false,
+ "account_failed":false
+ @}
+ @},
+ @{
+ "device":"floppy0",
+ "stats":@{
+ "wr_highest_offset":0,
+ "wr_bytes":0,
+ "wr_operations":0,
+ "rd_bytes":0,
+ "rd_operations":0
+ "flush_operations":0,
+ "wr_total_times_ns":0
+ "rd_total_times_ns":0
+ "flush_total_times_ns":0,
+ "rd_merged":0,
+ "wr_merged":0,
+ "account_invalid":false,
+ "account_failed":false
+ @}
+ @},
+ @{
+ "device":"sd0",
+ "stats":@{
+ "wr_highest_offset":0,
+ "wr_bytes":0,
+ "wr_operations":0,
+ "rd_bytes":0,
+ "rd_operations":0
+ "flush_operations":0,
+ "wr_total_times_ns":0
+ "rd_total_times_ns":0
+ "flush_total_times_ns":0,
+ "rd_merged":0,
+ "wr_merged":0,
+ "account_invalid":false,
+ "account_failed":false
+ @}
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} BlockdevOnError
+
+An enumeration of possible behaviors for errors on I/O operations.
+The exact meaning depends on whether the I/O was initiated by a guest
+or by a block job
+
+@b{Values:}
+@table @asis
+@item @code{report}
+for guest operations, report the error to the guest;
+for jobs, cancel the job
+@item @code{ignore}
+ignore the error, only report a QMP event (BLOCK_IO_ERROR
+or BLOCK_JOB_ERROR)
+@item @code{enospc}
+same as @code{stop} on ENOSPC, same as @code{report} otherwise.
+@item @code{stop}
+for guest operations, stop the virtual machine;
+for jobs, pause the job
+@item @code{auto}
+inherit the error handling policy of the backend (since: 2.7)
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Enum} MirrorSyncMode
+
+An enumeration of possible behaviors for the initial synchronization
+phase of storage mirroring.
+
+@b{Values:}
+@table @asis
+@item @code{top}
+copies data in the topmost image to the destination
+@item @code{full}
+copies data from all images to the destination
+@item @code{none}
+only copy data written from now on
+@item @code{incremental}
+only copy data described by the dirty bitmap. Since: 2.4
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Enum} BlockJobType
+
+Type of a block job.
+
+@b{Values:}
+@table @asis
+@item @code{commit}
+block commit job type, see "block-commit"
+@item @code{stream}
+block stream job type, see "block-stream"
+@item @code{mirror}
+drive mirror job type, see "drive-mirror"
+@item @code{backup}
+drive backup job type, see "drive-backup"
+@end table
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftp {Enum} BlockJobVerb
+
+Represents command verbs that can be applied to a blockjob.
+
+@b{Values:}
+@table @asis
+@item @code{cancel}
+see @code{block-job-cancel}
+@item @code{pause}
+see @code{block-job-pause}
+@item @code{resume}
+see @code{block-job-resume}
+@item @code{set-speed}
+see @code{block-job-set-speed}
+@item @code{complete}
+see @code{block-job-complete}
+@item @code{dismiss}
+see @code{block-job-dismiss}
+@item @code{finalize}
+see @code{block-job-finalize}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} BlockJobStatus
+
+Indicates the present state of a given blockjob in its lifetime.
+
+@b{Values:}
+@table @asis
+@item @code{undefined}
+Erroneous, default state. Should not ever be visible.
+@item @code{created}
+The job has been created, but not yet started.
+@item @code{running}
+The job is currently running.
+@item @code{paused}
+The job is running, but paused. The pause may be requested by
+either the QMP user or by internal processes.
+@item @code{ready}
+The job is running, but is ready for the user to signal completion.
+This is used for long-running jobs like mirror that are designed to
+run indefinitely.
+@item @code{standby}
+The job is ready, but paused. This is nearly identical to @code{paused}.
+The job may return to @code{ready} or otherwise be canceled.
+@item @code{waiting}
+The job is waiting for other jobs in the transaction to converge
+to the waiting state. This status will likely not be visible for
+the last job in a transaction.
+@item @code{pending}
+The job has finished its work, but has finalization steps that it
+needs to make prior to completing. These changes may require
+manual intervention by the management process if manual was set
+to true. These changes may still fail.
+@item @code{aborting}
+The job is in the process of being aborted, and will finish with
+an error. The job will afterwards report that it is @code{concluded}.
+This status may not be visible to the management process.
+@item @code{concluded}
+The job has finished all work. If manual was set to true, the job
+will remain in the query list until it is dismissed.
+@item @code{null}
+The job is in the process of being dismantled. This state should not
+ever be visible externally.
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockJobInfo
+
+Information about a long-running block device operation.
+
+@b{Members:}
+@table @asis
+@item @code{type: string}
+the job type ('stream' for image streaming)
+@item @code{device: string}
+The job identifier. Originally the device name but other
+values are allowed since QEMU 2.7
+@item @code{len: int}
+the maximum progress value
+@item @code{busy: boolean}
+false if the job is known to be in a quiescent state, with
+no pending I/O. Since 1.3.
+@item @code{paused: boolean}
+whether the job is paused or, if @code{busy} is true, will
+pause itself as soon as possible. Since 1.3.
+@item @code{offset: int}
+the current progress value
+@item @code{speed: int}
+the rate limit, bytes per second
+@item @code{io-status: BlockDeviceIoStatus}
+the status of the job (since 1.3)
+@item @code{ready: boolean}
+true if the job may be completed (since 2.2)
+@item @code{status: BlockJobStatus}
+Current job state/status (since 2.12)
+@item @code{auto-finalize: boolean}
+Job will finalize itself when PENDING, moving to
+the CONCLUDED state. (since 2.12)
+@item @code{auto-dismiss: boolean}
+Job will dismiss itself when CONCLUDED, moving to the NULL
+state and disappearing from the query list. (since 2.12)
+@end table
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftypefn Command {} query-block-jobs
+
+Return information about long-running block device operations.
+
+@b{Returns:}
+a list of @code{BlockJobInfo} for each active block job
+
+@b{Since:}
+1.1
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block_passwd
+
+This command sets the password of a block device that has not been open
+with a password and requires one.
+
+This command is now obsolete and will always return an error since 2.10
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+Not documented
+@item @code{node-name: string} (optional)
+Not documented
+@item @code{password: string}
+Not documented
+@end table
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block_resize
+
+Resize a block image while a guest is running.
+
+Either @code{device} or @code{node-name} must be set but not both.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+the name of the device to get the image resized
+@item @code{node-name: string} (optional)
+graph node name to get the image resized (Since 2.0)
+@item @code{size: int}
+new image size in bytes
+@end table
+
+@b{Returns:}
+nothing on success
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "block_resize",
+ "arguments": @{ "device": "scratch", "size": 1073741824 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} NewImageMode
+
+An enumeration that tells QEMU how to set the backing file path in
+a new image file.
+
+@b{Values:}
+@table @asis
+@item @code{existing}
+QEMU should look for an existing image file.
+@item @code{absolute-paths}
+QEMU should create a new image with absolute paths
+for the backing file. If there is no backing file available, the new
+image will not be backed either.
+@end table
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevSnapshotSync
+
+Either @code{device} or @code{node-name} must be set but not both.
+
+@b{Members:}
+@table @asis
+@item @code{device: string} (optional)
+the name of the device to generate the snapshot from.
+@item @code{node-name: string} (optional)
+graph node name to generate the snapshot from (Since 2.0)
+@item @code{snapshot-file: string}
+the target of the new image. If the file exists, or
+if it is a device, the snapshot will be created in the existing
+file/device. Otherwise, a new file will be created.
+@item @code{snapshot-node-name: string} (optional)
+the graph node name of the new image (Since 2.0)
+@item @code{format: string} (optional)
+the format of the snapshot image, default is 'qcow2'.
+@item @code{mode: NewImageMode} (optional)
+whether and how QEMU should create a new image, default is
+'absolute-paths'.
+@end table
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevSnapshot
+
+
+
+@b{Members:}
+@table @asis
+@item @code{node: string}
+device or node name that will have a snapshot created.
+@item @code{overlay: string}
+reference to the existing block device that will become
+the overlay of @code{node}, as part of creating the snapshot.
+It must not have a current backing file (this can be
+achieved by passing "backing": null to blockdev-add).
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} DriveBackup
+
+
+
+@b{Members:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+the device name or node-name of a root node which should be copied.
+@item @code{target: string}
+the target of the new image. If the file exists, or if it
+is a device, the existing file/device will be used as the new
+destination. If it does not exist, a new file will be created.
+@item @code{format: string} (optional)
+the format of the new destination, default is to
+probe if @code{mode} is 'existing', else the format of the source
+@item @code{sync: MirrorSyncMode}
+what parts of the disk image should be copied to the destination
+(all the disk, only the sectors allocated in the topmost image, from a
+dirty bitmap, or only new I/O).
+@item @code{mode: NewImageMode} (optional)
+whether and how QEMU should create a new image, default is
+'absolute-paths'.
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second
+@item @code{bitmap: string} (optional)
+the name of dirty bitmap if sync is "incremental".
+Must be present if sync is "incremental", must NOT be present
+otherwise. (Since 2.4)
+@item @code{compress: boolean} (optional)
+true to compress data, if the target format supports it.
+(default: false) (since 2.8)
+@item @code{on-source-error: BlockdevOnError} (optional)
+the action to take on an error on the source,
+default 'report'. 'stop' and 'enospc' can only be used
+if the block device supports io-status (see BlockInfo).
+@item @code{on-target-error: BlockdevOnError} (optional)
+the action to take on an error on the target,
+default 'report' (no limitations, since this applies to
+a different block device than @code{device}).
+@item @code{auto-finalize: boolean} (optional)
+When false, this job will wait in a PENDING state after it has
+finished its work, waiting for @code{block-job-finalize}.
+When true, this job will automatically perform its abort or
+commit actions.
+Defaults to true. (Since 2.12)
+@item @code{auto-dismiss: boolean} (optional)
+When false, this job will wait in a CONCLUDED state after it
+has completed ceased all work, and wait for @code{block-job-dismiss}.
+When true, this job will automatically disappear from the query
+list without user intervention.
+Defaults to true. (Since 2.12)
+@end table
+
+@b{Note:}
+@code{on-source-error} and @code{on-target-error} only affect background
+I/O. If an error occurs during a guest write request, the device's
+rerror/werror actions will be used.
+
+@b{Since:}
+1.6
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevBackup
+
+
+
+@b{Members:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+the device name or node-name of a root node which should be copied.
+@item @code{target: string}
+the device name or node-name of the backup target node.
+@item @code{sync: MirrorSyncMode}
+what parts of the disk image should be copied to the destination
+(all the disk, only the sectors allocated in the topmost image, or
+only new I/O).
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second. The default is 0,
+for unlimited.
+@item @code{compress: boolean} (optional)
+true to compress data, if the target format supports it.
+(default: false) (since 2.8)
+@item @code{on-source-error: BlockdevOnError} (optional)
+the action to take on an error on the source,
+default 'report'. 'stop' and 'enospc' can only be used
+if the block device supports io-status (see BlockInfo).
+@item @code{on-target-error: BlockdevOnError} (optional)
+the action to take on an error on the target,
+default 'report' (no limitations, since this applies to
+a different block device than @code{device}).
+@item @code{auto-finalize: boolean} (optional)
+When false, this job will wait in a PENDING state after it has
+finished its work, waiting for @code{block-job-finalize}.
+When true, this job will automatically perform its abort or
+commit actions.
+Defaults to true. (Since 2.12)
+@item @code{auto-dismiss: boolean} (optional)
+When false, this job will wait in a CONCLUDED state after it
+has completed ceased all work, and wait for @code{block-job-dismiss}.
+When true, this job will automatically disappear from the query
+list without user intervention.
+Defaults to true. (Since 2.12)
+@end table
+
+@b{Note:}
+@code{on-source-error} and @code{on-target-error} only affect background
+I/O. If an error occurs during a guest write request, the device's
+rerror/werror actions will be used.
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftypefn Command {} blockdev-snapshot-sync
+
+Generates a synchronous snapshot of a block device.
+
+For the arguments, see the documentation of BlockdevSnapshotSync.
+
+@b{Returns:}
+nothing on success
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-snapshot-sync",
+ "arguments": @{ "device": "ide-hd0",
+ "snapshot-file":
+ "/some/place/my-image",
+ "format": "qcow2" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-snapshot
+
+Generates a snapshot of a block device.
+
+Create a snapshot, by installing 'node' as the backing image of
+'overlay'. Additionally, if 'node' is associated with a block
+device, the block device changes to using 'overlay' as its new active
+image.
+
+For the arguments, see the documentation of BlockdevSnapshot.
+
+@b{Since:}
+2.5
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-add",
+ "arguments": @{ "driver": "qcow2",
+ "node-name": "node1534",
+ "file": @{ "driver": "file",
+ "filename": "hd1.qcow2" @},
+ "backing": null @} @}
+
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "blockdev-snapshot",
+ "arguments": @{ "node": "ide-hd0",
+ "overlay": "node1534" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} change-backing-file
+
+Change the backing file in the image file metadata. This does not
+cause QEMU to reopen the image file to reparse the backing filename
+(it may, however, perform a reopen to change permissions from
+r/o -> r/w -> r/o, if needed). The new backing file string is written
+into the image file metadata, and the QEMU internal strings are
+updated.
+
+@b{Arguments:}
+@table @asis
+@item @code{image-node-name: string}
+The name of the block driver state node of the
+image to modify. The "device" argument is used
+to verify "image-node-name" is in the chain
+described by "device".
+@item @code{device: string}
+The device name or node-name of the root node that owns
+image-node-name.
+@item @code{backing-file: string}
+The string to write as the backing file. This
+string is not validated, so care should be taken
+when specifying the string or the image chain may
+not be able to be reopened again.
+@end table
+
+@b{Returns:}
+Nothing on success
+
+If "device" does not exist or cannot be determined, DeviceNotFound
+
+@b{Since:}
+2.1
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-commit
+
+Live commit of data from overlay image nodes into backing nodes - i.e.,
+writes data between 'top' and 'base' into 'base'.
+
+@b{Arguments:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+the device name or node-name of a root node
+@item @code{base: string} (optional)
+The file name of the backing image to write data into.
+If not specified, this is the deepest backing image.
+@item @code{top: string} (optional)
+The file name of the backing image within the image chain,
+which contains the topmost data to be committed down. If
+not specified, this is the active layer.
+@item @code{backing-file: string} (optional)
+The backing file string to write into the overlay
+image of 'top'. If 'top' is the active layer,
+specifying a backing file string is an error. This
+filename is not validated.
+
+If a pathname string is such that it cannot be
+resolved by QEMU, that means that subsequent QMP or
+HMP commands must use node-names for the image in
+question, as filename lookup methods will fail.
+
+If not specified, QEMU will automatically determine
+the backing file string to use, or error out if
+there is no obvious choice. Care should be taken
+when specifying the string, to specify a valid
+filename or protocol.
+(Since 2.1)
+
+If top == base, that is an error.
+If top == active, the job will not be completed by itself,
+user needs to complete the job with the block-job-complete
+command after getting the ready event. (Since 2.0)
+
+If the base image is smaller than top, then the base image
+will be resized to be the same size as top. If top is
+smaller than the base image, the base will not be
+truncated. If you want the base image size to match the
+size of the smaller top, you can safely truncate it
+yourself once the commit operation successfully completes.
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second
+@item @code{filter-node-name: string} (optional)
+the node name that should be assigned to the
+filter driver that the commit job inserts into the graph
+above @code{top}. If this option is not given, a node name is
+autogenerated. (Since: 2.9)
+@end table
+
+@b{Returns:}
+Nothing on success
+If commit or stream is already active on this device, DeviceInUse
+If @code{device} does not exist, DeviceNotFound
+If image commit is not supported by this device, NotSupported
+If @code{base} or @code{top} is invalid, a generic error is returned
+If @code{speed} is invalid, InvalidParameter
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+-> @{ "execute": "block-commit",
+ "arguments": @{ "device": "virtio0",
+ "top": "/tmp/snap1.qcow2" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} drive-backup
+
+Start a point-in-time copy of a block device to a new destination. The
+status of ongoing drive-backup operations can be checked with
+query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
+The operation can be stopped before it has completed using the
+block-job-cancel command.
+
+@b{Arguments:} the members of @code{DriveBackup}
+
+@b{Returns:}
+nothing on success
+If @code{device} is not a valid block device, GenericError
+
+@b{Since:}
+1.6
+
+@b{Example:}
+@example
+-> @{ "execute": "drive-backup",
+ "arguments": @{ "device": "drive0",
+ "sync": "full",
+ "target": "backup.img" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-backup
+
+Start a point-in-time copy of a block device to a new destination. The
+status of ongoing blockdev-backup operations can be checked with
+query-block-jobs where the BlockJobInfo.type field has the value 'backup'.
+The operation can be stopped before it has completed using the
+block-job-cancel command.
+
+@b{Arguments:} the members of @code{BlockdevBackup}
+
+@b{Returns:}
+nothing on success
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Since:}
+2.3
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-backup",
+ "arguments": @{ "device": "src-id",
+ "sync": "full",
+ "target": "tgt-id" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} query-named-block-nodes
+
+Get the named block driver list
+
+@b{Returns:}
+the list of BlockDeviceInfo
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-named-block-nodes" @}
+<- @{ "return": [ @{ "ro":false,
+ "drv":"qcow2",
+ "encrypted":false,
+ "file":"disks/test.qcow2",
+ "node-name": "my-node",
+ "backing_file_depth":1,
+ "bps":1000000,
+ "bps_rd":0,
+ "bps_wr":0,
+ "iops":1000000,
+ "iops_rd":0,
+ "iops_wr":0,
+ "bps_max": 8000000,
+ "bps_rd_max": 0,
+ "bps_wr_max": 0,
+ "iops_max": 0,
+ "iops_rd_max": 0,
+ "iops_wr_max": 0,
+ "iops_size": 0,
+ "write_threshold": 0,
+ "image":@{
+ "filename":"disks/test.qcow2",
+ "format":"qcow2",
+ "virtual-size":2048000,
+ "backing_file":"base.qcow2",
+ "full-backing-filename":"disks/base.qcow2",
+ "backing-filename-format":"qcow2",
+ "snapshots":[
+ @{
+ "id": "1",
+ "name": "snapshot1",
+ "vm-state-size": 0,
+ "date-sec": 10000200,
+ "date-nsec": 12,
+ "vm-clock-sec": 206,
+ "vm-clock-nsec": 30
+ @}
+ ],
+ "backing-image":@{
+ "filename":"disks/base.qcow2",
+ "format":"qcow2",
+ "virtual-size":2048000
+ @}
+ @} @} ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} drive-mirror
+
+Start mirroring a block device's writes to a new destination. target
+specifies the target of the new image. If the file exists, or if it
+is a device, it will be used as the new destination for writes. If
+it does not exist, a new file will be created. format specifies the
+format of the mirror image, default is to probe if mode='existing',
+else the format of the source.
+
+@b{Arguments:} the members of @code{DriveMirror}
+
+@b{Returns:}
+nothing on success
+If @code{device} is not a valid block device, GenericError
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+-> @{ "execute": "drive-mirror",
+ "arguments": @{ "device": "ide-hd0",
+ "target": "/some/place/my-image",
+ "sync": "full",
+ "format": "qcow2" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} DriveMirror
+
+A set of parameters describing drive mirror setup.
+
+@b{Members:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+the device name or node-name of a root node whose writes should be
+mirrored.
+@item @code{target: string}
+the target of the new image. If the file exists, or if it
+is a device, the existing file/device will be used as the new
+destination. If it does not exist, a new file will be created.
+@item @code{format: string} (optional)
+the format of the new destination, default is to
+probe if @code{mode} is 'existing', else the format of the source
+@item @code{node-name: string} (optional)
+the new block driver state node name in the graph
+(Since 2.1)
+@item @code{replaces: string} (optional)
+with sync=full graph node name to be replaced by the new
+image when a whole image copy is done. This can be used to repair
+broken Quorum files. (Since 2.1)
+@item @code{mode: NewImageMode} (optional)
+whether and how QEMU should create a new image, default is
+'absolute-paths'.
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second
+@item @code{sync: MirrorSyncMode}
+what parts of the disk image should be copied to the destination
+(all the disk, only the sectors allocated in the topmost image, or
+only new I/O).
+@item @code{granularity: int} (optional)
+granularity of the dirty bitmap, default is 64K
+if the image format doesn't have clusters, 4K if the clusters
+are smaller than that, else the cluster size. Must be a
+power of 2 between 512 and 64M (since 1.4).
+@item @code{buf-size: int} (optional)
+maximum amount of data in flight from source to
+target (since 1.4).
+@item @code{on-source-error: BlockdevOnError} (optional)
+the action to take on an error on the source,
+default 'report'. 'stop' and 'enospc' can only be used
+if the block device supports io-status (see BlockInfo).
+@item @code{on-target-error: BlockdevOnError} (optional)
+the action to take on an error on the target,
+default 'report' (no limitations, since this applies to
+a different block device than @code{device}).
+@item @code{unmap: boolean} (optional)
+Whether to try to unmap target sectors where source has
+only zero. If true, and target unallocated sectors will read as zero,
+target image sectors will be unmapped; otherwise, zeroes will be
+written. Both will result in identical contents.
+Default is true. (Since 2.4)
+@end table
+
+@b{Since:}
+1.3
+
+@end deftp
+
+
+
+@deftp {Object} BlockDirtyBitmap
+
+
+
+@b{Members:}
+@table @asis
+@item @code{node: string}
+name of device/node which the bitmap is tracking
+@item @code{name: string}
+name of the dirty bitmap
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} BlockDirtyBitmapAdd
+
+
+
+@b{Members:}
+@table @asis
+@item @code{node: string}
+name of device/node which the bitmap is tracking
+@item @code{name: string}
+name of the dirty bitmap
+@item @code{granularity: int} (optional)
+the bitmap granularity, default is 64k for
+block-dirty-bitmap-add
+@item @code{persistent: boolean} (optional)
+the bitmap is persistent, i.e. it will be saved to the
+corresponding block device image file on its close. For now only
+Qcow2 disks support persistent bitmaps. Default is false for
+block-dirty-bitmap-add. (Since: 2.10)
+@item @code{autoload: boolean} (optional)
+ignored and deprecated since 2.12.
+Currently, all dirty tracking bitmaps are loaded from Qcow2 on
+open.
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} block-dirty-bitmap-add
+
+Create a dirty bitmap with a name on the node, and start tracking the writes.
+
+@b{Returns:}
+nothing on success
+If @code{node} is not a valid block device or node, DeviceNotFound
+If @code{name} is already taken, GenericError with an explanation
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "block-dirty-bitmap-add",
+ "arguments": @{ "node": "drive0", "name": "bitmap0" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-dirty-bitmap-remove
+
+Stop write tracking and remove the dirty bitmap that was created
+with block-dirty-bitmap-add. If the bitmap is persistent, remove it from its
+storage too.
+
+@b{Returns:}
+nothing on success
+If @code{node} is not a valid block device or node, DeviceNotFound
+If @code{name} is not found, GenericError with an explanation
+if @code{name} is frozen by an operation, GenericError
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "block-dirty-bitmap-remove",
+ "arguments": @{ "node": "drive0", "name": "bitmap0" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-dirty-bitmap-clear
+
+Clear (reset) a dirty bitmap on the device, so that an incremental
+backup from this point in time forward will only backup clusters
+modified after this clear operation.
+
+@b{Returns:}
+nothing on success
+If @code{node} is not a valid block device, DeviceNotFound
+If @code{name} is not found, GenericError with an explanation
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "block-dirty-bitmap-clear",
+ "arguments": @{ "node": "drive0", "name": "bitmap0" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BlockDirtyBitmapSha256
+
+SHA256 hash of dirty bitmap data
+
+@b{Members:}
+@table @asis
+@item @code{sha256: string}
+ASCII representation of SHA256 bitmap hash
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftypefn Command {} x-debug-block-dirty-bitmap-sha256
+
+Get bitmap SHA256
+
+@b{Returns:}
+BlockDirtyBitmapSha256 on success
+If @code{node} is not a valid block device, DeviceNotFound
+If @code{name} is not found or if hashing has failed, GenericError with an
+explanation
+
+@b{Since:}
+2.10
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-mirror
+
+Start mirroring a block device's writes to a new destination.
+
+@b{Arguments:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+The device name or node-name of a root node whose writes should be
+mirrored.
+@item @code{target: string}
+the id or node-name of the block device to mirror to. This mustn't be
+attached to guest.
+@item @code{replaces: string} (optional)
+with sync=full graph node name to be replaced by the new
+image when a whole image copy is done. This can be used to repair
+broken Quorum files.
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second
+@item @code{sync: MirrorSyncMode}
+what parts of the disk image should be copied to the destination
+(all the disk, only the sectors allocated in the topmost image, or
+only new I/O).
+@item @code{granularity: int} (optional)
+granularity of the dirty bitmap, default is 64K
+if the image format doesn't have clusters, 4K if the clusters
+are smaller than that, else the cluster size. Must be a
+power of 2 between 512 and 64M
+@item @code{buf-size: int} (optional)
+maximum amount of data in flight from source to
+target
+@item @code{on-source-error: BlockdevOnError} (optional)
+the action to take on an error on the source,
+default 'report'. 'stop' and 'enospc' can only be used
+if the block device supports io-status (see BlockInfo).
+@item @code{on-target-error: BlockdevOnError} (optional)
+the action to take on an error on the target,
+default 'report' (no limitations, since this applies to
+a different block device than @code{device}).
+@item @code{filter-node-name: string} (optional)
+the node name that should be assigned to the
+filter driver that the mirror job inserts into the graph
+above @code{device}. If this option is not given, a node name is
+autogenerated. (Since: 2.9)
+@end table
+
+@b{Returns:}
+nothing on success.
+
+@b{Since:}
+2.6
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-mirror",
+ "arguments": @{ "device": "ide-hd0",
+ "target": "target0",
+ "sync": "full" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block_set_io_throttle
+
+Change I/O throttle limits for a block drive.
+
+Since QEMU 2.4, each device with I/O limits is member of a throttle
+group.
+
+If two or more devices are members of the same group, the limits
+will apply to the combined I/O of the whole group in a round-robin
+fashion. Therefore, setting new I/O limits to a device will affect
+the whole group.
+
+The name of the group can be specified using the 'group' parameter.
+If the parameter is unset, it is assumed to be the current group of
+that device. If it's not in any group yet, the name of the device
+will be used as the name for its group.
+
+The 'group' parameter can also be used to move a device to a
+different group. In this case the limits specified in the parameters
+will be applied to the new group only.
+
+I/O limits can be disabled by setting all of them to 0. In this case
+the device will be removed from its group and the rest of its
+members will not be affected. The 'group' parameter is ignored.
+
+@b{Arguments:} the members of @code{BlockIOThrottle}
+
+@b{Returns:}
+Nothing on success
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "block_set_io_throttle",
+ "arguments": @{ "id": "virtio-blk-pci0/virtio-backend",
+ "bps": 0,
+ "bps_rd": 0,
+ "bps_wr": 0,
+ "iops": 512,
+ "iops_rd": 0,
+ "iops_wr": 0,
+ "bps_max": 0,
+ "bps_rd_max": 0,
+ "bps_wr_max": 0,
+ "iops_max": 0,
+ "iops_rd_max": 0,
+ "iops_wr_max": 0,
+ "bps_max_length": 0,
+ "iops_size": 0 @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "block_set_io_throttle",
+ "arguments": @{ "id": "ide0-1-0",
+ "bps": 1000000,
+ "bps_rd": 0,
+ "bps_wr": 0,
+ "iops": 0,
+ "iops_rd": 0,
+ "iops_wr": 0,
+ "bps_max": 8000000,
+ "bps_rd_max": 0,
+ "bps_wr_max": 0,
+ "iops_max": 0,
+ "iops_rd_max": 0,
+ "iops_wr_max": 0,
+ "bps_max_length": 60,
+ "iops_size": 0 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BlockIOThrottle
+
+A set of parameters describing block throttling.
+
+@b{Members:}
+@table @asis
+@item @code{device: string} (optional)
+Block device name (deprecated, use @code{id} instead)
+@item @code{id: string} (optional)
+The name or QOM path of the guest device (since: 2.8)
+@item @code{bps: int}
+total throughput limit in bytes per second
+@item @code{bps_rd: int}
+read throughput limit in bytes per second
+@item @code{bps_wr: int}
+write throughput limit in bytes per second
+@item @code{iops: int}
+total I/O operations per second
+@item @code{iops_rd: int}
+read I/O operations per second
+@item @code{iops_wr: int}
+write I/O operations per second
+@item @code{bps_max: int} (optional)
+total throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{bps_rd_max: int} (optional)
+read throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{bps_wr_max: int} (optional)
+write throughput limit during bursts,
+in bytes (Since 1.7)
+@item @code{iops_max: int} (optional)
+total I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{iops_rd_max: int} (optional)
+read I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{iops_wr_max: int} (optional)
+write I/O operations per second during bursts,
+in bytes (Since 1.7)
+@item @code{bps_max_length: int} (optional)
+maximum length of the @code{bps_max} burst
+period, in seconds. It must only
+be set if @code{bps_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{bps_rd_max_length: int} (optional)
+maximum length of the @code{bps_rd_max}
+burst period, in seconds. It must only
+be set if @code{bps_rd_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{bps_wr_max_length: int} (optional)
+maximum length of the @code{bps_wr_max}
+burst period, in seconds. It must only
+be set if @code{bps_wr_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{iops_max_length: int} (optional)
+maximum length of the @code{iops} burst
+period, in seconds. It must only
+be set if @code{iops_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{iops_rd_max_length: int} (optional)
+maximum length of the @code{iops_rd_max}
+burst period, in seconds. It must only
+be set if @code{iops_rd_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{iops_wr_max_length: int} (optional)
+maximum length of the @code{iops_wr_max}
+burst period, in seconds. It must only
+be set if @code{iops_wr_max} is set as well.
+Defaults to 1. (Since 2.6)
+@item @code{iops_size: int} (optional)
+an I/O size in bytes (Since 1.7)
+@item @code{group: string} (optional)
+throttle group name (Since 2.4)
+@end table
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftp {Object} ThrottleLimits
+
+Limit parameters for throttling.
+Since some limit combinations are illegal, limits should always be set in one
+transaction. All fields are optional. When setting limits, if a field is
+missing the current value is not changed.
+
+@b{Members:}
+@table @asis
+@item @code{iops-total: int} (optional)
+limit total I/O operations per second
+@item @code{iops-total-max: int} (optional)
+I/O operations burst
+@item @code{iops-total-max-length: int} (optional)
+length of the iops-total-max burst period, in seconds
+It must only be set if @code{iops-total-max} is set as well.
+@item @code{iops-read: int} (optional)
+limit read operations per second
+@item @code{iops-read-max: int} (optional)
+I/O operations read burst
+@item @code{iops-read-max-length: int} (optional)
+length of the iops-read-max burst period, in seconds
+It must only be set if @code{iops-read-max} is set as well.
+@item @code{iops-write: int} (optional)
+limit write operations per second
+@item @code{iops-write-max: int} (optional)
+I/O operations write burst
+@item @code{iops-write-max-length: int} (optional)
+length of the iops-write-max burst period, in seconds
+It must only be set if @code{iops-write-max} is set as well.
+@item @code{bps-total: int} (optional)
+limit total bytes per second
+@item @code{bps-total-max: int} (optional)
+total bytes burst
+@item @code{bps-total-max-length: int} (optional)
+length of the bps-total-max burst period, in seconds.
+It must only be set if @code{bps-total-max} is set as well.
+@item @code{bps-read: int} (optional)
+limit read bytes per second
+@item @code{bps-read-max: int} (optional)
+total bytes read burst
+@item @code{bps-read-max-length: int} (optional)
+length of the bps-read-max burst period, in seconds
+It must only be set if @code{bps-read-max} is set as well.
+@item @code{bps-write: int} (optional)
+limit write bytes per second
+@item @code{bps-write-max: int} (optional)
+total bytes write burst
+@item @code{bps-write-max-length: int} (optional)
+length of the bps-write-max burst period, in seconds
+It must only be set if @code{bps-write-max} is set as well.
+@item @code{iops-size: int} (optional)
+when limiting by iops max size of an I/O in bytes
+@end table
+
+@b{Since:}
+2.11
+
+@end deftp
+
+
+
+@deftypefn Command {} block-stream
+
+Copy data from a backing file into a block device.
+
+The block streaming operation is performed in the background until the entire
+backing file has been copied. This command returns immediately once streaming
+has started. The status of ongoing block streaming operations can be checked
+with query-block-jobs. The operation can be stopped before it has completed
+using the block-job-cancel command.
+
+The node that receives the data is called the top image, can be located in
+any part of the chain (but always above the base image; see below) and can be
+specified using its device or node name. Earlier qemu versions only allowed
+'device' to name the top level node; presence of the 'base-node' parameter
+during introspection can be used as a witness of the enhanced semantics
+of 'device'.
+
+If a base file is specified then sectors are not copied from that base file and
+its backing chain. When streaming completes the image file will have the base
+file as its backing file. This can be used to stream a subset of the backing
+file chain instead of flattening the entire image.
+
+On successful completion the image file is updated to drop the backing file
+and the BLOCK_JOB_COMPLETED event is emitted.
+
+@b{Arguments:}
+@table @asis
+@item @code{job-id: string} (optional)
+identifier for the newly-created block job. If
+omitted, the device name will be used. (Since 2.7)
+@item @code{device: string}
+the device or node name of the top image
+@item @code{base: string} (optional)
+the common backing file name.
+It cannot be set if @code{base-node} is also set.
+@item @code{base-node: string} (optional)
+the node name of the backing file.
+It cannot be set if @code{base} is also set. (Since 2.8)
+@item @code{backing-file: string} (optional)
+The backing file string to write into the top
+image. This filename is not validated.
+
+If a pathname string is such that it cannot be
+resolved by QEMU, that means that subsequent QMP or
+HMP commands must use node-names for the image in
+question, as filename lookup methods will fail.
+
+If not specified, QEMU will automatically determine
+the backing file string to use, or error out if there
+is no obvious choice. Care should be taken when
+specifying the string, to specify a valid filename or
+protocol.
+(Since 2.1)
+@item @code{speed: int} (optional)
+the maximum speed, in bytes per second
+@item @code{on-error: BlockdevOnError} (optional)
+the action to take on an error (default report).
+'stop' and 'enospc' can only be used if the block device
+supports io-status (see BlockInfo). Since 1.3.
+@end table
+
+@b{Returns:}
+Nothing on success. If @code{device} does not exist, DeviceNotFound.
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "block-stream",
+ "arguments": @{ "device": "virtio0",
+ "base": "/tmp/master.qcow2" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-set-speed
+
+Set maximum speed for a background block operation.
+
+This command can only be issued when there is an active block job.
+
+Throttling can be disabled by setting the speed to 0.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. This used to be a device name (hence
+the name of the parameter), but since QEMU 2.7 it can have
+other values.
+@item @code{speed: int}
+the maximum speed, in bytes per second, or 0 for unlimited.
+Defaults to 0.
+@end table
+
+@b{Returns:}
+Nothing on success
+If no background operation is active on this device, DeviceNotActive
+
+@b{Since:}
+1.1
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-cancel
+
+Stop an active background block operation.
+
+This command returns immediately after marking the active background block
+operation for cancellation. It is an error to call this command if no
+operation is in progress.
+
+The operation will cancel as soon as possible and then emit the
+BLOCK_JOB_CANCELLED event. Before that happens the job is still visible when
+enumerated using query-block-jobs.
+
+Note that if you issue 'block-job-cancel' after 'drive-mirror' has indicated
+(via the event BLOCK_JOB_READY) that the source and destination are
+synchronized, then the event triggered by this command changes to
+BLOCK_JOB_COMPLETED, to indicate that the mirroring has ended and the
+destination now has a point-in-time copy tied to the time of the cancellation.
+
+For streaming, the image file retains its backing file unless the streaming
+operation happens to complete just as it is being cancelled. A new streaming
+operation can be started at a later time to finish copying all data from the
+backing file.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. This used to be a device name (hence
+the name of the parameter), but since QEMU 2.7 it can have
+other values.
+@item @code{force: boolean} (optional)
+If true, and the job has already emitted the event BLOCK_JOB_READY,
+abandon the job immediately (even if it is paused) instead of waiting
+for the destination to complete its final synchronization (since 1.3)
+@end table
+
+@b{Returns:}
+Nothing on success
+If no background operation is active on this device, DeviceNotActive
+
+@b{Since:}
+1.1
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-pause
+
+Pause an active background block operation.
+
+This command returns immediately after marking the active background block
+operation for pausing. It is an error to call this command if no
+operation is in progress. Pausing an already paused job has no cumulative
+effect; a single block-job-resume command will resume the job.
+
+The operation will pause as soon as possible. No event is emitted when
+the operation is actually paused. Cancelling a paused job automatically
+resumes it.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. This used to be a device name (hence
+the name of the parameter), but since QEMU 2.7 it can have
+other values.
+@end table
+
+@b{Returns:}
+Nothing on success
+If no background operation is active on this device, DeviceNotActive
+
+@b{Since:}
+1.3
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-resume
+
+Resume an active background block operation.
+
+This command returns immediately after resuming a paused background block
+operation. It is an error to call this command if no operation is in
+progress. Resuming an already running job is not an error.
+
+This command also clears the error status of the job.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. This used to be a device name (hence
+the name of the parameter), but since QEMU 2.7 it can have
+other values.
+@end table
+
+@b{Returns:}
+Nothing on success
+If no background operation is active on this device, DeviceNotActive
+
+@b{Since:}
+1.3
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-complete
+
+Manually trigger completion of an active background block operation. This
+is supported for drive mirroring, where it also switches the device to
+write to the target path only. The ability to complete is signaled with
+a BLOCK_JOB_READY event.
+
+This command completes an active background block operation synchronously.
+The ordering of this command's return with the BLOCK_JOB_COMPLETED event
+is not defined. Note that if an I/O error occurs during the processing of
+this command: 1) the command itself will fail; 2) the error will be processed
+according to the rerror/werror arguments that were specified when starting
+the operation.
+
+A cancelled or paused job cannot be completed.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. This used to be a device name (hence
+the name of the parameter), but since QEMU 2.7 it can have
+other values.
+@end table
+
+@b{Returns:}
+Nothing on success
+If no background operation is active on this device, DeviceNotActive
+
+@b{Since:}
+1.3
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-dismiss
+
+For jobs that have already concluded, remove them from the block-job-query
+list. This command only needs to be run for jobs which were started with
+QEMU 2.12+ job lifetime management semantics.
+
+This command will refuse to operate on any job that has not yet reached
+its terminal state, BLOCK_JOB_STATUS_CONCLUDED. For jobs that make use of
+BLOCK_JOB_READY event, block-job-cancel or block-job-complete will still need
+to be used as appropriate.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+The job identifier.
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+2.12
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-job-finalize
+
+Once a job that has manual=true reaches the pending state, it can be
+instructed to finalize any graph changes and do any necessary cleanup
+via this command.
+For jobs in a transaction, instructing one job to finalize will force
+ALL jobs in the transaction to finalize, so it is only necessary to instruct
+a single member job to finalize.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+The job identifier.
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+2.12
+
+@end deftypefn
+
+
+
+@deftp {Enum} BlockdevDiscardOptions
+
+Determines how to handle discard requests.
+
+@b{Values:}
+@table @asis
+@item @code{ignore}
+Ignore the request
+@item @code{unmap}
+Forward as an unmap request
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevDetectZeroesOptions
+
+Describes the operation mode for the automatic conversion of plain
+zero writes by the OS to driver specific optimized zero write commands.
+
+@b{Values:}
+@table @asis
+@item @code{off}
+Disabled (default)
+@item @code{on}
+Enabled
+@item @code{unmap}
+Enabled and even try to unmap blocks if possible. This requires
+also that @code{BlockdevDiscardOptions} is set to unmap for this device.
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevAioOptions
+
+Selects the AIO backend to handle I/O requests
+
+@b{Values:}
+@table @asis
+@item @code{threads}
+Use qemu's thread pool
+@item @code{native}
+Use native AIO backend (only Linux and Windows)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCacheOptions
+
+Includes cache-related options for block devices
+
+@b{Members:}
+@table @asis
+@item @code{direct: boolean} (optional)
+enables use of O_DIRECT (bypass the host page cache;
+default: false)
+@item @code{no-flush: boolean} (optional)
+ignore any flush requests for the device (default:
+false)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevDriver
+
+Drivers that are supported in block device operations.
+
+@b{Values:}
+@table @asis
+@item @code{vxhs}
+Since 2.10
+@item @code{throttle}
+Since 2.11
+@item @code{nvme}
+Since 2.12
+@item @code{blkdebug}
+Not documented
+@item @code{blkverify}
+Not documented
+@item @code{bochs}
+Not documented
+@item @code{cloop}
+Not documented
+@item @code{dmg}
+Not documented
+@item @code{file}
+Not documented
+@item @code{ftp}
+Not documented
+@item @code{ftps}
+Not documented
+@item @code{gluster}
+Not documented
+@item @code{host_cdrom}
+Not documented
+@item @code{host_device}
+Not documented
+@item @code{http}
+Not documented
+@item @code{https}
+Not documented
+@item @code{iscsi}
+Not documented
+@item @code{luks}
+Not documented
+@item @code{nbd}
+Not documented
+@item @code{nfs}
+Not documented
+@item @code{null-aio}
+Not documented
+@item @code{null-co}
+Not documented
+@item @code{parallels}
+Not documented
+@item @code{qcow}
+Not documented
+@item @code{qcow2}
+Not documented
+@item @code{qed}
+Not documented
+@item @code{quorum}
+Not documented
+@item @code{raw}
+Not documented
+@item @code{rbd}
+Not documented
+@item @code{replication}
+Not documented
+@item @code{sheepdog}
+Not documented
+@item @code{ssh}
+Not documented
+@item @code{vdi}
+Not documented
+@item @code{vhdx}
+Not documented
+@item @code{vmdk}
+Not documented
+@item @code{vpc}
+Not documented
+@item @code{vvfat}
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsFile
+
+Driver specific block device options for the file backend.
+
+@b{Members:}
+@table @asis
+@item @code{filename: string}
+path to the image file
+@item @code{pr-manager: string} (optional)
+the id for the object that will handle persistent reservations
+for this device (default: none, forward the commands via SG_IO;
+since 2.11)
+@item @code{aio: BlockdevAioOptions} (optional)
+AIO backend (default: threads) (since: 2.8)
+@item @code{locking: OnOffAuto} (optional)
+whether to enable file locking. If set to 'auto', only enable
+when Open File Descriptor (OFD) locking API is available
+(default: auto, since 2.10)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsNull
+
+Driver specific block device options for the null backend.
+
+@b{Members:}
+@table @asis
+@item @code{size: int} (optional)
+size of the device in bytes.
+@item @code{latency-ns: int} (optional)
+emulated latency (in nanoseconds) in processing
+requests. Default to zero which completes requests immediately.
+(Since 2.4)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsNVMe
+
+Driver specific block device options for the NVMe backend.
+
+@b{Members:}
+@table @asis
+@item @code{device: string}
+controller address of the NVMe device.
+@item @code{namespace: int}
+namespace number of the device, starting from 1.
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsVVFAT
+
+Driver specific block device options for the vvfat protocol.
+
+@b{Members:}
+@table @asis
+@item @code{dir: string}
+directory to be exported as FAT image
+@item @code{fat-type: int} (optional)
+FAT type: 12, 16 or 32
+@item @code{floppy: boolean} (optional)
+whether to export a floppy image (true) or
+partitioned hard disk (false; default)
+@item @code{label: string} (optional)
+set the volume label, limited to 11 bytes. FAT16 and
+FAT32 traditionally have some restrictions on labels, which are
+ignored by most operating systems. Defaults to "QEMU VVFAT".
+(since 2.4)
+@item @code{rw: boolean} (optional)
+whether to allow write operations (default: false)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsGenericFormat
+
+Driver specific block device options for image format that have no option
+besides their data source.
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+reference to or definition of the data source block device
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsLUKS
+
+Driver specific block device options for LUKS.
+
+@b{Members:}
+@table @asis
+@item @code{key-secret: string} (optional)
+the ID of a QCryptoSecret object providing
+the decryption key (since 2.6). Mandatory except when
+doing a metadata-only probe of the image.
+@item The members of @code{BlockdevOptionsGenericFormat}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsGenericCOWFormat
+
+Driver specific block device options for image format that have no option
+besides their data source and an optional backing file.
+
+@b{Members:}
+@table @asis
+@item @code{backing: BlockdevRefOrNull} (optional)
+reference to or definition of the backing file block
+device, null disables the backing file entirely.
+Defaults to the backing file stored the image file.
+@item The members of @code{BlockdevOptionsGenericFormat}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} Qcow2OverlapCheckMode
+
+General overlap check modes.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+Do not perform any checks
+@item @code{constant}
+Perform only checks which can be done in constant time and
+without reading anything from disk
+@item @code{cached}
+Perform only checks which can be done without reading anything
+from disk
+@item @code{all}
+Perform all available overlap checks
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} Qcow2OverlapCheckFlags
+
+Structure of flags for each metadata structure. Setting a field to 'true'
+makes qemu guard that structure against unintended overwriting. The default
+value is chosen according to the template given.
+
+@b{Members:}
+@table @asis
+@item @code{template: Qcow2OverlapCheckMode} (optional)
+Specifies a template mode which can be adjusted using the other
+flags, defaults to 'cached'
+@item @code{main-header: boolean} (optional)
+Not documented
+@item @code{active-l1: boolean} (optional)
+Not documented
+@item @code{active-l2: boolean} (optional)
+Not documented
+@item @code{refcount-table: boolean} (optional)
+Not documented
+@item @code{refcount-block: boolean} (optional)
+Not documented
+@item @code{snapshot-table: boolean} (optional)
+Not documented
+@item @code{inactive-l1: boolean} (optional)
+Not documented
+@item @code{inactive-l2: boolean} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Alternate} Qcow2OverlapChecks
+
+Specifies which metadata structures should be guarded against unintended
+overwriting.
+
+@b{Members:}
+@table @asis
+@item @code{flags: Qcow2OverlapCheckFlags}
+set of flags for separate specification of each metadata structure
+type
+@item @code{mode: Qcow2OverlapCheckMode}
+named mode which chooses a specific set of flags
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevQcowEncryptionFormat
+
+
+
+@b{Values:}
+@table @asis
+@item @code{aes}
+AES-CBC with plain64 initialization vectors
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevQcowEncryption
+
+
+
+@b{Members:}
+@table @asis
+@item @code{format: BlockdevQcowEncryptionFormat}
+Not documented
+@item The members of @code{QCryptoBlockOptionsQCow} when @code{format} is @t{"aes"}
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsQcow
+
+Driver specific block device options for qcow.
+
+@b{Members:}
+@table @asis
+@item @code{encrypt: BlockdevQcowEncryption} (optional)
+Image decryption options. Mandatory for
+encrypted images, except when doing a metadata-only
+probe of the image.
+@item The members of @code{BlockdevOptionsGenericCOWFormat}
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevQcow2EncryptionFormat
+
+
+
+@b{Values:}
+@table @asis
+@item @code{aes}
+AES-CBC with plain64 initialization venctors
+@item @code{luks}
+Not documented
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevQcow2Encryption
+
+
+
+@b{Members:}
+@table @asis
+@item @code{format: BlockdevQcow2EncryptionFormat}
+Not documented
+@item The members of @code{QCryptoBlockOptionsQCow} when @code{format} is @t{"aes"}
+@item The members of @code{QCryptoBlockOptionsLUKS} when @code{format} is @t{"luks"}
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsQcow2
+
+Driver specific block device options for qcow2.
+
+@b{Members:}
+@table @asis
+@item @code{lazy-refcounts: boolean} (optional)
+whether to enable the lazy refcounts
+feature (default is taken from the image file)
+@item @code{pass-discard-request: boolean} (optional)
+whether discard requests to the qcow2
+device should be forwarded to the data source
+@item @code{pass-discard-snapshot: boolean} (optional)
+whether discard requests for the data source
+should be issued when a snapshot operation (e.g.
+deleting a snapshot) frees clusters in the qcow2 file
+@item @code{pass-discard-other: boolean} (optional)
+whether discard requests for the data source
+should be issued on other occasions where a cluster
+gets freed
+@item @code{overlap-check: Qcow2OverlapChecks} (optional)
+which overlap checks to perform for writes
+to the image, defaults to 'cached' (since 2.2)
+@item @code{cache-size: int} (optional)
+the maximum total size of the L2 table and
+refcount block caches in bytes (since 2.2)
+@item @code{l2-cache-size: int} (optional)
+the maximum size of the L2 table cache in
+bytes (since 2.2)
+@item @code{l2-cache-entry-size: int} (optional)
+the size of each entry in the L2 cache in
+bytes. It must be a power of two between 512
+and the cluster size. The default value is
+the cluster size (since 2.12)
+@item @code{refcount-cache-size: int} (optional)
+the maximum size of the refcount block cache
+in bytes (since 2.2)
+@item @code{cache-clean-interval: int} (optional)
+clean unused entries in the L2 and refcount
+caches. The interval is in seconds. The default value
+is 0 and it disables this feature (since 2.5)
+@item @code{encrypt: BlockdevQcow2Encryption} (optional)
+Image decryption options. Mandatory for
+encrypted images, except when doing a metadata-only
+probe of the image. (since 2.10)
+@item The members of @code{BlockdevOptionsGenericCOWFormat}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} SshHostKeyCheckMode
+
+@code{none} Don't check the host key at all
+@code{hash} Compare the host key with a given hash
+@code{known_hosts} Check the host key against the known_hosts file
+
+@b{Values:}
+@table @asis
+@item @code{none}
+Not documented
+@item @code{hash}
+Not documented
+@item @code{known_hosts}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} SshHostKeyCheckHashType
+
+@code{md5} The given hash is an md5 hash
+@code{sha1} The given hash is an sha1 hash
+
+@b{Values:}
+@table @asis
+@item @code{md5}
+Not documented
+@item @code{sha1}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SshHostKeyHash
+
+@code{type} The hash algorithm used for the hash
+@code{hash} The expected hash value
+
+@b{Members:}
+@table @asis
+@item @code{type: SshHostKeyCheckHashType}
+Not documented
+@item @code{hash: string}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SshHostKeyDummy
+
+For those union branches that don't need additional fields.
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SshHostKeyCheck
+
+
+
+@b{Members:}
+@table @asis
+@item @code{mode: SshHostKeyCheckMode}
+Not documented
+@item The members of @code{SshHostKeyDummy} when @code{mode} is @t{"none"}
+@item The members of @code{SshHostKeyHash} when @code{mode} is @t{"hash"}
+@item The members of @code{SshHostKeyDummy} when @code{mode} is @t{"known_hosts"}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsSsh
+
+
+
+@b{Members:}
+@table @asis
+@item @code{server: InetSocketAddress}
+host address
+@item @code{path: string}
+path to the image on the host
+@item @code{user: string} (optional)
+user as which to connect, defaults to current
+local user name
+@item @code{host-key-check: SshHostKeyCheck} (optional)
+Defines how and what to check the host key against
+(default: known_hosts)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} BlkdebugEvent
+
+Trigger events supported by blkdebug.
+
+@b{Values:}
+@table @asis
+@item @code{l1_shrink_write_table}
+write zeros to the l1 table to shrink image.
+(since 2.11)
+@item @code{l1_shrink_free_l2_clusters}
+discard the l2 tables. (since 2.11)
+@item @code{cor_write}
+a write due to copy-on-read (since 2.11)
+@item @code{l1_update}
+Not documented
+@item @code{l1_grow_alloc_table}
+Not documented
+@item @code{l1_grow_write_table}
+Not documented
+@item @code{l1_grow_activate_table}
+Not documented
+@item @code{l2_load}
+Not documented
+@item @code{l2_update}
+Not documented
+@item @code{l2_update_compressed}
+Not documented
+@item @code{l2_alloc_cow_read}
+Not documented
+@item @code{l2_alloc_write}
+Not documented
+@item @code{read_aio}
+Not documented
+@item @code{read_backing_aio}
+Not documented
+@item @code{read_compressed}
+Not documented
+@item @code{write_aio}
+Not documented
+@item @code{write_compressed}
+Not documented
+@item @code{vmstate_load}
+Not documented
+@item @code{vmstate_save}
+Not documented
+@item @code{cow_read}
+Not documented
+@item @code{cow_write}
+Not documented
+@item @code{reftable_load}
+Not documented
+@item @code{reftable_grow}
+Not documented
+@item @code{reftable_update}
+Not documented
+@item @code{refblock_load}
+Not documented
+@item @code{refblock_update}
+Not documented
+@item @code{refblock_update_part}
+Not documented
+@item @code{refblock_alloc}
+Not documented
+@item @code{refblock_alloc_hookup}
+Not documented
+@item @code{refblock_alloc_write}
+Not documented
+@item @code{refblock_alloc_write_blocks}
+Not documented
+@item @code{refblock_alloc_write_table}
+Not documented
+@item @code{refblock_alloc_switch_table}
+Not documented
+@item @code{cluster_alloc}
+Not documented
+@item @code{cluster_alloc_bytes}
+Not documented
+@item @code{cluster_free}
+Not documented
+@item @code{flush_to_os}
+Not documented
+@item @code{flush_to_disk}
+Not documented
+@item @code{pwritev_rmw_head}
+Not documented
+@item @code{pwritev_rmw_after_head}
+Not documented
+@item @code{pwritev_rmw_tail}
+Not documented
+@item @code{pwritev_rmw_after_tail}
+Not documented
+@item @code{pwritev}
+Not documented
+@item @code{pwritev_zero}
+Not documented
+@item @code{pwritev_done}
+Not documented
+@item @code{empty_image_prepare}
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlkdebugInjectErrorOptions
+
+Describes a single error injection for blkdebug.
+
+@b{Members:}
+@table @asis
+@item @code{event: BlkdebugEvent}
+trigger event
+@item @code{state: int} (optional)
+the state identifier blkdebug needs to be in to
+actually trigger the event; defaults to "any"
+@item @code{errno: int} (optional)
+error identifier (errno) to be returned; defaults to
+EIO
+@item @code{sector: int} (optional)
+specifies the sector index which has to be affected
+in order to actually trigger the event; defaults to "any
+sector"
+@item @code{once: boolean} (optional)
+disables further events after this one has been
+triggered; defaults to false
+@item @code{immediately: boolean} (optional)
+fail immediately; defaults to false
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlkdebugSetStateOptions
+
+Describes a single state-change event for blkdebug.
+
+@b{Members:}
+@table @asis
+@item @code{event: BlkdebugEvent}
+trigger event
+@item @code{state: int} (optional)
+the current state identifier blkdebug needs to be in;
+defaults to "any"
+@item @code{new_state: int}
+the state identifier blkdebug is supposed to assume if
+this event is triggered
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsBlkdebug
+
+Driver specific block device options for blkdebug.
+
+@b{Members:}
+@table @asis
+@item @code{image: BlockdevRef}
+underlying raw block device (or image file)
+@item @code{config: string} (optional)
+filename of the configuration file
+@item @code{align: int} (optional)
+required alignment for requests in bytes, must be
+positive power of 2, or 0 for default
+@item @code{max-transfer: int} (optional)
+maximum size for I/O transfers in bytes, must be
+positive multiple of @code{align} and of the underlying
+file's request alignment (but need not be a power of
+2), or 0 for default (since 2.10)
+@item @code{opt-write-zero: int} (optional)
+preferred alignment for write zero requests in bytes,
+must be positive multiple of @code{align} and of the
+underlying file's request alignment (but need not be a
+power of 2), or 0 for default (since 2.10)
+@item @code{max-write-zero: int} (optional)
+maximum size for write zero requests in bytes, must be
+positive multiple of @code{align}, of @code{opt-write-zero}, and of
+the underlying file's request alignment (but need not
+be a power of 2), or 0 for default (since 2.10)
+@item @code{opt-discard: int} (optional)
+preferred alignment for discard requests in bytes, must
+be positive multiple of @code{align} and of the underlying
+file's request alignment (but need not be a power of
+2), or 0 for default (since 2.10)
+@item @code{max-discard: int} (optional)
+maximum size for discard requests in bytes, must be
+positive multiple of @code{align}, of @code{opt-discard}, and of
+the underlying file's request alignment (but need not
+be a power of 2), or 0 for default (since 2.10)
+@item @code{inject-error: array of BlkdebugInjectErrorOptions} (optional)
+array of error injection descriptions
+@item @code{set-state: array of BlkdebugSetStateOptions} (optional)
+array of state-change descriptions
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsBlkverify
+
+Driver specific block device options for blkverify.
+
+@b{Members:}
+@table @asis
+@item @code{test: BlockdevRef}
+block device to be tested
+@item @code{raw: BlockdevRef}
+raw image used for verification
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} QuorumReadPattern
+
+An enumeration of quorum read patterns.
+
+@b{Values:}
+@table @asis
+@item @code{quorum}
+read all the children and do a quorum vote on reads
+@item @code{fifo}
+read only from the first child that has not failed
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsQuorum
+
+Driver specific block device options for Quorum
+
+@b{Members:}
+@table @asis
+@item @code{blkverify: boolean} (optional)
+true if the driver must print content mismatch
+set to false by default
+@item @code{children: array of BlockdevRef}
+the children block devices to use
+@item @code{vote-threshold: int}
+the vote limit under which a read will fail
+@item @code{rewrite-corrupted: boolean} (optional)
+rewrite corrupted data when quorum is reached
+(Since 2.1)
+@item @code{read-pattern: QuorumReadPattern} (optional)
+choose read pattern and set to quorum by default
+(Since 2.2)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsGluster
+
+Driver specific block device options for Gluster
+
+@b{Members:}
+@table @asis
+@item @code{volume: string}
+name of gluster volume where VM image resides
+@item @code{path: string}
+absolute path to image file in gluster volume
+@item @code{server: array of SocketAddress}
+gluster servers description
+@item @code{debug: int} (optional)
+libgfapi log level (default '4' which is Error)
+(Since 2.8)
+@item @code{logfile: string} (optional)
+libgfapi log file (default /dev/stderr) (Since 2.8)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} IscsiTransport
+
+An enumeration of libiscsi transport types
+
+@b{Values:}
+@table @asis
+@item @code{tcp}
+Not documented
+@item @code{iser}
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} IscsiHeaderDigest
+
+An enumeration of header digests supported by libiscsi
+
+@b{Values:}
+@table @asis
+@item @code{crc32c}
+Not documented
+@item @code{none}
+Not documented
+@item @code{crc32c-none}
+Not documented
+@item @code{none-crc32c}
+Not documented
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsIscsi
+
+
+
+@b{Members:}
+@table @asis
+@item @code{transport: IscsiTransport}
+The iscsi transport type
+@item @code{portal: string}
+The address of the iscsi portal
+@item @code{target: string}
+The target iqn name
+@item @code{lun: int} (optional)
+LUN to connect to. Defaults to 0.
+@item @code{user: string} (optional)
+User name to log in with. If omitted, no CHAP
+authentication is performed.
+@item @code{password-secret: string} (optional)
+The ID of a QCryptoSecret object providing
+the password for the login. This option is required if
+@code{user} is specified.
+@item @code{initiator-name: string} (optional)
+The iqn name we want to identify to the target
+as. If this option is not specified, an initiator name is
+generated automatically.
+@item @code{header-digest: IscsiHeaderDigest} (optional)
+The desired header digest. Defaults to
+none-crc32c.
+@item @code{timeout: int} (optional)
+Timeout in seconds after which a request will
+timeout. 0 means no timeout and is the default.
+@end table
+Driver specific block device options for iscsi
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsRbd
+
+
+
+@b{Members:}
+@table @asis
+@item @code{pool: string}
+Ceph pool name.
+@item @code{image: string}
+Image name in the Ceph pool.
+@item @code{conf: string} (optional)
+path to Ceph configuration file. Values
+in the configuration file will be overridden by
+options specified via QAPI.
+@item @code{snapshot: string} (optional)
+Ceph snapshot name.
+@item @code{user: string} (optional)
+Ceph id name.
+@item @code{server: array of InetSocketAddressBase} (optional)
+Monitor host address and port. This maps
+to the "mon_host" Ceph option.
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsSheepdog
+
+Driver specific block device options for sheepdog
+
+@b{Members:}
+@table @asis
+@item @code{vdi: string}
+Virtual disk image name
+@item @code{server: SocketAddress}
+The Sheepdog server to connect to
+@item @code{snap-id: int} (optional)
+Snapshot ID
+@item @code{tag: string} (optional)
+Snapshot tag name
+@end table
+Only one of @code{snap-id} and @code{tag} may be present.
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} ReplicationMode
+
+An enumeration of replication modes.
+
+@b{Values:}
+@table @asis
+@item @code{primary}
+Primary mode, the vm's state will be sent to secondary QEMU.
+@item @code{secondary}
+Secondary mode, receive the vm's state from primary QEMU.
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsReplication
+
+Driver specific block device options for replication
+
+@b{Members:}
+@table @asis
+@item @code{mode: ReplicationMode}
+the replication mode
+@item @code{top-id: string} (optional)
+In secondary mode, node name or device ID of the root
+node who owns the replication node chain. Must not be given in
+primary mode.
+@item The members of @code{BlockdevOptionsGenericFormat}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Enum} NFSTransport
+
+An enumeration of NFS transport types
+
+@b{Values:}
+@table @asis
+@item @code{inet}
+TCP transport
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} NFSServer
+
+Captures the address of the socket
+
+@b{Members:}
+@table @asis
+@item @code{type: NFSTransport}
+transport type used for NFS (only TCP supported)
+@item @code{host: string}
+host address for NFS server
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsNfs
+
+Driver specific block device option for NFS
+
+@b{Members:}
+@table @asis
+@item @code{server: NFSServer}
+host address
+@item @code{path: string}
+path of the image on the host
+@item @code{user: int} (optional)
+UID value to use when talking to the
+server (defaults to 65534 on Windows and getuid()
+on unix)
+@item @code{group: int} (optional)
+GID value to use when talking to the
+server (defaults to 65534 on Windows and getgid()
+in unix)
+@item @code{tcp-syn-count: int} (optional)
+number of SYNs during the session
+establishment (defaults to libnfs default)
+@item @code{readahead-size: int} (optional)
+set the readahead size in bytes (defaults
+to libnfs default)
+@item @code{page-cache-size: int} (optional)
+set the pagecache size in bytes (defaults
+to libnfs default)
+@item @code{debug: int} (optional)
+set the NFS debug level (max 2) (defaults
+to libnfs default)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsCurlBase
+
+Driver specific block device options shared by all protocols supported by the
+curl backend.
+
+@b{Members:}
+@table @asis
+@item @code{url: string}
+URL of the image file
+@item @code{readahead: int} (optional)
+Size of the read-ahead cache; must be a multiple of
+512 (defaults to 256 kB)
+@item @code{timeout: int} (optional)
+Timeout for connections, in seconds (defaults to 5)
+@item @code{username: string} (optional)
+Username for authentication (defaults to none)
+@item @code{password-secret: string} (optional)
+ID of a QCryptoSecret object providing a password
+for authentication (defaults to no password)
+@item @code{proxy-username: string} (optional)
+Username for proxy authentication (defaults to none)
+@item @code{proxy-password-secret: string} (optional)
+ID of a QCryptoSecret object providing a password
+for proxy authentication (defaults to no password)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsCurlHttp
+
+Driver specific block device options for HTTP connections over the curl
+backend. URLs must start with "http://".
+
+@b{Members:}
+@table @asis
+@item @code{cookie: string} (optional)
+List of cookies to set; format is
+"name1=content1; name2=content2;" as explained by
+CURLOPT_COOKIE(3). Defaults to no cookies.
+@item @code{cookie-secret: string} (optional)
+ID of a QCryptoSecret object providing the cookie data in a
+secure way. See @code{cookie} for the format. (since 2.10)
+@item The members of @code{BlockdevOptionsCurlBase}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsCurlHttps
+
+Driver specific block device options for HTTPS connections over the curl
+backend. URLs must start with "https://".
+
+@b{Members:}
+@table @asis
+@item @code{cookie: string} (optional)
+List of cookies to set; format is
+"name1=content1; name2=content2;" as explained by
+CURLOPT_COOKIE(3). Defaults to no cookies.
+@item @code{sslverify: boolean} (optional)
+Whether to verify the SSL certificate's validity (defaults to
+true)
+@item @code{cookie-secret: string} (optional)
+ID of a QCryptoSecret object providing the cookie data in a
+secure way. See @code{cookie} for the format. (since 2.10)
+@item The members of @code{BlockdevOptionsCurlBase}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsCurlFtp
+
+Driver specific block device options for FTP connections over the curl
+backend. URLs must start with "ftp://".
+
+@b{Members:}
+@table @asis
+@item The members of @code{BlockdevOptionsCurlBase}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsCurlFtps
+
+Driver specific block device options for FTPS connections over the curl
+backend. URLs must start with "ftps://".
+
+@b{Members:}
+@table @asis
+@item @code{sslverify: boolean} (optional)
+Whether to verify the SSL certificate's validity (defaults to
+true)
+@item The members of @code{BlockdevOptionsCurlBase}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsNbd
+
+Driver specific block device options for NBD.
+
+@b{Members:}
+@table @asis
+@item @code{server: SocketAddress}
+NBD server address
+@item @code{exp: string} (optional)
+export name
+@item @code{tls-creds: string} (optional)
+TLS credentials ID
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsRaw
+
+Driver specific block device options for the raw driver.
+
+@b{Members:}
+@table @asis
+@item @code{offset: int} (optional)
+position where the block device starts
+@item @code{size: int} (optional)
+the assumed size of the device
+@item The members of @code{BlockdevOptionsGenericFormat}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsVxHS
+
+Driver specific block device options for VxHS
+
+@b{Members:}
+@table @asis
+@item @code{vdisk-id: string}
+UUID of VxHS volume
+@item @code{server: InetSocketAddressBase}
+vxhs server IP, port
+@item @code{tls-creds: string} (optional)
+TLS credentials ID
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptionsThrottle
+
+Driver specific block device options for the throttle driver
+
+@b{Members:}
+@table @asis
+@item @code{throttle-group: string}
+the name of the throttle-group object to use. It
+must already exist.
+@item @code{file: BlockdevRef}
+reference to or definition of the data source block device
+@end table
+
+@b{Since:}
+2.11
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevOptions
+
+Options for creating a block device. Many options are available for all
+block devices, independent of the block driver:
+
+@b{Members:}
+@table @asis
+@item @code{driver: BlockdevDriver}
+block driver name
+@item @code{node-name: string} (optional)
+the node name of the new node (Since 2.0).
+This option is required on the top level of blockdev-add.
+@item @code{discard: BlockdevDiscardOptions} (optional)
+discard-related options (default: ignore)
+@item @code{cache: BlockdevCacheOptions} (optional)
+cache-related options
+@item @code{read-only: boolean} (optional)
+whether the block device should be read-only (default: false).
+Note that some block drivers support only read-only access,
+either generally or in certain configurations. In this case,
+the default value does not work and the option must be
+specified explicitly.
+@item @code{detect-zeroes: BlockdevDetectZeroesOptions} (optional)
+detect and optimize zero writes (Since 2.1)
+(default: off)
+@item @code{force-share: boolean} (optional)
+force share all permission on added nodes.
+Requires read-only=true. (Since 2.10)
+@item The members of @code{BlockdevOptionsBlkdebug} when @code{driver} is @t{"blkdebug"}
+@item The members of @code{BlockdevOptionsBlkverify} when @code{driver} is @t{"blkverify"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"bochs"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"cloop"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"dmg"}
+@item The members of @code{BlockdevOptionsFile} when @code{driver} is @t{"file"}
+@item The members of @code{BlockdevOptionsCurlFtp} when @code{driver} is @t{"ftp"}
+@item The members of @code{BlockdevOptionsCurlFtps} when @code{driver} is @t{"ftps"}
+@item The members of @code{BlockdevOptionsGluster} when @code{driver} is @t{"gluster"}
+@item The members of @code{BlockdevOptionsFile} when @code{driver} is @t{"host_cdrom"}
+@item The members of @code{BlockdevOptionsFile} when @code{driver} is @t{"host_device"}
+@item The members of @code{BlockdevOptionsCurlHttp} when @code{driver} is @t{"http"}
+@item The members of @code{BlockdevOptionsCurlHttps} when @code{driver} is @t{"https"}
+@item The members of @code{BlockdevOptionsIscsi} when @code{driver} is @t{"iscsi"}
+@item The members of @code{BlockdevOptionsLUKS} when @code{driver} is @t{"luks"}
+@item The members of @code{BlockdevOptionsNbd} when @code{driver} is @t{"nbd"}
+@item The members of @code{BlockdevOptionsNfs} when @code{driver} is @t{"nfs"}
+@item The members of @code{BlockdevOptionsNull} when @code{driver} is @t{"null-aio"}
+@item The members of @code{BlockdevOptionsNull} when @code{driver} is @t{"null-co"}
+@item The members of @code{BlockdevOptionsNVMe} when @code{driver} is @t{"nvme"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"parallels"}
+@item The members of @code{BlockdevOptionsQcow2} when @code{driver} is @t{"qcow2"}
+@item The members of @code{BlockdevOptionsQcow} when @code{driver} is @t{"qcow"}
+@item The members of @code{BlockdevOptionsGenericCOWFormat} when @code{driver} is @t{"qed"}
+@item The members of @code{BlockdevOptionsQuorum} when @code{driver} is @t{"quorum"}
+@item The members of @code{BlockdevOptionsRaw} when @code{driver} is @t{"raw"}
+@item The members of @code{BlockdevOptionsRbd} when @code{driver} is @t{"rbd"}
+@item The members of @code{BlockdevOptionsReplication} when @code{driver} is @t{"replication"}
+@item The members of @code{BlockdevOptionsSheepdog} when @code{driver} is @t{"sheepdog"}
+@item The members of @code{BlockdevOptionsSsh} when @code{driver} is @t{"ssh"}
+@item The members of @code{BlockdevOptionsThrottle} when @code{driver} is @t{"throttle"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"vdi"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"vhdx"}
+@item The members of @code{BlockdevOptionsGenericCOWFormat} when @code{driver} is @t{"vmdk"}
+@item The members of @code{BlockdevOptionsGenericFormat} when @code{driver} is @t{"vpc"}
+@item The members of @code{BlockdevOptionsVVFAT} when @code{driver} is @t{"vvfat"}
+@item The members of @code{BlockdevOptionsVxHS} when @code{driver} is @t{"vxhs"}
+@end table
+Remaining options are determined by the block driver.
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Alternate} BlockdevRef
+
+Reference to a block device.
+
+@b{Members:}
+@table @asis
+@item @code{definition: BlockdevOptions}
+defines a new block device inline
+@item @code{reference: string}
+references the ID of an existing block device
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Alternate} BlockdevRefOrNull
+
+Reference to a block device.
+
+@b{Members:}
+@table @asis
+@item @code{definition: BlockdevOptions}
+defines a new block device inline
+@item @code{reference: string}
+references the ID of an existing block device.
+An empty string means that no block device should
+be referenced. Deprecated; use null instead.
+@item @code{null: null}
+No block device should be referenced (since 2.10)
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftypefn Command {} blockdev-add
+
+Creates a new block device. If the @code{id} option is given at the top level, a
+BlockBackend will be created; otherwise, @code{node-name} is mandatory at the top
+level and no BlockBackend will be created.
+
+@b{Arguments:} the members of @code{BlockdevOptions}
+
+@b{Since:}
+2.9
+
+@b{Example:}
+@example
+1.
+-> @{ "execute": "blockdev-add",
+ "arguments": @{
+ "driver": "qcow2",
+ "node-name": "test1",
+ "file": @{
+ "driver": "file",
+ "filename": "test.qcow2"
+ @}
+ @}
+ @}
+<- @{ "return": @{@} @}
+
+2.
+-> @{ "execute": "blockdev-add",
+ "arguments": @{
+ "driver": "qcow2",
+ "node-name": "node0",
+ "discard": "unmap",
+ "cache": @{
+ "direct": true
+ @},
+ "file": @{
+ "driver": "file",
+ "filename": "/tmp/test.qcow2"
+ @},
+ "backing": @{
+ "driver": "raw",
+ "file": @{
+ "driver": "file",
+ "filename": "/dev/fdset/4"
+ @}
+ @}
+ @}
+ @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-del
+
+Deletes a block device that has been added using blockdev-add.
+The command will fail if the node is attached to a device or is
+otherwise being used.
+
+@b{Arguments:}
+@table @asis
+@item @code{node-name: string}
+Name of the graph node to delete.
+@end table
+
+@b{Since:}
+2.9
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-add",
+ "arguments": @{
+ "driver": "qcow2",
+ "node-name": "node0",
+ "file": @{
+ "driver": "file",
+ "filename": "test.qcow2"
+ @}
+ @}
+ @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "blockdev-del",
+ "arguments": @{ "node-name": "node0" @}
+ @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BlockdevCreateOptionsFile
+
+Driver specific image creation options for file.
+
+@code{filename} Filename for the new image file
+@code{size} Size of the virtual disk in bytes
+@code{preallocation} Preallocation mode for the new image (default: off)
+@code{nocow} Turn off copy-on-write (valid only on btrfs; default: off)
+
+@b{Members:}
+@table @asis
+@item @code{filename: string}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{preallocation: PreallocMode} (optional)
+Not documented
+@item @code{nocow: boolean} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsGluster
+
+Driver specific image creation options for gluster.
+
+@code{location} Where to store the new image file
+@code{size} Size of the virtual disk in bytes
+@code{preallocation} Preallocation mode for the new image (default: off)
+
+@b{Members:}
+@table @asis
+@item @code{location: BlockdevOptionsGluster}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{preallocation: PreallocMode} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsLUKS
+
+Driver specific image creation options for LUKS.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item The members of @code{QCryptoBlockCreateOptionsLUKS}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsNfs
+
+Driver specific image creation options for NFS.
+
+@code{location} Where to store the new image file
+@code{size} Size of the virtual disk in bytes
+
+@b{Members:}
+@table @asis
+@item @code{location: BlockdevOptionsNfs}
+Not documented
+@item @code{size: int}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsParallels
+
+Driver specific image creation options for parallels.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{cluster-size} Cluster size in bytes (default: 1 MB)
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{cluster-size: int} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsQcow
+
+Driver specific image creation options for qcow.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{backing-file} File name of the backing file if a backing file
+should be used
+@code{encrypt} Encryption options if the image should be encrypted
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{backing-file: string} (optional)
+Not documented
+@item @code{encrypt: QCryptoBlockCreateOptions} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevQcow2Version
+
+
+
+@b{Values:}
+@table @asis
+@item @code{v2}
+The original QCOW2 format as introduced in qemu 0.10 (version 2)
+@item @code{v3}
+The extended QCOW2 format as introduced in qemu 1.1 (version 3)
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsQcow2
+
+Driver specific image creation options for qcow2.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{version} Compatibility level (default: v3)
+@code{backing-file} File name of the backing file if a backing file
+should be used
+@code{backing-fmt} Name of the block driver to use for the backing file
+@code{encrypt} Encryption options if the image should be encrypted
+@code{cluster-size} qcow2 cluster size in bytes (default: 65536)
+@code{preallocation} Preallocation mode for the new image (default: off)
+@code{lazy-refcounts} True if refcounts may be updated lazily (default: off)
+@code{refcount-bits} Width of reference counts in bits (default: 16)
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{version: BlockdevQcow2Version} (optional)
+Not documented
+@item @code{backing-file: string} (optional)
+Not documented
+@item @code{backing-fmt: BlockdevDriver} (optional)
+Not documented
+@item @code{encrypt: QCryptoBlockCreateOptions} (optional)
+Not documented
+@item @code{cluster-size: int} (optional)
+Not documented
+@item @code{preallocation: PreallocMode} (optional)
+Not documented
+@item @code{lazy-refcounts: boolean} (optional)
+Not documented
+@item @code{refcount-bits: int} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsQed
+
+Driver specific image creation options for qed.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{backing-file} File name of the backing file if a backing file
+should be used
+@code{backing-fmt} Name of the block driver to use for the backing file
+@code{cluster-size} Cluster size in bytes (default: 65536)
+@code{table-size} L1/L2 table size (in clusters)
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{backing-file: string} (optional)
+Not documented
+@item @code{backing-fmt: BlockdevDriver} (optional)
+Not documented
+@item @code{cluster-size: int} (optional)
+Not documented
+@item @code{table-size: int} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsRbd
+
+Driver specific image creation options for rbd/Ceph.
+
+@code{location} Where to store the new image file. This location cannot
+point to a snapshot.
+@code{size} Size of the virtual disk in bytes
+@code{cluster-size} RBD object size
+
+@b{Members:}
+@table @asis
+@item @code{location: BlockdevOptionsRbd}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{cluster-size: int} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} SheepdogRedundancyType
+
+@code{full} Create a fully replicated vdi with x copies
+@code{erasure-coded} Create an erasure coded vdi with x data strips and
+y parity strips
+
+@b{Values:}
+@table @asis
+@item @code{full}
+Not documented
+@item @code{erasure-coded}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SheepdogRedundancyFull
+
+@code{copies} Number of copies to use (between 1 and 31)
+
+@b{Members:}
+@table @asis
+@item @code{copies: int}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SheepdogRedundancyErasureCoded
+
+@code{data-strips} Number of data strips to use (one of @{2,4,8,16@})
+@code{parity-strips} Number of parity strips to use (between 1 and 15)
+
+@b{Members:}
+@table @asis
+@item @code{data-strips: int}
+Not documented
+@item @code{parity-strips: int}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SheepdogRedundancy
+
+
+
+@b{Members:}
+@table @asis
+@item @code{type: SheepdogRedundancyType}
+Not documented
+@item The members of @code{SheepdogRedundancyFull} when @code{type} is @t{"full"}
+@item The members of @code{SheepdogRedundancyErasureCoded} when @code{type} is @t{"erasure-coded"}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsSheepdog
+
+Driver specific image creation options for Sheepdog.
+
+@code{location} Where to store the new image file
+@code{size} Size of the virtual disk in bytes
+@code{backing-file} File name of a base image
+@code{preallocation} Preallocation mode (allowed values: off, full)
+@code{redundancy} Redundancy of the image
+@code{object-size} Object size of the image
+
+@b{Members:}
+@table @asis
+@item @code{location: BlockdevOptionsSheepdog}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{backing-file: string} (optional)
+Not documented
+@item @code{preallocation: PreallocMode} (optional)
+Not documented
+@item @code{redundancy: SheepdogRedundancy} (optional)
+Not documented
+@item @code{object-size: int} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsSsh
+
+Driver specific image creation options for SSH.
+
+@code{location} Where to store the new image file
+@code{size} Size of the virtual disk in bytes
+
+@b{Members:}
+@table @asis
+@item @code{location: BlockdevOptionsSsh}
+Not documented
+@item @code{size: int}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsVdi
+
+Driver specific image creation options for VDI.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{preallocation} Preallocation mode for the new image (allowed values: off,
+metadata; default: off)
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{preallocation: PreallocMode} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevVhdxSubformat
+
+
+
+@b{Values:}
+@table @asis
+@item @code{dynamic}
+Growing image file
+@item @code{fixed}
+Preallocated fixed-size image file
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsVhdx
+
+Driver specific image creation options for vhdx.
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{log-size} Log size in bytes, must be a multiple of 1 MB
+(default: 1 MB)
+@code{block-size} Block size in bytes, must be a multiple of 1 MB and not
+larger than 256 MB (default: automatically choose a block
+size depending on the image size)
+@code{subformat} vhdx subformat (default: dynamic)
+@code{block-state-zero} Force use of payload blocks of type 'ZERO'. Non-standard,
+but default. Do not set to 'off' when using 'qemu-img
+convert' with subformat=dynamic.
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{log-size: int} (optional)
+Not documented
+@item @code{block-size: int} (optional)
+Not documented
+@item @code{subformat: BlockdevVhdxSubformat} (optional)
+Not documented
+@item @code{block-state-zero: boolean} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} BlockdevVpcSubformat
+
+
+
+@b{Values:}
+@table @asis
+@item @code{dynamic}
+Growing image file
+@item @code{fixed}
+Preallocated fixed-size image file
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptionsVpc
+
+Driver specific image creation options for vpc (VHD).
+
+@code{file} Node to create the image format on
+@code{size} Size of the virtual disk in bytes
+@code{subformat} vhdx subformat (default: dynamic)
+@code{force-size} Force use of the exact byte size instead of rounding to the
+next size that can be represented in CHS geometry
+(default: false)
+
+@b{Members:}
+@table @asis
+@item @code{file: BlockdevRef}
+Not documented
+@item @code{size: int}
+Not documented
+@item @code{subformat: BlockdevVpcSubformat} (optional)
+Not documented
+@item @code{force-size: boolean} (optional)
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateNotSupported
+
+This is used for all drivers that don't support creating images.
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevCreateOptions
+
+Options for creating an image format on a given node.
+
+@code{driver} block driver to create the image format
+
+@b{Members:}
+@table @asis
+@item @code{driver: BlockdevDriver}
+Not documented
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"blkdebug"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"blkverify"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"bochs"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"cloop"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"dmg"}
+@item The members of @code{BlockdevCreateOptionsFile} when @code{driver} is @t{"file"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"ftp"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"ftps"}
+@item The members of @code{BlockdevCreateOptionsGluster} when @code{driver} is @t{"gluster"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"host_cdrom"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"host_device"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"http"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"https"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"iscsi"}
+@item The members of @code{BlockdevCreateOptionsLUKS} when @code{driver} is @t{"luks"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"nbd"}
+@item The members of @code{BlockdevCreateOptionsNfs} when @code{driver} is @t{"nfs"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"null-aio"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"null-co"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"nvme"}
+@item The members of @code{BlockdevCreateOptionsParallels} when @code{driver} is @t{"parallels"}
+@item The members of @code{BlockdevCreateOptionsQcow} when @code{driver} is @t{"qcow"}
+@item The members of @code{BlockdevCreateOptionsQcow2} when @code{driver} is @t{"qcow2"}
+@item The members of @code{BlockdevCreateOptionsQed} when @code{driver} is @t{"qed"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"quorum"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"raw"}
+@item The members of @code{BlockdevCreateOptionsRbd} when @code{driver} is @t{"rbd"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"replication"}
+@item The members of @code{BlockdevCreateOptionsSheepdog} when @code{driver} is @t{"sheepdog"}
+@item The members of @code{BlockdevCreateOptionsSsh} when @code{driver} is @t{"ssh"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"throttle"}
+@item The members of @code{BlockdevCreateOptionsVdi} when @code{driver} is @t{"vdi"}
+@item The members of @code{BlockdevCreateOptionsVhdx} when @code{driver} is @t{"vhdx"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"vmdk"}
+@item The members of @code{BlockdevCreateOptionsVpc} when @code{driver} is @t{"vpc"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"vvfat"}
+@item The members of @code{BlockdevCreateNotSupported} when @code{driver} is @t{"vxhs"}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} x-blockdev-create
+
+Create an image format on a given node.
+TODO Replace with something asynchronous (block job?)
+
+@b{Arguments:} the members of @code{BlockdevCreateOptions}
+
+@b{Since:}
+2.12
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-open-tray
+
+Opens a block device's tray. If there is a block driver state tree inserted as
+a medium, it will become inaccessible to the guest (but it will remain
+associated to the block device, so closing the tray will make it accessible
+again).
+
+If the tray was already open before, this will be a no-op.
+
+Once the tray opens, a DEVICE_TRAY_MOVED event is emitted. There are cases in
+which no such event will be generated, these include:
+@itemize @minus
+@item
+if the guest has locked the tray, @code{force} is false and the guest does not
+respond to the eject request
+@item
+if the BlockBackend denoted by @code{device} does not have a guest device attached
+to it
+@item
+if the guest device does not have an actual tray
+@end itemize
+
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+Block device name (deprecated, use @code{id} instead)
+@item @code{id: string} (optional)
+The name or QOM path of the guest device (since: 2.8)
+@item @code{force: boolean} (optional)
+if false (the default), an eject request will be sent to
+the guest if it has locked the tray (and the tray will not be opened
+immediately); if true, the tray will be opened regardless of whether
+it is locked
+@end table
+
+@b{Since:}
+2.5
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-open-tray",
+ "arguments": @{ "id": "ide0-1-0" @} @}
+
+<- @{ "timestamp": @{ "seconds": 1418751016,
+ "microseconds": 716996 @},
+ "event": "DEVICE_TRAY_MOVED",
+ "data": @{ "device": "ide1-cd0",
+ "id": "ide0-1-0",
+ "tray-open": true @} @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-close-tray
+
+Closes a block device's tray. If there is a block driver state tree associated
+with the block device (which is currently ejected), that tree will be loaded
+as the medium.
+
+If the tray was already closed before, this will be a no-op.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+Block device name (deprecated, use @code{id} instead)
+@item @code{id: string} (optional)
+The name or QOM path of the guest device (since: 2.8)
+@end table
+
+@b{Since:}
+2.5
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-close-tray",
+ "arguments": @{ "id": "ide0-1-0" @} @}
+
+<- @{ "timestamp": @{ "seconds": 1418751345,
+ "microseconds": 272147 @},
+ "event": "DEVICE_TRAY_MOVED",
+ "data": @{ "device": "ide1-cd0",
+ "id": "ide0-1-0",
+ "tray-open": false @} @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-remove-medium
+
+Removes a medium (a block driver state tree) from a block device. That block
+device's tray must currently be open (unless there is no attached guest
+device).
+
+If the tray is open and there is no medium inserted, this will be a no-op.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+The name or QOM path of the guest device
+@end table
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-remove-medium",
+ "arguments": @{ "id": "ide0-1-0" @} @}
+
+<- @{ "error": @{ "class": "GenericError",
+ "desc": "Tray of device 'ide0-1-0' is not open" @} @}
+
+-> @{ "execute": "blockdev-open-tray",
+ "arguments": @{ "id": "ide0-1-0" @} @}
+
+<- @{ "timestamp": @{ "seconds": 1418751627,
+ "microseconds": 549958 @},
+ "event": "DEVICE_TRAY_MOVED",
+ "data": @{ "device": "ide1-cd0",
+ "id": "ide0-1-0",
+ "tray-open": true @} @}
+
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "blockdev-remove-medium",
+ "arguments": @{ "id": "ide0-1-0" @} @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-insert-medium
+
+Inserts a medium (a block driver state tree) into a block device. That block
+device's tray must currently be open (unless there is no attached guest
+device) and there must be no medium inserted already.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+The name or QOM path of the guest device
+@item @code{node-name: string}
+name of a node in the block driver state graph
+@end table
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-add",
+ "arguments": @{
+ "node-name": "node0",
+ "driver": "raw",
+ "file": @{ "driver": "file",
+ "filename": "fedora.iso" @} @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "blockdev-insert-medium",
+ "arguments": @{ "id": "ide0-1-0",
+ "node-name": "node0" @} @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} BlockdevChangeReadOnlyMode
+
+Specifies the new read-only mode of a block device subject to the
+@code{blockdev-change-medium} command.
+
+@b{Values:}
+@table @asis
+@item @code{retain}
+Retains the current read-only mode
+@item @code{read-only}
+Makes the device read-only
+@item @code{read-write}
+Makes the device writable
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftypefn Command {} blockdev-change-medium
+
+Changes the medium inserted into a block device by ejecting the current medium
+and loading a new image file which is inserted as the new medium (this command
+combines blockdev-open-tray, blockdev-remove-medium, blockdev-insert-medium
+and blockdev-close-tray).
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+Block device name (deprecated, use @code{id} instead)
+@item @code{id: string} (optional)
+The name or QOM path of the guest device
+(since: 2.8)
+@item @code{filename: string}
+filename of the new image to be loaded
+@item @code{format: string} (optional)
+format to open the new image with (defaults to
+the probed format)
+@item @code{read-only-mode: BlockdevChangeReadOnlyMode} (optional)
+change the read-only mode of the device; defaults
+to 'retain'
+@end table
+
+@b{Since:}
+2.5
+
+@b{Examples:}
+@example
+1. Change a removable medium
+
+-> @{ "execute": "blockdev-change-medium",
+ "arguments": @{ "id": "ide0-1-0",
+ "filename": "/srv/images/Fedora-12-x86_64-DVD.iso",
+ "format": "raw" @} @}
+<- @{ "return": @{@} @}
+
+2. Load a read-only medium into a writable drive
+
+-> @{ "execute": "blockdev-change-medium",
+ "arguments": @{ "id": "floppyA",
+ "filename": "/srv/images/ro.img",
+ "format": "raw",
+ "read-only-mode": "retain" @} @}
+
+<- @{ "error":
+ @{ "class": "GenericError",
+ "desc": "Could not open '/srv/images/ro.img': Permission denied" @} @}
+
+-> @{ "execute": "blockdev-change-medium",
+ "arguments": @{ "id": "floppyA",
+ "filename": "/srv/images/ro.img",
+ "format": "raw",
+ "read-only-mode": "read-only" @} @}
+
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} BlockErrorAction
+
+An enumeration of action that has been taken when a DISK I/O occurs
+
+@b{Values:}
+@table @asis
+@item @code{ignore}
+error has been ignored
+@item @code{report}
+error has been reported to the device
+@item @code{stop}
+error caused VM to be stopped
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftypefn Event {} BLOCK_IMAGE_CORRUPTED
+
+Emitted when a disk image is being marked corrupt. The image can be
+identified by its device or node name. The 'device' field is always
+present for compatibility reasons, but it can be empty ("") if the
+image does not have a device name associated.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+device name. This is always present for compatibility
+reasons, but it can be empty ("") if the image does not
+have a device name associated.
+@item @code{node-name: string} (optional)
+node name (Since: 2.4)
+@item @code{msg: string}
+informative message for human consumption, such as the kind of
+corruption being detected. It should not be parsed by machine as it is
+not guaranteed to be stable
+@item @code{offset: int} (optional)
+if the corruption resulted from an image access, this is
+the host's access offset into the image
+@item @code{size: int} (optional)
+if the corruption resulted from an image access, this is
+the access size
+@item @code{fatal: boolean}
+if set, the image is marked corrupt and therefore unusable after this
+event and must be repaired (Since 2.2; before, every
+BLOCK_IMAGE_CORRUPTED event was fatal)
+@end table
+
+@b{Note:}
+If action is "stop", a STOP event will eventually follow the
+BLOCK_IO_ERROR event.
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_IMAGE_CORRUPTED",
+ "data": @{ "device": "ide0-hd0", "node-name": "node0",
+ "msg": "Prevented active L1 table overwrite", "offset": 196608,
+ "size": 65536 @},
+ "timestamp": @{ "seconds": 1378126126, "microseconds": 966463 @} @}
+@end example
+
+@b{Since:}
+1.7
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_IO_ERROR
+
+Emitted when a disk I/O error occurs
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+device name. This is always present for compatibility
+reasons, but it can be empty ("") if the image does not
+have a device name associated.
+@item @code{node-name: string} (optional)
+node name. Note that errors may be reported for the root node
+that is directly attached to a guest device rather than for the
+node where the error occurred. The node name is not present if
+the drive is empty. (Since: 2.8)
+@item @code{operation: IoOperationType}
+I/O operation
+@item @code{action: BlockErrorAction}
+action that has been taken
+@item @code{nospace: boolean} (optional)
+true if I/O error was caused due to a no-space
+condition. This key is only present if query-block's
+io-status is present, please see query-block documentation
+for more information (since: 2.2)
+@item @code{reason: string}
+human readable string describing the error cause.
+(This field is a debugging aid for humans, it should not
+be parsed by applications) (since: 2.2)
+@end table
+
+@b{Note:}
+If action is "stop", a STOP event will eventually follow the
+BLOCK_IO_ERROR event
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_IO_ERROR",
+ "data": @{ "device": "ide0-hd1",
+ "node-name": "#block212",
+ "operation": "write",
+ "action": "stop" @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_JOB_COMPLETED
+
+Emitted when a block job has completed
+
+@b{Arguments:}
+@table @asis
+@item @code{type: BlockJobType}
+job type
+@item @code{device: string}
+The job identifier. Originally the device name but other
+values are allowed since QEMU 2.7
+@item @code{len: int}
+maximum progress value
+@item @code{offset: int}
+current progress value. On success this is equal to len.
+On failure this is less than len
+@item @code{speed: int}
+rate limit, bytes per second
+@item @code{error: string} (optional)
+error message. Only present on failure. This field
+contains a human-readable error message. There are no semantics
+other than that streaming has failed and clients should not try to
+interpret the error string
+@end table
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_JOB_COMPLETED",
+ "data": @{ "type": "stream", "device": "virtio-disk0",
+ "len": 10737418240, "offset": 10737418240,
+ "speed": 0 @},
+ "timestamp": @{ "seconds": 1267061043, "microseconds": 959568 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_JOB_CANCELLED
+
+Emitted when a block job has been cancelled
+
+@b{Arguments:}
+@table @asis
+@item @code{type: BlockJobType}
+job type
+@item @code{device: string}
+The job identifier. Originally the device name but other
+values are allowed since QEMU 2.7
+@item @code{len: int}
+maximum progress value
+@item @code{offset: int}
+current progress value. On success this is equal to len.
+On failure this is less than len
+@item @code{speed: int}
+rate limit, bytes per second
+@end table
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_JOB_CANCELLED",
+ "data": @{ "type": "stream", "device": "virtio-disk0",
+ "len": 10737418240, "offset": 134217728,
+ "speed": 0 @},
+ "timestamp": @{ "seconds": 1267061043, "microseconds": 959568 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_JOB_ERROR
+
+Emitted when a block job encounters an error
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The job identifier. Originally the device name but other
+values are allowed since QEMU 2.7
+@item @code{operation: IoOperationType}
+I/O operation
+@item @code{action: BlockErrorAction}
+action that has been taken
+@end table
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_JOB_ERROR",
+ "data": @{ "device": "ide0-hd1",
+ "operation": "write",
+ "action": "stop" @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_JOB_READY
+
+Emitted when a block job is ready to complete
+
+@b{Arguments:}
+@table @asis
+@item @code{type: BlockJobType}
+job type
+@item @code{device: string}
+The job identifier. Originally the device name but other
+values are allowed since QEMU 2.7
+@item @code{len: int}
+maximum progress value
+@item @code{offset: int}
+current progress value. On success this is equal to len.
+On failure this is less than len
+@item @code{speed: int}
+rate limit, bytes per second
+@end table
+
+@b{Note:}
+The "ready to complete" status is always reset by a @code{BLOCK_JOB_ERROR}
+event
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_JOB_READY",
+ "data": @{ "device": "drive0", "type": "mirror", "speed": 0,
+ "len": 2097152, "offset": 2097152 @}
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BLOCK_JOB_PENDING
+
+Emitted when a block job is awaiting explicit authorization to finalize graph
+changes via @code{block-job-finalize}. If this job is part of a transaction, it will
+not emit this event until the transaction has converged first.
+
+@b{Arguments:}
+@table @asis
+@item @code{type: BlockJobType}
+job type
+@item @code{id: string}
+The job identifier.
+@end table
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+<- @{ "event": "BLOCK_JOB_WAITING",
+ "data": @{ "device": "drive0", "type": "mirror" @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} PreallocMode
+
+Preallocation mode of QEMU image file
+
+@b{Values:}
+@table @asis
+@item @code{off}
+no preallocation
+@item @code{metadata}
+preallocate only for metadata
+@item @code{falloc}
+like @code{full} preallocation but allocate disk space by
+posix_fallocate() rather than writing zeros.
+@item @code{full}
+preallocate all data by writing zeros to device to ensure disk
+space is really available. @code{full} preallocation also sets up
+metadata correctly.
+@end table
+
+@b{Since:}
+2.2
+
+@end deftp
+
+
+
+@deftypefn Event {} BLOCK_WRITE_THRESHOLD
+
+Emitted when writes on block device reaches or exceeds the
+configured write threshold. For thin-provisioned devices, this
+means the device should be extended to avoid pausing for
+disk exhaustion.
+The event is one shot. Once triggered, it needs to be
+re-registered with another block-set-write-threshold command.
+
+@b{Arguments:}
+@table @asis
+@item @code{node-name: string}
+graph node name on which the threshold was exceeded.
+@item @code{amount-exceeded: int}
+amount of data which exceeded the threshold, in bytes.
+@item @code{write-threshold: int}
+last configured threshold, in bytes.
+@end table
+
+@b{Since:}
+2.3
+
+@end deftypefn
+
+
+
+@deftypefn Command {} block-set-write-threshold
+
+Change the write threshold for a block drive. An event will be
+delivered if a write to this block drive crosses the configured
+threshold. The threshold is an offset, thus must be
+non-negative. Default is no write threshold. Setting the threshold
+to zero disables it.
+
+This is useful to transparently resize thin-provisioned drives without
+the guest OS noticing.
+
+@b{Arguments:}
+@table @asis
+@item @code{node-name: string}
+graph node name on which the threshold must be set.
+@item @code{write-threshold: int}
+configured threshold for the block device, bytes.
+Use 0 to disable the threshold.
+@end table
+
+@b{Since:}
+2.3
+
+@b{Example:}
+@example
+-> @{ "execute": "block-set-write-threshold",
+ "arguments": @{ "node-name": "mydev",
+ "write-threshold": 17179869184 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} x-blockdev-change
+
+Dynamically reconfigure the block driver state graph. It can be used
+to add, remove, insert or replace a graph node. Currently only the
+Quorum driver implements this feature to add or remove its child. This
+is useful to fix a broken quorum child.
+
+If @code{node} is specified, it will be inserted under @code{parent}. @code{child}
+may not be specified in this case. If both @code{parent} and @code{child} are
+specified but @code{node} is not, @code{child} will be detached from @code{parent}.
+
+@b{Arguments:}
+@table @asis
+@item @code{parent: string}
+the id or name of the parent node.
+@item @code{child: string} (optional)
+the name of a child under the given parent node.
+@item @code{node: string} (optional)
+the name of the node that will be added.
+@end table
+
+@b{Note:}
+this command is experimental, and its API is not stable. It
+does not support all kinds of operations, all kinds of children, nor
+all block drivers.
+
+FIXME Removing children from a quorum node means introducing gaps in the
+child indices. This cannot be represented in the 'children' list of
+BlockdevOptionsQuorum, as returned by .bdrv_refresh_filename().
+
+Warning: The data in a new quorum child MUST be consistent with that of
+the rest of the array.
+
+@b{Since:}
+2.7
+
+@b{Example:}
+@example
+1. Add a new node to a quorum
+-> @{ "execute": "blockdev-add",
+ "arguments": @{
+ "driver": "raw",
+ "node-name": "new_node",
+ "file": @{ "driver": "file",
+ "filename": "test.raw" @} @} @}
+<- @{ "return": @{@} @}
+-> @{ "execute": "x-blockdev-change",
+ "arguments": @{ "parent": "disk1",
+ "node": "new_node" @} @}
+<- @{ "return": @{@} @}
+
+2. Delete a quorum's node
+-> @{ "execute": "x-blockdev-change",
+ "arguments": @{ "parent": "disk1",
+ "child": "children.1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} x-blockdev-set-iothread
+
+Move @code{node} and its children into the @code{iothread}. If @code{iothread} is null then
+move @code{node} and its children into the main loop.
+
+The node must not be attached to a BlockBackend.
+
+@b{Arguments:}
+@table @asis
+@item @code{node-name: string}
+the name of the block driver node
+@item @code{iothread: StrOrNull}
+the name of the IOThread object or null for the main loop
+@item @code{force: boolean} (optional)
+true if the node and its children should be moved when a BlockBackend
+is already attached
+@end table
+
+@b{Note:}
+this command is experimental and intended for test cases that need
+control over IOThreads only.
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+1. Move a node into an IOThread
+-> @{ "execute": "x-blockdev-set-iothread",
+ "arguments": @{ "node-name": "disk1",
+ "iothread": "iothread0" @} @}
+<- @{ "return": @{@} @}
+
+2. Move a node into the main loop
+-> @{ "execute": "x-blockdev-set-iothread",
+ "arguments": @{ "node-name": "disk1",
+ "iothread": null @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+@subsection Additional block stuff (VM related)
+
+
+@deftp {Enum} BiosAtaTranslation
+
+Policy that BIOS should use to interpret cylinder/head/sector
+addresses. Note that Bochs BIOS and SeaBIOS will not actually
+translate logical CHS to physical; instead, they will use logical
+block addressing.
+
+@b{Values:}
+@table @asis
+@item @code{auto}
+If cylinder/heads/sizes are passed, choose between none and LBA
+depending on the size of the disk. If they are not passed,
+choose none if QEMU can guess that the disk had 16 or fewer
+heads, large if QEMU can guess that the disk had 131072 or
+fewer tracks across all heads (i.e. cylinders*heads<131072),
+otherwise LBA.
+@item @code{none}
+The physical disk geometry is equal to the logical geometry.
+@item @code{lba}
+Assume 63 sectors per track and one of 16, 32, 64, 128 or 255
+heads (if fewer than 255 are enough to cover the whole disk
+with 1024 cylinders/head). The number of cylinders/head is
+then computed based on the number of sectors and heads.
+@item @code{large}
+The number of cylinders per head is scaled down to 1024
+by correspondingly scaling up the number of heads.
+@item @code{rechs}
+Same as @code{large}, but first convert a 16-head geometry to
+15-head, by proportionally scaling up the number of
+cylinders/head.
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Enum} FloppyDriveType
+
+Type of Floppy drive to be emulated by the Floppy Disk Controller.
+
+@b{Values:}
+@table @asis
+@item @code{144}
+1.44MB 3.5" drive
+@item @code{288}
+2.88MB 3.5" drive
+@item @code{120}
+1.2MB 5.25" drive
+@item @code{none}
+No drive connected
+@item @code{auto}
+Automatically determined by inserted media at boot
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} BlockdevSnapshotInternal
+
+
+
+@b{Members:}
+@table @asis
+@item @code{device: string}
+the device name or node-name of a root node to generate the snapshot
+from
+@item @code{name: string}
+the name of the internal snapshot to be created
+@end table
+
+@b{Notes:}
+In transaction, if @code{name} is empty, or any snapshot matching @code{name}
+exists, the operation will fail. Only some image formats support it,
+for example, qcow2, rbd, and sheepdog.
+
+@b{Since:}
+1.7
+
+@end deftp
+
+
+
+@deftypefn Command {} blockdev-snapshot-internal-sync
+
+Synchronously take an internal snapshot of a block device, when the
+format of the image used supports it. If the name is an empty
+string, or a snapshot with name already exists, the operation will
+fail.
+
+For the arguments, see the documentation of BlockdevSnapshotInternal.
+
+@b{Returns:}
+nothing on success
+
+If @code{device} is not a valid block device, GenericError
+
+If any snapshot matching @code{name} exists, or @code{name} is empty,
+GenericError
+
+If the format of the image used does not support it,
+BlockFormatFeatureNotSupported
+
+@b{Since:}
+1.7
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-snapshot-internal-sync",
+ "arguments": @{ "device": "ide-hd0",
+ "name": "snapshot0" @}
+ @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} blockdev-snapshot-delete-internal-sync
+
+Synchronously delete an internal snapshot of a block device, when the format
+of the image used support it. The snapshot is identified by name or id or
+both. One of the name or id is required. Return SnapshotInfo for the
+successfully deleted snapshot.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+the device name or node-name of a root node to delete the snapshot
+from
+@item @code{id: string} (optional)
+optional the snapshot's ID to be deleted
+@item @code{name: string} (optional)
+optional the snapshot's name to be deleted
+@end table
+
+@b{Returns:}
+SnapshotInfo on success
+If @code{device} is not a valid block device, GenericError
+If snapshot not found, GenericError
+If the format of the image used does not support it,
+BlockFormatFeatureNotSupported
+If @code{id} and @code{name} are both not specified, GenericError
+
+@b{Since:}
+1.7
+
+@b{Example:}
+@example
+-> @{ "execute": "blockdev-snapshot-delete-internal-sync",
+ "arguments": @{ "device": "ide-hd0",
+ "name": "snapshot0" @}
+ @}
+<- @{ "return": @{
+ "id": "1",
+ "name": "snapshot0",
+ "vm-state-size": 0,
+ "date-sec": 1000012,
+ "date-nsec": 10,
+ "vm-clock-sec": 100,
+ "vm-clock-nsec": 20
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} eject
+
+Ejects a device from a removable drive.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+Block device name (deprecated, use @code{id} instead)
+@item @code{id: string} (optional)
+The name or QOM path of the guest device (since: 2.8)
+@item @code{force: boolean} (optional)
+If true, eject regardless of whether the drive is locked.
+If not specified, the default value is false.
+@end table
+
+@b{Returns:}
+Nothing on success
+
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Notes:}
+Ejecting a device with no media results in success
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "eject", "arguments": @{ "id": "ide1-0-1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} nbd-server-start
+
+Start an NBD server listening on the given host and port. Block
+devices can then be exported using @code{nbd-server-add}. The NBD
+server will present them as named exports; for example, another
+QEMU instance could refer to them as "nbd:HOST:PORT:exportname=NAME".
+
+@b{Arguments:}
+@table @asis
+@item @code{addr: SocketAddressLegacy}
+Address on which to listen.
+@item @code{tls-creds: string} (optional)
+(optional) ID of the TLS credentials object. Since 2.6
+@end table
+
+@b{Returns:}
+error if the server is already running.
+
+@b{Since:}
+1.3.0
+
+@end deftypefn
+
+
+
+@deftypefn Command {} nbd-server-add
+
+Export a block node to QEMU's embedded NBD server.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+The device name or node name of the node to be exported
+@item @code{name: string} (optional)
+Export name. If unspecified, the @code{device} parameter is used as the
+export name. (Since 2.12)
+@item @code{writable: boolean} (optional)
+Whether clients should be able to write to the device via the
+NBD connection (default false).
+@end table
+
+@b{Returns:}
+error if the server is not running, or export with the same name
+already exists.
+
+@b{Since:}
+1.3.0
+
+@end deftypefn
+
+
+
+@deftp {Enum} NbdServerRemoveMode
+
+Mode for removing an NBD export.
+
+@b{Values:}
+@table @asis
+@item @code{safe}
+Remove export if there are no existing connections, fail otherwise.
+@item @code{hard}
+Drop all connections immediately and remove export.
+@end table
+Potential additional modes to be added in the future:
+
+hide: Just hide export from new clients, leave existing connections as is.
+Remove export after all clients are disconnected.
+
+soft: Hide export from new clients, answer with ESHUTDOWN for all further
+requests from existing clients.
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} nbd-server-remove
+
+Remove NBD export by name.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+Export name.
+@item @code{mode: NbdServerRemoveMode} (optional)
+Mode of command operation. See @code{NbdServerRemoveMode} description.
+Default is 'safe'.
+@end table
+
+@b{Returns:}
+error if
+@itemize @minus
+@item
+the server is not running
+@item
+export is not found
+@item
+mode is 'safe' and there are existing connections
+@end itemize
+
+
+@b{Since:}
+2.12
+
+@end deftypefn
+
+
+
+@deftypefn Command {} nbd-server-stop
+
+Stop QEMU's embedded NBD server, and unregister all devices previously
+added via @code{nbd-server-add}.
+
+@b{Since:}
+1.3.0
+
+@end deftypefn
+
+
+
+@deftypefn Event {} DEVICE_TRAY_MOVED
+
+Emitted whenever the tray of a removable device is moved by the guest or by
+HMP/QMP commands
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+Block device name. This is always present for compatibility
+reasons, but it can be empty ("") if the image does not
+have a device name associated.
+@item @code{id: string}
+The name or QOM path of the guest device (since 2.8)
+@item @code{tray-open: boolean}
+true if the tray has been opened or false if it has been closed
+@end table
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+<- @{ "event": "DEVICE_TRAY_MOVED",
+ "data": @{ "device": "ide1-cd0",
+ "id": "/machine/unattached/device[22]",
+ "tray-open": true
+ @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} QuorumOpType
+
+An enumeration of the quorum operation types
+
+@b{Values:}
+@table @asis
+@item @code{read}
+read operation
+@item @code{write}
+write operation
+@item @code{flush}
+flush operation
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftypefn Event {} QUORUM_FAILURE
+
+Emitted by the Quorum block driver if it fails to establish a quorum
+
+@b{Arguments:}
+@table @asis
+@item @code{reference: string}
+device name if defined else node name
+@item @code{sector-num: int}
+number of the first sector of the failed read operation
+@item @code{sectors-count: int}
+failed read operation sector count
+@end table
+
+@b{Note:}
+This event is rate-limited.
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+<- @{ "event": "QUORUM_FAILURE",
+ "data": @{ "reference": "usr1", "sector-num": 345435, "sectors-count": 5 @},
+ "timestamp": @{ "seconds": 1344522075, "microseconds": 745528 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} QUORUM_REPORT_BAD
+
+Emitted to report a corruption of a Quorum file
+
+@b{Arguments:}
+@table @asis
+@item @code{type: QuorumOpType}
+quorum operation type (Since 2.6)
+@item @code{error: string} (optional)
+error message. Only present on failure. This field
+contains a human-readable error message. There are no semantics other
+than that the block layer reported an error and clients should not
+try to interpret the error string.
+@item @code{node-name: string}
+the graph node name of the block driver state
+@item @code{sector-num: int}
+number of the first sector of the failed read operation
+@item @code{sectors-count: int}
+failed read operation sector count
+@end table
+
+@b{Note:}
+This event is rate-limited.
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+1. Read operation
+
+@{ "event": "QUORUM_REPORT_BAD",
+ "data": @{ "node-name": "node0", "sector-num": 345435, "sectors-count": 5,
+ "type": "read" @},
+ "timestamp": @{ "seconds": 1344522075, "microseconds": 745528 @} @}
+
+2. Flush operation
+
+@{ "event": "QUORUM_REPORT_BAD",
+ "data": @{ "node-name": "node0", "sector-num": 0, "sectors-count": 2097120,
+ "type": "flush", "error": "Broken pipe" @},
+ "timestamp": @{ "seconds": 1456406829, "microseconds": 291763 @} @}
+@end example
+
+@end deftypefn
+
+
+@section Character devices
+
+
+@deftp {Object} ChardevInfo
+
+Information about a character device.
+
+@b{Members:}
+@table @asis
+@item @code{label: string}
+the label of the character device
+@item @code{filename: string}
+the filename of the character device
+@item @code{frontend-open: boolean}
+shows whether the frontend device attached to this backend
+(eg. with the chardev=... option) is in open or closed state
+(since 2.1)
+@end table
+
+@b{Notes:}
+@code{filename} is encoded using the QEMU command line character device
+encoding. See the QEMU man page for details.
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-chardev
+
+Returns information about current character devices.
+
+@b{Returns:}
+a list of @code{ChardevInfo}
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-chardev" @}
+<- @{
+ "return": [
+ @{
+ "label": "charchannel0",
+ "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.agent,server",
+ "frontend-open": false
+ @},
+ @{
+ "label": "charmonitor",
+ "filename": "unix:/var/lib/libvirt/qemu/seabios.rhel6.monitor,server",
+ "frontend-open": true
+ @},
+ @{
+ "label": "charserial0",
+ "filename": "pty:/dev/pts/2",
+ "frontend-open": true
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} ChardevBackendInfo
+
+Information about a character device backend
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+The backend name
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-chardev-backends
+
+Returns information about character device backends.
+
+@b{Returns:}
+a list of @code{ChardevBackendInfo}
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-chardev-backends" @}
+<- @{
+ "return":[
+ @{
+ "name":"udp"
+ @},
+ @{
+ "name":"tcp"
+ @},
+ @{
+ "name":"unix"
+ @},
+ @{
+ "name":"spiceport"
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} DataFormat
+
+An enumeration of data format.
+
+@b{Values:}
+@table @asis
+@item @code{utf8}
+Data is a UTF-8 string (RFC 3629)
+@item @code{base64}
+Data is Base64 encoded binary (RFC 3548)
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftypefn Command {} ringbuf-write
+
+Write to a ring buffer character device.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+the ring buffer character device name
+@item @code{data: string}
+data to write
+@item @code{format: DataFormat} (optional)
+data encoding (default 'utf8').
+@itemize @minus
+@item
+base64: data must be base64 encoded text. Its binary
+decoding gets written.
+@item
+utf8: data's UTF-8 encoding is written
+@item
+data itself is always Unicode regardless of format, like
+any other string.
+@end itemize
+
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+1.4
+
+@b{Example:}
+@example
+-> @{ "execute": "ringbuf-write",
+ "arguments": @{ "device": "foo",
+ "data": "abcdefgh",
+ "format": "utf8" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} ringbuf-read
+
+Read from a ring buffer character device.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+the ring buffer character device name
+@item @code{size: int}
+how many bytes to read at most
+@item @code{format: DataFormat} (optional)
+data encoding (default 'utf8').
+@itemize @minus
+@item
+base64: the data read is returned in base64 encoding.
+@item
+utf8: the data read is interpreted as UTF-8.
+Bug: can screw up when the buffer contains invalid UTF-8
+sequences, NUL characters, after the ring buffer lost
+data, and when reading stops because the size limit is
+reached.
+@item
+The return value is always Unicode regardless of format,
+like any other string.
+@end itemize
+
+@end table
+
+@b{Returns:}
+data read from the device
+
+@b{Since:}
+1.4
+
+@b{Example:}
+@example
+-> @{ "execute": "ringbuf-read",
+ "arguments": @{ "device": "foo",
+ "size": 1000,
+ "format": "utf8" @} @}
+<- @{ "return": "abcdefgh" @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} ChardevCommon
+
+Configuration shared across all chardev backends
+
+@b{Members:}
+@table @asis
+@item @code{logfile: string} (optional)
+The name of a logfile to save output
+@item @code{logappend: boolean} (optional)
+true to append instead of truncate
+(default to false to truncate)
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} ChardevFile
+
+Configuration info for file chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{in: string} (optional)
+The name of the input file
+@item @code{out: string}
+The name of the output file
+@item @code{append: boolean} (optional)
+Open the file in append mode (default false to
+truncate) (Since 2.6)
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftp {Object} ChardevHostdev
+
+Configuration info for device and pipe chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{device: string}
+The name of the special file for the device,
+i.e. /dev/ttyS0 on Unix or COM1: on Windows
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftp {Object} ChardevSocket
+
+Configuration info for (stream) socket chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{addr: SocketAddressLegacy}
+socket address to listen on (server=true)
+or connect to (server=false)
+@item @code{tls-creds: string} (optional)
+the ID of the TLS credentials object (since 2.6)
+@item @code{server: boolean} (optional)
+create server socket (default: true)
+@item @code{wait: boolean} (optional)
+wait for incoming connection on server
+sockets (default: false).
+@item @code{nodelay: boolean} (optional)
+set TCP_NODELAY socket option (default: false)
+@item @code{telnet: boolean} (optional)
+enable telnet protocol on server
+sockets (default: false)
+@item @code{tn3270: boolean} (optional)
+enable tn3270 protocol on server
+sockets (default: false) (Since: 2.10)
+@item @code{reconnect: int} (optional)
+For a client socket, if a socket is disconnected,
+then attempt a reconnect after the given number of seconds.
+Setting this to zero disables this function. (default: 0)
+(Since: 2.2)
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftp {Object} ChardevUdp
+
+Configuration info for datagram socket chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{remote: SocketAddressLegacy}
+remote address
+@item @code{local: SocketAddressLegacy} (optional)
+local address
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevMux
+
+Configuration info for mux chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{chardev: string}
+name of the base chardev.
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevStdio
+
+Configuration info for stdio chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{signal: boolean} (optional)
+Allow signals (such as SIGINT triggered by ^C)
+be delivered to qemu. Default: true in -nographic mode,
+false otherwise.
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevSpiceChannel
+
+Configuration info for spice vm channel chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{type: string}
+kind of channel (for example vdagent).
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevSpicePort
+
+Configuration info for spice port chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{fqdn: string}
+name of the channel (see docs/spice-port-fqdn.txt)
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevVC
+
+Configuration info for virtual console chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{width: int} (optional)
+console width, in pixels
+@item @code{height: int} (optional)
+console height, in pixels
+@item @code{cols: int} (optional)
+console width, in chars
+@item @code{rows: int} (optional)
+console height, in chars
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevRingbuf
+
+Configuration info for ring buffer chardevs.
+
+@b{Members:}
+@table @asis
+@item @code{size: int} (optional)
+ring buffer size, must be power of two, default is 65536
+@item The members of @code{ChardevCommon}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} ChardevBackend
+
+Configuration info for the new chardev backend.
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"file"}, @t{"serial"}, @t{"parallel"}, @t{"pipe"}, @t{"socket"}, @t{"udp"}, @t{"pty"}, @t{"null"}, @t{"mux"}, @t{"msmouse"}, @t{"wctablet"}, @t{"braille"}, @t{"testdev"}, @t{"stdio"}, @t{"console"}, @t{"spicevmc"}, @t{"spiceport"}, @t{"vc"}, @t{"ringbuf"}, @t{"memory"}
+@item @code{data: ChardevFile} when @code{type} is @t{"file"}
+@item @code{data: ChardevHostdev} when @code{type} is @t{"serial"}
+@item @code{data: ChardevHostdev} when @code{type} is @t{"parallel"}
+@item @code{data: ChardevHostdev} when @code{type} is @t{"pipe"}
+@item @code{data: ChardevSocket} when @code{type} is @t{"socket"}
+@item @code{data: ChardevUdp} when @code{type} is @t{"udp"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"pty"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"null"}
+@item @code{data: ChardevMux} when @code{type} is @t{"mux"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"msmouse"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"wctablet"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"braille"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"testdev"}
+@item @code{data: ChardevStdio} when @code{type} is @t{"stdio"}
+@item @code{data: ChardevCommon} when @code{type} is @t{"console"}
+@item @code{data: ChardevSpiceChannel} when @code{type} is @t{"spicevmc"}
+@item @code{data: ChardevSpicePort} when @code{type} is @t{"spiceport"}
+@item @code{data: ChardevVC} when @code{type} is @t{"vc"}
+@item @code{data: ChardevRingbuf} when @code{type} is @t{"ringbuf"}
+@item @code{data: ChardevRingbuf} when @code{type} is @t{"memory"}
+@end table
+
+@b{Since:}
+1.4 (testdev since 2.2, wctablet since 2.9)
+
+@end deftp
+
+
+
+@deftp {Object} ChardevReturn
+
+Return info about the chardev backend just created.
+
+@b{Members:}
+@table @asis
+@item @code{pty: string} (optional)
+name of the slave pseudoterminal device, present if
+and only if a chardev of type 'pty' was created
+@end table
+
+@b{Since:}
+1.4
+
+@end deftp
+
+
+
+@deftypefn Command {} chardev-add
+
+Add a character device backend
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the chardev's ID, must be unique
+@item @code{backend: ChardevBackend}
+backend type and parameters
+@end table
+
+@b{Returns:}
+ChardevReturn.
+
+@b{Since:}
+1.4
+
+@b{Example:}
+@example
+-> @{ "execute" : "chardev-add",
+ "arguments" : @{ "id" : "foo",
+ "backend" : @{ "type" : "null", "data" : @{@} @} @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute" : "chardev-add",
+ "arguments" : @{ "id" : "bar",
+ "backend" : @{ "type" : "file",
+ "data" : @{ "out" : "/tmp/bar.log" @} @} @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute" : "chardev-add",
+ "arguments" : @{ "id" : "baz",
+ "backend" : @{ "type" : "pty", "data" : @{@} @} @} @}
+<- @{ "return": @{ "pty" : "/dev/pty/42" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} chardev-change
+
+Change a character device backend
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the chardev's ID, must exist
+@item @code{backend: ChardevBackend}
+new backend type and parameters
+@end table
+
+@b{Returns:}
+ChardevReturn.
+
+@b{Since:}
+2.10
+
+@b{Example:}
+@example
+-> @{ "execute" : "chardev-change",
+ "arguments" : @{ "id" : "baz",
+ "backend" : @{ "type" : "pty", "data" : @{@} @} @} @}
+<- @{ "return": @{ "pty" : "/dev/pty/42" @} @}
+
+-> @{"execute" : "chardev-change",
+ "arguments" : @{
+ "id" : "charchannel2",
+ "backend" : @{
+ "type" : "socket",
+ "data" : @{
+ "addr" : @{
+ "type" : "unix" ,
+ "data" : @{
+ "path" : "/tmp/charchannel2.socket"
+ @}
+ @},
+ "server" : true,
+ "wait" : false @}@}@}@}
+<- @{"return": @{@}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} chardev-remove
+
+Remove a character device backend
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the chardev's ID, must exist and not be in use
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+1.4
+
+@b{Example:}
+@example
+-> @{ "execute": "chardev-remove", "arguments": @{ "id" : "foo" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} chardev-send-break
+
+Send a break to a character device
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the chardev's ID, must exist
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+2.10
+
+@b{Example:}
+@example
+-> @{ "execute": "chardev-send-break", "arguments": @{ "id" : "foo" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} VSERPORT_CHANGE
+
+Emitted when the guest opens or closes a virtio-serial port.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+device identifier of the virtio-serial port
+@item @code{open: boolean}
+true if the guest has opened the virtio-serial port
+@end table
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+<- @{ "event": "VSERPORT_CHANGE",
+ "data": @{ "id": "channel0", "open": true @},
+ "timestamp": @{ "seconds": 1401385907, "microseconds": 422329 @} @}
+@end example
+
+@end deftypefn
+
+
+@section Net devices
+
+
+@deftypefn Command {} set_link
+
+Sets the link status of a virtual network adapter.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+the device name of the virtual network adapter
+@item @code{up: boolean}
+true to set the link status to be up
+@end table
+
+@b{Returns:}
+Nothing on success
+If @code{name} is not a valid network device, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+Not all network adapters support setting link status. This command
+will succeed even if the network adapter does not support link status
+notification.
+
+@b{Example:}
+@example
+-> @{ "execute": "set_link",
+ "arguments": @{ "name": "e1000.0", "up": false @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} netdev_add
+
+Add a network backend.
+
+@b{Arguments:}
+@table @asis
+@item @code{type: string}
+the type of network backend. Possible values are listed in
+NetClientDriver (excluding 'none' and 'nic')
+@item @code{id: string}
+the name of the new network backend
+@end table
+Additional arguments depend on the type.
+
+@b{TODO:}
+This command effectively bypasses QAPI completely due to its
+"additional arguments" business. It shouldn't have been added to
+the schema in this form. It should be qapified properly, or
+replaced by a properly qapified command.
+
+@b{Since:}
+0.14.0
+
+@b{Returns:}
+Nothing on success
+If @code{type} is not a valid network backend, DeviceNotFound
+
+@b{Example:}
+@example
+-> @{ "execute": "netdev_add",
+ "arguments": @{ "type": "user", "id": "netdev1",
+ "dnssearch": "example.org" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} netdev_del
+
+Remove a network backend.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the name of the network backend to remove
+@end table
+
+@b{Returns:}
+Nothing on success
+If @code{id} is not a valid network backend, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "netdev_del", "arguments": @{ "id": "netdev1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} NetdevNoneOptions
+
+Use it alone to have zero network devices.
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetLegacyNicOptions
+
+Create a new Network Interface Card.
+
+@b{Members:}
+@table @asis
+@item @code{netdev: string} (optional)
+id of -netdev to connect to
+@item @code{macaddr: string} (optional)
+MAC address
+@item @code{model: string} (optional)
+device model (e1000, rtl8139, virtio etc.)
+@item @code{addr: string} (optional)
+PCI device address
+@item @code{vectors: int} (optional)
+number of MSI-x vectors, 0 to disable MSI-X
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevUserOptions
+
+Use the user mode network stack which requires no administrator privilege to
+run.
+
+@b{Members:}
+@table @asis
+@item @code{hostname: string} (optional)
+client hostname reported by the builtin DHCP server
+@item @code{restrict: boolean} (optional)
+isolate the guest from the host
+@item @code{ipv4: boolean} (optional)
+whether to support IPv4, default true for enabled
+(since 2.6)
+@item @code{ipv6: boolean} (optional)
+whether to support IPv6, default true for enabled
+(since 2.6)
+@item @code{ip: string} (optional)
+legacy parameter, use net= instead
+@item @code{net: string} (optional)
+IP network address that the guest will see, in the
+form addr[/netmask] The netmask is optional, and can be
+either in the form a.b.c.d or as a number of valid top-most
+bits. Default is 10.0.2.0/24.
+@item @code{host: string} (optional)
+guest-visible address of the host
+@item @code{tftp: string} (optional)
+root directory of the built-in TFTP server
+@item @code{bootfile: string} (optional)
+BOOTP filename, for use with tftp=
+@item @code{dhcpstart: string} (optional)
+the first of the 16 IPs the built-in DHCP server can
+assign
+@item @code{dns: string} (optional)
+guest-visible address of the virtual nameserver
+@item @code{dnssearch: array of String} (optional)
+list of DNS suffixes to search, passed as DHCP option
+to the guest
+@item @code{ipv6-prefix: string} (optional)
+IPv6 network prefix (default is fec0::) (since
+2.6). The network prefix is given in the usual
+hexadecimal IPv6 address notation.
+@item @code{ipv6-prefixlen: int} (optional)
+IPv6 network prefix length (default is 64)
+(since 2.6)
+@item @code{ipv6-host: string} (optional)
+guest-visible IPv6 address of the host (since 2.6)
+@item @code{ipv6-dns: string} (optional)
+guest-visible IPv6 address of the virtual
+nameserver (since 2.6)
+@item @code{smb: string} (optional)
+root directory of the built-in SMB server
+@item @code{smbserver: string} (optional)
+IP address of the built-in SMB server
+@item @code{hostfwd: array of String} (optional)
+redirect incoming TCP or UDP host connections to guest
+endpoints
+@item @code{guestfwd: array of String} (optional)
+forward guest TCP connections
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevTapOptions
+
+Connect the host TAP network interface name to the VLAN.
+
+@b{Members:}
+@table @asis
+@item @code{ifname: string} (optional)
+interface name
+@item @code{fd: string} (optional)
+file descriptor of an already opened tap
+@item @code{fds: string} (optional)
+multiple file descriptors of already opened multiqueue capable
+tap
+@item @code{script: string} (optional)
+script to initialize the interface
+@item @code{downscript: string} (optional)
+script to shut down the interface
+@item @code{br: string} (optional)
+bridge name (since 2.8)
+@item @code{helper: string} (optional)
+command to execute to configure bridge
+@item @code{sndbuf: int} (optional)
+send buffer limit. Understands [TGMKkb] suffixes.
+@item @code{vnet_hdr: boolean} (optional)
+enable the IFF_VNET_HDR flag on the tap interface
+@item @code{vhost: boolean} (optional)
+enable vhost-net network accelerator
+@item @code{vhostfd: string} (optional)
+file descriptor of an already opened vhost net device
+@item @code{vhostfds: string} (optional)
+file descriptors of multiple already opened vhost net
+devices
+@item @code{vhostforce: boolean} (optional)
+vhost on for non-MSIX virtio guests
+@item @code{queues: int} (optional)
+number of queues to be created for multiqueue capable tap
+@item @code{poll-us: int} (optional)
+maximum number of microseconds that could
+be spent on busy polling for tap (since 2.7)
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevSocketOptions
+
+Connect the VLAN to a remote VLAN in another QEMU virtual machine using a TCP
+socket connection.
+
+@b{Members:}
+@table @asis
+@item @code{fd: string} (optional)
+file descriptor of an already opened socket
+@item @code{listen: string} (optional)
+port number, and optional hostname, to listen on
+@item @code{connect: string} (optional)
+port number, and optional hostname, to connect to
+@item @code{mcast: string} (optional)
+UDP multicast address and port number
+@item @code{localaddr: string} (optional)
+source address and port for multicast and udp packets
+@item @code{udp: string} (optional)
+UDP unicast address and port number
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevL2TPv3Options
+
+Connect the VLAN to Ethernet over L2TPv3 Static tunnel
+
+@b{Members:}
+@table @asis
+@item @code{src: string}
+source address
+@item @code{dst: string}
+destination address
+@item @code{srcport: string} (optional)
+source port - mandatory for udp, optional for ip
+@item @code{dstport: string} (optional)
+destination port - mandatory for udp, optional for ip
+@item @code{ipv6: boolean} (optional)
+force the use of ipv6
+@item @code{udp: boolean} (optional)
+use the udp version of l2tpv3 encapsulation
+@item @code{cookie64: boolean} (optional)
+use 64 bit coookies
+@item @code{counter: boolean} (optional)
+have sequence counter
+@item @code{pincounter: boolean} (optional)
+pin sequence counter to zero -
+workaround for buggy implementations or
+networks with packet reorder
+@item @code{txcookie: int} (optional)
+32 or 64 bit transmit cookie
+@item @code{rxcookie: int} (optional)
+32 or 64 bit receive cookie
+@item @code{txsession: int}
+32 bit transmit session
+@item @code{rxsession: int} (optional)
+32 bit receive session - if not specified
+set to the same value as transmit
+@item @code{offset: int} (optional)
+additional offset - allows the insertion of
+additional application-specific data before the packet payload
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} NetdevVdeOptions
+
+Connect the VLAN to a vde switch running on the host.
+
+@b{Members:}
+@table @asis
+@item @code{sock: string} (optional)
+socket path
+@item @code{port: int} (optional)
+port number
+@item @code{group: string} (optional)
+group owner of socket
+@item @code{mode: int} (optional)
+permissions for socket
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevBridgeOptions
+
+Connect a host TAP network interface to a host bridge device.
+
+@b{Members:}
+@table @asis
+@item @code{br: string} (optional)
+bridge name
+@item @code{helper: string} (optional)
+command to execute to configure bridge
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevHubPortOptions
+
+Connect two or more net clients through a software hub.
+
+@b{Members:}
+@table @asis
+@item @code{hubid: int}
+hub identifier number
+@item @code{netdev: string} (optional)
+used to connect hub to a netdev instead of a device (since 2.12)
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetdevNetmapOptions
+
+Connect a client to a netmap-enabled NIC or to a VALE switch port
+
+@b{Members:}
+@table @asis
+@item @code{ifname: string}
+Either the name of an existing network interface supported by
+netmap, or the name of a VALE port (created on the fly).
+A VALE port name is in the form 'valeXXX:YYY', where XXX and
+YYY are non-negative integers. XXX identifies a switch and
+YYY identifies a port of the switch. VALE ports having the
+same XXX are therefore connected to the same switch.
+@item @code{devname: string} (optional)
+path of the netmap device (default: '/dev/netmap').
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Object} NetdevVhostUserOptions
+
+Vhost-user network backend
+
+@b{Members:}
+@table @asis
+@item @code{chardev: string}
+name of a unix socket chardev
+@item @code{vhostforce: boolean} (optional)
+vhost on for non-MSIX virtio guests (default: false).
+@item @code{queues: int} (optional)
+number of queues to be created for multiqueue vhost-user
+(default: 1) (Since 2.5)
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Enum} NetClientDriver
+
+Available netdev drivers.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+Not documented
+@item @code{nic}
+Not documented
+@item @code{user}
+Not documented
+@item @code{tap}
+Not documented
+@item @code{l2tpv3}
+Not documented
+@item @code{socket}
+Not documented
+@item @code{vde}
+Not documented
+@item @code{bridge}
+Not documented
+@item @code{hubport}
+Not documented
+@item @code{netmap}
+Not documented
+@item @code{vhost-user}
+Not documented
+@end table
+
+@b{Since:}
+2.7
+
+'dump' - removed with 2.12
+
+@end deftp
+
+
+
+@deftp {Object} Netdev
+
+Captures the configuration of a network device.
+
+@b{Members:}
+@table @asis
+@item @code{id: string}
+identifier for monitor commands.
+@item @code{type: NetClientDriver}
+Specify the driver used for interpreting remaining arguments.
+@item The members of @code{NetdevNoneOptions} when @code{type} is @t{"none"}
+@item The members of @code{NetLegacyNicOptions} when @code{type} is @t{"nic"}
+@item The members of @code{NetdevUserOptions} when @code{type} is @t{"user"}
+@item The members of @code{NetdevTapOptions} when @code{type} is @t{"tap"}
+@item The members of @code{NetdevL2TPv3Options} when @code{type} is @t{"l2tpv3"}
+@item The members of @code{NetdevSocketOptions} when @code{type} is @t{"socket"}
+@item The members of @code{NetdevVdeOptions} when @code{type} is @t{"vde"}
+@item The members of @code{NetdevBridgeOptions} when @code{type} is @t{"bridge"}
+@item The members of @code{NetdevHubPortOptions} when @code{type} is @t{"hubport"}
+@item The members of @code{NetdevNetmapOptions} when @code{type} is @t{"netmap"}
+@item The members of @code{NetdevVhostUserOptions} when @code{type} is @t{"vhost-user"}
+@end table
+
+@b{Since:}
+1.2
+
+'l2tpv3' - since 2.1
+
+@end deftp
+
+
+
+@deftp {Object} NetLegacy
+
+Captures the configuration of a network device; legacy.
+
+@b{Members:}
+@table @asis
+@item @code{vlan: int} (optional)
+vlan number
+@item @code{id: string} (optional)
+identifier for monitor commands
+@item @code{name: string} (optional)
+identifier for monitor commands, ignored if @code{id} is present
+@item @code{opts: NetLegacyOptions}
+device type specific properties (legacy)
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Enum} NetLegacyOptionsType
+
+
+
+@b{Values:}
+@table @asis
+@item @code{none}
+Not documented
+@item @code{nic}
+Not documented
+@item @code{user}
+Not documented
+@item @code{tap}
+Not documented
+@item @code{l2tpv3}
+Not documented
+@item @code{socket}
+Not documented
+@item @code{vde}
+Not documented
+@item @code{bridge}
+Not documented
+@item @code{netmap}
+Not documented
+@item @code{vhost-user}
+Not documented
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} NetLegacyOptions
+
+Like Netdev, but for use only by the legacy command line options
+
+@b{Members:}
+@table @asis
+@item @code{type: NetLegacyOptionsType}
+Not documented
+@item The members of @code{NetdevNoneOptions} when @code{type} is @t{"none"}
+@item The members of @code{NetLegacyNicOptions} when @code{type} is @t{"nic"}
+@item The members of @code{NetdevUserOptions} when @code{type} is @t{"user"}
+@item The members of @code{NetdevTapOptions} when @code{type} is @t{"tap"}
+@item The members of @code{NetdevL2TPv3Options} when @code{type} is @t{"l2tpv3"}
+@item The members of @code{NetdevSocketOptions} when @code{type} is @t{"socket"}
+@item The members of @code{NetdevVdeOptions} when @code{type} is @t{"vde"}
+@item The members of @code{NetdevBridgeOptions} when @code{type} is @t{"bridge"}
+@item The members of @code{NetdevNetmapOptions} when @code{type} is @t{"netmap"}
+@item The members of @code{NetdevVhostUserOptions} when @code{type} is @t{"vhost-user"}
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Enum} NetFilterDirection
+
+Indicates whether a netfilter is attached to a netdev's transmit queue or
+receive queue or both.
+
+@b{Values:}
+@table @asis
+@item @code{all}
+the filter is attached both to the receive and the transmit
+queue of the netdev (default).
+@item @code{rx}
+the filter is attached to the receive queue of the netdev,
+where it will receive packets sent to the netdev.
+@item @code{tx}
+the filter is attached to the transmit queue of the netdev,
+where it will receive packets sent by the netdev.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Enum} RxState
+
+Packets receiving state
+
+@b{Values:}
+@table @asis
+@item @code{normal}
+filter assigned packets according to the mac-table
+@item @code{none}
+don't receive any assigned packet
+@item @code{all}
+receive all assigned packets
+@end table
+
+@b{Since:}
+1.6
+
+@end deftp
+
+
+
+@deftp {Object} RxFilterInfo
+
+Rx-filter information for a NIC.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+net client name
+@item @code{promiscuous: boolean}
+whether promiscuous mode is enabled
+@item @code{multicast: RxState}
+multicast receive state
+@item @code{unicast: RxState}
+unicast receive state
+@item @code{vlan: RxState}
+vlan receive state (Since 2.0)
+@item @code{broadcast-allowed: boolean}
+whether to receive broadcast
+@item @code{multicast-overflow: boolean}
+multicast table is overflowed or not
+@item @code{unicast-overflow: boolean}
+unicast table is overflowed or not
+@item @code{main-mac: string}
+the main macaddr string
+@item @code{vlan-table: array of int}
+a list of active vlan id
+@item @code{unicast-table: array of string}
+a list of unicast macaddr string
+@item @code{multicast-table: array of string}
+a list of multicast macaddr string
+@end table
+
+@b{Since:}
+1.6
+
+@end deftp
+
+
+
+@deftypefn Command {} query-rx-filter
+
+Return rx-filter information for all NICs (or for the given NIC).
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string} (optional)
+net client name
+@end table
+
+@b{Returns:}
+list of @code{RxFilterInfo} for all NICs (or for the given NIC).
+Returns an error if the given @code{name} doesn't exist, or given
+NIC doesn't support rx-filter querying, or given net client
+isn't a NIC.
+
+@b{Since:}
+1.6
+
+@b{Example:}
+@example
+-> @{ "execute": "query-rx-filter", "arguments": @{ "name": "vnet0" @} @}
+<- @{ "return": [
+ @{
+ "promiscuous": true,
+ "name": "vnet0",
+ "main-mac": "52:54:00:12:34:56",
+ "unicast": "normal",
+ "vlan": "normal",
+ "vlan-table": [
+ 4,
+ 0
+ ],
+ "unicast-table": [
+ ],
+ "multicast": "normal",
+ "multicast-overflow": false,
+ "unicast-overflow": false,
+ "multicast-table": [
+ "01:00:5e:00:00:01",
+ "33:33:00:00:00:01",
+ "33:33:ff:12:34:56"
+ ],
+ "broadcast-allowed": false
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} NIC_RX_FILTER_CHANGED
+
+Emitted once until the 'query-rx-filter' command is executed, the first event
+will always be emitted
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string} (optional)
+net client name
+@item @code{path: string}
+device path
+@end table
+
+@b{Since:}
+1.6
+
+@b{Example:}
+@example
+<- @{ "event": "NIC_RX_FILTER_CHANGED",
+ "data": @{ "name": "vnet0",
+ "path": "/machine/peripheral/vnet0/virtio-backend" @},
+ "timestamp": @{ "seconds": 1368697518, "microseconds": 326866 @} @}
+ @}
+@end example
+
+@end deftypefn
+
+
+@section Rocker switch device
+
+
+@deftp {Object} RockerSwitch
+
+Rocker switch information.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+switch name
+@item @code{id: int}
+switch ID
+@item @code{ports: int}
+number of front-panel ports
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} query-rocker
+
+Return rocker switch information.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+Not documented
+@end table
+
+@b{Returns:}
+@code{Rocker} information
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "query-rocker", "arguments": @{ "name": "sw1" @} @}
+<- @{ "return": @{"name": "sw1", "ports": 2, "id": 1327446905938@}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} RockerPortDuplex
+
+An eumeration of port duplex states.
+
+@b{Values:}
+@table @asis
+@item @code{half}
+half duplex
+@item @code{full}
+full duplex
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Enum} RockerPortAutoneg
+
+An eumeration of port autoneg states.
+
+@b{Values:}
+@table @asis
+@item @code{off}
+autoneg is off
+@item @code{on}
+autoneg is on
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} RockerPort
+
+Rocker switch port information.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+port name
+@item @code{enabled: boolean}
+port is enabled for I/O
+@item @code{link-up: boolean}
+physical link is UP on port
+@item @code{speed: int}
+port link speed in Mbps
+@item @code{duplex: RockerPortDuplex}
+port link duplex
+@item @code{autoneg: RockerPortAutoneg}
+port link autoneg
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} query-rocker-ports
+
+Return rocker switch port information.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+Not documented
+@end table
+
+@b{Returns:}
+a list of @code{RockerPort} information
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "query-rocker-ports", "arguments": @{ "name": "sw1" @} @}
+<- @{ "return": [ @{"duplex": "full", "enabled": true, "name": "sw1.1",
+ "autoneg": "off", "link-up": true, "speed": 10000@},
+ @{"duplex": "full", "enabled": true, "name": "sw1.2",
+ "autoneg": "off", "link-up": true, "speed": 10000@}
+ ]@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} RockerOfDpaFlowKey
+
+Rocker switch OF-DPA flow key
+
+@b{Members:}
+@table @asis
+@item @code{priority: int}
+key priority, 0 being lowest priority
+@item @code{tbl-id: int}
+flow table ID
+@item @code{in-pport: int} (optional)
+physical input port
+@item @code{tunnel-id: int} (optional)
+tunnel ID
+@item @code{vlan-id: int} (optional)
+VLAN ID
+@item @code{eth-type: int} (optional)
+Ethernet header type
+@item @code{eth-src: string} (optional)
+Ethernet header source MAC address
+@item @code{eth-dst: string} (optional)
+Ethernet header destination MAC address
+@item @code{ip-proto: int} (optional)
+IP Header protocol field
+@item @code{ip-tos: int} (optional)
+IP header TOS field
+@item @code{ip-dst: string} (optional)
+IP header destination address
+@end table
+
+@b{Note:}
+optional members may or may not appear in the flow key
+depending if they're relevant to the flow key.
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} RockerOfDpaFlowMask
+
+Rocker switch OF-DPA flow mask
+
+@b{Members:}
+@table @asis
+@item @code{in-pport: int} (optional)
+physical input port
+@item @code{tunnel-id: int} (optional)
+tunnel ID
+@item @code{vlan-id: int} (optional)
+VLAN ID
+@item @code{eth-src: string} (optional)
+Ethernet header source MAC address
+@item @code{eth-dst: string} (optional)
+Ethernet header destination MAC address
+@item @code{ip-proto: int} (optional)
+IP Header protocol field
+@item @code{ip-tos: int} (optional)
+IP header TOS field
+@end table
+
+@b{Note:}
+optional members may or may not appear in the flow mask
+depending if they're relevant to the flow mask.
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} RockerOfDpaFlowAction
+
+Rocker switch OF-DPA flow action
+
+@b{Members:}
+@table @asis
+@item @code{goto-tbl: int} (optional)
+next table ID
+@item @code{group-id: int} (optional)
+group ID
+@item @code{tunnel-lport: int} (optional)
+tunnel logical port ID
+@item @code{vlan-id: int} (optional)
+VLAN ID
+@item @code{new-vlan-id: int} (optional)
+new VLAN ID
+@item @code{out-pport: int} (optional)
+physical output port
+@end table
+
+@b{Note:}
+optional members may or may not appear in the flow action
+depending if they're relevant to the flow action.
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} RockerOfDpaFlow
+
+Rocker switch OF-DPA flow
+
+@b{Members:}
+@table @asis
+@item @code{cookie: int}
+flow unique cookie ID
+@item @code{hits: int}
+count of matches (hits) on flow
+@item @code{key: RockerOfDpaFlowKey}
+flow key
+@item @code{mask: RockerOfDpaFlowMask}
+flow mask
+@item @code{action: RockerOfDpaFlowAction}
+flow action
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} query-rocker-of-dpa-flows
+
+Return rocker OF-DPA flow information.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+switch name
+@item @code{tbl-id: int} (optional)
+flow table ID. If tbl-id is not specified, returns
+flow information for all tables.
+@end table
+
+@b{Returns:}
+rocker OF-DPA flow information
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "query-rocker-of-dpa-flows",
+ "arguments": @{ "name": "sw1" @} @}
+<- @{ "return": [ @{"key": @{"in-pport": 0, "priority": 1, "tbl-id": 0@},
+ "hits": 138,
+ "cookie": 0,
+ "action": @{"goto-tbl": 10@},
+ "mask": @{"in-pport": 4294901760@}
+ @},
+ @{...more...@},
+ ]@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} RockerOfDpaGroup
+
+Rocker switch OF-DPA group
+
+@b{Members:}
+@table @asis
+@item @code{id: int}
+group unique ID
+@item @code{type: int}
+group type
+@item @code{vlan-id: int} (optional)
+VLAN ID
+@item @code{pport: int} (optional)
+physical port number
+@item @code{index: int} (optional)
+group index, unique with group type
+@item @code{out-pport: int} (optional)
+output physical port number
+@item @code{group-id: int} (optional)
+next group ID
+@item @code{set-vlan-id: int} (optional)
+VLAN ID to set
+@item @code{pop-vlan: int} (optional)
+pop VLAN headr from packet
+@item @code{group-ids: array of int} (optional)
+list of next group IDs
+@item @code{set-eth-src: string} (optional)
+set source MAC address in Ethernet header
+@item @code{set-eth-dst: string} (optional)
+set destination MAC address in Ethernet header
+@item @code{ttl-check: int} (optional)
+perform TTL check
+@end table
+
+@b{Note:}
+optional members may or may not appear in the group depending
+if they're relevant to the group type.
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} query-rocker-of-dpa-groups
+
+Return rocker OF-DPA group information.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+switch name
+@item @code{type: int} (optional)
+group type. If type is not specified, returns
+group information for all group types.
+@end table
+
+@b{Returns:}
+rocker OF-DPA group information
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "query-rocker-of-dpa-groups",
+ "arguments": @{ "name": "sw1" @} @}
+<- @{ "return": [ @{"type": 0, "out-pport": 2,
+ "pport": 2, "vlan-id": 3841,
+ "pop-vlan": 1, "id": 251723778@},
+ @{"type": 0, "out-pport": 0,
+ "pport": 0, "vlan-id": 3841,
+ "pop-vlan": 1, "id": 251723776@},
+ @{"type": 0, "out-pport": 1,
+ "pport": 1, "vlan-id": 3840,
+ "pop-vlan": 1, "id": 251658241@},
+ @{"type": 0, "out-pport": 0,
+ "pport": 0, "vlan-id": 3840,
+ "pop-vlan": 1, "id": 251658240@}
+ ]@}
+@end example
+
+@end deftypefn
+
+
+@section TPM (trusted platform module) devices
+
+
+@deftp {Enum} TpmModel
+
+An enumeration of TPM models
+
+@b{Values:}
+@table @asis
+@item @code{tpm-tis}
+TPM TIS model
+@item @code{tpm-crb}
+TPM CRB model (since 2.12)
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftypefn Command {} query-tpm-models
+
+Return a list of supported TPM models
+
+@b{Returns:}
+a list of TpmModel
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+-> @{ "execute": "query-tpm-models" @}
+<- @{ "return": [ "tpm-tis", "tpm-crb" ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} TpmType
+
+An enumeration of TPM types
+
+@b{Values:}
+@table @asis
+@item @code{passthrough}
+TPM passthrough type
+@item @code{emulator}
+Software Emulator TPM type
+Since: 2.11
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftypefn Command {} query-tpm-types
+
+Return a list of supported TPM types
+
+@b{Returns:}
+a list of TpmType
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+-> @{ "execute": "query-tpm-types" @}
+<- @{ "return": [ "passthrough", "emulator" ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} TPMPassthroughOptions
+
+Information about the TPM passthrough type
+
+@b{Members:}
+@table @asis
+@item @code{path: string} (optional)
+string describing the path used for accessing the TPM device
+@item @code{cancel-path: string} (optional)
+string showing the TPM's sysfs cancel file
+for cancellation of TPM commands while they are executing
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} TPMEmulatorOptions
+
+Information about the TPM emulator type
+
+@b{Members:}
+@table @asis
+@item @code{chardev: string}
+Name of a unix socket chardev
+@end table
+
+@b{Since:}
+2.11
+
+@end deftp
+
+
+
+@deftp {Object} TpmTypeOptions
+
+A union referencing different TPM backend types' configuration options
+
+@b{Members:}
+@table @asis
+@item @code{type}
+'passthrough' The configuration options for the TPM passthrough type
+'emulator' The configuration options for TPM emulator backend type
+@item @code{data: TPMPassthroughOptions} when @code{type} is @t{"passthrough"}
+@item @code{data: TPMEmulatorOptions} when @code{type} is @t{"emulator"}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} TPMInfo
+
+Information about the TPM
+
+@b{Members:}
+@table @asis
+@item @code{id: string}
+The Id of the TPM
+@item @code{model: TpmModel}
+The TPM frontend model
+@item @code{options: TpmTypeOptions}
+The TPM (backend) type configuration options
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftypefn Command {} query-tpm
+
+Return information about the TPM device
+
+@b{Returns:}
+@code{TPMInfo} on success
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+-> @{ "execute": "query-tpm" @}
+<- @{ "return":
+ [
+ @{ "model": "tpm-tis",
+ "options":
+ @{ "type": "passthrough",
+ "data":
+ @{ "cancel-path": "/sys/class/misc/tpm0/device/cancel",
+ "path": "/dev/tpm0"
+ @}
+ @},
+ "id": "tpm0"
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+@section Remote desktop
+
+
+@deftypefn Command {} set_password
+
+Sets the password of a remote display session.
+
+@b{Arguments:}
+@table @asis
+@item @code{protocol: string}
+`vnc' to modify the VNC server password
+`spice' to modify the Spice server password
+@item @code{password: string}
+the new password
+@item @code{connected: string} (optional)
+how to handle existing clients when changing the
+password. If nothing is specified, defaults to `keep'
+`fail' to fail the command if clients are connected
+`disconnect' to disconnect existing clients
+`keep' to maintain existing clients
+@end table
+
+@b{Returns:}
+Nothing on success
+If Spice is not enabled, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "set_password", "arguments": @{ "protocol": "vnc",
+ "password": "secret" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} expire_password
+
+Expire the password of a remote display server.
+
+@b{Arguments:}
+@table @asis
+@item @code{protocol: string}
+the name of the remote display protocol `vnc' or `spice'
+@item @code{time: string}
+when to expire the password.
+`now' to expire the password immediately
+`never' to cancel password expiration
+`+INT' where INT is the number of seconds from now (integer)
+`INT' where INT is the absolute time in seconds
+@end table
+
+@b{Returns:}
+Nothing on success
+If @code{protocol} is `spice' and Spice is not active, DeviceNotFound
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+Time is relative to the server and currently there is no way to
+coordinate server time with client time. It is not recommended to
+use the absolute time version of the @code{time} parameter unless you're
+sure you are on the same machine as the QEMU instance.
+
+@b{Example:}
+@example
+-> @{ "execute": "expire_password", "arguments": @{ "protocol": "vnc",
+ "time": "+60" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} screendump
+
+Write a PPM of the VGA screen to a file.
+
+@b{Arguments:}
+@table @asis
+@item @code{filename: string}
+the path of a new PPM file to store the image
+@item @code{device: string} (optional)
+ID of the display device that should be dumped. If this parameter
+is missing, the primary display will be used. (Since 2.12)
+@item @code{head: int} (optional)
+head to use in case the device supports multiple heads. If this
+parameter is missing, head #0 will be used. Also note that the head
+can only be specified in conjunction with the device ID. (Since 2.12)
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "screendump",
+ "arguments": @{ "filename": "/tmp/image" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+@subsection Spice
+
+
+@deftp {Object} SpiceBasicInfo
+
+The basic information for SPICE network connection
+
+@b{Members:}
+@table @asis
+@item @code{host: string}
+IP address
+@item @code{port: string}
+port number
+@item @code{family: NetworkAddressFamily}
+address family
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} SpiceServerInfo
+
+Information about a SPICE server
+
+@b{Members:}
+@table @asis
+@item @code{auth: string} (optional)
+authentication method
+@item The members of @code{SpiceBasicInfo}
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} SpiceChannel
+
+Information about a SPICE client channel.
+
+@b{Members:}
+@table @asis
+@item @code{connection-id: int}
+SPICE connection id number. All channels with the same id
+belong to the same SPICE session.
+@item @code{channel-type: int}
+SPICE channel type number. "1" is the main control
+channel, filter for this one if you want to track spice
+sessions only
+@item @code{channel-id: int}
+SPICE channel ID number. Usually "0", might be different when
+multiple channels of the same type exist, such as multiple
+display channels in a multihead setup
+@item @code{tls: boolean}
+true if the channel is encrypted, false otherwise.
+@item The members of @code{SpiceBasicInfo}
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Enum} SpiceQueryMouseMode
+
+An enumeration of Spice mouse states.
+
+@b{Values:}
+@table @asis
+@item @code{client}
+Mouse cursor position is determined by the client.
+@item @code{server}
+Mouse cursor position is determined by the server.
+@item @code{unknown}
+No information is available about mouse mode used by
+the spice server.
+@end table
+
+@b{Note:}
+spice/enums.h has a SpiceMouseMode already, hence the name.
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftp {Object} SpiceInfo
+
+Information about the SPICE session.
+
+@b{Members:}
+@table @asis
+@item @code{enabled: boolean}
+true if the SPICE server is enabled, false otherwise
+@item @code{migrated: boolean}
+true if the last guest migration completed and spice
+migration had completed as well. false otherwise. (since 1.4)
+@item @code{host: string} (optional)
+The hostname the SPICE server is bound to. This depends on
+the name resolution on the host and may be an IP address.
+@item @code{port: int} (optional)
+The SPICE server's port number.
+@item @code{compiled-version: string} (optional)
+SPICE server version.
+@item @code{tls-port: int} (optional)
+The SPICE server's TLS port number.
+@item @code{auth: string} (optional)
+the current authentication type used by the server
+'none' if no authentication is being used
+'spice' uses SASL or direct TLS authentication, depending on command
+line options
+@item @code{mouse-mode: SpiceQueryMouseMode}
+The mode in which the mouse cursor is displayed currently. Can
+be determined by the client or the server, or unknown if spice
+server doesn't provide this information. (since: 1.1)
+@item @code{channels: array of SpiceChannel} (optional)
+a list of @code{SpiceChannel} for each active spice channel
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-spice
+
+Returns information about the current SPICE server
+
+@b{Returns:}
+@code{SpiceInfo}
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-spice" @}
+<- @{ "return": @{
+ "enabled": true,
+ "auth": "spice",
+ "port": 5920,
+ "tls-port": 5921,
+ "host": "0.0.0.0",
+ "channels": [
+ @{
+ "port": "54924",
+ "family": "ipv4",
+ "channel-type": 1,
+ "connection-id": 1804289383,
+ "host": "127.0.0.1",
+ "channel-id": 0,
+ "tls": true
+ @},
+ @{
+ "port": "36710",
+ "family": "ipv4",
+ "channel-type": 4,
+ "connection-id": 1804289383,
+ "host": "127.0.0.1",
+ "channel-id": 0,
+ "tls": false
+ @},
+ [ ... more channels follow ... ]
+ ]
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SPICE_CONNECTED
+
+Emitted when a SPICE client establishes a connection
+
+@b{Arguments:}
+@table @asis
+@item @code{server: SpiceBasicInfo}
+server information
+@item @code{client: SpiceBasicInfo}
+client information
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+<- @{ "timestamp": @{"seconds": 1290688046, "microseconds": 388707@},
+ "event": "SPICE_CONNECTED",
+ "data": @{
+ "server": @{ "port": "5920", "family": "ipv4", "host": "127.0.0.1"@},
+ "client": @{"port": "52873", "family": "ipv4", "host": "127.0.0.1"@}
+ @}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SPICE_INITIALIZED
+
+Emitted after initial handshake and authentication takes place (if any)
+and the SPICE channel is up and running
+
+@b{Arguments:}
+@table @asis
+@item @code{server: SpiceServerInfo}
+server information
+@item @code{client: SpiceChannel}
+client information
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+<- @{ "timestamp": @{"seconds": 1290688046, "microseconds": 417172@},
+ "event": "SPICE_INITIALIZED",
+ "data": @{"server": @{"auth": "spice", "port": "5921",
+ "family": "ipv4", "host": "127.0.0.1"@},
+ "client": @{"port": "49004", "family": "ipv4", "channel-type": 3,
+ "connection-id": 1804289383, "host": "127.0.0.1",
+ "channel-id": 0, "tls": true@}
+ @}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SPICE_DISCONNECTED
+
+Emitted when the SPICE connection is closed
+
+@b{Arguments:}
+@table @asis
+@item @code{server: SpiceBasicInfo}
+server information
+@item @code{client: SpiceBasicInfo}
+client information
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+<- @{ "timestamp": @{"seconds": 1290688046, "microseconds": 388707@},
+ "event": "SPICE_DISCONNECTED",
+ "data": @{
+ "server": @{ "port": "5920", "family": "ipv4", "host": "127.0.0.1"@},
+ "client": @{"port": "52873", "family": "ipv4", "host": "127.0.0.1"@}
+ @}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} SPICE_MIGRATE_COMPLETED
+
+Emitted when SPICE migration has completed
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+<- @{ "timestamp": @{"seconds": 1290688046, "microseconds": 417172@},
+ "event": "SPICE_MIGRATE_COMPLETED" @}
+@end example
+
+@end deftypefn
+
+
+@subsection VNC
+
+
+@deftp {Object} VncBasicInfo
+
+The basic information for vnc network connection
+
+@b{Members:}
+@table @asis
+@item @code{host: string}
+IP address
+@item @code{service: string}
+The service name of the vnc port. This may depend on the host
+system's service database so symbolic names should not be relied
+on.
+@item @code{family: NetworkAddressFamily}
+address family
+@item @code{websocket: boolean}
+true in case the socket is a websocket (since 2.3).
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} VncServerInfo
+
+The network connection information for server
+
+@b{Members:}
+@table @asis
+@item @code{auth: string} (optional)
+authentication method used for
+the plain (non-websocket) VNC server
+@item The members of @code{VncBasicInfo}
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} VncClientInfo
+
+Information about a connected VNC client.
+
+@b{Members:}
+@table @asis
+@item @code{x509_dname: string} (optional)
+If x509 authentication is in use, the Distinguished
+Name of the client.
+@item @code{sasl_username: string} (optional)
+If SASL authentication is in use, the SASL username
+used for authentication.
+@item The members of @code{VncBasicInfo}
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} VncInfo
+
+Information about the VNC session.
+
+@b{Members:}
+@table @asis
+@item @code{enabled: boolean}
+true if the VNC server is enabled, false otherwise
+@item @code{host: string} (optional)
+The hostname the VNC server is bound to. This depends on
+the name resolution on the host and may be an IP address.
+@item @code{family: NetworkAddressFamily} (optional)
+'ipv6' if the host is listening for IPv6 connections
+'ipv4' if the host is listening for IPv4 connections
+'unix' if the host is listening on a unix domain socket
+'unknown' otherwise
+@item @code{service: string} (optional)
+The service name of the server's port. This may depends
+on the host system's service database so symbolic names should not
+be relied on.
+@item @code{auth: string} (optional)
+the current authentication type used by the server
+'none' if no authentication is being used
+'vnc' if VNC authentication is being used
+'vencrypt+plain' if VEncrypt is used with plain text authentication
+'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
+'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
+'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
+'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
+'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
+'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
+'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
+'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
+@item @code{clients: array of VncClientInfo} (optional)
+a list of @code{VncClientInfo} of all currently connected clients
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Enum} VncPrimaryAuth
+
+vnc primary authentication method.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+Not documented
+@item @code{vnc}
+Not documented
+@item @code{ra2}
+Not documented
+@item @code{ra2ne}
+Not documented
+@item @code{tight}
+Not documented
+@item @code{ultra}
+Not documented
+@item @code{tls}
+Not documented
+@item @code{vencrypt}
+Not documented
+@item @code{sasl}
+Not documented
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftp {Enum} VncVencryptSubAuth
+
+vnc sub authentication method with vencrypt.
+
+@b{Values:}
+@table @asis
+@item @code{plain}
+Not documented
+@item @code{tls-none}
+Not documented
+@item @code{x509-none}
+Not documented
+@item @code{tls-vnc}
+Not documented
+@item @code{x509-vnc}
+Not documented
+@item @code{tls-plain}
+Not documented
+@item @code{x509-plain}
+Not documented
+@item @code{tls-sasl}
+Not documented
+@item @code{x509-sasl}
+Not documented
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftp {Object} VncServerInfo2
+
+The network connection information for server
+
+@b{Members:}
+@table @asis
+@item @code{auth: VncPrimaryAuth}
+The current authentication type used by the servers
+@item @code{vencrypt: VncVencryptSubAuth} (optional)
+The vencrypt sub authentication type used by the
+servers, only specified in case auth == vencrypt.
+@item The members of @code{VncBasicInfo}
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftp {Object} VncInfo2
+
+Information about a vnc server
+
+@b{Members:}
+@table @asis
+@item @code{id: string}
+vnc server name.
+@item @code{server: array of VncServerInfo2}
+A list of @code{VncBasincInfo} describing all listening sockets.
+The list can be empty (in case the vnc server is disabled).
+It also may have multiple entries: normal + websocket,
+possibly also ipv4 + ipv6 in the future.
+@item @code{clients: array of VncClientInfo}
+A list of @code{VncClientInfo} of all currently connected clients.
+The list can be empty, for obvious reasons.
+@item @code{auth: VncPrimaryAuth}
+The current authentication type used by the non-websockets servers
+@item @code{vencrypt: VncVencryptSubAuth} (optional)
+The vencrypt authentication type used by the servers,
+only specified in case auth == vencrypt.
+@item @code{display: string} (optional)
+The display device the vnc server is linked to.
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftypefn Command {} query-vnc
+
+Returns information about the current VNC server
+
+@b{Returns:}
+@code{VncInfo}
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-vnc" @}
+<- @{ "return": @{
+ "enabled":true,
+ "host":"0.0.0.0",
+ "service":"50402",
+ "auth":"vnc",
+ "family":"ipv4",
+ "clients":[
+ @{
+ "host":"127.0.0.1",
+ "service":"50401",
+ "family":"ipv4"
+ @}
+ ]
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} query-vnc-servers
+
+Returns a list of vnc servers. The list can be empty.
+
+@b{Returns:}
+a list of @code{VncInfo2}
+
+@b{Since:}
+2.3
+
+@end deftypefn
+
+
+
+@deftypefn Command {} change-vnc-password
+
+Change the VNC server password.
+
+@b{Arguments:}
+@table @asis
+@item @code{password: string}
+the new password to use with VNC authentication
+@end table
+
+@b{Since:}
+1.1
+
+@b{Notes:}
+An empty password in this command will set the password to the empty
+string. Existing clients are unaffected by executing this command.
+
+@end deftypefn
+
+
+
+@deftypefn Event {} VNC_CONNECTED
+
+Emitted when a VNC client establishes a connection
+
+@b{Arguments:}
+@table @asis
+@item @code{server: VncServerInfo}
+server information
+@item @code{client: VncBasicInfo}
+client information
+@end table
+
+@b{Note:}
+This event is emitted before any authentication takes place, thus
+the authentication ID is not provided
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "VNC_CONNECTED",
+ "data": @{
+ "server": @{ "auth": "sasl", "family": "ipv4",
+ "service": "5901", "host": "0.0.0.0" @},
+ "client": @{ "family": "ipv4", "service": "58425",
+ "host": "127.0.0.1" @} @},
+ "timestamp": @{ "seconds": 1262976601, "microseconds": 975795 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} VNC_INITIALIZED
+
+Emitted after authentication takes place (if any) and the VNC session is
+made active
+
+@b{Arguments:}
+@table @asis
+@item @code{server: VncServerInfo}
+server information
+@item @code{client: VncClientInfo}
+client information
+@end table
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "VNC_INITIALIZED",
+ "data": @{
+ "server": @{ "auth": "sasl", "family": "ipv4",
+ "service": "5901", "host": "0.0.0.0"@},
+ "client": @{ "family": "ipv4", "service": "46089",
+ "host": "127.0.0.1", "sasl_username": "luiz" @} @},
+ "timestamp": @{ "seconds": 1263475302, "microseconds": 150772 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} VNC_DISCONNECTED
+
+Emitted when the connection is closed
+
+@b{Arguments:}
+@table @asis
+@item @code{server: VncServerInfo}
+server information
+@item @code{client: VncClientInfo}
+client information
+@end table
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "VNC_DISCONNECTED",
+ "data": @{
+ "server": @{ "auth": "sasl", "family": "ipv4",
+ "service": "5901", "host": "0.0.0.0" @},
+ "client": @{ "family": "ipv4", "service": "58425",
+ "host": "127.0.0.1", "sasl_username": "luiz" @} @},
+ "timestamp": @{ "seconds": 1262976601, "microseconds": 975795 @} @}
+@end example
+
+@end deftypefn
+
+
+@section Input
+
+
+@deftp {Object} MouseInfo
+
+Information about a mouse device.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the name of the mouse device
+@item @code{index: int}
+the index of the mouse device
+@item @code{current: boolean}
+true if this device is currently receiving mouse events
+@item @code{absolute: boolean}
+true if this device supports absolute coordinates as input
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-mice
+
+Returns information about each active mouse device
+
+@b{Returns:}
+a list of @code{MouseInfo} for each device
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-mice" @}
+<- @{ "return": [
+ @{
+ "name":"QEMU Microsoft Mouse",
+ "index":0,
+ "current":false,
+ "absolute":false
+ @},
+ @{
+ "name":"QEMU PS/2 Mouse",
+ "index":1,
+ "current":true,
+ "absolute":true
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} QKeyCode
+
+An enumeration of key name.
+
+This is used by the @code{send-key} command.
+
+@b{Values:}
+@table @asis
+@item @code{unmapped}
+since 2.0
+@item @code{pause}
+since 2.0
+@item @code{ro}
+since 2.4
+@item @code{kp_comma}
+since 2.4
+@item @code{kp_equals}
+since 2.6
+@item @code{power}
+since 2.6
+@item @code{hiragana}
+since 2.9
+@item @code{henkan}
+since 2.9
+@item @code{yen}
+since 2.9
+@item @code{sleep}
+since 2.10
+@item @code{wake}
+since 2.10
+@item @code{audionext}
+since 2.10
+@item @code{audioprev}
+since 2.10
+@item @code{audiostop}
+since 2.10
+@item @code{audioplay}
+since 2.10
+@item @code{audiomute}
+since 2.10
+@item @code{volumeup}
+since 2.10
+@item @code{volumedown}
+since 2.10
+@item @code{mediaselect}
+since 2.10
+@item @code{mail}
+since 2.10
+@item @code{calculator}
+since 2.10
+@item @code{computer}
+since 2.10
+@item @code{ac_home}
+since 2.10
+@item @code{ac_back}
+since 2.10
+@item @code{ac_forward}
+since 2.10
+@item @code{ac_refresh}
+since 2.10
+@item @code{ac_bookmarks}
+since 2.10
+altgr, altgr_r: dropped in 2.10
+@item @code{muhenkan}
+since 2.12
+@item @code{katakanahiragana}
+since 2.12
+@item @code{shift}
+Not documented
+@item @code{shift_r}
+Not documented
+@item @code{alt}
+Not documented
+@item @code{alt_r}
+Not documented
+@item @code{ctrl}
+Not documented
+@item @code{ctrl_r}
+Not documented
+@item @code{menu}
+Not documented
+@item @code{esc}
+Not documented
+@item @code{1}
+Not documented
+@item @code{2}
+Not documented
+@item @code{3}
+Not documented
+@item @code{4}
+Not documented
+@item @code{5}
+Not documented
+@item @code{6}
+Not documented
+@item @code{7}
+Not documented
+@item @code{8}
+Not documented
+@item @code{9}
+Not documented
+@item @code{0}
+Not documented
+@item @code{minus}
+Not documented
+@item @code{equal}
+Not documented
+@item @code{backspace}
+Not documented
+@item @code{tab}
+Not documented
+@item @code{q}
+Not documented
+@item @code{w}
+Not documented
+@item @code{e}
+Not documented
+@item @code{r}
+Not documented
+@item @code{t}
+Not documented
+@item @code{y}
+Not documented
+@item @code{u}
+Not documented
+@item @code{i}
+Not documented
+@item @code{o}
+Not documented
+@item @code{p}
+Not documented
+@item @code{bracket_left}
+Not documented
+@item @code{bracket_right}
+Not documented
+@item @code{ret}
+Not documented
+@item @code{a}
+Not documented
+@item @code{s}
+Not documented
+@item @code{d}
+Not documented
+@item @code{f}
+Not documented
+@item @code{g}
+Not documented
+@item @code{h}
+Not documented
+@item @code{j}
+Not documented
+@item @code{k}
+Not documented
+@item @code{l}
+Not documented
+@item @code{semicolon}
+Not documented
+@item @code{apostrophe}
+Not documented
+@item @code{grave_accent}
+Not documented
+@item @code{backslash}
+Not documented
+@item @code{z}
+Not documented
+@item @code{x}
+Not documented
+@item @code{c}
+Not documented
+@item @code{v}
+Not documented
+@item @code{b}
+Not documented
+@item @code{n}
+Not documented
+@item @code{m}
+Not documented
+@item @code{comma}
+Not documented
+@item @code{dot}
+Not documented
+@item @code{slash}
+Not documented
+@item @code{asterisk}
+Not documented
+@item @code{spc}
+Not documented
+@item @code{caps_lock}
+Not documented
+@item @code{f1}
+Not documented
+@item @code{f2}
+Not documented
+@item @code{f3}
+Not documented
+@item @code{f4}
+Not documented
+@item @code{f5}
+Not documented
+@item @code{f6}
+Not documented
+@item @code{f7}
+Not documented
+@item @code{f8}
+Not documented
+@item @code{f9}
+Not documented
+@item @code{f10}
+Not documented
+@item @code{num_lock}
+Not documented
+@item @code{scroll_lock}
+Not documented
+@item @code{kp_divide}
+Not documented
+@item @code{kp_multiply}
+Not documented
+@item @code{kp_subtract}
+Not documented
+@item @code{kp_add}
+Not documented
+@item @code{kp_enter}
+Not documented
+@item @code{kp_decimal}
+Not documented
+@item @code{sysrq}
+Not documented
+@item @code{kp_0}
+Not documented
+@item @code{kp_1}
+Not documented
+@item @code{kp_2}
+Not documented
+@item @code{kp_3}
+Not documented
+@item @code{kp_4}
+Not documented
+@item @code{kp_5}
+Not documented
+@item @code{kp_6}
+Not documented
+@item @code{kp_7}
+Not documented
+@item @code{kp_8}
+Not documented
+@item @code{kp_9}
+Not documented
+@item @code{less}
+Not documented
+@item @code{f11}
+Not documented
+@item @code{f12}
+Not documented
+@item @code{print}
+Not documented
+@item @code{home}
+Not documented
+@item @code{pgup}
+Not documented
+@item @code{pgdn}
+Not documented
+@item @code{end}
+Not documented
+@item @code{left}
+Not documented
+@item @code{up}
+Not documented
+@item @code{down}
+Not documented
+@item @code{right}
+Not documented
+@item @code{insert}
+Not documented
+@item @code{delete}
+Not documented
+@item @code{stop}
+Not documented
+@item @code{again}
+Not documented
+@item @code{props}
+Not documented
+@item @code{undo}
+Not documented
+@item @code{front}
+Not documented
+@item @code{copy}
+Not documented
+@item @code{open}
+Not documented
+@item @code{paste}
+Not documented
+@item @code{find}
+Not documented
+@item @code{cut}
+Not documented
+@item @code{lf}
+Not documented
+@item @code{help}
+Not documented
+@item @code{meta_l}
+Not documented
+@item @code{meta_r}
+Not documented
+@item @code{compose}
+Not documented
+@end table
+'sysrq' was mistakenly added to hack around the fact that
+the ps2 driver was not generating correct scancodes sequences
+when 'alt+print' was pressed. This flaw is now fixed and the
+'sysrq' key serves no further purpose. Any further use of
+'sysrq' will be transparently changed to 'print', so they
+are effectively synonyms.
+
+@b{Since:}
+1.3.0
+
+@end deftp
+
+
+
+@deftp {Object} KeyValue
+
+Represents a keyboard key.
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"number"}, @t{"qcode"}
+@item @code{data: int} when @code{type} is @t{"number"}
+@item @code{data: QKeyCode} when @code{type} is @t{"qcode"}
+@end table
+
+@b{Since:}
+1.3.0
+
+@end deftp
+
+
+
+@deftypefn Command {} send-key
+
+Send keys to guest.
+
+@b{Arguments:}
+@table @asis
+@item @code{keys: array of KeyValue}
+An array of @code{KeyValue} elements. All @code{KeyValues} in this array are
+simultaneously sent to the guest. A @code{KeyValue}.number value is sent
+directly to the guest, while @code{KeyValue}.qcode must be a valid
+@code{QKeyCode} value
+@item @code{hold-time: int} (optional)
+time to delay key up events, milliseconds. Defaults
+to 100
+@end table
+
+@b{Returns:}
+Nothing on success
+If key is unknown or redundant, InvalidParameter
+
+@b{Since:}
+1.3.0
+
+@b{Example:}
+@example
+-> @{ "execute": "send-key",
+ "arguments": @{ "keys": [ @{ "type": "qcode", "data": "ctrl" @},
+ @{ "type": "qcode", "data": "alt" @},
+ @{ "type": "qcode", "data": "delete" @} ] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} InputButton
+
+Button of a pointer input device (mouse, tablet).
+
+@b{Values:}
+@table @asis
+@item @code{side}
+front side button of a 5-button mouse (since 2.9)
+@item @code{extra}
+rear side button of a 5-button mouse (since 2.9)
+@item @code{left}
+Not documented
+@item @code{middle}
+Not documented
+@item @code{right}
+Not documented
+@item @code{wheel-up}
+Not documented
+@item @code{wheel-down}
+Not documented
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Enum} InputAxis
+
+Position axis of a pointer input device (mouse, tablet).
+
+@b{Values:}
+@table @asis
+@item @code{x}
+Not documented
+@item @code{y}
+Not documented
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Object} InputKeyEvent
+
+Keyboard input event.
+
+@b{Members:}
+@table @asis
+@item @code{key: KeyValue}
+Which key this event is for.
+@item @code{down: boolean}
+True for key-down and false for key-up events.
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Object} InputBtnEvent
+
+Pointer button input event.
+
+@b{Members:}
+@table @asis
+@item @code{button: InputButton}
+Which button this event is for.
+@item @code{down: boolean}
+True for key-down and false for key-up events.
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Object} InputMoveEvent
+
+Pointer motion input event.
+
+@b{Members:}
+@table @asis
+@item @code{axis: InputAxis}
+Which axis is referenced by @code{value}.
+@item @code{value: int}
+Pointer position. For absolute coordinates the
+valid range is 0 -> 0x7ffff
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftp {Object} InputEvent
+
+Input event union.
+
+@b{Members:}
+@table @asis
+@item @code{type}
+the input type, one of:
+@itemize @minus
+@item
+'key': Input event of Keyboard
+@item
+'btn': Input event of pointer buttons
+@item
+'rel': Input event of relative pointer motion
+@item
+'abs': Input event of absolute pointer motion
+@end itemize
+
+@item @code{data: InputKeyEvent} when @code{type} is @t{"key"}
+@item @code{data: InputBtnEvent} when @code{type} is @t{"btn"}
+@item @code{data: InputMoveEvent} when @code{type} is @t{"rel"}
+@item @code{data: InputMoveEvent} when @code{type} is @t{"abs"}
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} input-send-event
+
+Send input event(s) to guest.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+display device to send event(s) to.
+@item @code{head: int} (optional)
+head to send event(s) to, in case the
+display device supports multiple scanouts.
+@item @code{events: array of InputEvent}
+List of InputEvent union.
+@end table
+
+@b{Returns:}
+Nothing on success.
+
+The @code{device} and @code{head} parameters can be used to send the input event
+to specific input devices in case (a) multiple input devices of the
+same kind are added to the virtual machine and (b) you have
+configured input routing (see docs/multiseat.txt) for those input
+devices. The parameters work exactly like the device and head
+properties of input devices. If @code{device} is missing, only devices
+that have no input routing config are admissible. If @code{device} is
+specified, both input devices with and without input routing config
+are admissible, but devices with input routing config take
+precedence.
+
+@b{Since:}
+2.6
+
+@b{Note:}
+The consoles are visible in the qom tree, under
+/backend/console[$index]. They have a device link and head property,
+so it is possible to map which console belongs to which device and
+display.
+
+@b{Example:}
+@example
+1. Press left mouse button.
+
+-> @{ "execute": "input-send-event",
+ "arguments": @{ "device": "video0",
+ "events": [ @{ "type": "btn",
+ "data" : @{ "down": true, "button": "left" @} @} ] @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "input-send-event",
+ "arguments": @{ "device": "video0",
+ "events": [ @{ "type": "btn",
+ "data" : @{ "down": false, "button": "left" @} @} ] @} @}
+<- @{ "return": @{@} @}
+
+2. Press ctrl-alt-del.
+
+-> @{ "execute": "input-send-event",
+ "arguments": @{ "events": [
+ @{ "type": "key", "data" : @{ "down": true,
+ "key": @{"type": "qcode", "data": "ctrl" @} @} @},
+ @{ "type": "key", "data" : @{ "down": true,
+ "key": @{"type": "qcode", "data": "alt" @} @} @},
+ @{ "type": "key", "data" : @{ "down": true,
+ "key": @{"type": "qcode", "data": "delete" @} @} @} ] @} @}
+<- @{ "return": @{@} @}
+
+3. Move mouse pointer to absolute coordinates (20000, 400).
+
+-> @{ "execute": "input-send-event" ,
+ "arguments": @{ "events": [
+ @{ "type": "abs", "data" : @{ "axis": "x", "value" : 20000 @} @},
+ @{ "type": "abs", "data" : @{ "axis": "y", "value" : 400 @} @} ] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} DisplayNoOpts
+
+Empty struct for displays without config options.
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} DisplayGTK
+
+GTK display options.
+
+@b{Members:}
+@table @asis
+@item @code{grab-on-hover: boolean} (optional)
+Grab keyboard input on mouse hover.
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Enum} DisplayType
+
+Display (user interface) type.
+
+@b{Values:}
+@table @asis
+@item @code{default}
+Not documented
+@item @code{none}
+Not documented
+@item @code{gtk}
+Not documented
+@item @code{sdl}
+Not documented
+@item @code{egl-headless}
+Not documented
+@item @code{curses}
+Not documented
+@item @code{cocoa}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} DisplayOptions
+
+Display (user interface) options.
+
+@b{Members:}
+@table @asis
+@item @code{type: DisplayType}
+Which DisplayType qemu should use.
+@item @code{full-screen: boolean} (optional)
+Start user interface in fullscreen mode (default: off).
+@item @code{window-close: boolean} (optional)
+Allow to quit qemu with window close button (default: on).
+@item @code{gl: boolean} (optional)
+Enable OpenGL support (default: off).
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"default"}
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"none"}
+@item The members of @code{DisplayGTK} when @code{type} is @t{"gtk"}
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"sdl"}
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"egl-headless"}
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"curses"}
+@item The members of @code{DisplayNoOpts} when @code{type} is @t{"cocoa"}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+@section Migration
+
+
+@deftp {Object} MigrationStats
+
+Detailed migration status.
+
+@b{Members:}
+@table @asis
+@item @code{transferred: int}
+amount of bytes already transferred to the target VM
+@item @code{remaining: int}
+amount of bytes remaining to be transferred to the target VM
+@item @code{total: int}
+total amount of bytes involved in the migration process
+@item @code{duplicate: int}
+number of duplicate (zero) pages (since 1.2)
+@item @code{skipped: int}
+number of skipped zero pages (since 1.5)
+@item @code{normal: int}
+number of normal pages (since 1.2)
+@item @code{normal-bytes: int}
+number of normal bytes sent (since 1.2)
+@item @code{dirty-pages-rate: int}
+number of pages dirtied by second by the
+guest (since 1.3)
+@item @code{mbps: number}
+throughput in megabits/sec. (since 1.6)
+@item @code{dirty-sync-count: int}
+number of times that dirty ram was synchronized (since 2.1)
+@item @code{postcopy-requests: int}
+The number of page requests received from the destination
+(since 2.7)
+@item @code{page-size: int}
+The number of bytes per page for the various page-based
+statistics (since 2.10)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} XBZRLECacheStats
+
+Detailed XBZRLE migration cache statistics
+
+@b{Members:}
+@table @asis
+@item @code{cache-size: int}
+XBZRLE cache size
+@item @code{bytes: int}
+amount of bytes already transferred to the target VM
+@item @code{pages: int}
+amount of pages transferred to the target VM
+@item @code{cache-miss: int}
+number of cache miss
+@item @code{cache-miss-rate: number}
+rate of cache miss (since 2.1)
+@item @code{overflow: int}
+number of overflows
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Enum} MigrationStatus
+
+An enumeration of migration status.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+no migration has ever happened.
+@item @code{setup}
+migration process has been initiated.
+@item @code{cancelling}
+in the process of cancelling migration.
+@item @code{cancelled}
+cancelling migration is finished.
+@item @code{active}
+in the process of doing migration.
+@item @code{postcopy-active}
+like active, but now in postcopy mode. (since 2.5)
+@item @code{completed}
+migration is finished.
+@item @code{failed}
+some error occurred during migration process.
+@item @code{colo}
+VM is in the process of fault tolerance, VM can not get into this
+state unless colo capability is enabled for migration. (since 2.8)
+@item @code{pre-switchover}
+Paused before device serialisation. (since 2.11)
+@item @code{device}
+During device serialisation when pause-before-switchover is enabled
+(since 2.11)
+@end table
+
+@b{Since:}
+2.3
+
+@end deftp
+
+
+
+@deftp {Object} MigrationInfo
+
+Information about current migration process.
+
+@b{Members:}
+@table @asis
+@item @code{status: MigrationStatus} (optional)
+@code{MigrationStatus} describing the current migration status.
+If this field is not returned, no migration process
+has been initiated
+@item @code{ram: MigrationStats} (optional)
+@code{MigrationStats} containing detailed migration
+status, only returned if status is 'active' or
+'completed'(since 1.2)
+@item @code{disk: MigrationStats} (optional)
+@code{MigrationStats} containing detailed disk migration
+status, only returned if status is 'active' and it is a block
+migration
+@item @code{xbzrle-cache: XBZRLECacheStats} (optional)
+@code{XBZRLECacheStats} containing detailed XBZRLE
+migration statistics, only returned if XBZRLE feature is on and
+status is 'active' or 'completed' (since 1.2)
+@item @code{total-time: int} (optional)
+total amount of milliseconds since migration started.
+If migration has ended, it returns the total migration
+time. (since 1.2)
+@item @code{downtime: int} (optional)
+only present when migration finishes correctly
+total downtime in milliseconds for the guest.
+(since 1.3)
+@item @code{expected-downtime: int} (optional)
+only present while migration is active
+expected downtime in milliseconds for the guest in last walk
+of the dirty bitmap. (since 1.3)
+@item @code{setup-time: int} (optional)
+amount of setup time in milliseconds @emph{before} the
+iterations begin but @emph{after} the QMP command is issued. This is designed
+to provide an accounting of any activities (such as RDMA pinning) which
+may be expensive, but do not actually occur during the iterative
+migration rounds themselves. (since 1.6)
+@item @code{cpu-throttle-percentage: int} (optional)
+percentage of time guest cpus are being
+throttled during auto-converge. This is only present when auto-converge
+has started throttling guest cpus. (Since 2.7)
+@item @code{error-desc: string} (optional)
+the human readable error description string, when
+@code{status} is 'failed'. Clients should not attempt to parse the
+error strings. (Since 2.7)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-migrate
+
+Returns information about current migration process. If migration
+is active there will be another json-object with RAM migration
+status and if block migration is active another one with block
+migration status.
+
+@b{Returns:}
+@code{MigrationInfo}
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+1. Before the first migration
+
+-> @{ "execute": "query-migrate" @}
+<- @{ "return": @{@} @}
+
+2. Migration is done and has succeeded
+
+-> @{ "execute": "query-migrate" @}
+<- @{ "return": @{
+ "status": "completed",
+ "ram":@{
+ "transferred":123,
+ "remaining":123,
+ "total":246,
+ "total-time":12345,
+ "setup-time":12345,
+ "downtime":12345,
+ "duplicate":123,
+ "normal":123,
+ "normal-bytes":123456,
+ "dirty-sync-count":15
+ @}
+ @}
+ @}
+
+3. Migration is done and has failed
+
+-> @{ "execute": "query-migrate" @}
+<- @{ "return": @{ "status": "failed" @} @}
+
+4. Migration is being performed and is not a block migration:
+
+-> @{ "execute": "query-migrate" @}
+<- @{
+ "return":@{
+ "status":"active",
+ "ram":@{
+ "transferred":123,
+ "remaining":123,
+ "total":246,
+ "total-time":12345,
+ "setup-time":12345,
+ "expected-downtime":12345,
+ "duplicate":123,
+ "normal":123,
+ "normal-bytes":123456,
+ "dirty-sync-count":15
+ @}
+ @}
+ @}
+
+5. Migration is being performed and is a block migration:
+
+-> @{ "execute": "query-migrate" @}
+<- @{
+ "return":@{
+ "status":"active",
+ "ram":@{
+ "total":1057024,
+ "remaining":1053304,
+ "transferred":3720,
+ "total-time":12345,
+ "setup-time":12345,
+ "expected-downtime":12345,
+ "duplicate":123,
+ "normal":123,
+ "normal-bytes":123456,
+ "dirty-sync-count":15
+ @},
+ "disk":@{
+ "total":20971520,
+ "remaining":20880384,
+ "transferred":91136
+ @}
+ @}
+ @}
+
+6. Migration is being performed and XBZRLE is active:
+
+-> @{ "execute": "query-migrate" @}
+<- @{
+ "return":@{
+ "status":"active",
+ "capabilities" : [ @{ "capability": "xbzrle", "state" : true @} ],
+ "ram":@{
+ "total":1057024,
+ "remaining":1053304,
+ "transferred":3720,
+ "total-time":12345,
+ "setup-time":12345,
+ "expected-downtime":12345,
+ "duplicate":10,
+ "normal":3333,
+ "normal-bytes":3412992,
+ "dirty-sync-count":15
+ @},
+ "xbzrle-cache":@{
+ "cache-size":67108864,
+ "bytes":20971520,
+ "pages":2444343,
+ "cache-miss":2244,
+ "cache-miss-rate":0.123,
+ "overflow":34434
+ @}
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} MigrationCapability
+
+Migration capabilities enumeration
+
+@b{Values:}
+@table @asis
+@item @code{xbzrle}
+Migration supports xbzrle (Xor Based Zero Run Length Encoding).
+This feature allows us to minimize migration traffic for certain work
+loads, by sending compressed difference of the pages
+@item @code{rdma-pin-all}
+Controls whether or not the entire VM memory footprint is
+mlock()'d on demand or all at once. Refer to docs/rdma.txt for usage.
+Disabled by default. (since 2.0)
+@item @code{zero-blocks}
+During storage migration encode blocks of zeroes efficiently. This
+essentially saves 1MB of zeroes per block on the wire. Enabling requires
+source and target VM to support this feature. To enable it is sufficient
+to enable the capability on the source VM. The feature is disabled by
+default. (since 1.6)
+@item @code{compress}
+Use multiple compression threads to accelerate live migration.
+This feature can help to reduce the migration traffic, by sending
+compressed pages. Please note that if compress and xbzrle are both
+on, compress only takes effect in the ram bulk stage, after that,
+it will be disabled and only xbzrle takes effect, this can help to
+minimize migration traffic. The feature is disabled by default.
+(since 2.4 )
+@item @code{events}
+generate events for each migration state change
+(since 2.4 )
+@item @code{auto-converge}
+If enabled, QEMU will automatically throttle down the guest
+to speed up convergence of RAM migration. (since 1.6)
+@item @code{postcopy-ram}
+Start executing on the migration target before all of RAM has
+been migrated, pulling the remaining pages along as needed. The
+capacity must have the same setting on both source and target
+or migration will not even start. NOTE: If the migration fails during
+postcopy the VM will fail. (since 2.6)
+@item @code{x-colo}
+If enabled, migration will never end, and the state of the VM on the
+primary side will be migrated continuously to the VM on secondary
+side, this process is called COarse-Grain LOck Stepping (COLO) for
+Non-stop Service. (since 2.8)
+@item @code{release-ram}
+if enabled, qemu will free the migrated ram pages on the source
+during postcopy-ram migration. (since 2.9)
+@item @code{block}
+If enabled, QEMU will also migrate the contents of all block
+devices. Default is disabled. A possible alternative uses
+mirror jobs to a builtin NBD server on the destination, which
+offers more flexibility.
+(Since 2.10)
+@item @code{return-path}
+If enabled, migration will use the return path even
+for precopy. (since 2.10)
+@item @code{pause-before-switchover}
+Pause outgoing migration before serialising device
+state and before disabling block IO (since 2.11)
+@item @code{x-multifd}
+Use more than one fd for migration (since 2.11)
+@item @code{dirty-bitmaps}
+If enabled, QEMU will migrate named dirty bitmaps.
+(since 2.12)
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftp {Object} MigrationCapabilityStatus
+
+Migration capability information
+
+@b{Members:}
+@table @asis
+@item @code{capability: MigrationCapability}
+capability enum
+@item @code{state: boolean}
+capability state bool
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftypefn Command {} migrate-set-capabilities
+
+Enable/Disable the following migration capabilities (like xbzrle)
+
+@b{Arguments:}
+@table @asis
+@item @code{capabilities: array of MigrationCapabilityStatus}
+json array of capability modifications to make
+@end table
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-set-capabilities" , "arguments":
+ @{ "capabilities": [ @{ "capability": "xbzrle", "state": true @} ] @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} query-migrate-capabilities
+
+Returns information about the current migration capabilities status
+
+@b{Returns:}
+@code{MigrationCapabilitiesStatus}
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+-> @{ "execute": "query-migrate-capabilities" @}
+<- @{ "return": [
+ @{"state": false, "capability": "xbzrle"@},
+ @{"state": false, "capability": "rdma-pin-all"@},
+ @{"state": false, "capability": "auto-converge"@},
+ @{"state": false, "capability": "zero-blocks"@},
+ @{"state": false, "capability": "compress"@},
+ @{"state": true, "capability": "events"@},
+ @{"state": false, "capability": "postcopy-ram"@},
+ @{"state": false, "capability": "x-colo"@}
+ ]@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} MigrationParameter
+
+Migration parameters enumeration
+
+@b{Values:}
+@table @asis
+@item @code{compress-level}
+Set the compression level to be used in live migration,
+the compression level is an integer between 0 and 9, where 0 means
+no compression, 1 means the best compression speed, and 9 means best
+compression ratio which will consume more CPU.
+@item @code{compress-threads}
+Set compression thread count to be used in live migration,
+the compression thread count is an integer between 1 and 255.
+@item @code{decompress-threads}
+Set decompression thread count to be used in live
+migration, the decompression thread count is an integer between 1
+and 255. Usually, decompression is at least 4 times as fast as
+compression, so set the decompress-threads to the number about 1/4
+of compress-threads is adequate.
+@item @code{cpu-throttle-initial}
+Initial percentage of time guest cpus are throttled
+when migration auto-converge is activated. The
+default value is 20. (Since 2.7)
+@item @code{cpu-throttle-increment}
+throttle percentage increase each time
+auto-converge detects that migration is not making
+progress. The default value is 10. (Since 2.7)
+@item @code{tls-creds}
+ID of the 'tls-creds' object that provides credentials for
+establishing a TLS connection over the migration data channel.
+On the outgoing side of the migration, the credentials must
+be for a 'client' endpoint, while for the incoming side the
+credentials must be for a 'server' endpoint. Setting this
+will enable TLS for all migrations. The default is unset,
+resulting in unsecured migration at the QEMU level. (Since 2.7)
+@item @code{tls-hostname}
+hostname of the target host for the migration. This is
+required when using x509 based TLS credentials and the
+migration URI does not already include a hostname. For
+example if using fd: or exec: based migration, the
+hostname must be provided so that the server's x509
+certificate identity can be validated. (Since 2.7)
+@item @code{max-bandwidth}
+to set maximum speed for migration. maximum speed in
+bytes per second. (Since 2.8)
+@item @code{downtime-limit}
+set maximum tolerated downtime for migration. maximum
+downtime in milliseconds (Since 2.8)
+@item @code{x-checkpoint-delay}
+The delay time (in ms) between two COLO checkpoints in
+periodic mode. (Since 2.8)
+@item @code{block-incremental}
+Affects how much storage is migrated when the
+block migration capability is enabled. When false, the entire
+storage backing chain is migrated into a flattened image at
+the destination; when true, only the active qcow2 layer is
+migrated and the destination must already have access to the
+same backing chain as was used on the source. (since 2.10)
+@item @code{x-multifd-channels}
+Number of channels used to migrate data in
+parallel. This is the same number that the
+number of sockets used for migration. The
+default value is 2 (since 2.11)
+@item @code{x-multifd-page-count}
+Number of pages sent together to a thread.
+The default value is 16 (since 2.11)
+@item @code{xbzrle-cache-size}
+cache size to be used by XBZRLE migration. It
+needs to be a multiple of the target page size
+and a power of 2
+(Since 2.11)
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} MigrateSetParameters
+
+
+
+@b{Members:}
+@table @asis
+@item @code{compress-level: int} (optional)
+compression level
+@item @code{compress-threads: int} (optional)
+compression thread count
+@item @code{decompress-threads: int} (optional)
+decompression thread count
+@item @code{cpu-throttle-initial: int} (optional)
+Initial percentage of time guest cpus are
+throttled when migration auto-converge is activated.
+The default value is 20. (Since 2.7)
+@item @code{cpu-throttle-increment: int} (optional)
+throttle percentage increase each time
+auto-converge detects that migration is not making
+progress. The default value is 10. (Since 2.7)
+@item @code{tls-creds: StrOrNull} (optional)
+ID of the 'tls-creds' object that provides credentials
+for establishing a TLS connection over the migration data
+channel. On the outgoing side of the migration, the credentials
+must be for a 'client' endpoint, while for the incoming side the
+credentials must be for a 'server' endpoint. Setting this
+to a non-empty string enables TLS for all migrations.
+An empty string means that QEMU will use plain text mode for
+migration, rather than TLS (Since 2.9)
+Previously (since 2.7), this was reported by omitting
+tls-creds instead.
+@item @code{tls-hostname: StrOrNull} (optional)
+hostname of the target host for the migration. This
+is required when using x509 based TLS credentials and the
+migration URI does not already include a hostname. For
+example if using fd: or exec: based migration, the
+hostname must be provided so that the server's x509
+certificate identity can be validated. (Since 2.7)
+An empty string means that QEMU will use the hostname
+associated with the migration URI, if any. (Since 2.9)
+Previously (since 2.7), this was reported by omitting
+tls-hostname instead.
+@item @code{max-bandwidth: int} (optional)
+to set maximum speed for migration. maximum speed in
+bytes per second. (Since 2.8)
+@item @code{downtime-limit: int} (optional)
+set maximum tolerated downtime for migration. maximum
+downtime in milliseconds (Since 2.8)
+@item @code{x-checkpoint-delay: int} (optional)
+the delay time between two COLO checkpoints. (Since 2.8)
+@item @code{block-incremental: boolean} (optional)
+Affects how much storage is migrated when the
+block migration capability is enabled. When false, the entire
+storage backing chain is migrated into a flattened image at
+the destination; when true, only the active qcow2 layer is
+migrated and the destination must already have access to the
+same backing chain as was used on the source. (since 2.10)
+@item @code{x-multifd-channels: int} (optional)
+Number of channels used to migrate data in
+parallel. This is the same number that the
+number of sockets used for migration. The
+default value is 2 (since 2.11)
+@item @code{x-multifd-page-count: int} (optional)
+Number of pages sent together to a thread.
+The default value is 16 (since 2.11)
+@item @code{xbzrle-cache-size: int} (optional)
+cache size to be used by XBZRLE migration. It
+needs to be a multiple of the target page size
+and a power of 2
+(Since 2.11)
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} migrate-set-parameters
+
+Set various migration parameters.
+
+@b{Arguments:} the members of @code{MigrateSetParameters}
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-set-parameters" ,
+ "arguments": @{ "compress-level": 1 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} MigrationParameters
+
+The optional members aren't actually optional.
+
+@b{Members:}
+@table @asis
+@item @code{compress-level: int} (optional)
+compression level
+@item @code{compress-threads: int} (optional)
+compression thread count
+@item @code{decompress-threads: int} (optional)
+decompression thread count
+@item @code{cpu-throttle-initial: int} (optional)
+Initial percentage of time guest cpus are
+throttled when migration auto-converge is activated.
+(Since 2.7)
+@item @code{cpu-throttle-increment: int} (optional)
+throttle percentage increase each time
+auto-converge detects that migration is not making
+progress. (Since 2.7)
+@item @code{tls-creds: string} (optional)
+ID of the 'tls-creds' object that provides credentials
+for establishing a TLS connection over the migration data
+channel. On the outgoing side of the migration, the credentials
+must be for a 'client' endpoint, while for the incoming side the
+credentials must be for a 'server' endpoint.
+An empty string means that QEMU will use plain text mode for
+migration, rather than TLS (Since 2.7)
+Note: 2.8 reports this by omitting tls-creds instead.
+@item @code{tls-hostname: string} (optional)
+hostname of the target host for the migration. This
+is required when using x509 based TLS credentials and the
+migration URI does not already include a hostname. For
+example if using fd: or exec: based migration, the
+hostname must be provided so that the server's x509
+certificate identity can be validated. (Since 2.7)
+An empty string means that QEMU will use the hostname
+associated with the migration URI, if any. (Since 2.9)
+Note: 2.8 reports this by omitting tls-hostname instead.
+@item @code{max-bandwidth: int} (optional)
+to set maximum speed for migration. maximum speed in
+bytes per second. (Since 2.8)
+@item @code{downtime-limit: int} (optional)
+set maximum tolerated downtime for migration. maximum
+downtime in milliseconds (Since 2.8)
+@item @code{x-checkpoint-delay: int} (optional)
+the delay time between two COLO checkpoints. (Since 2.8)
+@item @code{block-incremental: boolean} (optional)
+Affects how much storage is migrated when the
+block migration capability is enabled. When false, the entire
+storage backing chain is migrated into a flattened image at
+the destination; when true, only the active qcow2 layer is
+migrated and the destination must already have access to the
+same backing chain as was used on the source. (since 2.10)
+@item @code{x-multifd-channels: int} (optional)
+Number of channels used to migrate data in
+parallel. This is the same number that the
+number of sockets used for migration.
+The default value is 2 (since 2.11)
+@item @code{x-multifd-page-count: int} (optional)
+Number of pages sent together to a thread.
+The default value is 16 (since 2.11)
+@item @code{xbzrle-cache-size: int} (optional)
+cache size to be used by XBZRLE migration. It
+needs to be a multiple of the target page size
+and a power of 2
+(Since 2.11)
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftypefn Command {} query-migrate-parameters
+
+Returns information about the current migration parameters
+
+@b{Returns:}
+@code{MigrationParameters}
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+-> @{ "execute": "query-migrate-parameters" @}
+<- @{ "return": @{
+ "decompress-threads": 2,
+ "cpu-throttle-increment": 10,
+ "compress-threads": 8,
+ "compress-level": 1,
+ "cpu-throttle-initial": 20,
+ "max-bandwidth": 33554432,
+ "downtime-limit": 300
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} client_migrate_info
+
+Set migration information for remote display. This makes the server
+ask the client to automatically reconnect using the new parameters
+once migration finished successfully. Only implemented for SPICE.
+
+@b{Arguments:}
+@table @asis
+@item @code{protocol: string}
+must be "spice"
+@item @code{hostname: string}
+migration target hostname
+@item @code{port: int} (optional)
+spice tcp port for plaintext channels
+@item @code{tls-port: int} (optional)
+spice tcp port for tls-secured channels
+@item @code{cert-subject: string} (optional)
+server certificate subject
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "client_migrate_info",
+ "arguments": @{ "protocol": "spice",
+ "hostname": "virt42.lab.kraxel.org",
+ "port": 1234 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate-start-postcopy
+
+Followup to a migration command to switch the migration to postcopy mode.
+The postcopy-ram capability must be set on both source and destination
+before the original migration command.
+
+@b{Since:}
+2.5
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-start-postcopy" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} MIGRATION
+
+Emitted when a migration event happens
+
+@b{Arguments:}
+@table @asis
+@item @code{status: MigrationStatus}
+@code{MigrationStatus} describing the current migration status.
+@end table
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+<- @{"timestamp": @{"seconds": 1432121972, "microseconds": 744001@},
+ "event": "MIGRATION",
+ "data": @{"status": "completed"@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} MIGRATION_PASS
+
+Emitted from the source side of a migration at the start of each pass
+(when it syncs the dirty bitmap)
+
+@b{Arguments:}
+@table @asis
+@item @code{pass: int}
+An incrementing count (starting at 1 on the first pass)
+@end table
+
+@b{Since:}
+2.6
+
+@b{Example:}
+@example
+@{ "timestamp": @{"seconds": 1449669631, "microseconds": 239225@},
+ "event": "MIGRATION_PASS", "data": @{"pass": 2@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} COLOMessage
+
+The message transmission between Primary side and Secondary side.
+
+@b{Values:}
+@table @asis
+@item @code{checkpoint-ready}
+Secondary VM (SVM) is ready for checkpointing
+@item @code{checkpoint-request}
+Primary VM (PVM) tells SVM to prepare for checkpointing
+@item @code{checkpoint-reply}
+SVM gets PVM's checkpoint request
+@item @code{vmstate-send}
+VM's state will be sent by PVM.
+@item @code{vmstate-size}
+The total size of VMstate.
+@item @code{vmstate-received}
+VM's state has been received by SVM.
+@item @code{vmstate-loaded}
+VM's state has been loaded by SVM.
+@end table
+
+@b{Since:}
+2.8
+
+@end deftp
+
+
+
+@deftp {Enum} COLOMode
+
+The colo mode
+
+@b{Values:}
+@table @asis
+@item @code{unknown}
+unknown mode
+@item @code{primary}
+master side
+@item @code{secondary}
+slave side
+@end table
+
+@b{Since:}
+2.8
+
+@end deftp
+
+
+
+@deftp {Enum} FailoverStatus
+
+An enumeration of COLO failover status
+
+@b{Values:}
+@table @asis
+@item @code{none}
+no failover has ever happened
+@item @code{require}
+got failover requirement but not handled
+@item @code{active}
+in the process of doing failover
+@item @code{completed}
+finish the process of failover
+@item @code{relaunch}
+restart the failover process, from 'none' -> 'completed' (Since 2.9)
+@end table
+
+@b{Since:}
+2.8
+
+@end deftp
+
+
+
+@deftypefn Command {} x-colo-lost-heartbeat
+
+Tell qemu that heartbeat is lost, request it to do takeover procedures.
+If this command is sent to the PVM, the Primary side will exit COLO mode.
+If sent to the Secondary, the Secondary side will run failover work,
+then takes over server operation to become the service VM.
+
+@b{Since:}
+2.8
+
+@b{Example:}
+@example
+-> @{ "execute": "x-colo-lost-heartbeat" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate_cancel
+
+Cancel the current executing migration process.
+
+@b{Returns:}
+nothing on success
+
+@b{Notes:}
+This command succeeds even if there is no migration process running.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate_cancel" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate-continue
+
+Continue migration when it's in a paused state.
+
+@b{Arguments:}
+@table @asis
+@item @code{state: MigrationStatus}
+The state the migration is currently expected to be in
+@end table
+
+@b{Returns:}
+nothing on success
+
+@b{Since:}
+2.11
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-continue" , "arguments":
+ @{ "state": "pre-switchover" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate_set_downtime
+
+Set maximum tolerated downtime for migration.
+
+@b{Arguments:}
+@table @asis
+@item @code{value: number}
+maximum downtime in seconds
+@end table
+
+@b{Returns:}
+nothing on success
+
+@b{Notes:}
+This command is deprecated in favor of 'migrate-set-parameters'
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate_set_downtime", "arguments": @{ "value": 0.1 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate_set_speed
+
+Set maximum speed for migration.
+
+@b{Arguments:}
+@table @asis
+@item @code{value: int}
+maximum speed in bytes per second.
+@end table
+
+@b{Returns:}
+nothing on success
+
+@b{Notes:}
+This command is deprecated in favor of 'migrate-set-parameters'
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate_set_speed", "arguments": @{ "value": 1024 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate-set-cache-size
+
+Set cache size to be used by XBZRLE migration
+
+@b{Arguments:}
+@table @asis
+@item @code{value: int}
+cache size in bytes
+@end table
+The size will be rounded down to the nearest power of 2.
+The cache size can be modified before and during ongoing migration
+
+@b{Returns:}
+nothing on success
+
+@b{Notes:}
+This command is deprecated in favor of 'migrate-set-parameters'
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-set-cache-size",
+ "arguments": @{ "value": 536870912 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} query-migrate-cache-size
+
+Query migration XBZRLE cache size
+
+@b{Returns:}
+XBZRLE cache size in bytes
+
+@b{Notes:}
+This command is deprecated in favor of 'query-migrate-parameters'
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+-> @{ "execute": "query-migrate-cache-size" @}
+<- @{ "return": 67108864 @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate
+
+Migrates the current running guest to another Virtual Machine.
+
+@b{Arguments:}
+@table @asis
+@item @code{uri: string}
+the Uniform Resource Identifier of the destination VM
+@item @code{blk: boolean} (optional)
+do block migration (full disk copy)
+@item @code{inc: boolean} (optional)
+incremental disk copy migration
+@item @code{detach: boolean} (optional)
+this argument exists only for compatibility reasons and
+is ignored by QEMU
+@end table
+
+@b{Returns:}
+nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+@enumerate
+@item
+The 'query-migrate' command should be used to check migration's progress
+and final result (this information is provided by the 'status' member)
+
+@item
+All boolean arguments default to false
+
+@item
+The user Monitor's "detach" argument is invalid in QMP and should not
+be used
+@end enumerate
+
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate", "arguments": @{ "uri": "tcp:0:4446" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} migrate-incoming
+
+Start an incoming migration, the qemu must have been started
+with -incoming defer
+
+@b{Arguments:}
+@table @asis
+@item @code{uri: string}
+The Uniform Resource Identifier identifying the source or
+address to listen on
+@end table
+
+@b{Returns:}
+nothing on success
+
+@b{Since:}
+2.3
+
+@b{Notes:}
+@enumerate
+@item
+It's a bad idea to use a string for the uri, but it needs to stay
+compatible with -incoming and the format of the uri is already exposed
+above libvirt.
+
+@item
+QEMU must be started with -incoming defer to allow migrate-incoming to
+be used.
+
+@item
+The uri format is the same as for -incoming
+@end enumerate
+
+
+@b{Example:}
+@example
+-> @{ "execute": "migrate-incoming",
+ "arguments": @{ "uri": "tcp::4446" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} xen-save-devices-state
+
+Save the state of all devices to file. The RAM and the block devices
+of the VM are not saved by this command.
+
+@b{Arguments:}
+@table @asis
+@item @code{filename: string}
+the file to save the state of the devices to as binary
+data. See xen-save-devices-state.txt for a description of the binary
+format.
+@item @code{live: boolean} (optional)
+Optional argument to ask QEMU to treat this command as part of a live
+migration. Default to true. (since 2.11)
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "xen-save-devices-state",
+ "arguments": @{ "filename": "/tmp/save" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} xen-set-replication
+
+Enable or disable replication.
+
+@b{Arguments:}
+@table @asis
+@item @code{enable: boolean}
+true to enable, false to disable.
+@item @code{primary: boolean}
+true for primary or false for secondary.
+@item @code{failover: boolean} (optional)
+true to do failover, false to stop. but cannot be
+specified if 'enable' is true. default value is false.
+@end table
+
+@b{Returns:}
+nothing.
+
+@b{Example:}
+@example
+-> @{ "execute": "xen-set-replication",
+ "arguments": @{"enable": true, "primary": false@} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Since:}
+2.9
+
+@end deftypefn
+
+
+
+@deftp {Object} ReplicationStatus
+
+The result format for 'query-xen-replication-status'.
+
+@b{Members:}
+@table @asis
+@item @code{error: boolean}
+true if an error happened, false if replication is normal.
+@item @code{desc: string} (optional)
+the human readable error description string, when
+@code{error} is 'true'.
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftypefn Command {} query-xen-replication-status
+
+Query replication status while the vm is running.
+
+@b{Returns:}
+A @code{ReplicationResult} object showing the status.
+
+@b{Example:}
+@example
+-> @{ "execute": "query-xen-replication-status" @}
+<- @{ "return": @{ "error": false @} @}
+@end example
+
+@b{Since:}
+2.9
+
+@end deftypefn
+
+
+
+@deftypefn Command {} xen-colo-do-checkpoint
+
+Xen uses this command to notify replication to trigger a checkpoint.
+
+@b{Returns:}
+nothing.
+
+@b{Example:}
+@example
+-> @{ "execute": "xen-colo-do-checkpoint" @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Since:}
+2.9
+
+@end deftypefn
+
+
+@section Transactions
+
+
+@deftp {Object} Abort
+
+This action can be used to test transaction failure.
+
+@b{Since:}
+1.6
+
+@end deftp
+
+
+
+@deftp {Enum} ActionCompletionMode
+
+An enumeration of Transactional completion modes.
+
+@b{Values:}
+@table @asis
+@item @code{individual}
+Do not attempt to cancel any other Actions if any Actions fail
+after the Transaction request succeeds. All Actions that
+can complete successfully will do so without waiting on others.
+This is the default.
+@item @code{grouped}
+If any Action fails after the Transaction succeeds, cancel all
+Actions. Actions do not complete until all Actions are ready to
+complete. May be rejected by Actions that do not support this
+completion mode.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} TransactionAction
+
+A discriminated record of operations that can be performed with
+@code{transaction}. Action @code{type} can be:
+
+@itemize @minus
+@item
+@code{abort}: since 1.6
+@item
+@code{block-dirty-bitmap-add}: since 2.5
+@item
+@code{block-dirty-bitmap-clear}: since 2.5
+@item
+@code{blockdev-backup}: since 2.3
+@item
+@code{blockdev-snapshot}: since 2.5
+@item
+@code{blockdev-snapshot-internal-sync}: since 1.7
+@item
+@code{blockdev-snapshot-sync}: since 1.1
+@item
+@code{drive-backup}: since 1.6
+@end itemize
+
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"abort"}, @t{"block-dirty-bitmap-add"}, @t{"block-dirty-bitmap-clear"}, @t{"blockdev-backup"}, @t{"blockdev-snapshot"}, @t{"blockdev-snapshot-internal-sync"}, @t{"blockdev-snapshot-sync"}, @t{"drive-backup"}
+@item @code{data: Abort} when @code{type} is @t{"abort"}
+@item @code{data: BlockDirtyBitmapAdd} when @code{type} is @t{"block-dirty-bitmap-add"}
+@item @code{data: BlockDirtyBitmap} when @code{type} is @t{"block-dirty-bitmap-clear"}
+@item @code{data: BlockdevBackup} when @code{type} is @t{"blockdev-backup"}
+@item @code{data: BlockdevSnapshot} when @code{type} is @t{"blockdev-snapshot"}
+@item @code{data: BlockdevSnapshotInternal} when @code{type} is @t{"blockdev-snapshot-internal-sync"}
+@item @code{data: BlockdevSnapshotSync} when @code{type} is @t{"blockdev-snapshot-sync"}
+@item @code{data: DriveBackup} when @code{type} is @t{"drive-backup"}
+@end table
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftp {Object} TransactionProperties
+
+Optional arguments to modify the behavior of a Transaction.
+
+@b{Members:}
+@table @asis
+@item @code{completion-mode: ActionCompletionMode} (optional)
+Controls how jobs launched asynchronously by
+Actions will complete or fail as a group.
+See @code{ActionCompletionMode} for details.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftypefn Command {} transaction
+
+Executes a number of transactionable QMP commands atomically. If any
+operation fails, then the entire set of actions will be abandoned and the
+appropriate error returned.
+
+For external snapshots, the dictionary contains the device, the file to use for
+the new snapshot, and the format. The default format, if not specified, is
+qcow2.
+
+Each new snapshot defaults to being created by QEMU (wiping any
+contents if the file already exists), but it is also possible to reuse
+an externally-created file. In the latter case, you should ensure that
+the new image file has the same contents as the current one; QEMU cannot
+perform any meaningful check. Typically this is achieved by using the
+current image file as the backing file for the new image.
+
+On failure, the original disks pre-snapshot attempt will be used.
+
+For internal snapshots, the dictionary contains the device and the snapshot's
+name. If an internal snapshot matching name already exists, the request will
+be rejected. Only some image formats support it, for example, qcow2, rbd,
+and sheepdog.
+
+On failure, qemu will try delete the newly created internal snapshot in the
+transaction. When an I/O error occurs during deletion, the user needs to fix
+it later with qemu-img or other command.
+
+@b{Arguments:}
+@table @asis
+@item @code{actions: array of TransactionAction}
+List of @code{TransactionAction};
+information needed for the respective operations.
+@item @code{properties: TransactionProperties} (optional)
+structure of additional options to control the
+execution of the transaction. See @code{TransactionProperties}
+for additional detail.
+@end table
+
+@b{Returns:}
+nothing on success
+
+Errors depend on the operations of the transaction
+
+@b{Note:}
+The transaction aborts on the first failure. Therefore, there will be
+information on only one failed operation returned in an error condition, and
+subsequent actions will not have been attempted.
+
+@b{Since:}
+1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "transaction",
+ "arguments": @{ "actions": [
+ @{ "type": "blockdev-snapshot-sync", "data" : @{ "device": "ide-hd0",
+ "snapshot-file": "/some/place/my-image",
+ "format": "qcow2" @} @},
+ @{ "type": "blockdev-snapshot-sync", "data" : @{ "node-name": "myfile",
+ "snapshot-file": "/some/place/my-image2",
+ "snapshot-node-name": "node3432",
+ "mode": "existing",
+ "format": "qcow2" @} @},
+ @{ "type": "blockdev-snapshot-sync", "data" : @{ "device": "ide-hd1",
+ "snapshot-file": "/some/place/my-image2",
+ "mode": "existing",
+ "format": "qcow2" @} @},
+ @{ "type": "blockdev-snapshot-internal-sync", "data" : @{
+ "device": "ide-hd2",
+ "name": "snapshot0" @} @} ] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+@section Tracing
+
+
+@deftp {Enum} TraceEventState
+
+State of a tracing event.
+
+@b{Values:}
+@table @asis
+@item @code{unavailable}
+The event is statically disabled.
+@item @code{disabled}
+The event is dynamically disabled.
+@item @code{enabled}
+The event is dynamically enabled.
+@end table
+
+@b{Since:}
+2.2
+
+@end deftp
+
+
+
+@deftp {Object} TraceEventInfo
+
+Information of a tracing event.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+Event name.
+@item @code{state: TraceEventState}
+Tracing state.
+@item @code{vcpu: boolean}
+Whether this is a per-vCPU event (since 2.7).
+@end table
+An event is per-vCPU if it has the "vcpu" property in the "trace-events"
+files.
+
+@b{Since:}
+2.2
+
+@end deftp
+
+
+
+@deftypefn Command {} trace-event-get-state
+
+Query the state of events.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+Event name pattern (case-sensitive glob).
+@item @code{vcpu: int} (optional)
+The vCPU to query (any by default; since 2.7).
+@end table
+
+@b{Returns:}
+a list of @code{TraceEventInfo} for the matching events
+
+An event is returned if:
+@itemize @minus
+@item
+its name matches the @code{name} pattern, and
+@item
+if @code{vcpu} is given, the event has the "vcpu" property.
+
+@end itemize
+
+Therefore, if @code{vcpu} is given, the operation will only match per-vCPU events,
+returning their state on the specified vCPU. Special case: if @code{name} is an
+exact match, @code{vcpu} is given and the event does not have the "vcpu" property,
+an error is returned.
+
+@b{Since:}
+2.2
+
+@b{Example:}
+@example
+-> @{ "execute": "trace-event-get-state",
+ "arguments": @{ "name": "qemu_memalign" @} @}
+<- @{ "return": [ @{ "name": "qemu_memalign", "state": "disabled" @} ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} trace-event-set-state
+
+Set the dynamic tracing state of events.
+
+@b{Arguments:}
+@table @asis
+@item @code{name: string}
+Event name pattern (case-sensitive glob).
+@item @code{enable: boolean}
+Whether to enable tracing.
+@item @code{ignore-unavailable: boolean} (optional)
+Do not match unavailable events with @code{name}.
+@item @code{vcpu: int} (optional)
+The vCPU to act upon (all by default; since 2.7).
+@end table
+An event's state is modified if:
+@itemize @minus
+@item
+its name matches the @code{name} pattern, and
+@item
+if @code{vcpu} is given, the event has the "vcpu" property.
+
+@end itemize
+
+Therefore, if @code{vcpu} is given, the operation will only match per-vCPU events,
+setting their state on the specified vCPU. Special case: if @code{name} is an exact
+match, @code{vcpu} is given and the event does not have the "vcpu" property, an
+error is returned.
+
+@b{Since:}
+2.2
+
+@b{Example:}
+@example
+-> @{ "execute": "trace-event-set-state",
+ "arguments": @{ "name": "qemu_memalign", "enable": "true" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+@section QMP introspection
+
+
+@deftypefn Command {} query-qmp-schema
+
+Command query-qmp-schema exposes the QMP wire ABI as an array of
+SchemaInfo. This lets QMP clients figure out what commands and
+events are available in this QEMU, and their parameters and results.
+
+However, the SchemaInfo can't reflect all the rules and restrictions
+that apply to QMP. It's interface introspection (figuring out
+what's there), not interface specification. The specification is in
+the QAPI schema.
+
+Furthermore, while we strive to keep the QMP wire format
+backwards-compatible across qemu versions, the introspection output
+is not guaranteed to have the same stability. For example, one
+version of qemu may list an object member as an optional
+non-variant, while another lists the same member only through the
+object's variants; or the type of a member may change from a generic
+string into a specific enum or from one specific type into an
+alternate that includes the original type alongside something else.
+
+@b{Returns:}
+array of @code{SchemaInfo}, where each element describes an
+entity in the ABI: command, event, type, ...
+
+The order of the various SchemaInfo is unspecified; however, all
+names are guaranteed to be unique (no name will be duplicated with
+different meta-types).
+
+@b{Note:}
+the QAPI schema is also used to help define @strong{internal}
+interfaces, by defining QAPI types. These are not part of the QMP
+wire ABI, and therefore not returned by this command.
+
+@b{Since:}
+2.5
+
+@end deftypefn
+
+
+
+@deftp {Enum} SchemaMetaType
+
+This is a @code{SchemaInfo}'s meta type, i.e. the kind of entity it
+describes.
+
+@b{Values:}
+@table @asis
+@item @code{builtin}
+a predefined type such as 'int' or 'bool'.
+@item @code{enum}
+an enumeration type
+@item @code{array}
+an array type
+@item @code{object}
+an object type (struct or union)
+@item @code{alternate}
+an alternate type
+@item @code{command}
+a QMP command
+@item @code{event}
+a QMP event
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfo
+
+
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the entity's name, inherited from @code{base}.
+The SchemaInfo is always referenced by this name.
+Commands and events have the name defined in the QAPI schema.
+Unlike command and event names, type names are not part of
+the wire ABI. Consequently, type names are meaningless
+strings here, although they are still guaranteed unique
+regardless of @code{meta-type}.
+@item @code{meta-type: SchemaMetaType}
+the entity's meta type, inherited from @code{base}.
+@item The members of @code{SchemaInfoBuiltin} when @code{meta-type} is @t{"builtin"}
+@item The members of @code{SchemaInfoEnum} when @code{meta-type} is @t{"enum"}
+@item The members of @code{SchemaInfoArray} when @code{meta-type} is @t{"array"}
+@item The members of @code{SchemaInfoObject} when @code{meta-type} is @t{"object"}
+@item The members of @code{SchemaInfoAlternate} when @code{meta-type} is @t{"alternate"}
+@item The members of @code{SchemaInfoCommand} when @code{meta-type} is @t{"command"}
+@item The members of @code{SchemaInfoEvent} when @code{meta-type} is @t{"event"}
+@end table
+Additional members depend on the value of @code{meta-type}.
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoBuiltin
+
+Additional SchemaInfo members for meta-type 'builtin'.
+
+@b{Members:}
+@table @asis
+@item @code{json-type: JSONType}
+the JSON type used for this type on the wire.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Enum} JSONType
+
+The four primitive and two structured types according to RFC 7159
+section 1, plus 'int' (split off 'number'), plus the obvious top
+type 'value'.
+
+@b{Values:}
+@table @asis
+@item @code{string}
+Not documented
+@item @code{number}
+Not documented
+@item @code{int}
+Not documented
+@item @code{boolean}
+Not documented
+@item @code{null}
+Not documented
+@item @code{object}
+Not documented
+@item @code{array}
+Not documented
+@item @code{value}
+Not documented
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoEnum
+
+Additional SchemaInfo members for meta-type 'enum'.
+
+@b{Members:}
+@table @asis
+@item @code{values: array of string}
+the enumeration type's values, in no particular order.
+@end table
+Values of this type are JSON string on the wire.
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoArray
+
+Additional SchemaInfo members for meta-type 'array'.
+
+@b{Members:}
+@table @asis
+@item @code{element-type: string}
+the array type's element type.
+@end table
+Values of this type are JSON array on the wire.
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoObject
+
+Additional SchemaInfo members for meta-type 'object'.
+
+@b{Members:}
+@table @asis
+@item @code{members: array of SchemaInfoObjectMember}
+the object type's (non-variant) members, in no particular order.
+@item @code{tag: string} (optional)
+the name of the member serving as type tag.
+An element of @code{members} with this name must exist.
+@item @code{variants: array of SchemaInfoObjectVariant} (optional)
+variant members, i.e. additional members that
+depend on the type tag's value. Present exactly when
+@code{tag} is present. The variants are in no particular order,
+and may even differ from the order of the values of the
+enum type of the @code{tag}.
+@end table
+Values of this type are JSON object on the wire.
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoObjectMember
+
+An object member.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the member's name, as defined in the QAPI schema.
+@item @code{type: string}
+the name of the member's type.
+@item @code{default: value} (optional)
+default when used as command parameter.
+If absent, the parameter is mandatory.
+If present, the value must be null. The parameter is
+optional, and behavior when it's missing is not specified
+here.
+Future extension: if present and non-null, the parameter
+is optional, and defaults to this value.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoObjectVariant
+
+The variant members for a value of the type tag.
+
+@b{Members:}
+@table @asis
+@item @code{case: string}
+a value of the type tag.
+@item @code{type: string}
+the name of the object type that provides the variant members
+when the type tag has value @code{case}.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoAlternate
+
+Additional SchemaInfo members for meta-type 'alternate'.
+
+@b{Members:}
+@table @asis
+@item @code{members: array of SchemaInfoAlternateMember}
+the alternate type's members, in no particular order.
+The members' wire encoding is distinct, see
+docs/devel/qapi-code-gen.txt section Alternate types.
+@end table
+On the wire, this can be any of the members.
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoAlternateMember
+
+An alternate member.
+
+@b{Members:}
+@table @asis
+@item @code{type: string}
+the name of the member's type.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoCommand
+
+Additional SchemaInfo members for meta-type 'command'.
+
+@b{Members:}
+@table @asis
+@item @code{arg-type: string}
+the name of the object type that provides the command's
+parameters.
+@item @code{ret-type: string}
+the name of the command's result type.
+@item @code{allow-oob: boolean}
+whether the command allows out-of-band execution.
+(Since: 2.12)
+@end table
+
+@b{TODO:}
+@code{success-response} (currently irrelevant, because it's QGA, not QMP)
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Object} SchemaInfoEvent
+
+Additional SchemaInfo members for meta-type 'event'.
+
+@b{Members:}
+@table @asis
+@item @code{arg-type: string}
+the name of the object type that provides the event's
+parameters.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+@section Miscellanea
+
+
+@deftypefn Command {} qmp_capabilities
+
+Enable QMP capabilities.
+
+Arguments:
+
+@b{Arguments:}
+@table @asis
+@item @code{enable: array of QMPCapability} (optional)
+An optional list of QMPCapability values to enable. The
+client must not enable any capability that is not
+mentioned in the QMP greeting message. If the field is not
+provided, it means no QMP capabilities will be enabled.
+(since 2.12)
+@end table
+
+@b{Example:}
+@example
+-> @{ "execute": "qmp_capabilities",
+ "arguments": @{ "enable": [ "oob" ] @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{Notes:}
+This command is valid exactly when first connecting: it must be
+issued before any other command will be accepted, and will fail once the
+monitor is accepting other commands. (see qemu docs/interop/qmp-spec.txt)
+
+The QMP client needs to explicitly enable QMP capabilities, otherwise
+all the QMP capabilities will be turned off by default.
+
+@b{Since:}
+0.13
+
+@end deftypefn
+
+
+
+@deftp {Enum} QMPCapability
+
+Enumeration of capabilities to be advertised during initial client
+connection, used for agreeing on particular QMP extension behaviors.
+
+@b{Values:}
+@table @asis
+@item @code{oob}
+QMP ability to support Out-Of-Band requests.
+(Please refer to qmp-spec.txt for more information on OOB)
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} VersionTriple
+
+A three-part version number.
+
+@b{Members:}
+@table @asis
+@item @code{major: int}
+The major version number.
+@item @code{minor: int}
+The minor version number.
+@item @code{micro: int}
+The micro version number.
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} VersionInfo
+
+A description of QEMU's version.
+
+@b{Members:}
+@table @asis
+@item @code{qemu: VersionTriple}
+The version of QEMU. By current convention, a micro
+version of 50 signifies a development branch. A micro version
+greater than or equal to 90 signifies a release candidate for
+the next minor version. A micro version of less than 50
+signifies a stable release.
+@item @code{package: string}
+QEMU will always set this field to an empty string. Downstream
+versions of QEMU should set this to a non-empty string. The
+exact format depends on the downstream however it highly
+recommended that a unique name is used.
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-version
+
+Returns the current version of QEMU.
+
+@b{Returns:}
+A @code{VersionInfo} object describing the current version of QEMU.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-version" @}
+<- @{
+ "return":@{
+ "qemu":@{
+ "major":0,
+ "minor":11,
+ "micro":5
+ @},
+ "package":""
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} CommandInfo
+
+Information about a QMP command
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+The command name
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-commands
+
+Return a list of supported QMP commands by this server
+
+@b{Returns:}
+A list of @code{CommandInfo} for all supported commands
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-commands" @}
+<- @{
+ "return":[
+ @{
+ "name":"query-balloon"
+ @},
+ @{
+ "name":"system_powerdown"
+ @}
+ ]
+ @}
+@end example
+
+@b{Note:}
+This example has been shortened as the real response is too long.
+
+@end deftypefn
+
+
+
+@deftp {Enum} LostTickPolicy
+
+Policy for handling lost ticks in timer devices.
+
+@b{Values:}
+@table @asis
+@item @code{discard}
+throw away the missed tick(s) and continue with future injection
+normally. Guest time may be delayed, unless the OS has explicit
+handling of lost ticks
+@item @code{delay}
+continue to deliver ticks at the normal rate. Guest time will be
+delayed due to the late tick
+@item @code{merge}
+merge the missed tick(s) into one tick and inject. Guest time
+may be delayed, depending on how the OS reacts to the merging
+of ticks
+@item @code{slew}
+deliver ticks at a higher rate to catch up with the missed tick. The
+guest time should not be delayed once catchup is complete.
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} add_client
+
+Allow client connections for VNC, Spice and socket based
+character devices to be passed in to QEMU via SCM_RIGHTS.
+
+@b{Arguments:}
+@table @asis
+@item @code{protocol: string}
+protocol name. Valid names are "vnc", "spice" or the
+name of a character device (eg. from -chardev id=XXXX)
+@item @code{fdname: string}
+file descriptor name previously passed via 'getfd' command
+@item @code{skipauth: boolean} (optional)
+whether to skip authentication. Only applies
+to "vnc" and "spice" protocols
+@item @code{tls: boolean} (optional)
+whether to perform TLS. Only applies to the "spice"
+protocol
+@end table
+
+@b{Returns:}
+nothing on success.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "add_client", "arguments": @{ "protocol": "vnc",
+ "fdname": "myclient" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} NameInfo
+
+Guest name information.
+
+@b{Members:}
+@table @asis
+@item @code{name: string} (optional)
+The name of the guest
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-name
+
+Return the name information of a guest.
+
+@b{Returns:}
+@code{NameInfo} of the guest
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-name" @}
+<- @{ "return": @{ "name": "qemu-name" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} KvmInfo
+
+Information about support for KVM acceleration
+
+@b{Members:}
+@table @asis
+@item @code{enabled: boolean}
+true if KVM acceleration is active
+@item @code{present: boolean}
+true if KVM acceleration is built into this executable
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-kvm
+
+Returns information about KVM acceleration
+
+@b{Returns:}
+@code{KvmInfo}
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-kvm" @}
+<- @{ "return": @{ "enabled": true, "present": true @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} UuidInfo
+
+Guest UUID information (Universally Unique Identifier).
+
+@b{Members:}
+@table @asis
+@item @code{UUID: string}
+the UUID of the guest
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+If no UUID was specified for the guest, a null UUID is returned.
+
+@end deftp
+
+
+
+@deftypefn Command {} query-uuid
+
+Query the guest UUID information.
+
+@b{Returns:}
+The @code{UuidInfo} for the guest
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-uuid" @}
+<- @{ "return": @{ "UUID": "550e8400-e29b-41d4-a716-446655440000" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} EventInfo
+
+Information about a QMP event
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+The event name
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-events
+
+Return a list of supported QMP events by this server
+
+@b{Returns:}
+A list of @code{EventInfo} for all supported events
+
+@b{Since:}
+1.2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-events" @}
+<- @{
+ "return": [
+ @{
+ "name":"SHUTDOWN"
+ @},
+ @{
+ "name":"RESET"
+ @}
+ ]
+ @}
+@end example
+
+@b{Note:}
+This example has been shortened as the real response is too long.
+
+@end deftypefn
+
+
+
+@deftp {Enum} CpuInfoArch
+
+An enumeration of cpu types that enable additional information during
+@code{query-cpus} and @code{query-cpus-fast}.
+
+@b{Values:}
+@table @asis
+@item @code{s390}
+since 2.12
+@item @code{riscv}
+since 2.12
+@item @code{x86}
+Not documented
+@item @code{sparc}
+Not documented
+@item @code{ppc}
+Not documented
+@item @code{mips}
+Not documented
+@item @code{tricore}
+Not documented
+@item @code{other}
+Not documented
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfo
+
+Information about a virtual CPU
+
+@b{Members:}
+@table @asis
+@item @code{CPU: int}
+the index of the virtual CPU
+@item @code{current: boolean}
+this only exists for backwards compatibility and should be ignored
+@item @code{halted: boolean}
+true if the virtual CPU is in the halt state. Halt usually refers
+to a processor specific low power mode.
+@item @code{qom_path: string}
+path to the CPU object in the QOM tree (since 2.4)
+@item @code{thread_id: int}
+ID of the underlying host thread
+@item @code{props: CpuInstanceProperties} (optional)
+properties describing to which node/socket/core/thread
+virtual CPU belongs to, provided if supported by board (since 2.10)
+@item @code{arch: CpuInfoArch}
+architecture of the cpu, which determines which additional fields
+will be listed (since 2.6)
+@item The members of @code{CpuInfoX86} when @code{arch} is @t{"x86"}
+@item The members of @code{CpuInfoSPARC} when @code{arch} is @t{"sparc"}
+@item The members of @code{CpuInfoPPC} when @code{arch} is @t{"ppc"}
+@item The members of @code{CpuInfoMIPS} when @code{arch} is @t{"mips"}
+@item The members of @code{CpuInfoTricore} when @code{arch} is @t{"tricore"}
+@item The members of @code{CpuInfoS390} when @code{arch} is @t{"s390"}
+@item The members of @code{CpuInfoRISCV} when @code{arch} is @t{"riscv"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"other"}
+@end table
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+@code{halted} is a transient state that changes frequently. By the time the
+data is sent to the client, the guest may no longer be halted.
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoX86
+
+Additional information about a virtual i386 or x86_64 CPU
+
+@b{Members:}
+@table @asis
+@item @code{pc: int}
+the 64-bit instruction pointer
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoSPARC
+
+Additional information about a virtual SPARC CPU
+
+@b{Members:}
+@table @asis
+@item @code{pc: int}
+the PC component of the instruction pointer
+@item @code{npc: int}
+the NPC component of the instruction pointer
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoPPC
+
+Additional information about a virtual PPC CPU
+
+@b{Members:}
+@table @asis
+@item @code{nip: int}
+the instruction pointer
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoMIPS
+
+Additional information about a virtual MIPS CPU
+
+@b{Members:}
+@table @asis
+@item @code{PC: int}
+the instruction pointer
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoTricore
+
+Additional information about a virtual Tricore CPU
+
+@b{Members:}
+@table @asis
+@item @code{PC: int}
+the instruction pointer
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoRISCV
+
+Additional information about a virtual RISCV CPU
+
+@b{Members:}
+@table @asis
+@item @code{pc: int}
+the instruction pointer
+@end table
+Since 2.12
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoOther
+
+No additional information is available about the virtual CPU
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Enum} CpuS390State
+
+An enumeration of cpu states that can be assumed by a virtual
+S390 CPU
+
+@b{Values:}
+@table @asis
+@item @code{uninitialized}
+Not documented
+@item @code{stopped}
+Not documented
+@item @code{check-stop}
+Not documented
+@item @code{operating}
+Not documented
+@item @code{load}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} CpuInfoS390
+
+Additional information about a virtual S390 CPU
+
+@b{Members:}
+@table @asis
+@item @code{cpu-state: CpuS390State}
+the virtual CPU's state
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} query-cpus
+
+Returns a list of information about each virtual CPU.
+
+This command causes vCPU threads to exit to userspace, which causes
+a small interruption to guest CPU execution. This will have a negative
+impact on realtime guests and other latency sensitive guest workloads.
+It is recommended to use @code{query-cpus-fast} instead of this command to
+avoid the vCPU interruption.
+
+@b{Returns:}
+a list of @code{CpuInfo} for each virtual CPU
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-cpus" @}
+<- @{ "return": [
+ @{
+ "CPU":0,
+ "current":true,
+ "halted":false,
+ "qom_path":"/machine/unattached/device[0]",
+ "arch":"x86",
+ "pc":3227107138,
+ "thread_id":3134
+ @},
+ @{
+ "CPU":1,
+ "current":false,
+ "halted":true,
+ "qom_path":"/machine/unattached/device[2]",
+ "arch":"x86",
+ "pc":7108165,
+ "thread_id":3135
+ @}
+ ]
+ @}
+@end example
+
+@b{Notes:}
+This interface is deprecated (since 2.12.0), and it is strongly
+recommended that you avoid using it. Use @code{query-cpus-fast} to
+obtain information about virtual CPUs.
+
+@end deftypefn
+
+
+
+@deftp {Object} CpuInfoFast
+
+Information about a virtual CPU
+
+@b{Members:}
+@table @asis
+@item @code{cpu-index: int}
+index of the virtual CPU
+@item @code{qom-path: string}
+path to the CPU object in the QOM tree
+@item @code{thread-id: int}
+ID of the underlying host thread
+@item @code{props: CpuInstanceProperties} (optional)
+properties describing to which node/socket/core/thread
+virtual CPU belongs to, provided if supported by board
+@item @code{arch: CpuInfoArch}
+architecture of the cpu, which determines which additional fields
+will be listed
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"x86"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"sparc"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"ppc"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"mips"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"tricore"}
+@item The members of @code{CpuInfoS390} when @code{arch} is @t{"s390"}
+@item The members of @code{CpuInfoRISCV} when @code{arch} is @t{"riscv"}
+@item The members of @code{CpuInfoOther} when @code{arch} is @t{"other"}
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} query-cpus-fast
+
+Returns information about all virtual CPUs. This command does not
+incur a performance penalty and should be used in production
+instead of query-cpus.
+
+@b{Returns:}
+list of @code{CpuInfoFast}
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "query-cpus-fast" @}
+<- @{ "return": [
+ @{
+ "thread-id": 25627,
+ "props": @{
+ "core-id": 0,
+ "thread-id": 0,
+ "socket-id": 0
+ @},
+ "qom-path": "/machine/unattached/device[0]",
+ "arch":"x86",
+ "cpu-index": 0
+ @},
+ @{
+ "thread-id": 25628,
+ "props": @{
+ "core-id": 0,
+ "thread-id": 0,
+ "socket-id": 1
+ @},
+ "qom-path": "/machine/unattached/device[2]",
+ "arch":"x86",
+ "cpu-index": 1
+ @}
+ ]
+@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} IOThreadInfo
+
+Information about an iothread
+
+@b{Members:}
+@table @asis
+@item @code{id: string}
+the identifier of the iothread
+@item @code{thread-id: int}
+ID of the underlying host thread
+@item @code{poll-max-ns: int}
+maximum polling time in ns, 0 means polling is disabled
+(since 2.9)
+@item @code{poll-grow: int}
+how many ns will be added to polling time, 0 means that it's not
+configured (since 2.9)
+@item @code{poll-shrink: int}
+how many ns will be removed from polling time, 0 means that
+it's not configured (since 2.9)
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-iothreads
+
+Returns a list of information about each iothread.
+
+@b{Note:}
+this list excludes the QEMU main loop thread, which is not declared
+using the -object iothread command-line option. It is always the main thread
+of the process.
+
+@b{Returns:}
+a list of @code{IOThreadInfo} for each iothread
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-iothreads" @}
+<- @{ "return": [
+ @{
+ "id":"iothread0",
+ "thread-id":3134
+ @},
+ @{
+ "id":"iothread1",
+ "thread-id":3135
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} BalloonInfo
+
+Information about the guest balloon device.
+
+@b{Members:}
+@table @asis
+@item @code{actual: int}
+the number of bytes the balloon currently contains
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-balloon
+
+Return information about the balloon device.
+
+@b{Returns:}
+@code{BalloonInfo} on success
+
+If the balloon driver is enabled but not functional because the KVM
+kernel module cannot support it, KvmMissingCap
+
+If no balloon device is present, DeviceNotActive
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-balloon" @}
+<- @{ "return": @{
+ "actual": 1073741824,
+ @}
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} BALLOON_CHANGE
+
+Emitted when the guest changes the actual BALLOON level. This value is
+equivalent to the @code{actual} field return by the 'query-balloon' command
+
+@b{Arguments:}
+@table @asis
+@item @code{actual: int}
+actual level of the guest memory balloon in bytes
+@end table
+
+@b{Note:}
+this event is rate-limited.
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+<- @{ "event": "BALLOON_CHANGE",
+ "data": @{ "actual": 944766976 @},
+ "timestamp": @{ "seconds": 1267020223, "microseconds": 435656 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} PciMemoryRange
+
+A PCI device memory region
+
+@b{Members:}
+@table @asis
+@item @code{base: int}
+the starting address (guest physical)
+@item @code{limit: int}
+the ending address (guest physical)
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} PciMemoryRegion
+
+Information about a PCI device I/O region.
+
+@b{Members:}
+@table @asis
+@item @code{bar: int}
+the index of the Base Address Register for this region
+@item @code{type: string}
+'io' if the region is a PIO region
+'memory' if the region is a MMIO region
+@item @code{size: int}
+memory size
+@item @code{prefetch: boolean} (optional)
+if @code{type} is 'memory', true if the memory is prefetchable
+@item @code{mem_type_64: boolean} (optional)
+if @code{type} is 'memory', true if the BAR is 64-bit
+@item @code{address: int}
+Not documented
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} PciBusInfo
+
+Information about a bus of a PCI Bridge device
+
+@b{Members:}
+@table @asis
+@item @code{number: int}
+primary bus interface number. This should be the number of the
+bus the device resides on.
+@item @code{secondary: int}
+secondary bus interface number. This is the number of the
+main bus for the bridge
+@item @code{subordinate: int}
+This is the highest number bus that resides below the
+bridge.
+@item @code{io_range: PciMemoryRange}
+The PIO range for all devices on this bridge
+@item @code{memory_range: PciMemoryRange}
+The MMIO range for all devices on this bridge
+@item @code{prefetchable_range: PciMemoryRange}
+The range of prefetchable MMIO for all devices on
+this bridge
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} PciBridgeInfo
+
+Information about a PCI Bridge device
+
+@b{Members:}
+@table @asis
+@item @code{bus: PciBusInfo}
+information about the bus the device resides on
+@item @code{devices: array of PciDeviceInfo} (optional)
+a list of @code{PciDeviceInfo} for each device on this bridge
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} PciDeviceClass
+
+Information about the Class of a PCI device
+
+@b{Members:}
+@table @asis
+@item @code{desc: string} (optional)
+a string description of the device's class
+@item @code{class: int}
+the class code of the device
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} PciDeviceId
+
+Information about the Id of a PCI device
+
+@b{Members:}
+@table @asis
+@item @code{device: int}
+the PCI device id
+@item @code{vendor: int}
+the PCI vendor id
+@end table
+
+@b{Since:}
+2.4
+
+@end deftp
+
+
+
+@deftp {Object} PciDeviceInfo
+
+Information about a PCI device
+
+@b{Members:}
+@table @asis
+@item @code{bus: int}
+the bus number of the device
+@item @code{slot: int}
+the slot the device is located in
+@item @code{function: int}
+the function of the slot used by the device
+@item @code{class_info: PciDeviceClass}
+the class of the device
+@item @code{id: PciDeviceId}
+the PCI device id
+@item @code{irq: int} (optional)
+if an IRQ is assigned to the device, the IRQ number
+@item @code{qdev_id: string}
+the device name of the PCI device
+@item @code{pci_bridge: PciBridgeInfo} (optional)
+if the device is a PCI bridge, the bridge information
+@item @code{regions: array of PciMemoryRegion}
+a list of the PCI I/O regions associated with the device
+@end table
+
+@b{Notes:}
+the contents of @code{class_info}.desc are not stable and should only be
+treated as informational.
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftp {Object} PciInfo
+
+Information about a PCI bus
+
+@b{Members:}
+@table @asis
+@item @code{bus: int}
+the bus index
+@item @code{devices: array of PciDeviceInfo}
+a list of devices on this bus
+@end table
+
+@b{Since:}
+0.14.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-pci
+
+Return information about the PCI bus topology of the guest.
+
+@b{Returns:}
+a list of @code{PciInfo} for each PCI bus. Each bus is
+represented by a json-object, which has a key with a json-array of
+all PCI devices attached to it. Each device is represented by a
+json-object.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-pci" @}
+<- @{ "return": [
+ @{
+ "bus": 0,
+ "devices": [
+ @{
+ "bus": 0,
+ "qdev_id": "",
+ "slot": 0,
+ "class_info": @{
+ "class": 1536,
+ "desc": "Host bridge"
+ @},
+ "id": @{
+ "device": 32902,
+ "vendor": 4663
+ @},
+ "function": 0,
+ "regions": [
+ ]
+ @},
+ @{
+ "bus": 0,
+ "qdev_id": "",
+ "slot": 1,
+ "class_info": @{
+ "class": 1537,
+ "desc": "ISA bridge"
+ @},
+ "id": @{
+ "device": 32902,
+ "vendor": 28672
+ @},
+ "function": 0,
+ "regions": [
+ ]
+ @},
+ @{
+ "bus": 0,
+ "qdev_id": "",
+ "slot": 1,
+ "class_info": @{
+ "class": 257,
+ "desc": "IDE controller"
+ @},
+ "id": @{
+ "device": 32902,
+ "vendor": 28688
+ @},
+ "function": 1,
+ "regions": [
+ @{
+ "bar": 4,
+ "size": 16,
+ "address": 49152,
+ "type": "io"
+ @}
+ ]
+ @},
+ @{
+ "bus": 0,
+ "qdev_id": "",
+ "slot": 2,
+ "class_info": @{
+ "class": 768,
+ "desc": "VGA controller"
+ @},
+ "id": @{
+ "device": 4115,
+ "vendor": 184
+ @},
+ "function": 0,
+ "regions": [
+ @{
+ "prefetch": true,
+ "mem_type_64": false,
+ "bar": 0,
+ "size": 33554432,
+ "address": 4026531840,
+ "type": "memory"
+ @},
+ @{
+ "prefetch": false,
+ "mem_type_64": false,
+ "bar": 1,
+ "size": 4096,
+ "address": 4060086272,
+ "type": "memory"
+ @},
+ @{
+ "prefetch": false,
+ "mem_type_64": false,
+ "bar": 6,
+ "size": 65536,
+ "address": -1,
+ "type": "memory"
+ @}
+ ]
+ @},
+ @{
+ "bus": 0,
+ "qdev_id": "",
+ "irq": 11,
+ "slot": 4,
+ "class_info": @{
+ "class": 1280,
+ "desc": "RAM controller"
+ @},
+ "id": @{
+ "device": 6900,
+ "vendor": 4098
+ @},
+ "function": 0,
+ "regions": [
+ @{
+ "bar": 0,
+ "size": 32,
+ "address": 49280,
+ "type": "io"
+ @}
+ ]
+ @}
+ ]
+ @}
+ ]
+ @}
+@end example
+
+@b{Note:}
+This example has been shortened as the real response is too long.
+
+@end deftypefn
+
+
+
+@deftypefn Command {} quit
+
+This command will cause the QEMU process to exit gracefully. While every
+attempt is made to send the QMP response before terminating, this is not
+guaranteed. When using this interface, a premature EOF would not be
+unexpected.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "quit" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} stop
+
+Stop all guest VCPU execution.
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+This function will succeed even if the guest is already in the stopped
+state. In "inmigrate" state, it will ensure that the guest
+remains paused once migration finishes, as if the -S option was
+passed on the command line.
+
+@b{Example:}
+@example
+-> @{ "execute": "stop" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} system_reset
+
+Performs a hard reset of a guest.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "system_reset" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} system_powerdown
+
+Requests that a guest perform a powerdown operation.
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+A guest may or may not respond to this command. This command
+returning does not indicate that a guest has accepted the request or
+that it has shut down. Many guests will respond to this command by
+prompting the user in some way.
+
+@b{Example:}
+@example
+-> @{ "execute": "system_powerdown" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} cpu-add
+
+Adds CPU with specified ID
+
+@b{Arguments:}
+@table @asis
+@item @code{id: int}
+ID of CPU to be created, valid values [0..max_cpus)
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+-> @{ "execute": "cpu-add", "arguments": @{ "id": 2 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} memsave
+
+Save a portion of guest memory to a file.
+
+@b{Arguments:}
+@table @asis
+@item @code{val: int}
+the virtual address of the guest to start from
+@item @code{size: int}
+the size of memory region to save
+@item @code{filename: string}
+the file to save the memory to as binary data
+@item @code{cpu-index: int} (optional)
+the index of the virtual CPU to use for translating the
+virtual address (defaults to CPU 0)
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+Errors were not reliably returned until 1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "memsave",
+ "arguments": @{ "val": 10,
+ "size": 100,
+ "filename": "/tmp/virtual-mem-dump" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} pmemsave
+
+Save a portion of guest physical memory to a file.
+
+@b{Arguments:}
+@table @asis
+@item @code{val: int}
+the physical address of the guest to start from
+@item @code{size: int}
+the size of memory region to save
+@item @code{filename: string}
+the file to save the memory to as binary data
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+Errors were not reliably returned until 1.1
+
+@b{Example:}
+@example
+-> @{ "execute": "pmemsave",
+ "arguments": @{ "val": 10,
+ "size": 100,
+ "filename": "/tmp/physical-mem-dump" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} cont
+
+Resume guest VCPU execution.
+
+@b{Since:}
+0.14.0
+
+@b{Returns:}
+If successful, nothing
+
+@b{Notes:}
+This command will succeed if the guest is currently running. It
+will also succeed if the guest is in the "inmigrate" state; in
+this case, the effect of the command is to make sure the guest
+starts once migration finishes, removing the effect of the -S
+command line option if it was passed.
+
+@b{Example:}
+@example
+-> @{ "execute": "cont" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} system_wakeup
+
+Wakeup guest from suspend. Does nothing in case the guest isn't suspended.
+
+@b{Since:}
+1.1
+
+@b{Returns:}
+nothing.
+
+@b{Example:}
+@example
+-> @{ "execute": "system_wakeup" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} inject-nmi
+
+Injects a Non-Maskable Interrupt into the default CPU (x86/s390) or all CPUs (ppc64).
+The command fails when the guest doesn't support injecting.
+
+@b{Returns:}
+If successful, nothing
+
+@b{Since:}
+0.14.0
+
+@b{Note:}
+prior to 2.1, this command was only supported for x86 and s390 VMs
+
+@b{Example:}
+@example
+-> @{ "execute": "inject-nmi" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} balloon
+
+Request the balloon driver to change its balloon size.
+
+@b{Arguments:}
+@table @asis
+@item @code{value: int}
+the target size of the balloon in bytes
+@end table
+
+@b{Returns:}
+Nothing on success
+If the balloon driver is enabled but not functional because the KVM
+kernel module cannot support it, KvmMissingCap
+If no balloon device is present, DeviceNotActive
+
+@b{Notes:}
+This command just issues a request to the guest. When it returns,
+the balloon size may not have changed. A guest can change the balloon
+size independent of this command.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "balloon", "arguments": @{ "value": 536870912 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} human-monitor-command
+
+Execute a command on the human monitor and return the output.
+
+@b{Arguments:}
+@table @asis
+@item @code{command-line: string}
+the command to execute in the human monitor
+@item @code{cpu-index: int} (optional)
+The CPU to use for commands that require an implicit CPU
+@end table
+
+@b{Returns:}
+the output of the command as a string
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+This command only exists as a stop-gap. Its use is highly
+discouraged. The semantics of this command are not
+guaranteed: this means that command names, arguments and
+responses can change or be removed at ANY time. Applications
+that rely on long term stability guarantees should NOT
+use this command.
+
+Known limitations:
+
+@itemize @bullet
+@item
+This command is stateless, this means that commands that depend
+on state information (such as getfd) might not work
+
+@item
+Commands that prompt the user for data don't currently work
+@end itemize
+
+
+@b{Example:}
+@example
+-> @{ "execute": "human-monitor-command",
+ "arguments": @{ "command-line": "info kvm" @} @}
+<- @{ "return": "kvm support: enabled\r\n" @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} ObjectPropertyInfo
+
+
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the name of the property
+@item @code{type: string}
+the type of the property. This will typically come in one of four
+forms:
+
+1) A primitive type such as 'u8', 'u16', 'bool', 'str', or 'double'.
+These types are mapped to the appropriate JSON type.
+
+2) A child type in the form 'child<subtype>' where subtype is a qdev
+device type name. Child properties create the composition tree.
+
+3) A link type in the form 'link<subtype>' where subtype is a qdev
+device type name. Link properties form the device model graph.
+@item @code{description: string} (optional)
+if specified, the description of the property.
+@end table
+
+@b{Since:}
+1.2
+
+@end deftp
+
+
+
+@deftypefn Command {} qom-list
+
+This command will list any properties of a object given a path in the object
+model.
+
+@b{Arguments:}
+@table @asis
+@item @code{path: string}
+the path within the object model. See @code{qom-get} for a description of
+this parameter.
+@end table
+
+@b{Returns:}
+a list of @code{ObjectPropertyInfo} that describe the properties of the
+object.
+
+@b{Since:}
+1.2
+
+@end deftypefn
+
+
+
+@deftypefn Command {} qom-get
+
+This command will get a property from a object model path and return the
+value.
+
+@b{Arguments:}
+@table @asis
+@item @code{path: string}
+The path within the object model. There are two forms of supported
+paths--absolute and partial paths.
+
+Absolute paths are derived from the root object and can follow child<>
+or link<> properties. Since they can follow link<> properties, they
+can be arbitrarily long. Absolute paths look like absolute filenames
+and are prefixed with a leading slash.
+
+Partial paths look like relative filenames. They do not begin
+with a prefix. The matching rules for partial paths are subtle but
+designed to make specifying objects easy. At each level of the
+composition tree, the partial path is matched as an absolute path.
+The first match is not returned. At least two matches are searched
+for. A successful result is only returned if only one match is
+found. If more than one match is found, a flag is return to
+indicate that the match was ambiguous.
+@item @code{property: string}
+The property name to read
+@end table
+
+@b{Returns:}
+The property value. The type depends on the property
+type. child<> and link<> properties are returned as #str
+pathnames. All integer property types (u8, u16, etc) are
+returned as #int.
+
+@b{Since:}
+1.2
+
+@end deftypefn
+
+
+
+@deftypefn Command {} qom-set
+
+This command will set a property from a object model path.
+
+@b{Arguments:}
+@table @asis
+@item @code{path: string}
+see @code{qom-get} for a description of this parameter
+@item @code{property: string}
+the property name to set
+@item @code{value: value}
+a value who's type is appropriate for the property type. See @code{qom-get}
+for a description of type mapping.
+@end table
+
+@b{Since:}
+1.2
+
+@end deftypefn
+
+
+
+@deftypefn Command {} change
+
+This command is multiple commands multiplexed together.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+This is normally the name of a block device but it may also be 'vnc'.
+when it's 'vnc', then sub command depends on @code{target}
+@item @code{target: string}
+If @code{device} is a block device, then this is the new filename.
+If @code{device} is 'vnc', then if the value 'password' selects the vnc
+change password command. Otherwise, this specifies a new server URI
+address to listen to for VNC connections.
+@item @code{arg: string} (optional)
+If @code{device} is a block device, then this is an optional format to open
+the device with.
+If @code{device} is 'vnc' and @code{target} is 'password', this is the new VNC
+password to set. See change-vnc-password for additional notes.
+@end table
+
+@b{Returns:}
+Nothing on success.
+If @code{device} is not a valid block device, DeviceNotFound
+
+@b{Notes:}
+This interface is deprecated, and it is strongly recommended that you
+avoid using it. For changing block devices, use
+blockdev-change-medium; for changing VNC parameters, use
+change-vnc-password.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+1. Change a removable medium
+
+-> @{ "execute": "change",
+ "arguments": @{ "device": "ide1-cd0",
+ "target": "/srv/images/Fedora-12-x86_64-DVD.iso" @} @}
+<- @{ "return": @{@} @}
+
+2. Change VNC password
+
+-> @{ "execute": "change",
+ "arguments": @{ "device": "vnc", "target": "password",
+ "arg": "foobar1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} ObjectTypeInfo
+
+This structure describes a search result from @code{qom-list-types}
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the type name found in the search
+@item @code{abstract: boolean} (optional)
+the type is abstract and can't be directly instantiated.
+Omitted if false. (since 2.10)
+@item @code{parent: string} (optional)
+Name of parent type, if any (since 2.10)
+@end table
+
+@b{Since:}
+1.1
+
+@end deftp
+
+
+
+@deftypefn Command {} qom-list-types
+
+This command will return a list of types given search parameters
+
+@b{Arguments:}
+@table @asis
+@item @code{implements: string} (optional)
+if specified, only return types that implement this type name
+@item @code{abstract: boolean} (optional)
+if true, include abstract types in the results
+@end table
+
+@b{Returns:}
+a list of @code{ObjectTypeInfo} or an empty list if no results are found
+
+@b{Since:}
+1.1
+
+@end deftypefn
+
+
+
+@deftypefn Command {} device-list-properties
+
+List properties associated with a device.
+
+@b{Arguments:}
+@table @asis
+@item @code{typename: string}
+the type name of a device
+@end table
+
+@b{Returns:}
+a list of ObjectPropertyInfo describing a devices properties
+
+@b{Since:}
+1.2
+
+@end deftypefn
+
+
+
+@deftypefn Command {} qom-list-properties
+
+List properties associated with a QOM object.
+
+@b{Arguments:}
+@table @asis
+@item @code{typename: string}
+the type name of an object
+@end table
+
+@b{Returns:}
+a list of ObjectPropertyInfo describing object properties
+
+@b{Since:}
+2.12
+
+@end deftypefn
+
+
+
+@deftypefn Command {} xen-set-global-dirty-log
+
+Enable or disable the global dirty log mode.
+
+@b{Arguments:}
+@table @asis
+@item @code{enable: boolean}
+true to enable, false to disable.
+@end table
+
+@b{Returns:}
+nothing
+
+@b{Since:}
+1.3
+
+@b{Example:}
+@example
+-> @{ "execute": "xen-set-global-dirty-log",
+ "arguments": @{ "enable": true @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} device_add
+
+
+
+@b{Arguments:}
+@table @asis
+@item @code{driver: string}
+the name of the new device's driver
+@item @code{bus: string} (optional)
+the device's parent bus (device tree path)
+@item @code{id: string} (optional)
+the device's ID, must be unique
+@end table
+Additional arguments depend on the type.
+
+Add a device.
+
+@b{Notes:}
+@enumerate
+@item
+For detailed information about this command, please refer to the
+'docs/qdev-device-use.txt' file.
+
+@item
+It's possible to list device properties by running QEMU with the
+"-device DEVICE,help" command-line argument, where DEVICE is the
+device's name
+@end enumerate
+
+
+@b{Example:}
+@example
+-> @{ "execute": "device_add",
+ "arguments": @{ "driver": "e1000", "id": "net1",
+ "bus": "pci.0",
+ "mac": "52:54:00:12:34:56" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@b{TODO:}
+This command effectively bypasses QAPI completely due to its
+"additional arguments" business. It shouldn't have been added to
+the schema in this form. It should be qapified properly, or
+replaced by a properly qapified command.
+
+@b{Since:}
+0.13
+
+@end deftypefn
+
+
+
+@deftypefn Command {} device_del
+
+Remove a device from a guest
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the device's ID or QOM path
+@end table
+
+@b{Returns:}
+Nothing on success
+If @code{id} is not a valid device, DeviceNotFound
+
+@b{Notes:}
+When this command completes, the device may not be removed from the
+guest. Hot removal is an operation that requires guest cooperation.
+This command merely requests that the guest begin the hot removal
+process. Completion of the device removal process is signaled with a
+DEVICE_DELETED event. Guest reset will automatically complete removal
+for all devices.
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "device_del",
+ "arguments": @{ "id": "net1" @} @}
+<- @{ "return": @{@} @}
+
+-> @{ "execute": "device_del",
+ "arguments": @{ "id": "/machine/peripheral-anon/device[0]" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} DEVICE_DELETED
+
+Emitted whenever the device removal completion is acknowledged by the guest.
+At this point, it's safe to reuse the specified device ID. Device removal can
+be initiated by the guest or by HMP/QMP commands.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string} (optional)
+device name
+@item @code{path: string}
+device path
+@end table
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+<- @{ "event": "DEVICE_DELETED",
+ "data": @{ "device": "virtio-net-pci-0",
+ "path": "/machine/peripheral/virtio-net-pci-0" @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} DumpGuestMemoryFormat
+
+An enumeration of guest-memory-dump's format.
+
+@b{Values:}
+@table @asis
+@item @code{elf}
+elf format
+@item @code{kdump-zlib}
+kdump-compressed format with zlib-compressed
+@item @code{kdump-lzo}
+kdump-compressed format with lzo-compressed
+@item @code{kdump-snappy}
+kdump-compressed format with snappy-compressed
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} dump-guest-memory
+
+Dump guest's memory to vmcore. It is a synchronous operation that can take
+very long depending on the amount of guest memory.
+
+@b{Arguments:}
+@table @asis
+@item @code{paging: boolean}
+if true, do paging to get guest's memory mapping. This allows
+using gdb to process the core file.
+
+IMPORTANT: this option can make QEMU allocate several gigabytes
+of RAM. This can happen for a large guest, or a
+malicious guest pretending to be large.
+
+Also, paging=true has the following limitations:
+
+@enumerate
+@item
+The guest may be in a catastrophic state or can have corrupted
+memory, which cannot be trusted
+@item
+The guest can be in real-mode even if paging is enabled. For
+example, the guest uses ACPI to sleep, and ACPI sleep state
+goes in real-mode
+@item
+Currently only supported on i386 and x86_64.
+@end enumerate
+
+@item @code{protocol: string}
+the filename or file descriptor of the vmcore. The supported
+protocols are:
+
+@enumerate
+@item
+file: the protocol starts with "file:", and the following
+string is the file's path.
+@item
+fd: the protocol starts with "fd:", and the following string
+is the fd's name.
+@end enumerate
+
+@item @code{detach: boolean} (optional)
+if true, QMP will return immediately rather than
+waiting for the dump to finish. The user can track progress
+using "query-dump". (since 2.6).
+@item @code{begin: int} (optional)
+if specified, the starting physical address.
+@item @code{length: int} (optional)
+if specified, the memory size, in bytes. If you don't
+want to dump all guest's memory, please specify the start @code{begin}
+and @code{length}
+@item @code{format: DumpGuestMemoryFormat} (optional)
+if specified, the format of guest memory dump. But non-elf
+format is conflict with paging and filter, ie. @code{paging}, @code{begin} and
+@code{length} is not allowed to be specified with non-elf @code{format} at the
+same time (since 2.0)
+@end table
+
+@b{Note:}
+All boolean arguments default to false
+
+@b{Returns:}
+nothing on success
+
+@b{Since:}
+1.2
+
+@b{Example:}
+@example
+-> @{ "execute": "dump-guest-memory",
+ "arguments": @{ "protocol": "fd:dump" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} DumpStatus
+
+Describe the status of a long-running background guest memory dump.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+no dump-guest-memory has started yet.
+@item @code{active}
+there is one dump running in background.
+@item @code{completed}
+the last dump has finished successfully.
+@item @code{failed}
+the last dump has failed.
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftp {Object} DumpQueryResult
+
+The result format for 'query-dump'.
+
+@b{Members:}
+@table @asis
+@item @code{status: DumpStatus}
+enum of @code{DumpStatus}, which shows current dump status
+@item @code{completed: int}
+bytes written in latest dump (uncompressed)
+@item @code{total: int}
+total bytes to be written in latest dump (uncompressed)
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftypefn Command {} query-dump
+
+Query latest dump status.
+
+@b{Returns:}
+A @code{DumpStatus} object showing the dump status.
+
+@b{Since:}
+2.6
+
+@b{Example:}
+@example
+-> @{ "execute": "query-dump" @}
+<- @{ "return": @{ "status": "active", "completed": 1024000,
+ "total": 2048000 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} DUMP_COMPLETED
+
+Emitted when background dump has completed
+
+@b{Arguments:}
+@table @asis
+@item @code{result: DumpQueryResult}
+final dump status
+@item @code{error: string} (optional)
+human-readable error string that provides
+hint on why dump failed. Only presents on failure. The
+user should not try to interpret the error string.
+@end table
+
+@b{Since:}
+2.6
+
+@b{Example:}
+@example
+@{ "event": "DUMP_COMPLETED",
+ "data": @{"result": @{"total": 1090650112, "status": "completed",
+ "completed": 1090650112@} @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} DumpGuestMemoryCapability
+
+A list of the available formats for dump-guest-memory
+
+@b{Members:}
+@table @asis
+@item @code{formats: array of DumpGuestMemoryFormat}
+Not documented
+@end table
+
+@b{Since:}
+2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-dump-guest-memory-capability
+
+Returns the available formats for dump-guest-memory
+
+@b{Returns:}
+A @code{DumpGuestMemoryCapability} object listing available formats for
+dump-guest-memory
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "query-dump-guest-memory-capability" @}
+<- @{ "return": @{ "formats":
+ ["elf", "kdump-zlib", "kdump-lzo", "kdump-snappy"] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} dump-skeys
+
+Dump guest's storage keys
+
+@b{Arguments:}
+@table @asis
+@item @code{filename: string}
+the path to the file to dump to
+@end table
+This command is only supported on s390 architecture.
+
+@b{Since:}
+2.5
+
+@b{Example:}
+@example
+-> @{ "execute": "dump-skeys",
+ "arguments": @{ "filename": "/tmp/skeys" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} object-add
+
+Create a QOM object.
+
+@b{Arguments:}
+@table @asis
+@item @code{qom-type: string}
+the class name for the object to be created
+@item @code{id: string}
+the name of the new object
+@item @code{props: value} (optional)
+a dictionary of properties to be passed to the backend
+@end table
+
+@b{Returns:}
+Nothing on success
+Error if @code{qom-type} is not a valid class name
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "object-add",
+ "arguments": @{ "qom-type": "rng-random", "id": "rng1",
+ "props": @{ "filename": "/dev/hwrng" @} @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} object-del
+
+Remove a QOM object.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: string}
+the name of the QOM object to remove
+@end table
+
+@b{Returns:}
+Nothing on success
+Error if @code{id} is not a valid id for a QOM object
+
+@b{Since:}
+2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "object-del", "arguments": @{ "id": "rng1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} getfd
+
+Receive a file descriptor via SCM rights and assign it a name
+
+@b{Arguments:}
+@table @asis
+@item @code{fdname: string}
+file descriptor name
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Notes:}
+If @code{fdname} already exists, the file descriptor assigned to
+it will be closed and replaced by the received file
+descriptor.
+
+The 'closefd' command can be used to explicitly close the
+file descriptor when it is no longer needed.
+
+@b{Example:}
+@example
+-> @{ "execute": "getfd", "arguments": @{ "fdname": "fd1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} closefd
+
+Close a file descriptor previously passed via SCM rights
+
+@b{Arguments:}
+@table @asis
+@item @code{fdname: string}
+file descriptor name
+@end table
+
+@b{Returns:}
+Nothing on success
+
+@b{Since:}
+0.14.0
+
+@b{Example:}
+@example
+-> @{ "execute": "closefd", "arguments": @{ "fdname": "fd1" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} MachineInfo
+
+Information describing a machine.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the name of the machine
+@item @code{alias: string} (optional)
+an alias for the machine name
+@item @code{is-default: boolean} (optional)
+whether the machine is default
+@item @code{cpu-max: int}
+maximum number of CPUs supported by the machine type
+(since 1.5.0)
+@item @code{hotpluggable-cpus: boolean}
+cpu hotplug via -device is supported (since 2.7.0)
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-machines
+
+Return a list of supported machines
+
+@b{Returns:}
+a list of MachineInfo
+
+@b{Since:}
+1.2.0
+
+@end deftypefn
+
+
+
+@deftp {Object} CpuDefinitionInfo
+
+Virtual CPU definition.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the name of the CPU definition
+@item @code{migration-safe: boolean} (optional)
+whether a CPU definition can be safely used for
+migration in combination with a QEMU compatibility machine
+when migrating between different QMU versions and between
+hosts with different sets of (hardware or software)
+capabilities. If not provided, information is not available
+and callers should not assume the CPU definition to be
+migration-safe. (since 2.8)
+@item @code{static: boolean}
+whether a CPU definition is static and will not change depending on
+QEMU version, machine type, machine options and accelerator options.
+A static model is always migration-safe. (since 2.8)
+@item @code{unavailable-features: array of string} (optional)
+List of properties that prevent
+the CPU model from running in the current
+host. (since 2.8)
+@item @code{typename: string}
+Type name that can be used as argument to @code{device-list-properties},
+to introspect properties configurable using -cpu or -global.
+(since 2.9)
+@end table
+@code{unavailable-features} is a list of QOM property names that
+represent CPU model attributes that prevent the CPU from running.
+If the QOM property is read-only, that means there's no known
+way to make the CPU model run in the current host. Implementations
+that choose not to provide specific information return the
+property name "type".
+If the property is read-write, it means that it MAY be possible
+to run the CPU model in the current host if that property is
+changed. Management software can use it as hints to suggest or
+choose an alternative for the user, or just to generate meaningful
+error messages explaining why the CPU model can't be used.
+If @code{unavailable-features} is an empty list, the CPU model is
+runnable using the current host and machine-type.
+If @code{unavailable-features} is not present, runnability
+information for the CPU is not available.
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftp {Object} MemoryInfo
+
+Actual memory information in bytes.
+
+@b{Members:}
+@table @asis
+@item @code{base-memory: int}
+size of "base" memory specified with command line
+option -m.
+@item @code{plugged-memory: int} (optional)
+size of memory that can be hot-unplugged. This field
+is omitted if target doesn't support memory hotplug
+(i.e. CONFIG_MEM_HOTPLUG not defined on build time).
+@end table
+
+@b{Since:}
+2.11.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-memory-size-summary
+
+Return the amount of initially allocated and present hotpluggable (if
+enabled) memory in bytes.
+
+@b{Example:}
+@example
+-> @{ "execute": "query-memory-size-summary" @}
+<- @{ "return": @{ "base-memory": 4294967296, "plugged-memory": 0 @} @}
+@end example
+
+@b{Since:}
+2.11.0
+
+@end deftypefn
+
+
+
+@deftypefn Command {} query-cpu-definitions
+
+Return a list of supported virtual CPU definitions
+
+@b{Returns:}
+a list of CpuDefInfo
+
+@b{Since:}
+1.2.0
+
+@end deftypefn
+
+
+
+@deftp {Object} CpuModelInfo
+
+Virtual CPU model.
+
+A CPU model consists of the name of a CPU definition, to which
+delta changes are applied (e.g. features added/removed). Most magic values
+that an architecture might require should be hidden behind the name.
+However, if required, architectures can expose relevant properties.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+the name of the CPU definition the model is based on
+@item @code{props: value} (optional)
+a dictionary of QOM properties to be applied
+@end table
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftp {Enum} CpuModelExpansionType
+
+An enumeration of CPU model expansion types.
+
+@b{Values:}
+@table @asis
+@item @code{static}
+Expand to a static CPU model, a combination of a static base
+model name and property delta changes. As the static base model will
+never change, the expanded CPU model will be the same, independent of
+independent of QEMU version, machine type, machine options, and
+accelerator options. Therefore, the resulting model can be used by
+tooling without having to specify a compatibility machine - e.g. when
+displaying the "host" model. static CPU models are migration-safe.
+@item @code{full}
+Expand all properties. The produced model is not guaranteed to be
+migration-safe, but allows tooling to get an insight and work with
+model details.
+@end table
+
+@b{Note:}
+When a non-migration-safe CPU model is expanded in static mode, some
+features enabled by the CPU model may be omitted, because they can't be
+implemented by a static CPU model definition (e.g. cache info passthrough and
+PMU passthrough in x86). If you need an accurate representation of the
+features enabled by a non-migration-safe CPU model, use @code{full}. If you need a
+static representation that will keep ABI compatibility even when changing QEMU
+version or machine-type, use @code{static} (but keep in mind that some features may
+be omitted).
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftp {Object} CpuModelExpansionInfo
+
+The result of a cpu model expansion.
+
+@b{Members:}
+@table @asis
+@item @code{model: CpuModelInfo}
+the expanded CpuModelInfo.
+@end table
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-cpu-model-expansion
+
+Expands a given CPU model (or a combination of CPU model + additional options)
+to different granularities, allowing tooling to get an understanding what a
+specific CPU model looks like in QEMU under a certain configuration.
+
+This interface can be used to query the "host" CPU model.
+
+The data returned by this command may be affected by:
+
+@itemize @bullet
+@item
+QEMU version: CPU models may look different depending on the QEMU version.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine-type: CPU model may look different depending on the machine-type.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine options (including accelerator): in some architectures, CPU models
+may look different depending on machine and accelerator options. (Except for
+CPU models reported as "static" in query-cpu-definitions.)
+@item
+"-cpu" arguments and global properties: arguments to the -cpu option and
+global properties may affect expansion of CPU models. Using
+query-cpu-model-expansion while using these is not advised.
+
+@end itemize
+
+Some architectures may not support all expansion types. s390x supports
+"full" and "static".
+
+@b{Arguments:}
+@table @asis
+@item @code{type: CpuModelExpansionType}
+Not documented
+@item @code{model: CpuModelInfo}
+Not documented
+@end table
+
+@b{Returns:}
+a CpuModelExpansionInfo. Returns an error if expanding CPU models is
+not supported, if the model cannot be expanded, if the model contains
+an unknown CPU definition name, unknown properties or properties
+with a wrong type. Also returns an error if an expansion type is
+not supported.
+
+@b{Since:}
+2.8.0
+
+@end deftypefn
+
+
+
+@deftp {Enum} CpuModelCompareResult
+
+An enumeration of CPU model comparison results. The result is usually
+calculated using e.g. CPU features or CPU generations.
+
+@b{Values:}
+@table @asis
+@item @code{incompatible}
+If model A is incompatible to model B, model A is not
+guaranteed to run where model B runs and the other way around.
+@item @code{identical}
+If model A is identical to model B, model A is guaranteed to run
+where model B runs and the other way around.
+@item @code{superset}
+If model A is a superset of model B, model B is guaranteed to run
+where model A runs. There are no guarantees about the other way.
+@item @code{subset}
+If model A is a subset of model B, model A is guaranteed to run
+where model B runs. There are no guarantees about the other way.
+@end table
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftp {Object} CpuModelCompareInfo
+
+The result of a CPU model comparison.
+
+@b{Members:}
+@table @asis
+@item @code{result: CpuModelCompareResult}
+The result of the compare operation.
+@item @code{responsible-properties: array of string}
+List of properties that led to the comparison result
+not being identical.
+@end table
+@code{responsible-properties} is a list of QOM property names that led to
+both CPUs not being detected as identical. For identical models, this
+list is empty.
+If a QOM property is read-only, that means there's no known way to make the
+CPU models identical. If the special property name "type" is included, the
+models are by definition not identical and cannot be made identical.
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-cpu-model-comparison
+
+Compares two CPU models, returning how they compare in a specific
+configuration. The results indicates how both models compare regarding
+runnability. This result can be used by tooling to make decisions if a
+certain CPU model will run in a certain configuration or if a compatible
+CPU model has to be created by baselining.
+
+Usually, a CPU model is compared against the maximum possible CPU model
+of a certain configuration (e.g. the "host" model for KVM). If that CPU
+model is identical or a subset, it will run in that configuration.
+
+The result returned by this command may be affected by:
+
+@itemize @bullet
+@item
+QEMU version: CPU models may look different depending on the QEMU version.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine-type: CPU model may look different depending on the machine-type.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine options (including accelerator): in some architectures, CPU models
+may look different depending on machine and accelerator options. (Except for
+CPU models reported as "static" in query-cpu-definitions.)
+@item
+"-cpu" arguments and global properties: arguments to the -cpu option and
+global properties may affect expansion of CPU models. Using
+query-cpu-model-expansion while using these is not advised.
+
+@end itemize
+
+Some architectures may not support comparing CPU models. s390x supports
+comparing CPU models.
+
+@b{Arguments:}
+@table @asis
+@item @code{modela: CpuModelInfo}
+Not documented
+@item @code{modelb: CpuModelInfo}
+Not documented
+@end table
+
+@b{Returns:}
+a CpuModelBaselineInfo. Returns an error if comparing CPU models is
+not supported, if a model cannot be used, if a model contains
+an unknown cpu definition name, unknown properties or properties
+with wrong types.
+
+@b{Since:}
+2.8.0
+
+@end deftypefn
+
+
+
+@deftp {Object} CpuModelBaselineInfo
+
+The result of a CPU model baseline.
+
+@b{Members:}
+@table @asis
+@item @code{model: CpuModelInfo}
+the baselined CpuModelInfo.
+@end table
+
+@b{Since:}
+2.8.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-cpu-model-baseline
+
+Baseline two CPU models, creating a compatible third model. The created
+model will always be a static, migration-safe CPU model (see "static"
+CPU model expansion for details).
+
+This interface can be used by tooling to create a compatible CPU model out
+two CPU models. The created CPU model will be identical to or a subset of
+both CPU models when comparing them. Therefore, the created CPU model is
+guaranteed to run where the given CPU models run.
+
+The result returned by this command may be affected by:
+
+@itemize @bullet
+@item
+QEMU version: CPU models may look different depending on the QEMU version.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine-type: CPU model may look different depending on the machine-type.
+(Except for CPU models reported as "static" in query-cpu-definitions.)
+@item
+machine options (including accelerator): in some architectures, CPU models
+may look different depending on machine and accelerator options. (Except for
+CPU models reported as "static" in query-cpu-definitions.)
+@item
+"-cpu" arguments and global properties: arguments to the -cpu option and
+global properties may affect expansion of CPU models. Using
+query-cpu-model-expansion while using these is not advised.
+
+@end itemize
+
+Some architectures may not support baselining CPU models. s390x supports
+baselining CPU models.
+
+@b{Arguments:}
+@table @asis
+@item @code{modela: CpuModelInfo}
+Not documented
+@item @code{modelb: CpuModelInfo}
+Not documented
+@end table
+
+@b{Returns:}
+a CpuModelBaselineInfo. Returns an error if baselining CPU models is
+not supported, if a model cannot be used, if a model contains
+an unknown cpu definition name, unknown properties or properties
+with wrong types.
+
+@b{Since:}
+2.8.0
+
+@end deftypefn
+
+
+
+@deftp {Object} AddfdInfo
+
+Information about a file descriptor that was added to an fd set.
+
+@b{Members:}
+@table @asis
+@item @code{fdset-id: int}
+The ID of the fd set that @code{fd} was added to.
+@item @code{fd: int}
+The file descriptor that was received via SCM rights and
+added to the fd set.
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} add-fd
+
+Add a file descriptor, that was passed via SCM rights, to an fd set.
+
+@b{Arguments:}
+@table @asis
+@item @code{fdset-id: int} (optional)
+The ID of the fd set to add the file descriptor to.
+@item @code{opaque: string} (optional)
+A free-form string that can be used to describe the fd.
+@end table
+
+@b{Returns:}
+@code{AddfdInfo} on success
+
+If file descriptor was not received, FdNotSupplied
+
+If @code{fdset-id} is a negative value, InvalidParameterValue
+
+@b{Notes:}
+The list of fd sets is shared by all monitor connections.
+
+If @code{fdset-id} is not specified, a new fd set will be created.
+
+@b{Since:}
+1.2.0
+
+@b{Example:}
+@example
+-> @{ "execute": "add-fd", "arguments": @{ "fdset-id": 1 @} @}
+<- @{ "return": @{ "fdset-id": 1, "fd": 3 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} remove-fd
+
+Remove a file descriptor from an fd set.
+
+@b{Arguments:}
+@table @asis
+@item @code{fdset-id: int}
+The ID of the fd set that the file descriptor belongs to.
+@item @code{fd: int} (optional)
+The file descriptor that is to be removed.
+@end table
+
+@b{Returns:}
+Nothing on success
+If @code{fdset-id} or @code{fd} is not found, FdNotFound
+
+@b{Since:}
+1.2.0
+
+@b{Notes:}
+The list of fd sets is shared by all monitor connections.
+
+If @code{fd} is not specified, all file descriptors in @code{fdset-id}
+will be removed.
+
+@b{Example:}
+@example
+-> @{ "execute": "remove-fd", "arguments": @{ "fdset-id": 1, "fd": 3 @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} FdsetFdInfo
+
+Information about a file descriptor that belongs to an fd set.
+
+@b{Members:}
+@table @asis
+@item @code{fd: int}
+The file descriptor value.
+@item @code{opaque: string} (optional)
+A free-form string that can be used to describe the fd.
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftp {Object} FdsetInfo
+
+Information about an fd set.
+
+@b{Members:}
+@table @asis
+@item @code{fdset-id: int}
+The ID of the fd set.
+@item @code{fds: array of FdsetFdInfo}
+A list of file descriptors that belong to this fd set.
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-fdsets
+
+Return information describing all fd sets.
+
+@b{Returns:}
+A list of @code{FdsetInfo}
+
+@b{Since:}
+1.2.0
+
+@b{Note:}
+The list of fd sets is shared by all monitor connections.
+
+@b{Example:}
+@example
+-> @{ "execute": "query-fdsets" @}
+<- @{ "return": [
+ @{
+ "fds": [
+ @{
+ "fd": 30,
+ "opaque": "rdonly:/path/to/file"
+ @},
+ @{
+ "fd": 24,
+ "opaque": "rdwr:/path/to/file"
+ @}
+ ],
+ "fdset-id": 1
+ @},
+ @{
+ "fds": [
+ @{
+ "fd": 28
+ @},
+ @{
+ "fd": 29
+ @}
+ ],
+ "fdset-id": 0
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} TargetInfo
+
+Information describing the QEMU target.
+
+@b{Members:}
+@table @asis
+@item @code{arch: string}
+the target architecture (eg "x86_64", "i386", etc)
+@end table
+
+@b{Since:}
+1.2.0
+
+@end deftp
+
+
+
+@deftypefn Command {} query-target
+
+Return information about the target for this QEMU
+
+@b{Returns:}
+TargetInfo
+
+@b{Since:}
+1.2.0
+
+@end deftypefn
+
+
+
+@deftp {Object} AcpiTableOptions
+
+Specify an ACPI table on the command line to load.
+
+At most one of @code{file} and @code{data} can be specified. The list of files specified
+by any one of them is loaded and concatenated in order. If both are omitted,
+@code{data} is implied.
+
+Other fields / optargs can be used to override fields of the generic ACPI
+table header; refer to the ACPI specification 5.0, section 5.2.6 System
+Description Table Header. If a header field is not overridden, then the
+corresponding value from the concatenated blob is used (in case of @code{file}), or
+it is filled in with a hard-coded value (in case of @code{data}).
+
+String fields are copied into the matching ACPI member from lowest address
+upwards, and silently truncated / NUL-padded to length.
+
+@b{Members:}
+@table @asis
+@item @code{sig: string} (optional)
+table signature / identifier (4 bytes)
+@item @code{rev: int} (optional)
+table revision number (dependent on signature, 1 byte)
+@item @code{oem_id: string} (optional)
+OEM identifier (6 bytes)
+@item @code{oem_table_id: string} (optional)
+OEM table identifier (8 bytes)
+@item @code{oem_rev: int} (optional)
+OEM-supplied revision number (4 bytes)
+@item @code{asl_compiler_id: string} (optional)
+identifier of the utility that created the table
+(4 bytes)
+@item @code{asl_compiler_rev: int} (optional)
+revision number of the utility that created the
+table (4 bytes)
+@item @code{file: string} (optional)
+colon (:) separated list of pathnames to load and
+concatenate as table data. The resultant binary blob is expected to
+have an ACPI table header. At least one file is required. This field
+excludes @code{data}.
+@item @code{data: string} (optional)
+colon (:) separated list of pathnames to load and
+concatenate as table data. The resultant binary blob must not have an
+ACPI table header. At least one file is required. This field excludes
+@code{file}.
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Enum} CommandLineParameterType
+
+Possible types for an option parameter.
+
+@b{Values:}
+@table @asis
+@item @code{string}
+accepts a character string
+@item @code{boolean}
+accepts "on" or "off"
+@item @code{number}
+accepts a number
+@item @code{size}
+accepts a number followed by an optional suffix (K)ilo,
+(M)ega, (G)iga, (T)era
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} CommandLineParameterInfo
+
+Details about a single parameter of a command line option.
+
+@b{Members:}
+@table @asis
+@item @code{name: string}
+parameter name
+@item @code{type: CommandLineParameterType}
+parameter @code{CommandLineParameterType}
+@item @code{help: string} (optional)
+human readable text string, not suitable for parsing.
+@item @code{default: string} (optional)
+default value string (since 2.1)
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} CommandLineOptionInfo
+
+Details about a command line option, including its list of parameter details
+
+@b{Members:}
+@table @asis
+@item @code{option: string}
+option name
+@item @code{parameters: array of CommandLineParameterInfo}
+an array of @code{CommandLineParameterInfo}
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftypefn Command {} query-command-line-options
+
+Query command line option schema.
+
+@b{Arguments:}
+@table @asis
+@item @code{option: string} (optional)
+option name
+@end table
+
+@b{Returns:}
+list of @code{CommandLineOptionInfo} for all options (or for the given
+@code{option}). Returns an error if the given @code{option} doesn't exist.
+
+@b{Since:}
+1.5
+
+@b{Example:}
+@example
+-> @{ "execute": "query-command-line-options",
+ "arguments": @{ "option": "option-rom" @} @}
+<- @{ "return": [
+ @{
+ "parameters": [
+ @{
+ "name": "romfile",
+ "type": "string"
+ @},
+ @{
+ "name": "bootindex",
+ "type": "number"
+ @}
+ ],
+ "option": "option-rom"
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} X86CPURegister32
+
+A X86 32-bit register
+
+@b{Values:}
+@table @asis
+@item @code{EAX}
+Not documented
+@item @code{EBX}
+Not documented
+@item @code{ECX}
+Not documented
+@item @code{EDX}
+Not documented
+@item @code{ESP}
+Not documented
+@item @code{EBP}
+Not documented
+@item @code{ESI}
+Not documented
+@item @code{EDI}
+Not documented
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} X86CPUFeatureWordInfo
+
+Information about a X86 CPU feature word
+
+@b{Members:}
+@table @asis
+@item @code{cpuid-input-eax: int}
+Input EAX value for CPUID instruction for that feature word
+@item @code{cpuid-input-ecx: int} (optional)
+Input ECX value for CPUID instruction for that
+feature word
+@item @code{cpuid-register: X86CPURegister32}
+Output register containing the feature bits
+@item @code{features: int}
+value of output register, containing the feature bits
+@end table
+
+@b{Since:}
+1.5
+
+@end deftp
+
+
+
+@deftp {Object} DummyForceArrays
+
+Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally
+
+@b{Members:}
+@table @asis
+@item @code{unused: array of X86CPUFeatureWordInfo}
+Not documented
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftp {Enum} NumaOptionsType
+
+
+
+@b{Values:}
+@table @asis
+@item @code{node}
+NUMA nodes configuration
+@item @code{dist}
+NUMA distance configuration (since 2.10)
+@item @code{cpu}
+property based CPU(s) to node mapping (Since: 2.10)
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} NumaOptions
+
+A discriminated record of NUMA options. (for OptsVisitor)
+
+@b{Members:}
+@table @asis
+@item @code{type: NumaOptionsType}
+Not documented
+@item The members of @code{NumaNodeOptions} when @code{type} is @t{"node"}
+@item The members of @code{NumaDistOptions} when @code{type} is @t{"dist"}
+@item The members of @code{NumaCpuOptions} when @code{type} is @t{"cpu"}
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} NumaNodeOptions
+
+Create a guest NUMA node. (for OptsVisitor)
+
+@b{Members:}
+@table @asis
+@item @code{nodeid: int} (optional)
+NUMA node ID (increase by 1 from 0 if omitted)
+@item @code{cpus: array of int} (optional)
+VCPUs belonging to this node (assign VCPUS round-robin
+if omitted)
+@item @code{mem: int} (optional)
+memory size of this node; mutually exclusive with @code{memdev}.
+Equally divide total memory among nodes if both @code{mem} and @code{memdev} are
+omitted.
+@item @code{memdev: string} (optional)
+memory backend object. If specified for one node,
+it must be specified for all nodes.
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} NumaDistOptions
+
+Set the distance between 2 NUMA nodes.
+
+@b{Members:}
+@table @asis
+@item @code{src: int}
+source NUMA node.
+@item @code{dst: int}
+destination NUMA node.
+@item @code{val: int}
+NUMA distance from source node to destination node.
+When a node is unreachable from another node, set the distance
+between them to 255.
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Object} NumaCpuOptions
+
+Option "-numa cpu" overrides default cpu to node mapping.
+It accepts the same set of cpu properties as returned by
+query-hotpluggable-cpus[].props, where node-id could be used to
+override default node mapping.
+
+@b{Members:}
+@table @asis
+@item The members of @code{CpuInstanceProperties}
+@end table
+
+@b{Since:}
+2.10
+
+@end deftp
+
+
+
+@deftp {Enum} HostMemPolicy
+
+Host memory policy types
+
+@b{Values:}
+@table @asis
+@item @code{default}
+restore default policy, remove any nondefault policy
+@item @code{preferred}
+set the preferred host nodes for allocation
+@item @code{bind}
+a strict policy that restricts memory allocation to the
+host nodes specified
+@item @code{interleave}
+memory allocations are interleaved across the set
+of host nodes specified
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} Memdev
+
+Information about memory backend
+
+@b{Members:}
+@table @asis
+@item @code{id: string} (optional)
+backend's ID if backend has 'id' property (since 2.9)
+@item @code{size: int}
+memory backend size
+@item @code{merge: boolean}
+enables or disables memory merge support
+@item @code{dump: boolean}
+includes memory backend's memory in a core dump or not
+@item @code{prealloc: boolean}
+enables or disables memory preallocation
+@item @code{host-nodes: array of int}
+host nodes for its memory policy
+@item @code{policy: HostMemPolicy}
+memory policy of memory backend
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftypefn Command {} query-memdev
+
+Returns information for all memory backends.
+
+@b{Returns:}
+a list of @code{Memdev}.
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+-> @{ "execute": "query-memdev" @}
+<- @{ "return": [
+ @{
+ "id": "mem1",
+ "size": 536870912,
+ "merge": false,
+ "dump": true,
+ "prealloc": false,
+ "host-nodes": [0, 1],
+ "policy": "bind"
+ @},
+ @{
+ "size": 536870912,
+ "merge": false,
+ "dump": true,
+ "prealloc": true,
+ "host-nodes": [2, 3],
+ "policy": "preferred"
+ @}
+ ]
+ @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} PCDIMMDeviceInfo
+
+PCDIMMDevice state information
+
+@b{Members:}
+@table @asis
+@item @code{id: string} (optional)
+device's ID
+@item @code{addr: int}
+physical address, where device is mapped
+@item @code{size: int}
+size of memory that the device provides
+@item @code{slot: int}
+slot number at which device is plugged in
+@item @code{node: int}
+NUMA node number where device is plugged in
+@item @code{memdev: string}
+memory backend linked with device
+@item @code{hotplugged: boolean}
+true if device was hotplugged
+@item @code{hotpluggable: boolean}
+true if device if could be added/removed while machine is running
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftp {Object} MemoryDeviceInfo
+
+Union containing information about a memory device
+
+@b{Members:}
+@table @asis
+@item @code{type}
+One of @t{"dimm"}, @t{"nvdimm"}
+@item @code{data: PCDIMMDeviceInfo} when @code{type} is @t{"dimm"}
+@item @code{data: PCDIMMDeviceInfo} when @code{type} is @t{"nvdimm"}
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftypefn Command {} query-memory-devices
+
+Lists available memory devices and their state
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+-> @{ "execute": "query-memory-devices" @}
+<- @{ "return": [ @{ "data":
+ @{ "addr": 5368709120,
+ "hotpluggable": true,
+ "hotplugged": true,
+ "id": "d1",
+ "memdev": "/objects/memX",
+ "node": 0,
+ "size": 1073741824,
+ "slot": 0@},
+ "type": "dimm"
+ @} ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} MEM_UNPLUG_ERROR
+
+Emitted when memory hot unplug error occurs.
+
+@b{Arguments:}
+@table @asis
+@item @code{device: string}
+device name
+@item @code{msg: string}
+Informative message
+@end table
+
+@b{Since:}
+2.4
+
+@b{Example:}
+@example
+<- @{ "event": "MEM_UNPLUG_ERROR"
+ "data": @{ "device": "dimm1",
+ "msg": "acpi: device unplug for unsupported device"
+ @},
+ "timestamp": @{ "seconds": 1265044230, "microseconds": 450486 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} ACPISlotType
+
+
+
+@b{Values:}
+@table @asis
+@item @code{DIMM}
+memory slot
+@item @code{CPU}
+logical CPU slot (since 2.7)
+@end table
+
+@end deftp
+
+
+
+@deftp {Object} ACPIOSTInfo
+
+OSPM Status Indication for a device
+For description of possible values of @code{source} and @code{status} fields
+see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec.
+
+@b{Members:}
+@table @asis
+@item @code{device: string} (optional)
+device ID associated with slot
+@item @code{slot: string}
+slot ID, unique per slot of a given @code{slot-type}
+@item @code{slot-type: ACPISlotType}
+type of the slot
+@item @code{source: int}
+an integer containing the source event
+@item @code{status: int}
+an integer containing the status code
+@end table
+
+@b{Since:}
+2.1
+
+@end deftp
+
+
+
+@deftypefn Command {} query-acpi-ospm-status
+
+Return a list of ACPIOSTInfo for devices that support status
+reporting via ACPI _OST method.
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+-> @{ "execute": "query-acpi-ospm-status" @}
+<- @{ "return": [ @{ "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0@},
+ @{ "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0@},
+ @{ "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0@},
+ @{ "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0@}
+ ]@}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} ACPI_DEVICE_OST
+
+Emitted when guest executes ACPI _OST method.
+
+@b{Arguments:}
+@table @asis
+@item @code{info: ACPIOSTInfo}
+OSPM Status Indication
+@end table
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+<- @{ "event": "ACPI_DEVICE_OST",
+ "data": @{ "device": "d1", "slot": "0",
+ "slot-type": "DIMM", "source": 1, "status": 0 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} rtc-reset-reinjection
+
+This command will reset the RTC interrupt reinjection backlog.
+Can be used if another mechanism to synchronize guest time
+is in effect, for example QEMU guest agent's guest-set-time
+command.
+
+@b{Since:}
+2.1
+
+@b{Example:}
+@example
+-> @{ "execute": "rtc-reset-reinjection" @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Event {} RTC_CHANGE
+
+Emitted when the guest changes the RTC time.
+
+@b{Arguments:}
+@table @asis
+@item @code{offset: int}
+offset between base RTC clock (as specified by -rtc base), and
+new RTC clock value
+@end table
+
+@b{Note:}
+This event is rate-limited.
+
+@b{Since:}
+0.13.0
+
+@b{Example:}
+@example
+<- @{ "event": "RTC_CHANGE",
+ "data": @{ "offset": 78 @},
+ "timestamp": @{ "seconds": 1267020223, "microseconds": 435656 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} ReplayMode
+
+Mode of the replay subsystem.
+
+@b{Values:}
+@table @asis
+@item @code{none}
+normal execution mode. Replay or record are not enabled.
+@item @code{record}
+record mode. All non-deterministic data is written into the
+replay log.
+@item @code{play}
+replay mode. Non-deterministic data required for system execution
+is read from the log.
+@end table
+
+@b{Since:}
+2.5
+
+@end deftp
+
+
+
+@deftypefn Command {} xen-load-devices-state
+
+Load the state of all devices from file. The RAM and the block devices
+of the VM are not loaded by this command.
+
+@b{Arguments:}
+@table @asis
+@item @code{filename: string}
+the file to load the state of the devices from as binary
+data. See xen-save-devices-state.txt for a description of the binary
+format.
+@end table
+
+@b{Since:}
+2.7
+
+@b{Example:}
+@example
+-> @{ "execute": "xen-load-devices-state",
+ "arguments": @{ "filename": "/tmp/resume" @} @}
+<- @{ "return": @{@} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} GICCapability
+
+The struct describes capability for a specific GIC (Generic
+Interrupt Controller) version. These bits are not only decided by
+QEMU/KVM software version, but also decided by the hardware that
+the program is running upon.
+
+@b{Members:}
+@table @asis
+@item @code{version: int}
+version of GIC to be described. Currently, only 2 and 3
+are supported.
+@item @code{emulated: boolean}
+whether current QEMU/hardware supports emulated GIC
+device in user space.
+@item @code{kernel: boolean}
+whether current QEMU/hardware supports hardware
+accelerated GIC device in kernel.
+@end table
+
+@b{Since:}
+2.6
+
+@end deftp
+
+
+
+@deftypefn Command {} query-gic-capabilities
+
+This command is ARM-only. It will return a list of GICCapability
+objects that describe its capability bits.
+
+@b{Returns:}
+a list of GICCapability objects.
+
+@b{Since:}
+2.6
+
+@b{Example:}
+@example
+-> @{ "execute": "query-gic-capabilities" @}
+<- @{ "return": [@{ "version": 2, "emulated": true, "kernel": false @},
+ @{ "version": 3, "emulated": false, "kernel": true @} ] @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} CpuInstanceProperties
+
+List of properties to be used for hotplugging a CPU instance,
+it should be passed by management with device_add command when
+a CPU is being hotplugged.
+
+@b{Members:}
+@table @asis
+@item @code{node-id: int} (optional)
+NUMA node ID the CPU belongs to
+@item @code{socket-id: int} (optional)
+socket number within node/board the CPU belongs to
+@item @code{core-id: int} (optional)
+core number within socket the CPU belongs to
+@item @code{thread-id: int} (optional)
+thread number within core the CPU belongs to
+@end table
+
+@b{Note:}
+currently there are 4 properties that could be present
+but management should be prepared to pass through other
+properties with device_add command to allow for future
+interface extension. This also requires the filed names to be kept in
+sync with the properties passed to -device/device_add.
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftp {Object} HotpluggableCPU
+
+
+
+@b{Members:}
+@table @asis
+@item @code{type: string}
+CPU object type for usage with device_add command
+@item @code{props: CpuInstanceProperties}
+list of properties to be used for hotplugging CPU
+@item @code{vcpus-count: int}
+number of logical VCPU threads @code{HotpluggableCPU} provides
+@item @code{qom-path: string} (optional)
+link to existing CPU object if CPU is present or
+omitted if CPU is not present.
+@end table
+
+@b{Since:}
+2.7
+
+@end deftp
+
+
+
+@deftypefn Command {} query-hotpluggable-cpus
+
+
+
+@b{Returns:}
+a list of HotpluggableCPU objects.
+
+@b{Since:}
+2.7
+
+@b{Example:}
+@example
+For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8:
+
+-> @{ "execute": "query-hotpluggable-cpus" @}
+<- @{"return": [
+ @{ "props": @{ "core": 8 @}, "type": "POWER8-spapr-cpu-core",
+ "vcpus-count": 1 @},
+ @{ "props": @{ "core": 0 @}, "type": "POWER8-spapr-cpu-core",
+ "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"@}
+ ]@}'
+
+For pc machine type started with -smp 1,maxcpus=2:
+
+-> @{ "execute": "query-hotpluggable-cpus" @}
+<- @{"return": [
+ @{
+ "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
+ "props": @{"core-id": 0, "socket-id": 1, "thread-id": 0@}
+ @},
+ @{
+ "qom-path": "/machine/unattached/device[0]",
+ "type": "qemu64-x86_64-cpu", "vcpus-count": 1,
+ "props": @{"core-id": 0, "socket-id": 0, "thread-id": 0@}
+ @}
+ ]@}
+
+For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu
+(Since: 2.11):
+
+-> @{ "execute": "query-hotpluggable-cpus" @}
+<- @{"return": [
+ @{
+ "type": "qemu-s390x-cpu", "vcpus-count": 1,
+ "props": @{ "core-id": 1 @}
+ @},
+ @{
+ "qom-path": "/machine/unattached/device[0]",
+ "type": "qemu-s390x-cpu", "vcpus-count": 1,
+ "props": @{ "core-id": 0 @}
+ @}
+ ]@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} GuidInfo
+
+GUID information.
+
+@b{Members:}
+@table @asis
+@item @code{guid: string}
+the globally unique identifier
+@end table
+
+@b{Since:}
+2.9
+
+@end deftp
+
+
+
+@deftypefn Command {} query-vm-generation-id
+
+Show Virtual Machine Generation ID
+
+@b{Since:}
+2.9
+
+@end deftypefn
+
+
+
+@deftp {Enum} SevState
+
+An enumeration of SEV state information used during @code{query-sev}.
+
+@b{Values:}
+@table @asis
+@item @code{uninit}
+The guest is uninitialized.
+@item @code{launch-update}
+The guest is currently being launched; plaintext data and
+register state is being imported.
+@item @code{launch-secret}
+The guest is currently being launched; ciphertext data
+is being imported.
+@item @code{running}
+The guest is fully launched or migrated in.
+@item @code{send-update}
+The guest is currently being migrated out to another machine.
+@item @code{receive-update}
+The guest is currently being migrated from another machine.
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftp {Object} SevInfo
+
+Information about Secure Encrypted Virtualization (SEV) support
+
+@b{Members:}
+@table @asis
+@item @code{enabled: boolean}
+true if SEV is active
+@item @code{api-major: int}
+SEV API major version
+@item @code{api-minor: int}
+SEV API minor version
+@item @code{build-id: int}
+SEV FW build id
+@item @code{policy: int}
+SEV policy value
+@item @code{state: SevState}
+SEV guest state
+@item @code{handle: int}
+SEV firmware handle
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} query-sev
+
+Returns information about SEV
+
+@b{Returns:}
+@code{SevInfo}
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "query-sev" @}
+<- @{ "return": @{ "enabled": true, "api-major" : 0, "api-minor" : 0,
+ "build-id" : 0, "policy" : 0, "state" : "running",
+ "handle" : 1 @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} SevLaunchMeasureInfo
+
+SEV Guest Launch measurement information
+
+@b{Members:}
+@table @asis
+@item @code{data: string}
+the measurement value encoded in base64
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} query-sev-launch-measure
+
+Query the SEV guest launch information.
+
+@b{Returns:}
+The @code{SevLaunchMeasureInfo} for the guest
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "query-sev-launch-measure" @}
+<- @{ "return": @{ "data": "4l8LXeNlSPUDlXPJG5966/8%YZ" @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Object} SevCapability
+
+The struct describes capability for a Secure Encrypted Virtualization
+feature.
+
+@b{Members:}
+@table @asis
+@item @code{pdh: string}
+Platform Diffie-Hellman key (base64 encoded)
+@item @code{cert-chain: string}
+PDH certificate chain (base64 encoded)
+@item @code{cbitpos: int}
+C-bit location in page table entry
+@item @code{reduced-phys-bits: int}
+Number of physical Address bit reduction when SEV is
+enabled
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Command {} query-sev-capabilities
+
+This command is used to get the SEV capabilities, and is supported on AMD
+X86 platforms only.
+
+@b{Returns:}
+SevCapability objects.
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+-> @{ "execute": "query-sev-capabilities" @}
+<- @{ "return": @{ "pdh": "8CCDD8DDD", "cert-chain": "888CCCDDDEE",
+ "cbitpos": 47, "reduced-phys-bits": 5@}@}
+@end example
+
+@end deftypefn
+
+
+
+@deftp {Enum} CommandDropReason
+
+Reasons that caused one command to be dropped.
+
+@b{Values:}
+@table @asis
+@item @code{queue-full}
+the command queue is full. This can only occur when
+the client sends a new non-oob command before the
+response to the previous non-oob command has been
+received.
+@end table
+
+@b{Since:}
+2.12
+
+@end deftp
+
+
+
+@deftypefn Event {} COMMAND_DROPPED
+
+Emitted when a command is dropped due to some reason. Commands can
+only be dropped when the oob capability is enabled.
+
+@b{Arguments:}
+@table @asis
+@item @code{id: value}
+The dropped command's "id" field.
+@item @code{reason: CommandDropReason}
+The reason why the command is dropped.
+@end table
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+@{ "event": "COMMAND_DROPPED",
+ "data": @{"result": @{"id": "libvirt-102",
+ "reason": "queue-full" @} @} @}
+@end example
+
+@end deftypefn
+
+
+
+@deftypefn Command {} x-oob-test
+
+Test OOB functionality. When sending this command with lock=true,
+it'll try to hang the dispatcher. When sending it with lock=false,
+it'll try to notify the locked thread to continue. Note: it should
+only be used by QMP test program rather than anything else.
+
+@b{Arguments:}
+@table @asis
+@item @code{lock: boolean}
+Not documented
+@end table
+
+@b{Since:}
+2.12
+
+@b{Example:}
+@example
+@{ "execute": "x-oob-test",
+ "arguments": @{ "lock": true @} @}
+@end example
+
+@end deftypefn
+
diff --git a/qemu2-auto-generated/qapi/qapi-events-block-core.c b/qemu2-auto-generated/qapi/qapi-events-block-core.c
new file mode 100644
index 0000000000..aec824fdc1
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-block-core.c
@@ -0,0 +1,367 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-block-core.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_block_image_corrupted(const char *device, bool has_node_name, const char *node_name, const char *msg, bool has_offset, int64_t offset, bool has_size, int64_t size, bool fatal, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_IMAGE_CORRUPTED_arg param = {
+ (char *)device, has_node_name, (char *)node_name, (char *)msg, has_offset, offset, has_size, size, fatal
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_IMAGE_CORRUPTED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_IMAGE_CORRUPTED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_IMAGE_CORRUPTED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_IMAGE_CORRUPTED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_io_error(const char *device, bool has_node_name, const char *node_name, IoOperationType operation, BlockErrorAction action, bool has_nospace, bool nospace, const char *reason, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_IO_ERROR_arg param = {
+ (char *)device, has_node_name, (char *)node_name, operation, action, has_nospace, nospace, (char *)reason
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_IO_ERROR");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_IO_ERROR", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_IO_ERROR_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_IO_ERROR, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_job_completed(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, bool has_error, const char *error, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_JOB_COMPLETED_arg param = {
+ type, (char *)device, len, offset, speed, has_error, (char *)error
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_JOB_COMPLETED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_JOB_COMPLETED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_JOB_COMPLETED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_JOB_COMPLETED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_job_cancelled(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_JOB_CANCELLED_arg param = {
+ type, (char *)device, len, offset, speed
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_JOB_CANCELLED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_JOB_CANCELLED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_JOB_CANCELLED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_JOB_CANCELLED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_job_error(const char *device, IoOperationType operation, BlockErrorAction action, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_JOB_ERROR_arg param = {
+ (char *)device, operation, action
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_JOB_ERROR");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_JOB_ERROR", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_JOB_ERROR, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_job_ready(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_JOB_READY_arg param = {
+ type, (char *)device, len, offset, speed
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_JOB_READY");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_JOB_READY", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_JOB_READY_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_JOB_READY, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_job_pending(BlockJobType type, const char *id, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_JOB_PENDING_arg param = {
+ type, (char *)id
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_JOB_PENDING");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_JOB_PENDING", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_JOB_PENDING_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_JOB_PENDING, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_block_write_threshold(const char *node_name, uint64_t amount_exceeded, uint64_t write_threshold, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BLOCK_WRITE_THRESHOLD_arg param = {
+ (char *)node_name, amount_exceeded, write_threshold
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BLOCK_WRITE_THRESHOLD");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BLOCK_WRITE_THRESHOLD", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BLOCK_WRITE_THRESHOLD_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BLOCK_WRITE_THRESHOLD, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_block_core_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-block-core.h b/qemu2-auto-generated/qapi/qapi-events-block-core.h
new file mode 100644
index 0000000000..69f7114d2f
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-block-core.h
@@ -0,0 +1,39 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_BLOCK_CORE_H
+#define QAPI_EVENTS_BLOCK_CORE_H
+
+#include "qapi-events-common.h"
+#include "qapi-events-crypto.h"
+#include "qapi-events-sockets.h"
+#include "qapi/util.h"
+#include "qapi-types-block-core.h"
+
+
+void qapi_event_send_block_image_corrupted(const char *device, bool has_node_name, const char *node_name, const char *msg, bool has_offset, int64_t offset, bool has_size, int64_t size, bool fatal, Error **errp);
+
+void qapi_event_send_block_io_error(const char *device, bool has_node_name, const char *node_name, IoOperationType operation, BlockErrorAction action, bool has_nospace, bool nospace, const char *reason, Error **errp);
+
+void qapi_event_send_block_job_completed(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, bool has_error, const char *error, Error **errp);
+
+void qapi_event_send_block_job_cancelled(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, Error **errp);
+
+void qapi_event_send_block_job_error(const char *device, IoOperationType operation, BlockErrorAction action, Error **errp);
+
+void qapi_event_send_block_job_ready(BlockJobType type, const char *device, int64_t len, int64_t offset, int64_t speed, Error **errp);
+
+void qapi_event_send_block_job_pending(BlockJobType type, const char *id, Error **errp);
+
+void qapi_event_send_block_write_threshold(const char *node_name, uint64_t amount_exceeded, uint64_t write_threshold, Error **errp);
+
+#endif /* QAPI_EVENTS_BLOCK_CORE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-block.c b/qemu2-auto-generated/qapi/qapi-events-block.c
new file mode 100644
index 0000000000..fa4e051620
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-block.c
@@ -0,0 +1,152 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-block.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_device_tray_moved(const char *device, const char *id, bool tray_open, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_DEVICE_TRAY_MOVED_arg param = {
+ (char *)device, (char *)id, tray_open
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("DEVICE_TRAY_MOVED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "DEVICE_TRAY_MOVED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_DEVICE_TRAY_MOVED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_DEVICE_TRAY_MOVED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_quorum_failure(const char *reference, int64_t sector_num, int64_t sectors_count, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_QUORUM_FAILURE_arg param = {
+ (char *)reference, sector_num, sectors_count
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("QUORUM_FAILURE");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "QUORUM_FAILURE", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_QUORUM_FAILURE_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_QUORUM_FAILURE, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_quorum_report_bad(QuorumOpType type, bool has_error, const char *error, const char *node_name, int64_t sector_num, int64_t sectors_count, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_QUORUM_REPORT_BAD_arg param = {
+ type, has_error, (char *)error, (char *)node_name, sector_num, sectors_count
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("QUORUM_REPORT_BAD");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "QUORUM_REPORT_BAD", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_QUORUM_REPORT_BAD_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_QUORUM_REPORT_BAD, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_block_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-block.h b/qemu2-auto-generated/qapi/qapi-events-block.h
new file mode 100644
index 0000000000..e4a30f49d6
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-block.h
@@ -0,0 +1,27 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_BLOCK_H
+#define QAPI_EVENTS_BLOCK_H
+
+#include "qapi-events-block-core.h"
+#include "qapi/util.h"
+#include "qapi-types-block.h"
+
+
+void qapi_event_send_device_tray_moved(const char *device, const char *id, bool tray_open, Error **errp);
+
+void qapi_event_send_quorum_failure(const char *reference, int64_t sector_num, int64_t sectors_count, Error **errp);
+
+void qapi_event_send_quorum_report_bad(QuorumOpType type, bool has_error, const char *error, const char *node_name, int64_t sector_num, int64_t sectors_count, Error **errp);
+
+#endif /* QAPI_EVENTS_BLOCK_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-char.c b/qemu2-auto-generated/qapi/qapi-events-char.c
new file mode 100644
index 0000000000..12f8055e47
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-char.c
@@ -0,0 +1,66 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-char.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_vserport_change(const char *id, bool open, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_VSERPORT_CHANGE_arg param = {
+ (char *)id, open
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("VSERPORT_CHANGE");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "VSERPORT_CHANGE", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_VSERPORT_CHANGE_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_VSERPORT_CHANGE, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_char_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-char.h b/qemu2-auto-generated/qapi/qapi-events-char.h
new file mode 100644
index 0000000000..d5f24f2336
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-char.h
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_CHAR_H
+#define QAPI_EVENTS_CHAR_H
+
+#include "qapi-events-sockets.h"
+#include "qapi/util.h"
+#include "qapi-types-char.h"
+
+
+void qapi_event_send_vserport_change(const char *id, bool open, Error **errp);
+
+#endif /* QAPI_EVENTS_CHAR_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-common.c b/qemu2-auto-generated/qapi/qapi-events-common.c
new file mode 100644
index 0000000000..d8ca8c2b14
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-common.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_common_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-common.h b/qemu2-auto-generated/qapi/qapi-events-common.h
new file mode 100644
index 0000000000..5d44b1016f
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-common.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_COMMON_H
+#define QAPI_EVENTS_COMMON_H
+
+#include "qapi/util.h"
+#include "qapi-types-common.h"
+
+
+#endif /* QAPI_EVENTS_COMMON_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-crypto.c b/qemu2-auto-generated/qapi/qapi-events-crypto.c
new file mode 100644
index 0000000000..2dffaf4b8c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-crypto.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-crypto.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_crypto_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-crypto.h b/qemu2-auto-generated/qapi/qapi-events-crypto.h
new file mode 100644
index 0000000000..902e511f3b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-crypto.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_CRYPTO_H
+#define QAPI_EVENTS_CRYPTO_H
+
+#include "qapi/util.h"
+#include "qapi-types-crypto.h"
+
+
+#endif /* QAPI_EVENTS_CRYPTO_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-introspect.c b/qemu2-auto-generated/qapi/qapi-events-introspect.c
new file mode 100644
index 0000000000..1ff2473617
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-introspect.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-introspect.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_introspect_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-introspect.h b/qemu2-auto-generated/qapi/qapi-events-introspect.h
new file mode 100644
index 0000000000..a6f961d346
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-introspect.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_INTROSPECT_H
+#define QAPI_EVENTS_INTROSPECT_H
+
+#include "qapi/util.h"
+#include "qapi-types-introspect.h"
+
+
+#endif /* QAPI_EVENTS_INTROSPECT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-migration.c b/qemu2-auto-generated/qapi/qapi-events-migration.c
new file mode 100644
index 0000000000..2f2c015ca8
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-migration.c
@@ -0,0 +1,109 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-migration.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_migration(MigrationStatus status, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_MIGRATION_arg param = {
+ status
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("MIGRATION");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "MIGRATION", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_MIGRATION_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_MIGRATION, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_migration_pass(int64_t pass, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_MIGRATION_PASS_arg param = {
+ pass
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("MIGRATION_PASS");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "MIGRATION_PASS", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_MIGRATION_PASS_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_MIGRATION_PASS, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_migration_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-migration.h b/qemu2-auto-generated/qapi/qapi-events-migration.h
new file mode 100644
index 0000000000..d14ec2516d
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-migration.h
@@ -0,0 +1,25 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_MIGRATION_H
+#define QAPI_EVENTS_MIGRATION_H
+
+#include "qapi-events-common.h"
+#include "qapi/util.h"
+#include "qapi-types-migration.h"
+
+
+void qapi_event_send_migration(MigrationStatus status, Error **errp);
+
+void qapi_event_send_migration_pass(int64_t pass, Error **errp);
+
+#endif /* QAPI_EVENTS_MIGRATION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-misc.c b/qemu2-auto-generated/qapi/qapi-events-misc.c
new file mode 100644
index 0000000000..55bbdb0d1b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-misc.c
@@ -0,0 +1,369 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-misc.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_balloon_change(int64_t actual, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_BALLOON_CHANGE_arg param = {
+ actual
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("BALLOON_CHANGE");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "BALLOON_CHANGE", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_BALLOON_CHANGE_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_BALLOON_CHANGE, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_device_deleted(bool has_device, const char *device, const char *path, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_DEVICE_DELETED_arg param = {
+ has_device, (char *)device, (char *)path
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("DEVICE_DELETED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "DEVICE_DELETED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_DEVICE_DELETED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_DEVICE_DELETED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_dump_completed(DumpQueryResult *result, bool has_error, const char *error, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_DUMP_COMPLETED_arg param = {
+ result, has_error, (char *)error
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("DUMP_COMPLETED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "DUMP_COMPLETED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_DUMP_COMPLETED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_DUMP_COMPLETED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_mem_unplug_error(const char *device, const char *msg, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_MEM_UNPLUG_ERROR_arg param = {
+ (char *)device, (char *)msg
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("MEM_UNPLUG_ERROR");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "MEM_UNPLUG_ERROR", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_MEM_UNPLUG_ERROR_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_MEM_UNPLUG_ERROR, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_acpi_device_ost(ACPIOSTInfo *info, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_ACPI_DEVICE_OST_arg param = {
+ info
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("ACPI_DEVICE_OST");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "ACPI_DEVICE_OST", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_ACPI_DEVICE_OST_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_ACPI_DEVICE_OST, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_rtc_change(int64_t offset, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_RTC_CHANGE_arg param = {
+ offset
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("RTC_CHANGE");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "RTC_CHANGE", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_RTC_CHANGE_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_RTC_CHANGE, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_command_dropped(QObject *id, CommandDropReason reason, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_COMMAND_DROPPED_arg param = {
+ id, reason
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("COMMAND_DROPPED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "COMMAND_DROPPED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_COMMAND_DROPPED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_COMMAND_DROPPED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+const QEnumLookup QAPIEvent_lookup = {
+ .array = (const char *const[]) {
+ [QAPI_EVENT_SHUTDOWN] = "SHUTDOWN",
+ [QAPI_EVENT_POWERDOWN] = "POWERDOWN",
+ [QAPI_EVENT_RESET] = "RESET",
+ [QAPI_EVENT_STOP] = "STOP",
+ [QAPI_EVENT_RESUME] = "RESUME",
+ [QAPI_EVENT_SUSPEND] = "SUSPEND",
+ [QAPI_EVENT_SUSPEND_DISK] = "SUSPEND_DISK",
+ [QAPI_EVENT_WAKEUP] = "WAKEUP",
+ [QAPI_EVENT_WATCHDOG] = "WATCHDOG",
+ [QAPI_EVENT_GUEST_PANICKED] = "GUEST_PANICKED",
+ [QAPI_EVENT_BLOCK_IMAGE_CORRUPTED] = "BLOCK_IMAGE_CORRUPTED",
+ [QAPI_EVENT_BLOCK_IO_ERROR] = "BLOCK_IO_ERROR",
+ [QAPI_EVENT_BLOCK_JOB_COMPLETED] = "BLOCK_JOB_COMPLETED",
+ [QAPI_EVENT_BLOCK_JOB_CANCELLED] = "BLOCK_JOB_CANCELLED",
+ [QAPI_EVENT_BLOCK_JOB_ERROR] = "BLOCK_JOB_ERROR",
+ [QAPI_EVENT_BLOCK_JOB_READY] = "BLOCK_JOB_READY",
+ [QAPI_EVENT_BLOCK_JOB_PENDING] = "BLOCK_JOB_PENDING",
+ [QAPI_EVENT_BLOCK_WRITE_THRESHOLD] = "BLOCK_WRITE_THRESHOLD",
+ [QAPI_EVENT_DEVICE_TRAY_MOVED] = "DEVICE_TRAY_MOVED",
+ [QAPI_EVENT_QUORUM_FAILURE] = "QUORUM_FAILURE",
+ [QAPI_EVENT_QUORUM_REPORT_BAD] = "QUORUM_REPORT_BAD",
+ [QAPI_EVENT_VSERPORT_CHANGE] = "VSERPORT_CHANGE",
+ [QAPI_EVENT_NIC_RX_FILTER_CHANGED] = "NIC_RX_FILTER_CHANGED",
+ [QAPI_EVENT_SPICE_CONNECTED] = "SPICE_CONNECTED",
+ [QAPI_EVENT_SPICE_INITIALIZED] = "SPICE_INITIALIZED",
+ [QAPI_EVENT_SPICE_DISCONNECTED] = "SPICE_DISCONNECTED",
+ [QAPI_EVENT_SPICE_MIGRATE_COMPLETED] = "SPICE_MIGRATE_COMPLETED",
+ [QAPI_EVENT_VNC_CONNECTED] = "VNC_CONNECTED",
+ [QAPI_EVENT_VNC_INITIALIZED] = "VNC_INITIALIZED",
+ [QAPI_EVENT_VNC_DISCONNECTED] = "VNC_DISCONNECTED",
+ [QAPI_EVENT_MIGRATION] = "MIGRATION",
+ [QAPI_EVENT_MIGRATION_PASS] = "MIGRATION_PASS",
+ [QAPI_EVENT_BALLOON_CHANGE] = "BALLOON_CHANGE",
+ [QAPI_EVENT_DEVICE_DELETED] = "DEVICE_DELETED",
+ [QAPI_EVENT_DUMP_COMPLETED] = "DUMP_COMPLETED",
+ [QAPI_EVENT_MEM_UNPLUG_ERROR] = "MEM_UNPLUG_ERROR",
+ [QAPI_EVENT_ACPI_DEVICE_OST] = "ACPI_DEVICE_OST",
+ [QAPI_EVENT_RTC_CHANGE] = "RTC_CHANGE",
+ [QAPI_EVENT_COMMAND_DROPPED] = "COMMAND_DROPPED",
+ },
+ .size = QAPI_EVENT__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_misc_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-misc.h b/qemu2-auto-generated/qapi/qapi-events-misc.h
new file mode 100644
index 0000000000..a4676a2396
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-misc.h
@@ -0,0 +1,82 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_MISC_H
+#define QAPI_EVENTS_MISC_H
+
+#include "qapi/util.h"
+#include "qapi-types-misc.h"
+
+
+void qapi_event_send_balloon_change(int64_t actual, Error **errp);
+
+void qapi_event_send_device_deleted(bool has_device, const char *device, const char *path, Error **errp);
+
+void qapi_event_send_dump_completed(DumpQueryResult *result, bool has_error, const char *error, Error **errp);
+
+void qapi_event_send_mem_unplug_error(const char *device, const char *msg, Error **errp);
+
+void qapi_event_send_acpi_device_ost(ACPIOSTInfo *info, Error **errp);
+
+void qapi_event_send_rtc_change(int64_t offset, Error **errp);
+
+void qapi_event_send_command_dropped(QObject *id, CommandDropReason reason, Error **errp);
+
+typedef enum QAPIEvent {
+ QAPI_EVENT_SHUTDOWN = 0,
+ QAPI_EVENT_POWERDOWN = 1,
+ QAPI_EVENT_RESET = 2,
+ QAPI_EVENT_STOP = 3,
+ QAPI_EVENT_RESUME = 4,
+ QAPI_EVENT_SUSPEND = 5,
+ QAPI_EVENT_SUSPEND_DISK = 6,
+ QAPI_EVENT_WAKEUP = 7,
+ QAPI_EVENT_WATCHDOG = 8,
+ QAPI_EVENT_GUEST_PANICKED = 9,
+ QAPI_EVENT_BLOCK_IMAGE_CORRUPTED = 10,
+ QAPI_EVENT_BLOCK_IO_ERROR = 11,
+ QAPI_EVENT_BLOCK_JOB_COMPLETED = 12,
+ QAPI_EVENT_BLOCK_JOB_CANCELLED = 13,
+ QAPI_EVENT_BLOCK_JOB_ERROR = 14,
+ QAPI_EVENT_BLOCK_JOB_READY = 15,
+ QAPI_EVENT_BLOCK_JOB_PENDING = 16,
+ QAPI_EVENT_BLOCK_WRITE_THRESHOLD = 17,
+ QAPI_EVENT_DEVICE_TRAY_MOVED = 18,
+ QAPI_EVENT_QUORUM_FAILURE = 19,
+ QAPI_EVENT_QUORUM_REPORT_BAD = 20,
+ QAPI_EVENT_VSERPORT_CHANGE = 21,
+ QAPI_EVENT_NIC_RX_FILTER_CHANGED = 22,
+ QAPI_EVENT_SPICE_CONNECTED = 23,
+ QAPI_EVENT_SPICE_INITIALIZED = 24,
+ QAPI_EVENT_SPICE_DISCONNECTED = 25,
+ QAPI_EVENT_SPICE_MIGRATE_COMPLETED = 26,
+ QAPI_EVENT_VNC_CONNECTED = 27,
+ QAPI_EVENT_VNC_INITIALIZED = 28,
+ QAPI_EVENT_VNC_DISCONNECTED = 29,
+ QAPI_EVENT_MIGRATION = 30,
+ QAPI_EVENT_MIGRATION_PASS = 31,
+ QAPI_EVENT_BALLOON_CHANGE = 32,
+ QAPI_EVENT_DEVICE_DELETED = 33,
+ QAPI_EVENT_DUMP_COMPLETED = 34,
+ QAPI_EVENT_MEM_UNPLUG_ERROR = 35,
+ QAPI_EVENT_ACPI_DEVICE_OST = 36,
+ QAPI_EVENT_RTC_CHANGE = 37,
+ QAPI_EVENT_COMMAND_DROPPED = 38,
+ QAPI_EVENT__MAX = 39,
+} QAPIEvent;
+
+#define QAPIEvent_str(val) \
+ qapi_enum_lookup(&QAPIEvent_lookup, (val))
+
+extern const QEnumLookup QAPIEvent_lookup;
+
+#endif /* QAPI_EVENTS_MISC_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-net.c b/qemu2-auto-generated/qapi/qapi-events-net.c
new file mode 100644
index 0000000000..cea8c80f45
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-net.c
@@ -0,0 +1,66 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-net.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_nic_rx_filter_changed(bool has_name, const char *name, const char *path, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_NIC_RX_FILTER_CHANGED_arg param = {
+ has_name, (char *)name, (char *)path
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("NIC_RX_FILTER_CHANGED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "NIC_RX_FILTER_CHANGED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_NIC_RX_FILTER_CHANGED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_NIC_RX_FILTER_CHANGED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_net_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-net.h b/qemu2-auto-generated/qapi/qapi-events-net.h
new file mode 100644
index 0000000000..499d3b4157
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-net.h
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_NET_H
+#define QAPI_EVENTS_NET_H
+
+#include "qapi-events-common.h"
+#include "qapi/util.h"
+#include "qapi-types-net.h"
+
+
+void qapi_event_send_nic_rx_filter_changed(bool has_name, const char *name, const char *path, Error **errp);
+
+#endif /* QAPI_EVENTS_NET_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-rocker.c b/qemu2-auto-generated/qapi/qapi-events-rocker.c
new file mode 100644
index 0000000000..0e5dd3c48d
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-rocker.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-rocker.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_rocker_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-rocker.h b/qemu2-auto-generated/qapi/qapi-events-rocker.h
new file mode 100644
index 0000000000..9394771dbb
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-rocker.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_ROCKER_H
+#define QAPI_EVENTS_ROCKER_H
+
+#include "qapi/util.h"
+#include "qapi-types-rocker.h"
+
+
+#endif /* QAPI_EVENTS_ROCKER_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-run-state.c b/qemu2-auto-generated/qapi/qapi-events-run-state.c
new file mode 100644
index 0000000000..81d9ae0411
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-run-state.c
@@ -0,0 +1,309 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-run-state.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_shutdown(bool guest, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_SHUTDOWN_arg param = {
+ guest
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SHUTDOWN");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "SHUTDOWN", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_SHUTDOWN_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_SHUTDOWN, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_powerdown(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("POWERDOWN");
+
+ emit(QAPI_EVENT_POWERDOWN, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_reset(bool guest, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_RESET_arg param = {
+ guest
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("RESET");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "RESET", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_RESET_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_RESET, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_stop(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("STOP");
+
+ emit(QAPI_EVENT_STOP, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_resume(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("RESUME");
+
+ emit(QAPI_EVENT_RESUME, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_suspend(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SUSPEND");
+
+ emit(QAPI_EVENT_SUSPEND, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_suspend_disk(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SUSPEND_DISK");
+
+ emit(QAPI_EVENT_SUSPEND_DISK, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_wakeup(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("WAKEUP");
+
+ emit(QAPI_EVENT_WAKEUP, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_watchdog(WatchdogAction action, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_WATCHDOG_arg param = {
+ action
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("WATCHDOG");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "WATCHDOG", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_WATCHDOG_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_WATCHDOG, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_guest_panicked(GuestPanicAction action, bool has_info, GuestPanicInformation *info, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_GUEST_PANICKED_arg param = {
+ action, has_info, info
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("GUEST_PANICKED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "GUEST_PANICKED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_GUEST_PANICKED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_GUEST_PANICKED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_run_state_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-run-state.h b/qemu2-auto-generated/qapi/qapi-events-run-state.h
new file mode 100644
index 0000000000..6fa219c955
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-run-state.h
@@ -0,0 +1,40 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_RUN_STATE_H
+#define QAPI_EVENTS_RUN_STATE_H
+
+#include "qapi/util.h"
+#include "qapi-types-run-state.h"
+
+
+void qapi_event_send_shutdown(bool guest, Error **errp);
+
+void qapi_event_send_powerdown(Error **errp);
+
+void qapi_event_send_reset(bool guest, Error **errp);
+
+void qapi_event_send_stop(Error **errp);
+
+void qapi_event_send_resume(Error **errp);
+
+void qapi_event_send_suspend(Error **errp);
+
+void qapi_event_send_suspend_disk(Error **errp);
+
+void qapi_event_send_wakeup(Error **errp);
+
+void qapi_event_send_watchdog(WatchdogAction action, Error **errp);
+
+void qapi_event_send_guest_panicked(GuestPanicAction action, bool has_info, GuestPanicInformation *info, Error **errp);
+
+#endif /* QAPI_EVENTS_RUN_STATE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-sockets.c b/qemu2-auto-generated/qapi/qapi-events-sockets.c
new file mode 100644
index 0000000000..c2e9a7c327
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-sockets.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-sockets.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_sockets_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-sockets.h b/qemu2-auto-generated/qapi/qapi-events-sockets.h
new file mode 100644
index 0000000000..6d7ba3e06b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-sockets.h
@@ -0,0 +1,21 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_SOCKETS_H
+#define QAPI_EVENTS_SOCKETS_H
+
+#include "qapi-events-common.h"
+#include "qapi/util.h"
+#include "qapi-types-sockets.h"
+
+
+#endif /* QAPI_EVENTS_SOCKETS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-tpm.c b/qemu2-auto-generated/qapi/qapi-events-tpm.c
new file mode 100644
index 0000000000..cd9f315200
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-tpm.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-tpm.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_tpm_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-tpm.h b/qemu2-auto-generated/qapi/qapi-events-tpm.h
new file mode 100644
index 0000000000..d7f9d747a3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-tpm.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_TPM_H
+#define QAPI_EVENTS_TPM_H
+
+#include "qapi/util.h"
+#include "qapi-types-tpm.h"
+
+
+#endif /* QAPI_EVENTS_TPM_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-trace.c b/qemu2-auto-generated/qapi/qapi-events-trace.c
new file mode 100644
index 0000000000..e1ccbb9761
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-trace.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-trace.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_trace_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-trace.h b/qemu2-auto-generated/qapi/qapi-events-trace.h
new file mode 100644
index 0000000000..43db0f8df3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-trace.h
@@ -0,0 +1,20 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_TRACE_H
+#define QAPI_EVENTS_TRACE_H
+
+#include "qapi/util.h"
+#include "qapi-types-trace.h"
+
+
+#endif /* QAPI_EVENTS_TRACE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-transaction.c b/qemu2-auto-generated/qapi/qapi-events-transaction.c
new file mode 100644
index 0000000000..59cc10bd93
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-transaction.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-transaction.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_transaction_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-transaction.h b/qemu2-auto-generated/qapi/qapi-events-transaction.h
new file mode 100644
index 0000000000..60ca912bc7
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-transaction.h
@@ -0,0 +1,21 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_TRANSACTION_H
+#define QAPI_EVENTS_TRANSACTION_H
+
+#include "qapi-events-block.h"
+#include "qapi/util.h"
+#include "qapi-types-transaction.h"
+
+
+#endif /* QAPI_EVENTS_TRANSACTION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events-ui.c b/qemu2-auto-generated/qapi/qapi-events-ui.c
new file mode 100644
index 0000000000..0269914e10
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-ui.c
@@ -0,0 +1,300 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit-ui.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_spice_connected(SpiceBasicInfo *server, SpiceBasicInfo *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_SPICE_CONNECTED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SPICE_CONNECTED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "SPICE_CONNECTED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_SPICE_CONNECTED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_SPICE_CONNECTED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_spice_initialized(SpiceServerInfo *server, SpiceChannel *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_SPICE_INITIALIZED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SPICE_INITIALIZED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "SPICE_INITIALIZED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_SPICE_INITIALIZED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_SPICE_INITIALIZED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_spice_disconnected(SpiceBasicInfo *server, SpiceBasicInfo *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_SPICE_DISCONNECTED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SPICE_DISCONNECTED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "SPICE_DISCONNECTED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_SPICE_DISCONNECTED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_SPICE_DISCONNECTED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_spice_migrate_completed(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("SPICE_MIGRATE_COMPLETED");
+
+ emit(QAPI_EVENT_SPICE_MIGRATE_COMPLETED, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_vnc_connected(VncServerInfo *server, VncBasicInfo *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_VNC_CONNECTED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("VNC_CONNECTED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "VNC_CONNECTED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_VNC_CONNECTED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_VNC_CONNECTED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_vnc_initialized(VncServerInfo *server, VncClientInfo *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_VNC_INITIALIZED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("VNC_INITIALIZED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "VNC_INITIALIZED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_VNC_INITIALIZED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_VNC_INITIALIZED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_vnc_disconnected(VncServerInfo *server, VncClientInfo *client, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_VNC_DISCONNECTED_arg param = {
+ server, client
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("VNC_DISCONNECTED");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "VNC_DISCONNECTED", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_VNC_DISCONNECTED_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(QAPI_EVENT_VNC_DISCONNECTED, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_ui_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events-ui.h b/qemu2-auto-generated/qapi/qapi-events-ui.h
new file mode 100644
index 0000000000..d52557e951
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events-ui.h
@@ -0,0 +1,35 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_UI_H
+#define QAPI_EVENTS_UI_H
+
+#include "qapi-events-sockets.h"
+#include "qapi/util.h"
+#include "qapi-types-ui.h"
+
+
+void qapi_event_send_spice_connected(SpiceBasicInfo *server, SpiceBasicInfo *client, Error **errp);
+
+void qapi_event_send_spice_initialized(SpiceServerInfo *server, SpiceChannel *client, Error **errp);
+
+void qapi_event_send_spice_disconnected(SpiceBasicInfo *server, SpiceBasicInfo *client, Error **errp);
+
+void qapi_event_send_spice_migrate_completed(Error **errp);
+
+void qapi_event_send_vnc_connected(VncServerInfo *server, VncBasicInfo *client, Error **errp);
+
+void qapi_event_send_vnc_initialized(VncServerInfo *server, VncClientInfo *client, Error **errp);
+
+void qapi_event_send_vnc_disconnected(VncServerInfo *server, VncClientInfo *client, Error **errp);
+
+#endif /* QAPI_EVENTS_UI_H */
diff --git a/qemu2-auto-generated/qapi/qapi-events.c b/qemu2-auto-generated/qapi/qapi-events.c
new file mode 100644
index 0000000000..02a0f5182c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events.c
@@ -0,0 +1,23 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-events.h"
+#include "qapi-visit.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_events_c;
diff --git a/qemu2-auto-generated/qapi/qapi-events.h b/qemu2-auto-generated/qapi/qapi-events.h
new file mode 100644
index 0000000000..bccd890883
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-events.h
@@ -0,0 +1,35 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_EVENTS_H
+#define QAPI_EVENTS_H
+
+#include "qapi-events-common.h"
+#include "qapi-events-sockets.h"
+#include "qapi-events-run-state.h"
+#include "qapi-events-crypto.h"
+#include "qapi-events-block.h"
+#include "qapi-events-char.h"
+#include "qapi-events-net.h"
+#include "qapi-events-rocker.h"
+#include "qapi-events-tpm.h"
+#include "qapi-events-ui.h"
+#include "qapi-events-migration.h"
+#include "qapi-events-transaction.h"
+#include "qapi-events-trace.h"
+#include "qapi-events-introspect.h"
+#include "qapi-events-misc.h"
+#include "qapi/util.h"
+#include "qapi-types.h"
+
+
+#endif /* QAPI_EVENTS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-introspect.c b/qemu2-auto-generated/qapi/qapi-introspect.c
new file mode 100644
index 0000000000..507eaafe37
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-introspect.c
@@ -0,0 +1,14035 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * QAPI/QMP schema introspection
+ *
+ * Copyright (C) 2015-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi-introspect.h"
+
+const QLitObject qmp_schema_qlit = QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-status") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("2") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SHUTDOWN") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("POWERDOWN") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("3") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("RESET") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("STOP") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("RESUME") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SUSPEND") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SUSPEND_DISK") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("WAKEUP") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("4") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("WATCHDOG") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("5") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("watchdog-set-action") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("6") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("GUEST_PANICKED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("7") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-block-latency-histogram-set") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-block") },
+ { "ret-type", QLIT_QSTR("[8]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("9") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-blockstats") },
+ { "ret-type", QLIT_QSTR("[10]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-block-jobs") },
+ { "ret-type", QLIT_QSTR("[11]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("12") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block_passwd") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("13") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block_resize") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("14") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-snapshot-sync") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("15") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-snapshot") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("16") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("change-backing-file") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("17") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-commit") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("18") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("drive-backup") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("19") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-backup") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-named-block-nodes") },
+ { "ret-type", QLIT_QSTR("[20]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("21") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("drive-mirror") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("22") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-dirty-bitmap-add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("23") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-dirty-bitmap-remove") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("23") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-dirty-bitmap-clear") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("23") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-debug-block-dirty-bitmap-sha256") },
+ { "ret-type", QLIT_QSTR("24") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("25") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-mirror") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("26") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block_set_io_throttle") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("27") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-stream") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("28") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-set-speed") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("29") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-cancel") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("30") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-pause") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("31") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-resume") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("32") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-complete") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("33") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-dismiss") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("34") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-job-finalize") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("35") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("36") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-del") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("37") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-blockdev-create") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("38") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-open-tray") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("39") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-close-tray") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("40") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-remove-medium") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("41") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-insert-medium") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("42") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-change-medium") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("43") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_IMAGE_CORRUPTED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("44") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_IO_ERROR") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("45") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_JOB_COMPLETED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("46") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_JOB_CANCELLED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("47") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_JOB_ERROR") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("48") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_JOB_READY") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("49") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_JOB_PENDING") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("50") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BLOCK_WRITE_THRESHOLD") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("51") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("block-set-write-threshold") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("52") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-blockdev-change") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("53") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-blockdev-set-iothread") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("54") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-snapshot-internal-sync") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("55") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("blockdev-snapshot-delete-internal-sync") },
+ { "ret-type", QLIT_QSTR("56") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("57") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("eject") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("58") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("nbd-server-start") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("59") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("nbd-server-add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("60") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("nbd-server-remove") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("nbd-server-stop") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("61") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("DEVICE_TRAY_MOVED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("62") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("QUORUM_FAILURE") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("63") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("QUORUM_REPORT_BAD") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-chardev") },
+ { "ret-type", QLIT_QSTR("[64]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-chardev-backends") },
+ { "ret-type", QLIT_QSTR("[65]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("66") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("ringbuf-write") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("67") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("ringbuf-read") },
+ { "ret-type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("68") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("chardev-add") },
+ { "ret-type", QLIT_QSTR("69") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("70") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("chardev-change") },
+ { "ret-type", QLIT_QSTR("69") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("71") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("chardev-remove") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("72") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("chardev-send-break") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("73") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("VSERPORT_CHANGE") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("74") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("set_link") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("75") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("netdev_add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("76") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("netdev_del") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("77") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-rx-filter") },
+ { "ret-type", QLIT_QSTR("[78]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("79") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("NIC_RX_FILTER_CHANGED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("80") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-rocker") },
+ { "ret-type", QLIT_QSTR("81") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("82") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-rocker-ports") },
+ { "ret-type", QLIT_QSTR("[83]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("84") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-rocker-of-dpa-flows") },
+ { "ret-type", QLIT_QSTR("[85]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("86") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-rocker-of-dpa-groups") },
+ { "ret-type", QLIT_QSTR("[87]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-tpm-models") },
+ { "ret-type", QLIT_QSTR("[88]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-tpm-types") },
+ { "ret-type", QLIT_QSTR("[89]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-tpm") },
+ { "ret-type", QLIT_QSTR("[90]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("91") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("set_password") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("92") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("expire_password") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("93") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("screendump") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-spice") },
+ { "ret-type", QLIT_QSTR("94") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("95") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SPICE_CONNECTED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("96") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SPICE_INITIALIZED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("97") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SPICE_DISCONNECTED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("SPICE_MIGRATE_COMPLETED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-vnc") },
+ { "ret-type", QLIT_QSTR("98") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-vnc-servers") },
+ { "ret-type", QLIT_QSTR("[99]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("100") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("change-vnc-password") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("101") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("VNC_CONNECTED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("102") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("VNC_INITIALIZED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("103") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("VNC_DISCONNECTED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-mice") },
+ { "ret-type", QLIT_QSTR("[104]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("105") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("send-key") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("106") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("input-send-event") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-migrate") },
+ { "ret-type", QLIT_QSTR("107") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("108") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-set-capabilities") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-migrate-capabilities") },
+ { "ret-type", QLIT_QSTR("[109]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("110") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-set-parameters") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-migrate-parameters") },
+ { "ret-type", QLIT_QSTR("111") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("112") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("client_migrate_info") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-start-postcopy") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("113") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("MIGRATION") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("114") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("MIGRATION_PASS") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-colo-lost-heartbeat") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate_cancel") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("115") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-continue") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("116") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate_set_downtime") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("117") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate_set_speed") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("118") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-set-cache-size") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-migrate-cache-size") },
+ { "ret-type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("119") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("120") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("migrate-incoming") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("121") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("xen-save-devices-state") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("122") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("xen-set-replication") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-xen-replication-status") },
+ { "ret-type", QLIT_QSTR("123") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("xen-colo-do-checkpoint") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("124") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("transaction") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("125") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("trace-event-get-state") },
+ { "ret-type", QLIT_QSTR("[126]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("127") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("trace-event-set-state") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-qmp-schema") },
+ { "ret-type", QLIT_QSTR("[128]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("129") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qmp_capabilities") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-version") },
+ { "ret-type", QLIT_QSTR("130") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-commands") },
+ { "ret-type", QLIT_QSTR("[131]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("132") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("add_client") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-name") },
+ { "ret-type", QLIT_QSTR("133") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-kvm") },
+ { "ret-type", QLIT_QSTR("134") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-uuid") },
+ { "ret-type", QLIT_QSTR("135") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-events") },
+ { "ret-type", QLIT_QSTR("[136]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpus") },
+ { "ret-type", QLIT_QSTR("[137]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpus-fast") },
+ { "ret-type", QLIT_QSTR("[138]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-iothreads") },
+ { "ret-type", QLIT_QSTR("[139]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-balloon") },
+ { "ret-type", QLIT_QSTR("140") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("141") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("BALLOON_CHANGE") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-pci") },
+ { "ret-type", QLIT_QSTR("[142]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("quit") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("stop") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("system_reset") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("system_powerdown") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("143") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("cpu-add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("144") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("memsave") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("145") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("pmemsave") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("cont") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("system_wakeup") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("inject-nmi") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("146") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("balloon") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("147") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("human-monitor-command") },
+ { "ret-type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("148") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qom-list") },
+ { "ret-type", QLIT_QSTR("[149]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("150") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qom-get") },
+ { "ret-type", QLIT_QSTR("any") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("151") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qom-set") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("152") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("change") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("153") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qom-list-types") },
+ { "ret-type", QLIT_QSTR("[154]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("155") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("device-list-properties") },
+ { "ret-type", QLIT_QSTR("[149]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("156") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("qom-list-properties") },
+ { "ret-type", QLIT_QSTR("[149]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("157") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("xen-set-global-dirty-log") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("158") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("device_add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("159") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("device_del") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("160") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("DEVICE_DELETED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("161") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("dump-guest-memory") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-dump") },
+ { "ret-type", QLIT_QSTR("162") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("163") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("DUMP_COMPLETED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-dump-guest-memory-capability") },
+ { "ret-type", QLIT_QSTR("164") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("165") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("dump-skeys") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("166") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("object-add") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("167") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("object-del") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("168") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("getfd") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("169") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("closefd") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-machines") },
+ { "ret-type", QLIT_QSTR("[170]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-memory-size-summary") },
+ { "ret-type", QLIT_QSTR("171") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpu-definitions") },
+ { "ret-type", QLIT_QSTR("[172]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("173") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpu-model-expansion") },
+ { "ret-type", QLIT_QSTR("174") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("175") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpu-model-comparison") },
+ { "ret-type", QLIT_QSTR("176") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("177") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-cpu-model-baseline") },
+ { "ret-type", QLIT_QSTR("178") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("179") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("add-fd") },
+ { "ret-type", QLIT_QSTR("180") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("181") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("remove-fd") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-fdsets") },
+ { "ret-type", QLIT_QSTR("[182]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-target") },
+ { "ret-type", QLIT_QSTR("183") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("184") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-command-line-options") },
+ { "ret-type", QLIT_QSTR("[185]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-memdev") },
+ { "ret-type", QLIT_QSTR("[186]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-memory-devices") },
+ { "ret-type", QLIT_QSTR("[187]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("188") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("MEM_UNPLUG_ERROR") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-acpi-ospm-status") },
+ { "ret-type", QLIT_QSTR("[189]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("190") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("ACPI_DEVICE_OST") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("rtc-reset-reinjection") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("191") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("RTC_CHANGE") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("192") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("xen-load-devices-state") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-gic-capabilities") },
+ { "ret-type", QLIT_QSTR("[193]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-hotpluggable-cpus") },
+ { "ret-type", QLIT_QSTR("[194]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-vm-generation-id") },
+ { "ret-type", QLIT_QSTR("195") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-sev") },
+ { "ret-type", QLIT_QSTR("196") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-sev-launch-measure") },
+ { "ret-type", QLIT_QSTR("197") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("query-sev-capabilities") },
+ { "ret-type", QLIT_QSTR("198") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("199") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("COMMAND_DROPPED") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(true) },
+ { "arg-type", QLIT_QSTR("200") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("x-oob-test") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("running") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("singlestep") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("201") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("guest") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("2") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("guest") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("3") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("202") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("4") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("202") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("5") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("203") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("info") },
+ { "type", QLIT_QSTR("204") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("6") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("boundaries") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("boundaries-read") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("boundaries-write") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("boundaries-flush") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("7") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("8") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[8]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("qdev") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("removable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("locked") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("inserted") },
+ { "type", QLIT_QSTR("20") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tray_open") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("io-status") },
+ { "type", QLIT_QSTR("205") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("dirty-bitmaps") },
+ { "type", QLIT_QSTR("[206]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("8") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("query-nodes") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("9") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("10") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[10]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("stats") },
+ { "type", QLIT_QSTR("207") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("parent") },
+ { "type", QLIT_QSTR("10") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing") },
+ { "type", QLIT_QSTR("10") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("10") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("11") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[11]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("len") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("busy") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("paused") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("io-status") },
+ { "type", QLIT_QSTR("205") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ready") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("208") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("auto-finalize") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("auto-dismiss") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("11") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("password") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("12") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("13") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("snapshot-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("snapshot-node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("209") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("14") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("overlay") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("image-node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("16") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("base") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("top") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("filter-node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("17") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sync") },
+ { "type", QLIT_QSTR("210") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("209") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bitmap") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-source-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-target-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auto-finalize") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auto-dismiss") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("18") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sync") },
+ { "type", QLIT_QSTR("210") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-source-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-target-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auto-finalize") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auto-dismiss") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("19") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("20") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[20]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ro") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("drv") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing_file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("backing_file_depth") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("encrypted") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("encryption_key_missing") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("detect_zeroes") },
+ { "type", QLIT_QSTR("212") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps_rd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps_wr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops_rd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops_wr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("image") },
+ { "type", QLIT_QSTR("213") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_rd_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_wr_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_rd_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_wr_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_rd_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_wr_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_rd_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_wr_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cache") },
+ { "type", QLIT_QSTR("214") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("write_threshold") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("20") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("replaces") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sync") },
+ { "type", QLIT_QSTR("210") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("209") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("granularity") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("buf-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-source-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-target-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("unmap") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("21") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("granularity") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("persistent") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("autoload") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("22") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("23") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sha256") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("24") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("replaces") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sync") },
+ { "type", QLIT_QSTR("210") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("granularity") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("buf-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-source-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-target-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("filter-node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("25") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps_rd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bps_wr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops_rd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iops_wr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_rd_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_wr_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_rd_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_wr_max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_rd_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bps_wr_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_rd_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_wr_max_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iops_size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("26") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("job-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("base") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("base-node") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("on-error") },
+ { "type", QLIT_QSTR("211") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("27") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("28") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("29") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("30") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("31") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("32") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("33") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("34") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("driver") },
+ { "type", QLIT_QSTR("215") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("discard") },
+ { "type", QLIT_QSTR("216") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cache") },
+ { "type", QLIT_QSTR("217") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("read-only") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force-share") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("detect-zeroes") },
+ { "type", QLIT_QSTR("212") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("35") },
+ { "tag", QLIT_QSTR("driver") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blkdebug") },
+ { "type", QLIT_QSTR("218") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blkverify") },
+ { "type", QLIT_QSTR("219") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("bochs") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("cloop") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("dmg") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("221") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ftp") },
+ { "type", QLIT_QSTR("222") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ftps") },
+ { "type", QLIT_QSTR("223") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("gluster") },
+ { "type", QLIT_QSTR("224") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("host_cdrom") },
+ { "type", QLIT_QSTR("221") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("host_device") },
+ { "type", QLIT_QSTR("221") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("http") },
+ { "type", QLIT_QSTR("225") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("https") },
+ { "type", QLIT_QSTR("226") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("iscsi") },
+ { "type", QLIT_QSTR("227") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("228") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nbd") },
+ { "type", QLIT_QSTR("229") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nfs") },
+ { "type", QLIT_QSTR("230") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("null-aio") },
+ { "type", QLIT_QSTR("231") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("null-co") },
+ { "type", QLIT_QSTR("231") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nvme") },
+ { "type", QLIT_QSTR("232") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("parallels") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow2") },
+ { "type", QLIT_QSTR("233") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow") },
+ { "type", QLIT_QSTR("234") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qed") },
+ { "type", QLIT_QSTR("235") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("quorum") },
+ { "type", QLIT_QSTR("236") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("raw") },
+ { "type", QLIT_QSTR("237") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("rbd") },
+ { "type", QLIT_QSTR("238") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("replication") },
+ { "type", QLIT_QSTR("239") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("sheepdog") },
+ { "type", QLIT_QSTR("240") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ssh") },
+ { "type", QLIT_QSTR("241") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("throttle") },
+ { "type", QLIT_QSTR("242") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vdi") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vhdx") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vmdk") },
+ { "type", QLIT_QSTR("235") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vpc") },
+ { "type", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vvfat") },
+ { "type", QLIT_QSTR("243") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vxhs") },
+ { "type", QLIT_QSTR("244") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("36") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("driver") },
+ { "type", QLIT_QSTR("215") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("37") },
+ { "tag", QLIT_QSTR("driver") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blkdebug") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blkverify") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("bochs") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("cloop") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("dmg") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("246") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ftp") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ftps") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("gluster") },
+ { "type", QLIT_QSTR("247") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("host_cdrom") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("host_device") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("http") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("https") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("iscsi") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("248") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nbd") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nfs") },
+ { "type", QLIT_QSTR("249") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("null-aio") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("null-co") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nvme") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("parallels") },
+ { "type", QLIT_QSTR("250") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow") },
+ { "type", QLIT_QSTR("251") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow2") },
+ { "type", QLIT_QSTR("252") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qed") },
+ { "type", QLIT_QSTR("253") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("quorum") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("raw") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("rbd") },
+ { "type", QLIT_QSTR("254") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("replication") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("sheepdog") },
+ { "type", QLIT_QSTR("255") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ssh") },
+ { "type", QLIT_QSTR("256") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("throttle") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vdi") },
+ { "type", QLIT_QSTR("257") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vhdx") },
+ { "type", QLIT_QSTR("258") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vmdk") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vpc") },
+ { "type", QLIT_QSTR("259") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vvfat") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vxhs") },
+ { "type", QLIT_QSTR("245") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("38") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("39") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("40") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("41") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("read-only-mode") },
+ { "type", QLIT_QSTR("260") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("42") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("msg") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fatal") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("43") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("operation") },
+ { "type", QLIT_QSTR("261") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("262") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("nospace") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("reason") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("44") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("263") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("len") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("error") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("45") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("263") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("len") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("46") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("operation") },
+ { "type", QLIT_QSTR("261") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("262") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("47") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("263") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("len") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("48") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("263") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("49") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("amount-exceeded") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("write-threshold") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("50") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("write-threshold") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("51") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("parent") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("child") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("52") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("iothread") },
+ { "type", QLIT_QSTR("264") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("53") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("54") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("55") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vm-state-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("date-sec") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("date-nsec") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vm-clock-sec") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vm-clock-nsec") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("56") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("57") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("addr") },
+ { "type", QLIT_QSTR("265") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("58") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("writable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("59") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("266") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("60") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("tray-open") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("61") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("reference") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sector-num") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sectors-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("62") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("267") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("error") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sector-num") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("sectors-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("63") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("64") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[64]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("label") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("frontend-open") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("64") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("65") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[65]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("65") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("268") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("66") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("268") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("67") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("string") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("backend") },
+ { "type", QLIT_QSTR("269") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("68") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pty") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("69") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("backend") },
+ { "type", QLIT_QSTR("269") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("70") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("71") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("72") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("open") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("73") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("up") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("74") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("75") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("76") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("77") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("78") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[78]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("promiscuous") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("multicast") },
+ { "type", QLIT_QSTR("270") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("unicast") },
+ { "type", QLIT_QSTR("270") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vlan") },
+ { "type", QLIT_QSTR("270") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("broadcast-allowed") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("multicast-overflow") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("unicast-overflow") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("main-mac") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vlan-table") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("unicast-table") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("multicast-table") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("78") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("79") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("80") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ports") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("81") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("82") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("83") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[83]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enabled") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("link-up") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("speed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("duplex") },
+ { "type", QLIT_QSTR("271") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("autoneg") },
+ { "type", QLIT_QSTR("272") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("83") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tbl-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("84") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("85") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[85]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cookie") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hits") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("key") },
+ { "type", QLIT_QSTR("273") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("mask") },
+ { "type", QLIT_QSTR("274") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("action") },
+ { "type", QLIT_QSTR("275") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("85") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("86") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("87") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[87]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("index") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("out-pport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("set-vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pop-vlan") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group-ids") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("set-eth-src") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("set-eth-dst") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ttl-check") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("87") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("88") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[88]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("88") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("tpm-tis"),
+ QLIT_QSTR("tpm-crb"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("89") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[89]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("89") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("passthrough"),
+ QLIT_QSTR("emulator"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("90") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[90]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("model") },
+ { "type", QLIT_QSTR("88") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("options") },
+ { "type", QLIT_QSTR("276") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("90") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("protocol") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("password") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("connected") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("91") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("protocol") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("time") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("92") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("head") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("93") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enabled") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("migrated") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-port") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compiled-version") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("mouse-mode") },
+ { "type", QLIT_QSTR("277") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("channels") },
+ { "type", QLIT_QSTR("[278]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("94") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("279") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("279") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("95") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("280") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("278") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("96") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("279") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("279") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("97") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enabled") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("service") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("clients") },
+ { "type", QLIT_QSTR("[282]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("98") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("99") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[99]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("[283]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("clients") },
+ { "type", QLIT_QSTR("[282]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("284") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vencrypt") },
+ { "type", QLIT_QSTR("285") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("display") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("99") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("password") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("100") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("286") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("287") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("101") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("286") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("282") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("102") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("286") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("client") },
+ { "type", QLIT_QSTR("282") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("103") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("104") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[104]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("index") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("current") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("absolute") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("104") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("keys") },
+ { "type", QLIT_QSTR("[288]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("hold-time") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("105") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("head") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("events") },
+ { "type", QLIT_QSTR("[289]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("106") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("290") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ram") },
+ { "type", QLIT_QSTR("291") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("disk") },
+ { "type", QLIT_QSTR("291") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("xbzrle-cache") },
+ { "type", QLIT_QSTR("292") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("total-time") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("expected-downtime") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("downtime") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("setup-time") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-throttle-percentage") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("error-desc") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("107") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("capabilities") },
+ { "type", QLIT_QSTR("[109]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("108") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("109") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[109]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("capability") },
+ { "type", QLIT_QSTR("293") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("109") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress-level") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress-threads") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("decompress-threads") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-throttle-initial") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-throttle-increment") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("264") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-hostname") },
+ { "type", QLIT_QSTR("264") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("max-bandwidth") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("downtime-limit") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-checkpoint-delay") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("block-incremental") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-multifd-channels") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-multifd-page-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("xbzrle-cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("110") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress-level") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compress-threads") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("decompress-threads") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-throttle-initial") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-throttle-increment") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-hostname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("max-bandwidth") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("downtime-limit") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-checkpoint-delay") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("block-incremental") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-multifd-channels") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x-multifd-page-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("xbzrle-cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("111") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("protocol") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hostname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-port") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cert-subject") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("112") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("290") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("113") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pass") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("114") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("290") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("115") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("number") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("116") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("117") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("118") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("int") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("uri") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("blk") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("inc") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("detach") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("119") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("uri") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("120") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("live") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("121") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("primary") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("failover") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("122") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("error") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("desc") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("123") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("actions") },
+ { "type", QLIT_QSTR("[294]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("properties") },
+ { "type", QLIT_QSTR("295") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("124") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vcpu") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("125") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("126") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[126]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("296") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vcpu") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("126") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ignore-unavailable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vcpu") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("127") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("128") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[128]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("meta-type") },
+ { "type", QLIT_QSTR("297") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("128") },
+ { "tag", QLIT_QSTR("meta-type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("builtin") },
+ { "type", QLIT_QSTR("298") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("enum") },
+ { "type", QLIT_QSTR("299") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("array") },
+ { "type", QLIT_QSTR("300") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("object") },
+ { "type", QLIT_QSTR("301") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("alternate") },
+ { "type", QLIT_QSTR("302") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("command") },
+ { "type", QLIT_QSTR("303") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("event") },
+ { "type", QLIT_QSTR("304") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("enable") },
+ { "type", QLIT_QSTR("[305]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("129") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("qemu") },
+ { "type", QLIT_QSTR("306") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("package") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("130") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("131") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[131]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("131") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("protocol") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("skipauth") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("132") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("133") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enabled") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("present") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("134") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("UUID") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("135") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("136") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[136]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("136") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("137") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[137]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("CPU") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("current") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("halted") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("qom_path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("thread_id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("props") },
+ { "type", QLIT_QSTR("307") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arch") },
+ { "type", QLIT_QSTR("308") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("137") },
+ { "tag", QLIT_QSTR("arch") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("x86") },
+ { "type", QLIT_QSTR("309") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("sparc") },
+ { "type", QLIT_QSTR("310") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ppc") },
+ { "type", QLIT_QSTR("311") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("mips") },
+ { "type", QLIT_QSTR("312") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("tricore") },
+ { "type", QLIT_QSTR("313") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s390") },
+ { "type", QLIT_QSTR("314") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("riscv") },
+ { "type", QLIT_QSTR("315") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("other") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("138") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[138]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cpu-index") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("qom-path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("thread-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("props") },
+ { "type", QLIT_QSTR("307") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arch") },
+ { "type", QLIT_QSTR("308") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("138") },
+ { "tag", QLIT_QSTR("arch") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("x86") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("sparc") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ppc") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("mips") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("tricore") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s390") },
+ { "type", QLIT_QSTR("314") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("riscv") },
+ { "type", QLIT_QSTR("315") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("other") },
+ { "type", QLIT_QSTR("316") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("139") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[139]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("thread-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("poll-max-ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("poll-grow") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("poll-shrink") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("139") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("actual") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("140") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("actual") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("141") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("142") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[142]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bus") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("devices") },
+ { "type", QLIT_QSTR("[317]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("142") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("143") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("val") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-index") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("144") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("val") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("145") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("146") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("command-line") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cpu-index") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("147") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("148") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("149") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[149]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("description") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("149") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("property") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("150") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("value") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("any") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("property") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("151") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("arg") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("152") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("implements") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("abstract") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("153") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("154") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[154]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("abstract") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("parent") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("154") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("typename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("155") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("typename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("156") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("157") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("driver") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("bus") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("158") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("159") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("160") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("paging") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("protocol") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("detach") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("begin") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("318") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("161") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("319") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("completed") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("total") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("162") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("result") },
+ { "type", QLIT_QSTR("162") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("error") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("163") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("formats") },
+ { "type", QLIT_QSTR("[318]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("164") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("165") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("qom-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("props") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("166") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("167") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("168") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("169") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("170") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[170]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("alias") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("is-default") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cpu-max") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hotpluggable-cpus") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("170") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("base-memory") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("plugged-memory") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("171") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("172") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[172]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("migration-safe") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("static") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("unavailable-features") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("typename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("172") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("320") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("model") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("173") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("model") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("174") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("modela") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("modelb") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("175") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("result") },
+ { "type", QLIT_QSTR("322") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("responsible-properties") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("176") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("modela") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("modelb") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("177") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("model") },
+ { "type", QLIT_QSTR("321") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("178") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("fdset-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("opaque") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("179") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdset-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("180") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdset-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("fd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("181") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("182") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[182]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fdset-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fds") },
+ { "type", QLIT_QSTR("[323]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("182") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arch") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("183") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("option") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("184") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("185") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[185]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("option") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("parameters") },
+ { "type", QLIT_QSTR("[324]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("185") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("186") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[186]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("merge") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dump") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("prealloc") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host-nodes") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("policy") },
+ { "type", QLIT_QSTR("325") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("186") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("187") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[187]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("326") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("187") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("dimm") },
+ { "type", QLIT_QSTR("327") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("nvdimm") },
+ { "type", QLIT_QSTR("327") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("msg") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("188") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("189") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[189]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("slot") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("slot-type") },
+ { "type", QLIT_QSTR("328") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("source") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("189") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("info") },
+ { "type", QLIT_QSTR("189") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("190") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("191") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("192") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("193") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[193]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("version") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("emulated") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("kernel") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("193") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("194") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[194]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vcpus-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("props") },
+ { "type", QLIT_QSTR("307") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("qom-path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("194") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("guid") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("195") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enabled") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("api-major") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("api-minor") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("build-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("policy") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("329") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("handle") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("196") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("197") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pdh") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cert-chain") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cbitpos") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("reduced-phys-bits") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("198") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("reason") },
+ { "type", QLIT_QSTR("330") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("199") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("lock") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("200") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("boolean") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("201") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("debug"),
+ QLIT_QSTR("inmigrate"),
+ QLIT_QSTR("internal-error"),
+ QLIT_QSTR("io-error"),
+ QLIT_QSTR("paused"),
+ QLIT_QSTR("postmigrate"),
+ QLIT_QSTR("prelaunch"),
+ QLIT_QSTR("finish-migrate"),
+ QLIT_QSTR("restore-vm"),
+ QLIT_QSTR("running"),
+ QLIT_QSTR("save-vm"),
+ QLIT_QSTR("shutdown"),
+ QLIT_QSTR("suspended"),
+ QLIT_QSTR("watchdog"),
+ QLIT_QSTR("guest-panicked"),
+ QLIT_QSTR("colo"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("202") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("reset"),
+ QLIT_QSTR("shutdown"),
+ QLIT_QSTR("poweroff"),
+ QLIT_QSTR("pause"),
+ QLIT_QSTR("debug"),
+ QLIT_QSTR("none"),
+ QLIT_QSTR("inject-nmi"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("203") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("pause"),
+ QLIT_QSTR("poweroff"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("331") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("204") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("hyper-v") },
+ { "type", QLIT_QSTR("332") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s390") },
+ { "type", QLIT_QSTR("333") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("int") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("205") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("ok"),
+ QLIT_QSTR("failed"),
+ QLIT_QSTR("nospace"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("206") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[206]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("granularity") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("status") },
+ { "type", QLIT_QSTR("334") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("206") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("rd_bytes") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("wr_bytes") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("rd_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("wr_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("flush_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("flush_total_time_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("wr_total_time_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("rd_total_time_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("wr_highest_offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("rd_merged") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("wr_merged") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("idle_time_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("failed_rd_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("failed_wr_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("failed_flush_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("invalid_rd_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("invalid_wr_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("invalid_flush_operations") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("account_invalid") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("account_failed") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("timed_stats") },
+ { "type", QLIT_QSTR("[335]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x_rd_latency_histogram") },
+ { "type", QLIT_QSTR("336") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x_wr_latency_histogram") },
+ { "type", QLIT_QSTR("336") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x_flush_latency_histogram") },
+ { "type", QLIT_QSTR("336") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("207") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("208") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("undefined"),
+ QLIT_QSTR("created"),
+ QLIT_QSTR("running"),
+ QLIT_QSTR("paused"),
+ QLIT_QSTR("ready"),
+ QLIT_QSTR("standby"),
+ QLIT_QSTR("waiting"),
+ QLIT_QSTR("pending"),
+ QLIT_QSTR("aborting"),
+ QLIT_QSTR("concluded"),
+ QLIT_QSTR("null"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("209") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("existing"),
+ QLIT_QSTR("absolute-paths"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("210") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("top"),
+ QLIT_QSTR("full"),
+ QLIT_QSTR("none"),
+ QLIT_QSTR("incremental"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("211") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("report"),
+ QLIT_QSTR("ignore"),
+ QLIT_QSTR("enospc"),
+ QLIT_QSTR("stop"),
+ QLIT_QSTR("auto"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("212") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("off"),
+ QLIT_QSTR("on"),
+ QLIT_QSTR("unmap"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("dirty-flag") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("actual-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("virtual-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cluster-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypted") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("compressed") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("full-backing-filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-filename-format") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("snapshots") },
+ { "type", QLIT_QSTR("[56]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-image") },
+ { "type", QLIT_QSTR("213") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("format-specific") },
+ { "type", QLIT_QSTR("337") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("213") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("writeback") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("direct") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("no-flush") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("214") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("215") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("blkdebug"),
+ QLIT_QSTR("blkverify"),
+ QLIT_QSTR("bochs"),
+ QLIT_QSTR("cloop"),
+ QLIT_QSTR("dmg"),
+ QLIT_QSTR("file"),
+ QLIT_QSTR("ftp"),
+ QLIT_QSTR("ftps"),
+ QLIT_QSTR("gluster"),
+ QLIT_QSTR("host_cdrom"),
+ QLIT_QSTR("host_device"),
+ QLIT_QSTR("http"),
+ QLIT_QSTR("https"),
+ QLIT_QSTR("iscsi"),
+ QLIT_QSTR("luks"),
+ QLIT_QSTR("nbd"),
+ QLIT_QSTR("nfs"),
+ QLIT_QSTR("null-aio"),
+ QLIT_QSTR("null-co"),
+ QLIT_QSTR("nvme"),
+ QLIT_QSTR("parallels"),
+ QLIT_QSTR("qcow"),
+ QLIT_QSTR("qcow2"),
+ QLIT_QSTR("qed"),
+ QLIT_QSTR("quorum"),
+ QLIT_QSTR("raw"),
+ QLIT_QSTR("rbd"),
+ QLIT_QSTR("replication"),
+ QLIT_QSTR("sheepdog"),
+ QLIT_QSTR("ssh"),
+ QLIT_QSTR("throttle"),
+ QLIT_QSTR("vdi"),
+ QLIT_QSTR("vhdx"),
+ QLIT_QSTR("vmdk"),
+ QLIT_QSTR("vpc"),
+ QLIT_QSTR("vvfat"),
+ QLIT_QSTR("vxhs"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("216") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("ignore"),
+ QLIT_QSTR("unmap"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("direct") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("no-flush") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("217") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("image") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("config") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("align") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("max-transfer") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("opt-write-zero") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("max-write-zero") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("opt-discard") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("max-discard") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("inject-error") },
+ { "type", QLIT_QSTR("[339]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("set-state") },
+ { "type", QLIT_QSTR("[340]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("218") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("test") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("raw") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("219") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("220") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pr-manager") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("locking") },
+ { "type", QLIT_QSTR("341") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("aio") },
+ { "type", QLIT_QSTR("342") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("221") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("url") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("readahead") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("timeout") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("222") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("url") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("readahead") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("timeout") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("sslverify") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("223") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("volume") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("[343]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("debug") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("224") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("url") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("readahead") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("timeout") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cookie") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cookie-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("225") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("url") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("readahead") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("timeout") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("proxy-password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cookie") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("sslverify") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cookie-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("226") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("transport") },
+ { "type", QLIT_QSTR("344") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("portal") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("target") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("lun") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("user") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("password-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("initiator-name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("header-digest") },
+ { "type", QLIT_QSTR("345") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("timeout") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("227") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("key-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("228") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("343") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("exp") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("229") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("346") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("user") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tcp-syn-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("readahead-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("page-cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("debug") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("230") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("latency-ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("231") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("namespace") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("232") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing") },
+ { "type", QLIT_QSTR("347") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("lazy-refcounts") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pass-discard-request") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pass-discard-snapshot") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pass-discard-other") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("overlap-check") },
+ { "type", QLIT_QSTR("348") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("l2-cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("l2-cache-entry-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("refcount-cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cache-clean-interval") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypt") },
+ { "type", QLIT_QSTR("349") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("233") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing") },
+ { "type", QLIT_QSTR("347") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypt") },
+ { "type", QLIT_QSTR("350") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("234") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing") },
+ { "type", QLIT_QSTR("347") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("235") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("blkverify") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("children") },
+ { "type", QLIT_QSTR("[338]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vote-threshold") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("rewrite-corrupted") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("read-pattern") },
+ { "type", QLIT_QSTR("351") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("236") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("237") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pool") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("image") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("conf") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("snapshot") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("user") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("[352]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("238") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("353") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("top-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("239") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("343") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vdi") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("snap-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tag") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("240") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("354") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("user") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("host-key-check") },
+ { "type", QLIT_QSTR("355") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("241") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("throttle-group") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("242") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dir") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("fat-type") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("floppy") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("label") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("rw") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("243") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vdisk-id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("352") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("244") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("245") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("filename") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("preallocation") },
+ { "type", QLIT_QSTR("356") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("nocow") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("246") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("location") },
+ { "type", QLIT_QSTR("224") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("preallocation") },
+ { "type", QLIT_QSTR("356") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("247") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("key-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cipher-alg") },
+ { "type", QLIT_QSTR("357") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cipher-mode") },
+ { "type", QLIT_QSTR("358") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ivgen-alg") },
+ { "type", QLIT_QSTR("359") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ivgen-hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iter-time") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("248") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("location") },
+ { "type", QLIT_QSTR("230") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("249") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cluster-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("250") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypt") },
+ { "type", QLIT_QSTR("361") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("251") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("version") },
+ { "type", QLIT_QSTR("362") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-fmt") },
+ { "type", QLIT_QSTR("215") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypt") },
+ { "type", QLIT_QSTR("361") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cluster-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("preallocation") },
+ { "type", QLIT_QSTR("356") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("lazy-refcounts") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("refcount-bits") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("252") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-fmt") },
+ { "type", QLIT_QSTR("215") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cluster-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("table-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("253") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("location") },
+ { "type", QLIT_QSTR("238") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cluster-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("254") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("location") },
+ { "type", QLIT_QSTR("240") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("backing-file") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("preallocation") },
+ { "type", QLIT_QSTR("356") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("redundancy") },
+ { "type", QLIT_QSTR("363") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("object-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("255") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("location") },
+ { "type", QLIT_QSTR("241") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("256") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("preallocation") },
+ { "type", QLIT_QSTR("356") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("257") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("log-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("block-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("subformat") },
+ { "type", QLIT_QSTR("364") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("block-state-zero") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("258") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("subformat") },
+ { "type", QLIT_QSTR("365") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("force-size") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("259") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("260") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("retain"),
+ QLIT_QSTR("read-only"),
+ QLIT_QSTR("read-write"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("261") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("read"),
+ QLIT_QSTR("write"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("262") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("ignore"),
+ QLIT_QSTR("report"),
+ QLIT_QSTR("stop"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("263") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("commit"),
+ QLIT_QSTR("stream"),
+ QLIT_QSTR("mirror"),
+ QLIT_QSTR("backup"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("null") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("264") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("366") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("265") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("inet") },
+ { "type", QLIT_QSTR("367") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("unix") },
+ { "type", QLIT_QSTR("368") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vsock") },
+ { "type", QLIT_QSTR("369") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("fd") },
+ { "type", QLIT_QSTR("370") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("266") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("safe"),
+ QLIT_QSTR("hard"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("267") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("read"),
+ QLIT_QSTR("write"),
+ QLIT_QSTR("flush"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("268") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("utf8"),
+ QLIT_QSTR("base64"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("371") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("269") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("file") },
+ { "type", QLIT_QSTR("372") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("serial") },
+ { "type", QLIT_QSTR("373") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("parallel") },
+ { "type", QLIT_QSTR("373") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("pipe") },
+ { "type", QLIT_QSTR("373") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("socket") },
+ { "type", QLIT_QSTR("374") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("udp") },
+ { "type", QLIT_QSTR("375") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("pty") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("null") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("mux") },
+ { "type", QLIT_QSTR("377") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("msmouse") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("wctablet") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("braille") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("testdev") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("stdio") },
+ { "type", QLIT_QSTR("378") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("console") },
+ { "type", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("spicevmc") },
+ { "type", QLIT_QSTR("379") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("spiceport") },
+ { "type", QLIT_QSTR("380") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vc") },
+ { "type", QLIT_QSTR("381") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("ringbuf") },
+ { "type", QLIT_QSTR("382") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("memory") },
+ { "type", QLIT_QSTR("382") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("270") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("normal"),
+ QLIT_QSTR("none"),
+ QLIT_QSTR("all"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("str") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[str]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("271") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("half"),
+ QLIT_QSTR("full"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("272") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("off"),
+ QLIT_QSTR("on"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("priority") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("tbl-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("in-pport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tunnel-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("eth-type") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("eth-src") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("eth-dst") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ip-proto") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ip-tos") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ip-dst") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("273") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("in-pport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tunnel-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("eth-src") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("eth-dst") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ip-proto") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ip-tos") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("274") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("goto-tbl") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("group-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tunnel-lport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("new-vlan-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("out-pport") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("275") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("383") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("276") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("passthrough") },
+ { "type", QLIT_QSTR("384") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("emulator") },
+ { "type", QLIT_QSTR("385") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("277") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("client"),
+ QLIT_QSTR("server"),
+ QLIT_QSTR("unknown"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("278") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[278]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("connection-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("channel-type") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("channel-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("tls") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("278") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("279") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("280") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("281") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("ipv4"),
+ QLIT_QSTR("ipv6"),
+ QLIT_QSTR("unix"),
+ QLIT_QSTR("vsock"),
+ QLIT_QSTR("unknown"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("282") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[282]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("service") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("websocket") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("x509_dname") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("sasl_username") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("282") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("283") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[283]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("service") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("websocket") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("284") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("vencrypt") },
+ { "type", QLIT_QSTR("285") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("283") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("284") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("none"),
+ QLIT_QSTR("vnc"),
+ QLIT_QSTR("ra2"),
+ QLIT_QSTR("ra2ne"),
+ QLIT_QSTR("tight"),
+ QLIT_QSTR("ultra"),
+ QLIT_QSTR("tls"),
+ QLIT_QSTR("vencrypt"),
+ QLIT_QSTR("sasl"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("285") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("plain"),
+ QLIT_QSTR("tls-none"),
+ QLIT_QSTR("x509-none"),
+ QLIT_QSTR("tls-vnc"),
+ QLIT_QSTR("x509-vnc"),
+ QLIT_QSTR("tls-plain"),
+ QLIT_QSTR("x509-plain"),
+ QLIT_QSTR("tls-sasl"),
+ QLIT_QSTR("x509-sasl"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("service") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("websocket") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("auth") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("286") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("service") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("family") },
+ { "type", QLIT_QSTR("281") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("websocket") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("287") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("288") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[288]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("386") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("288") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("number") },
+ { "type", QLIT_QSTR("387") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcode") },
+ { "type", QLIT_QSTR("388") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("289") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[289]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("389") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("289") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("key") },
+ { "type", QLIT_QSTR("390") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("btn") },
+ { "type", QLIT_QSTR("391") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("rel") },
+ { "type", QLIT_QSTR("392") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("abs") },
+ { "type", QLIT_QSTR("392") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("290") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("none"),
+ QLIT_QSTR("setup"),
+ QLIT_QSTR("cancelling"),
+ QLIT_QSTR("cancelled"),
+ QLIT_QSTR("active"),
+ QLIT_QSTR("postcopy-active"),
+ QLIT_QSTR("completed"),
+ QLIT_QSTR("failed"),
+ QLIT_QSTR("colo"),
+ QLIT_QSTR("pre-switchover"),
+ QLIT_QSTR("device"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("transferred") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("remaining") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("total") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("duplicate") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("skipped") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("normal") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("normal-bytes") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dirty-pages-rate") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("mbps") },
+ { "type", QLIT_QSTR("number") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dirty-sync-count") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("postcopy-requests") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("page-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("291") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cache-size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bytes") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pages") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cache-miss") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cache-miss-rate") },
+ { "type", QLIT_QSTR("number") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("overflow") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("292") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("293") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("xbzrle"),
+ QLIT_QSTR("rdma-pin-all"),
+ QLIT_QSTR("auto-converge"),
+ QLIT_QSTR("zero-blocks"),
+ QLIT_QSTR("compress"),
+ QLIT_QSTR("events"),
+ QLIT_QSTR("postcopy-ram"),
+ QLIT_QSTR("x-colo"),
+ QLIT_QSTR("release-ram"),
+ QLIT_QSTR("block"),
+ QLIT_QSTR("return-path"),
+ QLIT_QSTR("pause-before-switchover"),
+ QLIT_QSTR("x-multifd"),
+ QLIT_QSTR("dirty-bitmaps"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("number") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("number") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("294") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[294]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("393") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("294") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("abort") },
+ { "type", QLIT_QSTR("394") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("block-dirty-bitmap-add") },
+ { "type", QLIT_QSTR("395") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("block-dirty-bitmap-clear") },
+ { "type", QLIT_QSTR("396") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blockdev-backup") },
+ { "type", QLIT_QSTR("397") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blockdev-snapshot") },
+ { "type", QLIT_QSTR("398") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blockdev-snapshot-internal-sync") },
+ { "type", QLIT_QSTR("399") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("blockdev-snapshot-sync") },
+ { "type", QLIT_QSTR("400") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("drive-backup") },
+ { "type", QLIT_QSTR("401") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("completion-mode") },
+ { "type", QLIT_QSTR("402") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("295") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("296") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("unavailable"),
+ QLIT_QSTR("disabled"),
+ QLIT_QSTR("enabled"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("297") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("builtin"),
+ QLIT_QSTR("enum"),
+ QLIT_QSTR("array"),
+ QLIT_QSTR("object"),
+ QLIT_QSTR("alternate"),
+ QLIT_QSTR("command"),
+ QLIT_QSTR("event"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("json-type") },
+ { "type", QLIT_QSTR("403") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("298") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("values") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("299") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("element-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("300") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("members") },
+ { "type", QLIT_QSTR("[404]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tag") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("variants") },
+ { "type", QLIT_QSTR("[405]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("301") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("members") },
+ { "type", QLIT_QSTR("[406]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("302") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ret-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("allow-oob") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("303") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("304") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("305") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[305]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("305") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("oob"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("major") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("minor") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("micro") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("306") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("node-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("socket-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("core-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("thread-id") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("307") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("308") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("x86"),
+ QLIT_QSTR("sparc"),
+ QLIT_QSTR("ppc"),
+ QLIT_QSTR("mips"),
+ QLIT_QSTR("tricore"),
+ QLIT_QSTR("s390"),
+ QLIT_QSTR("riscv"),
+ QLIT_QSTR("other"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pc") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("309") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pc") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("npc") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("310") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("nip") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("311") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("PC") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("312") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("PC") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("313") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cpu-state") },
+ { "type", QLIT_QSTR("407") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("314") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("pc") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("315") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("316") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("317") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[317]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bus") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("slot") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("function") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("class_info") },
+ { "type", QLIT_QSTR("408") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("409") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("irq") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("qdev_id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("pci_bridge") },
+ { "type", QLIT_QSTR("410") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("regions") },
+ { "type", QLIT_QSTR("[411]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("317") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("318") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("elf"),
+ QLIT_QSTR("kdump-zlib"),
+ QLIT_QSTR("kdump-lzo"),
+ QLIT_QSTR("kdump-snappy"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("319") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("none"),
+ QLIT_QSTR("active"),
+ QLIT_QSTR("completed"),
+ QLIT_QSTR("failed"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("318") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[318]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("320") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("static"),
+ QLIT_QSTR("full"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("props") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("321") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("322") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("incompatible"),
+ QLIT_QSTR("identical"),
+ QLIT_QSTR("superset"),
+ QLIT_QSTR("subset"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("323") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[323]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fd") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("opaque") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("323") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("324") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[324]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("412") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("help") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("default") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("324") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("325") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("default"),
+ QLIT_QSTR("preferred"),
+ QLIT_QSTR("bind"),
+ QLIT_QSTR("interleave"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("326") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("dimm"),
+ QLIT_QSTR("nvdimm"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("413") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("327") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("328") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("DIMM"),
+ QLIT_QSTR("CPU"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("329") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("uninit"),
+ QLIT_QSTR("launch-update"),
+ QLIT_QSTR("launch-secret"),
+ QLIT_QSTR("running"),
+ QLIT_QSTR("send-update"),
+ QLIT_QSTR("receive-update"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("330") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("queue-full"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("331") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("hyper-v"),
+ QLIT_QSTR("s390"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg1") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg2") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg3") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg4") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg5") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("332") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("core") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("psw-mask") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("psw-addr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("reason") },
+ { "type", QLIT_QSTR("414") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("333") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("334") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("active"),
+ QLIT_QSTR("disabled"),
+ QLIT_QSTR("frozen"),
+ QLIT_QSTR("locked"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("335") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[335]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("interval_length") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("min_rd_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("max_rd_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("avg_rd_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("min_wr_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("max_wr_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("avg_wr_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("min_flush_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("max_flush_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("avg_flush_latency_ns") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("avg_rd_queue_depth") },
+ { "type", QLIT_QSTR("number") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("avg_wr_queue_depth") },
+ { "type", QLIT_QSTR("number") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("335") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("boundaries") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bins") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("336") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("56") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[56]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("415") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("337") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow2") },
+ { "type", QLIT_QSTR("416") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vmdk") },
+ { "type", QLIT_QSTR("417") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("418") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("35") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("338") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("339") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[339]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("event") },
+ { "type", QLIT_QSTR("419") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("errno") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("sector") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("once") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("immediately") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("339") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("340") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[340]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("event") },
+ { "type", QLIT_QSTR("419") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("state") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("new_state") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("340") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("341") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("auto"),
+ QLIT_QSTR("on"),
+ QLIT_QSTR("off"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("342") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("threads"),
+ QLIT_QSTR("native"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("343") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[343]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("420") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("343") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("inet") },
+ { "type", QLIT_QSTR("354") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("unix") },
+ { "type", QLIT_QSTR("421") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("vsock") },
+ { "type", QLIT_QSTR("422") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("fd") },
+ { "type", QLIT_QSTR("423") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("344") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("tcp"),
+ QLIT_QSTR("iser"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("345") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("crc32c"),
+ QLIT_QSTR("none"),
+ QLIT_QSTR("crc32c-none"),
+ QLIT_QSTR("none-crc32c"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("424") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("346") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("35") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("null") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("347") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("425") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("426") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("348") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("427") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("349") },
+ { "tag", QLIT_QSTR("format") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("aes") },
+ { "type", QLIT_QSTR("428") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("429") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("430") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("350") },
+ { "tag", QLIT_QSTR("format") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("aes") },
+ { "type", QLIT_QSTR("428") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("338") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[338]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("351") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("quorum"),
+ QLIT_QSTR("fifo"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("352") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[352]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("352") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("353") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("primary"),
+ QLIT_QSTR("secondary"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("host") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("numeric") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("to") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ipv4") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ipv6") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("354") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("mode") },
+ { "type", QLIT_QSTR("431") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("355") },
+ { "tag", QLIT_QSTR("mode") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("none") },
+ { "type", QLIT_QSTR("432") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("hash") },
+ { "type", QLIT_QSTR("433") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("known_hosts") },
+ { "type", QLIT_QSTR("432") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("356") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("off"),
+ QLIT_QSTR("metadata"),
+ QLIT_QSTR("falloc"),
+ QLIT_QSTR("full"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("357") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("aes-128"),
+ QLIT_QSTR("aes-192"),
+ QLIT_QSTR("aes-256"),
+ QLIT_QSTR("des-rfb"),
+ QLIT_QSTR("3des"),
+ QLIT_QSTR("cast5-128"),
+ QLIT_QSTR("serpent-128"),
+ QLIT_QSTR("serpent-192"),
+ QLIT_QSTR("serpent-256"),
+ QLIT_QSTR("twofish-128"),
+ QLIT_QSTR("twofish-192"),
+ QLIT_QSTR("twofish-256"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("358") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("ecb"),
+ QLIT_QSTR("cbc"),
+ QLIT_QSTR("xts"),
+ QLIT_QSTR("ctr"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("359") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("plain"),
+ QLIT_QSTR("plain64"),
+ QLIT_QSTR("essiv"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("360") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("md5"),
+ QLIT_QSTR("sha1"),
+ QLIT_QSTR("sha224"),
+ QLIT_QSTR("sha256"),
+ QLIT_QSTR("sha384"),
+ QLIT_QSTR("sha512"),
+ QLIT_QSTR("ripemd160"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("434") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("361") },
+ { "tag", QLIT_QSTR("format") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("qcow") },
+ { "type", QLIT_QSTR("428") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("435") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("362") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("v2"),
+ QLIT_QSTR("v3"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("436") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("363") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("full") },
+ { "type", QLIT_QSTR("437") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("erasure-coded") },
+ { "type", QLIT_QSTR("438") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("364") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("dynamic"),
+ QLIT_QSTR("fixed"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("365") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("dynamic"),
+ QLIT_QSTR("fixed"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("null") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("null") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("366") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("inet"),
+ QLIT_QSTR("unix"),
+ QLIT_QSTR("vsock"),
+ QLIT_QSTR("fd"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("354") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("367") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("421") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("368") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("422") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("369") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("423") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("370") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("371") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("file"),
+ QLIT_QSTR("serial"),
+ QLIT_QSTR("parallel"),
+ QLIT_QSTR("pipe"),
+ QLIT_QSTR("socket"),
+ QLIT_QSTR("udp"),
+ QLIT_QSTR("pty"),
+ QLIT_QSTR("null"),
+ QLIT_QSTR("mux"),
+ QLIT_QSTR("msmouse"),
+ QLIT_QSTR("wctablet"),
+ QLIT_QSTR("braille"),
+ QLIT_QSTR("testdev"),
+ QLIT_QSTR("stdio"),
+ QLIT_QSTR("console"),
+ QLIT_QSTR("spicevmc"),
+ QLIT_QSTR("spiceport"),
+ QLIT_QSTR("vc"),
+ QLIT_QSTR("ringbuf"),
+ QLIT_QSTR("memory"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("439") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("372") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("440") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("373") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("441") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("374") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("442") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("375") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("443") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("376") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("444") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("377") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("445") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("378") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("446") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("379") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("447") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("380") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("448") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("381") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("449") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("382") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("383") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("passthrough"),
+ QLIT_QSTR("emulator"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("450") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("384") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("451") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("385") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("386") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("number"),
+ QLIT_QSTR("qcode"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("387") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("452") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("388") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("389") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("key"),
+ QLIT_QSTR("btn"),
+ QLIT_QSTR("rel"),
+ QLIT_QSTR("abs"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("453") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("390") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("454") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("391") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("455") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("392") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("393") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("abort"),
+ QLIT_QSTR("block-dirty-bitmap-add"),
+ QLIT_QSTR("block-dirty-bitmap-clear"),
+ QLIT_QSTR("blockdev-backup"),
+ QLIT_QSTR("blockdev-snapshot"),
+ QLIT_QSTR("blockdev-snapshot-internal-sync"),
+ QLIT_QSTR("blockdev-snapshot-sync"),
+ QLIT_QSTR("drive-backup"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("456") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("394") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("22") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("395") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("23") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("396") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("19") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("397") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("398") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("54") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("399") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("14") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("400") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("18") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("401") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("402") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("individual"),
+ QLIT_QSTR("grouped"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("403") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("string"),
+ QLIT_QSTR("number"),
+ QLIT_QSTR("int"),
+ QLIT_QSTR("boolean"),
+ QLIT_QSTR("null"),
+ QLIT_QSTR("object"),
+ QLIT_QSTR("array"),
+ QLIT_QSTR("value"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("404") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[404]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("name") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("default") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("404") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("405") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[405]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("case") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("405") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("406") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[406]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("406") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("407") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("uninitialized"),
+ QLIT_QSTR("stopped"),
+ QLIT_QSTR("check-stop"),
+ QLIT_QSTR("operating"),
+ QLIT_QSTR("load"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("desc") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("class") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("408") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("vendor") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("409") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bus") },
+ { "type", QLIT_QSTR("457") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("devices") },
+ { "type", QLIT_QSTR("[317]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("410") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("411") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[411]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("bar") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("address") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("prefetch") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("mem_type_64") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("411") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("412") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("string"),
+ QLIT_QSTR("boolean"),
+ QLIT_QSTR("number"),
+ QLIT_QSTR("size"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("id") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("addr") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("slot") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("node") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("memdev") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hotplugged") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hotpluggable") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("413") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("414") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("unknown"),
+ QLIT_QSTR("disabled-wait"),
+ QLIT_QSTR("extint-loop"),
+ QLIT_QSTR("pgmint-loop"),
+ QLIT_QSTR("opint-loop"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("415") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("qcow2"),
+ QLIT_QSTR("vmdk"),
+ QLIT_QSTR("luks"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("458") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("416") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("459") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("417") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("460") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("418") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("419") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("l1_update"),
+ QLIT_QSTR("l1_grow_alloc_table"),
+ QLIT_QSTR("l1_grow_write_table"),
+ QLIT_QSTR("l1_grow_activate_table"),
+ QLIT_QSTR("l2_load"),
+ QLIT_QSTR("l2_update"),
+ QLIT_QSTR("l2_update_compressed"),
+ QLIT_QSTR("l2_alloc_cow_read"),
+ QLIT_QSTR("l2_alloc_write"),
+ QLIT_QSTR("read_aio"),
+ QLIT_QSTR("read_backing_aio"),
+ QLIT_QSTR("read_compressed"),
+ QLIT_QSTR("write_aio"),
+ QLIT_QSTR("write_compressed"),
+ QLIT_QSTR("vmstate_load"),
+ QLIT_QSTR("vmstate_save"),
+ QLIT_QSTR("cow_read"),
+ QLIT_QSTR("cow_write"),
+ QLIT_QSTR("reftable_load"),
+ QLIT_QSTR("reftable_grow"),
+ QLIT_QSTR("reftable_update"),
+ QLIT_QSTR("refblock_load"),
+ QLIT_QSTR("refblock_update"),
+ QLIT_QSTR("refblock_update_part"),
+ QLIT_QSTR("refblock_alloc"),
+ QLIT_QSTR("refblock_alloc_hookup"),
+ QLIT_QSTR("refblock_alloc_write"),
+ QLIT_QSTR("refblock_alloc_write_blocks"),
+ QLIT_QSTR("refblock_alloc_write_table"),
+ QLIT_QSTR("refblock_alloc_switch_table"),
+ QLIT_QSTR("cluster_alloc"),
+ QLIT_QSTR("cluster_alloc_bytes"),
+ QLIT_QSTR("cluster_free"),
+ QLIT_QSTR("flush_to_os"),
+ QLIT_QSTR("flush_to_disk"),
+ QLIT_QSTR("pwritev_rmw_head"),
+ QLIT_QSTR("pwritev_rmw_after_head"),
+ QLIT_QSTR("pwritev_rmw_tail"),
+ QLIT_QSTR("pwritev_rmw_after_tail"),
+ QLIT_QSTR("pwritev"),
+ QLIT_QSTR("pwritev_zero"),
+ QLIT_QSTR("pwritev_done"),
+ QLIT_QSTR("empty_image_prepare"),
+ QLIT_QSTR("l1_shrink_write_table"),
+ QLIT_QSTR("l1_shrink_free_l2_clusters"),
+ QLIT_QSTR("cor_write"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("420") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("inet"),
+ QLIT_QSTR("unix"),
+ QLIT_QSTR("vsock"),
+ QLIT_QSTR("fd"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("421") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cid") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("port") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("422") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("str") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("423") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("424") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("inet"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("template") },
+ { "type", QLIT_QSTR("426") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("main-header") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("active-l1") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("active-l2") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("refcount-table") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("refcount-block") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("snapshot-table") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("inactive-l1") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("inactive-l2") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("425") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("426") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("none"),
+ QLIT_QSTR("constant"),
+ QLIT_QSTR("cached"),
+ QLIT_QSTR("all"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("427") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("aes"),
+ QLIT_QSTR("luks"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("key-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("428") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("key-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("429") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("430") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("aes"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("431") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("none"),
+ QLIT_QSTR("hash"),
+ QLIT_QSTR("known_hosts"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("432") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("461") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hash") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("433") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("434") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("qcow"),
+ QLIT_QSTR("luks"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("key-secret") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cipher-alg") },
+ { "type", QLIT_QSTR("357") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cipher-mode") },
+ { "type", QLIT_QSTR("358") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ivgen-alg") },
+ { "type", QLIT_QSTR("359") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ivgen-hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iter-time") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("435") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("436") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("full"),
+ QLIT_QSTR("erasure-coded"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("copies") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("437") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data-strips") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("parity-strips") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("438") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("in") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("out") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("append") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("439") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("device") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("440") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("addr") },
+ { "type", QLIT_QSTR("265") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tls-creds") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("server") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("wait") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("nodelay") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("telnet") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("tn3270") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("reconnect") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("441") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("remote") },
+ { "type", QLIT_QSTR("265") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("local") },
+ { "type", QLIT_QSTR("265") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("442") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("443") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("chardev") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("444") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("signal") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("445") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("446") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("fqdn") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("447") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("width") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("height") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cols") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("rows") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("448") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logfile") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("logappend") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("size") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("449") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("cancel-path") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("450") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("chardev") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("451") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("452") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("unmapped"),
+ QLIT_QSTR("shift"),
+ QLIT_QSTR("shift_r"),
+ QLIT_QSTR("alt"),
+ QLIT_QSTR("alt_r"),
+ QLIT_QSTR("ctrl"),
+ QLIT_QSTR("ctrl_r"),
+ QLIT_QSTR("menu"),
+ QLIT_QSTR("esc"),
+ QLIT_QSTR("1"),
+ QLIT_QSTR("2"),
+ QLIT_QSTR("3"),
+ QLIT_QSTR("4"),
+ QLIT_QSTR("5"),
+ QLIT_QSTR("6"),
+ QLIT_QSTR("7"),
+ QLIT_QSTR("8"),
+ QLIT_QSTR("9"),
+ QLIT_QSTR("0"),
+ QLIT_QSTR("minus"),
+ QLIT_QSTR("equal"),
+ QLIT_QSTR("backspace"),
+ QLIT_QSTR("tab"),
+ QLIT_QSTR("q"),
+ QLIT_QSTR("w"),
+ QLIT_QSTR("e"),
+ QLIT_QSTR("r"),
+ QLIT_QSTR("t"),
+ QLIT_QSTR("y"),
+ QLIT_QSTR("u"),
+ QLIT_QSTR("i"),
+ QLIT_QSTR("o"),
+ QLIT_QSTR("p"),
+ QLIT_QSTR("bracket_left"),
+ QLIT_QSTR("bracket_right"),
+ QLIT_QSTR("ret"),
+ QLIT_QSTR("a"),
+ QLIT_QSTR("s"),
+ QLIT_QSTR("d"),
+ QLIT_QSTR("f"),
+ QLIT_QSTR("g"),
+ QLIT_QSTR("h"),
+ QLIT_QSTR("j"),
+ QLIT_QSTR("k"),
+ QLIT_QSTR("l"),
+ QLIT_QSTR("semicolon"),
+ QLIT_QSTR("apostrophe"),
+ QLIT_QSTR("grave_accent"),
+ QLIT_QSTR("backslash"),
+ QLIT_QSTR("z"),
+ QLIT_QSTR("x"),
+ QLIT_QSTR("c"),
+ QLIT_QSTR("v"),
+ QLIT_QSTR("b"),
+ QLIT_QSTR("n"),
+ QLIT_QSTR("m"),
+ QLIT_QSTR("comma"),
+ QLIT_QSTR("dot"),
+ QLIT_QSTR("slash"),
+ QLIT_QSTR("asterisk"),
+ QLIT_QSTR("spc"),
+ QLIT_QSTR("caps_lock"),
+ QLIT_QSTR("f1"),
+ QLIT_QSTR("f2"),
+ QLIT_QSTR("f3"),
+ QLIT_QSTR("f4"),
+ QLIT_QSTR("f5"),
+ QLIT_QSTR("f6"),
+ QLIT_QSTR("f7"),
+ QLIT_QSTR("f8"),
+ QLIT_QSTR("f9"),
+ QLIT_QSTR("f10"),
+ QLIT_QSTR("num_lock"),
+ QLIT_QSTR("scroll_lock"),
+ QLIT_QSTR("kp_divide"),
+ QLIT_QSTR("kp_multiply"),
+ QLIT_QSTR("kp_subtract"),
+ QLIT_QSTR("kp_add"),
+ QLIT_QSTR("kp_enter"),
+ QLIT_QSTR("kp_decimal"),
+ QLIT_QSTR("sysrq"),
+ QLIT_QSTR("kp_0"),
+ QLIT_QSTR("kp_1"),
+ QLIT_QSTR("kp_2"),
+ QLIT_QSTR("kp_3"),
+ QLIT_QSTR("kp_4"),
+ QLIT_QSTR("kp_5"),
+ QLIT_QSTR("kp_6"),
+ QLIT_QSTR("kp_7"),
+ QLIT_QSTR("kp_8"),
+ QLIT_QSTR("kp_9"),
+ QLIT_QSTR("less"),
+ QLIT_QSTR("f11"),
+ QLIT_QSTR("f12"),
+ QLIT_QSTR("print"),
+ QLIT_QSTR("home"),
+ QLIT_QSTR("pgup"),
+ QLIT_QSTR("pgdn"),
+ QLIT_QSTR("end"),
+ QLIT_QSTR("left"),
+ QLIT_QSTR("up"),
+ QLIT_QSTR("down"),
+ QLIT_QSTR("right"),
+ QLIT_QSTR("insert"),
+ QLIT_QSTR("delete"),
+ QLIT_QSTR("stop"),
+ QLIT_QSTR("again"),
+ QLIT_QSTR("props"),
+ QLIT_QSTR("undo"),
+ QLIT_QSTR("front"),
+ QLIT_QSTR("copy"),
+ QLIT_QSTR("open"),
+ QLIT_QSTR("paste"),
+ QLIT_QSTR("find"),
+ QLIT_QSTR("cut"),
+ QLIT_QSTR("lf"),
+ QLIT_QSTR("help"),
+ QLIT_QSTR("meta_l"),
+ QLIT_QSTR("meta_r"),
+ QLIT_QSTR("compose"),
+ QLIT_QSTR("pause"),
+ QLIT_QSTR("ro"),
+ QLIT_QSTR("hiragana"),
+ QLIT_QSTR("henkan"),
+ QLIT_QSTR("yen"),
+ QLIT_QSTR("muhenkan"),
+ QLIT_QSTR("katakanahiragana"),
+ QLIT_QSTR("kp_comma"),
+ QLIT_QSTR("kp_equals"),
+ QLIT_QSTR("power"),
+ QLIT_QSTR("sleep"),
+ QLIT_QSTR("wake"),
+ QLIT_QSTR("audionext"),
+ QLIT_QSTR("audioprev"),
+ QLIT_QSTR("audiostop"),
+ QLIT_QSTR("audioplay"),
+ QLIT_QSTR("audiomute"),
+ QLIT_QSTR("volumeup"),
+ QLIT_QSTR("volumedown"),
+ QLIT_QSTR("mediaselect"),
+ QLIT_QSTR("mail"),
+ QLIT_QSTR("calculator"),
+ QLIT_QSTR("computer"),
+ QLIT_QSTR("ac_home"),
+ QLIT_QSTR("ac_back"),
+ QLIT_QSTR("ac_forward"),
+ QLIT_QSTR("ac_refresh"),
+ QLIT_QSTR("ac_bookmarks"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("key") },
+ { "type", QLIT_QSTR("288") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("down") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("453") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("button") },
+ { "type", QLIT_QSTR("462") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("down") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("454") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("axis") },
+ { "type", QLIT_QSTR("463") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("value") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("455") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("456") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("number") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("secondary") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("subordinate") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("io_range") },
+ { "type", QLIT_QSTR("464") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("memory_range") },
+ { "type", QLIT_QSTR("464") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("prefetchable_range") },
+ { "type", QLIT_QSTR("464") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("457") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("compat") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("lazy-refcounts") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("corrupt") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("refcount-bits") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("encrypt") },
+ { "type", QLIT_QSTR("465") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("458") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("create-type") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cid") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("parent-cid") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("extents") },
+ { "type", QLIT_QSTR("[213]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("459") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cipher-alg") },
+ { "type", QLIT_QSTR("357") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("cipher-mode") },
+ { "type", QLIT_QSTR("358") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ivgen-alg") },
+ { "type", QLIT_QSTR("359") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ivgen-hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("hash-alg") },
+ { "type", QLIT_QSTR("360") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("payload-offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("master-key-iters") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("uuid") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("slots") },
+ { "type", QLIT_QSTR("[466]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("460") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("461") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("md5"),
+ QLIT_QSTR("sha1"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("462") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("left"),
+ QLIT_QSTR("middle"),
+ QLIT_QSTR("right"),
+ QLIT_QSTR("wheel-up"),
+ QLIT_QSTR("wheel-down"),
+ QLIT_QSTR("side"),
+ QLIT_QSTR("extra"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("463") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("x"),
+ QLIT_QSTR("y"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("base") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("limit") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("464") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("format") },
+ { "type", QLIT_QSTR("427") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("465") },
+ { "tag", QLIT_QSTR("format") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("aes") },
+ { "type", QLIT_QSTR("467") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("luks") },
+ { "type", QLIT_QSTR("460") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("213") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[213]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("466") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[466]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("active") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("iters") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("stripes") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("key-offset") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("466") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("467") },
+ {}
+ })),
+ {}
+}));
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_introspect_c;
diff --git a/qemu2-auto-generated/qapi/qapi-introspect.h b/qemu2-auto-generated/qapi/qapi-introspect.h
new file mode 100644
index 0000000000..36d02005d0
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-introspect.h
@@ -0,0 +1,19 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * QAPI/QMP schema introspection
+ *
+ * Copyright (C) 2015-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_INTROSPECT_H
+#define QAPI_INTROSPECT_H
+
+#include "qapi/qmp/qlit.h"
+
+extern const QLitObject qmp_schema_qlit;
+
+#endif /* QAPI_INTROSPECT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-block-core.c b/qemu2-auto-generated/qapi/qapi-types-block-core.c
new file mode 100644
index 0000000000..b41b97630c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-block-core.c
@@ -0,0 +1,1730 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-block-core.h"
+#include "qapi-visit-block-core.h"
+
+void qapi_free_SnapshotInfo(SnapshotInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SnapshotInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfoSpecificQCow2EncryptionBase(ImageInfoSpecificQCow2EncryptionBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoSpecificQCow2EncryptionBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfoSpecificQCow2Encryption(ImageInfoSpecificQCow2Encryption *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoSpecificQCow2Encryption(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfoSpecificQCow2(ImageInfoSpecificQCow2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoSpecificQCow2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfoList(ImageInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfoSpecificVmdk(ImageInfoSpecificVmdk *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoSpecificVmdk(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ImageInfoSpecificKind_lookup = {
+ .array = (const char *const[]) {
+ [IMAGE_INFO_SPECIFIC_KIND_QCOW2] = "qcow2",
+ [IMAGE_INFO_SPECIFIC_KIND_VMDK] = "vmdk",
+ [IMAGE_INFO_SPECIFIC_KIND_LUKS] = "luks",
+ },
+ .size = IMAGE_INFO_SPECIFIC_KIND__MAX
+};
+
+void qapi_free_ImageInfoSpecific(ImageInfoSpecific *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfoSpecific(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SnapshotInfoList(SnapshotInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SnapshotInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageInfo(ImageInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ImageCheck(ImageCheck *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ImageCheck(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MapEntry(MapEntry *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MapEntry(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCacheInfo(BlockdevCacheInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCacheInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDeviceInfo(BlockDeviceInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockDeviceIoStatus_lookup = {
+ .array = (const char *const[]) {
+ [BLOCK_DEVICE_IO_STATUS_OK] = "ok",
+ [BLOCK_DEVICE_IO_STATUS_FAILED] = "failed",
+ [BLOCK_DEVICE_IO_STATUS_NOSPACE] = "nospace",
+ },
+ .size = BLOCK_DEVICE_IO_STATUS__MAX
+};
+
+void qapi_free_BlockDeviceMapEntry(BlockDeviceMapEntry *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceMapEntry(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup DirtyBitmapStatus_lookup = {
+ .array = (const char *const[]) {
+ [DIRTY_BITMAP_STATUS_ACTIVE] = "active",
+ [DIRTY_BITMAP_STATUS_DISABLED] = "disabled",
+ [DIRTY_BITMAP_STATUS_FROZEN] = "frozen",
+ [DIRTY_BITMAP_STATUS_LOCKED] = "locked",
+ },
+ .size = DIRTY_BITMAP_STATUS__MAX
+};
+
+void qapi_free_BlockDirtyInfo(BlockDirtyInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockLatencyHistogramInfo(BlockLatencyHistogramInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockLatencyHistogramInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDirtyInfoList(BlockDirtyInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockInfo(BlockInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockMeasureInfo(BlockMeasureInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockMeasureInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockInfoList(BlockInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDeviceTimedStats(BlockDeviceTimedStats *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceTimedStats(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDeviceTimedStatsList(BlockDeviceTimedStatsList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceTimedStatsList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDeviceStats(BlockDeviceStats *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceStats(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockStats(BlockStats *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockStats(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockStatsList(BlockStatsList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockStatsList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevOnError_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_ON_ERROR_REPORT] = "report",
+ [BLOCKDEV_ON_ERROR_IGNORE] = "ignore",
+ [BLOCKDEV_ON_ERROR_ENOSPC] = "enospc",
+ [BLOCKDEV_ON_ERROR_STOP] = "stop",
+ [BLOCKDEV_ON_ERROR_AUTO] = "auto",
+ },
+ .size = BLOCKDEV_ON_ERROR__MAX
+};
+
+const QEnumLookup MirrorSyncMode_lookup = {
+ .array = (const char *const[]) {
+ [MIRROR_SYNC_MODE_TOP] = "top",
+ [MIRROR_SYNC_MODE_FULL] = "full",
+ [MIRROR_SYNC_MODE_NONE] = "none",
+ [MIRROR_SYNC_MODE_INCREMENTAL] = "incremental",
+ },
+ .size = MIRROR_SYNC_MODE__MAX
+};
+
+const QEnumLookup BlockJobType_lookup = {
+ .array = (const char *const[]) {
+ [BLOCK_JOB_TYPE_COMMIT] = "commit",
+ [BLOCK_JOB_TYPE_STREAM] = "stream",
+ [BLOCK_JOB_TYPE_MIRROR] = "mirror",
+ [BLOCK_JOB_TYPE_BACKUP] = "backup",
+ },
+ .size = BLOCK_JOB_TYPE__MAX
+};
+
+const QEnumLookup BlockJobVerb_lookup = {
+ .array = (const char *const[]) {
+ [BLOCK_JOB_VERB_CANCEL] = "cancel",
+ [BLOCK_JOB_VERB_PAUSE] = "pause",
+ [BLOCK_JOB_VERB_RESUME] = "resume",
+ [BLOCK_JOB_VERB_SET_SPEED] = "set-speed",
+ [BLOCK_JOB_VERB_COMPLETE] = "complete",
+ [BLOCK_JOB_VERB_DISMISS] = "dismiss",
+ [BLOCK_JOB_VERB_FINALIZE] = "finalize",
+ },
+ .size = BLOCK_JOB_VERB__MAX
+};
+
+const QEnumLookup BlockJobStatus_lookup = {
+ .array = (const char *const[]) {
+ [BLOCK_JOB_STATUS_UNDEFINED] = "undefined",
+ [BLOCK_JOB_STATUS_CREATED] = "created",
+ [BLOCK_JOB_STATUS_RUNNING] = "running",
+ [BLOCK_JOB_STATUS_PAUSED] = "paused",
+ [BLOCK_JOB_STATUS_READY] = "ready",
+ [BLOCK_JOB_STATUS_STANDBY] = "standby",
+ [BLOCK_JOB_STATUS_WAITING] = "waiting",
+ [BLOCK_JOB_STATUS_PENDING] = "pending",
+ [BLOCK_JOB_STATUS_ABORTING] = "aborting",
+ [BLOCK_JOB_STATUS_CONCLUDED] = "concluded",
+ [BLOCK_JOB_STATUS_NULL] = "null",
+ },
+ .size = BLOCK_JOB_STATUS__MAX
+};
+
+void qapi_free_BlockJobInfo(BlockJobInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockJobInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockJobInfoList(BlockJobInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockJobInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NewImageMode_lookup = {
+ .array = (const char *const[]) {
+ [NEW_IMAGE_MODE_EXISTING] = "existing",
+ [NEW_IMAGE_MODE_ABSOLUTE_PATHS] = "absolute-paths",
+ },
+ .size = NEW_IMAGE_MODE__MAX
+};
+
+void qapi_free_BlockdevSnapshotSync(BlockdevSnapshotSync *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevSnapshotSync(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevSnapshot(BlockdevSnapshot *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevSnapshot(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DriveBackup(DriveBackup *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DriveBackup(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevBackup(BlockdevBackup *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevBackup(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDeviceInfoList(BlockDeviceInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDeviceInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DriveMirror(DriveMirror *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DriveMirror(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDirtyBitmap(BlockDirtyBitmap *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyBitmap(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDirtyBitmapAdd(BlockDirtyBitmapAdd *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyBitmapAdd(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockDirtyBitmapSha256(BlockDirtyBitmapSha256 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockDirtyBitmapSha256(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockIOThrottle(BlockIOThrottle *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockIOThrottle(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ThrottleLimits(ThrottleLimits *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ThrottleLimits(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevDiscardOptions_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_DISCARD_OPTIONS_IGNORE] = "ignore",
+ [BLOCKDEV_DISCARD_OPTIONS_UNMAP] = "unmap",
+ },
+ .size = BLOCKDEV_DISCARD_OPTIONS__MAX
+};
+
+const QEnumLookup BlockdevDetectZeroesOptions_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF] = "off",
+ [BLOCKDEV_DETECT_ZEROES_OPTIONS_ON] = "on",
+ [BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP] = "unmap",
+ },
+ .size = BLOCKDEV_DETECT_ZEROES_OPTIONS__MAX
+};
+
+const QEnumLookup BlockdevAioOptions_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_AIO_OPTIONS_THREADS] = "threads",
+ [BLOCKDEV_AIO_OPTIONS_NATIVE] = "native",
+ },
+ .size = BLOCKDEV_AIO_OPTIONS__MAX
+};
+
+void qapi_free_BlockdevCacheOptions(BlockdevCacheOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCacheOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevDriver_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_DRIVER_BLKDEBUG] = "blkdebug",
+ [BLOCKDEV_DRIVER_BLKVERIFY] = "blkverify",
+ [BLOCKDEV_DRIVER_BOCHS] = "bochs",
+ [BLOCKDEV_DRIVER_CLOOP] = "cloop",
+ [BLOCKDEV_DRIVER_DMG] = "dmg",
+ [BLOCKDEV_DRIVER_FILE] = "file",
+ [BLOCKDEV_DRIVER_FTP] = "ftp",
+ [BLOCKDEV_DRIVER_FTPS] = "ftps",
+ [BLOCKDEV_DRIVER_GLUSTER] = "gluster",
+ [BLOCKDEV_DRIVER_HOST_CDROM] = "host_cdrom",
+ [BLOCKDEV_DRIVER_HOST_DEVICE] = "host_device",
+ [BLOCKDEV_DRIVER_HTTP] = "http",
+ [BLOCKDEV_DRIVER_HTTPS] = "https",
+ [BLOCKDEV_DRIVER_ISCSI] = "iscsi",
+ [BLOCKDEV_DRIVER_LUKS] = "luks",
+ [BLOCKDEV_DRIVER_NBD] = "nbd",
+ [BLOCKDEV_DRIVER_NFS] = "nfs",
+ [BLOCKDEV_DRIVER_NULL_AIO] = "null-aio",
+ [BLOCKDEV_DRIVER_NULL_CO] = "null-co",
+ [BLOCKDEV_DRIVER_NVME] = "nvme",
+ [BLOCKDEV_DRIVER_PARALLELS] = "parallels",
+ [BLOCKDEV_DRIVER_QCOW] = "qcow",
+ [BLOCKDEV_DRIVER_QCOW2] = "qcow2",
+ [BLOCKDEV_DRIVER_QED] = "qed",
+ [BLOCKDEV_DRIVER_QUORUM] = "quorum",
+ [BLOCKDEV_DRIVER_RAW] = "raw",
+ [BLOCKDEV_DRIVER_RBD] = "rbd",
+ [BLOCKDEV_DRIVER_REPLICATION] = "replication",
+ [BLOCKDEV_DRIVER_SHEEPDOG] = "sheepdog",
+ [BLOCKDEV_DRIVER_SSH] = "ssh",
+ [BLOCKDEV_DRIVER_THROTTLE] = "throttle",
+ [BLOCKDEV_DRIVER_VDI] = "vdi",
+ [BLOCKDEV_DRIVER_VHDX] = "vhdx",
+ [BLOCKDEV_DRIVER_VMDK] = "vmdk",
+ [BLOCKDEV_DRIVER_VPC] = "vpc",
+ [BLOCKDEV_DRIVER_VVFAT] = "vvfat",
+ [BLOCKDEV_DRIVER_VXHS] = "vxhs",
+ },
+ .size = BLOCKDEV_DRIVER__MAX
+};
+
+void qapi_free_BlockdevOptionsFile(BlockdevOptionsFile *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsFile(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsNull(BlockdevOptionsNull *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsNull(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsNVMe(BlockdevOptionsNVMe *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsNVMe(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsVVFAT(BlockdevOptionsVVFAT *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsVVFAT(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsGenericFormat(BlockdevOptionsGenericFormat *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsGenericFormat(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsLUKS(BlockdevOptionsLUKS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsLUKS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsGenericCOWFormat(BlockdevOptionsGenericCOWFormat *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsGenericCOWFormat(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup Qcow2OverlapCheckMode_lookup = {
+ .array = (const char *const[]) {
+ [QCOW2_OVERLAP_CHECK_MODE_NONE] = "none",
+ [QCOW2_OVERLAP_CHECK_MODE_CONSTANT] = "constant",
+ [QCOW2_OVERLAP_CHECK_MODE_CACHED] = "cached",
+ [QCOW2_OVERLAP_CHECK_MODE_ALL] = "all",
+ },
+ .size = QCOW2_OVERLAP_CHECK_MODE__MAX
+};
+
+void qapi_free_Qcow2OverlapCheckFlags(Qcow2OverlapCheckFlags *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Qcow2OverlapCheckFlags(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_Qcow2OverlapChecks(Qcow2OverlapChecks *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Qcow2OverlapChecks(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevQcowEncryptionFormat_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_QCOW_ENCRYPTION_FORMAT_AES] = "aes",
+ },
+ .size = BLOCKDEV_QCOW_ENCRYPTION_FORMAT__MAX
+};
+
+void qapi_free_BlockdevQcowEncryption(BlockdevQcowEncryption *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevQcowEncryption(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsQcow(BlockdevOptionsQcow *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsQcow(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevQcow2EncryptionFormat_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_AES] = "aes",
+ [BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_LUKS] = "luks",
+ },
+ .size = BLOCKDEV_QCOW2_ENCRYPTION_FORMAT__MAX
+};
+
+void qapi_free_BlockdevQcow2Encryption(BlockdevQcow2Encryption *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevQcow2Encryption(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsQcow2(BlockdevOptionsQcow2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsQcow2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SshHostKeyCheckMode_lookup = {
+ .array = (const char *const[]) {
+ [SSH_HOST_KEY_CHECK_MODE_NONE] = "none",
+ [SSH_HOST_KEY_CHECK_MODE_HASH] = "hash",
+ [SSH_HOST_KEY_CHECK_MODE_KNOWN_HOSTS] = "known_hosts",
+ },
+ .size = SSH_HOST_KEY_CHECK_MODE__MAX
+};
+
+const QEnumLookup SshHostKeyCheckHashType_lookup = {
+ .array = (const char *const[]) {
+ [SSH_HOST_KEY_CHECK_HASH_TYPE_MD5] = "md5",
+ [SSH_HOST_KEY_CHECK_HASH_TYPE_SHA1] = "sha1",
+ },
+ .size = SSH_HOST_KEY_CHECK_HASH_TYPE__MAX
+};
+
+void qapi_free_SshHostKeyHash(SshHostKeyHash *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SshHostKeyHash(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SshHostKeyDummy(SshHostKeyDummy *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SshHostKeyDummy(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SshHostKeyCheck(SshHostKeyCheck *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SshHostKeyCheck(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsSsh(BlockdevOptionsSsh *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsSsh(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlkdebugEvent_lookup = {
+ .array = (const char *const[]) {
+ [BLKDBG_L1_UPDATE] = "l1_update",
+ [BLKDBG_L1_GROW_ALLOC_TABLE] = "l1_grow_alloc_table",
+ [BLKDBG_L1_GROW_WRITE_TABLE] = "l1_grow_write_table",
+ [BLKDBG_L1_GROW_ACTIVATE_TABLE] = "l1_grow_activate_table",
+ [BLKDBG_L2_LOAD] = "l2_load",
+ [BLKDBG_L2_UPDATE] = "l2_update",
+ [BLKDBG_L2_UPDATE_COMPRESSED] = "l2_update_compressed",
+ [BLKDBG_L2_ALLOC_COW_READ] = "l2_alloc_cow_read",
+ [BLKDBG_L2_ALLOC_WRITE] = "l2_alloc_write",
+ [BLKDBG_READ_AIO] = "read_aio",
+ [BLKDBG_READ_BACKING_AIO] = "read_backing_aio",
+ [BLKDBG_READ_COMPRESSED] = "read_compressed",
+ [BLKDBG_WRITE_AIO] = "write_aio",
+ [BLKDBG_WRITE_COMPRESSED] = "write_compressed",
+ [BLKDBG_VMSTATE_LOAD] = "vmstate_load",
+ [BLKDBG_VMSTATE_SAVE] = "vmstate_save",
+ [BLKDBG_COW_READ] = "cow_read",
+ [BLKDBG_COW_WRITE] = "cow_write",
+ [BLKDBG_REFTABLE_LOAD] = "reftable_load",
+ [BLKDBG_REFTABLE_GROW] = "reftable_grow",
+ [BLKDBG_REFTABLE_UPDATE] = "reftable_update",
+ [BLKDBG_REFBLOCK_LOAD] = "refblock_load",
+ [BLKDBG_REFBLOCK_UPDATE] = "refblock_update",
+ [BLKDBG_REFBLOCK_UPDATE_PART] = "refblock_update_part",
+ [BLKDBG_REFBLOCK_ALLOC] = "refblock_alloc",
+ [BLKDBG_REFBLOCK_ALLOC_HOOKUP] = "refblock_alloc_hookup",
+ [BLKDBG_REFBLOCK_ALLOC_WRITE] = "refblock_alloc_write",
+ [BLKDBG_REFBLOCK_ALLOC_WRITE_BLOCKS] = "refblock_alloc_write_blocks",
+ [BLKDBG_REFBLOCK_ALLOC_WRITE_TABLE] = "refblock_alloc_write_table",
+ [BLKDBG_REFBLOCK_ALLOC_SWITCH_TABLE] = "refblock_alloc_switch_table",
+ [BLKDBG_CLUSTER_ALLOC] = "cluster_alloc",
+ [BLKDBG_CLUSTER_ALLOC_BYTES] = "cluster_alloc_bytes",
+ [BLKDBG_CLUSTER_FREE] = "cluster_free",
+ [BLKDBG_FLUSH_TO_OS] = "flush_to_os",
+ [BLKDBG_FLUSH_TO_DISK] = "flush_to_disk",
+ [BLKDBG_PWRITEV_RMW_HEAD] = "pwritev_rmw_head",
+ [BLKDBG_PWRITEV_RMW_AFTER_HEAD] = "pwritev_rmw_after_head",
+ [BLKDBG_PWRITEV_RMW_TAIL] = "pwritev_rmw_tail",
+ [BLKDBG_PWRITEV_RMW_AFTER_TAIL] = "pwritev_rmw_after_tail",
+ [BLKDBG_PWRITEV] = "pwritev",
+ [BLKDBG_PWRITEV_ZERO] = "pwritev_zero",
+ [BLKDBG_PWRITEV_DONE] = "pwritev_done",
+ [BLKDBG_EMPTY_IMAGE_PREPARE] = "empty_image_prepare",
+ [BLKDBG_L1_SHRINK_WRITE_TABLE] = "l1_shrink_write_table",
+ [BLKDBG_L1_SHRINK_FREE_L2_CLUSTERS] = "l1_shrink_free_l2_clusters",
+ [BLKDBG_COR_WRITE] = "cor_write",
+ },
+ .size = BLKDBG__MAX
+};
+
+void qapi_free_BlkdebugInjectErrorOptions(BlkdebugInjectErrorOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlkdebugInjectErrorOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlkdebugSetStateOptions(BlkdebugSetStateOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlkdebugSetStateOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlkdebugInjectErrorOptionsList(BlkdebugInjectErrorOptionsList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlkdebugInjectErrorOptionsList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlkdebugSetStateOptionsList(BlkdebugSetStateOptionsList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlkdebugSetStateOptionsList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsBlkdebug(BlockdevOptionsBlkdebug *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsBlkdebug(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsBlkverify(BlockdevOptionsBlkverify *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsBlkverify(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QuorumReadPattern_lookup = {
+ .array = (const char *const[]) {
+ [QUORUM_READ_PATTERN_QUORUM] = "quorum",
+ [QUORUM_READ_PATTERN_FIFO] = "fifo",
+ },
+ .size = QUORUM_READ_PATTERN__MAX
+};
+
+void qapi_free_BlockdevRefList(BlockdevRefList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevRefList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsQuorum(BlockdevOptionsQuorum *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsQuorum(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SocketAddressList(SocketAddressList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SocketAddressList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsGluster(BlockdevOptionsGluster *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsGluster(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup IscsiTransport_lookup = {
+ .array = (const char *const[]) {
+ [ISCSI_TRANSPORT_TCP] = "tcp",
+ [ISCSI_TRANSPORT_ISER] = "iser",
+ },
+ .size = ISCSI_TRANSPORT__MAX
+};
+
+const QEnumLookup IscsiHeaderDigest_lookup = {
+ .array = (const char *const[]) {
+ [QAPI_ISCSI_HEADER_DIGEST_CRC32C] = "crc32c",
+ [QAPI_ISCSI_HEADER_DIGEST_NONE] = "none",
+ [QAPI_ISCSI_HEADER_DIGEST_CRC32C_NONE] = "crc32c-none",
+ [QAPI_ISCSI_HEADER_DIGEST_NONE_CRC32C] = "none-crc32c",
+ },
+ .size = QAPI_ISCSI_HEADER_DIGEST__MAX
+};
+
+void qapi_free_BlockdevOptionsIscsi(BlockdevOptionsIscsi *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsIscsi(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_InetSocketAddressBaseList(InetSocketAddressBaseList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InetSocketAddressBaseList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsRbd(BlockdevOptionsRbd *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsRbd(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsSheepdog(BlockdevOptionsSheepdog *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsSheepdog(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ReplicationMode_lookup = {
+ .array = (const char *const[]) {
+ [REPLICATION_MODE_PRIMARY] = "primary",
+ [REPLICATION_MODE_SECONDARY] = "secondary",
+ },
+ .size = REPLICATION_MODE__MAX
+};
+
+void qapi_free_BlockdevOptionsReplication(BlockdevOptionsReplication *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsReplication(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NFSTransport_lookup = {
+ .array = (const char *const[]) {
+ [NFS_TRANSPORT_INET] = "inet",
+ },
+ .size = NFS_TRANSPORT__MAX
+};
+
+void qapi_free_NFSServer(NFSServer *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NFSServer(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsNfs(BlockdevOptionsNfs *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsNfs(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsCurlBase(BlockdevOptionsCurlBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsCurlBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsCurlHttp(BlockdevOptionsCurlHttp *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsCurlHttp(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsCurlHttps(BlockdevOptionsCurlHttps *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsCurlHttps(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsCurlFtp(BlockdevOptionsCurlFtp *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsCurlFtp(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsCurlFtps(BlockdevOptionsCurlFtps *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsCurlFtps(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsNbd(BlockdevOptionsNbd *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsNbd(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsRaw(BlockdevOptionsRaw *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsRaw(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsVxHS(BlockdevOptionsVxHS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsVxHS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptionsThrottle(BlockdevOptionsThrottle *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptionsThrottle(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevOptions(BlockdevOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevRef(BlockdevRef *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevRef(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevRefOrNull(BlockdevRefOrNull *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevRefOrNull(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsFile(BlockdevCreateOptionsFile *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsFile(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsGluster(BlockdevCreateOptionsGluster *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsGluster(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsLUKS(BlockdevCreateOptionsLUKS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsLUKS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsNfs(BlockdevCreateOptionsNfs *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsNfs(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsParallels(BlockdevCreateOptionsParallels *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsParallels(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsQcow(BlockdevCreateOptionsQcow *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsQcow(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevQcow2Version_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_QCOW2_VERSION_V2] = "v2",
+ [BLOCKDEV_QCOW2_VERSION_V3] = "v3",
+ },
+ .size = BLOCKDEV_QCOW2_VERSION__MAX
+};
+
+void qapi_free_BlockdevCreateOptionsQcow2(BlockdevCreateOptionsQcow2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsQcow2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsQed(BlockdevCreateOptionsQed *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsQed(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsRbd(BlockdevCreateOptionsRbd *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsRbd(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SheepdogRedundancyType_lookup = {
+ .array = (const char *const[]) {
+ [SHEEPDOG_REDUNDANCY_TYPE_FULL] = "full",
+ [SHEEPDOG_REDUNDANCY_TYPE_ERASURE_CODED] = "erasure-coded",
+ },
+ .size = SHEEPDOG_REDUNDANCY_TYPE__MAX
+};
+
+void qapi_free_SheepdogRedundancyFull(SheepdogRedundancyFull *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SheepdogRedundancyFull(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SheepdogRedundancyErasureCoded(SheepdogRedundancyErasureCoded *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SheepdogRedundancyErasureCoded(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SheepdogRedundancy(SheepdogRedundancy *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SheepdogRedundancy(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsSheepdog(BlockdevCreateOptionsSheepdog *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsSheepdog(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsSsh(BlockdevCreateOptionsSsh *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsSsh(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptionsVdi(BlockdevCreateOptionsVdi *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsVdi(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevVhdxSubformat_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_VHDX_SUBFORMAT_DYNAMIC] = "dynamic",
+ [BLOCKDEV_VHDX_SUBFORMAT_FIXED] = "fixed",
+ },
+ .size = BLOCKDEV_VHDX_SUBFORMAT__MAX
+};
+
+void qapi_free_BlockdevCreateOptionsVhdx(BlockdevCreateOptionsVhdx *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsVhdx(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevVpcSubformat_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_VPC_SUBFORMAT_DYNAMIC] = "dynamic",
+ [BLOCKDEV_VPC_SUBFORMAT_FIXED] = "fixed",
+ },
+ .size = BLOCKDEV_VPC_SUBFORMAT__MAX
+};
+
+void qapi_free_BlockdevCreateOptionsVpc(BlockdevCreateOptionsVpc *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptionsVpc(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateNotSupported(BlockdevCreateNotSupported *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateNotSupported(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BlockdevCreateOptions(BlockdevCreateOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevCreateOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup BlockdevChangeReadOnlyMode_lookup = {
+ .array = (const char *const[]) {
+ [BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN] = "retain",
+ [BLOCKDEV_CHANGE_READ_ONLY_MODE_READ_ONLY] = "read-only",
+ [BLOCKDEV_CHANGE_READ_ONLY_MODE_READ_WRITE] = "read-write",
+ },
+ .size = BLOCKDEV_CHANGE_READ_ONLY_MODE__MAX
+};
+
+const QEnumLookup BlockErrorAction_lookup = {
+ .array = (const char *const[]) {
+ [BLOCK_ERROR_ACTION_IGNORE] = "ignore",
+ [BLOCK_ERROR_ACTION_REPORT] = "report",
+ [BLOCK_ERROR_ACTION_STOP] = "stop",
+ },
+ .size = BLOCK_ERROR_ACTION__MAX
+};
+
+const QEnumLookup PreallocMode_lookup = {
+ .array = (const char *const[]) {
+ [PREALLOC_MODE_OFF] = "off",
+ [PREALLOC_MODE_METADATA] = "metadata",
+ [PREALLOC_MODE_FALLOC] = "falloc",
+ [PREALLOC_MODE_FULL] = "full",
+ },
+ .size = PREALLOC_MODE__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_block_core_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-block-core.h b/qemu2-auto-generated/qapi/qapi-types-block-core.h
new file mode 100644
index 0000000000..b19c50a31b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-block-core.h
@@ -0,0 +1,2605 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_BLOCK_CORE_H
+#define QAPI_TYPES_BLOCK_CORE_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-common.h"
+#include "qapi-types-crypto.h"
+#include "qapi-types-sockets.h"
+
+typedef struct SnapshotInfo SnapshotInfo;
+
+typedef struct ImageInfoSpecificQCow2EncryptionBase ImageInfoSpecificQCow2EncryptionBase;
+
+typedef struct ImageInfoSpecificQCow2Encryption ImageInfoSpecificQCow2Encryption;
+
+typedef struct ImageInfoSpecificQCow2 ImageInfoSpecificQCow2;
+
+typedef struct ImageInfoList ImageInfoList;
+
+typedef struct ImageInfoSpecificVmdk ImageInfoSpecificVmdk;
+
+typedef struct q_obj_ImageInfoSpecificQCow2_wrapper q_obj_ImageInfoSpecificQCow2_wrapper;
+
+typedef struct q_obj_ImageInfoSpecificVmdk_wrapper q_obj_ImageInfoSpecificVmdk_wrapper;
+
+typedef struct q_obj_QCryptoBlockInfoLUKS_wrapper q_obj_QCryptoBlockInfoLUKS_wrapper;
+
+typedef enum ImageInfoSpecificKind {
+ IMAGE_INFO_SPECIFIC_KIND_QCOW2 = 0,
+ IMAGE_INFO_SPECIFIC_KIND_VMDK = 1,
+ IMAGE_INFO_SPECIFIC_KIND_LUKS = 2,
+ IMAGE_INFO_SPECIFIC_KIND__MAX = 3,
+} ImageInfoSpecificKind;
+
+#define ImageInfoSpecificKind_str(val) \
+ qapi_enum_lookup(&ImageInfoSpecificKind_lookup, (val))
+
+extern const QEnumLookup ImageInfoSpecificKind_lookup;
+
+typedef struct ImageInfoSpecific ImageInfoSpecific;
+
+typedef struct SnapshotInfoList SnapshotInfoList;
+
+typedef struct ImageInfo ImageInfo;
+
+typedef struct ImageCheck ImageCheck;
+
+typedef struct MapEntry MapEntry;
+
+typedef struct BlockdevCacheInfo BlockdevCacheInfo;
+
+typedef struct BlockDeviceInfo BlockDeviceInfo;
+
+typedef enum BlockDeviceIoStatus {
+ BLOCK_DEVICE_IO_STATUS_OK = 0,
+ BLOCK_DEVICE_IO_STATUS_FAILED = 1,
+ BLOCK_DEVICE_IO_STATUS_NOSPACE = 2,
+ BLOCK_DEVICE_IO_STATUS__MAX = 3,
+} BlockDeviceIoStatus;
+
+#define BlockDeviceIoStatus_str(val) \
+ qapi_enum_lookup(&BlockDeviceIoStatus_lookup, (val))
+
+extern const QEnumLookup BlockDeviceIoStatus_lookup;
+
+typedef struct BlockDeviceMapEntry BlockDeviceMapEntry;
+
+typedef enum DirtyBitmapStatus {
+ DIRTY_BITMAP_STATUS_ACTIVE = 0,
+ DIRTY_BITMAP_STATUS_DISABLED = 1,
+ DIRTY_BITMAP_STATUS_FROZEN = 2,
+ DIRTY_BITMAP_STATUS_LOCKED = 3,
+ DIRTY_BITMAP_STATUS__MAX = 4,
+} DirtyBitmapStatus;
+
+#define DirtyBitmapStatus_str(val) \
+ qapi_enum_lookup(&DirtyBitmapStatus_lookup, (val))
+
+extern const QEnumLookup DirtyBitmapStatus_lookup;
+
+typedef struct BlockDirtyInfo BlockDirtyInfo;
+
+typedef struct BlockLatencyHistogramInfo BlockLatencyHistogramInfo;
+
+typedef struct q_obj_x_block_latency_histogram_set_arg q_obj_x_block_latency_histogram_set_arg;
+
+typedef struct BlockDirtyInfoList BlockDirtyInfoList;
+
+typedef struct BlockInfo BlockInfo;
+
+typedef struct BlockMeasureInfo BlockMeasureInfo;
+
+typedef struct BlockInfoList BlockInfoList;
+
+typedef struct BlockDeviceTimedStats BlockDeviceTimedStats;
+
+typedef struct BlockDeviceTimedStatsList BlockDeviceTimedStatsList;
+
+typedef struct BlockDeviceStats BlockDeviceStats;
+
+typedef struct BlockStats BlockStats;
+
+typedef struct q_obj_query_blockstats_arg q_obj_query_blockstats_arg;
+
+typedef struct BlockStatsList BlockStatsList;
+
+typedef enum BlockdevOnError {
+ BLOCKDEV_ON_ERROR_REPORT = 0,
+ BLOCKDEV_ON_ERROR_IGNORE = 1,
+ BLOCKDEV_ON_ERROR_ENOSPC = 2,
+ BLOCKDEV_ON_ERROR_STOP = 3,
+ BLOCKDEV_ON_ERROR_AUTO = 4,
+ BLOCKDEV_ON_ERROR__MAX = 5,
+} BlockdevOnError;
+
+#define BlockdevOnError_str(val) \
+ qapi_enum_lookup(&BlockdevOnError_lookup, (val))
+
+extern const QEnumLookup BlockdevOnError_lookup;
+
+typedef enum MirrorSyncMode {
+ MIRROR_SYNC_MODE_TOP = 0,
+ MIRROR_SYNC_MODE_FULL = 1,
+ MIRROR_SYNC_MODE_NONE = 2,
+ MIRROR_SYNC_MODE_INCREMENTAL = 3,
+ MIRROR_SYNC_MODE__MAX = 4,
+} MirrorSyncMode;
+
+#define MirrorSyncMode_str(val) \
+ qapi_enum_lookup(&MirrorSyncMode_lookup, (val))
+
+extern const QEnumLookup MirrorSyncMode_lookup;
+
+typedef enum BlockJobType {
+ BLOCK_JOB_TYPE_COMMIT = 0,
+ BLOCK_JOB_TYPE_STREAM = 1,
+ BLOCK_JOB_TYPE_MIRROR = 2,
+ BLOCK_JOB_TYPE_BACKUP = 3,
+ BLOCK_JOB_TYPE__MAX = 4,
+} BlockJobType;
+
+#define BlockJobType_str(val) \
+ qapi_enum_lookup(&BlockJobType_lookup, (val))
+
+extern const QEnumLookup BlockJobType_lookup;
+
+typedef enum BlockJobVerb {
+ BLOCK_JOB_VERB_CANCEL = 0,
+ BLOCK_JOB_VERB_PAUSE = 1,
+ BLOCK_JOB_VERB_RESUME = 2,
+ BLOCK_JOB_VERB_SET_SPEED = 3,
+ BLOCK_JOB_VERB_COMPLETE = 4,
+ BLOCK_JOB_VERB_DISMISS = 5,
+ BLOCK_JOB_VERB_FINALIZE = 6,
+ BLOCK_JOB_VERB__MAX = 7,
+} BlockJobVerb;
+
+#define BlockJobVerb_str(val) \
+ qapi_enum_lookup(&BlockJobVerb_lookup, (val))
+
+extern const QEnumLookup BlockJobVerb_lookup;
+
+typedef enum BlockJobStatus {
+ BLOCK_JOB_STATUS_UNDEFINED = 0,
+ BLOCK_JOB_STATUS_CREATED = 1,
+ BLOCK_JOB_STATUS_RUNNING = 2,
+ BLOCK_JOB_STATUS_PAUSED = 3,
+ BLOCK_JOB_STATUS_READY = 4,
+ BLOCK_JOB_STATUS_STANDBY = 5,
+ BLOCK_JOB_STATUS_WAITING = 6,
+ BLOCK_JOB_STATUS_PENDING = 7,
+ BLOCK_JOB_STATUS_ABORTING = 8,
+ BLOCK_JOB_STATUS_CONCLUDED = 9,
+ BLOCK_JOB_STATUS_NULL = 10,
+ BLOCK_JOB_STATUS__MAX = 11,
+} BlockJobStatus;
+
+#define BlockJobStatus_str(val) \
+ qapi_enum_lookup(&BlockJobStatus_lookup, (val))
+
+extern const QEnumLookup BlockJobStatus_lookup;
+
+typedef struct BlockJobInfo BlockJobInfo;
+
+typedef struct BlockJobInfoList BlockJobInfoList;
+
+typedef struct q_obj_block_passwd_arg q_obj_block_passwd_arg;
+
+typedef struct q_obj_block_resize_arg q_obj_block_resize_arg;
+
+typedef enum NewImageMode {
+ NEW_IMAGE_MODE_EXISTING = 0,
+ NEW_IMAGE_MODE_ABSOLUTE_PATHS = 1,
+ NEW_IMAGE_MODE__MAX = 2,
+} NewImageMode;
+
+#define NewImageMode_str(val) \
+ qapi_enum_lookup(&NewImageMode_lookup, (val))
+
+extern const QEnumLookup NewImageMode_lookup;
+
+typedef struct BlockdevSnapshotSync BlockdevSnapshotSync;
+
+typedef struct BlockdevSnapshot BlockdevSnapshot;
+
+typedef struct DriveBackup DriveBackup;
+
+typedef struct BlockdevBackup BlockdevBackup;
+
+typedef struct q_obj_change_backing_file_arg q_obj_change_backing_file_arg;
+
+typedef struct q_obj_block_commit_arg q_obj_block_commit_arg;
+
+typedef struct BlockDeviceInfoList BlockDeviceInfoList;
+
+typedef struct DriveMirror DriveMirror;
+
+typedef struct BlockDirtyBitmap BlockDirtyBitmap;
+
+typedef struct BlockDirtyBitmapAdd BlockDirtyBitmapAdd;
+
+typedef struct BlockDirtyBitmapSha256 BlockDirtyBitmapSha256;
+
+typedef struct q_obj_blockdev_mirror_arg q_obj_blockdev_mirror_arg;
+
+typedef struct BlockIOThrottle BlockIOThrottle;
+
+typedef struct ThrottleLimits ThrottleLimits;
+
+typedef struct q_obj_block_stream_arg q_obj_block_stream_arg;
+
+typedef struct q_obj_block_job_set_speed_arg q_obj_block_job_set_speed_arg;
+
+typedef struct q_obj_block_job_cancel_arg q_obj_block_job_cancel_arg;
+
+typedef struct q_obj_block_job_pause_arg q_obj_block_job_pause_arg;
+
+typedef struct q_obj_block_job_resume_arg q_obj_block_job_resume_arg;
+
+typedef struct q_obj_block_job_complete_arg q_obj_block_job_complete_arg;
+
+typedef struct q_obj_block_job_dismiss_arg q_obj_block_job_dismiss_arg;
+
+typedef struct q_obj_block_job_finalize_arg q_obj_block_job_finalize_arg;
+
+typedef enum BlockdevDiscardOptions {
+ BLOCKDEV_DISCARD_OPTIONS_IGNORE = 0,
+ BLOCKDEV_DISCARD_OPTIONS_UNMAP = 1,
+ BLOCKDEV_DISCARD_OPTIONS__MAX = 2,
+} BlockdevDiscardOptions;
+
+#define BlockdevDiscardOptions_str(val) \
+ qapi_enum_lookup(&BlockdevDiscardOptions_lookup, (val))
+
+extern const QEnumLookup BlockdevDiscardOptions_lookup;
+
+typedef enum BlockdevDetectZeroesOptions {
+ BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF = 0,
+ BLOCKDEV_DETECT_ZEROES_OPTIONS_ON = 1,
+ BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP = 2,
+ BLOCKDEV_DETECT_ZEROES_OPTIONS__MAX = 3,
+} BlockdevDetectZeroesOptions;
+
+#define BlockdevDetectZeroesOptions_str(val) \
+ qapi_enum_lookup(&BlockdevDetectZeroesOptions_lookup, (val))
+
+extern const QEnumLookup BlockdevDetectZeroesOptions_lookup;
+
+typedef enum BlockdevAioOptions {
+ BLOCKDEV_AIO_OPTIONS_THREADS = 0,
+ BLOCKDEV_AIO_OPTIONS_NATIVE = 1,
+ BLOCKDEV_AIO_OPTIONS__MAX = 2,
+} BlockdevAioOptions;
+
+#define BlockdevAioOptions_str(val) \
+ qapi_enum_lookup(&BlockdevAioOptions_lookup, (val))
+
+extern const QEnumLookup BlockdevAioOptions_lookup;
+
+typedef struct BlockdevCacheOptions BlockdevCacheOptions;
+
+typedef enum BlockdevDriver {
+ BLOCKDEV_DRIVER_BLKDEBUG = 0,
+ BLOCKDEV_DRIVER_BLKVERIFY = 1,
+ BLOCKDEV_DRIVER_BOCHS = 2,
+ BLOCKDEV_DRIVER_CLOOP = 3,
+ BLOCKDEV_DRIVER_DMG = 4,
+ BLOCKDEV_DRIVER_FILE = 5,
+ BLOCKDEV_DRIVER_FTP = 6,
+ BLOCKDEV_DRIVER_FTPS = 7,
+ BLOCKDEV_DRIVER_GLUSTER = 8,
+ BLOCKDEV_DRIVER_HOST_CDROM = 9,
+ BLOCKDEV_DRIVER_HOST_DEVICE = 10,
+ BLOCKDEV_DRIVER_HTTP = 11,
+ BLOCKDEV_DRIVER_HTTPS = 12,
+ BLOCKDEV_DRIVER_ISCSI = 13,
+ BLOCKDEV_DRIVER_LUKS = 14,
+ BLOCKDEV_DRIVER_NBD = 15,
+ BLOCKDEV_DRIVER_NFS = 16,
+ BLOCKDEV_DRIVER_NULL_AIO = 17,
+ BLOCKDEV_DRIVER_NULL_CO = 18,
+ BLOCKDEV_DRIVER_NVME = 19,
+ BLOCKDEV_DRIVER_PARALLELS = 20,
+ BLOCKDEV_DRIVER_QCOW = 21,
+ BLOCKDEV_DRIVER_QCOW2 = 22,
+ BLOCKDEV_DRIVER_QED = 23,
+ BLOCKDEV_DRIVER_QUORUM = 24,
+ BLOCKDEV_DRIVER_RAW = 25,
+ BLOCKDEV_DRIVER_RBD = 26,
+ BLOCKDEV_DRIVER_REPLICATION = 27,
+ BLOCKDEV_DRIVER_SHEEPDOG = 28,
+ BLOCKDEV_DRIVER_SSH = 29,
+ BLOCKDEV_DRIVER_THROTTLE = 30,
+ BLOCKDEV_DRIVER_VDI = 31,
+ BLOCKDEV_DRIVER_VHDX = 32,
+ BLOCKDEV_DRIVER_VMDK = 33,
+ BLOCKDEV_DRIVER_VPC = 34,
+ BLOCKDEV_DRIVER_VVFAT = 35,
+ BLOCKDEV_DRIVER_VXHS = 36,
+ BLOCKDEV_DRIVER__MAX = 37,
+} BlockdevDriver;
+
+#define BlockdevDriver_str(val) \
+ qapi_enum_lookup(&BlockdevDriver_lookup, (val))
+
+extern const QEnumLookup BlockdevDriver_lookup;
+
+typedef struct BlockdevOptionsFile BlockdevOptionsFile;
+
+typedef struct BlockdevOptionsNull BlockdevOptionsNull;
+
+typedef struct BlockdevOptionsNVMe BlockdevOptionsNVMe;
+
+typedef struct BlockdevOptionsVVFAT BlockdevOptionsVVFAT;
+
+typedef struct BlockdevOptionsGenericFormat BlockdevOptionsGenericFormat;
+
+typedef struct BlockdevOptionsLUKS BlockdevOptionsLUKS;
+
+typedef struct BlockdevOptionsGenericCOWFormat BlockdevOptionsGenericCOWFormat;
+
+typedef enum Qcow2OverlapCheckMode {
+ QCOW2_OVERLAP_CHECK_MODE_NONE = 0,
+ QCOW2_OVERLAP_CHECK_MODE_CONSTANT = 1,
+ QCOW2_OVERLAP_CHECK_MODE_CACHED = 2,
+ QCOW2_OVERLAP_CHECK_MODE_ALL = 3,
+ QCOW2_OVERLAP_CHECK_MODE__MAX = 4,
+} Qcow2OverlapCheckMode;
+
+#define Qcow2OverlapCheckMode_str(val) \
+ qapi_enum_lookup(&Qcow2OverlapCheckMode_lookup, (val))
+
+extern const QEnumLookup Qcow2OverlapCheckMode_lookup;
+
+typedef struct Qcow2OverlapCheckFlags Qcow2OverlapCheckFlags;
+
+typedef struct Qcow2OverlapChecks Qcow2OverlapChecks;
+
+typedef enum BlockdevQcowEncryptionFormat {
+ BLOCKDEV_QCOW_ENCRYPTION_FORMAT_AES = 0,
+ BLOCKDEV_QCOW_ENCRYPTION_FORMAT__MAX = 1,
+} BlockdevQcowEncryptionFormat;
+
+#define BlockdevQcowEncryptionFormat_str(val) \
+ qapi_enum_lookup(&BlockdevQcowEncryptionFormat_lookup, (val))
+
+extern const QEnumLookup BlockdevQcowEncryptionFormat_lookup;
+
+typedef struct q_obj_BlockdevQcowEncryption_base q_obj_BlockdevQcowEncryption_base;
+
+typedef struct BlockdevQcowEncryption BlockdevQcowEncryption;
+
+typedef struct BlockdevOptionsQcow BlockdevOptionsQcow;
+
+typedef enum BlockdevQcow2EncryptionFormat {
+ BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_AES = 0,
+ BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_LUKS = 1,
+ BLOCKDEV_QCOW2_ENCRYPTION_FORMAT__MAX = 2,
+} BlockdevQcow2EncryptionFormat;
+
+#define BlockdevQcow2EncryptionFormat_str(val) \
+ qapi_enum_lookup(&BlockdevQcow2EncryptionFormat_lookup, (val))
+
+extern const QEnumLookup BlockdevQcow2EncryptionFormat_lookup;
+
+typedef struct q_obj_BlockdevQcow2Encryption_base q_obj_BlockdevQcow2Encryption_base;
+
+typedef struct BlockdevQcow2Encryption BlockdevQcow2Encryption;
+
+typedef struct BlockdevOptionsQcow2 BlockdevOptionsQcow2;
+
+typedef enum SshHostKeyCheckMode {
+ SSH_HOST_KEY_CHECK_MODE_NONE = 0,
+ SSH_HOST_KEY_CHECK_MODE_HASH = 1,
+ SSH_HOST_KEY_CHECK_MODE_KNOWN_HOSTS = 2,
+ SSH_HOST_KEY_CHECK_MODE__MAX = 3,
+} SshHostKeyCheckMode;
+
+#define SshHostKeyCheckMode_str(val) \
+ qapi_enum_lookup(&SshHostKeyCheckMode_lookup, (val))
+
+extern const QEnumLookup SshHostKeyCheckMode_lookup;
+
+typedef enum SshHostKeyCheckHashType {
+ SSH_HOST_KEY_CHECK_HASH_TYPE_MD5 = 0,
+ SSH_HOST_KEY_CHECK_HASH_TYPE_SHA1 = 1,
+ SSH_HOST_KEY_CHECK_HASH_TYPE__MAX = 2,
+} SshHostKeyCheckHashType;
+
+#define SshHostKeyCheckHashType_str(val) \
+ qapi_enum_lookup(&SshHostKeyCheckHashType_lookup, (val))
+
+extern const QEnumLookup SshHostKeyCheckHashType_lookup;
+
+typedef struct SshHostKeyHash SshHostKeyHash;
+
+typedef struct SshHostKeyDummy SshHostKeyDummy;
+
+typedef struct q_obj_SshHostKeyCheck_base q_obj_SshHostKeyCheck_base;
+
+typedef struct SshHostKeyCheck SshHostKeyCheck;
+
+typedef struct BlockdevOptionsSsh BlockdevOptionsSsh;
+
+typedef enum BlkdebugEvent {
+ BLKDBG_L1_UPDATE = 0,
+ BLKDBG_L1_GROW_ALLOC_TABLE = 1,
+ BLKDBG_L1_GROW_WRITE_TABLE = 2,
+ BLKDBG_L1_GROW_ACTIVATE_TABLE = 3,
+ BLKDBG_L2_LOAD = 4,
+ BLKDBG_L2_UPDATE = 5,
+ BLKDBG_L2_UPDATE_COMPRESSED = 6,
+ BLKDBG_L2_ALLOC_COW_READ = 7,
+ BLKDBG_L2_ALLOC_WRITE = 8,
+ BLKDBG_READ_AIO = 9,
+ BLKDBG_READ_BACKING_AIO = 10,
+ BLKDBG_READ_COMPRESSED = 11,
+ BLKDBG_WRITE_AIO = 12,
+ BLKDBG_WRITE_COMPRESSED = 13,
+ BLKDBG_VMSTATE_LOAD = 14,
+ BLKDBG_VMSTATE_SAVE = 15,
+ BLKDBG_COW_READ = 16,
+ BLKDBG_COW_WRITE = 17,
+ BLKDBG_REFTABLE_LOAD = 18,
+ BLKDBG_REFTABLE_GROW = 19,
+ BLKDBG_REFTABLE_UPDATE = 20,
+ BLKDBG_REFBLOCK_LOAD = 21,
+ BLKDBG_REFBLOCK_UPDATE = 22,
+ BLKDBG_REFBLOCK_UPDATE_PART = 23,
+ BLKDBG_REFBLOCK_ALLOC = 24,
+ BLKDBG_REFBLOCK_ALLOC_HOOKUP = 25,
+ BLKDBG_REFBLOCK_ALLOC_WRITE = 26,
+ BLKDBG_REFBLOCK_ALLOC_WRITE_BLOCKS = 27,
+ BLKDBG_REFBLOCK_ALLOC_WRITE_TABLE = 28,
+ BLKDBG_REFBLOCK_ALLOC_SWITCH_TABLE = 29,
+ BLKDBG_CLUSTER_ALLOC = 30,
+ BLKDBG_CLUSTER_ALLOC_BYTES = 31,
+ BLKDBG_CLUSTER_FREE = 32,
+ BLKDBG_FLUSH_TO_OS = 33,
+ BLKDBG_FLUSH_TO_DISK = 34,
+ BLKDBG_PWRITEV_RMW_HEAD = 35,
+ BLKDBG_PWRITEV_RMW_AFTER_HEAD = 36,
+ BLKDBG_PWRITEV_RMW_TAIL = 37,
+ BLKDBG_PWRITEV_RMW_AFTER_TAIL = 38,
+ BLKDBG_PWRITEV = 39,
+ BLKDBG_PWRITEV_ZERO = 40,
+ BLKDBG_PWRITEV_DONE = 41,
+ BLKDBG_EMPTY_IMAGE_PREPARE = 42,
+ BLKDBG_L1_SHRINK_WRITE_TABLE = 43,
+ BLKDBG_L1_SHRINK_FREE_L2_CLUSTERS = 44,
+ BLKDBG_COR_WRITE = 45,
+ BLKDBG__MAX = 46,
+} BlkdebugEvent;
+
+#define BlkdebugEvent_str(val) \
+ qapi_enum_lookup(&BlkdebugEvent_lookup, (val))
+
+extern const QEnumLookup BlkdebugEvent_lookup;
+
+typedef struct BlkdebugInjectErrorOptions BlkdebugInjectErrorOptions;
+
+typedef struct BlkdebugSetStateOptions BlkdebugSetStateOptions;
+
+typedef struct BlkdebugInjectErrorOptionsList BlkdebugInjectErrorOptionsList;
+
+typedef struct BlkdebugSetStateOptionsList BlkdebugSetStateOptionsList;
+
+typedef struct BlockdevOptionsBlkdebug BlockdevOptionsBlkdebug;
+
+typedef struct BlockdevOptionsBlkverify BlockdevOptionsBlkverify;
+
+typedef enum QuorumReadPattern {
+ QUORUM_READ_PATTERN_QUORUM = 0,
+ QUORUM_READ_PATTERN_FIFO = 1,
+ QUORUM_READ_PATTERN__MAX = 2,
+} QuorumReadPattern;
+
+#define QuorumReadPattern_str(val) \
+ qapi_enum_lookup(&QuorumReadPattern_lookup, (val))
+
+extern const QEnumLookup QuorumReadPattern_lookup;
+
+typedef struct BlockdevRefList BlockdevRefList;
+
+typedef struct BlockdevOptionsQuorum BlockdevOptionsQuorum;
+
+typedef struct SocketAddressList SocketAddressList;
+
+typedef struct BlockdevOptionsGluster BlockdevOptionsGluster;
+
+typedef enum IscsiTransport {
+ ISCSI_TRANSPORT_TCP = 0,
+ ISCSI_TRANSPORT_ISER = 1,
+ ISCSI_TRANSPORT__MAX = 2,
+} IscsiTransport;
+
+#define IscsiTransport_str(val) \
+ qapi_enum_lookup(&IscsiTransport_lookup, (val))
+
+extern const QEnumLookup IscsiTransport_lookup;
+
+typedef enum IscsiHeaderDigest {
+ QAPI_ISCSI_HEADER_DIGEST_CRC32C = 0,
+ QAPI_ISCSI_HEADER_DIGEST_NONE = 1,
+ QAPI_ISCSI_HEADER_DIGEST_CRC32C_NONE = 2,
+ QAPI_ISCSI_HEADER_DIGEST_NONE_CRC32C = 3,
+ QAPI_ISCSI_HEADER_DIGEST__MAX = 4,
+} IscsiHeaderDigest;
+
+#define IscsiHeaderDigest_str(val) \
+ qapi_enum_lookup(&IscsiHeaderDigest_lookup, (val))
+
+extern const QEnumLookup IscsiHeaderDigest_lookup;
+
+typedef struct BlockdevOptionsIscsi BlockdevOptionsIscsi;
+
+typedef struct InetSocketAddressBaseList InetSocketAddressBaseList;
+
+typedef struct BlockdevOptionsRbd BlockdevOptionsRbd;
+
+typedef struct BlockdevOptionsSheepdog BlockdevOptionsSheepdog;
+
+typedef enum ReplicationMode {
+ REPLICATION_MODE_PRIMARY = 0,
+ REPLICATION_MODE_SECONDARY = 1,
+ REPLICATION_MODE__MAX = 2,
+} ReplicationMode;
+
+#define ReplicationMode_str(val) \
+ qapi_enum_lookup(&ReplicationMode_lookup, (val))
+
+extern const QEnumLookup ReplicationMode_lookup;
+
+typedef struct BlockdevOptionsReplication BlockdevOptionsReplication;
+
+typedef enum NFSTransport {
+ NFS_TRANSPORT_INET = 0,
+ NFS_TRANSPORT__MAX = 1,
+} NFSTransport;
+
+#define NFSTransport_str(val) \
+ qapi_enum_lookup(&NFSTransport_lookup, (val))
+
+extern const QEnumLookup NFSTransport_lookup;
+
+typedef struct NFSServer NFSServer;
+
+typedef struct BlockdevOptionsNfs BlockdevOptionsNfs;
+
+typedef struct BlockdevOptionsCurlBase BlockdevOptionsCurlBase;
+
+typedef struct BlockdevOptionsCurlHttp BlockdevOptionsCurlHttp;
+
+typedef struct BlockdevOptionsCurlHttps BlockdevOptionsCurlHttps;
+
+typedef struct BlockdevOptionsCurlFtp BlockdevOptionsCurlFtp;
+
+typedef struct BlockdevOptionsCurlFtps BlockdevOptionsCurlFtps;
+
+typedef struct BlockdevOptionsNbd BlockdevOptionsNbd;
+
+typedef struct BlockdevOptionsRaw BlockdevOptionsRaw;
+
+typedef struct BlockdevOptionsVxHS BlockdevOptionsVxHS;
+
+typedef struct BlockdevOptionsThrottle BlockdevOptionsThrottle;
+
+typedef struct q_obj_BlockdevOptions_base q_obj_BlockdevOptions_base;
+
+typedef struct BlockdevOptions BlockdevOptions;
+
+typedef struct BlockdevRef BlockdevRef;
+
+typedef struct BlockdevRefOrNull BlockdevRefOrNull;
+
+typedef struct q_obj_blockdev_del_arg q_obj_blockdev_del_arg;
+
+typedef struct BlockdevCreateOptionsFile BlockdevCreateOptionsFile;
+
+typedef struct BlockdevCreateOptionsGluster BlockdevCreateOptionsGluster;
+
+typedef struct BlockdevCreateOptionsLUKS BlockdevCreateOptionsLUKS;
+
+typedef struct BlockdevCreateOptionsNfs BlockdevCreateOptionsNfs;
+
+typedef struct BlockdevCreateOptionsParallels BlockdevCreateOptionsParallels;
+
+typedef struct BlockdevCreateOptionsQcow BlockdevCreateOptionsQcow;
+
+typedef enum BlockdevQcow2Version {
+ BLOCKDEV_QCOW2_VERSION_V2 = 0,
+ BLOCKDEV_QCOW2_VERSION_V3 = 1,
+ BLOCKDEV_QCOW2_VERSION__MAX = 2,
+} BlockdevQcow2Version;
+
+#define BlockdevQcow2Version_str(val) \
+ qapi_enum_lookup(&BlockdevQcow2Version_lookup, (val))
+
+extern const QEnumLookup BlockdevQcow2Version_lookup;
+
+typedef struct BlockdevCreateOptionsQcow2 BlockdevCreateOptionsQcow2;
+
+typedef struct BlockdevCreateOptionsQed BlockdevCreateOptionsQed;
+
+typedef struct BlockdevCreateOptionsRbd BlockdevCreateOptionsRbd;
+
+typedef enum SheepdogRedundancyType {
+ SHEEPDOG_REDUNDANCY_TYPE_FULL = 0,
+ SHEEPDOG_REDUNDANCY_TYPE_ERASURE_CODED = 1,
+ SHEEPDOG_REDUNDANCY_TYPE__MAX = 2,
+} SheepdogRedundancyType;
+
+#define SheepdogRedundancyType_str(val) \
+ qapi_enum_lookup(&SheepdogRedundancyType_lookup, (val))
+
+extern const QEnumLookup SheepdogRedundancyType_lookup;
+
+typedef struct SheepdogRedundancyFull SheepdogRedundancyFull;
+
+typedef struct SheepdogRedundancyErasureCoded SheepdogRedundancyErasureCoded;
+
+typedef struct q_obj_SheepdogRedundancy_base q_obj_SheepdogRedundancy_base;
+
+typedef struct SheepdogRedundancy SheepdogRedundancy;
+
+typedef struct BlockdevCreateOptionsSheepdog BlockdevCreateOptionsSheepdog;
+
+typedef struct BlockdevCreateOptionsSsh BlockdevCreateOptionsSsh;
+
+typedef struct BlockdevCreateOptionsVdi BlockdevCreateOptionsVdi;
+
+typedef enum BlockdevVhdxSubformat {
+ BLOCKDEV_VHDX_SUBFORMAT_DYNAMIC = 0,
+ BLOCKDEV_VHDX_SUBFORMAT_FIXED = 1,
+ BLOCKDEV_VHDX_SUBFORMAT__MAX = 2,
+} BlockdevVhdxSubformat;
+
+#define BlockdevVhdxSubformat_str(val) \
+ qapi_enum_lookup(&BlockdevVhdxSubformat_lookup, (val))
+
+extern const QEnumLookup BlockdevVhdxSubformat_lookup;
+
+typedef struct BlockdevCreateOptionsVhdx BlockdevCreateOptionsVhdx;
+
+typedef enum BlockdevVpcSubformat {
+ BLOCKDEV_VPC_SUBFORMAT_DYNAMIC = 0,
+ BLOCKDEV_VPC_SUBFORMAT_FIXED = 1,
+ BLOCKDEV_VPC_SUBFORMAT__MAX = 2,
+} BlockdevVpcSubformat;
+
+#define BlockdevVpcSubformat_str(val) \
+ qapi_enum_lookup(&BlockdevVpcSubformat_lookup, (val))
+
+extern const QEnumLookup BlockdevVpcSubformat_lookup;
+
+typedef struct BlockdevCreateOptionsVpc BlockdevCreateOptionsVpc;
+
+typedef struct BlockdevCreateNotSupported BlockdevCreateNotSupported;
+
+typedef struct q_obj_BlockdevCreateOptions_base q_obj_BlockdevCreateOptions_base;
+
+typedef struct BlockdevCreateOptions BlockdevCreateOptions;
+
+typedef struct q_obj_blockdev_open_tray_arg q_obj_blockdev_open_tray_arg;
+
+typedef struct q_obj_blockdev_close_tray_arg q_obj_blockdev_close_tray_arg;
+
+typedef struct q_obj_blockdev_remove_medium_arg q_obj_blockdev_remove_medium_arg;
+
+typedef struct q_obj_blockdev_insert_medium_arg q_obj_blockdev_insert_medium_arg;
+
+typedef enum BlockdevChangeReadOnlyMode {
+ BLOCKDEV_CHANGE_READ_ONLY_MODE_RETAIN = 0,
+ BLOCKDEV_CHANGE_READ_ONLY_MODE_READ_ONLY = 1,
+ BLOCKDEV_CHANGE_READ_ONLY_MODE_READ_WRITE = 2,
+ BLOCKDEV_CHANGE_READ_ONLY_MODE__MAX = 3,
+} BlockdevChangeReadOnlyMode;
+
+#define BlockdevChangeReadOnlyMode_str(val) \
+ qapi_enum_lookup(&BlockdevChangeReadOnlyMode_lookup, (val))
+
+extern const QEnumLookup BlockdevChangeReadOnlyMode_lookup;
+
+typedef struct q_obj_blockdev_change_medium_arg q_obj_blockdev_change_medium_arg;
+
+typedef enum BlockErrorAction {
+ BLOCK_ERROR_ACTION_IGNORE = 0,
+ BLOCK_ERROR_ACTION_REPORT = 1,
+ BLOCK_ERROR_ACTION_STOP = 2,
+ BLOCK_ERROR_ACTION__MAX = 3,
+} BlockErrorAction;
+
+#define BlockErrorAction_str(val) \
+ qapi_enum_lookup(&BlockErrorAction_lookup, (val))
+
+extern const QEnumLookup BlockErrorAction_lookup;
+
+typedef struct q_obj_BLOCK_IMAGE_CORRUPTED_arg q_obj_BLOCK_IMAGE_CORRUPTED_arg;
+
+typedef struct q_obj_BLOCK_IO_ERROR_arg q_obj_BLOCK_IO_ERROR_arg;
+
+typedef struct q_obj_BLOCK_JOB_COMPLETED_arg q_obj_BLOCK_JOB_COMPLETED_arg;
+
+typedef struct q_obj_BLOCK_JOB_CANCELLED_arg q_obj_BLOCK_JOB_CANCELLED_arg;
+
+typedef struct q_obj_BLOCK_JOB_ERROR_arg q_obj_BLOCK_JOB_ERROR_arg;
+
+typedef struct q_obj_BLOCK_JOB_READY_arg q_obj_BLOCK_JOB_READY_arg;
+
+typedef struct q_obj_BLOCK_JOB_PENDING_arg q_obj_BLOCK_JOB_PENDING_arg;
+
+typedef enum PreallocMode {
+ PREALLOC_MODE_OFF = 0,
+ PREALLOC_MODE_METADATA = 1,
+ PREALLOC_MODE_FALLOC = 2,
+ PREALLOC_MODE_FULL = 3,
+ PREALLOC_MODE__MAX = 4,
+} PreallocMode;
+
+#define PreallocMode_str(val) \
+ qapi_enum_lookup(&PreallocMode_lookup, (val))
+
+extern const QEnumLookup PreallocMode_lookup;
+
+typedef struct q_obj_BLOCK_WRITE_THRESHOLD_arg q_obj_BLOCK_WRITE_THRESHOLD_arg;
+
+typedef struct q_obj_block_set_write_threshold_arg q_obj_block_set_write_threshold_arg;
+
+typedef struct q_obj_x_blockdev_change_arg q_obj_x_blockdev_change_arg;
+
+typedef struct q_obj_x_blockdev_set_iothread_arg q_obj_x_blockdev_set_iothread_arg;
+
+struct SnapshotInfo {
+ char *id;
+ char *name;
+ int64_t vm_state_size;
+ int64_t date_sec;
+ int64_t date_nsec;
+ int64_t vm_clock_sec;
+ int64_t vm_clock_nsec;
+};
+
+void qapi_free_SnapshotInfo(SnapshotInfo *obj);
+
+struct ImageInfoSpecificQCow2EncryptionBase {
+ BlockdevQcow2EncryptionFormat format;
+};
+
+void qapi_free_ImageInfoSpecificQCow2EncryptionBase(ImageInfoSpecificQCow2EncryptionBase *obj);
+
+struct ImageInfoSpecificQCow2Encryption {
+ /* Members inherited from ImageInfoSpecificQCow2EncryptionBase: */
+ BlockdevQcow2EncryptionFormat format;
+ /* Own members: */
+ union { /* union tag is @format */
+ QCryptoBlockInfoQCow aes;
+ QCryptoBlockInfoLUKS luks;
+ } u;
+};
+
+static inline ImageInfoSpecificQCow2EncryptionBase *qapi_ImageInfoSpecificQCow2Encryption_base(const ImageInfoSpecificQCow2Encryption *obj)
+{
+ return (ImageInfoSpecificQCow2EncryptionBase *)obj;
+}
+
+void qapi_free_ImageInfoSpecificQCow2Encryption(ImageInfoSpecificQCow2Encryption *obj);
+
+struct ImageInfoSpecificQCow2 {
+ char *compat;
+ bool has_lazy_refcounts;
+ bool lazy_refcounts;
+ bool has_corrupt;
+ bool corrupt;
+ int64_t refcount_bits;
+ bool has_encrypt;
+ ImageInfoSpecificQCow2Encryption *encrypt;
+};
+
+void qapi_free_ImageInfoSpecificQCow2(ImageInfoSpecificQCow2 *obj);
+
+struct ImageInfoList {
+ ImageInfoList *next;
+ ImageInfo *value;
+};
+
+void qapi_free_ImageInfoList(ImageInfoList *obj);
+
+struct ImageInfoSpecificVmdk {
+ char *create_type;
+ int64_t cid;
+ int64_t parent_cid;
+ ImageInfoList *extents;
+};
+
+void qapi_free_ImageInfoSpecificVmdk(ImageInfoSpecificVmdk *obj);
+
+struct q_obj_ImageInfoSpecificQCow2_wrapper {
+ ImageInfoSpecificQCow2 *data;
+};
+
+struct q_obj_ImageInfoSpecificVmdk_wrapper {
+ ImageInfoSpecificVmdk *data;
+};
+
+struct q_obj_QCryptoBlockInfoLUKS_wrapper {
+ QCryptoBlockInfoLUKS *data;
+};
+
+struct ImageInfoSpecific {
+ ImageInfoSpecificKind type;
+ union { /* union tag is @type */
+ q_obj_ImageInfoSpecificQCow2_wrapper qcow2;
+ q_obj_ImageInfoSpecificVmdk_wrapper vmdk;
+ q_obj_QCryptoBlockInfoLUKS_wrapper luks;
+ } u;
+};
+
+void qapi_free_ImageInfoSpecific(ImageInfoSpecific *obj);
+
+struct SnapshotInfoList {
+ SnapshotInfoList *next;
+ SnapshotInfo *value;
+};
+
+void qapi_free_SnapshotInfoList(SnapshotInfoList *obj);
+
+struct ImageInfo {
+ char *filename;
+ char *format;
+ bool has_dirty_flag;
+ bool dirty_flag;
+ bool has_actual_size;
+ int64_t actual_size;
+ int64_t virtual_size;
+ bool has_cluster_size;
+ int64_t cluster_size;
+ bool has_encrypted;
+ bool encrypted;
+ bool has_compressed;
+ bool compressed;
+ bool has_backing_filename;
+ char *backing_filename;
+ bool has_full_backing_filename;
+ char *full_backing_filename;
+ bool has_backing_filename_format;
+ char *backing_filename_format;
+ bool has_snapshots;
+ SnapshotInfoList *snapshots;
+ bool has_backing_image;
+ ImageInfo *backing_image;
+ bool has_format_specific;
+ ImageInfoSpecific *format_specific;
+};
+
+void qapi_free_ImageInfo(ImageInfo *obj);
+
+struct ImageCheck {
+ char *filename;
+ char *format;
+ int64_t check_errors;
+ bool has_image_end_offset;
+ int64_t image_end_offset;
+ bool has_corruptions;
+ int64_t corruptions;
+ bool has_leaks;
+ int64_t leaks;
+ bool has_corruptions_fixed;
+ int64_t corruptions_fixed;
+ bool has_leaks_fixed;
+ int64_t leaks_fixed;
+ bool has_total_clusters;
+ int64_t total_clusters;
+ bool has_allocated_clusters;
+ int64_t allocated_clusters;
+ bool has_fragmented_clusters;
+ int64_t fragmented_clusters;
+ bool has_compressed_clusters;
+ int64_t compressed_clusters;
+};
+
+void qapi_free_ImageCheck(ImageCheck *obj);
+
+struct MapEntry {
+ int64_t start;
+ int64_t length;
+ bool data;
+ bool zero;
+ int64_t depth;
+ bool has_offset;
+ int64_t offset;
+ bool has_filename;
+ char *filename;
+};
+
+void qapi_free_MapEntry(MapEntry *obj);
+
+struct BlockdevCacheInfo {
+ bool writeback;
+ bool direct;
+ bool no_flush;
+};
+
+void qapi_free_BlockdevCacheInfo(BlockdevCacheInfo *obj);
+
+struct BlockDeviceInfo {
+ char *file;
+ bool has_node_name;
+ char *node_name;
+ bool ro;
+ char *drv;
+ bool has_backing_file;
+ char *backing_file;
+ int64_t backing_file_depth;
+ bool encrypted;
+ bool encryption_key_missing;
+ BlockdevDetectZeroesOptions detect_zeroes;
+ int64_t bps;
+ int64_t bps_rd;
+ int64_t bps_wr;
+ int64_t iops;
+ int64_t iops_rd;
+ int64_t iops_wr;
+ ImageInfo *image;
+ bool has_bps_max;
+ int64_t bps_max;
+ bool has_bps_rd_max;
+ int64_t bps_rd_max;
+ bool has_bps_wr_max;
+ int64_t bps_wr_max;
+ bool has_iops_max;
+ int64_t iops_max;
+ bool has_iops_rd_max;
+ int64_t iops_rd_max;
+ bool has_iops_wr_max;
+ int64_t iops_wr_max;
+ bool has_bps_max_length;
+ int64_t bps_max_length;
+ bool has_bps_rd_max_length;
+ int64_t bps_rd_max_length;
+ bool has_bps_wr_max_length;
+ int64_t bps_wr_max_length;
+ bool has_iops_max_length;
+ int64_t iops_max_length;
+ bool has_iops_rd_max_length;
+ int64_t iops_rd_max_length;
+ bool has_iops_wr_max_length;
+ int64_t iops_wr_max_length;
+ bool has_iops_size;
+ int64_t iops_size;
+ bool has_group;
+ char *group;
+ BlockdevCacheInfo *cache;
+ int64_t write_threshold;
+};
+
+void qapi_free_BlockDeviceInfo(BlockDeviceInfo *obj);
+
+struct BlockDeviceMapEntry {
+ int64_t start;
+ int64_t length;
+ int64_t depth;
+ bool zero;
+ bool data;
+ bool has_offset;
+ int64_t offset;
+};
+
+void qapi_free_BlockDeviceMapEntry(BlockDeviceMapEntry *obj);
+
+struct BlockDirtyInfo {
+ bool has_name;
+ char *name;
+ int64_t count;
+ uint32_t granularity;
+ DirtyBitmapStatus status;
+};
+
+void qapi_free_BlockDirtyInfo(BlockDirtyInfo *obj);
+
+struct BlockLatencyHistogramInfo {
+ uint64List *boundaries;
+ uint64List *bins;
+};
+
+void qapi_free_BlockLatencyHistogramInfo(BlockLatencyHistogramInfo *obj);
+
+struct q_obj_x_block_latency_histogram_set_arg {
+ char *device;
+ bool has_boundaries;
+ uint64List *boundaries;
+ bool has_boundaries_read;
+ uint64List *boundaries_read;
+ bool has_boundaries_write;
+ uint64List *boundaries_write;
+ bool has_boundaries_flush;
+ uint64List *boundaries_flush;
+};
+
+struct BlockDirtyInfoList {
+ BlockDirtyInfoList *next;
+ BlockDirtyInfo *value;
+};
+
+void qapi_free_BlockDirtyInfoList(BlockDirtyInfoList *obj);
+
+struct BlockInfo {
+ char *device;
+ bool has_qdev;
+ char *qdev;
+ char *type;
+ bool removable;
+ bool locked;
+ bool has_inserted;
+ BlockDeviceInfo *inserted;
+ bool has_tray_open;
+ bool tray_open;
+ bool has_io_status;
+ BlockDeviceIoStatus io_status;
+ bool has_dirty_bitmaps;
+ BlockDirtyInfoList *dirty_bitmaps;
+};
+
+void qapi_free_BlockInfo(BlockInfo *obj);
+
+struct BlockMeasureInfo {
+ int64_t required;
+ int64_t fully_allocated;
+};
+
+void qapi_free_BlockMeasureInfo(BlockMeasureInfo *obj);
+
+struct BlockInfoList {
+ BlockInfoList *next;
+ BlockInfo *value;
+};
+
+void qapi_free_BlockInfoList(BlockInfoList *obj);
+
+struct BlockDeviceTimedStats {
+ int64_t interval_length;
+ int64_t min_rd_latency_ns;
+ int64_t max_rd_latency_ns;
+ int64_t avg_rd_latency_ns;
+ int64_t min_wr_latency_ns;
+ int64_t max_wr_latency_ns;
+ int64_t avg_wr_latency_ns;
+ int64_t min_flush_latency_ns;
+ int64_t max_flush_latency_ns;
+ int64_t avg_flush_latency_ns;
+ double avg_rd_queue_depth;
+ double avg_wr_queue_depth;
+};
+
+void qapi_free_BlockDeviceTimedStats(BlockDeviceTimedStats *obj);
+
+struct BlockDeviceTimedStatsList {
+ BlockDeviceTimedStatsList *next;
+ BlockDeviceTimedStats *value;
+};
+
+void qapi_free_BlockDeviceTimedStatsList(BlockDeviceTimedStatsList *obj);
+
+struct BlockDeviceStats {
+ int64_t rd_bytes;
+ int64_t wr_bytes;
+ int64_t rd_operations;
+ int64_t wr_operations;
+ int64_t flush_operations;
+ int64_t flush_total_time_ns;
+ int64_t wr_total_time_ns;
+ int64_t rd_total_time_ns;
+ int64_t wr_highest_offset;
+ int64_t rd_merged;
+ int64_t wr_merged;
+ bool has_idle_time_ns;
+ int64_t idle_time_ns;
+ int64_t failed_rd_operations;
+ int64_t failed_wr_operations;
+ int64_t failed_flush_operations;
+ int64_t invalid_rd_operations;
+ int64_t invalid_wr_operations;
+ int64_t invalid_flush_operations;
+ bool account_invalid;
+ bool account_failed;
+ BlockDeviceTimedStatsList *timed_stats;
+ bool has_x_rd_latency_histogram;
+ BlockLatencyHistogramInfo *x_rd_latency_histogram;
+ bool has_x_wr_latency_histogram;
+ BlockLatencyHistogramInfo *x_wr_latency_histogram;
+ bool has_x_flush_latency_histogram;
+ BlockLatencyHistogramInfo *x_flush_latency_histogram;
+};
+
+void qapi_free_BlockDeviceStats(BlockDeviceStats *obj);
+
+struct BlockStats {
+ bool has_device;
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ BlockDeviceStats *stats;
+ bool has_parent;
+ BlockStats *parent;
+ bool has_backing;
+ BlockStats *backing;
+};
+
+void qapi_free_BlockStats(BlockStats *obj);
+
+struct q_obj_query_blockstats_arg {
+ bool has_query_nodes;
+ bool query_nodes;
+};
+
+struct BlockStatsList {
+ BlockStatsList *next;
+ BlockStats *value;
+};
+
+void qapi_free_BlockStatsList(BlockStatsList *obj);
+
+struct BlockJobInfo {
+ char *type;
+ char *device;
+ int64_t len;
+ int64_t offset;
+ bool busy;
+ bool paused;
+ int64_t speed;
+ BlockDeviceIoStatus io_status;
+ bool ready;
+ BlockJobStatus status;
+ bool auto_finalize;
+ bool auto_dismiss;
+};
+
+void qapi_free_BlockJobInfo(BlockJobInfo *obj);
+
+struct BlockJobInfoList {
+ BlockJobInfoList *next;
+ BlockJobInfo *value;
+};
+
+void qapi_free_BlockJobInfoList(BlockJobInfoList *obj);
+
+struct q_obj_block_passwd_arg {
+ bool has_device;
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ char *password;
+};
+
+struct q_obj_block_resize_arg {
+ bool has_device;
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ int64_t size;
+};
+
+struct BlockdevSnapshotSync {
+ bool has_device;
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ char *snapshot_file;
+ bool has_snapshot_node_name;
+ char *snapshot_node_name;
+ bool has_format;
+ char *format;
+ bool has_mode;
+ NewImageMode mode;
+};
+
+void qapi_free_BlockdevSnapshotSync(BlockdevSnapshotSync *obj);
+
+struct BlockdevSnapshot {
+ char *node;
+ char *overlay;
+};
+
+void qapi_free_BlockdevSnapshot(BlockdevSnapshot *obj);
+
+struct DriveBackup {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ char *target;
+ bool has_format;
+ char *format;
+ MirrorSyncMode sync;
+ bool has_mode;
+ NewImageMode mode;
+ bool has_speed;
+ int64_t speed;
+ bool has_bitmap;
+ char *bitmap;
+ bool has_compress;
+ bool compress;
+ bool has_on_source_error;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error;
+ BlockdevOnError on_target_error;
+ bool has_auto_finalize;
+ bool auto_finalize;
+ bool has_auto_dismiss;
+ bool auto_dismiss;
+};
+
+void qapi_free_DriveBackup(DriveBackup *obj);
+
+struct BlockdevBackup {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ char *target;
+ MirrorSyncMode sync;
+ bool has_speed;
+ int64_t speed;
+ bool has_compress;
+ bool compress;
+ bool has_on_source_error;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error;
+ BlockdevOnError on_target_error;
+ bool has_auto_finalize;
+ bool auto_finalize;
+ bool has_auto_dismiss;
+ bool auto_dismiss;
+};
+
+void qapi_free_BlockdevBackup(BlockdevBackup *obj);
+
+struct q_obj_change_backing_file_arg {
+ char *device;
+ char *image_node_name;
+ char *backing_file;
+};
+
+struct q_obj_block_commit_arg {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ bool has_base;
+ char *base;
+ bool has_top;
+ char *top;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_speed;
+ int64_t speed;
+ bool has_filter_node_name;
+ char *filter_node_name;
+};
+
+struct BlockDeviceInfoList {
+ BlockDeviceInfoList *next;
+ BlockDeviceInfo *value;
+};
+
+void qapi_free_BlockDeviceInfoList(BlockDeviceInfoList *obj);
+
+struct DriveMirror {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ char *target;
+ bool has_format;
+ char *format;
+ bool has_node_name;
+ char *node_name;
+ bool has_replaces;
+ char *replaces;
+ MirrorSyncMode sync;
+ bool has_mode;
+ NewImageMode mode;
+ bool has_speed;
+ int64_t speed;
+ bool has_granularity;
+ uint32_t granularity;
+ bool has_buf_size;
+ int64_t buf_size;
+ bool has_on_source_error;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error;
+ BlockdevOnError on_target_error;
+ bool has_unmap;
+ bool unmap;
+};
+
+void qapi_free_DriveMirror(DriveMirror *obj);
+
+struct BlockDirtyBitmap {
+ char *node;
+ char *name;
+};
+
+void qapi_free_BlockDirtyBitmap(BlockDirtyBitmap *obj);
+
+struct BlockDirtyBitmapAdd {
+ char *node;
+ char *name;
+ bool has_granularity;
+ uint32_t granularity;
+ bool has_persistent;
+ bool persistent;
+ bool has_autoload;
+ bool autoload;
+};
+
+void qapi_free_BlockDirtyBitmapAdd(BlockDirtyBitmapAdd *obj);
+
+struct BlockDirtyBitmapSha256 {
+ char *sha256;
+};
+
+void qapi_free_BlockDirtyBitmapSha256(BlockDirtyBitmapSha256 *obj);
+
+struct q_obj_blockdev_mirror_arg {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ char *target;
+ bool has_replaces;
+ char *replaces;
+ MirrorSyncMode sync;
+ bool has_speed;
+ int64_t speed;
+ bool has_granularity;
+ uint32_t granularity;
+ bool has_buf_size;
+ int64_t buf_size;
+ bool has_on_source_error;
+ BlockdevOnError on_source_error;
+ bool has_on_target_error;
+ BlockdevOnError on_target_error;
+ bool has_filter_node_name;
+ char *filter_node_name;
+};
+
+struct BlockIOThrottle {
+ bool has_device;
+ char *device;
+ bool has_id;
+ char *id;
+ int64_t bps;
+ int64_t bps_rd;
+ int64_t bps_wr;
+ int64_t iops;
+ int64_t iops_rd;
+ int64_t iops_wr;
+ bool has_bps_max;
+ int64_t bps_max;
+ bool has_bps_rd_max;
+ int64_t bps_rd_max;
+ bool has_bps_wr_max;
+ int64_t bps_wr_max;
+ bool has_iops_max;
+ int64_t iops_max;
+ bool has_iops_rd_max;
+ int64_t iops_rd_max;
+ bool has_iops_wr_max;
+ int64_t iops_wr_max;
+ bool has_bps_max_length;
+ int64_t bps_max_length;
+ bool has_bps_rd_max_length;
+ int64_t bps_rd_max_length;
+ bool has_bps_wr_max_length;
+ int64_t bps_wr_max_length;
+ bool has_iops_max_length;
+ int64_t iops_max_length;
+ bool has_iops_rd_max_length;
+ int64_t iops_rd_max_length;
+ bool has_iops_wr_max_length;
+ int64_t iops_wr_max_length;
+ bool has_iops_size;
+ int64_t iops_size;
+ bool has_group;
+ char *group;
+};
+
+void qapi_free_BlockIOThrottle(BlockIOThrottle *obj);
+
+struct ThrottleLimits {
+ bool has_iops_total;
+ int64_t iops_total;
+ bool has_iops_total_max;
+ int64_t iops_total_max;
+ bool has_iops_total_max_length;
+ int64_t iops_total_max_length;
+ bool has_iops_read;
+ int64_t iops_read;
+ bool has_iops_read_max;
+ int64_t iops_read_max;
+ bool has_iops_read_max_length;
+ int64_t iops_read_max_length;
+ bool has_iops_write;
+ int64_t iops_write;
+ bool has_iops_write_max;
+ int64_t iops_write_max;
+ bool has_iops_write_max_length;
+ int64_t iops_write_max_length;
+ bool has_bps_total;
+ int64_t bps_total;
+ bool has_bps_total_max;
+ int64_t bps_total_max;
+ bool has_bps_total_max_length;
+ int64_t bps_total_max_length;
+ bool has_bps_read;
+ int64_t bps_read;
+ bool has_bps_read_max;
+ int64_t bps_read_max;
+ bool has_bps_read_max_length;
+ int64_t bps_read_max_length;
+ bool has_bps_write;
+ int64_t bps_write;
+ bool has_bps_write_max;
+ int64_t bps_write_max;
+ bool has_bps_write_max_length;
+ int64_t bps_write_max_length;
+ bool has_iops_size;
+ int64_t iops_size;
+};
+
+void qapi_free_ThrottleLimits(ThrottleLimits *obj);
+
+struct q_obj_block_stream_arg {
+ bool has_job_id;
+ char *job_id;
+ char *device;
+ bool has_base;
+ char *base;
+ bool has_base_node;
+ char *base_node;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_speed;
+ int64_t speed;
+ bool has_on_error;
+ BlockdevOnError on_error;
+};
+
+struct q_obj_block_job_set_speed_arg {
+ char *device;
+ int64_t speed;
+};
+
+struct q_obj_block_job_cancel_arg {
+ char *device;
+ bool has_force;
+ bool force;
+};
+
+struct q_obj_block_job_pause_arg {
+ char *device;
+};
+
+struct q_obj_block_job_resume_arg {
+ char *device;
+};
+
+struct q_obj_block_job_complete_arg {
+ char *device;
+};
+
+struct q_obj_block_job_dismiss_arg {
+ char *id;
+};
+
+struct q_obj_block_job_finalize_arg {
+ char *id;
+};
+
+struct BlockdevCacheOptions {
+ bool has_direct;
+ bool direct;
+ bool has_no_flush;
+ bool no_flush;
+};
+
+void qapi_free_BlockdevCacheOptions(BlockdevCacheOptions *obj);
+
+struct BlockdevOptionsFile {
+ char *filename;
+ bool has_pr_manager;
+ char *pr_manager;
+ bool has_locking;
+ OnOffAuto locking;
+ bool has_aio;
+ BlockdevAioOptions aio;
+};
+
+void qapi_free_BlockdevOptionsFile(BlockdevOptionsFile *obj);
+
+struct BlockdevOptionsNull {
+ bool has_size;
+ int64_t size;
+ bool has_latency_ns;
+ uint64_t latency_ns;
+};
+
+void qapi_free_BlockdevOptionsNull(BlockdevOptionsNull *obj);
+
+struct BlockdevOptionsNVMe {
+ char *device;
+ int64_t q_namespace;
+};
+
+void qapi_free_BlockdevOptionsNVMe(BlockdevOptionsNVMe *obj);
+
+struct BlockdevOptionsVVFAT {
+ char *dir;
+ bool has_fat_type;
+ int64_t fat_type;
+ bool has_floppy;
+ bool floppy;
+ bool has_label;
+ char *label;
+ bool has_rw;
+ bool rw;
+};
+
+void qapi_free_BlockdevOptionsVVFAT(BlockdevOptionsVVFAT *obj);
+
+struct BlockdevOptionsGenericFormat {
+ BlockdevRef *file;
+};
+
+void qapi_free_BlockdevOptionsGenericFormat(BlockdevOptionsGenericFormat *obj);
+
+struct BlockdevOptionsLUKS {
+ /* Members inherited from BlockdevOptionsGenericFormat: */
+ BlockdevRef *file;
+ /* Own members: */
+ bool has_key_secret;
+ char *key_secret;
+};
+
+static inline BlockdevOptionsGenericFormat *qapi_BlockdevOptionsLUKS_base(const BlockdevOptionsLUKS *obj)
+{
+ return (BlockdevOptionsGenericFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsLUKS(BlockdevOptionsLUKS *obj);
+
+struct BlockdevOptionsGenericCOWFormat {
+ /* Members inherited from BlockdevOptionsGenericFormat: */
+ BlockdevRef *file;
+ /* Own members: */
+ bool has_backing;
+ BlockdevRefOrNull *backing;
+};
+
+static inline BlockdevOptionsGenericFormat *qapi_BlockdevOptionsGenericCOWFormat_base(const BlockdevOptionsGenericCOWFormat *obj)
+{
+ return (BlockdevOptionsGenericFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsGenericCOWFormat(BlockdevOptionsGenericCOWFormat *obj);
+
+struct Qcow2OverlapCheckFlags {
+ bool has_q_template;
+ Qcow2OverlapCheckMode q_template;
+ bool has_main_header;
+ bool main_header;
+ bool has_active_l1;
+ bool active_l1;
+ bool has_active_l2;
+ bool active_l2;
+ bool has_refcount_table;
+ bool refcount_table;
+ bool has_refcount_block;
+ bool refcount_block;
+ bool has_snapshot_table;
+ bool snapshot_table;
+ bool has_inactive_l1;
+ bool inactive_l1;
+ bool has_inactive_l2;
+ bool inactive_l2;
+};
+
+void qapi_free_Qcow2OverlapCheckFlags(Qcow2OverlapCheckFlags *obj);
+
+struct Qcow2OverlapChecks {
+ QType type;
+ union { /* union tag is @type */
+ Qcow2OverlapCheckFlags flags;
+ Qcow2OverlapCheckMode mode;
+ } u;
+};
+
+void qapi_free_Qcow2OverlapChecks(Qcow2OverlapChecks *obj);
+
+struct q_obj_BlockdevQcowEncryption_base {
+ BlockdevQcowEncryptionFormat format;
+};
+
+struct BlockdevQcowEncryption {
+ BlockdevQcowEncryptionFormat format;
+ union { /* union tag is @format */
+ QCryptoBlockOptionsQCow aes;
+ } u;
+};
+
+void qapi_free_BlockdevQcowEncryption(BlockdevQcowEncryption *obj);
+
+struct BlockdevOptionsQcow {
+ /* Members inherited from BlockdevOptionsGenericCOWFormat: */
+ BlockdevRef *file;
+ bool has_backing;
+ BlockdevRefOrNull *backing;
+ /* Own members: */
+ bool has_encrypt;
+ BlockdevQcowEncryption *encrypt;
+};
+
+static inline BlockdevOptionsGenericCOWFormat *qapi_BlockdevOptionsQcow_base(const BlockdevOptionsQcow *obj)
+{
+ return (BlockdevOptionsGenericCOWFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsQcow(BlockdevOptionsQcow *obj);
+
+struct q_obj_BlockdevQcow2Encryption_base {
+ BlockdevQcow2EncryptionFormat format;
+};
+
+struct BlockdevQcow2Encryption {
+ BlockdevQcow2EncryptionFormat format;
+ union { /* union tag is @format */
+ QCryptoBlockOptionsQCow aes;
+ QCryptoBlockOptionsLUKS luks;
+ } u;
+};
+
+void qapi_free_BlockdevQcow2Encryption(BlockdevQcow2Encryption *obj);
+
+struct BlockdevOptionsQcow2 {
+ /* Members inherited from BlockdevOptionsGenericCOWFormat: */
+ BlockdevRef *file;
+ bool has_backing;
+ BlockdevRefOrNull *backing;
+ /* Own members: */
+ bool has_lazy_refcounts;
+ bool lazy_refcounts;
+ bool has_pass_discard_request;
+ bool pass_discard_request;
+ bool has_pass_discard_snapshot;
+ bool pass_discard_snapshot;
+ bool has_pass_discard_other;
+ bool pass_discard_other;
+ bool has_overlap_check;
+ Qcow2OverlapChecks *overlap_check;
+ bool has_cache_size;
+ int64_t cache_size;
+ bool has_l2_cache_size;
+ int64_t l2_cache_size;
+ bool has_l2_cache_entry_size;
+ int64_t l2_cache_entry_size;
+ bool has_refcount_cache_size;
+ int64_t refcount_cache_size;
+ bool has_cache_clean_interval;
+ int64_t cache_clean_interval;
+ bool has_encrypt;
+ BlockdevQcow2Encryption *encrypt;
+};
+
+static inline BlockdevOptionsGenericCOWFormat *qapi_BlockdevOptionsQcow2_base(const BlockdevOptionsQcow2 *obj)
+{
+ return (BlockdevOptionsGenericCOWFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsQcow2(BlockdevOptionsQcow2 *obj);
+
+struct SshHostKeyHash {
+ SshHostKeyCheckHashType type;
+ char *hash;
+};
+
+void qapi_free_SshHostKeyHash(SshHostKeyHash *obj);
+
+struct SshHostKeyDummy {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_SshHostKeyDummy(SshHostKeyDummy *obj);
+
+struct q_obj_SshHostKeyCheck_base {
+ SshHostKeyCheckMode mode;
+};
+
+struct SshHostKeyCheck {
+ SshHostKeyCheckMode mode;
+ union { /* union tag is @mode */
+ SshHostKeyDummy none;
+ SshHostKeyHash hash;
+ SshHostKeyDummy known_hosts;
+ } u;
+};
+
+void qapi_free_SshHostKeyCheck(SshHostKeyCheck *obj);
+
+struct BlockdevOptionsSsh {
+ InetSocketAddress *server;
+ char *path;
+ bool has_user;
+ char *user;
+ bool has_host_key_check;
+ SshHostKeyCheck *host_key_check;
+};
+
+void qapi_free_BlockdevOptionsSsh(BlockdevOptionsSsh *obj);
+
+struct BlkdebugInjectErrorOptions {
+ BlkdebugEvent event;
+ bool has_state;
+ int64_t state;
+ bool has_q_errno;
+ int64_t q_errno;
+ bool has_sector;
+ int64_t sector;
+ bool has_once;
+ bool once;
+ bool has_immediately;
+ bool immediately;
+};
+
+void qapi_free_BlkdebugInjectErrorOptions(BlkdebugInjectErrorOptions *obj);
+
+struct BlkdebugSetStateOptions {
+ BlkdebugEvent event;
+ bool has_state;
+ int64_t state;
+ int64_t new_state;
+};
+
+void qapi_free_BlkdebugSetStateOptions(BlkdebugSetStateOptions *obj);
+
+struct BlkdebugInjectErrorOptionsList {
+ BlkdebugInjectErrorOptionsList *next;
+ BlkdebugInjectErrorOptions *value;
+};
+
+void qapi_free_BlkdebugInjectErrorOptionsList(BlkdebugInjectErrorOptionsList *obj);
+
+struct BlkdebugSetStateOptionsList {
+ BlkdebugSetStateOptionsList *next;
+ BlkdebugSetStateOptions *value;
+};
+
+void qapi_free_BlkdebugSetStateOptionsList(BlkdebugSetStateOptionsList *obj);
+
+struct BlockdevOptionsBlkdebug {
+ BlockdevRef *image;
+ bool has_config;
+ char *config;
+ bool has_align;
+ int64_t align;
+ bool has_max_transfer;
+ int32_t max_transfer;
+ bool has_opt_write_zero;
+ int32_t opt_write_zero;
+ bool has_max_write_zero;
+ int32_t max_write_zero;
+ bool has_opt_discard;
+ int32_t opt_discard;
+ bool has_max_discard;
+ int32_t max_discard;
+ bool has_inject_error;
+ BlkdebugInjectErrorOptionsList *inject_error;
+ bool has_set_state;
+ BlkdebugSetStateOptionsList *set_state;
+};
+
+void qapi_free_BlockdevOptionsBlkdebug(BlockdevOptionsBlkdebug *obj);
+
+struct BlockdevOptionsBlkverify {
+ BlockdevRef *test;
+ BlockdevRef *raw;
+};
+
+void qapi_free_BlockdevOptionsBlkverify(BlockdevOptionsBlkverify *obj);
+
+struct BlockdevRefList {
+ BlockdevRefList *next;
+ BlockdevRef *value;
+};
+
+void qapi_free_BlockdevRefList(BlockdevRefList *obj);
+
+struct BlockdevOptionsQuorum {
+ bool has_blkverify;
+ bool blkverify;
+ BlockdevRefList *children;
+ int64_t vote_threshold;
+ bool has_rewrite_corrupted;
+ bool rewrite_corrupted;
+ bool has_read_pattern;
+ QuorumReadPattern read_pattern;
+};
+
+void qapi_free_BlockdevOptionsQuorum(BlockdevOptionsQuorum *obj);
+
+struct SocketAddressList {
+ SocketAddressList *next;
+ SocketAddress *value;
+};
+
+void qapi_free_SocketAddressList(SocketAddressList *obj);
+
+struct BlockdevOptionsGluster {
+ char *volume;
+ char *path;
+ SocketAddressList *server;
+ bool has_debug;
+ int64_t debug;
+ bool has_logfile;
+ char *logfile;
+};
+
+void qapi_free_BlockdevOptionsGluster(BlockdevOptionsGluster *obj);
+
+struct BlockdevOptionsIscsi {
+ IscsiTransport transport;
+ char *portal;
+ char *target;
+ bool has_lun;
+ int64_t lun;
+ bool has_user;
+ char *user;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_initiator_name;
+ char *initiator_name;
+ bool has_header_digest;
+ IscsiHeaderDigest header_digest;
+ bool has_timeout;
+ int64_t timeout;
+};
+
+void qapi_free_BlockdevOptionsIscsi(BlockdevOptionsIscsi *obj);
+
+struct InetSocketAddressBaseList {
+ InetSocketAddressBaseList *next;
+ InetSocketAddressBase *value;
+};
+
+void qapi_free_InetSocketAddressBaseList(InetSocketAddressBaseList *obj);
+
+struct BlockdevOptionsRbd {
+ char *pool;
+ char *image;
+ bool has_conf;
+ char *conf;
+ bool has_snapshot;
+ char *snapshot;
+ bool has_user;
+ char *user;
+ bool has_server;
+ InetSocketAddressBaseList *server;
+};
+
+void qapi_free_BlockdevOptionsRbd(BlockdevOptionsRbd *obj);
+
+struct BlockdevOptionsSheepdog {
+ SocketAddress *server;
+ char *vdi;
+ bool has_snap_id;
+ uint32_t snap_id;
+ bool has_tag;
+ char *tag;
+};
+
+void qapi_free_BlockdevOptionsSheepdog(BlockdevOptionsSheepdog *obj);
+
+struct BlockdevOptionsReplication {
+ /* Members inherited from BlockdevOptionsGenericFormat: */
+ BlockdevRef *file;
+ /* Own members: */
+ ReplicationMode mode;
+ bool has_top_id;
+ char *top_id;
+};
+
+static inline BlockdevOptionsGenericFormat *qapi_BlockdevOptionsReplication_base(const BlockdevOptionsReplication *obj)
+{
+ return (BlockdevOptionsGenericFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsReplication(BlockdevOptionsReplication *obj);
+
+struct NFSServer {
+ NFSTransport type;
+ char *host;
+};
+
+void qapi_free_NFSServer(NFSServer *obj);
+
+struct BlockdevOptionsNfs {
+ NFSServer *server;
+ char *path;
+ bool has_user;
+ int64_t user;
+ bool has_group;
+ int64_t group;
+ bool has_tcp_syn_count;
+ int64_t tcp_syn_count;
+ bool has_readahead_size;
+ int64_t readahead_size;
+ bool has_page_cache_size;
+ int64_t page_cache_size;
+ bool has_debug;
+ int64_t debug;
+};
+
+void qapi_free_BlockdevOptionsNfs(BlockdevOptionsNfs *obj);
+
+struct BlockdevOptionsCurlBase {
+ char *url;
+ bool has_readahead;
+ int64_t readahead;
+ bool has_timeout;
+ int64_t timeout;
+ bool has_username;
+ char *username;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_proxy_username;
+ char *proxy_username;
+ bool has_proxy_password_secret;
+ char *proxy_password_secret;
+};
+
+void qapi_free_BlockdevOptionsCurlBase(BlockdevOptionsCurlBase *obj);
+
+struct BlockdevOptionsCurlHttp {
+ /* Members inherited from BlockdevOptionsCurlBase: */
+ char *url;
+ bool has_readahead;
+ int64_t readahead;
+ bool has_timeout;
+ int64_t timeout;
+ bool has_username;
+ char *username;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_proxy_username;
+ char *proxy_username;
+ bool has_proxy_password_secret;
+ char *proxy_password_secret;
+ /* Own members: */
+ bool has_cookie;
+ char *cookie;
+ bool has_cookie_secret;
+ char *cookie_secret;
+};
+
+static inline BlockdevOptionsCurlBase *qapi_BlockdevOptionsCurlHttp_base(const BlockdevOptionsCurlHttp *obj)
+{
+ return (BlockdevOptionsCurlBase *)obj;
+}
+
+void qapi_free_BlockdevOptionsCurlHttp(BlockdevOptionsCurlHttp *obj);
+
+struct BlockdevOptionsCurlHttps {
+ /* Members inherited from BlockdevOptionsCurlBase: */
+ char *url;
+ bool has_readahead;
+ int64_t readahead;
+ bool has_timeout;
+ int64_t timeout;
+ bool has_username;
+ char *username;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_proxy_username;
+ char *proxy_username;
+ bool has_proxy_password_secret;
+ char *proxy_password_secret;
+ /* Own members: */
+ bool has_cookie;
+ char *cookie;
+ bool has_sslverify;
+ bool sslverify;
+ bool has_cookie_secret;
+ char *cookie_secret;
+};
+
+static inline BlockdevOptionsCurlBase *qapi_BlockdevOptionsCurlHttps_base(const BlockdevOptionsCurlHttps *obj)
+{
+ return (BlockdevOptionsCurlBase *)obj;
+}
+
+void qapi_free_BlockdevOptionsCurlHttps(BlockdevOptionsCurlHttps *obj);
+
+struct BlockdevOptionsCurlFtp {
+ /* Members inherited from BlockdevOptionsCurlBase: */
+ char *url;
+ bool has_readahead;
+ int64_t readahead;
+ bool has_timeout;
+ int64_t timeout;
+ bool has_username;
+ char *username;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_proxy_username;
+ char *proxy_username;
+ bool has_proxy_password_secret;
+ char *proxy_password_secret;
+ /* Own members: */
+};
+
+static inline BlockdevOptionsCurlBase *qapi_BlockdevOptionsCurlFtp_base(const BlockdevOptionsCurlFtp *obj)
+{
+ return (BlockdevOptionsCurlBase *)obj;
+}
+
+void qapi_free_BlockdevOptionsCurlFtp(BlockdevOptionsCurlFtp *obj);
+
+struct BlockdevOptionsCurlFtps {
+ /* Members inherited from BlockdevOptionsCurlBase: */
+ char *url;
+ bool has_readahead;
+ int64_t readahead;
+ bool has_timeout;
+ int64_t timeout;
+ bool has_username;
+ char *username;
+ bool has_password_secret;
+ char *password_secret;
+ bool has_proxy_username;
+ char *proxy_username;
+ bool has_proxy_password_secret;
+ char *proxy_password_secret;
+ /* Own members: */
+ bool has_sslverify;
+ bool sslverify;
+};
+
+static inline BlockdevOptionsCurlBase *qapi_BlockdevOptionsCurlFtps_base(const BlockdevOptionsCurlFtps *obj)
+{
+ return (BlockdevOptionsCurlBase *)obj;
+}
+
+void qapi_free_BlockdevOptionsCurlFtps(BlockdevOptionsCurlFtps *obj);
+
+struct BlockdevOptionsNbd {
+ SocketAddress *server;
+ bool has_exp;
+ char *exp;
+ bool has_tls_creds;
+ char *tls_creds;
+};
+
+void qapi_free_BlockdevOptionsNbd(BlockdevOptionsNbd *obj);
+
+struct BlockdevOptionsRaw {
+ /* Members inherited from BlockdevOptionsGenericFormat: */
+ BlockdevRef *file;
+ /* Own members: */
+ bool has_offset;
+ int64_t offset;
+ bool has_size;
+ int64_t size;
+};
+
+static inline BlockdevOptionsGenericFormat *qapi_BlockdevOptionsRaw_base(const BlockdevOptionsRaw *obj)
+{
+ return (BlockdevOptionsGenericFormat *)obj;
+}
+
+void qapi_free_BlockdevOptionsRaw(BlockdevOptionsRaw *obj);
+
+struct BlockdevOptionsVxHS {
+ char *vdisk_id;
+ InetSocketAddressBase *server;
+ bool has_tls_creds;
+ char *tls_creds;
+};
+
+void qapi_free_BlockdevOptionsVxHS(BlockdevOptionsVxHS *obj);
+
+struct BlockdevOptionsThrottle {
+ char *throttle_group;
+ BlockdevRef *file;
+};
+
+void qapi_free_BlockdevOptionsThrottle(BlockdevOptionsThrottle *obj);
+
+struct q_obj_BlockdevOptions_base {
+ BlockdevDriver driver;
+ bool has_node_name;
+ char *node_name;
+ bool has_discard;
+ BlockdevDiscardOptions discard;
+ bool has_cache;
+ BlockdevCacheOptions *cache;
+ bool has_read_only;
+ bool read_only;
+ bool has_force_share;
+ bool force_share;
+ bool has_detect_zeroes;
+ BlockdevDetectZeroesOptions detect_zeroes;
+};
+
+struct BlockdevOptions {
+ BlockdevDriver driver;
+ bool has_node_name;
+ char *node_name;
+ bool has_discard;
+ BlockdevDiscardOptions discard;
+ bool has_cache;
+ BlockdevCacheOptions *cache;
+ bool has_read_only;
+ bool read_only;
+ bool has_force_share;
+ bool force_share;
+ bool has_detect_zeroes;
+ BlockdevDetectZeroesOptions detect_zeroes;
+ union { /* union tag is @driver */
+ BlockdevOptionsBlkdebug blkdebug;
+ BlockdevOptionsBlkverify blkverify;
+ BlockdevOptionsGenericFormat bochs;
+ BlockdevOptionsGenericFormat cloop;
+ BlockdevOptionsGenericFormat dmg;
+ BlockdevOptionsFile file;
+ BlockdevOptionsCurlFtp ftp;
+ BlockdevOptionsCurlFtps ftps;
+ BlockdevOptionsGluster gluster;
+ BlockdevOptionsFile host_cdrom;
+ BlockdevOptionsFile host_device;
+ BlockdevOptionsCurlHttp http;
+ BlockdevOptionsCurlHttps https;
+ BlockdevOptionsIscsi iscsi;
+ BlockdevOptionsLUKS luks;
+ BlockdevOptionsNbd nbd;
+ BlockdevOptionsNfs nfs;
+ BlockdevOptionsNull null_aio;
+ BlockdevOptionsNull null_co;
+ BlockdevOptionsNVMe nvme;
+ BlockdevOptionsGenericFormat parallels;
+ BlockdevOptionsQcow2 qcow2;
+ BlockdevOptionsQcow qcow;
+ BlockdevOptionsGenericCOWFormat qed;
+ BlockdevOptionsQuorum quorum;
+ BlockdevOptionsRaw raw;
+ BlockdevOptionsRbd rbd;
+ BlockdevOptionsReplication replication;
+ BlockdevOptionsSheepdog sheepdog;
+ BlockdevOptionsSsh ssh;
+ BlockdevOptionsThrottle throttle;
+ BlockdevOptionsGenericFormat vdi;
+ BlockdevOptionsGenericFormat vhdx;
+ BlockdevOptionsGenericCOWFormat vmdk;
+ BlockdevOptionsGenericFormat vpc;
+ BlockdevOptionsVVFAT vvfat;
+ BlockdevOptionsVxHS vxhs;
+ } u;
+};
+
+void qapi_free_BlockdevOptions(BlockdevOptions *obj);
+
+struct BlockdevRef {
+ QType type;
+ union { /* union tag is @type */
+ BlockdevOptions definition;
+ char *reference;
+ } u;
+};
+
+void qapi_free_BlockdevRef(BlockdevRef *obj);
+
+struct BlockdevRefOrNull {
+ QType type;
+ union { /* union tag is @type */
+ BlockdevOptions definition;
+ char *reference;
+ QNull *null;
+ } u;
+};
+
+void qapi_free_BlockdevRefOrNull(BlockdevRefOrNull *obj);
+
+struct q_obj_blockdev_del_arg {
+ char *node_name;
+};
+
+struct BlockdevCreateOptionsFile {
+ char *filename;
+ uint64_t size;
+ bool has_preallocation;
+ PreallocMode preallocation;
+ bool has_nocow;
+ bool nocow;
+};
+
+void qapi_free_BlockdevCreateOptionsFile(BlockdevCreateOptionsFile *obj);
+
+struct BlockdevCreateOptionsGluster {
+ BlockdevOptionsGluster *location;
+ uint64_t size;
+ bool has_preallocation;
+ PreallocMode preallocation;
+};
+
+void qapi_free_BlockdevCreateOptionsGluster(BlockdevCreateOptionsGluster *obj);
+
+struct BlockdevCreateOptionsLUKS {
+ /* Members inherited from QCryptoBlockCreateOptionsLUKS: */
+ bool has_key_secret;
+ char *key_secret;
+ bool has_cipher_alg;
+ QCryptoCipherAlgorithm cipher_alg;
+ bool has_cipher_mode;
+ QCryptoCipherMode cipher_mode;
+ bool has_ivgen_alg;
+ QCryptoIVGenAlgorithm ivgen_alg;
+ bool has_ivgen_hash_alg;
+ QCryptoHashAlgorithm ivgen_hash_alg;
+ bool has_hash_alg;
+ QCryptoHashAlgorithm hash_alg;
+ bool has_iter_time;
+ int64_t iter_time;
+ /* Own members: */
+ BlockdevRef *file;
+ uint64_t size;
+};
+
+static inline QCryptoBlockCreateOptionsLUKS *qapi_BlockdevCreateOptionsLUKS_base(const BlockdevCreateOptionsLUKS *obj)
+{
+ return (QCryptoBlockCreateOptionsLUKS *)obj;
+}
+
+void qapi_free_BlockdevCreateOptionsLUKS(BlockdevCreateOptionsLUKS *obj);
+
+struct BlockdevCreateOptionsNfs {
+ BlockdevOptionsNfs *location;
+ uint64_t size;
+};
+
+void qapi_free_BlockdevCreateOptionsNfs(BlockdevCreateOptionsNfs *obj);
+
+struct BlockdevCreateOptionsParallels {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_cluster_size;
+ uint64_t cluster_size;
+};
+
+void qapi_free_BlockdevCreateOptionsParallels(BlockdevCreateOptionsParallels *obj);
+
+struct BlockdevCreateOptionsQcow {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_encrypt;
+ QCryptoBlockCreateOptions *encrypt;
+};
+
+void qapi_free_BlockdevCreateOptionsQcow(BlockdevCreateOptionsQcow *obj);
+
+struct BlockdevCreateOptionsQcow2 {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_version;
+ BlockdevQcow2Version version;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_backing_fmt;
+ BlockdevDriver backing_fmt;
+ bool has_encrypt;
+ QCryptoBlockCreateOptions *encrypt;
+ bool has_cluster_size;
+ uint64_t cluster_size;
+ bool has_preallocation;
+ PreallocMode preallocation;
+ bool has_lazy_refcounts;
+ bool lazy_refcounts;
+ bool has_refcount_bits;
+ int64_t refcount_bits;
+};
+
+void qapi_free_BlockdevCreateOptionsQcow2(BlockdevCreateOptionsQcow2 *obj);
+
+struct BlockdevCreateOptionsQed {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_backing_fmt;
+ BlockdevDriver backing_fmt;
+ bool has_cluster_size;
+ uint64_t cluster_size;
+ bool has_table_size;
+ int64_t table_size;
+};
+
+void qapi_free_BlockdevCreateOptionsQed(BlockdevCreateOptionsQed *obj);
+
+struct BlockdevCreateOptionsRbd {
+ BlockdevOptionsRbd *location;
+ uint64_t size;
+ bool has_cluster_size;
+ uint64_t cluster_size;
+};
+
+void qapi_free_BlockdevCreateOptionsRbd(BlockdevCreateOptionsRbd *obj);
+
+struct SheepdogRedundancyFull {
+ int64_t copies;
+};
+
+void qapi_free_SheepdogRedundancyFull(SheepdogRedundancyFull *obj);
+
+struct SheepdogRedundancyErasureCoded {
+ int64_t data_strips;
+ int64_t parity_strips;
+};
+
+void qapi_free_SheepdogRedundancyErasureCoded(SheepdogRedundancyErasureCoded *obj);
+
+struct q_obj_SheepdogRedundancy_base {
+ SheepdogRedundancyType type;
+};
+
+struct SheepdogRedundancy {
+ SheepdogRedundancyType type;
+ union { /* union tag is @type */
+ SheepdogRedundancyFull full;
+ SheepdogRedundancyErasureCoded erasure_coded;
+ } u;
+};
+
+void qapi_free_SheepdogRedundancy(SheepdogRedundancy *obj);
+
+struct BlockdevCreateOptionsSheepdog {
+ BlockdevOptionsSheepdog *location;
+ uint64_t size;
+ bool has_backing_file;
+ char *backing_file;
+ bool has_preallocation;
+ PreallocMode preallocation;
+ bool has_redundancy;
+ SheepdogRedundancy *redundancy;
+ bool has_object_size;
+ uint64_t object_size;
+};
+
+void qapi_free_BlockdevCreateOptionsSheepdog(BlockdevCreateOptionsSheepdog *obj);
+
+struct BlockdevCreateOptionsSsh {
+ BlockdevOptionsSsh *location;
+ uint64_t size;
+};
+
+void qapi_free_BlockdevCreateOptionsSsh(BlockdevCreateOptionsSsh *obj);
+
+struct BlockdevCreateOptionsVdi {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_preallocation;
+ PreallocMode preallocation;
+};
+
+void qapi_free_BlockdevCreateOptionsVdi(BlockdevCreateOptionsVdi *obj);
+
+struct BlockdevCreateOptionsVhdx {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_log_size;
+ uint64_t log_size;
+ bool has_block_size;
+ uint64_t block_size;
+ bool has_subformat;
+ BlockdevVhdxSubformat subformat;
+ bool has_block_state_zero;
+ bool block_state_zero;
+};
+
+void qapi_free_BlockdevCreateOptionsVhdx(BlockdevCreateOptionsVhdx *obj);
+
+struct BlockdevCreateOptionsVpc {
+ BlockdevRef *file;
+ uint64_t size;
+ bool has_subformat;
+ BlockdevVpcSubformat subformat;
+ bool has_force_size;
+ bool force_size;
+};
+
+void qapi_free_BlockdevCreateOptionsVpc(BlockdevCreateOptionsVpc *obj);
+
+struct BlockdevCreateNotSupported {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_BlockdevCreateNotSupported(BlockdevCreateNotSupported *obj);
+
+struct q_obj_BlockdevCreateOptions_base {
+ BlockdevDriver driver;
+};
+
+struct BlockdevCreateOptions {
+ BlockdevDriver driver;
+ union { /* union tag is @driver */
+ BlockdevCreateNotSupported blkdebug;
+ BlockdevCreateNotSupported blkverify;
+ BlockdevCreateNotSupported bochs;
+ BlockdevCreateNotSupported cloop;
+ BlockdevCreateNotSupported dmg;
+ BlockdevCreateOptionsFile file;
+ BlockdevCreateNotSupported ftp;
+ BlockdevCreateNotSupported ftps;
+ BlockdevCreateOptionsGluster gluster;
+ BlockdevCreateNotSupported host_cdrom;
+ BlockdevCreateNotSupported host_device;
+ BlockdevCreateNotSupported http;
+ BlockdevCreateNotSupported https;
+ BlockdevCreateNotSupported iscsi;
+ BlockdevCreateOptionsLUKS luks;
+ BlockdevCreateNotSupported nbd;
+ BlockdevCreateOptionsNfs nfs;
+ BlockdevCreateNotSupported null_aio;
+ BlockdevCreateNotSupported null_co;
+ BlockdevCreateNotSupported nvme;
+ BlockdevCreateOptionsParallels parallels;
+ BlockdevCreateOptionsQcow qcow;
+ BlockdevCreateOptionsQcow2 qcow2;
+ BlockdevCreateOptionsQed qed;
+ BlockdevCreateNotSupported quorum;
+ BlockdevCreateNotSupported raw;
+ BlockdevCreateOptionsRbd rbd;
+ BlockdevCreateNotSupported replication;
+ BlockdevCreateOptionsSheepdog sheepdog;
+ BlockdevCreateOptionsSsh ssh;
+ BlockdevCreateNotSupported throttle;
+ BlockdevCreateOptionsVdi vdi;
+ BlockdevCreateOptionsVhdx vhdx;
+ BlockdevCreateNotSupported vmdk;
+ BlockdevCreateOptionsVpc vpc;
+ BlockdevCreateNotSupported vvfat;
+ BlockdevCreateNotSupported vxhs;
+ } u;
+};
+
+void qapi_free_BlockdevCreateOptions(BlockdevCreateOptions *obj);
+
+struct q_obj_blockdev_open_tray_arg {
+ bool has_device;
+ char *device;
+ bool has_id;
+ char *id;
+ bool has_force;
+ bool force;
+};
+
+struct q_obj_blockdev_close_tray_arg {
+ bool has_device;
+ char *device;
+ bool has_id;
+ char *id;
+};
+
+struct q_obj_blockdev_remove_medium_arg {
+ char *id;
+};
+
+struct q_obj_blockdev_insert_medium_arg {
+ char *id;
+ char *node_name;
+};
+
+struct q_obj_blockdev_change_medium_arg {
+ bool has_device;
+ char *device;
+ bool has_id;
+ char *id;
+ char *filename;
+ bool has_format;
+ char *format;
+ bool has_read_only_mode;
+ BlockdevChangeReadOnlyMode read_only_mode;
+};
+
+struct q_obj_BLOCK_IMAGE_CORRUPTED_arg {
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ char *msg;
+ bool has_offset;
+ int64_t offset;
+ bool has_size;
+ int64_t size;
+ bool fatal;
+};
+
+struct q_obj_BLOCK_IO_ERROR_arg {
+ char *device;
+ bool has_node_name;
+ char *node_name;
+ IoOperationType operation;
+ BlockErrorAction action;
+ bool has_nospace;
+ bool nospace;
+ char *reason;
+};
+
+struct q_obj_BLOCK_JOB_COMPLETED_arg {
+ BlockJobType type;
+ char *device;
+ int64_t len;
+ int64_t offset;
+ int64_t speed;
+ bool has_error;
+ char *error;
+};
+
+struct q_obj_BLOCK_JOB_CANCELLED_arg {
+ BlockJobType type;
+ char *device;
+ int64_t len;
+ int64_t offset;
+ int64_t speed;
+};
+
+struct q_obj_BLOCK_JOB_ERROR_arg {
+ char *device;
+ IoOperationType operation;
+ BlockErrorAction action;
+};
+
+struct q_obj_BLOCK_JOB_READY_arg {
+ BlockJobType type;
+ char *device;
+ int64_t len;
+ int64_t offset;
+ int64_t speed;
+};
+
+struct q_obj_BLOCK_JOB_PENDING_arg {
+ BlockJobType type;
+ char *id;
+};
+
+struct q_obj_BLOCK_WRITE_THRESHOLD_arg {
+ char *node_name;
+ uint64_t amount_exceeded;
+ uint64_t write_threshold;
+};
+
+struct q_obj_block_set_write_threshold_arg {
+ char *node_name;
+ uint64_t write_threshold;
+};
+
+struct q_obj_x_blockdev_change_arg {
+ char *parent;
+ bool has_child;
+ char *child;
+ bool has_node;
+ char *node;
+};
+
+struct q_obj_x_blockdev_set_iothread_arg {
+ char *node_name;
+ StrOrNull *iothread;
+ bool has_force;
+ bool force;
+};
+
+#endif /* QAPI_TYPES_BLOCK_CORE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-block.c b/qemu2-auto-generated/qapi/qapi-types-block.c
new file mode 100644
index 0000000000..4a5b9a873c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-block.c
@@ -0,0 +1,70 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-block.h"
+#include "qapi-visit-block.h"
+
+const QEnumLookup BiosAtaTranslation_lookup = {
+ .array = (const char *const[]) {
+ [BIOS_ATA_TRANSLATION_AUTO] = "auto",
+ [BIOS_ATA_TRANSLATION_NONE] = "none",
+ [BIOS_ATA_TRANSLATION_LBA] = "lba",
+ [BIOS_ATA_TRANSLATION_LARGE] = "large",
+ [BIOS_ATA_TRANSLATION_RECHS] = "rechs",
+ },
+ .size = BIOS_ATA_TRANSLATION__MAX
+};
+
+const QEnumLookup FloppyDriveType_lookup = {
+ .array = (const char *const[]) {
+ [FLOPPY_DRIVE_TYPE_144] = "144",
+ [FLOPPY_DRIVE_TYPE_288] = "288",
+ [FLOPPY_DRIVE_TYPE_120] = "120",
+ [FLOPPY_DRIVE_TYPE_NONE] = "none",
+ [FLOPPY_DRIVE_TYPE_AUTO] = "auto",
+ },
+ .size = FLOPPY_DRIVE_TYPE__MAX
+};
+
+void qapi_free_BlockdevSnapshotInternal(BlockdevSnapshotInternal *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BlockdevSnapshotInternal(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NbdServerRemoveMode_lookup = {
+ .array = (const char *const[]) {
+ [NBD_SERVER_REMOVE_MODE_SAFE] = "safe",
+ [NBD_SERVER_REMOVE_MODE_HARD] = "hard",
+ },
+ .size = NBD_SERVER_REMOVE_MODE__MAX
+};
+
+const QEnumLookup QuorumOpType_lookup = {
+ .array = (const char *const[]) {
+ [QUORUM_OP_TYPE_READ] = "read",
+ [QUORUM_OP_TYPE_WRITE] = "write",
+ [QUORUM_OP_TYPE_FLUSH] = "flush",
+ },
+ .size = QUORUM_OP_TYPE__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_block_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-block.h b/qemu2-auto-generated/qapi/qapi-types-block.h
new file mode 100644
index 0000000000..b7dfb079b4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-block.h
@@ -0,0 +1,153 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_BLOCK_H
+#define QAPI_TYPES_BLOCK_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-block-core.h"
+
+typedef enum BiosAtaTranslation {
+ BIOS_ATA_TRANSLATION_AUTO = 0,
+ BIOS_ATA_TRANSLATION_NONE = 1,
+ BIOS_ATA_TRANSLATION_LBA = 2,
+ BIOS_ATA_TRANSLATION_LARGE = 3,
+ BIOS_ATA_TRANSLATION_RECHS = 4,
+ BIOS_ATA_TRANSLATION__MAX = 5,
+} BiosAtaTranslation;
+
+#define BiosAtaTranslation_str(val) \
+ qapi_enum_lookup(&BiosAtaTranslation_lookup, (val))
+
+extern const QEnumLookup BiosAtaTranslation_lookup;
+
+typedef enum FloppyDriveType {
+ FLOPPY_DRIVE_TYPE_144 = 0,
+ FLOPPY_DRIVE_TYPE_288 = 1,
+ FLOPPY_DRIVE_TYPE_120 = 2,
+ FLOPPY_DRIVE_TYPE_NONE = 3,
+ FLOPPY_DRIVE_TYPE_AUTO = 4,
+ FLOPPY_DRIVE_TYPE__MAX = 5,
+} FloppyDriveType;
+
+#define FloppyDriveType_str(val) \
+ qapi_enum_lookup(&FloppyDriveType_lookup, (val))
+
+extern const QEnumLookup FloppyDriveType_lookup;
+
+typedef struct BlockdevSnapshotInternal BlockdevSnapshotInternal;
+
+typedef struct q_obj_blockdev_snapshot_delete_internal_sync_arg q_obj_blockdev_snapshot_delete_internal_sync_arg;
+
+typedef struct q_obj_eject_arg q_obj_eject_arg;
+
+typedef struct q_obj_nbd_server_start_arg q_obj_nbd_server_start_arg;
+
+typedef struct q_obj_nbd_server_add_arg q_obj_nbd_server_add_arg;
+
+typedef enum NbdServerRemoveMode {
+ NBD_SERVER_REMOVE_MODE_SAFE = 0,
+ NBD_SERVER_REMOVE_MODE_HARD = 1,
+ NBD_SERVER_REMOVE_MODE__MAX = 2,
+} NbdServerRemoveMode;
+
+#define NbdServerRemoveMode_str(val) \
+ qapi_enum_lookup(&NbdServerRemoveMode_lookup, (val))
+
+extern const QEnumLookup NbdServerRemoveMode_lookup;
+
+typedef struct q_obj_nbd_server_remove_arg q_obj_nbd_server_remove_arg;
+
+typedef struct q_obj_DEVICE_TRAY_MOVED_arg q_obj_DEVICE_TRAY_MOVED_arg;
+
+typedef enum QuorumOpType {
+ QUORUM_OP_TYPE_READ = 0,
+ QUORUM_OP_TYPE_WRITE = 1,
+ QUORUM_OP_TYPE_FLUSH = 2,
+ QUORUM_OP_TYPE__MAX = 3,
+} QuorumOpType;
+
+#define QuorumOpType_str(val) \
+ qapi_enum_lookup(&QuorumOpType_lookup, (val))
+
+extern const QEnumLookup QuorumOpType_lookup;
+
+typedef struct q_obj_QUORUM_FAILURE_arg q_obj_QUORUM_FAILURE_arg;
+
+typedef struct q_obj_QUORUM_REPORT_BAD_arg q_obj_QUORUM_REPORT_BAD_arg;
+
+struct BlockdevSnapshotInternal {
+ char *device;
+ char *name;
+};
+
+void qapi_free_BlockdevSnapshotInternal(BlockdevSnapshotInternal *obj);
+
+struct q_obj_blockdev_snapshot_delete_internal_sync_arg {
+ char *device;
+ bool has_id;
+ char *id;
+ bool has_name;
+ char *name;
+};
+
+struct q_obj_eject_arg {
+ bool has_device;
+ char *device;
+ bool has_id;
+ char *id;
+ bool has_force;
+ bool force;
+};
+
+struct q_obj_nbd_server_start_arg {
+ SocketAddressLegacy *addr;
+ bool has_tls_creds;
+ char *tls_creds;
+};
+
+struct q_obj_nbd_server_add_arg {
+ char *device;
+ bool has_name;
+ char *name;
+ bool has_writable;
+ bool writable;
+};
+
+struct q_obj_nbd_server_remove_arg {
+ char *name;
+ bool has_mode;
+ NbdServerRemoveMode mode;
+};
+
+struct q_obj_DEVICE_TRAY_MOVED_arg {
+ char *device;
+ char *id;
+ bool tray_open;
+};
+
+struct q_obj_QUORUM_FAILURE_arg {
+ char *reference;
+ int64_t sector_num;
+ int64_t sectors_count;
+};
+
+struct q_obj_QUORUM_REPORT_BAD_arg {
+ QuorumOpType type;
+ bool has_error;
+ char *error;
+ char *node_name;
+ int64_t sector_num;
+ int64_t sectors_count;
+};
+
+#endif /* QAPI_TYPES_BLOCK_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-char.c b/qemu2-auto-generated/qapi/qapi-types-char.c
new file mode 100644
index 0000000000..897548515f
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-char.c
@@ -0,0 +1,273 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-char.h"
+#include "qapi-visit-char.h"
+
+void qapi_free_ChardevInfo(ChardevInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevInfoList(ChardevInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevBackendInfo(ChardevBackendInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevBackendInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevBackendInfoList(ChardevBackendInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevBackendInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup DataFormat_lookup = {
+ .array = (const char *const[]) {
+ [DATA_FORMAT_UTF8] = "utf8",
+ [DATA_FORMAT_BASE64] = "base64",
+ },
+ .size = DATA_FORMAT__MAX
+};
+
+void qapi_free_ChardevCommon(ChardevCommon *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevCommon(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevFile(ChardevFile *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevFile(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevHostdev(ChardevHostdev *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevHostdev(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevSocket(ChardevSocket *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevSocket(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevUdp(ChardevUdp *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevUdp(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevMux(ChardevMux *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevMux(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevStdio(ChardevStdio *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevStdio(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevSpiceChannel(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevSpicePort(ChardevSpicePort *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevSpicePort(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevVC(ChardevVC *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevVC(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevRingbuf(ChardevRingbuf *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevRingbuf(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ChardevBackendKind_lookup = {
+ .array = (const char *const[]) {
+ [CHARDEV_BACKEND_KIND_FILE] = "file",
+ [CHARDEV_BACKEND_KIND_SERIAL] = "serial",
+ [CHARDEV_BACKEND_KIND_PARALLEL] = "parallel",
+ [CHARDEV_BACKEND_KIND_PIPE] = "pipe",
+ [CHARDEV_BACKEND_KIND_SOCKET] = "socket",
+ [CHARDEV_BACKEND_KIND_UDP] = "udp",
+ [CHARDEV_BACKEND_KIND_PTY] = "pty",
+ [CHARDEV_BACKEND_KIND_NULL] = "null",
+ [CHARDEV_BACKEND_KIND_MUX] = "mux",
+ [CHARDEV_BACKEND_KIND_MSMOUSE] = "msmouse",
+ [CHARDEV_BACKEND_KIND_WCTABLET] = "wctablet",
+ [CHARDEV_BACKEND_KIND_BRAILLE] = "braille",
+ [CHARDEV_BACKEND_KIND_TESTDEV] = "testdev",
+ [CHARDEV_BACKEND_KIND_STDIO] = "stdio",
+ [CHARDEV_BACKEND_KIND_CONSOLE] = "console",
+ [CHARDEV_BACKEND_KIND_SPICEVMC] = "spicevmc",
+ [CHARDEV_BACKEND_KIND_SPICEPORT] = "spiceport",
+ [CHARDEV_BACKEND_KIND_VC] = "vc",
+ [CHARDEV_BACKEND_KIND_RINGBUF] = "ringbuf",
+ [CHARDEV_BACKEND_KIND_MEMORY] = "memory",
+ },
+ .size = CHARDEV_BACKEND_KIND__MAX
+};
+
+void qapi_free_ChardevBackend(ChardevBackend *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevBackend(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ChardevReturn(ChardevReturn *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ChardevReturn(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_char_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-char.h b/qemu2-auto-generated/qapi/qapi-types-char.h
new file mode 100644
index 0000000000..3afca8a010
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-char.h
@@ -0,0 +1,481 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_CHAR_H
+#define QAPI_TYPES_CHAR_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-sockets.h"
+
+typedef struct ChardevInfo ChardevInfo;
+
+typedef struct ChardevInfoList ChardevInfoList;
+
+typedef struct ChardevBackendInfo ChardevBackendInfo;
+
+typedef struct ChardevBackendInfoList ChardevBackendInfoList;
+
+typedef enum DataFormat {
+ DATA_FORMAT_UTF8 = 0,
+ DATA_FORMAT_BASE64 = 1,
+ DATA_FORMAT__MAX = 2,
+} DataFormat;
+
+#define DataFormat_str(val) \
+ qapi_enum_lookup(&DataFormat_lookup, (val))
+
+extern const QEnumLookup DataFormat_lookup;
+
+typedef struct q_obj_ringbuf_write_arg q_obj_ringbuf_write_arg;
+
+typedef struct q_obj_ringbuf_read_arg q_obj_ringbuf_read_arg;
+
+typedef struct ChardevCommon ChardevCommon;
+
+typedef struct ChardevFile ChardevFile;
+
+typedef struct ChardevHostdev ChardevHostdev;
+
+typedef struct ChardevSocket ChardevSocket;
+
+typedef struct ChardevUdp ChardevUdp;
+
+typedef struct ChardevMux ChardevMux;
+
+typedef struct ChardevStdio ChardevStdio;
+
+typedef struct ChardevSpiceChannel ChardevSpiceChannel;
+
+typedef struct ChardevSpicePort ChardevSpicePort;
+
+typedef struct ChardevVC ChardevVC;
+
+typedef struct ChardevRingbuf ChardevRingbuf;
+
+typedef struct q_obj_ChardevFile_wrapper q_obj_ChardevFile_wrapper;
+
+typedef struct q_obj_ChardevHostdev_wrapper q_obj_ChardevHostdev_wrapper;
+
+typedef struct q_obj_ChardevSocket_wrapper q_obj_ChardevSocket_wrapper;
+
+typedef struct q_obj_ChardevUdp_wrapper q_obj_ChardevUdp_wrapper;
+
+typedef struct q_obj_ChardevCommon_wrapper q_obj_ChardevCommon_wrapper;
+
+typedef struct q_obj_ChardevMux_wrapper q_obj_ChardevMux_wrapper;
+
+typedef struct q_obj_ChardevStdio_wrapper q_obj_ChardevStdio_wrapper;
+
+typedef struct q_obj_ChardevSpiceChannel_wrapper q_obj_ChardevSpiceChannel_wrapper;
+
+typedef struct q_obj_ChardevSpicePort_wrapper q_obj_ChardevSpicePort_wrapper;
+
+typedef struct q_obj_ChardevVC_wrapper q_obj_ChardevVC_wrapper;
+
+typedef struct q_obj_ChardevRingbuf_wrapper q_obj_ChardevRingbuf_wrapper;
+
+typedef enum ChardevBackendKind {
+ CHARDEV_BACKEND_KIND_FILE = 0,
+ CHARDEV_BACKEND_KIND_SERIAL = 1,
+ CHARDEV_BACKEND_KIND_PARALLEL = 2,
+ CHARDEV_BACKEND_KIND_PIPE = 3,
+ CHARDEV_BACKEND_KIND_SOCKET = 4,
+ CHARDEV_BACKEND_KIND_UDP = 5,
+ CHARDEV_BACKEND_KIND_PTY = 6,
+ CHARDEV_BACKEND_KIND_NULL = 7,
+ CHARDEV_BACKEND_KIND_MUX = 8,
+ CHARDEV_BACKEND_KIND_MSMOUSE = 9,
+ CHARDEV_BACKEND_KIND_WCTABLET = 10,
+ CHARDEV_BACKEND_KIND_BRAILLE = 11,
+ CHARDEV_BACKEND_KIND_TESTDEV = 12,
+ CHARDEV_BACKEND_KIND_STDIO = 13,
+ CHARDEV_BACKEND_KIND_CONSOLE = 14,
+ CHARDEV_BACKEND_KIND_SPICEVMC = 15,
+ CHARDEV_BACKEND_KIND_SPICEPORT = 16,
+ CHARDEV_BACKEND_KIND_VC = 17,
+ CHARDEV_BACKEND_KIND_RINGBUF = 18,
+ CHARDEV_BACKEND_KIND_MEMORY = 19,
+ CHARDEV_BACKEND_KIND__MAX = 20,
+} ChardevBackendKind;
+
+#define ChardevBackendKind_str(val) \
+ qapi_enum_lookup(&ChardevBackendKind_lookup, (val))
+
+extern const QEnumLookup ChardevBackendKind_lookup;
+
+typedef struct ChardevBackend ChardevBackend;
+
+typedef struct ChardevReturn ChardevReturn;
+
+typedef struct q_obj_chardev_add_arg q_obj_chardev_add_arg;
+
+typedef struct q_obj_chardev_change_arg q_obj_chardev_change_arg;
+
+typedef struct q_obj_chardev_remove_arg q_obj_chardev_remove_arg;
+
+typedef struct q_obj_chardev_send_break_arg q_obj_chardev_send_break_arg;
+
+typedef struct q_obj_VSERPORT_CHANGE_arg q_obj_VSERPORT_CHANGE_arg;
+
+struct ChardevInfo {
+ char *label;
+ char *filename;
+ bool frontend_open;
+};
+
+void qapi_free_ChardevInfo(ChardevInfo *obj);
+
+struct ChardevInfoList {
+ ChardevInfoList *next;
+ ChardevInfo *value;
+};
+
+void qapi_free_ChardevInfoList(ChardevInfoList *obj);
+
+struct ChardevBackendInfo {
+ char *name;
+};
+
+void qapi_free_ChardevBackendInfo(ChardevBackendInfo *obj);
+
+struct ChardevBackendInfoList {
+ ChardevBackendInfoList *next;
+ ChardevBackendInfo *value;
+};
+
+void qapi_free_ChardevBackendInfoList(ChardevBackendInfoList *obj);
+
+struct q_obj_ringbuf_write_arg {
+ char *device;
+ char *data;
+ bool has_format;
+ DataFormat format;
+};
+
+struct q_obj_ringbuf_read_arg {
+ char *device;
+ int64_t size;
+ bool has_format;
+ DataFormat format;
+};
+
+struct ChardevCommon {
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+};
+
+void qapi_free_ChardevCommon(ChardevCommon *obj);
+
+struct ChardevFile {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ bool has_in;
+ char *in;
+ char *out;
+ bool has_append;
+ bool append;
+};
+
+static inline ChardevCommon *qapi_ChardevFile_base(const ChardevFile *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevFile(ChardevFile *obj);
+
+struct ChardevHostdev {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ char *device;
+};
+
+static inline ChardevCommon *qapi_ChardevHostdev_base(const ChardevHostdev *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevHostdev(ChardevHostdev *obj);
+
+struct ChardevSocket {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ SocketAddressLegacy *addr;
+ bool has_tls_creds;
+ char *tls_creds;
+ bool has_server;
+ bool server;
+ bool has_wait;
+ bool wait;
+ bool has_nodelay;
+ bool nodelay;
+ bool has_telnet;
+ bool telnet;
+ bool has_tn3270;
+ bool tn3270;
+ bool has_reconnect;
+ int64_t reconnect;
+};
+
+static inline ChardevCommon *qapi_ChardevSocket_base(const ChardevSocket *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevSocket(ChardevSocket *obj);
+
+struct ChardevUdp {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ SocketAddressLegacy *remote;
+ bool has_local;
+ SocketAddressLegacy *local;
+};
+
+static inline ChardevCommon *qapi_ChardevUdp_base(const ChardevUdp *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevUdp(ChardevUdp *obj);
+
+struct ChardevMux {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ char *chardev;
+};
+
+static inline ChardevCommon *qapi_ChardevMux_base(const ChardevMux *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevMux(ChardevMux *obj);
+
+struct ChardevStdio {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ bool has_signal;
+ bool signal;
+};
+
+static inline ChardevCommon *qapi_ChardevStdio_base(const ChardevStdio *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevStdio(ChardevStdio *obj);
+
+struct ChardevSpiceChannel {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ char *type;
+};
+
+static inline ChardevCommon *qapi_ChardevSpiceChannel_base(const ChardevSpiceChannel *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevSpiceChannel(ChardevSpiceChannel *obj);
+
+struct ChardevSpicePort {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ char *fqdn;
+};
+
+static inline ChardevCommon *qapi_ChardevSpicePort_base(const ChardevSpicePort *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevSpicePort(ChardevSpicePort *obj);
+
+struct ChardevVC {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ bool has_width;
+ int64_t width;
+ bool has_height;
+ int64_t height;
+ bool has_cols;
+ int64_t cols;
+ bool has_rows;
+ int64_t rows;
+};
+
+static inline ChardevCommon *qapi_ChardevVC_base(const ChardevVC *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevVC(ChardevVC *obj);
+
+struct ChardevRingbuf {
+ /* Members inherited from ChardevCommon: */
+ bool has_logfile;
+ char *logfile;
+ bool has_logappend;
+ bool logappend;
+ /* Own members: */
+ bool has_size;
+ int64_t size;
+};
+
+static inline ChardevCommon *qapi_ChardevRingbuf_base(const ChardevRingbuf *obj)
+{
+ return (ChardevCommon *)obj;
+}
+
+void qapi_free_ChardevRingbuf(ChardevRingbuf *obj);
+
+struct q_obj_ChardevFile_wrapper {
+ ChardevFile *data;
+};
+
+struct q_obj_ChardevHostdev_wrapper {
+ ChardevHostdev *data;
+};
+
+struct q_obj_ChardevSocket_wrapper {
+ ChardevSocket *data;
+};
+
+struct q_obj_ChardevUdp_wrapper {
+ ChardevUdp *data;
+};
+
+struct q_obj_ChardevCommon_wrapper {
+ ChardevCommon *data;
+};
+
+struct q_obj_ChardevMux_wrapper {
+ ChardevMux *data;
+};
+
+struct q_obj_ChardevStdio_wrapper {
+ ChardevStdio *data;
+};
+
+struct q_obj_ChardevSpiceChannel_wrapper {
+ ChardevSpiceChannel *data;
+};
+
+struct q_obj_ChardevSpicePort_wrapper {
+ ChardevSpicePort *data;
+};
+
+struct q_obj_ChardevVC_wrapper {
+ ChardevVC *data;
+};
+
+struct q_obj_ChardevRingbuf_wrapper {
+ ChardevRingbuf *data;
+};
+
+struct ChardevBackend {
+ ChardevBackendKind type;
+ union { /* union tag is @type */
+ q_obj_ChardevFile_wrapper file;
+ q_obj_ChardevHostdev_wrapper serial;
+ q_obj_ChardevHostdev_wrapper parallel;
+ q_obj_ChardevHostdev_wrapper pipe;
+ q_obj_ChardevSocket_wrapper socket;
+ q_obj_ChardevUdp_wrapper udp;
+ q_obj_ChardevCommon_wrapper pty;
+ q_obj_ChardevCommon_wrapper null;
+ q_obj_ChardevMux_wrapper mux;
+ q_obj_ChardevCommon_wrapper msmouse;
+ q_obj_ChardevCommon_wrapper wctablet;
+ q_obj_ChardevCommon_wrapper braille;
+ q_obj_ChardevCommon_wrapper testdev;
+ q_obj_ChardevStdio_wrapper stdio;
+ q_obj_ChardevCommon_wrapper console;
+ q_obj_ChardevSpiceChannel_wrapper spicevmc;
+ q_obj_ChardevSpicePort_wrapper spiceport;
+ q_obj_ChardevVC_wrapper vc;
+ q_obj_ChardevRingbuf_wrapper ringbuf;
+ q_obj_ChardevRingbuf_wrapper memory;
+ } u;
+};
+
+void qapi_free_ChardevBackend(ChardevBackend *obj);
+
+struct ChardevReturn {
+ bool has_pty;
+ char *pty;
+};
+
+void qapi_free_ChardevReturn(ChardevReturn *obj);
+
+struct q_obj_chardev_add_arg {
+ char *id;
+ ChardevBackend *backend;
+};
+
+struct q_obj_chardev_change_arg {
+ char *id;
+ ChardevBackend *backend;
+};
+
+struct q_obj_chardev_remove_arg {
+ char *id;
+};
+
+struct q_obj_chardev_send_break_arg {
+ char *id;
+};
+
+struct q_obj_VSERPORT_CHANGE_arg {
+ char *id;
+ bool open;
+};
+
+#endif /* QAPI_TYPES_CHAR_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-common.c b/qemu2-auto-generated/qapi/qapi-types-common.c
new file mode 100644
index 0000000000..617311334e
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-common.c
@@ -0,0 +1,95 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-common.h"
+#include "qapi-visit-common.h"
+
+const QEnumLookup QapiErrorClass_lookup = {
+ .array = (const char *const[]) {
+ [QAPI_ERROR_CLASS_GENERICERROR] = "GenericError",
+ [QAPI_ERROR_CLASS_COMMANDNOTFOUND] = "CommandNotFound",
+ [QAPI_ERROR_CLASS_DEVICENOTACTIVE] = "DeviceNotActive",
+ [QAPI_ERROR_CLASS_DEVICENOTFOUND] = "DeviceNotFound",
+ [QAPI_ERROR_CLASS_KVMMISSINGCAP] = "KVMMissingCap",
+ },
+ .size = QAPI_ERROR_CLASS__MAX
+};
+
+const QEnumLookup IoOperationType_lookup = {
+ .array = (const char *const[]) {
+ [IO_OPERATION_TYPE_READ] = "read",
+ [IO_OPERATION_TYPE_WRITE] = "write",
+ },
+ .size = IO_OPERATION_TYPE__MAX
+};
+
+const QEnumLookup OnOffAuto_lookup = {
+ .array = (const char *const[]) {
+ [ON_OFF_AUTO_AUTO] = "auto",
+ [ON_OFF_AUTO_ON] = "on",
+ [ON_OFF_AUTO_OFF] = "off",
+ },
+ .size = ON_OFF_AUTO__MAX
+};
+
+const QEnumLookup OnOffSplit_lookup = {
+ .array = (const char *const[]) {
+ [ON_OFF_SPLIT_ON] = "on",
+ [ON_OFF_SPLIT_OFF] = "off",
+ [ON_OFF_SPLIT_SPLIT] = "split",
+ },
+ .size = ON_OFF_SPLIT__MAX
+};
+
+void qapi_free_String(String *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_String(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_StrOrNull(StrOrNull *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_StrOrNull(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup OffAutoPCIBAR_lookup = {
+ .array = (const char *const[]) {
+ [OFF_AUTOPCIBAR_OFF] = "off",
+ [OFF_AUTOPCIBAR_AUTO] = "auto",
+ [OFF_AUTOPCIBAR_BAR0] = "bar0",
+ [OFF_AUTOPCIBAR_BAR1] = "bar1",
+ [OFF_AUTOPCIBAR_BAR2] = "bar2",
+ [OFF_AUTOPCIBAR_BAR3] = "bar3",
+ [OFF_AUTOPCIBAR_BAR4] = "bar4",
+ [OFF_AUTOPCIBAR_BAR5] = "bar5",
+ },
+ .size = OFF_AUTOPCIBAR__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_common_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-common.h b/qemu2-auto-generated/qapi/qapi-types-common.h
new file mode 100644
index 0000000000..33073a2fbb
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-common.h
@@ -0,0 +1,104 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_COMMON_H
+#define QAPI_TYPES_COMMON_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef enum QapiErrorClass {
+ QAPI_ERROR_CLASS_GENERICERROR = 0,
+ QAPI_ERROR_CLASS_COMMANDNOTFOUND = 1,
+ QAPI_ERROR_CLASS_DEVICENOTACTIVE = 2,
+ QAPI_ERROR_CLASS_DEVICENOTFOUND = 3,
+ QAPI_ERROR_CLASS_KVMMISSINGCAP = 4,
+ QAPI_ERROR_CLASS__MAX = 5,
+} QapiErrorClass;
+
+#define QapiErrorClass_str(val) \
+ qapi_enum_lookup(&QapiErrorClass_lookup, (val))
+
+extern const QEnumLookup QapiErrorClass_lookup;
+
+typedef enum IoOperationType {
+ IO_OPERATION_TYPE_READ = 0,
+ IO_OPERATION_TYPE_WRITE = 1,
+ IO_OPERATION_TYPE__MAX = 2,
+} IoOperationType;
+
+#define IoOperationType_str(val) \
+ qapi_enum_lookup(&IoOperationType_lookup, (val))
+
+extern const QEnumLookup IoOperationType_lookup;
+
+typedef enum OnOffAuto {
+ ON_OFF_AUTO_AUTO = 0,
+ ON_OFF_AUTO_ON = 1,
+ ON_OFF_AUTO_OFF = 2,
+ ON_OFF_AUTO__MAX = 3,
+} OnOffAuto;
+
+#define OnOffAuto_str(val) \
+ qapi_enum_lookup(&OnOffAuto_lookup, (val))
+
+extern const QEnumLookup OnOffAuto_lookup;
+
+typedef enum OnOffSplit {
+ ON_OFF_SPLIT_ON = 0,
+ ON_OFF_SPLIT_OFF = 1,
+ ON_OFF_SPLIT_SPLIT = 2,
+ ON_OFF_SPLIT__MAX = 3,
+} OnOffSplit;
+
+#define OnOffSplit_str(val) \
+ qapi_enum_lookup(&OnOffSplit_lookup, (val))
+
+extern const QEnumLookup OnOffSplit_lookup;
+
+typedef struct String String;
+
+typedef struct StrOrNull StrOrNull;
+
+typedef enum OffAutoPCIBAR {
+ OFF_AUTOPCIBAR_OFF = 0,
+ OFF_AUTOPCIBAR_AUTO = 1,
+ OFF_AUTOPCIBAR_BAR0 = 2,
+ OFF_AUTOPCIBAR_BAR1 = 3,
+ OFF_AUTOPCIBAR_BAR2 = 4,
+ OFF_AUTOPCIBAR_BAR3 = 5,
+ OFF_AUTOPCIBAR_BAR4 = 6,
+ OFF_AUTOPCIBAR_BAR5 = 7,
+ OFF_AUTOPCIBAR__MAX = 8,
+} OffAutoPCIBAR;
+
+#define OffAutoPCIBAR_str(val) \
+ qapi_enum_lookup(&OffAutoPCIBAR_lookup, (val))
+
+extern const QEnumLookup OffAutoPCIBAR_lookup;
+
+struct String {
+ char *str;
+};
+
+void qapi_free_String(String *obj);
+
+struct StrOrNull {
+ QType type;
+ union { /* union tag is @type */
+ char *s;
+ QNull *n;
+ } u;
+};
+
+void qapi_free_StrOrNull(StrOrNull *obj);
+
+#endif /* QAPI_TYPES_COMMON_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-crypto.c b/qemu2-auto-generated/qapi/qapi-types-crypto.c
new file mode 100644
index 0000000000..3fbe7c8862
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-crypto.c
@@ -0,0 +1,248 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-crypto.h"
+#include "qapi-visit-crypto.h"
+
+const QEnumLookup QCryptoTLSCredsEndpoint_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT] = "client",
+ [QCRYPTO_TLS_CREDS_ENDPOINT_SERVER] = "server",
+ },
+ .size = QCRYPTO_TLS_CREDS_ENDPOINT__MAX
+};
+
+const QEnumLookup QCryptoSecretFormat_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_SECRET_FORMAT_RAW] = "raw",
+ [QCRYPTO_SECRET_FORMAT_BASE64] = "base64",
+ },
+ .size = QCRYPTO_SECRET_FORMAT__MAX
+};
+
+const QEnumLookup QCryptoHashAlgorithm_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_HASH_ALG_MD5] = "md5",
+ [QCRYPTO_HASH_ALG_SHA1] = "sha1",
+ [QCRYPTO_HASH_ALG_SHA224] = "sha224",
+ [QCRYPTO_HASH_ALG_SHA256] = "sha256",
+ [QCRYPTO_HASH_ALG_SHA384] = "sha384",
+ [QCRYPTO_HASH_ALG_SHA512] = "sha512",
+ [QCRYPTO_HASH_ALG_RIPEMD160] = "ripemd160",
+ },
+ .size = QCRYPTO_HASH_ALG__MAX
+};
+
+const QEnumLookup QCryptoCipherAlgorithm_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_CIPHER_ALG_AES_128] = "aes-128",
+ [QCRYPTO_CIPHER_ALG_AES_192] = "aes-192",
+ [QCRYPTO_CIPHER_ALG_AES_256] = "aes-256",
+ [QCRYPTO_CIPHER_ALG_DES_RFB] = "des-rfb",
+ [QCRYPTO_CIPHER_ALG_3DES] = "3des",
+ [QCRYPTO_CIPHER_ALG_CAST5_128] = "cast5-128",
+ [QCRYPTO_CIPHER_ALG_SERPENT_128] = "serpent-128",
+ [QCRYPTO_CIPHER_ALG_SERPENT_192] = "serpent-192",
+ [QCRYPTO_CIPHER_ALG_SERPENT_256] = "serpent-256",
+ [QCRYPTO_CIPHER_ALG_TWOFISH_128] = "twofish-128",
+ [QCRYPTO_CIPHER_ALG_TWOFISH_192] = "twofish-192",
+ [QCRYPTO_CIPHER_ALG_TWOFISH_256] = "twofish-256",
+ },
+ .size = QCRYPTO_CIPHER_ALG__MAX
+};
+
+const QEnumLookup QCryptoCipherMode_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_CIPHER_MODE_ECB] = "ecb",
+ [QCRYPTO_CIPHER_MODE_CBC] = "cbc",
+ [QCRYPTO_CIPHER_MODE_XTS] = "xts",
+ [QCRYPTO_CIPHER_MODE_CTR] = "ctr",
+ },
+ .size = QCRYPTO_CIPHER_MODE__MAX
+};
+
+const QEnumLookup QCryptoIVGenAlgorithm_lookup = {
+ .array = (const char *const[]) {
+ [QCRYPTO_IVGEN_ALG_PLAIN] = "plain",
+ [QCRYPTO_IVGEN_ALG_PLAIN64] = "plain64",
+ [QCRYPTO_IVGEN_ALG_ESSIV] = "essiv",
+ },
+ .size = QCRYPTO_IVGEN_ALG__MAX
+};
+
+const QEnumLookup QCryptoBlockFormat_lookup = {
+ .array = (const char *const[]) {
+ [Q_CRYPTO_BLOCK_FORMAT_QCOW] = "qcow",
+ [Q_CRYPTO_BLOCK_FORMAT_LUKS] = "luks",
+ },
+ .size = Q_CRYPTO_BLOCK_FORMAT__MAX
+};
+
+void qapi_free_QCryptoBlockOptionsBase(QCryptoBlockOptionsBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockOptionsBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockOptionsQCow(QCryptoBlockOptionsQCow *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockOptionsQCow(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockOptionsLUKS(QCryptoBlockOptionsLUKS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockOptionsLUKS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockCreateOptionsLUKS(QCryptoBlockCreateOptionsLUKS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockCreateOptionsLUKS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockOpenOptions(QCryptoBlockOpenOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockOpenOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockCreateOptions(QCryptoBlockCreateOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockCreateOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfoBase(QCryptoBlockInfoBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfoBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfoLUKSSlot(QCryptoBlockInfoLUKSSlot *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfoLUKSSlot(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfoLUKSSlotList(QCryptoBlockInfoLUKSSlotList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfoLUKSSlotList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfoLUKS(QCryptoBlockInfoLUKS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfoLUKS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfoQCow(QCryptoBlockInfoQCow *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfoQCow(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_QCryptoBlockInfo(QCryptoBlockInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QCryptoBlockInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_crypto_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-crypto.h b/qemu2-auto-generated/qapi/qapi-types-crypto.h
new file mode 100644
index 0000000000..64a1cfa760
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-crypto.h
@@ -0,0 +1,279 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_CRYPTO_H
+#define QAPI_TYPES_CRYPTO_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef enum QCryptoTLSCredsEndpoint {
+ QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT = 0,
+ QCRYPTO_TLS_CREDS_ENDPOINT_SERVER = 1,
+ QCRYPTO_TLS_CREDS_ENDPOINT__MAX = 2,
+} QCryptoTLSCredsEndpoint;
+
+#define QCryptoTLSCredsEndpoint_str(val) \
+ qapi_enum_lookup(&QCryptoTLSCredsEndpoint_lookup, (val))
+
+extern const QEnumLookup QCryptoTLSCredsEndpoint_lookup;
+
+typedef enum QCryptoSecretFormat {
+ QCRYPTO_SECRET_FORMAT_RAW = 0,
+ QCRYPTO_SECRET_FORMAT_BASE64 = 1,
+ QCRYPTO_SECRET_FORMAT__MAX = 2,
+} QCryptoSecretFormat;
+
+#define QCryptoSecretFormat_str(val) \
+ qapi_enum_lookup(&QCryptoSecretFormat_lookup, (val))
+
+extern const QEnumLookup QCryptoSecretFormat_lookup;
+
+typedef enum QCryptoHashAlgorithm {
+ QCRYPTO_HASH_ALG_MD5 = 0,
+ QCRYPTO_HASH_ALG_SHA1 = 1,
+ QCRYPTO_HASH_ALG_SHA224 = 2,
+ QCRYPTO_HASH_ALG_SHA256 = 3,
+ QCRYPTO_HASH_ALG_SHA384 = 4,
+ QCRYPTO_HASH_ALG_SHA512 = 5,
+ QCRYPTO_HASH_ALG_RIPEMD160 = 6,
+ QCRYPTO_HASH_ALG__MAX = 7,
+} QCryptoHashAlgorithm;
+
+#define QCryptoHashAlgorithm_str(val) \
+ qapi_enum_lookup(&QCryptoHashAlgorithm_lookup, (val))
+
+extern const QEnumLookup QCryptoHashAlgorithm_lookup;
+
+typedef enum QCryptoCipherAlgorithm {
+ QCRYPTO_CIPHER_ALG_AES_128 = 0,
+ QCRYPTO_CIPHER_ALG_AES_192 = 1,
+ QCRYPTO_CIPHER_ALG_AES_256 = 2,
+ QCRYPTO_CIPHER_ALG_DES_RFB = 3,
+ QCRYPTO_CIPHER_ALG_3DES = 4,
+ QCRYPTO_CIPHER_ALG_CAST5_128 = 5,
+ QCRYPTO_CIPHER_ALG_SERPENT_128 = 6,
+ QCRYPTO_CIPHER_ALG_SERPENT_192 = 7,
+ QCRYPTO_CIPHER_ALG_SERPENT_256 = 8,
+ QCRYPTO_CIPHER_ALG_TWOFISH_128 = 9,
+ QCRYPTO_CIPHER_ALG_TWOFISH_192 = 10,
+ QCRYPTO_CIPHER_ALG_TWOFISH_256 = 11,
+ QCRYPTO_CIPHER_ALG__MAX = 12,
+} QCryptoCipherAlgorithm;
+
+#define QCryptoCipherAlgorithm_str(val) \
+ qapi_enum_lookup(&QCryptoCipherAlgorithm_lookup, (val))
+
+extern const QEnumLookup QCryptoCipherAlgorithm_lookup;
+
+typedef enum QCryptoCipherMode {
+ QCRYPTO_CIPHER_MODE_ECB = 0,
+ QCRYPTO_CIPHER_MODE_CBC = 1,
+ QCRYPTO_CIPHER_MODE_XTS = 2,
+ QCRYPTO_CIPHER_MODE_CTR = 3,
+ QCRYPTO_CIPHER_MODE__MAX = 4,
+} QCryptoCipherMode;
+
+#define QCryptoCipherMode_str(val) \
+ qapi_enum_lookup(&QCryptoCipherMode_lookup, (val))
+
+extern const QEnumLookup QCryptoCipherMode_lookup;
+
+typedef enum QCryptoIVGenAlgorithm {
+ QCRYPTO_IVGEN_ALG_PLAIN = 0,
+ QCRYPTO_IVGEN_ALG_PLAIN64 = 1,
+ QCRYPTO_IVGEN_ALG_ESSIV = 2,
+ QCRYPTO_IVGEN_ALG__MAX = 3,
+} QCryptoIVGenAlgorithm;
+
+#define QCryptoIVGenAlgorithm_str(val) \
+ qapi_enum_lookup(&QCryptoIVGenAlgorithm_lookup, (val))
+
+extern const QEnumLookup QCryptoIVGenAlgorithm_lookup;
+
+typedef enum QCryptoBlockFormat {
+ Q_CRYPTO_BLOCK_FORMAT_QCOW = 0,
+ Q_CRYPTO_BLOCK_FORMAT_LUKS = 1,
+ Q_CRYPTO_BLOCK_FORMAT__MAX = 2,
+} QCryptoBlockFormat;
+
+#define QCryptoBlockFormat_str(val) \
+ qapi_enum_lookup(&QCryptoBlockFormat_lookup, (val))
+
+extern const QEnumLookup QCryptoBlockFormat_lookup;
+
+typedef struct QCryptoBlockOptionsBase QCryptoBlockOptionsBase;
+
+typedef struct QCryptoBlockOptionsQCow QCryptoBlockOptionsQCow;
+
+typedef struct QCryptoBlockOptionsLUKS QCryptoBlockOptionsLUKS;
+
+typedef struct QCryptoBlockCreateOptionsLUKS QCryptoBlockCreateOptionsLUKS;
+
+typedef struct QCryptoBlockOpenOptions QCryptoBlockOpenOptions;
+
+typedef struct QCryptoBlockCreateOptions QCryptoBlockCreateOptions;
+
+typedef struct QCryptoBlockInfoBase QCryptoBlockInfoBase;
+
+typedef struct QCryptoBlockInfoLUKSSlot QCryptoBlockInfoLUKSSlot;
+
+typedef struct QCryptoBlockInfoLUKSSlotList QCryptoBlockInfoLUKSSlotList;
+
+typedef struct QCryptoBlockInfoLUKS QCryptoBlockInfoLUKS;
+
+typedef struct QCryptoBlockInfoQCow QCryptoBlockInfoQCow;
+
+typedef struct QCryptoBlockInfo QCryptoBlockInfo;
+
+struct QCryptoBlockOptionsBase {
+ QCryptoBlockFormat format;
+};
+
+void qapi_free_QCryptoBlockOptionsBase(QCryptoBlockOptionsBase *obj);
+
+struct QCryptoBlockOptionsQCow {
+ bool has_key_secret;
+ char *key_secret;
+};
+
+void qapi_free_QCryptoBlockOptionsQCow(QCryptoBlockOptionsQCow *obj);
+
+struct QCryptoBlockOptionsLUKS {
+ bool has_key_secret;
+ char *key_secret;
+};
+
+void qapi_free_QCryptoBlockOptionsLUKS(QCryptoBlockOptionsLUKS *obj);
+
+struct QCryptoBlockCreateOptionsLUKS {
+ /* Members inherited from QCryptoBlockOptionsLUKS: */
+ bool has_key_secret;
+ char *key_secret;
+ /* Own members: */
+ bool has_cipher_alg;
+ QCryptoCipherAlgorithm cipher_alg;
+ bool has_cipher_mode;
+ QCryptoCipherMode cipher_mode;
+ bool has_ivgen_alg;
+ QCryptoIVGenAlgorithm ivgen_alg;
+ bool has_ivgen_hash_alg;
+ QCryptoHashAlgorithm ivgen_hash_alg;
+ bool has_hash_alg;
+ QCryptoHashAlgorithm hash_alg;
+ bool has_iter_time;
+ int64_t iter_time;
+};
+
+static inline QCryptoBlockOptionsLUKS *qapi_QCryptoBlockCreateOptionsLUKS_base(const QCryptoBlockCreateOptionsLUKS *obj)
+{
+ return (QCryptoBlockOptionsLUKS *)obj;
+}
+
+void qapi_free_QCryptoBlockCreateOptionsLUKS(QCryptoBlockCreateOptionsLUKS *obj);
+
+struct QCryptoBlockOpenOptions {
+ /* Members inherited from QCryptoBlockOptionsBase: */
+ QCryptoBlockFormat format;
+ /* Own members: */
+ union { /* union tag is @format */
+ QCryptoBlockOptionsQCow qcow;
+ QCryptoBlockOptionsLUKS luks;
+ } u;
+};
+
+static inline QCryptoBlockOptionsBase *qapi_QCryptoBlockOpenOptions_base(const QCryptoBlockOpenOptions *obj)
+{
+ return (QCryptoBlockOptionsBase *)obj;
+}
+
+void qapi_free_QCryptoBlockOpenOptions(QCryptoBlockOpenOptions *obj);
+
+struct QCryptoBlockCreateOptions {
+ /* Members inherited from QCryptoBlockOptionsBase: */
+ QCryptoBlockFormat format;
+ /* Own members: */
+ union { /* union tag is @format */
+ QCryptoBlockOptionsQCow qcow;
+ QCryptoBlockCreateOptionsLUKS luks;
+ } u;
+};
+
+static inline QCryptoBlockOptionsBase *qapi_QCryptoBlockCreateOptions_base(const QCryptoBlockCreateOptions *obj)
+{
+ return (QCryptoBlockOptionsBase *)obj;
+}
+
+void qapi_free_QCryptoBlockCreateOptions(QCryptoBlockCreateOptions *obj);
+
+struct QCryptoBlockInfoBase {
+ QCryptoBlockFormat format;
+};
+
+void qapi_free_QCryptoBlockInfoBase(QCryptoBlockInfoBase *obj);
+
+struct QCryptoBlockInfoLUKSSlot {
+ bool active;
+ bool has_iters;
+ int64_t iters;
+ bool has_stripes;
+ int64_t stripes;
+ int64_t key_offset;
+};
+
+void qapi_free_QCryptoBlockInfoLUKSSlot(QCryptoBlockInfoLUKSSlot *obj);
+
+struct QCryptoBlockInfoLUKSSlotList {
+ QCryptoBlockInfoLUKSSlotList *next;
+ QCryptoBlockInfoLUKSSlot *value;
+};
+
+void qapi_free_QCryptoBlockInfoLUKSSlotList(QCryptoBlockInfoLUKSSlotList *obj);
+
+struct QCryptoBlockInfoLUKS {
+ QCryptoCipherAlgorithm cipher_alg;
+ QCryptoCipherMode cipher_mode;
+ QCryptoIVGenAlgorithm ivgen_alg;
+ bool has_ivgen_hash_alg;
+ QCryptoHashAlgorithm ivgen_hash_alg;
+ QCryptoHashAlgorithm hash_alg;
+ int64_t payload_offset;
+ int64_t master_key_iters;
+ char *uuid;
+ QCryptoBlockInfoLUKSSlotList *slots;
+};
+
+void qapi_free_QCryptoBlockInfoLUKS(QCryptoBlockInfoLUKS *obj);
+
+struct QCryptoBlockInfoQCow {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_QCryptoBlockInfoQCow(QCryptoBlockInfoQCow *obj);
+
+struct QCryptoBlockInfo {
+ /* Members inherited from QCryptoBlockInfoBase: */
+ QCryptoBlockFormat format;
+ /* Own members: */
+ union { /* union tag is @format */
+ QCryptoBlockInfoQCow qcow;
+ QCryptoBlockInfoLUKS luks;
+ } u;
+};
+
+static inline QCryptoBlockInfoBase *qapi_QCryptoBlockInfo_base(const QCryptoBlockInfo *obj)
+{
+ return (QCryptoBlockInfoBase *)obj;
+}
+
+void qapi_free_QCryptoBlockInfo(QCryptoBlockInfo *obj);
+
+#endif /* QAPI_TYPES_CRYPTO_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-introspect.c b/qemu2-auto-generated/qapi/qapi-types-introspect.c
new file mode 100644
index 0000000000..98904fe84e
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-introspect.c
@@ -0,0 +1,240 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-introspect.h"
+#include "qapi-visit-introspect.h"
+
+void qapi_free_SchemaInfoList(SchemaInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SchemaMetaType_lookup = {
+ .array = (const char *const[]) {
+ [SCHEMA_META_TYPE_BUILTIN] = "builtin",
+ [SCHEMA_META_TYPE_ENUM] = "enum",
+ [SCHEMA_META_TYPE_ARRAY] = "array",
+ [SCHEMA_META_TYPE_OBJECT] = "object",
+ [SCHEMA_META_TYPE_ALTERNATE] = "alternate",
+ [SCHEMA_META_TYPE_COMMAND] = "command",
+ [SCHEMA_META_TYPE_EVENT] = "event",
+ },
+ .size = SCHEMA_META_TYPE__MAX
+};
+
+void qapi_free_SchemaInfo(SchemaInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoBuiltin(SchemaInfoBuiltin *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoBuiltin(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup JSONType_lookup = {
+ .array = (const char *const[]) {
+ [JSON_TYPE_STRING] = "string",
+ [JSON_TYPE_NUMBER] = "number",
+ [JSON_TYPE_INT] = "int",
+ [JSON_TYPE_BOOLEAN] = "boolean",
+ [JSON_TYPE_NULL] = "null",
+ [JSON_TYPE_OBJECT] = "object",
+ [JSON_TYPE_ARRAY] = "array",
+ [JSON_TYPE_VALUE] = "value",
+ },
+ .size = JSON_TYPE__MAX
+};
+
+void qapi_free_SchemaInfoEnum(SchemaInfoEnum *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoEnum(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoArray(SchemaInfoArray *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoArray(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoObjectMemberList(SchemaInfoObjectMemberList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoObjectMemberList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoObjectVariantList(SchemaInfoObjectVariantList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoObjectVariantList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoObject(SchemaInfoObject *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoObject(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoObjectMember(SchemaInfoObjectMember *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoObjectMember(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoObjectVariant(SchemaInfoObjectVariant *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoObjectVariant(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoAlternateMemberList(SchemaInfoAlternateMemberList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoAlternateMemberList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoAlternate(SchemaInfoAlternate *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoAlternate(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoAlternateMember(SchemaInfoAlternateMember *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoAlternateMember(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoCommand(SchemaInfoCommand *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoCommand(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SchemaInfoEvent(SchemaInfoEvent *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SchemaInfoEvent(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_introspect_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-introspect.h b/qemu2-auto-generated/qapi/qapi-types-introspect.h
new file mode 100644
index 0000000000..8ea44d0a1a
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-introspect.h
@@ -0,0 +1,202 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_INTROSPECT_H
+#define QAPI_TYPES_INTROSPECT_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef struct SchemaInfoList SchemaInfoList;
+
+typedef enum SchemaMetaType {
+ SCHEMA_META_TYPE_BUILTIN = 0,
+ SCHEMA_META_TYPE_ENUM = 1,
+ SCHEMA_META_TYPE_ARRAY = 2,
+ SCHEMA_META_TYPE_OBJECT = 3,
+ SCHEMA_META_TYPE_ALTERNATE = 4,
+ SCHEMA_META_TYPE_COMMAND = 5,
+ SCHEMA_META_TYPE_EVENT = 6,
+ SCHEMA_META_TYPE__MAX = 7,
+} SchemaMetaType;
+
+#define SchemaMetaType_str(val) \
+ qapi_enum_lookup(&SchemaMetaType_lookup, (val))
+
+extern const QEnumLookup SchemaMetaType_lookup;
+
+typedef struct q_obj_SchemaInfo_base q_obj_SchemaInfo_base;
+
+typedef struct SchemaInfo SchemaInfo;
+
+typedef struct SchemaInfoBuiltin SchemaInfoBuiltin;
+
+typedef enum JSONType {
+ JSON_TYPE_STRING = 0,
+ JSON_TYPE_NUMBER = 1,
+ JSON_TYPE_INT = 2,
+ JSON_TYPE_BOOLEAN = 3,
+ JSON_TYPE_NULL = 4,
+ JSON_TYPE_OBJECT = 5,
+ JSON_TYPE_ARRAY = 6,
+ JSON_TYPE_VALUE = 7,
+ JSON_TYPE__MAX = 8,
+} JSONType;
+
+#define JSONType_str(val) \
+ qapi_enum_lookup(&JSONType_lookup, (val))
+
+extern const QEnumLookup JSONType_lookup;
+
+typedef struct SchemaInfoEnum SchemaInfoEnum;
+
+typedef struct SchemaInfoArray SchemaInfoArray;
+
+typedef struct SchemaInfoObjectMemberList SchemaInfoObjectMemberList;
+
+typedef struct SchemaInfoObjectVariantList SchemaInfoObjectVariantList;
+
+typedef struct SchemaInfoObject SchemaInfoObject;
+
+typedef struct SchemaInfoObjectMember SchemaInfoObjectMember;
+
+typedef struct SchemaInfoObjectVariant SchemaInfoObjectVariant;
+
+typedef struct SchemaInfoAlternateMemberList SchemaInfoAlternateMemberList;
+
+typedef struct SchemaInfoAlternate SchemaInfoAlternate;
+
+typedef struct SchemaInfoAlternateMember SchemaInfoAlternateMember;
+
+typedef struct SchemaInfoCommand SchemaInfoCommand;
+
+typedef struct SchemaInfoEvent SchemaInfoEvent;
+
+struct SchemaInfoList {
+ SchemaInfoList *next;
+ SchemaInfo *value;
+};
+
+void qapi_free_SchemaInfoList(SchemaInfoList *obj);
+
+struct q_obj_SchemaInfo_base {
+ char *name;
+ SchemaMetaType meta_type;
+};
+
+struct SchemaInfoBuiltin {
+ JSONType json_type;
+};
+
+struct SchemaInfoEnum {
+ strList *values;
+};
+
+struct SchemaInfoArray {
+ char *element_type;
+};
+
+struct SchemaInfoObject {
+ SchemaInfoObjectMemberList *members;
+ bool has_tag;
+ char *tag;
+ bool has_variants;
+ SchemaInfoObjectVariantList *variants;
+};
+
+struct SchemaInfoAlternate {
+ SchemaInfoAlternateMemberList *members;
+};
+
+struct SchemaInfoCommand {
+ char *arg_type;
+ char *ret_type;
+ bool allow_oob;
+};
+
+struct SchemaInfoEvent {
+ char *arg_type;
+};
+
+struct SchemaInfo {
+ char *name;
+ SchemaMetaType meta_type;
+ union { /* union tag is @meta_type */
+ SchemaInfoBuiltin builtin;
+ SchemaInfoEnum q_enum;
+ SchemaInfoArray array;
+ SchemaInfoObject object;
+ SchemaInfoAlternate alternate;
+ SchemaInfoCommand command;
+ SchemaInfoEvent event;
+ } u;
+};
+
+void qapi_free_SchemaInfo(SchemaInfo *obj);
+
+void qapi_free_SchemaInfoBuiltin(SchemaInfoBuiltin *obj);
+
+void qapi_free_SchemaInfoEnum(SchemaInfoEnum *obj);
+
+void qapi_free_SchemaInfoArray(SchemaInfoArray *obj);
+
+struct SchemaInfoObjectMemberList {
+ SchemaInfoObjectMemberList *next;
+ SchemaInfoObjectMember *value;
+};
+
+void qapi_free_SchemaInfoObjectMemberList(SchemaInfoObjectMemberList *obj);
+
+struct SchemaInfoObjectVariantList {
+ SchemaInfoObjectVariantList *next;
+ SchemaInfoObjectVariant *value;
+};
+
+void qapi_free_SchemaInfoObjectVariantList(SchemaInfoObjectVariantList *obj);
+
+void qapi_free_SchemaInfoObject(SchemaInfoObject *obj);
+
+struct SchemaInfoObjectMember {
+ char *name;
+ char *type;
+ bool has_q_default;
+ QObject *q_default;
+};
+
+void qapi_free_SchemaInfoObjectMember(SchemaInfoObjectMember *obj);
+
+struct SchemaInfoObjectVariant {
+ char *q_case;
+ char *type;
+};
+
+void qapi_free_SchemaInfoObjectVariant(SchemaInfoObjectVariant *obj);
+
+struct SchemaInfoAlternateMemberList {
+ SchemaInfoAlternateMemberList *next;
+ SchemaInfoAlternateMember *value;
+};
+
+void qapi_free_SchemaInfoAlternateMemberList(SchemaInfoAlternateMemberList *obj);
+
+void qapi_free_SchemaInfoAlternate(SchemaInfoAlternate *obj);
+
+struct SchemaInfoAlternateMember {
+ char *type;
+};
+
+void qapi_free_SchemaInfoAlternateMember(SchemaInfoAlternateMember *obj);
+
+void qapi_free_SchemaInfoCommand(SchemaInfoCommand *obj);
+
+void qapi_free_SchemaInfoEvent(SchemaInfoEvent *obj);
+
+#endif /* QAPI_TYPES_INTROSPECT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-migration.c b/qemu2-auto-generated/qapi/qapi-types-migration.c
new file mode 100644
index 0000000000..2f4800fdfa
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-migration.c
@@ -0,0 +1,212 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-migration.h"
+#include "qapi-visit-migration.h"
+
+void qapi_free_MigrationStats(MigrationStats *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationStats(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_XBZRLECacheStats(XBZRLECacheStats *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_XBZRLECacheStats(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup MigrationStatus_lookup = {
+ .array = (const char *const[]) {
+ [MIGRATION_STATUS_NONE] = "none",
+ [MIGRATION_STATUS_SETUP] = "setup",
+ [MIGRATION_STATUS_CANCELLING] = "cancelling",
+ [MIGRATION_STATUS_CANCELLED] = "cancelled",
+ [MIGRATION_STATUS_ACTIVE] = "active",
+ [MIGRATION_STATUS_POSTCOPY_ACTIVE] = "postcopy-active",
+ [MIGRATION_STATUS_COMPLETED] = "completed",
+ [MIGRATION_STATUS_FAILED] = "failed",
+ [MIGRATION_STATUS_COLO] = "colo",
+ [MIGRATION_STATUS_PRE_SWITCHOVER] = "pre-switchover",
+ [MIGRATION_STATUS_DEVICE] = "device",
+ },
+ .size = MIGRATION_STATUS__MAX
+};
+
+void qapi_free_MigrationInfo(MigrationInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup MigrationCapability_lookup = {
+ .array = (const char *const[]) {
+ [MIGRATION_CAPABILITY_XBZRLE] = "xbzrle",
+ [MIGRATION_CAPABILITY_RDMA_PIN_ALL] = "rdma-pin-all",
+ [MIGRATION_CAPABILITY_AUTO_CONVERGE] = "auto-converge",
+ [MIGRATION_CAPABILITY_ZERO_BLOCKS] = "zero-blocks",
+ [MIGRATION_CAPABILITY_COMPRESS] = "compress",
+ [MIGRATION_CAPABILITY_EVENTS] = "events",
+ [MIGRATION_CAPABILITY_POSTCOPY_RAM] = "postcopy-ram",
+ [MIGRATION_CAPABILITY_X_COLO] = "x-colo",
+ [MIGRATION_CAPABILITY_RELEASE_RAM] = "release-ram",
+ [MIGRATION_CAPABILITY_BLOCK] = "block",
+ [MIGRATION_CAPABILITY_RETURN_PATH] = "return-path",
+ [MIGRATION_CAPABILITY_PAUSE_BEFORE_SWITCHOVER] = "pause-before-switchover",
+ [MIGRATION_CAPABILITY_X_MULTIFD] = "x-multifd",
+ [MIGRATION_CAPABILITY_DIRTY_BITMAPS] = "dirty-bitmaps",
+ },
+ .size = MIGRATION_CAPABILITY__MAX
+};
+
+void qapi_free_MigrationCapabilityStatus(MigrationCapabilityStatus *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationCapabilityStatus(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MigrationCapabilityStatusList(MigrationCapabilityStatusList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationCapabilityStatusList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup MigrationParameter_lookup = {
+ .array = (const char *const[]) {
+ [MIGRATION_PARAMETER_COMPRESS_LEVEL] = "compress-level",
+ [MIGRATION_PARAMETER_COMPRESS_THREADS] = "compress-threads",
+ [MIGRATION_PARAMETER_DECOMPRESS_THREADS] = "decompress-threads",
+ [MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL] = "cpu-throttle-initial",
+ [MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT] = "cpu-throttle-increment",
+ [MIGRATION_PARAMETER_TLS_CREDS] = "tls-creds",
+ [MIGRATION_PARAMETER_TLS_HOSTNAME] = "tls-hostname",
+ [MIGRATION_PARAMETER_MAX_BANDWIDTH] = "max-bandwidth",
+ [MIGRATION_PARAMETER_DOWNTIME_LIMIT] = "downtime-limit",
+ [MIGRATION_PARAMETER_X_CHECKPOINT_DELAY] = "x-checkpoint-delay",
+ [MIGRATION_PARAMETER_BLOCK_INCREMENTAL] = "block-incremental",
+ [MIGRATION_PARAMETER_X_MULTIFD_CHANNELS] = "x-multifd-channels",
+ [MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT] = "x-multifd-page-count",
+ [MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE] = "xbzrle-cache-size",
+ },
+ .size = MIGRATION_PARAMETER__MAX
+};
+
+void qapi_free_MigrateSetParameters(MigrateSetParameters *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrateSetParameters(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MigrationParameters(MigrationParameters *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MigrationParameters(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup COLOMessage_lookup = {
+ .array = (const char *const[]) {
+ [COLO_MESSAGE_CHECKPOINT_READY] = "checkpoint-ready",
+ [COLO_MESSAGE_CHECKPOINT_REQUEST] = "checkpoint-request",
+ [COLO_MESSAGE_CHECKPOINT_REPLY] = "checkpoint-reply",
+ [COLO_MESSAGE_VMSTATE_SEND] = "vmstate-send",
+ [COLO_MESSAGE_VMSTATE_SIZE] = "vmstate-size",
+ [COLO_MESSAGE_VMSTATE_RECEIVED] = "vmstate-received",
+ [COLO_MESSAGE_VMSTATE_LOADED] = "vmstate-loaded",
+ },
+ .size = COLO_MESSAGE__MAX
+};
+
+const QEnumLookup COLOMode_lookup = {
+ .array = (const char *const[]) {
+ [COLO_MODE_UNKNOWN] = "unknown",
+ [COLO_MODE_PRIMARY] = "primary",
+ [COLO_MODE_SECONDARY] = "secondary",
+ },
+ .size = COLO_MODE__MAX
+};
+
+const QEnumLookup FailoverStatus_lookup = {
+ .array = (const char *const[]) {
+ [FAILOVER_STATUS_NONE] = "none",
+ [FAILOVER_STATUS_REQUIRE] = "require",
+ [FAILOVER_STATUS_ACTIVE] = "active",
+ [FAILOVER_STATUS_COMPLETED] = "completed",
+ [FAILOVER_STATUS_RELAUNCH] = "relaunch",
+ },
+ .size = FAILOVER_STATUS__MAX
+};
+
+void qapi_free_ReplicationStatus(ReplicationStatus *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ReplicationStatus(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_migration_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-migration.h b/qemu2-auto-generated/qapi/qapi-types-migration.h
new file mode 100644
index 0000000000..85a0e3b4e5
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-migration.h
@@ -0,0 +1,374 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_MIGRATION_H
+#define QAPI_TYPES_MIGRATION_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-common.h"
+
+typedef struct MigrationStats MigrationStats;
+
+typedef struct XBZRLECacheStats XBZRLECacheStats;
+
+typedef enum MigrationStatus {
+ MIGRATION_STATUS_NONE = 0,
+ MIGRATION_STATUS_SETUP = 1,
+ MIGRATION_STATUS_CANCELLING = 2,
+ MIGRATION_STATUS_CANCELLED = 3,
+ MIGRATION_STATUS_ACTIVE = 4,
+ MIGRATION_STATUS_POSTCOPY_ACTIVE = 5,
+ MIGRATION_STATUS_COMPLETED = 6,
+ MIGRATION_STATUS_FAILED = 7,
+ MIGRATION_STATUS_COLO = 8,
+ MIGRATION_STATUS_PRE_SWITCHOVER = 9,
+ MIGRATION_STATUS_DEVICE = 10,
+ MIGRATION_STATUS__MAX = 11,
+} MigrationStatus;
+
+#define MigrationStatus_str(val) \
+ qapi_enum_lookup(&MigrationStatus_lookup, (val))
+
+extern const QEnumLookup MigrationStatus_lookup;
+
+typedef struct MigrationInfo MigrationInfo;
+
+typedef enum MigrationCapability {
+ MIGRATION_CAPABILITY_XBZRLE = 0,
+ MIGRATION_CAPABILITY_RDMA_PIN_ALL = 1,
+ MIGRATION_CAPABILITY_AUTO_CONVERGE = 2,
+ MIGRATION_CAPABILITY_ZERO_BLOCKS = 3,
+ MIGRATION_CAPABILITY_COMPRESS = 4,
+ MIGRATION_CAPABILITY_EVENTS = 5,
+ MIGRATION_CAPABILITY_POSTCOPY_RAM = 6,
+ MIGRATION_CAPABILITY_X_COLO = 7,
+ MIGRATION_CAPABILITY_RELEASE_RAM = 8,
+ MIGRATION_CAPABILITY_BLOCK = 9,
+ MIGRATION_CAPABILITY_RETURN_PATH = 10,
+ MIGRATION_CAPABILITY_PAUSE_BEFORE_SWITCHOVER = 11,
+ MIGRATION_CAPABILITY_X_MULTIFD = 12,
+ MIGRATION_CAPABILITY_DIRTY_BITMAPS = 13,
+ MIGRATION_CAPABILITY__MAX = 14,
+} MigrationCapability;
+
+#define MigrationCapability_str(val) \
+ qapi_enum_lookup(&MigrationCapability_lookup, (val))
+
+extern const QEnumLookup MigrationCapability_lookup;
+
+typedef struct MigrationCapabilityStatus MigrationCapabilityStatus;
+
+typedef struct MigrationCapabilityStatusList MigrationCapabilityStatusList;
+
+typedef struct q_obj_migrate_set_capabilities_arg q_obj_migrate_set_capabilities_arg;
+
+typedef enum MigrationParameter {
+ MIGRATION_PARAMETER_COMPRESS_LEVEL = 0,
+ MIGRATION_PARAMETER_COMPRESS_THREADS = 1,
+ MIGRATION_PARAMETER_DECOMPRESS_THREADS = 2,
+ MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL = 3,
+ MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT = 4,
+ MIGRATION_PARAMETER_TLS_CREDS = 5,
+ MIGRATION_PARAMETER_TLS_HOSTNAME = 6,
+ MIGRATION_PARAMETER_MAX_BANDWIDTH = 7,
+ MIGRATION_PARAMETER_DOWNTIME_LIMIT = 8,
+ MIGRATION_PARAMETER_X_CHECKPOINT_DELAY = 9,
+ MIGRATION_PARAMETER_BLOCK_INCREMENTAL = 10,
+ MIGRATION_PARAMETER_X_MULTIFD_CHANNELS = 11,
+ MIGRATION_PARAMETER_X_MULTIFD_PAGE_COUNT = 12,
+ MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE = 13,
+ MIGRATION_PARAMETER__MAX = 14,
+} MigrationParameter;
+
+#define MigrationParameter_str(val) \
+ qapi_enum_lookup(&MigrationParameter_lookup, (val))
+
+extern const QEnumLookup MigrationParameter_lookup;
+
+typedef struct MigrateSetParameters MigrateSetParameters;
+
+typedef struct MigrationParameters MigrationParameters;
+
+typedef struct q_obj_client_migrate_info_arg q_obj_client_migrate_info_arg;
+
+typedef struct q_obj_MIGRATION_arg q_obj_MIGRATION_arg;
+
+typedef struct q_obj_MIGRATION_PASS_arg q_obj_MIGRATION_PASS_arg;
+
+typedef enum COLOMessage {
+ COLO_MESSAGE_CHECKPOINT_READY = 0,
+ COLO_MESSAGE_CHECKPOINT_REQUEST = 1,
+ COLO_MESSAGE_CHECKPOINT_REPLY = 2,
+ COLO_MESSAGE_VMSTATE_SEND = 3,
+ COLO_MESSAGE_VMSTATE_SIZE = 4,
+ COLO_MESSAGE_VMSTATE_RECEIVED = 5,
+ COLO_MESSAGE_VMSTATE_LOADED = 6,
+ COLO_MESSAGE__MAX = 7,
+} COLOMessage;
+
+#define COLOMessage_str(val) \
+ qapi_enum_lookup(&COLOMessage_lookup, (val))
+
+extern const QEnumLookup COLOMessage_lookup;
+
+typedef enum COLOMode {
+ COLO_MODE_UNKNOWN = 0,
+ COLO_MODE_PRIMARY = 1,
+ COLO_MODE_SECONDARY = 2,
+ COLO_MODE__MAX = 3,
+} COLOMode;
+
+#define COLOMode_str(val) \
+ qapi_enum_lookup(&COLOMode_lookup, (val))
+
+extern const QEnumLookup COLOMode_lookup;
+
+typedef enum FailoverStatus {
+ FAILOVER_STATUS_NONE = 0,
+ FAILOVER_STATUS_REQUIRE = 1,
+ FAILOVER_STATUS_ACTIVE = 2,
+ FAILOVER_STATUS_COMPLETED = 3,
+ FAILOVER_STATUS_RELAUNCH = 4,
+ FAILOVER_STATUS__MAX = 5,
+} FailoverStatus;
+
+#define FailoverStatus_str(val) \
+ qapi_enum_lookup(&FailoverStatus_lookup, (val))
+
+extern const QEnumLookup FailoverStatus_lookup;
+
+typedef struct q_obj_migrate_continue_arg q_obj_migrate_continue_arg;
+
+typedef struct q_obj_migrate_set_downtime_arg q_obj_migrate_set_downtime_arg;
+
+typedef struct q_obj_migrate_set_speed_arg q_obj_migrate_set_speed_arg;
+
+typedef struct q_obj_migrate_set_cache_size_arg q_obj_migrate_set_cache_size_arg;
+
+typedef struct q_obj_migrate_arg q_obj_migrate_arg;
+
+typedef struct q_obj_migrate_incoming_arg q_obj_migrate_incoming_arg;
+
+typedef struct q_obj_xen_save_devices_state_arg q_obj_xen_save_devices_state_arg;
+
+typedef struct q_obj_xen_set_replication_arg q_obj_xen_set_replication_arg;
+
+typedef struct ReplicationStatus ReplicationStatus;
+
+struct MigrationStats {
+ int64_t transferred;
+ int64_t remaining;
+ int64_t total;
+ int64_t duplicate;
+ int64_t skipped;
+ int64_t normal;
+ int64_t normal_bytes;
+ int64_t dirty_pages_rate;
+ double mbps;
+ int64_t dirty_sync_count;
+ int64_t postcopy_requests;
+ int64_t page_size;
+};
+
+void qapi_free_MigrationStats(MigrationStats *obj);
+
+struct XBZRLECacheStats {
+ int64_t cache_size;
+ int64_t bytes;
+ int64_t pages;
+ int64_t cache_miss;
+ double cache_miss_rate;
+ int64_t overflow;
+};
+
+void qapi_free_XBZRLECacheStats(XBZRLECacheStats *obj);
+
+struct MigrationInfo {
+ bool has_status;
+ MigrationStatus status;
+ bool has_ram;
+ MigrationStats *ram;
+ bool has_disk;
+ MigrationStats *disk;
+ bool has_xbzrle_cache;
+ XBZRLECacheStats *xbzrle_cache;
+ bool has_total_time;
+ int64_t total_time;
+ bool has_expected_downtime;
+ int64_t expected_downtime;
+ bool has_downtime;
+ int64_t downtime;
+ bool has_setup_time;
+ int64_t setup_time;
+ bool has_cpu_throttle_percentage;
+ int64_t cpu_throttle_percentage;
+ bool has_error_desc;
+ char *error_desc;
+};
+
+void qapi_free_MigrationInfo(MigrationInfo *obj);
+
+struct MigrationCapabilityStatus {
+ MigrationCapability capability;
+ bool state;
+};
+
+void qapi_free_MigrationCapabilityStatus(MigrationCapabilityStatus *obj);
+
+struct MigrationCapabilityStatusList {
+ MigrationCapabilityStatusList *next;
+ MigrationCapabilityStatus *value;
+};
+
+void qapi_free_MigrationCapabilityStatusList(MigrationCapabilityStatusList *obj);
+
+struct q_obj_migrate_set_capabilities_arg {
+ MigrationCapabilityStatusList *capabilities;
+};
+
+struct MigrateSetParameters {
+ bool has_compress_level;
+ int64_t compress_level;
+ bool has_compress_threads;
+ int64_t compress_threads;
+ bool has_decompress_threads;
+ int64_t decompress_threads;
+ bool has_cpu_throttle_initial;
+ int64_t cpu_throttle_initial;
+ bool has_cpu_throttle_increment;
+ int64_t cpu_throttle_increment;
+ bool has_tls_creds;
+ StrOrNull *tls_creds;
+ bool has_tls_hostname;
+ StrOrNull *tls_hostname;
+ bool has_max_bandwidth;
+ int64_t max_bandwidth;
+ bool has_downtime_limit;
+ int64_t downtime_limit;
+ bool has_x_checkpoint_delay;
+ int64_t x_checkpoint_delay;
+ bool has_block_incremental;
+ bool block_incremental;
+ bool has_x_multifd_channels;
+ int64_t x_multifd_channels;
+ bool has_x_multifd_page_count;
+ int64_t x_multifd_page_count;
+ bool has_xbzrle_cache_size;
+ uint64_t xbzrle_cache_size;
+};
+
+void qapi_free_MigrateSetParameters(MigrateSetParameters *obj);
+
+struct MigrationParameters {
+ bool has_compress_level;
+ uint8_t compress_level;
+ bool has_compress_threads;
+ uint8_t compress_threads;
+ bool has_decompress_threads;
+ uint8_t decompress_threads;
+ bool has_cpu_throttle_initial;
+ uint8_t cpu_throttle_initial;
+ bool has_cpu_throttle_increment;
+ uint8_t cpu_throttle_increment;
+ bool has_tls_creds;
+ char *tls_creds;
+ bool has_tls_hostname;
+ char *tls_hostname;
+ bool has_max_bandwidth;
+ uint64_t max_bandwidth;
+ bool has_downtime_limit;
+ uint64_t downtime_limit;
+ bool has_x_checkpoint_delay;
+ uint32_t x_checkpoint_delay;
+ bool has_block_incremental;
+ bool block_incremental;
+ bool has_x_multifd_channels;
+ uint8_t x_multifd_channels;
+ bool has_x_multifd_page_count;
+ uint32_t x_multifd_page_count;
+ bool has_xbzrle_cache_size;
+ uint64_t xbzrle_cache_size;
+};
+
+void qapi_free_MigrationParameters(MigrationParameters *obj);
+
+struct q_obj_client_migrate_info_arg {
+ char *protocol;
+ char *hostname;
+ bool has_port;
+ int64_t port;
+ bool has_tls_port;
+ int64_t tls_port;
+ bool has_cert_subject;
+ char *cert_subject;
+};
+
+struct q_obj_MIGRATION_arg {
+ MigrationStatus status;
+};
+
+struct q_obj_MIGRATION_PASS_arg {
+ int64_t pass;
+};
+
+struct q_obj_migrate_continue_arg {
+ MigrationStatus state;
+};
+
+struct q_obj_migrate_set_downtime_arg {
+ double value;
+};
+
+struct q_obj_migrate_set_speed_arg {
+ int64_t value;
+};
+
+struct q_obj_migrate_set_cache_size_arg {
+ int64_t value;
+};
+
+struct q_obj_migrate_arg {
+ char *uri;
+ bool has_blk;
+ bool blk;
+ bool has_inc;
+ bool inc;
+ bool has_detach;
+ bool detach;
+};
+
+struct q_obj_migrate_incoming_arg {
+ char *uri;
+};
+
+struct q_obj_xen_save_devices_state_arg {
+ char *filename;
+ bool has_live;
+ bool live;
+};
+
+struct q_obj_xen_set_replication_arg {
+ bool enable;
+ bool primary;
+ bool has_failover;
+ bool failover;
+};
+
+struct ReplicationStatus {
+ bool error;
+ bool has_desc;
+ char *desc;
+};
+
+void qapi_free_ReplicationStatus(ReplicationStatus *obj);
+
+#endif /* QAPI_TYPES_MIGRATION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-misc.c b/qemu2-auto-generated/qapi/qapi-types-misc.c
new file mode 100644
index 0000000000..9f2c8534ac
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-misc.c
@@ -0,0 +1,1303 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-misc.h"
+#include "qapi-visit-misc.h"
+
+void qapi_free_QMPCapabilityList(QMPCapabilityList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_QMPCapabilityList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QMPCapability_lookup = {
+ .array = (const char *const[]) {
+ [QMP_CAPABILITY_OOB] = "oob",
+ },
+ .size = QMP_CAPABILITY__MAX
+};
+
+void qapi_free_VersionTriple(VersionTriple *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VersionTriple(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VersionInfo(VersionInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VersionInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CommandInfo(CommandInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CommandInfoList(CommandInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup LostTickPolicy_lookup = {
+ .array = (const char *const[]) {
+ [LOST_TICK_POLICY_DISCARD] = "discard",
+ [LOST_TICK_POLICY_DELAY] = "delay",
+ [LOST_TICK_POLICY_MERGE] = "merge",
+ [LOST_TICK_POLICY_SLEW] = "slew",
+ },
+ .size = LOST_TICK_POLICY__MAX
+};
+
+void qapi_free_NameInfo(NameInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NameInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_KvmInfo(KvmInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_KvmInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UuidInfo(UuidInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UuidInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_EventInfo(EventInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_EventInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_EventInfoList(EventInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_EventInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CpuInfoArch_lookup = {
+ .array = (const char *const[]) {
+ [CPU_INFO_ARCH_X86] = "x86",
+ [CPU_INFO_ARCH_SPARC] = "sparc",
+ [CPU_INFO_ARCH_PPC] = "ppc",
+ [CPU_INFO_ARCH_MIPS] = "mips",
+ [CPU_INFO_ARCH_TRICORE] = "tricore",
+ [CPU_INFO_ARCH_S390] = "s390",
+ [CPU_INFO_ARCH_RISCV] = "riscv",
+ [CPU_INFO_ARCH_OTHER] = "other",
+ },
+ .size = CPU_INFO_ARCH__MAX
+};
+
+void qapi_free_CpuInfo(CpuInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoX86(CpuInfoX86 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoX86(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoSPARC(CpuInfoSPARC *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoSPARC(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoPPC(CpuInfoPPC *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoPPC(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoMIPS(CpuInfoMIPS *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoMIPS(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoTricore(CpuInfoTricore *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoTricore(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoRISCV(CpuInfoRISCV *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoRISCV(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoOther(CpuInfoOther *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoOther(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CpuS390State_lookup = {
+ .array = (const char *const[]) {
+ [S390_CPU_STATE_UNINITIALIZED] = "uninitialized",
+ [S390_CPU_STATE_STOPPED] = "stopped",
+ [S390_CPU_STATE_CHECK_STOP] = "check-stop",
+ [S390_CPU_STATE_OPERATING] = "operating",
+ [S390_CPU_STATE_LOAD] = "load",
+ },
+ .size = S390_CPU_STATE__MAX
+};
+
+void qapi_free_CpuInfoS390(CpuInfoS390 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoS390(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoList(CpuInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoFast(CpuInfoFast *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoFast(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInfoFastList(CpuInfoFastList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInfoFastList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_IOThreadInfo(IOThreadInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_IOThreadInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_IOThreadInfoList(IOThreadInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_IOThreadInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_BalloonInfo(BalloonInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_BalloonInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciMemoryRange(PciMemoryRange *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciMemoryRange(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciMemoryRegion(PciMemoryRegion *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciMemoryRegion(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciBusInfo(PciBusInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciBusInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciDeviceInfoList(PciDeviceInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciDeviceInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciBridgeInfo(PciBridgeInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciBridgeInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciDeviceClass(PciDeviceClass *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciDeviceClass(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciDeviceId(PciDeviceId *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciDeviceId(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciMemoryRegionList(PciMemoryRegionList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciMemoryRegionList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciDeviceInfo(PciDeviceInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciDeviceInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciInfo(PciInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PciInfoList(PciInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PciInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ObjectPropertyInfo(ObjectPropertyInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectPropertyInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ObjectPropertyInfoList(ObjectPropertyInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectPropertyInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ObjectTypeInfo(ObjectTypeInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectTypeInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ObjectTypeInfoList(ObjectTypeInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ObjectTypeInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup DumpGuestMemoryFormat_lookup = {
+ .array = (const char *const[]) {
+ [DUMP_GUEST_MEMORY_FORMAT_ELF] = "elf",
+ [DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB] = "kdump-zlib",
+ [DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO] = "kdump-lzo",
+ [DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY] = "kdump-snappy",
+ },
+ .size = DUMP_GUEST_MEMORY_FORMAT__MAX
+};
+
+const QEnumLookup DumpStatus_lookup = {
+ .array = (const char *const[]) {
+ [DUMP_STATUS_NONE] = "none",
+ [DUMP_STATUS_ACTIVE] = "active",
+ [DUMP_STATUS_COMPLETED] = "completed",
+ [DUMP_STATUS_FAILED] = "failed",
+ },
+ .size = DUMP_STATUS__MAX
+};
+
+void qapi_free_DumpQueryResult(DumpQueryResult *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DumpQueryResult(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DumpGuestMemoryFormatList(DumpGuestMemoryFormatList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DumpGuestMemoryFormatList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DumpGuestMemoryCapability(DumpGuestMemoryCapability *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DumpGuestMemoryCapability(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MachineInfo(MachineInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MachineInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MachineInfoList(MachineInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MachineInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuDefinitionInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MemoryInfo(MemoryInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemoryInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuDefinitionInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuModelInfo(CpuModelInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CpuModelExpansionType_lookup = {
+ .array = (const char *const[]) {
+ [CPU_MODEL_EXPANSION_TYPE_STATIC] = "static",
+ [CPU_MODEL_EXPANSION_TYPE_FULL] = "full",
+ },
+ .size = CPU_MODEL_EXPANSION_TYPE__MAX
+};
+
+void qapi_free_CpuModelExpansionInfo(CpuModelExpansionInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelExpansionInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CpuModelCompareResult_lookup = {
+ .array = (const char *const[]) {
+ [CPU_MODEL_COMPARE_RESULT_INCOMPATIBLE] = "incompatible",
+ [CPU_MODEL_COMPARE_RESULT_IDENTICAL] = "identical",
+ [CPU_MODEL_COMPARE_RESULT_SUPERSET] = "superset",
+ [CPU_MODEL_COMPARE_RESULT_SUBSET] = "subset",
+ },
+ .size = CPU_MODEL_COMPARE_RESULT__MAX
+};
+
+void qapi_free_CpuModelCompareInfo(CpuModelCompareInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelCompareInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuModelBaselineInfo(CpuModelBaselineInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuModelBaselineInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AddfdInfo(AddfdInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AddfdInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_FdsetFdInfo(FdsetFdInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_FdsetFdInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_FdsetFdInfoList(FdsetFdInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_FdsetFdInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_FdsetInfo(FdsetInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_FdsetInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_FdsetInfoList(FdsetInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_FdsetInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TargetInfo(TargetInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TargetInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AcpiTableOptions(AcpiTableOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AcpiTableOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CommandLineParameterType_lookup = {
+ .array = (const char *const[]) {
+ [COMMAND_LINE_PARAMETER_TYPE_STRING] = "string",
+ [COMMAND_LINE_PARAMETER_TYPE_BOOLEAN] = "boolean",
+ [COMMAND_LINE_PARAMETER_TYPE_NUMBER] = "number",
+ [COMMAND_LINE_PARAMETER_TYPE_SIZE] = "size",
+ },
+ .size = COMMAND_LINE_PARAMETER_TYPE__MAX
+};
+
+void qapi_free_CommandLineParameterInfo(CommandLineParameterInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandLineParameterInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CommandLineParameterInfoList(CommandLineParameterInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandLineParameterInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CommandLineOptionInfo(CommandLineOptionInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandLineOptionInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CommandLineOptionInfoList(CommandLineOptionInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CommandLineOptionInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup X86CPURegister32_lookup = {
+ .array = (const char *const[]) {
+ [X86_CPU_REGISTER32_EAX] = "EAX",
+ [X86_CPU_REGISTER32_EBX] = "EBX",
+ [X86_CPU_REGISTER32_ECX] = "ECX",
+ [X86_CPU_REGISTER32_EDX] = "EDX",
+ [X86_CPU_REGISTER32_ESP] = "ESP",
+ [X86_CPU_REGISTER32_EBP] = "EBP",
+ [X86_CPU_REGISTER32_ESI] = "ESI",
+ [X86_CPU_REGISTER32_EDI] = "EDI",
+ },
+ .size = X86_CPU_REGISTER32__MAX
+};
+
+void qapi_free_X86CPUFeatureWordInfo(X86CPUFeatureWordInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_X86CPUFeatureWordInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_X86CPUFeatureWordInfoList(X86CPUFeatureWordInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_X86CPUFeatureWordInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DummyForceArrays(DummyForceArrays *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DummyForceArrays(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NumaOptionsType_lookup = {
+ .array = (const char *const[]) {
+ [NUMA_OPTIONS_TYPE_NODE] = "node",
+ [NUMA_OPTIONS_TYPE_DIST] = "dist",
+ [NUMA_OPTIONS_TYPE_CPU] = "cpu",
+ },
+ .size = NUMA_OPTIONS_TYPE__MAX
+};
+
+void qapi_free_NumaOptions(NumaOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NumaOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NumaNodeOptions(NumaNodeOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NumaNodeOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NumaDistOptions(NumaDistOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NumaDistOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NumaCpuOptions(NumaCpuOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NumaCpuOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup HostMemPolicy_lookup = {
+ .array = (const char *const[]) {
+ [HOST_MEM_POLICY_DEFAULT] = "default",
+ [HOST_MEM_POLICY_PREFERRED] = "preferred",
+ [HOST_MEM_POLICY_BIND] = "bind",
+ [HOST_MEM_POLICY_INTERLEAVE] = "interleave",
+ },
+ .size = HOST_MEM_POLICY__MAX
+};
+
+void qapi_free_Memdev(Memdev *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Memdev(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MemdevList(MemdevList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemdevList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_PCDIMMDeviceInfo(PCDIMMDeviceInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_PCDIMMDeviceInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup MemoryDeviceInfoKind_lookup = {
+ .array = (const char *const[]) {
+ [MEMORY_DEVICE_INFO_KIND_DIMM] = "dimm",
+ [MEMORY_DEVICE_INFO_KIND_NVDIMM] = "nvdimm",
+ },
+ .size = MEMORY_DEVICE_INFO_KIND__MAX
+};
+
+void qapi_free_MemoryDeviceInfo(MemoryDeviceInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemoryDeviceInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MemoryDeviceInfoList(MemoryDeviceInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MemoryDeviceInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ACPISlotType_lookup = {
+ .array = (const char *const[]) {
+ [ACPI_SLOT_TYPE_DIMM] = "DIMM",
+ [ACPI_SLOT_TYPE_CPU] = "CPU",
+ },
+ .size = ACPI_SLOT_TYPE__MAX
+};
+
+void qapi_free_ACPIOSTInfo(ACPIOSTInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ACPIOSTInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ACPIOSTInfoList(ACPIOSTInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ACPIOSTInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ReplayMode_lookup = {
+ .array = (const char *const[]) {
+ [REPLAY_MODE_NONE] = "none",
+ [REPLAY_MODE_RECORD] = "record",
+ [REPLAY_MODE_PLAY] = "play",
+ },
+ .size = REPLAY_MODE__MAX
+};
+
+void qapi_free_GICCapability(GICCapability *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GICCapability(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_GICCapabilityList(GICCapabilityList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GICCapabilityList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_CpuInstanceProperties(CpuInstanceProperties *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_CpuInstanceProperties(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_HotpluggableCPU(HotpluggableCPU *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_HotpluggableCPU(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_HotpluggableCPUList(HotpluggableCPUList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_HotpluggableCPUList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_GuidInfo(GuidInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GuidInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SevState_lookup = {
+ .array = (const char *const[]) {
+ [SEV_STATE_UNINIT] = "uninit",
+ [SEV_STATE_LAUNCH_UPDATE] = "launch-update",
+ [SEV_STATE_LAUNCH_SECRET] = "launch-secret",
+ [SEV_STATE_RUNNING] = "running",
+ [SEV_STATE_SEND_UPDATE] = "send-update",
+ [SEV_STATE_RECEIVE_UPDATE] = "receive-update",
+ },
+ .size = SEV_STATE__MAX
+};
+
+void qapi_free_SevInfo(SevInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SevLaunchMeasureInfo(SevLaunchMeasureInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevLaunchMeasureInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SevCapability(SevCapability *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SevCapability(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup CommandDropReason_lookup = {
+ .array = (const char *const[]) {
+ [COMMAND_DROP_REASON_QUEUE_FULL] = "queue-full",
+ },
+ .size = COMMAND_DROP_REASON__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_misc_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-misc.h b/qemu2-auto-generated/qapi/qapi-types-misc.h
new file mode 100644
index 0000000000..a8bcb0c2a5
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-misc.h
@@ -0,0 +1,1468 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_MISC_H
+#define QAPI_TYPES_MISC_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef struct QMPCapabilityList QMPCapabilityList;
+
+typedef struct q_obj_qmp_capabilities_arg q_obj_qmp_capabilities_arg;
+
+typedef enum QMPCapability {
+ QMP_CAPABILITY_OOB = 0,
+ QMP_CAPABILITY__MAX = 1,
+} QMPCapability;
+
+#define QMPCapability_str(val) \
+ qapi_enum_lookup(&QMPCapability_lookup, (val))
+
+extern const QEnumLookup QMPCapability_lookup;
+
+typedef struct VersionTriple VersionTriple;
+
+typedef struct VersionInfo VersionInfo;
+
+typedef struct CommandInfo CommandInfo;
+
+typedef struct CommandInfoList CommandInfoList;
+
+typedef enum LostTickPolicy {
+ LOST_TICK_POLICY_DISCARD = 0,
+ LOST_TICK_POLICY_DELAY = 1,
+ LOST_TICK_POLICY_MERGE = 2,
+ LOST_TICK_POLICY_SLEW = 3,
+ LOST_TICK_POLICY__MAX = 4,
+} LostTickPolicy;
+
+#define LostTickPolicy_str(val) \
+ qapi_enum_lookup(&LostTickPolicy_lookup, (val))
+
+extern const QEnumLookup LostTickPolicy_lookup;
+
+typedef struct q_obj_add_client_arg q_obj_add_client_arg;
+
+typedef struct NameInfo NameInfo;
+
+typedef struct KvmInfo KvmInfo;
+
+typedef struct UuidInfo UuidInfo;
+
+typedef struct EventInfo EventInfo;
+
+typedef struct EventInfoList EventInfoList;
+
+typedef enum CpuInfoArch {
+ CPU_INFO_ARCH_X86 = 0,
+ CPU_INFO_ARCH_SPARC = 1,
+ CPU_INFO_ARCH_PPC = 2,
+ CPU_INFO_ARCH_MIPS = 3,
+ CPU_INFO_ARCH_TRICORE = 4,
+ CPU_INFO_ARCH_S390 = 5,
+ CPU_INFO_ARCH_RISCV = 6,
+ CPU_INFO_ARCH_OTHER = 7,
+ CPU_INFO_ARCH__MAX = 8,
+} CpuInfoArch;
+
+#define CpuInfoArch_str(val) \
+ qapi_enum_lookup(&CpuInfoArch_lookup, (val))
+
+extern const QEnumLookup CpuInfoArch_lookup;
+
+typedef struct q_obj_CpuInfo_base q_obj_CpuInfo_base;
+
+typedef struct CpuInfo CpuInfo;
+
+typedef struct CpuInfoX86 CpuInfoX86;
+
+typedef struct CpuInfoSPARC CpuInfoSPARC;
+
+typedef struct CpuInfoPPC CpuInfoPPC;
+
+typedef struct CpuInfoMIPS CpuInfoMIPS;
+
+typedef struct CpuInfoTricore CpuInfoTricore;
+
+typedef struct CpuInfoRISCV CpuInfoRISCV;
+
+typedef struct CpuInfoOther CpuInfoOther;
+
+typedef enum CpuS390State {
+ S390_CPU_STATE_UNINITIALIZED = 0,
+ S390_CPU_STATE_STOPPED = 1,
+ S390_CPU_STATE_CHECK_STOP = 2,
+ S390_CPU_STATE_OPERATING = 3,
+ S390_CPU_STATE_LOAD = 4,
+ S390_CPU_STATE__MAX = 5,
+} CpuS390State;
+
+#define CpuS390State_str(val) \
+ qapi_enum_lookup(&CpuS390State_lookup, (val))
+
+extern const QEnumLookup CpuS390State_lookup;
+
+typedef struct CpuInfoS390 CpuInfoS390;
+
+typedef struct CpuInfoList CpuInfoList;
+
+typedef struct q_obj_CpuInfoFast_base q_obj_CpuInfoFast_base;
+
+typedef struct CpuInfoFast CpuInfoFast;
+
+typedef struct CpuInfoFastList CpuInfoFastList;
+
+typedef struct IOThreadInfo IOThreadInfo;
+
+typedef struct IOThreadInfoList IOThreadInfoList;
+
+typedef struct BalloonInfo BalloonInfo;
+
+typedef struct q_obj_BALLOON_CHANGE_arg q_obj_BALLOON_CHANGE_arg;
+
+typedef struct PciMemoryRange PciMemoryRange;
+
+typedef struct PciMemoryRegion PciMemoryRegion;
+
+typedef struct PciBusInfo PciBusInfo;
+
+typedef struct PciDeviceInfoList PciDeviceInfoList;
+
+typedef struct PciBridgeInfo PciBridgeInfo;
+
+typedef struct PciDeviceClass PciDeviceClass;
+
+typedef struct PciDeviceId PciDeviceId;
+
+typedef struct PciMemoryRegionList PciMemoryRegionList;
+
+typedef struct PciDeviceInfo PciDeviceInfo;
+
+typedef struct PciInfo PciInfo;
+
+typedef struct PciInfoList PciInfoList;
+
+typedef struct q_obj_cpu_add_arg q_obj_cpu_add_arg;
+
+typedef struct q_obj_memsave_arg q_obj_memsave_arg;
+
+typedef struct q_obj_pmemsave_arg q_obj_pmemsave_arg;
+
+typedef struct q_obj_balloon_arg q_obj_balloon_arg;
+
+typedef struct q_obj_human_monitor_command_arg q_obj_human_monitor_command_arg;
+
+typedef struct ObjectPropertyInfo ObjectPropertyInfo;
+
+typedef struct q_obj_qom_list_arg q_obj_qom_list_arg;
+
+typedef struct ObjectPropertyInfoList ObjectPropertyInfoList;
+
+typedef struct q_obj_qom_get_arg q_obj_qom_get_arg;
+
+typedef struct q_obj_qom_set_arg q_obj_qom_set_arg;
+
+typedef struct q_obj_change_arg q_obj_change_arg;
+
+typedef struct ObjectTypeInfo ObjectTypeInfo;
+
+typedef struct q_obj_qom_list_types_arg q_obj_qom_list_types_arg;
+
+typedef struct ObjectTypeInfoList ObjectTypeInfoList;
+
+typedef struct q_obj_device_list_properties_arg q_obj_device_list_properties_arg;
+
+typedef struct q_obj_qom_list_properties_arg q_obj_qom_list_properties_arg;
+
+typedef struct q_obj_xen_set_global_dirty_log_arg q_obj_xen_set_global_dirty_log_arg;
+
+typedef struct q_obj_device_add_arg q_obj_device_add_arg;
+
+typedef struct q_obj_device_del_arg q_obj_device_del_arg;
+
+typedef struct q_obj_DEVICE_DELETED_arg q_obj_DEVICE_DELETED_arg;
+
+typedef enum DumpGuestMemoryFormat {
+ DUMP_GUEST_MEMORY_FORMAT_ELF = 0,
+ DUMP_GUEST_MEMORY_FORMAT_KDUMP_ZLIB = 1,
+ DUMP_GUEST_MEMORY_FORMAT_KDUMP_LZO = 2,
+ DUMP_GUEST_MEMORY_FORMAT_KDUMP_SNAPPY = 3,
+ DUMP_GUEST_MEMORY_FORMAT__MAX = 4,
+} DumpGuestMemoryFormat;
+
+#define DumpGuestMemoryFormat_str(val) \
+ qapi_enum_lookup(&DumpGuestMemoryFormat_lookup, (val))
+
+extern const QEnumLookup DumpGuestMemoryFormat_lookup;
+
+typedef struct q_obj_dump_guest_memory_arg q_obj_dump_guest_memory_arg;
+
+typedef enum DumpStatus {
+ DUMP_STATUS_NONE = 0,
+ DUMP_STATUS_ACTIVE = 1,
+ DUMP_STATUS_COMPLETED = 2,
+ DUMP_STATUS_FAILED = 3,
+ DUMP_STATUS__MAX = 4,
+} DumpStatus;
+
+#define DumpStatus_str(val) \
+ qapi_enum_lookup(&DumpStatus_lookup, (val))
+
+extern const QEnumLookup DumpStatus_lookup;
+
+typedef struct DumpQueryResult DumpQueryResult;
+
+typedef struct q_obj_DUMP_COMPLETED_arg q_obj_DUMP_COMPLETED_arg;
+
+typedef struct DumpGuestMemoryFormatList DumpGuestMemoryFormatList;
+
+typedef struct DumpGuestMemoryCapability DumpGuestMemoryCapability;
+
+typedef struct q_obj_dump_skeys_arg q_obj_dump_skeys_arg;
+
+typedef struct q_obj_object_add_arg q_obj_object_add_arg;
+
+typedef struct q_obj_object_del_arg q_obj_object_del_arg;
+
+typedef struct q_obj_getfd_arg q_obj_getfd_arg;
+
+typedef struct q_obj_closefd_arg q_obj_closefd_arg;
+
+typedef struct MachineInfo MachineInfo;
+
+typedef struct MachineInfoList MachineInfoList;
+
+typedef struct CpuDefinitionInfo CpuDefinitionInfo;
+
+typedef struct MemoryInfo MemoryInfo;
+
+typedef struct CpuDefinitionInfoList CpuDefinitionInfoList;
+
+typedef struct CpuModelInfo CpuModelInfo;
+
+typedef enum CpuModelExpansionType {
+ CPU_MODEL_EXPANSION_TYPE_STATIC = 0,
+ CPU_MODEL_EXPANSION_TYPE_FULL = 1,
+ CPU_MODEL_EXPANSION_TYPE__MAX = 2,
+} CpuModelExpansionType;
+
+#define CpuModelExpansionType_str(val) \
+ qapi_enum_lookup(&CpuModelExpansionType_lookup, (val))
+
+extern const QEnumLookup CpuModelExpansionType_lookup;
+
+typedef struct CpuModelExpansionInfo CpuModelExpansionInfo;
+
+typedef struct q_obj_query_cpu_model_expansion_arg q_obj_query_cpu_model_expansion_arg;
+
+typedef enum CpuModelCompareResult {
+ CPU_MODEL_COMPARE_RESULT_INCOMPATIBLE = 0,
+ CPU_MODEL_COMPARE_RESULT_IDENTICAL = 1,
+ CPU_MODEL_COMPARE_RESULT_SUPERSET = 2,
+ CPU_MODEL_COMPARE_RESULT_SUBSET = 3,
+ CPU_MODEL_COMPARE_RESULT__MAX = 4,
+} CpuModelCompareResult;
+
+#define CpuModelCompareResult_str(val) \
+ qapi_enum_lookup(&CpuModelCompareResult_lookup, (val))
+
+extern const QEnumLookup CpuModelCompareResult_lookup;
+
+typedef struct CpuModelCompareInfo CpuModelCompareInfo;
+
+typedef struct q_obj_query_cpu_model_comparison_arg q_obj_query_cpu_model_comparison_arg;
+
+typedef struct CpuModelBaselineInfo CpuModelBaselineInfo;
+
+typedef struct q_obj_query_cpu_model_baseline_arg q_obj_query_cpu_model_baseline_arg;
+
+typedef struct AddfdInfo AddfdInfo;
+
+typedef struct q_obj_add_fd_arg q_obj_add_fd_arg;
+
+typedef struct q_obj_remove_fd_arg q_obj_remove_fd_arg;
+
+typedef struct FdsetFdInfo FdsetFdInfo;
+
+typedef struct FdsetFdInfoList FdsetFdInfoList;
+
+typedef struct FdsetInfo FdsetInfo;
+
+typedef struct FdsetInfoList FdsetInfoList;
+
+typedef struct TargetInfo TargetInfo;
+
+typedef struct AcpiTableOptions AcpiTableOptions;
+
+typedef enum CommandLineParameterType {
+ COMMAND_LINE_PARAMETER_TYPE_STRING = 0,
+ COMMAND_LINE_PARAMETER_TYPE_BOOLEAN = 1,
+ COMMAND_LINE_PARAMETER_TYPE_NUMBER = 2,
+ COMMAND_LINE_PARAMETER_TYPE_SIZE = 3,
+ COMMAND_LINE_PARAMETER_TYPE__MAX = 4,
+} CommandLineParameterType;
+
+#define CommandLineParameterType_str(val) \
+ qapi_enum_lookup(&CommandLineParameterType_lookup, (val))
+
+extern const QEnumLookup CommandLineParameterType_lookup;
+
+typedef struct CommandLineParameterInfo CommandLineParameterInfo;
+
+typedef struct CommandLineParameterInfoList CommandLineParameterInfoList;
+
+typedef struct CommandLineOptionInfo CommandLineOptionInfo;
+
+typedef struct q_obj_query_command_line_options_arg q_obj_query_command_line_options_arg;
+
+typedef struct CommandLineOptionInfoList CommandLineOptionInfoList;
+
+typedef enum X86CPURegister32 {
+ X86_CPU_REGISTER32_EAX = 0,
+ X86_CPU_REGISTER32_EBX = 1,
+ X86_CPU_REGISTER32_ECX = 2,
+ X86_CPU_REGISTER32_EDX = 3,
+ X86_CPU_REGISTER32_ESP = 4,
+ X86_CPU_REGISTER32_EBP = 5,
+ X86_CPU_REGISTER32_ESI = 6,
+ X86_CPU_REGISTER32_EDI = 7,
+ X86_CPU_REGISTER32__MAX = 8,
+} X86CPURegister32;
+
+#define X86CPURegister32_str(val) \
+ qapi_enum_lookup(&X86CPURegister32_lookup, (val))
+
+extern const QEnumLookup X86CPURegister32_lookup;
+
+typedef struct X86CPUFeatureWordInfo X86CPUFeatureWordInfo;
+
+typedef struct X86CPUFeatureWordInfoList X86CPUFeatureWordInfoList;
+
+typedef struct DummyForceArrays DummyForceArrays;
+
+typedef enum NumaOptionsType {
+ NUMA_OPTIONS_TYPE_NODE = 0,
+ NUMA_OPTIONS_TYPE_DIST = 1,
+ NUMA_OPTIONS_TYPE_CPU = 2,
+ NUMA_OPTIONS_TYPE__MAX = 3,
+} NumaOptionsType;
+
+#define NumaOptionsType_str(val) \
+ qapi_enum_lookup(&NumaOptionsType_lookup, (val))
+
+extern const QEnumLookup NumaOptionsType_lookup;
+
+typedef struct q_obj_NumaOptions_base q_obj_NumaOptions_base;
+
+typedef struct NumaOptions NumaOptions;
+
+typedef struct NumaNodeOptions NumaNodeOptions;
+
+typedef struct NumaDistOptions NumaDistOptions;
+
+typedef struct NumaCpuOptions NumaCpuOptions;
+
+typedef enum HostMemPolicy {
+ HOST_MEM_POLICY_DEFAULT = 0,
+ HOST_MEM_POLICY_PREFERRED = 1,
+ HOST_MEM_POLICY_BIND = 2,
+ HOST_MEM_POLICY_INTERLEAVE = 3,
+ HOST_MEM_POLICY__MAX = 4,
+} HostMemPolicy;
+
+#define HostMemPolicy_str(val) \
+ qapi_enum_lookup(&HostMemPolicy_lookup, (val))
+
+extern const QEnumLookup HostMemPolicy_lookup;
+
+typedef struct Memdev Memdev;
+
+typedef struct MemdevList MemdevList;
+
+typedef struct PCDIMMDeviceInfo PCDIMMDeviceInfo;
+
+typedef struct q_obj_PCDIMMDeviceInfo_wrapper q_obj_PCDIMMDeviceInfo_wrapper;
+
+typedef enum MemoryDeviceInfoKind {
+ MEMORY_DEVICE_INFO_KIND_DIMM = 0,
+ MEMORY_DEVICE_INFO_KIND_NVDIMM = 1,
+ MEMORY_DEVICE_INFO_KIND__MAX = 2,
+} MemoryDeviceInfoKind;
+
+#define MemoryDeviceInfoKind_str(val) \
+ qapi_enum_lookup(&MemoryDeviceInfoKind_lookup, (val))
+
+extern const QEnumLookup MemoryDeviceInfoKind_lookup;
+
+typedef struct MemoryDeviceInfo MemoryDeviceInfo;
+
+typedef struct MemoryDeviceInfoList MemoryDeviceInfoList;
+
+typedef struct q_obj_MEM_UNPLUG_ERROR_arg q_obj_MEM_UNPLUG_ERROR_arg;
+
+typedef enum ACPISlotType {
+ ACPI_SLOT_TYPE_DIMM = 0,
+ ACPI_SLOT_TYPE_CPU = 1,
+ ACPI_SLOT_TYPE__MAX = 2,
+} ACPISlotType;
+
+#define ACPISlotType_str(val) \
+ qapi_enum_lookup(&ACPISlotType_lookup, (val))
+
+extern const QEnumLookup ACPISlotType_lookup;
+
+typedef struct ACPIOSTInfo ACPIOSTInfo;
+
+typedef struct ACPIOSTInfoList ACPIOSTInfoList;
+
+typedef struct q_obj_ACPI_DEVICE_OST_arg q_obj_ACPI_DEVICE_OST_arg;
+
+typedef struct q_obj_RTC_CHANGE_arg q_obj_RTC_CHANGE_arg;
+
+typedef enum ReplayMode {
+ REPLAY_MODE_NONE = 0,
+ REPLAY_MODE_RECORD = 1,
+ REPLAY_MODE_PLAY = 2,
+ REPLAY_MODE__MAX = 3,
+} ReplayMode;
+
+#define ReplayMode_str(val) \
+ qapi_enum_lookup(&ReplayMode_lookup, (val))
+
+extern const QEnumLookup ReplayMode_lookup;
+
+typedef struct q_obj_xen_load_devices_state_arg q_obj_xen_load_devices_state_arg;
+
+typedef struct GICCapability GICCapability;
+
+typedef struct GICCapabilityList GICCapabilityList;
+
+typedef struct CpuInstanceProperties CpuInstanceProperties;
+
+typedef struct HotpluggableCPU HotpluggableCPU;
+
+typedef struct HotpluggableCPUList HotpluggableCPUList;
+
+typedef struct GuidInfo GuidInfo;
+
+typedef enum SevState {
+ SEV_STATE_UNINIT = 0,
+ SEV_STATE_LAUNCH_UPDATE = 1,
+ SEV_STATE_LAUNCH_SECRET = 2,
+ SEV_STATE_RUNNING = 3,
+ SEV_STATE_SEND_UPDATE = 4,
+ SEV_STATE_RECEIVE_UPDATE = 5,
+ SEV_STATE__MAX = 6,
+} SevState;
+
+#define SevState_str(val) \
+ qapi_enum_lookup(&SevState_lookup, (val))
+
+extern const QEnumLookup SevState_lookup;
+
+typedef struct SevInfo SevInfo;
+
+typedef struct SevLaunchMeasureInfo SevLaunchMeasureInfo;
+
+typedef struct SevCapability SevCapability;
+
+typedef enum CommandDropReason {
+ COMMAND_DROP_REASON_QUEUE_FULL = 0,
+ COMMAND_DROP_REASON__MAX = 1,
+} CommandDropReason;
+
+#define CommandDropReason_str(val) \
+ qapi_enum_lookup(&CommandDropReason_lookup, (val))
+
+extern const QEnumLookup CommandDropReason_lookup;
+
+typedef struct q_obj_COMMAND_DROPPED_arg q_obj_COMMAND_DROPPED_arg;
+
+typedef struct q_obj_x_oob_test_arg q_obj_x_oob_test_arg;
+
+struct QMPCapabilityList {
+ QMPCapabilityList *next;
+ QMPCapability value;
+};
+
+void qapi_free_QMPCapabilityList(QMPCapabilityList *obj);
+
+struct q_obj_qmp_capabilities_arg {
+ bool has_enable;
+ QMPCapabilityList *enable;
+};
+
+struct VersionTriple {
+ int64_t major;
+ int64_t minor;
+ int64_t micro;
+};
+
+void qapi_free_VersionTriple(VersionTriple *obj);
+
+struct VersionInfo {
+ VersionTriple *qemu;
+ char *package;
+};
+
+void qapi_free_VersionInfo(VersionInfo *obj);
+
+struct CommandInfo {
+ char *name;
+};
+
+void qapi_free_CommandInfo(CommandInfo *obj);
+
+struct CommandInfoList {
+ CommandInfoList *next;
+ CommandInfo *value;
+};
+
+void qapi_free_CommandInfoList(CommandInfoList *obj);
+
+struct q_obj_add_client_arg {
+ char *protocol;
+ char *fdname;
+ bool has_skipauth;
+ bool skipauth;
+ bool has_tls;
+ bool tls;
+};
+
+struct NameInfo {
+ bool has_name;
+ char *name;
+};
+
+void qapi_free_NameInfo(NameInfo *obj);
+
+struct KvmInfo {
+ bool enabled;
+ bool present;
+};
+
+void qapi_free_KvmInfo(KvmInfo *obj);
+
+struct UuidInfo {
+ char *UUID;
+};
+
+void qapi_free_UuidInfo(UuidInfo *obj);
+
+struct EventInfo {
+ char *name;
+};
+
+void qapi_free_EventInfo(EventInfo *obj);
+
+struct EventInfoList {
+ EventInfoList *next;
+ EventInfo *value;
+};
+
+void qapi_free_EventInfoList(EventInfoList *obj);
+
+struct q_obj_CpuInfo_base {
+ int64_t CPU;
+ bool current;
+ bool halted;
+ char *qom_path;
+ int64_t thread_id;
+ bool has_props;
+ CpuInstanceProperties *props;
+ CpuInfoArch arch;
+};
+
+struct CpuInfoX86 {
+ int64_t pc;
+};
+
+struct CpuInfoSPARC {
+ int64_t pc;
+ int64_t npc;
+};
+
+struct CpuInfoPPC {
+ int64_t nip;
+};
+
+struct CpuInfoMIPS {
+ int64_t PC;
+};
+
+struct CpuInfoTricore {
+ int64_t PC;
+};
+
+struct CpuInfoS390 {
+ CpuS390State cpu_state;
+};
+
+struct CpuInfoRISCV {
+ int64_t pc;
+};
+
+struct CpuInfoOther {
+ char qapi_dummy_for_empty_struct;
+};
+
+struct CpuInfo {
+ int64_t CPU;
+ bool current;
+ bool halted;
+ char *qom_path;
+ int64_t thread_id;
+ bool has_props;
+ CpuInstanceProperties *props;
+ CpuInfoArch arch;
+ union { /* union tag is @arch */
+ CpuInfoX86 x86;
+ CpuInfoSPARC q_sparc;
+ CpuInfoPPC ppc;
+ CpuInfoMIPS q_mips;
+ CpuInfoTricore tricore;
+ CpuInfoS390 s390;
+ CpuInfoRISCV riscv;
+ CpuInfoOther other;
+ } u;
+};
+
+void qapi_free_CpuInfo(CpuInfo *obj);
+
+void qapi_free_CpuInfoX86(CpuInfoX86 *obj);
+
+void qapi_free_CpuInfoSPARC(CpuInfoSPARC *obj);
+
+void qapi_free_CpuInfoPPC(CpuInfoPPC *obj);
+
+void qapi_free_CpuInfoMIPS(CpuInfoMIPS *obj);
+
+void qapi_free_CpuInfoTricore(CpuInfoTricore *obj);
+
+void qapi_free_CpuInfoRISCV(CpuInfoRISCV *obj);
+
+void qapi_free_CpuInfoOther(CpuInfoOther *obj);
+
+void qapi_free_CpuInfoS390(CpuInfoS390 *obj);
+
+struct CpuInfoList {
+ CpuInfoList *next;
+ CpuInfo *value;
+};
+
+void qapi_free_CpuInfoList(CpuInfoList *obj);
+
+struct q_obj_CpuInfoFast_base {
+ int64_t cpu_index;
+ char *qom_path;
+ int64_t thread_id;
+ bool has_props;
+ CpuInstanceProperties *props;
+ CpuInfoArch arch;
+};
+
+struct CpuInfoFast {
+ int64_t cpu_index;
+ char *qom_path;
+ int64_t thread_id;
+ bool has_props;
+ CpuInstanceProperties *props;
+ CpuInfoArch arch;
+ union { /* union tag is @arch */
+ CpuInfoOther x86;
+ CpuInfoOther q_sparc;
+ CpuInfoOther ppc;
+ CpuInfoOther q_mips;
+ CpuInfoOther tricore;
+ CpuInfoS390 s390;
+ CpuInfoRISCV riscv;
+ CpuInfoOther other;
+ } u;
+};
+
+void qapi_free_CpuInfoFast(CpuInfoFast *obj);
+
+struct CpuInfoFastList {
+ CpuInfoFastList *next;
+ CpuInfoFast *value;
+};
+
+void qapi_free_CpuInfoFastList(CpuInfoFastList *obj);
+
+struct IOThreadInfo {
+ char *id;
+ int64_t thread_id;
+ int64_t poll_max_ns;
+ int64_t poll_grow;
+ int64_t poll_shrink;
+};
+
+void qapi_free_IOThreadInfo(IOThreadInfo *obj);
+
+struct IOThreadInfoList {
+ IOThreadInfoList *next;
+ IOThreadInfo *value;
+};
+
+void qapi_free_IOThreadInfoList(IOThreadInfoList *obj);
+
+struct BalloonInfo {
+ int64_t actual;
+};
+
+void qapi_free_BalloonInfo(BalloonInfo *obj);
+
+struct q_obj_BALLOON_CHANGE_arg {
+ int64_t actual;
+};
+
+struct PciMemoryRange {
+ int64_t base;
+ int64_t limit;
+};
+
+void qapi_free_PciMemoryRange(PciMemoryRange *obj);
+
+struct PciMemoryRegion {
+ int64_t bar;
+ char *type;
+ int64_t address;
+ int64_t size;
+ bool has_prefetch;
+ bool prefetch;
+ bool has_mem_type_64;
+ bool mem_type_64;
+};
+
+void qapi_free_PciMemoryRegion(PciMemoryRegion *obj);
+
+struct PciBusInfo {
+ int64_t number;
+ int64_t secondary;
+ int64_t subordinate;
+ PciMemoryRange *io_range;
+ PciMemoryRange *memory_range;
+ PciMemoryRange *prefetchable_range;
+};
+
+void qapi_free_PciBusInfo(PciBusInfo *obj);
+
+struct PciDeviceInfoList {
+ PciDeviceInfoList *next;
+ PciDeviceInfo *value;
+};
+
+void qapi_free_PciDeviceInfoList(PciDeviceInfoList *obj);
+
+struct PciBridgeInfo {
+ PciBusInfo *bus;
+ bool has_devices;
+ PciDeviceInfoList *devices;
+};
+
+void qapi_free_PciBridgeInfo(PciBridgeInfo *obj);
+
+struct PciDeviceClass {
+ bool has_desc;
+ char *desc;
+ int64_t q_class;
+};
+
+void qapi_free_PciDeviceClass(PciDeviceClass *obj);
+
+struct PciDeviceId {
+ int64_t device;
+ int64_t vendor;
+};
+
+void qapi_free_PciDeviceId(PciDeviceId *obj);
+
+struct PciMemoryRegionList {
+ PciMemoryRegionList *next;
+ PciMemoryRegion *value;
+};
+
+void qapi_free_PciMemoryRegionList(PciMemoryRegionList *obj);
+
+struct PciDeviceInfo {
+ int64_t bus;
+ int64_t slot;
+ int64_t function;
+ PciDeviceClass *class_info;
+ PciDeviceId *id;
+ bool has_irq;
+ int64_t irq;
+ char *qdev_id;
+ bool has_pci_bridge;
+ PciBridgeInfo *pci_bridge;
+ PciMemoryRegionList *regions;
+};
+
+void qapi_free_PciDeviceInfo(PciDeviceInfo *obj);
+
+struct PciInfo {
+ int64_t bus;
+ PciDeviceInfoList *devices;
+};
+
+void qapi_free_PciInfo(PciInfo *obj);
+
+struct PciInfoList {
+ PciInfoList *next;
+ PciInfo *value;
+};
+
+void qapi_free_PciInfoList(PciInfoList *obj);
+
+struct q_obj_cpu_add_arg {
+ int64_t id;
+};
+
+struct q_obj_memsave_arg {
+ int64_t val;
+ int64_t size;
+ char *filename;
+ bool has_cpu_index;
+ int64_t cpu_index;
+};
+
+struct q_obj_pmemsave_arg {
+ int64_t val;
+ int64_t size;
+ char *filename;
+};
+
+struct q_obj_balloon_arg {
+ int64_t value;
+};
+
+struct q_obj_human_monitor_command_arg {
+ char *command_line;
+ bool has_cpu_index;
+ int64_t cpu_index;
+};
+
+struct ObjectPropertyInfo {
+ char *name;
+ char *type;
+ bool has_description;
+ char *description;
+};
+
+void qapi_free_ObjectPropertyInfo(ObjectPropertyInfo *obj);
+
+struct q_obj_qom_list_arg {
+ char *path;
+};
+
+struct ObjectPropertyInfoList {
+ ObjectPropertyInfoList *next;
+ ObjectPropertyInfo *value;
+};
+
+void qapi_free_ObjectPropertyInfoList(ObjectPropertyInfoList *obj);
+
+struct q_obj_qom_get_arg {
+ char *path;
+ char *property;
+};
+
+struct q_obj_qom_set_arg {
+ char *path;
+ char *property;
+ QObject *value;
+};
+
+struct q_obj_change_arg {
+ char *device;
+ char *target;
+ bool has_arg;
+ char *arg;
+};
+
+struct ObjectTypeInfo {
+ char *name;
+ bool has_abstract;
+ bool abstract;
+ bool has_parent;
+ char *parent;
+};
+
+void qapi_free_ObjectTypeInfo(ObjectTypeInfo *obj);
+
+struct q_obj_qom_list_types_arg {
+ bool has_implements;
+ char *implements;
+ bool has_abstract;
+ bool abstract;
+};
+
+struct ObjectTypeInfoList {
+ ObjectTypeInfoList *next;
+ ObjectTypeInfo *value;
+};
+
+void qapi_free_ObjectTypeInfoList(ObjectTypeInfoList *obj);
+
+struct q_obj_device_list_properties_arg {
+ char *q_typename;
+};
+
+struct q_obj_qom_list_properties_arg {
+ char *q_typename;
+};
+
+struct q_obj_xen_set_global_dirty_log_arg {
+ bool enable;
+};
+
+struct q_obj_device_add_arg {
+ char *driver;
+ bool has_bus;
+ char *bus;
+ bool has_id;
+ char *id;
+};
+
+struct q_obj_device_del_arg {
+ char *id;
+};
+
+struct q_obj_DEVICE_DELETED_arg {
+ bool has_device;
+ char *device;
+ char *path;
+};
+
+struct q_obj_dump_guest_memory_arg {
+ bool paging;
+ char *protocol;
+ bool has_detach;
+ bool detach;
+ bool has_begin;
+ int64_t begin;
+ bool has_length;
+ int64_t length;
+ bool has_format;
+ DumpGuestMemoryFormat format;
+};
+
+struct DumpQueryResult {
+ DumpStatus status;
+ int64_t completed;
+ int64_t total;
+};
+
+void qapi_free_DumpQueryResult(DumpQueryResult *obj);
+
+struct q_obj_DUMP_COMPLETED_arg {
+ DumpQueryResult *result;
+ bool has_error;
+ char *error;
+};
+
+struct DumpGuestMemoryFormatList {
+ DumpGuestMemoryFormatList *next;
+ DumpGuestMemoryFormat value;
+};
+
+void qapi_free_DumpGuestMemoryFormatList(DumpGuestMemoryFormatList *obj);
+
+struct DumpGuestMemoryCapability {
+ DumpGuestMemoryFormatList *formats;
+};
+
+void qapi_free_DumpGuestMemoryCapability(DumpGuestMemoryCapability *obj);
+
+struct q_obj_dump_skeys_arg {
+ char *filename;
+};
+
+struct q_obj_object_add_arg {
+ char *qom_type;
+ char *id;
+ bool has_props;
+ QObject *props;
+};
+
+struct q_obj_object_del_arg {
+ char *id;
+};
+
+struct q_obj_getfd_arg {
+ char *fdname;
+};
+
+struct q_obj_closefd_arg {
+ char *fdname;
+};
+
+struct MachineInfo {
+ char *name;
+ bool has_alias;
+ char *alias;
+ bool has_is_default;
+ bool is_default;
+ int64_t cpu_max;
+ bool hotpluggable_cpus;
+};
+
+void qapi_free_MachineInfo(MachineInfo *obj);
+
+struct MachineInfoList {
+ MachineInfoList *next;
+ MachineInfo *value;
+};
+
+void qapi_free_MachineInfoList(MachineInfoList *obj);
+
+struct CpuDefinitionInfo {
+ char *name;
+ bool has_migration_safe;
+ bool migration_safe;
+ bool q_static;
+ bool has_unavailable_features;
+ strList *unavailable_features;
+ char *q_typename;
+};
+
+void qapi_free_CpuDefinitionInfo(CpuDefinitionInfo *obj);
+
+struct MemoryInfo {
+ uint64_t base_memory;
+ bool has_plugged_memory;
+ uint64_t plugged_memory;
+};
+
+void qapi_free_MemoryInfo(MemoryInfo *obj);
+
+struct CpuDefinitionInfoList {
+ CpuDefinitionInfoList *next;
+ CpuDefinitionInfo *value;
+};
+
+void qapi_free_CpuDefinitionInfoList(CpuDefinitionInfoList *obj);
+
+struct CpuModelInfo {
+ char *name;
+ bool has_props;
+ QObject *props;
+};
+
+void qapi_free_CpuModelInfo(CpuModelInfo *obj);
+
+struct CpuModelExpansionInfo {
+ CpuModelInfo *model;
+};
+
+void qapi_free_CpuModelExpansionInfo(CpuModelExpansionInfo *obj);
+
+struct q_obj_query_cpu_model_expansion_arg {
+ CpuModelExpansionType type;
+ CpuModelInfo *model;
+};
+
+struct CpuModelCompareInfo {
+ CpuModelCompareResult result;
+ strList *responsible_properties;
+};
+
+void qapi_free_CpuModelCompareInfo(CpuModelCompareInfo *obj);
+
+struct q_obj_query_cpu_model_comparison_arg {
+ CpuModelInfo *modela;
+ CpuModelInfo *modelb;
+};
+
+struct CpuModelBaselineInfo {
+ CpuModelInfo *model;
+};
+
+void qapi_free_CpuModelBaselineInfo(CpuModelBaselineInfo *obj);
+
+struct q_obj_query_cpu_model_baseline_arg {
+ CpuModelInfo *modela;
+ CpuModelInfo *modelb;
+};
+
+struct AddfdInfo {
+ int64_t fdset_id;
+ int64_t fd;
+};
+
+void qapi_free_AddfdInfo(AddfdInfo *obj);
+
+struct q_obj_add_fd_arg {
+ bool has_fdset_id;
+ int64_t fdset_id;
+ bool has_opaque;
+ char *opaque;
+};
+
+struct q_obj_remove_fd_arg {
+ int64_t fdset_id;
+ bool has_fd;
+ int64_t fd;
+};
+
+struct FdsetFdInfo {
+ int64_t fd;
+ bool has_opaque;
+ char *opaque;
+};
+
+void qapi_free_FdsetFdInfo(FdsetFdInfo *obj);
+
+struct FdsetFdInfoList {
+ FdsetFdInfoList *next;
+ FdsetFdInfo *value;
+};
+
+void qapi_free_FdsetFdInfoList(FdsetFdInfoList *obj);
+
+struct FdsetInfo {
+ int64_t fdset_id;
+ FdsetFdInfoList *fds;
+};
+
+void qapi_free_FdsetInfo(FdsetInfo *obj);
+
+struct FdsetInfoList {
+ FdsetInfoList *next;
+ FdsetInfo *value;
+};
+
+void qapi_free_FdsetInfoList(FdsetInfoList *obj);
+
+struct TargetInfo {
+ char *arch;
+};
+
+void qapi_free_TargetInfo(TargetInfo *obj);
+
+struct AcpiTableOptions {
+ bool has_sig;
+ char *sig;
+ bool has_rev;
+ uint8_t rev;
+ bool has_oem_id;
+ char *oem_id;
+ bool has_oem_table_id;
+ char *oem_table_id;
+ bool has_oem_rev;
+ uint32_t oem_rev;
+ bool has_asl_compiler_id;
+ char *asl_compiler_id;
+ bool has_asl_compiler_rev;
+ uint32_t asl_compiler_rev;
+ bool has_file;
+ char *file;
+ bool has_data;
+ char *data;
+};
+
+void qapi_free_AcpiTableOptions(AcpiTableOptions *obj);
+
+struct CommandLineParameterInfo {
+ char *name;
+ CommandLineParameterType type;
+ bool has_help;
+ char *help;
+ bool has_q_default;
+ char *q_default;
+};
+
+void qapi_free_CommandLineParameterInfo(CommandLineParameterInfo *obj);
+
+struct CommandLineParameterInfoList {
+ CommandLineParameterInfoList *next;
+ CommandLineParameterInfo *value;
+};
+
+void qapi_free_CommandLineParameterInfoList(CommandLineParameterInfoList *obj);
+
+struct CommandLineOptionInfo {
+ char *option;
+ CommandLineParameterInfoList *parameters;
+};
+
+void qapi_free_CommandLineOptionInfo(CommandLineOptionInfo *obj);
+
+struct q_obj_query_command_line_options_arg {
+ bool has_option;
+ char *option;
+};
+
+struct CommandLineOptionInfoList {
+ CommandLineOptionInfoList *next;
+ CommandLineOptionInfo *value;
+};
+
+void qapi_free_CommandLineOptionInfoList(CommandLineOptionInfoList *obj);
+
+struct X86CPUFeatureWordInfo {
+ int64_t cpuid_input_eax;
+ bool has_cpuid_input_ecx;
+ int64_t cpuid_input_ecx;
+ X86CPURegister32 cpuid_register;
+ int64_t features;
+};
+
+void qapi_free_X86CPUFeatureWordInfo(X86CPUFeatureWordInfo *obj);
+
+struct X86CPUFeatureWordInfoList {
+ X86CPUFeatureWordInfoList *next;
+ X86CPUFeatureWordInfo *value;
+};
+
+void qapi_free_X86CPUFeatureWordInfoList(X86CPUFeatureWordInfoList *obj);
+
+struct DummyForceArrays {
+ X86CPUFeatureWordInfoList *unused;
+};
+
+void qapi_free_DummyForceArrays(DummyForceArrays *obj);
+
+struct q_obj_NumaOptions_base {
+ NumaOptionsType type;
+};
+
+struct NumaNodeOptions {
+ bool has_nodeid;
+ uint16_t nodeid;
+ bool has_cpus;
+ uint16List *cpus;
+ bool has_mem;
+ uint64_t mem;
+ bool has_memdev;
+ char *memdev;
+};
+
+struct NumaDistOptions {
+ uint16_t src;
+ uint16_t dst;
+ uint8_t val;
+};
+
+struct NumaCpuOptions {
+ /* Members inherited from CpuInstanceProperties: */
+ bool has_node_id;
+ int64_t node_id;
+ bool has_socket_id;
+ int64_t socket_id;
+ bool has_core_id;
+ int64_t core_id;
+ bool has_thread_id;
+ int64_t thread_id;
+ /* Own members: */
+};
+
+struct NumaOptions {
+ NumaOptionsType type;
+ union { /* union tag is @type */
+ NumaNodeOptions node;
+ NumaDistOptions dist;
+ NumaCpuOptions cpu;
+ } u;
+};
+
+void qapi_free_NumaOptions(NumaOptions *obj);
+
+void qapi_free_NumaNodeOptions(NumaNodeOptions *obj);
+
+void qapi_free_NumaDistOptions(NumaDistOptions *obj);
+
+static inline CpuInstanceProperties *qapi_NumaCpuOptions_base(const NumaCpuOptions *obj)
+{
+ return (CpuInstanceProperties *)obj;
+}
+
+void qapi_free_NumaCpuOptions(NumaCpuOptions *obj);
+
+struct Memdev {
+ bool has_id;
+ char *id;
+ uint64_t size;
+ bool merge;
+ bool dump;
+ bool prealloc;
+ uint16List *host_nodes;
+ HostMemPolicy policy;
+};
+
+void qapi_free_Memdev(Memdev *obj);
+
+struct MemdevList {
+ MemdevList *next;
+ Memdev *value;
+};
+
+void qapi_free_MemdevList(MemdevList *obj);
+
+struct PCDIMMDeviceInfo {
+ bool has_id;
+ char *id;
+ int64_t addr;
+ int64_t size;
+ int64_t slot;
+ int64_t node;
+ char *memdev;
+ bool hotplugged;
+ bool hotpluggable;
+};
+
+void qapi_free_PCDIMMDeviceInfo(PCDIMMDeviceInfo *obj);
+
+struct q_obj_PCDIMMDeviceInfo_wrapper {
+ PCDIMMDeviceInfo *data;
+};
+
+struct MemoryDeviceInfo {
+ MemoryDeviceInfoKind type;
+ union { /* union tag is @type */
+ q_obj_PCDIMMDeviceInfo_wrapper dimm;
+ q_obj_PCDIMMDeviceInfo_wrapper nvdimm;
+ } u;
+};
+
+void qapi_free_MemoryDeviceInfo(MemoryDeviceInfo *obj);
+
+struct MemoryDeviceInfoList {
+ MemoryDeviceInfoList *next;
+ MemoryDeviceInfo *value;
+};
+
+void qapi_free_MemoryDeviceInfoList(MemoryDeviceInfoList *obj);
+
+struct q_obj_MEM_UNPLUG_ERROR_arg {
+ char *device;
+ char *msg;
+};
+
+struct ACPIOSTInfo {
+ bool has_device;
+ char *device;
+ char *slot;
+ ACPISlotType slot_type;
+ int64_t source;
+ int64_t status;
+};
+
+void qapi_free_ACPIOSTInfo(ACPIOSTInfo *obj);
+
+struct ACPIOSTInfoList {
+ ACPIOSTInfoList *next;
+ ACPIOSTInfo *value;
+};
+
+void qapi_free_ACPIOSTInfoList(ACPIOSTInfoList *obj);
+
+struct q_obj_ACPI_DEVICE_OST_arg {
+ ACPIOSTInfo *info;
+};
+
+struct q_obj_RTC_CHANGE_arg {
+ int64_t offset;
+};
+
+struct q_obj_xen_load_devices_state_arg {
+ char *filename;
+};
+
+struct GICCapability {
+ int64_t version;
+ bool emulated;
+ bool kernel;
+};
+
+void qapi_free_GICCapability(GICCapability *obj);
+
+struct GICCapabilityList {
+ GICCapabilityList *next;
+ GICCapability *value;
+};
+
+void qapi_free_GICCapabilityList(GICCapabilityList *obj);
+
+struct CpuInstanceProperties {
+ bool has_node_id;
+ int64_t node_id;
+ bool has_socket_id;
+ int64_t socket_id;
+ bool has_core_id;
+ int64_t core_id;
+ bool has_thread_id;
+ int64_t thread_id;
+};
+
+void qapi_free_CpuInstanceProperties(CpuInstanceProperties *obj);
+
+struct HotpluggableCPU {
+ char *type;
+ int64_t vcpus_count;
+ CpuInstanceProperties *props;
+ bool has_qom_path;
+ char *qom_path;
+};
+
+void qapi_free_HotpluggableCPU(HotpluggableCPU *obj);
+
+struct HotpluggableCPUList {
+ HotpluggableCPUList *next;
+ HotpluggableCPU *value;
+};
+
+void qapi_free_HotpluggableCPUList(HotpluggableCPUList *obj);
+
+struct GuidInfo {
+ char *guid;
+};
+
+void qapi_free_GuidInfo(GuidInfo *obj);
+
+struct SevInfo {
+ bool enabled;
+ uint8_t api_major;
+ uint8_t api_minor;
+ uint8_t build_id;
+ uint32_t policy;
+ SevState state;
+ uint32_t handle;
+};
+
+void qapi_free_SevInfo(SevInfo *obj);
+
+struct SevLaunchMeasureInfo {
+ char *data;
+};
+
+void qapi_free_SevLaunchMeasureInfo(SevLaunchMeasureInfo *obj);
+
+struct SevCapability {
+ char *pdh;
+ char *cert_chain;
+ int64_t cbitpos;
+ int64_t reduced_phys_bits;
+};
+
+void qapi_free_SevCapability(SevCapability *obj);
+
+struct q_obj_COMMAND_DROPPED_arg {
+ QObject *id;
+ CommandDropReason reason;
+};
+
+struct q_obj_x_oob_test_arg {
+ bool lock;
+};
+
+#endif /* QAPI_TYPES_MISC_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-net.c b/qemu2-auto-generated/qapi/qapi-types-net.c
new file mode 100644
index 0000000000..7388a80c48
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-net.c
@@ -0,0 +1,290 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-net.h"
+#include "qapi-visit-net.h"
+
+void qapi_free_NetdevNoneOptions(NetdevNoneOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevNoneOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetLegacyNicOptions(NetLegacyNicOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetLegacyNicOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_StringList(StringList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_StringList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevUserOptions(NetdevUserOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevUserOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevTapOptions(NetdevTapOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevTapOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevSocketOptions(NetdevSocketOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevSocketOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevL2TPv3Options(NetdevL2TPv3Options *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevL2TPv3Options(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevVdeOptions(NetdevVdeOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevVdeOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevBridgeOptions(NetdevBridgeOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevBridgeOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevHubPortOptions(NetdevHubPortOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevHubPortOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevNetmapOptions(NetdevNetmapOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevNetmapOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetdevVhostUserOptions(NetdevVhostUserOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetdevVhostUserOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NetClientDriver_lookup = {
+ .array = (const char *const[]) {
+ [NET_CLIENT_DRIVER_NONE] = "none",
+ [NET_CLIENT_DRIVER_NIC] = "nic",
+ [NET_CLIENT_DRIVER_USER] = "user",
+ [NET_CLIENT_DRIVER_TAP] = "tap",
+ [NET_CLIENT_DRIVER_L2TPV3] = "l2tpv3",
+ [NET_CLIENT_DRIVER_SOCKET] = "socket",
+ [NET_CLIENT_DRIVER_VDE] = "vde",
+ [NET_CLIENT_DRIVER_BRIDGE] = "bridge",
+ [NET_CLIENT_DRIVER_HUBPORT] = "hubport",
+ [NET_CLIENT_DRIVER_NETMAP] = "netmap",
+ [NET_CLIENT_DRIVER_VHOST_USER] = "vhost-user",
+ },
+ .size = NET_CLIENT_DRIVER__MAX
+};
+
+void qapi_free_Netdev(Netdev *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Netdev(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NetLegacy(NetLegacy *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetLegacy(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NetLegacyOptionsType_lookup = {
+ .array = (const char *const[]) {
+ [NET_LEGACY_OPTIONS_TYPE_NONE] = "none",
+ [NET_LEGACY_OPTIONS_TYPE_NIC] = "nic",
+ [NET_LEGACY_OPTIONS_TYPE_USER] = "user",
+ [NET_LEGACY_OPTIONS_TYPE_TAP] = "tap",
+ [NET_LEGACY_OPTIONS_TYPE_L2TPV3] = "l2tpv3",
+ [NET_LEGACY_OPTIONS_TYPE_SOCKET] = "socket",
+ [NET_LEGACY_OPTIONS_TYPE_VDE] = "vde",
+ [NET_LEGACY_OPTIONS_TYPE_BRIDGE] = "bridge",
+ [NET_LEGACY_OPTIONS_TYPE_NETMAP] = "netmap",
+ [NET_LEGACY_OPTIONS_TYPE_VHOST_USER] = "vhost-user",
+ },
+ .size = NET_LEGACY_OPTIONS_TYPE__MAX
+};
+
+void qapi_free_NetLegacyOptions(NetLegacyOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NetLegacyOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup NetFilterDirection_lookup = {
+ .array = (const char *const[]) {
+ [NET_FILTER_DIRECTION_ALL] = "all",
+ [NET_FILTER_DIRECTION_RX] = "rx",
+ [NET_FILTER_DIRECTION_TX] = "tx",
+ },
+ .size = NET_FILTER_DIRECTION__MAX
+};
+
+const QEnumLookup RxState_lookup = {
+ .array = (const char *const[]) {
+ [RX_STATE_NORMAL] = "normal",
+ [RX_STATE_NONE] = "none",
+ [RX_STATE_ALL] = "all",
+ },
+ .size = RX_STATE__MAX
+};
+
+void qapi_free_RxFilterInfo(RxFilterInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RxFilterInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RxFilterInfoList(RxFilterInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RxFilterInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_net_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-net.h b/qemu2-auto-generated/qapi/qapi-types-net.h
new file mode 100644
index 0000000000..0c5593aece
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-net.h
@@ -0,0 +1,441 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_NET_H
+#define QAPI_TYPES_NET_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-common.h"
+
+typedef struct q_obj_set_link_arg q_obj_set_link_arg;
+
+typedef struct q_obj_netdev_add_arg q_obj_netdev_add_arg;
+
+typedef struct q_obj_netdev_del_arg q_obj_netdev_del_arg;
+
+typedef struct NetdevNoneOptions NetdevNoneOptions;
+
+typedef struct NetLegacyNicOptions NetLegacyNicOptions;
+
+typedef struct StringList StringList;
+
+typedef struct NetdevUserOptions NetdevUserOptions;
+
+typedef struct NetdevTapOptions NetdevTapOptions;
+
+typedef struct NetdevSocketOptions NetdevSocketOptions;
+
+typedef struct NetdevL2TPv3Options NetdevL2TPv3Options;
+
+typedef struct NetdevVdeOptions NetdevVdeOptions;
+
+typedef struct NetdevBridgeOptions NetdevBridgeOptions;
+
+typedef struct NetdevHubPortOptions NetdevHubPortOptions;
+
+typedef struct NetdevNetmapOptions NetdevNetmapOptions;
+
+typedef struct NetdevVhostUserOptions NetdevVhostUserOptions;
+
+typedef enum NetClientDriver {
+ NET_CLIENT_DRIVER_NONE = 0,
+ NET_CLIENT_DRIVER_NIC = 1,
+ NET_CLIENT_DRIVER_USER = 2,
+ NET_CLIENT_DRIVER_TAP = 3,
+ NET_CLIENT_DRIVER_L2TPV3 = 4,
+ NET_CLIENT_DRIVER_SOCKET = 5,
+ NET_CLIENT_DRIVER_VDE = 6,
+ NET_CLIENT_DRIVER_BRIDGE = 7,
+ NET_CLIENT_DRIVER_HUBPORT = 8,
+ NET_CLIENT_DRIVER_NETMAP = 9,
+ NET_CLIENT_DRIVER_VHOST_USER = 10,
+ NET_CLIENT_DRIVER__MAX = 11,
+} NetClientDriver;
+
+#define NetClientDriver_str(val) \
+ qapi_enum_lookup(&NetClientDriver_lookup, (val))
+
+extern const QEnumLookup NetClientDriver_lookup;
+
+typedef struct q_obj_Netdev_base q_obj_Netdev_base;
+
+typedef struct Netdev Netdev;
+
+typedef struct NetLegacy NetLegacy;
+
+typedef enum NetLegacyOptionsType {
+ NET_LEGACY_OPTIONS_TYPE_NONE = 0,
+ NET_LEGACY_OPTIONS_TYPE_NIC = 1,
+ NET_LEGACY_OPTIONS_TYPE_USER = 2,
+ NET_LEGACY_OPTIONS_TYPE_TAP = 3,
+ NET_LEGACY_OPTIONS_TYPE_L2TPV3 = 4,
+ NET_LEGACY_OPTIONS_TYPE_SOCKET = 5,
+ NET_LEGACY_OPTIONS_TYPE_VDE = 6,
+ NET_LEGACY_OPTIONS_TYPE_BRIDGE = 7,
+ NET_LEGACY_OPTIONS_TYPE_NETMAP = 8,
+ NET_LEGACY_OPTIONS_TYPE_VHOST_USER = 9,
+ NET_LEGACY_OPTIONS_TYPE__MAX = 10,
+} NetLegacyOptionsType;
+
+#define NetLegacyOptionsType_str(val) \
+ qapi_enum_lookup(&NetLegacyOptionsType_lookup, (val))
+
+extern const QEnumLookup NetLegacyOptionsType_lookup;
+
+typedef struct q_obj_NetLegacyOptions_base q_obj_NetLegacyOptions_base;
+
+typedef struct NetLegacyOptions NetLegacyOptions;
+
+typedef enum NetFilterDirection {
+ NET_FILTER_DIRECTION_ALL = 0,
+ NET_FILTER_DIRECTION_RX = 1,
+ NET_FILTER_DIRECTION_TX = 2,
+ NET_FILTER_DIRECTION__MAX = 3,
+} NetFilterDirection;
+
+#define NetFilterDirection_str(val) \
+ qapi_enum_lookup(&NetFilterDirection_lookup, (val))
+
+extern const QEnumLookup NetFilterDirection_lookup;
+
+typedef enum RxState {
+ RX_STATE_NORMAL = 0,
+ RX_STATE_NONE = 1,
+ RX_STATE_ALL = 2,
+ RX_STATE__MAX = 3,
+} RxState;
+
+#define RxState_str(val) \
+ qapi_enum_lookup(&RxState_lookup, (val))
+
+extern const QEnumLookup RxState_lookup;
+
+typedef struct RxFilterInfo RxFilterInfo;
+
+typedef struct q_obj_query_rx_filter_arg q_obj_query_rx_filter_arg;
+
+typedef struct RxFilterInfoList RxFilterInfoList;
+
+typedef struct q_obj_NIC_RX_FILTER_CHANGED_arg q_obj_NIC_RX_FILTER_CHANGED_arg;
+
+struct q_obj_set_link_arg {
+ char *name;
+ bool up;
+};
+
+struct q_obj_netdev_add_arg {
+ char *type;
+ char *id;
+};
+
+struct q_obj_netdev_del_arg {
+ char *id;
+};
+
+struct NetdevNoneOptions {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_NetdevNoneOptions(NetdevNoneOptions *obj);
+
+struct NetLegacyNicOptions {
+ bool has_netdev;
+ char *netdev;
+ bool has_macaddr;
+ char *macaddr;
+ bool has_model;
+ char *model;
+ bool has_addr;
+ char *addr;
+ bool has_vectors;
+ uint32_t vectors;
+};
+
+void qapi_free_NetLegacyNicOptions(NetLegacyNicOptions *obj);
+
+struct StringList {
+ StringList *next;
+ String *value;
+};
+
+void qapi_free_StringList(StringList *obj);
+
+struct NetdevUserOptions {
+ bool has_hostname;
+ char *hostname;
+ bool has_q_restrict;
+ bool q_restrict;
+ bool has_ipv4;
+ bool ipv4;
+ bool has_ipv6;
+ bool ipv6;
+ bool has_ip;
+ char *ip;
+ bool has_net;
+ char *net;
+ bool has_host;
+ char *host;
+ bool has_tftp;
+ char *tftp;
+ bool has_bootfile;
+ char *bootfile;
+ bool has_dhcpstart;
+ char *dhcpstart;
+ bool has_dns;
+ char *dns;
+ bool has_dnssearch;
+ StringList *dnssearch;
+ bool has_ipv6_prefix;
+ char *ipv6_prefix;
+ bool has_ipv6_prefixlen;
+ int64_t ipv6_prefixlen;
+ bool has_ipv6_host;
+ char *ipv6_host;
+ bool has_ipv6_dns;
+ char *ipv6_dns;
+ bool has_smb;
+ char *smb;
+ bool has_smbserver;
+ char *smbserver;
+ bool has_hostfwd;
+ StringList *hostfwd;
+ bool has_guestfwd;
+ StringList *guestfwd;
+};
+
+void qapi_free_NetdevUserOptions(NetdevUserOptions *obj);
+
+struct NetdevTapOptions {
+ bool has_ifname;
+ char *ifname;
+ bool has_fd;
+ char *fd;
+ bool has_fds;
+ char *fds;
+ bool has_script;
+ char *script;
+ bool has_downscript;
+ char *downscript;
+ bool has_br;
+ char *br;
+ bool has_helper;
+ char *helper;
+ bool has_sndbuf;
+ uint64_t sndbuf;
+ bool has_vnet_hdr;
+ bool vnet_hdr;
+ bool has_vhost;
+ bool vhost;
+ bool has_vhostfd;
+ char *vhostfd;
+ bool has_vhostfds;
+ char *vhostfds;
+ bool has_vhostforce;
+ bool vhostforce;
+ bool has_queues;
+ uint32_t queues;
+ bool has_poll_us;
+ uint32_t poll_us;
+};
+
+void qapi_free_NetdevTapOptions(NetdevTapOptions *obj);
+
+struct NetdevSocketOptions {
+ bool has_fd;
+ char *fd;
+ bool has_listen;
+ char *listen;
+ bool has_connect;
+ char *connect;
+ bool has_mcast;
+ char *mcast;
+ bool has_localaddr;
+ char *localaddr;
+ bool has_udp;
+ char *udp;
+};
+
+void qapi_free_NetdevSocketOptions(NetdevSocketOptions *obj);
+
+struct NetdevL2TPv3Options {
+ char *src;
+ char *dst;
+ bool has_srcport;
+ char *srcport;
+ bool has_dstport;
+ char *dstport;
+ bool has_ipv6;
+ bool ipv6;
+ bool has_udp;
+ bool udp;
+ bool has_cookie64;
+ bool cookie64;
+ bool has_counter;
+ bool counter;
+ bool has_pincounter;
+ bool pincounter;
+ bool has_txcookie;
+ uint64_t txcookie;
+ bool has_rxcookie;
+ uint64_t rxcookie;
+ uint32_t txsession;
+ bool has_rxsession;
+ uint32_t rxsession;
+ bool has_offset;
+ uint32_t offset;
+};
+
+void qapi_free_NetdevL2TPv3Options(NetdevL2TPv3Options *obj);
+
+struct NetdevVdeOptions {
+ bool has_sock;
+ char *sock;
+ bool has_port;
+ uint16_t port;
+ bool has_group;
+ char *group;
+ bool has_mode;
+ uint16_t mode;
+};
+
+void qapi_free_NetdevVdeOptions(NetdevVdeOptions *obj);
+
+struct NetdevBridgeOptions {
+ bool has_br;
+ char *br;
+ bool has_helper;
+ char *helper;
+};
+
+void qapi_free_NetdevBridgeOptions(NetdevBridgeOptions *obj);
+
+struct NetdevHubPortOptions {
+ int32_t hubid;
+ bool has_netdev;
+ char *netdev;
+};
+
+void qapi_free_NetdevHubPortOptions(NetdevHubPortOptions *obj);
+
+struct NetdevNetmapOptions {
+ char *ifname;
+ bool has_devname;
+ char *devname;
+};
+
+void qapi_free_NetdevNetmapOptions(NetdevNetmapOptions *obj);
+
+struct NetdevVhostUserOptions {
+ char *chardev;
+ bool has_vhostforce;
+ bool vhostforce;
+ bool has_queues;
+ int64_t queues;
+};
+
+void qapi_free_NetdevVhostUserOptions(NetdevVhostUserOptions *obj);
+
+struct q_obj_Netdev_base {
+ char *id;
+ NetClientDriver type;
+};
+
+struct Netdev {
+ char *id;
+ NetClientDriver type;
+ union { /* union tag is @type */
+ NetdevNoneOptions none;
+ NetLegacyNicOptions nic;
+ NetdevUserOptions user;
+ NetdevTapOptions tap;
+ NetdevL2TPv3Options l2tpv3;
+ NetdevSocketOptions socket;
+ NetdevVdeOptions vde;
+ NetdevBridgeOptions bridge;
+ NetdevHubPortOptions hubport;
+ NetdevNetmapOptions netmap;
+ NetdevVhostUserOptions vhost_user;
+ } u;
+};
+
+void qapi_free_Netdev(Netdev *obj);
+
+struct NetLegacy {
+ bool has_vlan;
+ int32_t vlan;
+ bool has_id;
+ char *id;
+ bool has_name;
+ char *name;
+ NetLegacyOptions *opts;
+};
+
+void qapi_free_NetLegacy(NetLegacy *obj);
+
+struct q_obj_NetLegacyOptions_base {
+ NetLegacyOptionsType type;
+};
+
+struct NetLegacyOptions {
+ NetLegacyOptionsType type;
+ union { /* union tag is @type */
+ NetdevNoneOptions none;
+ NetLegacyNicOptions nic;
+ NetdevUserOptions user;
+ NetdevTapOptions tap;
+ NetdevL2TPv3Options l2tpv3;
+ NetdevSocketOptions socket;
+ NetdevVdeOptions vde;
+ NetdevBridgeOptions bridge;
+ NetdevNetmapOptions netmap;
+ NetdevVhostUserOptions vhost_user;
+ } u;
+};
+
+void qapi_free_NetLegacyOptions(NetLegacyOptions *obj);
+
+struct RxFilterInfo {
+ char *name;
+ bool promiscuous;
+ RxState multicast;
+ RxState unicast;
+ RxState vlan;
+ bool broadcast_allowed;
+ bool multicast_overflow;
+ bool unicast_overflow;
+ char *main_mac;
+ intList *vlan_table;
+ strList *unicast_table;
+ strList *multicast_table;
+};
+
+void qapi_free_RxFilterInfo(RxFilterInfo *obj);
+
+struct q_obj_query_rx_filter_arg {
+ bool has_name;
+ char *name;
+};
+
+struct RxFilterInfoList {
+ RxFilterInfoList *next;
+ RxFilterInfo *value;
+};
+
+void qapi_free_RxFilterInfoList(RxFilterInfoList *obj);
+
+struct q_obj_NIC_RX_FILTER_CHANGED_arg {
+ bool has_name;
+ char *name;
+ char *path;
+};
+
+#endif /* QAPI_TYPES_NET_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-rocker.c b/qemu2-auto-generated/qapi/qapi-types-rocker.c
new file mode 100644
index 0000000000..7509502ed4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-rocker.c
@@ -0,0 +1,164 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-rocker.h"
+#include "qapi-visit-rocker.h"
+
+void qapi_free_RockerSwitch(RockerSwitch *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerSwitch(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup RockerPortDuplex_lookup = {
+ .array = (const char *const[]) {
+ [ROCKER_PORT_DUPLEX_HALF] = "half",
+ [ROCKER_PORT_DUPLEX_FULL] = "full",
+ },
+ .size = ROCKER_PORT_DUPLEX__MAX
+};
+
+const QEnumLookup RockerPortAutoneg_lookup = {
+ .array = (const char *const[]) {
+ [ROCKER_PORT_AUTONEG_OFF] = "off",
+ [ROCKER_PORT_AUTONEG_ON] = "on",
+ },
+ .size = ROCKER_PORT_AUTONEG__MAX
+};
+
+void qapi_free_RockerPort(RockerPort *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerPort(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerPortList(RockerPortList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerPortList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaFlowKey(RockerOfDpaFlowKey *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlowKey(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaFlowMask(RockerOfDpaFlowMask *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlowMask(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaFlowAction(RockerOfDpaFlowAction *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlowAction(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaFlow(RockerOfDpaFlow *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlow(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaFlowList(RockerOfDpaFlowList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaFlowList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaGroup(RockerOfDpaGroup *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaGroup(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_RockerOfDpaGroupList(RockerOfDpaGroupList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_RockerOfDpaGroupList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_rocker_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-rocker.h b/qemu2-auto-generated/qapi/qapi-types-rocker.h
new file mode 100644
index 0000000000..b1c1ab4b17
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-rocker.h
@@ -0,0 +1,228 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_ROCKER_H
+#define QAPI_TYPES_ROCKER_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef struct RockerSwitch RockerSwitch;
+
+typedef struct q_obj_query_rocker_arg q_obj_query_rocker_arg;
+
+typedef enum RockerPortDuplex {
+ ROCKER_PORT_DUPLEX_HALF = 0,
+ ROCKER_PORT_DUPLEX_FULL = 1,
+ ROCKER_PORT_DUPLEX__MAX = 2,
+} RockerPortDuplex;
+
+#define RockerPortDuplex_str(val) \
+ qapi_enum_lookup(&RockerPortDuplex_lookup, (val))
+
+extern const QEnumLookup RockerPortDuplex_lookup;
+
+typedef enum RockerPortAutoneg {
+ ROCKER_PORT_AUTONEG_OFF = 0,
+ ROCKER_PORT_AUTONEG_ON = 1,
+ ROCKER_PORT_AUTONEG__MAX = 2,
+} RockerPortAutoneg;
+
+#define RockerPortAutoneg_str(val) \
+ qapi_enum_lookup(&RockerPortAutoneg_lookup, (val))
+
+extern const QEnumLookup RockerPortAutoneg_lookup;
+
+typedef struct RockerPort RockerPort;
+
+typedef struct q_obj_query_rocker_ports_arg q_obj_query_rocker_ports_arg;
+
+typedef struct RockerPortList RockerPortList;
+
+typedef struct RockerOfDpaFlowKey RockerOfDpaFlowKey;
+
+typedef struct RockerOfDpaFlowMask RockerOfDpaFlowMask;
+
+typedef struct RockerOfDpaFlowAction RockerOfDpaFlowAction;
+
+typedef struct RockerOfDpaFlow RockerOfDpaFlow;
+
+typedef struct q_obj_query_rocker_of_dpa_flows_arg q_obj_query_rocker_of_dpa_flows_arg;
+
+typedef struct RockerOfDpaFlowList RockerOfDpaFlowList;
+
+typedef struct RockerOfDpaGroup RockerOfDpaGroup;
+
+typedef struct q_obj_query_rocker_of_dpa_groups_arg q_obj_query_rocker_of_dpa_groups_arg;
+
+typedef struct RockerOfDpaGroupList RockerOfDpaGroupList;
+
+struct RockerSwitch {
+ char *name;
+ uint64_t id;
+ uint32_t ports;
+};
+
+void qapi_free_RockerSwitch(RockerSwitch *obj);
+
+struct q_obj_query_rocker_arg {
+ char *name;
+};
+
+struct RockerPort {
+ char *name;
+ bool enabled;
+ bool link_up;
+ uint32_t speed;
+ RockerPortDuplex duplex;
+ RockerPortAutoneg autoneg;
+};
+
+void qapi_free_RockerPort(RockerPort *obj);
+
+struct q_obj_query_rocker_ports_arg {
+ char *name;
+};
+
+struct RockerPortList {
+ RockerPortList *next;
+ RockerPort *value;
+};
+
+void qapi_free_RockerPortList(RockerPortList *obj);
+
+struct RockerOfDpaFlowKey {
+ uint32_t priority;
+ uint32_t tbl_id;
+ bool has_in_pport;
+ uint32_t in_pport;
+ bool has_tunnel_id;
+ uint32_t tunnel_id;
+ bool has_vlan_id;
+ uint16_t vlan_id;
+ bool has_eth_type;
+ uint16_t eth_type;
+ bool has_eth_src;
+ char *eth_src;
+ bool has_eth_dst;
+ char *eth_dst;
+ bool has_ip_proto;
+ uint8_t ip_proto;
+ bool has_ip_tos;
+ uint8_t ip_tos;
+ bool has_ip_dst;
+ char *ip_dst;
+};
+
+void qapi_free_RockerOfDpaFlowKey(RockerOfDpaFlowKey *obj);
+
+struct RockerOfDpaFlowMask {
+ bool has_in_pport;
+ uint32_t in_pport;
+ bool has_tunnel_id;
+ uint32_t tunnel_id;
+ bool has_vlan_id;
+ uint16_t vlan_id;
+ bool has_eth_src;
+ char *eth_src;
+ bool has_eth_dst;
+ char *eth_dst;
+ bool has_ip_proto;
+ uint8_t ip_proto;
+ bool has_ip_tos;
+ uint8_t ip_tos;
+};
+
+void qapi_free_RockerOfDpaFlowMask(RockerOfDpaFlowMask *obj);
+
+struct RockerOfDpaFlowAction {
+ bool has_goto_tbl;
+ uint32_t goto_tbl;
+ bool has_group_id;
+ uint32_t group_id;
+ bool has_tunnel_lport;
+ uint32_t tunnel_lport;
+ bool has_vlan_id;
+ uint16_t vlan_id;
+ bool has_new_vlan_id;
+ uint16_t new_vlan_id;
+ bool has_out_pport;
+ uint32_t out_pport;
+};
+
+void qapi_free_RockerOfDpaFlowAction(RockerOfDpaFlowAction *obj);
+
+struct RockerOfDpaFlow {
+ uint64_t cookie;
+ uint64_t hits;
+ RockerOfDpaFlowKey *key;
+ RockerOfDpaFlowMask *mask;
+ RockerOfDpaFlowAction *action;
+};
+
+void qapi_free_RockerOfDpaFlow(RockerOfDpaFlow *obj);
+
+struct q_obj_query_rocker_of_dpa_flows_arg {
+ char *name;
+ bool has_tbl_id;
+ uint32_t tbl_id;
+};
+
+struct RockerOfDpaFlowList {
+ RockerOfDpaFlowList *next;
+ RockerOfDpaFlow *value;
+};
+
+void qapi_free_RockerOfDpaFlowList(RockerOfDpaFlowList *obj);
+
+struct RockerOfDpaGroup {
+ uint32_t id;
+ uint8_t type;
+ bool has_vlan_id;
+ uint16_t vlan_id;
+ bool has_pport;
+ uint32_t pport;
+ bool has_index;
+ uint32_t index;
+ bool has_out_pport;
+ uint32_t out_pport;
+ bool has_group_id;
+ uint32_t group_id;
+ bool has_set_vlan_id;
+ uint16_t set_vlan_id;
+ bool has_pop_vlan;
+ uint8_t pop_vlan;
+ bool has_group_ids;
+ uint32List *group_ids;
+ bool has_set_eth_src;
+ char *set_eth_src;
+ bool has_set_eth_dst;
+ char *set_eth_dst;
+ bool has_ttl_check;
+ uint8_t ttl_check;
+};
+
+void qapi_free_RockerOfDpaGroup(RockerOfDpaGroup *obj);
+
+struct q_obj_query_rocker_of_dpa_groups_arg {
+ char *name;
+ bool has_type;
+ uint8_t type;
+};
+
+struct RockerOfDpaGroupList {
+ RockerOfDpaGroupList *next;
+ RockerOfDpaGroup *value;
+};
+
+void qapi_free_RockerOfDpaGroupList(RockerOfDpaGroupList *obj);
+
+#endif /* QAPI_TYPES_ROCKER_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-run-state.c b/qemu2-auto-generated/qapi/qapi-types-run-state.c
new file mode 100644
index 0000000000..f064ab8e2b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-run-state.c
@@ -0,0 +1,132 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-run-state.h"
+#include "qapi-visit-run-state.h"
+
+const QEnumLookup RunState_lookup = {
+ .array = (const char *const[]) {
+ [RUN_STATE_DEBUG] = "debug",
+ [RUN_STATE_INMIGRATE] = "inmigrate",
+ [RUN_STATE_INTERNAL_ERROR] = "internal-error",
+ [RUN_STATE_IO_ERROR] = "io-error",
+ [RUN_STATE_PAUSED] = "paused",
+ [RUN_STATE_POSTMIGRATE] = "postmigrate",
+ [RUN_STATE_PRELAUNCH] = "prelaunch",
+ [RUN_STATE_FINISH_MIGRATE] = "finish-migrate",
+ [RUN_STATE_RESTORE_VM] = "restore-vm",
+ [RUN_STATE_RUNNING] = "running",
+ [RUN_STATE_SAVE_VM] = "save-vm",
+ [RUN_STATE_SHUTDOWN] = "shutdown",
+ [RUN_STATE_SUSPENDED] = "suspended",
+ [RUN_STATE_WATCHDOG] = "watchdog",
+ [RUN_STATE_GUEST_PANICKED] = "guest-panicked",
+ [RUN_STATE_COLO] = "colo",
+ },
+ .size = RUN_STATE__MAX
+};
+
+void qapi_free_StatusInfo(StatusInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_StatusInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup WatchdogAction_lookup = {
+ .array = (const char *const[]) {
+ [WATCHDOG_ACTION_RESET] = "reset",
+ [WATCHDOG_ACTION_SHUTDOWN] = "shutdown",
+ [WATCHDOG_ACTION_POWEROFF] = "poweroff",
+ [WATCHDOG_ACTION_PAUSE] = "pause",
+ [WATCHDOG_ACTION_DEBUG] = "debug",
+ [WATCHDOG_ACTION_NONE] = "none",
+ [WATCHDOG_ACTION_INJECT_NMI] = "inject-nmi",
+ },
+ .size = WATCHDOG_ACTION__MAX
+};
+
+const QEnumLookup GuestPanicAction_lookup = {
+ .array = (const char *const[]) {
+ [GUEST_PANIC_ACTION_PAUSE] = "pause",
+ [GUEST_PANIC_ACTION_POWEROFF] = "poweroff",
+ },
+ .size = GUEST_PANIC_ACTION__MAX
+};
+
+const QEnumLookup GuestPanicInformationType_lookup = {
+ .array = (const char *const[]) {
+ [GUEST_PANIC_INFORMATION_TYPE_HYPER_V] = "hyper-v",
+ [GUEST_PANIC_INFORMATION_TYPE_S390] = "s390",
+ },
+ .size = GUEST_PANIC_INFORMATION_TYPE__MAX
+};
+
+void qapi_free_GuestPanicInformation(GuestPanicInformation *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GuestPanicInformation(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_GuestPanicInformationHyperV(GuestPanicInformationHyperV *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GuestPanicInformationHyperV(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup S390CrashReason_lookup = {
+ .array = (const char *const[]) {
+ [S390_CRASH_REASON_UNKNOWN] = "unknown",
+ [S390_CRASH_REASON_DISABLED_WAIT] = "disabled-wait",
+ [S390_CRASH_REASON_EXTINT_LOOP] = "extint-loop",
+ [S390_CRASH_REASON_PGMINT_LOOP] = "pgmint-loop",
+ [S390_CRASH_REASON_OPINT_LOOP] = "opint-loop",
+ },
+ .size = S390_CRASH_REASON__MAX
+};
+
+void qapi_free_GuestPanicInformationS390(GuestPanicInformationS390 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_GuestPanicInformationS390(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_run_state_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-run-state.h b/qemu2-auto-generated/qapi/qapi-types-run-state.h
new file mode 100644
index 0000000000..f03beaf317
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-run-state.h
@@ -0,0 +1,178 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_RUN_STATE_H
+#define QAPI_TYPES_RUN_STATE_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef enum RunState {
+ RUN_STATE_DEBUG = 0,
+ RUN_STATE_INMIGRATE = 1,
+ RUN_STATE_INTERNAL_ERROR = 2,
+ RUN_STATE_IO_ERROR = 3,
+ RUN_STATE_PAUSED = 4,
+ RUN_STATE_POSTMIGRATE = 5,
+ RUN_STATE_PRELAUNCH = 6,
+ RUN_STATE_FINISH_MIGRATE = 7,
+ RUN_STATE_RESTORE_VM = 8,
+ RUN_STATE_RUNNING = 9,
+ RUN_STATE_SAVE_VM = 10,
+ RUN_STATE_SHUTDOWN = 11,
+ RUN_STATE_SUSPENDED = 12,
+ RUN_STATE_WATCHDOG = 13,
+ RUN_STATE_GUEST_PANICKED = 14,
+ RUN_STATE_COLO = 15,
+ RUN_STATE__MAX = 16,
+} RunState;
+
+#define RunState_str(val) \
+ qapi_enum_lookup(&RunState_lookup, (val))
+
+extern const QEnumLookup RunState_lookup;
+
+typedef struct StatusInfo StatusInfo;
+
+typedef struct q_obj_SHUTDOWN_arg q_obj_SHUTDOWN_arg;
+
+typedef struct q_obj_RESET_arg q_obj_RESET_arg;
+
+typedef struct q_obj_WATCHDOG_arg q_obj_WATCHDOG_arg;
+
+typedef enum WatchdogAction {
+ WATCHDOG_ACTION_RESET = 0,
+ WATCHDOG_ACTION_SHUTDOWN = 1,
+ WATCHDOG_ACTION_POWEROFF = 2,
+ WATCHDOG_ACTION_PAUSE = 3,
+ WATCHDOG_ACTION_DEBUG = 4,
+ WATCHDOG_ACTION_NONE = 5,
+ WATCHDOG_ACTION_INJECT_NMI = 6,
+ WATCHDOG_ACTION__MAX = 7,
+} WatchdogAction;
+
+#define WatchdogAction_str(val) \
+ qapi_enum_lookup(&WatchdogAction_lookup, (val))
+
+extern const QEnumLookup WatchdogAction_lookup;
+
+typedef struct q_obj_watchdog_set_action_arg q_obj_watchdog_set_action_arg;
+
+typedef struct q_obj_GUEST_PANICKED_arg q_obj_GUEST_PANICKED_arg;
+
+typedef enum GuestPanicAction {
+ GUEST_PANIC_ACTION_PAUSE = 0,
+ GUEST_PANIC_ACTION_POWEROFF = 1,
+ GUEST_PANIC_ACTION__MAX = 2,
+} GuestPanicAction;
+
+#define GuestPanicAction_str(val) \
+ qapi_enum_lookup(&GuestPanicAction_lookup, (val))
+
+extern const QEnumLookup GuestPanicAction_lookup;
+
+typedef enum GuestPanicInformationType {
+ GUEST_PANIC_INFORMATION_TYPE_HYPER_V = 0,
+ GUEST_PANIC_INFORMATION_TYPE_S390 = 1,
+ GUEST_PANIC_INFORMATION_TYPE__MAX = 2,
+} GuestPanicInformationType;
+
+#define GuestPanicInformationType_str(val) \
+ qapi_enum_lookup(&GuestPanicInformationType_lookup, (val))
+
+extern const QEnumLookup GuestPanicInformationType_lookup;
+
+typedef struct q_obj_GuestPanicInformation_base q_obj_GuestPanicInformation_base;
+
+typedef struct GuestPanicInformation GuestPanicInformation;
+
+typedef struct GuestPanicInformationHyperV GuestPanicInformationHyperV;
+
+typedef enum S390CrashReason {
+ S390_CRASH_REASON_UNKNOWN = 0,
+ S390_CRASH_REASON_DISABLED_WAIT = 1,
+ S390_CRASH_REASON_EXTINT_LOOP = 2,
+ S390_CRASH_REASON_PGMINT_LOOP = 3,
+ S390_CRASH_REASON_OPINT_LOOP = 4,
+ S390_CRASH_REASON__MAX = 5,
+} S390CrashReason;
+
+#define S390CrashReason_str(val) \
+ qapi_enum_lookup(&S390CrashReason_lookup, (val))
+
+extern const QEnumLookup S390CrashReason_lookup;
+
+typedef struct GuestPanicInformationS390 GuestPanicInformationS390;
+
+struct StatusInfo {
+ bool running;
+ bool singlestep;
+ RunState status;
+};
+
+void qapi_free_StatusInfo(StatusInfo *obj);
+
+struct q_obj_SHUTDOWN_arg {
+ bool guest;
+};
+
+struct q_obj_RESET_arg {
+ bool guest;
+};
+
+struct q_obj_WATCHDOG_arg {
+ WatchdogAction action;
+};
+
+struct q_obj_watchdog_set_action_arg {
+ WatchdogAction action;
+};
+
+struct q_obj_GUEST_PANICKED_arg {
+ GuestPanicAction action;
+ bool has_info;
+ GuestPanicInformation *info;
+};
+
+struct q_obj_GuestPanicInformation_base {
+ GuestPanicInformationType type;
+};
+
+struct GuestPanicInformationHyperV {
+ uint64_t arg1;
+ uint64_t arg2;
+ uint64_t arg3;
+ uint64_t arg4;
+ uint64_t arg5;
+};
+
+struct GuestPanicInformationS390 {
+ uint32_t core;
+ uint64_t psw_mask;
+ uint64_t psw_addr;
+ S390CrashReason reason;
+};
+
+struct GuestPanicInformation {
+ GuestPanicInformationType type;
+ union { /* union tag is @type */
+ GuestPanicInformationHyperV hyper_v;
+ GuestPanicInformationS390 s390;
+ } u;
+};
+
+void qapi_free_GuestPanicInformation(GuestPanicInformation *obj);
+
+void qapi_free_GuestPanicInformationHyperV(GuestPanicInformationHyperV *obj);
+
+void qapi_free_GuestPanicInformationS390(GuestPanicInformationS390 *obj);
+
+#endif /* QAPI_TYPES_RUN_STATE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-sockets.c b/qemu2-auto-generated/qapi/qapi-types-sockets.c
new file mode 100644
index 0000000000..36495d7de7
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-sockets.c
@@ -0,0 +1,127 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-sockets.h"
+#include "qapi-visit-sockets.h"
+
+const QEnumLookup NetworkAddressFamily_lookup = {
+ .array = (const char *const[]) {
+ [NETWORK_ADDRESS_FAMILY_IPV4] = "ipv4",
+ [NETWORK_ADDRESS_FAMILY_IPV6] = "ipv6",
+ [NETWORK_ADDRESS_FAMILY_UNIX] = "unix",
+ [NETWORK_ADDRESS_FAMILY_VSOCK] = "vsock",
+ [NETWORK_ADDRESS_FAMILY_UNKNOWN] = "unknown",
+ },
+ .size = NETWORK_ADDRESS_FAMILY__MAX
+};
+
+void qapi_free_InetSocketAddressBase(InetSocketAddressBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InetSocketAddressBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_InetSocketAddress(InetSocketAddress *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InetSocketAddress(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UnixSocketAddress(UnixSocketAddress *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UnixSocketAddress(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VsockSocketAddress(VsockSocketAddress *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VsockSocketAddress(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SocketAddressLegacyKind_lookup = {
+ .array = (const char *const[]) {
+ [SOCKET_ADDRESS_LEGACY_KIND_INET] = "inet",
+ [SOCKET_ADDRESS_LEGACY_KIND_UNIX] = "unix",
+ [SOCKET_ADDRESS_LEGACY_KIND_VSOCK] = "vsock",
+ [SOCKET_ADDRESS_LEGACY_KIND_FD] = "fd",
+ },
+ .size = SOCKET_ADDRESS_LEGACY_KIND__MAX
+};
+
+void qapi_free_SocketAddressLegacy(SocketAddressLegacy *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SocketAddressLegacy(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SocketAddressType_lookup = {
+ .array = (const char *const[]) {
+ [SOCKET_ADDRESS_TYPE_INET] = "inet",
+ [SOCKET_ADDRESS_TYPE_UNIX] = "unix",
+ [SOCKET_ADDRESS_TYPE_VSOCK] = "vsock",
+ [SOCKET_ADDRESS_TYPE_FD] = "fd",
+ },
+ .size = SOCKET_ADDRESS_TYPE__MAX
+};
+
+void qapi_free_SocketAddress(SocketAddress *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SocketAddress(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_sockets_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-sockets.h b/qemu2-auto-generated/qapi/qapi-types-sockets.h
new file mode 100644
index 0000000000..f53813dab4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-sockets.h
@@ -0,0 +1,167 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_SOCKETS_H
+#define QAPI_TYPES_SOCKETS_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-common.h"
+
+typedef enum NetworkAddressFamily {
+ NETWORK_ADDRESS_FAMILY_IPV4 = 0,
+ NETWORK_ADDRESS_FAMILY_IPV6 = 1,
+ NETWORK_ADDRESS_FAMILY_UNIX = 2,
+ NETWORK_ADDRESS_FAMILY_VSOCK = 3,
+ NETWORK_ADDRESS_FAMILY_UNKNOWN = 4,
+ NETWORK_ADDRESS_FAMILY__MAX = 5,
+} NetworkAddressFamily;
+
+#define NetworkAddressFamily_str(val) \
+ qapi_enum_lookup(&NetworkAddressFamily_lookup, (val))
+
+extern const QEnumLookup NetworkAddressFamily_lookup;
+
+typedef struct InetSocketAddressBase InetSocketAddressBase;
+
+typedef struct InetSocketAddress InetSocketAddress;
+
+typedef struct UnixSocketAddress UnixSocketAddress;
+
+typedef struct VsockSocketAddress VsockSocketAddress;
+
+typedef struct q_obj_InetSocketAddress_wrapper q_obj_InetSocketAddress_wrapper;
+
+typedef struct q_obj_UnixSocketAddress_wrapper q_obj_UnixSocketAddress_wrapper;
+
+typedef struct q_obj_VsockSocketAddress_wrapper q_obj_VsockSocketAddress_wrapper;
+
+typedef struct q_obj_String_wrapper q_obj_String_wrapper;
+
+typedef enum SocketAddressLegacyKind {
+ SOCKET_ADDRESS_LEGACY_KIND_INET = 0,
+ SOCKET_ADDRESS_LEGACY_KIND_UNIX = 1,
+ SOCKET_ADDRESS_LEGACY_KIND_VSOCK = 2,
+ SOCKET_ADDRESS_LEGACY_KIND_FD = 3,
+ SOCKET_ADDRESS_LEGACY_KIND__MAX = 4,
+} SocketAddressLegacyKind;
+
+#define SocketAddressLegacyKind_str(val) \
+ qapi_enum_lookup(&SocketAddressLegacyKind_lookup, (val))
+
+extern const QEnumLookup SocketAddressLegacyKind_lookup;
+
+typedef struct SocketAddressLegacy SocketAddressLegacy;
+
+typedef enum SocketAddressType {
+ SOCKET_ADDRESS_TYPE_INET = 0,
+ SOCKET_ADDRESS_TYPE_UNIX = 1,
+ SOCKET_ADDRESS_TYPE_VSOCK = 2,
+ SOCKET_ADDRESS_TYPE_FD = 3,
+ SOCKET_ADDRESS_TYPE__MAX = 4,
+} SocketAddressType;
+
+#define SocketAddressType_str(val) \
+ qapi_enum_lookup(&SocketAddressType_lookup, (val))
+
+extern const QEnumLookup SocketAddressType_lookup;
+
+typedef struct q_obj_SocketAddress_base q_obj_SocketAddress_base;
+
+typedef struct SocketAddress SocketAddress;
+
+struct InetSocketAddressBase {
+ char *host;
+ char *port;
+};
+
+void qapi_free_InetSocketAddressBase(InetSocketAddressBase *obj);
+
+struct InetSocketAddress {
+ /* Members inherited from InetSocketAddressBase: */
+ char *host;
+ char *port;
+ /* Own members: */
+ bool has_numeric;
+ bool numeric;
+ bool has_to;
+ uint16_t to;
+ bool has_ipv4;
+ bool ipv4;
+ bool has_ipv6;
+ bool ipv6;
+};
+
+static inline InetSocketAddressBase *qapi_InetSocketAddress_base(const InetSocketAddress *obj)
+{
+ return (InetSocketAddressBase *)obj;
+}
+
+void qapi_free_InetSocketAddress(InetSocketAddress *obj);
+
+struct UnixSocketAddress {
+ char *path;
+};
+
+void qapi_free_UnixSocketAddress(UnixSocketAddress *obj);
+
+struct VsockSocketAddress {
+ char *cid;
+ char *port;
+};
+
+void qapi_free_VsockSocketAddress(VsockSocketAddress *obj);
+
+struct q_obj_InetSocketAddress_wrapper {
+ InetSocketAddress *data;
+};
+
+struct q_obj_UnixSocketAddress_wrapper {
+ UnixSocketAddress *data;
+};
+
+struct q_obj_VsockSocketAddress_wrapper {
+ VsockSocketAddress *data;
+};
+
+struct q_obj_String_wrapper {
+ String *data;
+};
+
+struct SocketAddressLegacy {
+ SocketAddressLegacyKind type;
+ union { /* union tag is @type */
+ q_obj_InetSocketAddress_wrapper inet;
+ q_obj_UnixSocketAddress_wrapper q_unix;
+ q_obj_VsockSocketAddress_wrapper vsock;
+ q_obj_String_wrapper fd;
+ } u;
+};
+
+void qapi_free_SocketAddressLegacy(SocketAddressLegacy *obj);
+
+struct q_obj_SocketAddress_base {
+ SocketAddressType type;
+};
+
+struct SocketAddress {
+ SocketAddressType type;
+ union { /* union tag is @type */
+ InetSocketAddress inet;
+ UnixSocketAddress q_unix;
+ VsockSocketAddress vsock;
+ String fd;
+ } u;
+};
+
+void qapi_free_SocketAddress(SocketAddress *obj);
+
+#endif /* QAPI_TYPES_SOCKETS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-tpm.c b/qemu2-auto-generated/qapi/qapi-types-tpm.c
new file mode 100644
index 0000000000..eb388b7b9c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-tpm.c
@@ -0,0 +1,133 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-tpm.h"
+#include "qapi-visit-tpm.h"
+
+const QEnumLookup TpmModel_lookup = {
+ .array = (const char *const[]) {
+ [TPM_MODEL_TPM_TIS] = "tpm-tis",
+ [TPM_MODEL_TPM_CRB] = "tpm-crb",
+ },
+ .size = TPM_MODEL__MAX
+};
+
+void qapi_free_TpmModelList(TpmModelList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TpmModelList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup TpmType_lookup = {
+ .array = (const char *const[]) {
+ [TPM_TYPE_PASSTHROUGH] = "passthrough",
+ [TPM_TYPE_EMULATOR] = "emulator",
+ },
+ .size = TPM_TYPE__MAX
+};
+
+void qapi_free_TpmTypeList(TpmTypeList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TpmTypeList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TPMPassthroughOptions(TPMPassthroughOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TPMPassthroughOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TPMEmulatorOptions(TPMEmulatorOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TPMEmulatorOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup TpmTypeOptionsKind_lookup = {
+ .array = (const char *const[]) {
+ [TPM_TYPE_OPTIONS_KIND_PASSTHROUGH] = "passthrough",
+ [TPM_TYPE_OPTIONS_KIND_EMULATOR] = "emulator",
+ },
+ .size = TPM_TYPE_OPTIONS_KIND__MAX
+};
+
+void qapi_free_TpmTypeOptions(TpmTypeOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TpmTypeOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TPMInfo(TPMInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TPMInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TPMInfoList(TPMInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TPMInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_tpm_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-tpm.h b/qemu2-auto-generated/qapi/qapi-types-tpm.h
new file mode 100644
index 0000000000..e24cf075f9
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-tpm.h
@@ -0,0 +1,131 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_TPM_H
+#define QAPI_TYPES_TPM_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef enum TpmModel {
+ TPM_MODEL_TPM_TIS = 0,
+ TPM_MODEL_TPM_CRB = 1,
+ TPM_MODEL__MAX = 2,
+} TpmModel;
+
+#define TpmModel_str(val) \
+ qapi_enum_lookup(&TpmModel_lookup, (val))
+
+extern const QEnumLookup TpmModel_lookup;
+
+typedef struct TpmModelList TpmModelList;
+
+typedef enum TpmType {
+ TPM_TYPE_PASSTHROUGH = 0,
+ TPM_TYPE_EMULATOR = 1,
+ TPM_TYPE__MAX = 2,
+} TpmType;
+
+#define TpmType_str(val) \
+ qapi_enum_lookup(&TpmType_lookup, (val))
+
+extern const QEnumLookup TpmType_lookup;
+
+typedef struct TpmTypeList TpmTypeList;
+
+typedef struct TPMPassthroughOptions TPMPassthroughOptions;
+
+typedef struct TPMEmulatorOptions TPMEmulatorOptions;
+
+typedef struct q_obj_TPMPassthroughOptions_wrapper q_obj_TPMPassthroughOptions_wrapper;
+
+typedef struct q_obj_TPMEmulatorOptions_wrapper q_obj_TPMEmulatorOptions_wrapper;
+
+typedef enum TpmTypeOptionsKind {
+ TPM_TYPE_OPTIONS_KIND_PASSTHROUGH = 0,
+ TPM_TYPE_OPTIONS_KIND_EMULATOR = 1,
+ TPM_TYPE_OPTIONS_KIND__MAX = 2,
+} TpmTypeOptionsKind;
+
+#define TpmTypeOptionsKind_str(val) \
+ qapi_enum_lookup(&TpmTypeOptionsKind_lookup, (val))
+
+extern const QEnumLookup TpmTypeOptionsKind_lookup;
+
+typedef struct TpmTypeOptions TpmTypeOptions;
+
+typedef struct TPMInfo TPMInfo;
+
+typedef struct TPMInfoList TPMInfoList;
+
+struct TpmModelList {
+ TpmModelList *next;
+ TpmModel value;
+};
+
+void qapi_free_TpmModelList(TpmModelList *obj);
+
+struct TpmTypeList {
+ TpmTypeList *next;
+ TpmType value;
+};
+
+void qapi_free_TpmTypeList(TpmTypeList *obj);
+
+struct TPMPassthroughOptions {
+ bool has_path;
+ char *path;
+ bool has_cancel_path;
+ char *cancel_path;
+};
+
+void qapi_free_TPMPassthroughOptions(TPMPassthroughOptions *obj);
+
+struct TPMEmulatorOptions {
+ char *chardev;
+};
+
+void qapi_free_TPMEmulatorOptions(TPMEmulatorOptions *obj);
+
+struct q_obj_TPMPassthroughOptions_wrapper {
+ TPMPassthroughOptions *data;
+};
+
+struct q_obj_TPMEmulatorOptions_wrapper {
+ TPMEmulatorOptions *data;
+};
+
+struct TpmTypeOptions {
+ TpmTypeOptionsKind type;
+ union { /* union tag is @type */
+ q_obj_TPMPassthroughOptions_wrapper passthrough;
+ q_obj_TPMEmulatorOptions_wrapper emulator;
+ } u;
+};
+
+void qapi_free_TpmTypeOptions(TpmTypeOptions *obj);
+
+struct TPMInfo {
+ char *id;
+ TpmModel model;
+ TpmTypeOptions *options;
+};
+
+void qapi_free_TPMInfo(TPMInfo *obj);
+
+struct TPMInfoList {
+ TPMInfoList *next;
+ TPMInfo *value;
+};
+
+void qapi_free_TPMInfoList(TPMInfoList *obj);
+
+#endif /* QAPI_TYPES_TPM_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-trace.c b/qemu2-auto-generated/qapi/qapi-types-trace.c
new file mode 100644
index 0000000000..be22a704af
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-trace.c
@@ -0,0 +1,53 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-trace.h"
+#include "qapi-visit-trace.h"
+
+const QEnumLookup TraceEventState_lookup = {
+ .array = (const char *const[]) {
+ [TRACE_EVENT_STATE_UNAVAILABLE] = "unavailable",
+ [TRACE_EVENT_STATE_DISABLED] = "disabled",
+ [TRACE_EVENT_STATE_ENABLED] = "enabled",
+ },
+ .size = TRACE_EVENT_STATE__MAX
+};
+
+void qapi_free_TraceEventInfo(TraceEventInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TraceEventInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TraceEventInfoList(TraceEventInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TraceEventInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_trace_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-trace.h b/qemu2-auto-generated/qapi/qapi-types-trace.h
new file mode 100644
index 0000000000..19b9e2331c
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-trace.h
@@ -0,0 +1,68 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_TRACE_H
+#define QAPI_TYPES_TRACE_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef enum TraceEventState {
+ TRACE_EVENT_STATE_UNAVAILABLE = 0,
+ TRACE_EVENT_STATE_DISABLED = 1,
+ TRACE_EVENT_STATE_ENABLED = 2,
+ TRACE_EVENT_STATE__MAX = 3,
+} TraceEventState;
+
+#define TraceEventState_str(val) \
+ qapi_enum_lookup(&TraceEventState_lookup, (val))
+
+extern const QEnumLookup TraceEventState_lookup;
+
+typedef struct TraceEventInfo TraceEventInfo;
+
+typedef struct q_obj_trace_event_get_state_arg q_obj_trace_event_get_state_arg;
+
+typedef struct TraceEventInfoList TraceEventInfoList;
+
+typedef struct q_obj_trace_event_set_state_arg q_obj_trace_event_set_state_arg;
+
+struct TraceEventInfo {
+ char *name;
+ TraceEventState state;
+ bool vcpu;
+};
+
+void qapi_free_TraceEventInfo(TraceEventInfo *obj);
+
+struct q_obj_trace_event_get_state_arg {
+ char *name;
+ bool has_vcpu;
+ int64_t vcpu;
+};
+
+struct TraceEventInfoList {
+ TraceEventInfoList *next;
+ TraceEventInfo *value;
+};
+
+void qapi_free_TraceEventInfoList(TraceEventInfoList *obj);
+
+struct q_obj_trace_event_set_state_arg {
+ char *name;
+ bool enable;
+ bool has_ignore_unavailable;
+ bool ignore_unavailable;
+ bool has_vcpu;
+ int64_t vcpu;
+};
+
+#endif /* QAPI_TYPES_TRACE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-transaction.c b/qemu2-auto-generated/qapi/qapi-types-transaction.c
new file mode 100644
index 0000000000..c18cdf908e
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-transaction.c
@@ -0,0 +1,92 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-transaction.h"
+#include "qapi-visit-transaction.h"
+
+void qapi_free_Abort(Abort *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Abort(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup ActionCompletionMode_lookup = {
+ .array = (const char *const[]) {
+ [ACTION_COMPLETION_MODE_INDIVIDUAL] = "individual",
+ [ACTION_COMPLETION_MODE_GROUPED] = "grouped",
+ },
+ .size = ACTION_COMPLETION_MODE__MAX
+};
+
+const QEnumLookup TransactionActionKind_lookup = {
+ .array = (const char *const[]) {
+ [TRANSACTION_ACTION_KIND_ABORT] = "abort",
+ [TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ADD] = "block-dirty-bitmap-add",
+ [TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR] = "block-dirty-bitmap-clear",
+ [TRANSACTION_ACTION_KIND_BLOCKDEV_BACKUP] = "blockdev-backup",
+ [TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT] = "blockdev-snapshot",
+ [TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC] = "blockdev-snapshot-internal-sync",
+ [TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC] = "blockdev-snapshot-sync",
+ [TRANSACTION_ACTION_KIND_DRIVE_BACKUP] = "drive-backup",
+ },
+ .size = TRANSACTION_ACTION_KIND__MAX
+};
+
+void qapi_free_TransactionAction(TransactionAction *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TransactionAction(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TransactionProperties(TransactionProperties *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TransactionProperties(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TransactionActionList(TransactionActionList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TransactionActionList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_transaction_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-transaction.h b/qemu2-auto-generated/qapi/qapi-types-transaction.h
new file mode 100644
index 0000000000..2b3e8b54cc
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-transaction.h
@@ -0,0 +1,147 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_TRANSACTION_H
+#define QAPI_TYPES_TRANSACTION_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-block.h"
+
+typedef struct Abort Abort;
+
+typedef enum ActionCompletionMode {
+ ACTION_COMPLETION_MODE_INDIVIDUAL = 0,
+ ACTION_COMPLETION_MODE_GROUPED = 1,
+ ACTION_COMPLETION_MODE__MAX = 2,
+} ActionCompletionMode;
+
+#define ActionCompletionMode_str(val) \
+ qapi_enum_lookup(&ActionCompletionMode_lookup, (val))
+
+extern const QEnumLookup ActionCompletionMode_lookup;
+
+typedef struct q_obj_Abort_wrapper q_obj_Abort_wrapper;
+
+typedef struct q_obj_BlockDirtyBitmapAdd_wrapper q_obj_BlockDirtyBitmapAdd_wrapper;
+
+typedef struct q_obj_BlockDirtyBitmap_wrapper q_obj_BlockDirtyBitmap_wrapper;
+
+typedef struct q_obj_BlockdevBackup_wrapper q_obj_BlockdevBackup_wrapper;
+
+typedef struct q_obj_BlockdevSnapshot_wrapper q_obj_BlockdevSnapshot_wrapper;
+
+typedef struct q_obj_BlockdevSnapshotInternal_wrapper q_obj_BlockdevSnapshotInternal_wrapper;
+
+typedef struct q_obj_BlockdevSnapshotSync_wrapper q_obj_BlockdevSnapshotSync_wrapper;
+
+typedef struct q_obj_DriveBackup_wrapper q_obj_DriveBackup_wrapper;
+
+typedef enum TransactionActionKind {
+ TRANSACTION_ACTION_KIND_ABORT = 0,
+ TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ADD = 1,
+ TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR = 2,
+ TRANSACTION_ACTION_KIND_BLOCKDEV_BACKUP = 3,
+ TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT = 4,
+ TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC = 5,
+ TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC = 6,
+ TRANSACTION_ACTION_KIND_DRIVE_BACKUP = 7,
+ TRANSACTION_ACTION_KIND__MAX = 8,
+} TransactionActionKind;
+
+#define TransactionActionKind_str(val) \
+ qapi_enum_lookup(&TransactionActionKind_lookup, (val))
+
+extern const QEnumLookup TransactionActionKind_lookup;
+
+typedef struct TransactionAction TransactionAction;
+
+typedef struct TransactionProperties TransactionProperties;
+
+typedef struct TransactionActionList TransactionActionList;
+
+typedef struct q_obj_transaction_arg q_obj_transaction_arg;
+
+struct Abort {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_Abort(Abort *obj);
+
+struct q_obj_Abort_wrapper {
+ Abort *data;
+};
+
+struct q_obj_BlockDirtyBitmapAdd_wrapper {
+ BlockDirtyBitmapAdd *data;
+};
+
+struct q_obj_BlockDirtyBitmap_wrapper {
+ BlockDirtyBitmap *data;
+};
+
+struct q_obj_BlockdevBackup_wrapper {
+ BlockdevBackup *data;
+};
+
+struct q_obj_BlockdevSnapshot_wrapper {
+ BlockdevSnapshot *data;
+};
+
+struct q_obj_BlockdevSnapshotInternal_wrapper {
+ BlockdevSnapshotInternal *data;
+};
+
+struct q_obj_BlockdevSnapshotSync_wrapper {
+ BlockdevSnapshotSync *data;
+};
+
+struct q_obj_DriveBackup_wrapper {
+ DriveBackup *data;
+};
+
+struct TransactionAction {
+ TransactionActionKind type;
+ union { /* union tag is @type */
+ q_obj_Abort_wrapper abort;
+ q_obj_BlockDirtyBitmapAdd_wrapper block_dirty_bitmap_add;
+ q_obj_BlockDirtyBitmap_wrapper block_dirty_bitmap_clear;
+ q_obj_BlockdevBackup_wrapper blockdev_backup;
+ q_obj_BlockdevSnapshot_wrapper blockdev_snapshot;
+ q_obj_BlockdevSnapshotInternal_wrapper blockdev_snapshot_internal_sync;
+ q_obj_BlockdevSnapshotSync_wrapper blockdev_snapshot_sync;
+ q_obj_DriveBackup_wrapper drive_backup;
+ } u;
+};
+
+void qapi_free_TransactionAction(TransactionAction *obj);
+
+struct TransactionProperties {
+ bool has_completion_mode;
+ ActionCompletionMode completion_mode;
+};
+
+void qapi_free_TransactionProperties(TransactionProperties *obj);
+
+struct TransactionActionList {
+ TransactionActionList *next;
+ TransactionAction *value;
+};
+
+void qapi_free_TransactionActionList(TransactionActionList *obj);
+
+struct q_obj_transaction_arg {
+ TransactionActionList *actions;
+ bool has_properties;
+ TransactionProperties *properties;
+};
+
+#endif /* QAPI_TYPES_TRANSACTION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types-ui.c b/qemu2-auto-generated/qapi/qapi-types-ui.c
new file mode 100644
index 0000000000..66880a5ada
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-ui.c
@@ -0,0 +1,601 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types-ui.h"
+#include "qapi-visit-ui.h"
+
+void qapi_free_SpiceBasicInfo(SpiceBasicInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceBasicInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SpiceServerInfo(SpiceServerInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceServerInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SpiceChannel(SpiceChannel *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceChannel(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup SpiceQueryMouseMode_lookup = {
+ .array = (const char *const[]) {
+ [SPICE_QUERY_MOUSE_MODE_CLIENT] = "client",
+ [SPICE_QUERY_MOUSE_MODE_SERVER] = "server",
+ [SPICE_QUERY_MOUSE_MODE_UNKNOWN] = "unknown",
+ },
+ .size = SPICE_QUERY_MOUSE_MODE__MAX
+};
+
+void qapi_free_SpiceChannelList(SpiceChannelList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceChannelList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_SpiceInfo(SpiceInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_SpiceInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncBasicInfo(VncBasicInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncBasicInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncServerInfo(VncServerInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncServerInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncClientInfo(VncClientInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncClientInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncClientInfoList(VncClientInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncClientInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncInfo(VncInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup VncPrimaryAuth_lookup = {
+ .array = (const char *const[]) {
+ [VNC_PRIMARY_AUTH_NONE] = "none",
+ [VNC_PRIMARY_AUTH_VNC] = "vnc",
+ [VNC_PRIMARY_AUTH_RA2] = "ra2",
+ [VNC_PRIMARY_AUTH_RA2NE] = "ra2ne",
+ [VNC_PRIMARY_AUTH_TIGHT] = "tight",
+ [VNC_PRIMARY_AUTH_ULTRA] = "ultra",
+ [VNC_PRIMARY_AUTH_TLS] = "tls",
+ [VNC_PRIMARY_AUTH_VENCRYPT] = "vencrypt",
+ [VNC_PRIMARY_AUTH_SASL] = "sasl",
+ },
+ .size = VNC_PRIMARY_AUTH__MAX
+};
+
+const QEnumLookup VncVencryptSubAuth_lookup = {
+ .array = (const char *const[]) {
+ [VNC_VENCRYPT_SUB_AUTH_PLAIN] = "plain",
+ [VNC_VENCRYPT_SUB_AUTH_TLS_NONE] = "tls-none",
+ [VNC_VENCRYPT_SUB_AUTH_X509_NONE] = "x509-none",
+ [VNC_VENCRYPT_SUB_AUTH_TLS_VNC] = "tls-vnc",
+ [VNC_VENCRYPT_SUB_AUTH_X509_VNC] = "x509-vnc",
+ [VNC_VENCRYPT_SUB_AUTH_TLS_PLAIN] = "tls-plain",
+ [VNC_VENCRYPT_SUB_AUTH_X509_PLAIN] = "x509-plain",
+ [VNC_VENCRYPT_SUB_AUTH_TLS_SASL] = "tls-sasl",
+ [VNC_VENCRYPT_SUB_AUTH_X509_SASL] = "x509-sasl",
+ },
+ .size = VNC_VENCRYPT_SUB_AUTH__MAX
+};
+
+void qapi_free_VncServerInfo2(VncServerInfo2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncServerInfo2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncServerInfo2List(VncServerInfo2List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncServerInfo2List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncInfo2(VncInfo2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncInfo2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_VncInfo2List(VncInfo2List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_VncInfo2List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MouseInfo(MouseInfo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MouseInfo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_MouseInfoList(MouseInfoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_MouseInfoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QKeyCode_lookup = {
+ .array = (const char *const[]) {
+ [Q_KEY_CODE_UNMAPPED] = "unmapped",
+ [Q_KEY_CODE_SHIFT] = "shift",
+ [Q_KEY_CODE_SHIFT_R] = "shift_r",
+ [Q_KEY_CODE_ALT] = "alt",
+ [Q_KEY_CODE_ALT_R] = "alt_r",
+ [Q_KEY_CODE_CTRL] = "ctrl",
+ [Q_KEY_CODE_CTRL_R] = "ctrl_r",
+ [Q_KEY_CODE_MENU] = "menu",
+ [Q_KEY_CODE_ESC] = "esc",
+ [Q_KEY_CODE_1] = "1",
+ [Q_KEY_CODE_2] = "2",
+ [Q_KEY_CODE_3] = "3",
+ [Q_KEY_CODE_4] = "4",
+ [Q_KEY_CODE_5] = "5",
+ [Q_KEY_CODE_6] = "6",
+ [Q_KEY_CODE_7] = "7",
+ [Q_KEY_CODE_8] = "8",
+ [Q_KEY_CODE_9] = "9",
+ [Q_KEY_CODE_0] = "0",
+ [Q_KEY_CODE_MINUS] = "minus",
+ [Q_KEY_CODE_EQUAL] = "equal",
+ [Q_KEY_CODE_BACKSPACE] = "backspace",
+ [Q_KEY_CODE_TAB] = "tab",
+ [Q_KEY_CODE_Q] = "q",
+ [Q_KEY_CODE_W] = "w",
+ [Q_KEY_CODE_E] = "e",
+ [Q_KEY_CODE_R] = "r",
+ [Q_KEY_CODE_T] = "t",
+ [Q_KEY_CODE_Y] = "y",
+ [Q_KEY_CODE_U] = "u",
+ [Q_KEY_CODE_I] = "i",
+ [Q_KEY_CODE_O] = "o",
+ [Q_KEY_CODE_P] = "p",
+ [Q_KEY_CODE_BRACKET_LEFT] = "bracket_left",
+ [Q_KEY_CODE_BRACKET_RIGHT] = "bracket_right",
+ [Q_KEY_CODE_RET] = "ret",
+ [Q_KEY_CODE_A] = "a",
+ [Q_KEY_CODE_S] = "s",
+ [Q_KEY_CODE_D] = "d",
+ [Q_KEY_CODE_F] = "f",
+ [Q_KEY_CODE_G] = "g",
+ [Q_KEY_CODE_H] = "h",
+ [Q_KEY_CODE_J] = "j",
+ [Q_KEY_CODE_K] = "k",
+ [Q_KEY_CODE_L] = "l",
+ [Q_KEY_CODE_SEMICOLON] = "semicolon",
+ [Q_KEY_CODE_APOSTROPHE] = "apostrophe",
+ [Q_KEY_CODE_GRAVE_ACCENT] = "grave_accent",
+ [Q_KEY_CODE_BACKSLASH] = "backslash",
+ [Q_KEY_CODE_Z] = "z",
+ [Q_KEY_CODE_X] = "x",
+ [Q_KEY_CODE_C] = "c",
+ [Q_KEY_CODE_V] = "v",
+ [Q_KEY_CODE_B] = "b",
+ [Q_KEY_CODE_N] = "n",
+ [Q_KEY_CODE_M] = "m",
+ [Q_KEY_CODE_COMMA] = "comma",
+ [Q_KEY_CODE_DOT] = "dot",
+ [Q_KEY_CODE_SLASH] = "slash",
+ [Q_KEY_CODE_ASTERISK] = "asterisk",
+ [Q_KEY_CODE_SPC] = "spc",
+ [Q_KEY_CODE_CAPS_LOCK] = "caps_lock",
+ [Q_KEY_CODE_F1] = "f1",
+ [Q_KEY_CODE_F2] = "f2",
+ [Q_KEY_CODE_F3] = "f3",
+ [Q_KEY_CODE_F4] = "f4",
+ [Q_KEY_CODE_F5] = "f5",
+ [Q_KEY_CODE_F6] = "f6",
+ [Q_KEY_CODE_F7] = "f7",
+ [Q_KEY_CODE_F8] = "f8",
+ [Q_KEY_CODE_F9] = "f9",
+ [Q_KEY_CODE_F10] = "f10",
+ [Q_KEY_CODE_NUM_LOCK] = "num_lock",
+ [Q_KEY_CODE_SCROLL_LOCK] = "scroll_lock",
+ [Q_KEY_CODE_KP_DIVIDE] = "kp_divide",
+ [Q_KEY_CODE_KP_MULTIPLY] = "kp_multiply",
+ [Q_KEY_CODE_KP_SUBTRACT] = "kp_subtract",
+ [Q_KEY_CODE_KP_ADD] = "kp_add",
+ [Q_KEY_CODE_KP_ENTER] = "kp_enter",
+ [Q_KEY_CODE_KP_DECIMAL] = "kp_decimal",
+ [Q_KEY_CODE_SYSRQ] = "sysrq",
+ [Q_KEY_CODE_KP_0] = "kp_0",
+ [Q_KEY_CODE_KP_1] = "kp_1",
+ [Q_KEY_CODE_KP_2] = "kp_2",
+ [Q_KEY_CODE_KP_3] = "kp_3",
+ [Q_KEY_CODE_KP_4] = "kp_4",
+ [Q_KEY_CODE_KP_5] = "kp_5",
+ [Q_KEY_CODE_KP_6] = "kp_6",
+ [Q_KEY_CODE_KP_7] = "kp_7",
+ [Q_KEY_CODE_KP_8] = "kp_8",
+ [Q_KEY_CODE_KP_9] = "kp_9",
+ [Q_KEY_CODE_LESS] = "less",
+ [Q_KEY_CODE_F11] = "f11",
+ [Q_KEY_CODE_F12] = "f12",
+ [Q_KEY_CODE_PRINT] = "print",
+ [Q_KEY_CODE_HOME] = "home",
+ [Q_KEY_CODE_PGUP] = "pgup",
+ [Q_KEY_CODE_PGDN] = "pgdn",
+ [Q_KEY_CODE_END] = "end",
+ [Q_KEY_CODE_LEFT] = "left",
+ [Q_KEY_CODE_UP] = "up",
+ [Q_KEY_CODE_DOWN] = "down",
+ [Q_KEY_CODE_RIGHT] = "right",
+ [Q_KEY_CODE_INSERT] = "insert",
+ [Q_KEY_CODE_DELETE] = "delete",
+ [Q_KEY_CODE_STOP] = "stop",
+ [Q_KEY_CODE_AGAIN] = "again",
+ [Q_KEY_CODE_PROPS] = "props",
+ [Q_KEY_CODE_UNDO] = "undo",
+ [Q_KEY_CODE_FRONT] = "front",
+ [Q_KEY_CODE_COPY] = "copy",
+ [Q_KEY_CODE_OPEN] = "open",
+ [Q_KEY_CODE_PASTE] = "paste",
+ [Q_KEY_CODE_FIND] = "find",
+ [Q_KEY_CODE_CUT] = "cut",
+ [Q_KEY_CODE_LF] = "lf",
+ [Q_KEY_CODE_HELP] = "help",
+ [Q_KEY_CODE_META_L] = "meta_l",
+ [Q_KEY_CODE_META_R] = "meta_r",
+ [Q_KEY_CODE_COMPOSE] = "compose",
+ [Q_KEY_CODE_PAUSE] = "pause",
+ [Q_KEY_CODE_RO] = "ro",
+ [Q_KEY_CODE_HIRAGANA] = "hiragana",
+ [Q_KEY_CODE_HENKAN] = "henkan",
+ [Q_KEY_CODE_YEN] = "yen",
+ [Q_KEY_CODE_MUHENKAN] = "muhenkan",
+ [Q_KEY_CODE_KATAKANAHIRAGANA] = "katakanahiragana",
+ [Q_KEY_CODE_KP_COMMA] = "kp_comma",
+ [Q_KEY_CODE_KP_EQUALS] = "kp_equals",
+ [Q_KEY_CODE_POWER] = "power",
+ [Q_KEY_CODE_SLEEP] = "sleep",
+ [Q_KEY_CODE_WAKE] = "wake",
+ [Q_KEY_CODE_AUDIONEXT] = "audionext",
+ [Q_KEY_CODE_AUDIOPREV] = "audioprev",
+ [Q_KEY_CODE_AUDIOSTOP] = "audiostop",
+ [Q_KEY_CODE_AUDIOPLAY] = "audioplay",
+ [Q_KEY_CODE_AUDIOMUTE] = "audiomute",
+ [Q_KEY_CODE_VOLUMEUP] = "volumeup",
+ [Q_KEY_CODE_VOLUMEDOWN] = "volumedown",
+ [Q_KEY_CODE_MEDIASELECT] = "mediaselect",
+ [Q_KEY_CODE_MAIL] = "mail",
+ [Q_KEY_CODE_CALCULATOR] = "calculator",
+ [Q_KEY_CODE_COMPUTER] = "computer",
+ [Q_KEY_CODE_AC_HOME] = "ac_home",
+ [Q_KEY_CODE_AC_BACK] = "ac_back",
+ [Q_KEY_CODE_AC_FORWARD] = "ac_forward",
+ [Q_KEY_CODE_AC_REFRESH] = "ac_refresh",
+ [Q_KEY_CODE_AC_BOOKMARKS] = "ac_bookmarks",
+ },
+ .size = Q_KEY_CODE__MAX
+};
+
+const QEnumLookup KeyValueKind_lookup = {
+ .array = (const char *const[]) {
+ [KEY_VALUE_KIND_NUMBER] = "number",
+ [KEY_VALUE_KIND_QCODE] = "qcode",
+ },
+ .size = KEY_VALUE_KIND__MAX
+};
+
+void qapi_free_KeyValue(KeyValue *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_KeyValue(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_KeyValueList(KeyValueList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_KeyValueList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup InputButton_lookup = {
+ .array = (const char *const[]) {
+ [INPUT_BUTTON_LEFT] = "left",
+ [INPUT_BUTTON_MIDDLE] = "middle",
+ [INPUT_BUTTON_RIGHT] = "right",
+ [INPUT_BUTTON_WHEEL_UP] = "wheel-up",
+ [INPUT_BUTTON_WHEEL_DOWN] = "wheel-down",
+ [INPUT_BUTTON_SIDE] = "side",
+ [INPUT_BUTTON_EXTRA] = "extra",
+ },
+ .size = INPUT_BUTTON__MAX
+};
+
+const QEnumLookup InputAxis_lookup = {
+ .array = (const char *const[]) {
+ [INPUT_AXIS_X] = "x",
+ [INPUT_AXIS_Y] = "y",
+ },
+ .size = INPUT_AXIS__MAX
+};
+
+void qapi_free_InputKeyEvent(InputKeyEvent *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InputKeyEvent(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_InputBtnEvent(InputBtnEvent *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InputBtnEvent(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_InputMoveEvent(InputMoveEvent *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InputMoveEvent(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup InputEventKind_lookup = {
+ .array = (const char *const[]) {
+ [INPUT_EVENT_KIND_KEY] = "key",
+ [INPUT_EVENT_KIND_BTN] = "btn",
+ [INPUT_EVENT_KIND_REL] = "rel",
+ [INPUT_EVENT_KIND_ABS] = "abs",
+ },
+ .size = INPUT_EVENT_KIND__MAX
+};
+
+void qapi_free_InputEvent(InputEvent *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InputEvent(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_InputEventList(InputEventList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_InputEventList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DisplayNoOpts(DisplayNoOpts *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DisplayNoOpts(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_DisplayGTK(DisplayGTK *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DisplayGTK(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup DisplayType_lookup = {
+ .array = (const char *const[]) {
+ [DISPLAY_TYPE_DEFAULT] = "default",
+ [DISPLAY_TYPE_NONE] = "none",
+ [DISPLAY_TYPE_GTK] = "gtk",
+ [DISPLAY_TYPE_SDL] = "sdl",
+ [DISPLAY_TYPE_EGL_HEADLESS] = "egl-headless",
+ [DISPLAY_TYPE_CURSES] = "curses",
+ [DISPLAY_TYPE_COCOA] = "cocoa",
+ },
+ .size = DISPLAY_TYPE__MAX
+};
+
+void qapi_free_DisplayOptions(DisplayOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_DisplayOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_ui_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types-ui.h b/qemu2-auto-generated/qapi/qapi-types-ui.h
new file mode 100644
index 0000000000..bb8d242795
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types-ui.h
@@ -0,0 +1,771 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_UI_H
+#define QAPI_TYPES_UI_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-sockets.h"
+
+typedef struct q_obj_set_password_arg q_obj_set_password_arg;
+
+typedef struct q_obj_expire_password_arg q_obj_expire_password_arg;
+
+typedef struct q_obj_screendump_arg q_obj_screendump_arg;
+
+typedef struct SpiceBasicInfo SpiceBasicInfo;
+
+typedef struct SpiceServerInfo SpiceServerInfo;
+
+typedef struct SpiceChannel SpiceChannel;
+
+typedef enum SpiceQueryMouseMode {
+ SPICE_QUERY_MOUSE_MODE_CLIENT = 0,
+ SPICE_QUERY_MOUSE_MODE_SERVER = 1,
+ SPICE_QUERY_MOUSE_MODE_UNKNOWN = 2,
+ SPICE_QUERY_MOUSE_MODE__MAX = 3,
+} SpiceQueryMouseMode;
+
+#define SpiceQueryMouseMode_str(val) \
+ qapi_enum_lookup(&SpiceQueryMouseMode_lookup, (val))
+
+extern const QEnumLookup SpiceQueryMouseMode_lookup;
+
+typedef struct SpiceChannelList SpiceChannelList;
+
+typedef struct SpiceInfo SpiceInfo;
+
+typedef struct q_obj_SPICE_CONNECTED_arg q_obj_SPICE_CONNECTED_arg;
+
+typedef struct q_obj_SPICE_INITIALIZED_arg q_obj_SPICE_INITIALIZED_arg;
+
+typedef struct q_obj_SPICE_DISCONNECTED_arg q_obj_SPICE_DISCONNECTED_arg;
+
+typedef struct VncBasicInfo VncBasicInfo;
+
+typedef struct VncServerInfo VncServerInfo;
+
+typedef struct VncClientInfo VncClientInfo;
+
+typedef struct VncClientInfoList VncClientInfoList;
+
+typedef struct VncInfo VncInfo;
+
+typedef enum VncPrimaryAuth {
+ VNC_PRIMARY_AUTH_NONE = 0,
+ VNC_PRIMARY_AUTH_VNC = 1,
+ VNC_PRIMARY_AUTH_RA2 = 2,
+ VNC_PRIMARY_AUTH_RA2NE = 3,
+ VNC_PRIMARY_AUTH_TIGHT = 4,
+ VNC_PRIMARY_AUTH_ULTRA = 5,
+ VNC_PRIMARY_AUTH_TLS = 6,
+ VNC_PRIMARY_AUTH_VENCRYPT = 7,
+ VNC_PRIMARY_AUTH_SASL = 8,
+ VNC_PRIMARY_AUTH__MAX = 9,
+} VncPrimaryAuth;
+
+#define VncPrimaryAuth_str(val) \
+ qapi_enum_lookup(&VncPrimaryAuth_lookup, (val))
+
+extern const QEnumLookup VncPrimaryAuth_lookup;
+
+typedef enum VncVencryptSubAuth {
+ VNC_VENCRYPT_SUB_AUTH_PLAIN = 0,
+ VNC_VENCRYPT_SUB_AUTH_TLS_NONE = 1,
+ VNC_VENCRYPT_SUB_AUTH_X509_NONE = 2,
+ VNC_VENCRYPT_SUB_AUTH_TLS_VNC = 3,
+ VNC_VENCRYPT_SUB_AUTH_X509_VNC = 4,
+ VNC_VENCRYPT_SUB_AUTH_TLS_PLAIN = 5,
+ VNC_VENCRYPT_SUB_AUTH_X509_PLAIN = 6,
+ VNC_VENCRYPT_SUB_AUTH_TLS_SASL = 7,
+ VNC_VENCRYPT_SUB_AUTH_X509_SASL = 8,
+ VNC_VENCRYPT_SUB_AUTH__MAX = 9,
+} VncVencryptSubAuth;
+
+#define VncVencryptSubAuth_str(val) \
+ qapi_enum_lookup(&VncVencryptSubAuth_lookup, (val))
+
+extern const QEnumLookup VncVencryptSubAuth_lookup;
+
+typedef struct VncServerInfo2 VncServerInfo2;
+
+typedef struct VncServerInfo2List VncServerInfo2List;
+
+typedef struct VncInfo2 VncInfo2;
+
+typedef struct VncInfo2List VncInfo2List;
+
+typedef struct q_obj_change_vnc_password_arg q_obj_change_vnc_password_arg;
+
+typedef struct q_obj_VNC_CONNECTED_arg q_obj_VNC_CONNECTED_arg;
+
+typedef struct q_obj_VNC_INITIALIZED_arg q_obj_VNC_INITIALIZED_arg;
+
+typedef struct q_obj_VNC_DISCONNECTED_arg q_obj_VNC_DISCONNECTED_arg;
+
+typedef struct MouseInfo MouseInfo;
+
+typedef struct MouseInfoList MouseInfoList;
+
+typedef enum QKeyCode {
+ Q_KEY_CODE_UNMAPPED = 0,
+ Q_KEY_CODE_SHIFT = 1,
+ Q_KEY_CODE_SHIFT_R = 2,
+ Q_KEY_CODE_ALT = 3,
+ Q_KEY_CODE_ALT_R = 4,
+ Q_KEY_CODE_CTRL = 5,
+ Q_KEY_CODE_CTRL_R = 6,
+ Q_KEY_CODE_MENU = 7,
+ Q_KEY_CODE_ESC = 8,
+ Q_KEY_CODE_1 = 9,
+ Q_KEY_CODE_2 = 10,
+ Q_KEY_CODE_3 = 11,
+ Q_KEY_CODE_4 = 12,
+ Q_KEY_CODE_5 = 13,
+ Q_KEY_CODE_6 = 14,
+ Q_KEY_CODE_7 = 15,
+ Q_KEY_CODE_8 = 16,
+ Q_KEY_CODE_9 = 17,
+ Q_KEY_CODE_0 = 18,
+ Q_KEY_CODE_MINUS = 19,
+ Q_KEY_CODE_EQUAL = 20,
+ Q_KEY_CODE_BACKSPACE = 21,
+ Q_KEY_CODE_TAB = 22,
+ Q_KEY_CODE_Q = 23,
+ Q_KEY_CODE_W = 24,
+ Q_KEY_CODE_E = 25,
+ Q_KEY_CODE_R = 26,
+ Q_KEY_CODE_T = 27,
+ Q_KEY_CODE_Y = 28,
+ Q_KEY_CODE_U = 29,
+ Q_KEY_CODE_I = 30,
+ Q_KEY_CODE_O = 31,
+ Q_KEY_CODE_P = 32,
+ Q_KEY_CODE_BRACKET_LEFT = 33,
+ Q_KEY_CODE_BRACKET_RIGHT = 34,
+ Q_KEY_CODE_RET = 35,
+ Q_KEY_CODE_A = 36,
+ Q_KEY_CODE_S = 37,
+ Q_KEY_CODE_D = 38,
+ Q_KEY_CODE_F = 39,
+ Q_KEY_CODE_G = 40,
+ Q_KEY_CODE_H = 41,
+ Q_KEY_CODE_J = 42,
+ Q_KEY_CODE_K = 43,
+ Q_KEY_CODE_L = 44,
+ Q_KEY_CODE_SEMICOLON = 45,
+ Q_KEY_CODE_APOSTROPHE = 46,
+ Q_KEY_CODE_GRAVE_ACCENT = 47,
+ Q_KEY_CODE_BACKSLASH = 48,
+ Q_KEY_CODE_Z = 49,
+ Q_KEY_CODE_X = 50,
+ Q_KEY_CODE_C = 51,
+ Q_KEY_CODE_V = 52,
+ Q_KEY_CODE_B = 53,
+ Q_KEY_CODE_N = 54,
+ Q_KEY_CODE_M = 55,
+ Q_KEY_CODE_COMMA = 56,
+ Q_KEY_CODE_DOT = 57,
+ Q_KEY_CODE_SLASH = 58,
+ Q_KEY_CODE_ASTERISK = 59,
+ Q_KEY_CODE_SPC = 60,
+ Q_KEY_CODE_CAPS_LOCK = 61,
+ Q_KEY_CODE_F1 = 62,
+ Q_KEY_CODE_F2 = 63,
+ Q_KEY_CODE_F3 = 64,
+ Q_KEY_CODE_F4 = 65,
+ Q_KEY_CODE_F5 = 66,
+ Q_KEY_CODE_F6 = 67,
+ Q_KEY_CODE_F7 = 68,
+ Q_KEY_CODE_F8 = 69,
+ Q_KEY_CODE_F9 = 70,
+ Q_KEY_CODE_F10 = 71,
+ Q_KEY_CODE_NUM_LOCK = 72,
+ Q_KEY_CODE_SCROLL_LOCK = 73,
+ Q_KEY_CODE_KP_DIVIDE = 74,
+ Q_KEY_CODE_KP_MULTIPLY = 75,
+ Q_KEY_CODE_KP_SUBTRACT = 76,
+ Q_KEY_CODE_KP_ADD = 77,
+ Q_KEY_CODE_KP_ENTER = 78,
+ Q_KEY_CODE_KP_DECIMAL = 79,
+ Q_KEY_CODE_SYSRQ = 80,
+ Q_KEY_CODE_KP_0 = 81,
+ Q_KEY_CODE_KP_1 = 82,
+ Q_KEY_CODE_KP_2 = 83,
+ Q_KEY_CODE_KP_3 = 84,
+ Q_KEY_CODE_KP_4 = 85,
+ Q_KEY_CODE_KP_5 = 86,
+ Q_KEY_CODE_KP_6 = 87,
+ Q_KEY_CODE_KP_7 = 88,
+ Q_KEY_CODE_KP_8 = 89,
+ Q_KEY_CODE_KP_9 = 90,
+ Q_KEY_CODE_LESS = 91,
+ Q_KEY_CODE_F11 = 92,
+ Q_KEY_CODE_F12 = 93,
+ Q_KEY_CODE_PRINT = 94,
+ Q_KEY_CODE_HOME = 95,
+ Q_KEY_CODE_PGUP = 96,
+ Q_KEY_CODE_PGDN = 97,
+ Q_KEY_CODE_END = 98,
+ Q_KEY_CODE_LEFT = 99,
+ Q_KEY_CODE_UP = 100,
+ Q_KEY_CODE_DOWN = 101,
+ Q_KEY_CODE_RIGHT = 102,
+ Q_KEY_CODE_INSERT = 103,
+ Q_KEY_CODE_DELETE = 104,
+ Q_KEY_CODE_STOP = 105,
+ Q_KEY_CODE_AGAIN = 106,
+ Q_KEY_CODE_PROPS = 107,
+ Q_KEY_CODE_UNDO = 108,
+ Q_KEY_CODE_FRONT = 109,
+ Q_KEY_CODE_COPY = 110,
+ Q_KEY_CODE_OPEN = 111,
+ Q_KEY_CODE_PASTE = 112,
+ Q_KEY_CODE_FIND = 113,
+ Q_KEY_CODE_CUT = 114,
+ Q_KEY_CODE_LF = 115,
+ Q_KEY_CODE_HELP = 116,
+ Q_KEY_CODE_META_L = 117,
+ Q_KEY_CODE_META_R = 118,
+ Q_KEY_CODE_COMPOSE = 119,
+ Q_KEY_CODE_PAUSE = 120,
+ Q_KEY_CODE_RO = 121,
+ Q_KEY_CODE_HIRAGANA = 122,
+ Q_KEY_CODE_HENKAN = 123,
+ Q_KEY_CODE_YEN = 124,
+ Q_KEY_CODE_MUHENKAN = 125,
+ Q_KEY_CODE_KATAKANAHIRAGANA = 126,
+ Q_KEY_CODE_KP_COMMA = 127,
+ Q_KEY_CODE_KP_EQUALS = 128,
+ Q_KEY_CODE_POWER = 129,
+ Q_KEY_CODE_SLEEP = 130,
+ Q_KEY_CODE_WAKE = 131,
+ Q_KEY_CODE_AUDIONEXT = 132,
+ Q_KEY_CODE_AUDIOPREV = 133,
+ Q_KEY_CODE_AUDIOSTOP = 134,
+ Q_KEY_CODE_AUDIOPLAY = 135,
+ Q_KEY_CODE_AUDIOMUTE = 136,
+ Q_KEY_CODE_VOLUMEUP = 137,
+ Q_KEY_CODE_VOLUMEDOWN = 138,
+ Q_KEY_CODE_MEDIASELECT = 139,
+ Q_KEY_CODE_MAIL = 140,
+ Q_KEY_CODE_CALCULATOR = 141,
+ Q_KEY_CODE_COMPUTER = 142,
+ Q_KEY_CODE_AC_HOME = 143,
+ Q_KEY_CODE_AC_BACK = 144,
+ Q_KEY_CODE_AC_FORWARD = 145,
+ Q_KEY_CODE_AC_REFRESH = 146,
+ Q_KEY_CODE_AC_BOOKMARKS = 147,
+ Q_KEY_CODE__MAX = 148,
+} QKeyCode;
+
+#define QKeyCode_str(val) \
+ qapi_enum_lookup(&QKeyCode_lookup, (val))
+
+extern const QEnumLookup QKeyCode_lookup;
+
+typedef struct q_obj_int_wrapper q_obj_int_wrapper;
+
+typedef struct q_obj_QKeyCode_wrapper q_obj_QKeyCode_wrapper;
+
+typedef enum KeyValueKind {
+ KEY_VALUE_KIND_NUMBER = 0,
+ KEY_VALUE_KIND_QCODE = 1,
+ KEY_VALUE_KIND__MAX = 2,
+} KeyValueKind;
+
+#define KeyValueKind_str(val) \
+ qapi_enum_lookup(&KeyValueKind_lookup, (val))
+
+extern const QEnumLookup KeyValueKind_lookup;
+
+typedef struct KeyValue KeyValue;
+
+typedef struct KeyValueList KeyValueList;
+
+typedef struct q_obj_send_key_arg q_obj_send_key_arg;
+
+typedef enum InputButton {
+ INPUT_BUTTON_LEFT = 0,
+ INPUT_BUTTON_MIDDLE = 1,
+ INPUT_BUTTON_RIGHT = 2,
+ INPUT_BUTTON_WHEEL_UP = 3,
+ INPUT_BUTTON_WHEEL_DOWN = 4,
+ INPUT_BUTTON_SIDE = 5,
+ INPUT_BUTTON_EXTRA = 6,
+ INPUT_BUTTON__MAX = 7,
+} InputButton;
+
+#define InputButton_str(val) \
+ qapi_enum_lookup(&InputButton_lookup, (val))
+
+extern const QEnumLookup InputButton_lookup;
+
+typedef enum InputAxis {
+ INPUT_AXIS_X = 0,
+ INPUT_AXIS_Y = 1,
+ INPUT_AXIS__MAX = 2,
+} InputAxis;
+
+#define InputAxis_str(val) \
+ qapi_enum_lookup(&InputAxis_lookup, (val))
+
+extern const QEnumLookup InputAxis_lookup;
+
+typedef struct InputKeyEvent InputKeyEvent;
+
+typedef struct InputBtnEvent InputBtnEvent;
+
+typedef struct InputMoveEvent InputMoveEvent;
+
+typedef struct q_obj_InputKeyEvent_wrapper q_obj_InputKeyEvent_wrapper;
+
+typedef struct q_obj_InputBtnEvent_wrapper q_obj_InputBtnEvent_wrapper;
+
+typedef struct q_obj_InputMoveEvent_wrapper q_obj_InputMoveEvent_wrapper;
+
+typedef enum InputEventKind {
+ INPUT_EVENT_KIND_KEY = 0,
+ INPUT_EVENT_KIND_BTN = 1,
+ INPUT_EVENT_KIND_REL = 2,
+ INPUT_EVENT_KIND_ABS = 3,
+ INPUT_EVENT_KIND__MAX = 4,
+} InputEventKind;
+
+#define InputEventKind_str(val) \
+ qapi_enum_lookup(&InputEventKind_lookup, (val))
+
+extern const QEnumLookup InputEventKind_lookup;
+
+typedef struct InputEvent InputEvent;
+
+typedef struct InputEventList InputEventList;
+
+typedef struct q_obj_input_send_event_arg q_obj_input_send_event_arg;
+
+typedef struct DisplayNoOpts DisplayNoOpts;
+
+typedef struct DisplayGTK DisplayGTK;
+
+typedef enum DisplayType {
+ DISPLAY_TYPE_DEFAULT = 0,
+ DISPLAY_TYPE_NONE = 1,
+ DISPLAY_TYPE_GTK = 2,
+ DISPLAY_TYPE_SDL = 3,
+ DISPLAY_TYPE_EGL_HEADLESS = 4,
+ DISPLAY_TYPE_CURSES = 5,
+ DISPLAY_TYPE_COCOA = 6,
+ DISPLAY_TYPE__MAX = 7,
+} DisplayType;
+
+#define DisplayType_str(val) \
+ qapi_enum_lookup(&DisplayType_lookup, (val))
+
+extern const QEnumLookup DisplayType_lookup;
+
+typedef struct q_obj_DisplayOptions_base q_obj_DisplayOptions_base;
+
+typedef struct DisplayOptions DisplayOptions;
+
+struct q_obj_set_password_arg {
+ char *protocol;
+ char *password;
+ bool has_connected;
+ char *connected;
+};
+
+struct q_obj_expire_password_arg {
+ char *protocol;
+ char *time;
+};
+
+struct q_obj_screendump_arg {
+ char *filename;
+ bool has_device;
+ char *device;
+ bool has_head;
+ int64_t head;
+};
+
+struct SpiceBasicInfo {
+ char *host;
+ char *port;
+ NetworkAddressFamily family;
+};
+
+void qapi_free_SpiceBasicInfo(SpiceBasicInfo *obj);
+
+struct SpiceServerInfo {
+ /* Members inherited from SpiceBasicInfo: */
+ char *host;
+ char *port;
+ NetworkAddressFamily family;
+ /* Own members: */
+ bool has_auth;
+ char *auth;
+};
+
+static inline SpiceBasicInfo *qapi_SpiceServerInfo_base(const SpiceServerInfo *obj)
+{
+ return (SpiceBasicInfo *)obj;
+}
+
+void qapi_free_SpiceServerInfo(SpiceServerInfo *obj);
+
+struct SpiceChannel {
+ /* Members inherited from SpiceBasicInfo: */
+ char *host;
+ char *port;
+ NetworkAddressFamily family;
+ /* Own members: */
+ int64_t connection_id;
+ int64_t channel_type;
+ int64_t channel_id;
+ bool tls;
+};
+
+static inline SpiceBasicInfo *qapi_SpiceChannel_base(const SpiceChannel *obj)
+{
+ return (SpiceBasicInfo *)obj;
+}
+
+void qapi_free_SpiceChannel(SpiceChannel *obj);
+
+struct SpiceChannelList {
+ SpiceChannelList *next;
+ SpiceChannel *value;
+};
+
+void qapi_free_SpiceChannelList(SpiceChannelList *obj);
+
+struct SpiceInfo {
+ bool enabled;
+ bool migrated;
+ bool has_host;
+ char *host;
+ bool has_port;
+ int64_t port;
+ bool has_tls_port;
+ int64_t tls_port;
+ bool has_auth;
+ char *auth;
+ bool has_compiled_version;
+ char *compiled_version;
+ SpiceQueryMouseMode mouse_mode;
+ bool has_channels;
+ SpiceChannelList *channels;
+};
+
+void qapi_free_SpiceInfo(SpiceInfo *obj);
+
+struct q_obj_SPICE_CONNECTED_arg {
+ SpiceBasicInfo *server;
+ SpiceBasicInfo *client;
+};
+
+struct q_obj_SPICE_INITIALIZED_arg {
+ SpiceServerInfo *server;
+ SpiceChannel *client;
+};
+
+struct q_obj_SPICE_DISCONNECTED_arg {
+ SpiceBasicInfo *server;
+ SpiceBasicInfo *client;
+};
+
+struct VncBasicInfo {
+ char *host;
+ char *service;
+ NetworkAddressFamily family;
+ bool websocket;
+};
+
+void qapi_free_VncBasicInfo(VncBasicInfo *obj);
+
+struct VncServerInfo {
+ /* Members inherited from VncBasicInfo: */
+ char *host;
+ char *service;
+ NetworkAddressFamily family;
+ bool websocket;
+ /* Own members: */
+ bool has_auth;
+ char *auth;
+};
+
+static inline VncBasicInfo *qapi_VncServerInfo_base(const VncServerInfo *obj)
+{
+ return (VncBasicInfo *)obj;
+}
+
+void qapi_free_VncServerInfo(VncServerInfo *obj);
+
+struct VncClientInfo {
+ /* Members inherited from VncBasicInfo: */
+ char *host;
+ char *service;
+ NetworkAddressFamily family;
+ bool websocket;
+ /* Own members: */
+ bool has_x509_dname;
+ char *x509_dname;
+ bool has_sasl_username;
+ char *sasl_username;
+};
+
+static inline VncBasicInfo *qapi_VncClientInfo_base(const VncClientInfo *obj)
+{
+ return (VncBasicInfo *)obj;
+}
+
+void qapi_free_VncClientInfo(VncClientInfo *obj);
+
+struct VncClientInfoList {
+ VncClientInfoList *next;
+ VncClientInfo *value;
+};
+
+void qapi_free_VncClientInfoList(VncClientInfoList *obj);
+
+struct VncInfo {
+ bool enabled;
+ bool has_host;
+ char *host;
+ bool has_family;
+ NetworkAddressFamily family;
+ bool has_service;
+ char *service;
+ bool has_auth;
+ char *auth;
+ bool has_clients;
+ VncClientInfoList *clients;
+};
+
+void qapi_free_VncInfo(VncInfo *obj);
+
+struct VncServerInfo2 {
+ /* Members inherited from VncBasicInfo: */
+ char *host;
+ char *service;
+ NetworkAddressFamily family;
+ bool websocket;
+ /* Own members: */
+ VncPrimaryAuth auth;
+ bool has_vencrypt;
+ VncVencryptSubAuth vencrypt;
+};
+
+static inline VncBasicInfo *qapi_VncServerInfo2_base(const VncServerInfo2 *obj)
+{
+ return (VncBasicInfo *)obj;
+}
+
+void qapi_free_VncServerInfo2(VncServerInfo2 *obj);
+
+struct VncServerInfo2List {
+ VncServerInfo2List *next;
+ VncServerInfo2 *value;
+};
+
+void qapi_free_VncServerInfo2List(VncServerInfo2List *obj);
+
+struct VncInfo2 {
+ char *id;
+ VncServerInfo2List *server;
+ VncClientInfoList *clients;
+ VncPrimaryAuth auth;
+ bool has_vencrypt;
+ VncVencryptSubAuth vencrypt;
+ bool has_display;
+ char *display;
+};
+
+void qapi_free_VncInfo2(VncInfo2 *obj);
+
+struct VncInfo2List {
+ VncInfo2List *next;
+ VncInfo2 *value;
+};
+
+void qapi_free_VncInfo2List(VncInfo2List *obj);
+
+struct q_obj_change_vnc_password_arg {
+ char *password;
+};
+
+struct q_obj_VNC_CONNECTED_arg {
+ VncServerInfo *server;
+ VncBasicInfo *client;
+};
+
+struct q_obj_VNC_INITIALIZED_arg {
+ VncServerInfo *server;
+ VncClientInfo *client;
+};
+
+struct q_obj_VNC_DISCONNECTED_arg {
+ VncServerInfo *server;
+ VncClientInfo *client;
+};
+
+struct MouseInfo {
+ char *name;
+ int64_t index;
+ bool current;
+ bool absolute;
+};
+
+void qapi_free_MouseInfo(MouseInfo *obj);
+
+struct MouseInfoList {
+ MouseInfoList *next;
+ MouseInfo *value;
+};
+
+void qapi_free_MouseInfoList(MouseInfoList *obj);
+
+struct q_obj_int_wrapper {
+ int64_t data;
+};
+
+struct q_obj_QKeyCode_wrapper {
+ QKeyCode data;
+};
+
+struct KeyValue {
+ KeyValueKind type;
+ union { /* union tag is @type */
+ q_obj_int_wrapper number;
+ q_obj_QKeyCode_wrapper qcode;
+ } u;
+};
+
+void qapi_free_KeyValue(KeyValue *obj);
+
+struct KeyValueList {
+ KeyValueList *next;
+ KeyValue *value;
+};
+
+void qapi_free_KeyValueList(KeyValueList *obj);
+
+struct q_obj_send_key_arg {
+ KeyValueList *keys;
+ bool has_hold_time;
+ int64_t hold_time;
+};
+
+struct InputKeyEvent {
+ KeyValue *key;
+ bool down;
+};
+
+void qapi_free_InputKeyEvent(InputKeyEvent *obj);
+
+struct InputBtnEvent {
+ InputButton button;
+ bool down;
+};
+
+void qapi_free_InputBtnEvent(InputBtnEvent *obj);
+
+struct InputMoveEvent {
+ InputAxis axis;
+ int64_t value;
+};
+
+void qapi_free_InputMoveEvent(InputMoveEvent *obj);
+
+struct q_obj_InputKeyEvent_wrapper {
+ InputKeyEvent *data;
+};
+
+struct q_obj_InputBtnEvent_wrapper {
+ InputBtnEvent *data;
+};
+
+struct q_obj_InputMoveEvent_wrapper {
+ InputMoveEvent *data;
+};
+
+struct InputEvent {
+ InputEventKind type;
+ union { /* union tag is @type */
+ q_obj_InputKeyEvent_wrapper key;
+ q_obj_InputBtnEvent_wrapper btn;
+ q_obj_InputMoveEvent_wrapper rel;
+ q_obj_InputMoveEvent_wrapper abs;
+ } u;
+};
+
+void qapi_free_InputEvent(InputEvent *obj);
+
+struct InputEventList {
+ InputEventList *next;
+ InputEvent *value;
+};
+
+void qapi_free_InputEventList(InputEventList *obj);
+
+struct q_obj_input_send_event_arg {
+ bool has_device;
+ char *device;
+ bool has_head;
+ int64_t head;
+ InputEventList *events;
+};
+
+struct DisplayNoOpts {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_DisplayNoOpts(DisplayNoOpts *obj);
+
+struct DisplayGTK {
+ bool has_grab_on_hover;
+ bool grab_on_hover;
+};
+
+void qapi_free_DisplayGTK(DisplayGTK *obj);
+
+struct q_obj_DisplayOptions_base {
+ DisplayType type;
+ bool has_full_screen;
+ bool full_screen;
+ bool has_window_close;
+ bool window_close;
+ bool has_gl;
+ bool gl;
+};
+
+struct DisplayOptions {
+ DisplayType type;
+ bool has_full_screen;
+ bool full_screen;
+ bool has_window_close;
+ bool window_close;
+ bool has_gl;
+ bool gl;
+ union { /* union tag is @type */
+ DisplayNoOpts q_default;
+ DisplayNoOpts none;
+ DisplayGTK gtk;
+ DisplayNoOpts sdl;
+ DisplayNoOpts egl_headless;
+ DisplayNoOpts curses;
+ DisplayNoOpts cocoa;
+ } u;
+};
+
+void qapi_free_DisplayOptions(DisplayOptions *obj);
+
+#endif /* QAPI_TYPES_UI_H */
diff --git a/qemu2-auto-generated/qapi/qapi-types.c b/qemu2-auto-generated/qapi/qapi-types.c
new file mode 100644
index 0000000000..6e4d3c3e0a
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types.c
@@ -0,0 +1,18 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi-types.h"
+#include "qapi-visit.h"
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_types_c;
diff --git a/qemu2-auto-generated/qapi/qapi-types.h b/qemu2-auto-generated/qapi/qapi-types.h
new file mode 100644
index 0000000000..374930e9f0
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-types.h
@@ -0,0 +1,33 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_TYPES_H
+#define QAPI_TYPES_H
+
+#include "qapi/qapi-builtin-types.h"
+#include "qapi-types-common.h"
+#include "qapi-types-sockets.h"
+#include "qapi-types-run-state.h"
+#include "qapi-types-crypto.h"
+#include "qapi-types-block.h"
+#include "qapi-types-char.h"
+#include "qapi-types-net.h"
+#include "qapi-types-rocker.h"
+#include "qapi-types-tpm.h"
+#include "qapi-types-ui.h"
+#include "qapi-types-migration.h"
+#include "qapi-types-transaction.h"
+#include "qapi-types-trace.h"
+#include "qapi-types-introspect.h"
+#include "qapi-types-misc.h"
+
+#endif /* QAPI_TYPES_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-block-core.c b/qemu2-auto-generated/qapi/qapi-visit-block-core.c
new file mode 100644
index 0000000000..cb1b996a5d
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-block-core.c
@@ -0,0 +1,7463 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-block-core.h"
+
+void visit_type_SnapshotInfo_members(Visitor *v, SnapshotInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vm-state-size", &obj->vm_state_size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "date-sec", &obj->date_sec, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "date-nsec", &obj->date_nsec, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vm-clock-sec", &obj->vm_clock_sec, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vm-clock-nsec", &obj->vm_clock_nsec, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SnapshotInfo(Visitor *v, const char *name, SnapshotInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SnapshotInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SnapshotInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SnapshotInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2EncryptionBase_members(Visitor *v, ImageInfoSpecificQCow2EncryptionBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevQcow2EncryptionFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2EncryptionBase(Visitor *v, const char *name, ImageInfoSpecificQCow2EncryptionBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfoSpecificQCow2EncryptionBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfoSpecificQCow2EncryptionBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoSpecificQCow2EncryptionBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2Encryption_members(Visitor *v, ImageInfoSpecificQCow2Encryption *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ImageInfoSpecificQCow2EncryptionBase_members(v, (ImageInfoSpecificQCow2EncryptionBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_AES:
+ visit_type_QCryptoBlockInfoQCow_members(v, &obj->u.aes, &err);
+ break;
+ case BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_LUKS:
+ visit_type_QCryptoBlockInfoLUKS_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2Encryption(Visitor *v, const char *name, ImageInfoSpecificQCow2Encryption **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfoSpecificQCow2Encryption), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfoSpecificQCow2Encryption_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoSpecificQCow2Encryption(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2_members(Visitor *v, ImageInfoSpecificQCow2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "compat", &obj->compat, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "lazy-refcounts", &obj->has_lazy_refcounts)) {
+ visit_type_bool(v, "lazy-refcounts", &obj->lazy_refcounts, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "corrupt", &obj->has_corrupt)) {
+ visit_type_bool(v, "corrupt", &obj->corrupt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "refcount-bits", &obj->refcount_bits, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "encrypt", &obj->has_encrypt)) {
+ visit_type_ImageInfoSpecificQCow2Encryption(v, "encrypt", &obj->encrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificQCow2(Visitor *v, const char *name, ImageInfoSpecificQCow2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfoSpecificQCow2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfoSpecificQCow2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoSpecificQCow2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoList(Visitor *v, const char *name, ImageInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ImageInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ImageInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ImageInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificVmdk_members(Visitor *v, ImageInfoSpecificVmdk *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "create-type", &obj->create_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "cid", &obj->cid, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "parent-cid", &obj->parent_cid, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ImageInfoList(v, "extents", &obj->extents, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificVmdk(Visitor *v, const char *name, ImageInfoSpecificVmdk **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfoSpecificVmdk), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfoSpecificVmdk_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoSpecificVmdk(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ImageInfoSpecificQCow2_wrapper_members(Visitor *v, q_obj_ImageInfoSpecificQCow2_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ImageInfoSpecificQCow2(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ImageInfoSpecificVmdk_wrapper_members(Visitor *v, q_obj_ImageInfoSpecificVmdk_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ImageInfoSpecificVmdk(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_QCryptoBlockInfoLUKS_wrapper_members(Visitor *v, q_obj_QCryptoBlockInfoLUKS_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockInfoLUKS(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecificKind(Visitor *v, const char *name, ImageInfoSpecificKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ImageInfoSpecificKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_ImageInfoSpecific_members(Visitor *v, ImageInfoSpecific *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ImageInfoSpecificKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case IMAGE_INFO_SPECIFIC_KIND_QCOW2:
+ visit_type_q_obj_ImageInfoSpecificQCow2_wrapper_members(v, &obj->u.qcow2, &err);
+ break;
+ case IMAGE_INFO_SPECIFIC_KIND_VMDK:
+ visit_type_q_obj_ImageInfoSpecificVmdk_wrapper_members(v, &obj->u.vmdk, &err);
+ break;
+ case IMAGE_INFO_SPECIFIC_KIND_LUKS:
+ visit_type_q_obj_QCryptoBlockInfoLUKS_wrapper_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfoSpecific(Visitor *v, const char *name, ImageInfoSpecific **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfoSpecific), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfoSpecific_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfoSpecific(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SnapshotInfoList(Visitor *v, const char *name, SnapshotInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SnapshotInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SnapshotInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SnapshotInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SnapshotInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfo_members(Visitor *v, ImageInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "dirty-flag", &obj->has_dirty_flag)) {
+ visit_type_bool(v, "dirty-flag", &obj->dirty_flag, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "actual-size", &obj->has_actual_size)) {
+ visit_type_int(v, "actual-size", &obj->actual_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "virtual-size", &obj->virtual_size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cluster-size", &obj->has_cluster_size)) {
+ visit_type_int(v, "cluster-size", &obj->cluster_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "encrypted", &obj->has_encrypted)) {
+ visit_type_bool(v, "encrypted", &obj->encrypted, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compressed", &obj->has_compressed)) {
+ visit_type_bool(v, "compressed", &obj->compressed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-filename", &obj->has_backing_filename)) {
+ visit_type_str(v, "backing-filename", &obj->backing_filename, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "full-backing-filename", &obj->has_full_backing_filename)) {
+ visit_type_str(v, "full-backing-filename", &obj->full_backing_filename, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-filename-format", &obj->has_backing_filename_format)) {
+ visit_type_str(v, "backing-filename-format", &obj->backing_filename_format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "snapshots", &obj->has_snapshots)) {
+ visit_type_SnapshotInfoList(v, "snapshots", &obj->snapshots, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-image", &obj->has_backing_image)) {
+ visit_type_ImageInfo(v, "backing-image", &obj->backing_image, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "format-specific", &obj->has_format_specific)) {
+ visit_type_ImageInfoSpecific(v, "format-specific", &obj->format_specific, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageInfo(Visitor *v, const char *name, ImageInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageCheck_members(Visitor *v, ImageCheck *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "check-errors", &obj->check_errors, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "image-end-offset", &obj->has_image_end_offset)) {
+ visit_type_int(v, "image-end-offset", &obj->image_end_offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "corruptions", &obj->has_corruptions)) {
+ visit_type_int(v, "corruptions", &obj->corruptions, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "leaks", &obj->has_leaks)) {
+ visit_type_int(v, "leaks", &obj->leaks, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "corruptions-fixed", &obj->has_corruptions_fixed)) {
+ visit_type_int(v, "corruptions-fixed", &obj->corruptions_fixed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "leaks-fixed", &obj->has_leaks_fixed)) {
+ visit_type_int(v, "leaks-fixed", &obj->leaks_fixed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "total-clusters", &obj->has_total_clusters)) {
+ visit_type_int(v, "total-clusters", &obj->total_clusters, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "allocated-clusters", &obj->has_allocated_clusters)) {
+ visit_type_int(v, "allocated-clusters", &obj->allocated_clusters, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "fragmented-clusters", &obj->has_fragmented_clusters)) {
+ visit_type_int(v, "fragmented-clusters", &obj->fragmented_clusters, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compressed-clusters", &obj->has_compressed_clusters)) {
+ visit_type_int(v, "compressed-clusters", &obj->compressed_clusters, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ImageCheck(Visitor *v, const char *name, ImageCheck **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ImageCheck), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ImageCheck_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ImageCheck(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MapEntry_members(Visitor *v, MapEntry *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "start", &obj->start, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "length", &obj->length, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "zero", &obj->zero, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "depth", &obj->depth, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "offset", &obj->has_offset)) {
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "filename", &obj->has_filename)) {
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MapEntry(Visitor *v, const char *name, MapEntry **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MapEntry), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MapEntry_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MapEntry(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCacheInfo_members(Visitor *v, BlockdevCacheInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "writeback", &obj->writeback, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "direct", &obj->direct, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "no-flush", &obj->no_flush, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCacheInfo(Visitor *v, const char *name, BlockdevCacheInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCacheInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCacheInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCacheInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceInfo_members(Visitor *v, BlockDeviceInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_bool(v, "ro", &obj->ro, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "drv", &obj->drv, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "backing_file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing_file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "backing_file_depth", &obj->backing_file_depth, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "encrypted", &obj->encrypted, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "encryption_key_missing", &obj->encryption_key_missing, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevDetectZeroesOptions(v, "detect_zeroes", &obj->detect_zeroes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bps", &obj->bps, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bps_rd", &obj->bps_rd, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bps_wr", &obj->bps_wr, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops", &obj->iops, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops_rd", &obj->iops_rd, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops_wr", &obj->iops_wr, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ImageInfo(v, "image", &obj->image, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "bps_max", &obj->has_bps_max)) {
+ visit_type_int(v, "bps_max", &obj->bps_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_rd_max", &obj->has_bps_rd_max)) {
+ visit_type_int(v, "bps_rd_max", &obj->bps_rd_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_wr_max", &obj->has_bps_wr_max)) {
+ visit_type_int(v, "bps_wr_max", &obj->bps_wr_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_max", &obj->has_iops_max)) {
+ visit_type_int(v, "iops_max", &obj->iops_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_rd_max", &obj->has_iops_rd_max)) {
+ visit_type_int(v, "iops_rd_max", &obj->iops_rd_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_wr_max", &obj->has_iops_wr_max)) {
+ visit_type_int(v, "iops_wr_max", &obj->iops_wr_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_max_length", &obj->has_bps_max_length)) {
+ visit_type_int(v, "bps_max_length", &obj->bps_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_rd_max_length", &obj->has_bps_rd_max_length)) {
+ visit_type_int(v, "bps_rd_max_length", &obj->bps_rd_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_wr_max_length", &obj->has_bps_wr_max_length)) {
+ visit_type_int(v, "bps_wr_max_length", &obj->bps_wr_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_max_length", &obj->has_iops_max_length)) {
+ visit_type_int(v, "iops_max_length", &obj->iops_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_rd_max_length", &obj->has_iops_rd_max_length)) {
+ visit_type_int(v, "iops_rd_max_length", &obj->iops_rd_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_wr_max_length", &obj->has_iops_wr_max_length)) {
+ visit_type_int(v, "iops_wr_max_length", &obj->iops_wr_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_size", &obj->has_iops_size)) {
+ visit_type_int(v, "iops_size", &obj->iops_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group", &obj->has_group)) {
+ visit_type_str(v, "group", &obj->group, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_BlockdevCacheInfo(v, "cache", &obj->cache, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "write_threshold", &obj->write_threshold, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceInfo(Visitor *v, const char *name, BlockDeviceInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDeviceInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDeviceInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceIoStatus(Visitor *v, const char *name, BlockDeviceIoStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockDeviceIoStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockDeviceMapEntry_members(Visitor *v, BlockDeviceMapEntry *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "start", &obj->start, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "length", &obj->length, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "depth", &obj->depth, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "zero", &obj->zero, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "offset", &obj->has_offset)) {
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceMapEntry(Visitor *v, const char *name, BlockDeviceMapEntry **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDeviceMapEntry), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDeviceMapEntry_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceMapEntry(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DirtyBitmapStatus(Visitor *v, const char *name, DirtyBitmapStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &DirtyBitmapStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockDirtyInfo_members(Visitor *v, BlockDirtyInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "count", &obj->count, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "granularity", &obj->granularity, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_DirtyBitmapStatus(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyInfo(Visitor *v, const char *name, BlockDirtyInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDirtyInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDirtyInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDirtyInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockLatencyHistogramInfo_members(Visitor *v, BlockLatencyHistogramInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint64List(v, "boundaries", &obj->boundaries, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64List(v, "bins", &obj->bins, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockLatencyHistogramInfo(Visitor *v, const char *name, BlockLatencyHistogramInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockLatencyHistogramInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockLatencyHistogramInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockLatencyHistogramInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_x_block_latency_histogram_set_arg_members(Visitor *v, q_obj_x_block_latency_histogram_set_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "boundaries", &obj->has_boundaries)) {
+ visit_type_uint64List(v, "boundaries", &obj->boundaries, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "boundaries-read", &obj->has_boundaries_read)) {
+ visit_type_uint64List(v, "boundaries-read", &obj->boundaries_read, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "boundaries-write", &obj->has_boundaries_write)) {
+ visit_type_uint64List(v, "boundaries-write", &obj->boundaries_write, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "boundaries-flush", &obj->has_boundaries_flush)) {
+ visit_type_uint64List(v, "boundaries-flush", &obj->boundaries_flush, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyInfoList(Visitor *v, const char *name, BlockDirtyInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockDirtyInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockDirtyInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockDirtyInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDirtyInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockInfo_members(Visitor *v, BlockInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "qdev", &obj->has_qdev)) {
+ visit_type_str(v, "qdev", &obj->qdev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "removable", &obj->removable, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "locked", &obj->locked, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "inserted", &obj->has_inserted)) {
+ visit_type_BlockDeviceInfo(v, "inserted", &obj->inserted, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tray_open", &obj->has_tray_open)) {
+ visit_type_bool(v, "tray_open", &obj->tray_open, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "io-status", &obj->has_io_status)) {
+ visit_type_BlockDeviceIoStatus(v, "io-status", &obj->io_status, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "dirty-bitmaps", &obj->has_dirty_bitmaps)) {
+ visit_type_BlockDirtyInfoList(v, "dirty-bitmaps", &obj->dirty_bitmaps, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockInfo(Visitor *v, const char *name, BlockInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockMeasureInfo_members(Visitor *v, BlockMeasureInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "required", &obj->required, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "fully-allocated", &obj->fully_allocated, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockMeasureInfo(Visitor *v, const char *name, BlockMeasureInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockMeasureInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockMeasureInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockMeasureInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockInfoList(Visitor *v, const char *name, BlockInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceTimedStats_members(Visitor *v, BlockDeviceTimedStats *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "interval_length", &obj->interval_length, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "min_rd_latency_ns", &obj->min_rd_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "max_rd_latency_ns", &obj->max_rd_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "avg_rd_latency_ns", &obj->avg_rd_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "min_wr_latency_ns", &obj->min_wr_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "max_wr_latency_ns", &obj->max_wr_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "avg_wr_latency_ns", &obj->avg_wr_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "min_flush_latency_ns", &obj->min_flush_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "max_flush_latency_ns", &obj->max_flush_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "avg_flush_latency_ns", &obj->avg_flush_latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_number(v, "avg_rd_queue_depth", &obj->avg_rd_queue_depth, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_number(v, "avg_wr_queue_depth", &obj->avg_wr_queue_depth, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceTimedStats(Visitor *v, const char *name, BlockDeviceTimedStats **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDeviceTimedStats), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDeviceTimedStats_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceTimedStats(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceTimedStatsList(Visitor *v, const char *name, BlockDeviceTimedStatsList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockDeviceTimedStatsList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockDeviceTimedStatsList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockDeviceTimedStats(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceTimedStatsList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceStats_members(Visitor *v, BlockDeviceStats *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "rd_bytes", &obj->rd_bytes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "wr_bytes", &obj->wr_bytes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "rd_operations", &obj->rd_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "wr_operations", &obj->wr_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "flush_operations", &obj->flush_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "flush_total_time_ns", &obj->flush_total_time_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "wr_total_time_ns", &obj->wr_total_time_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "rd_total_time_ns", &obj->rd_total_time_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "wr_highest_offset", &obj->wr_highest_offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "rd_merged", &obj->rd_merged, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "wr_merged", &obj->wr_merged, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "idle_time_ns", &obj->has_idle_time_ns)) {
+ visit_type_int(v, "idle_time_ns", &obj->idle_time_ns, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "failed_rd_operations", &obj->failed_rd_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "failed_wr_operations", &obj->failed_wr_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "failed_flush_operations", &obj->failed_flush_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "invalid_rd_operations", &obj->invalid_rd_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "invalid_wr_operations", &obj->invalid_wr_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "invalid_flush_operations", &obj->invalid_flush_operations, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "account_invalid", &obj->account_invalid, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "account_failed", &obj->account_failed, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDeviceTimedStatsList(v, "timed_stats", &obj->timed_stats, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "x_rd_latency_histogram", &obj->has_x_rd_latency_histogram)) {
+ visit_type_BlockLatencyHistogramInfo(v, "x_rd_latency_histogram", &obj->x_rd_latency_histogram, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x_wr_latency_histogram", &obj->has_x_wr_latency_histogram)) {
+ visit_type_BlockLatencyHistogramInfo(v, "x_wr_latency_histogram", &obj->x_wr_latency_histogram, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x_flush_latency_histogram", &obj->has_x_flush_latency_histogram)) {
+ visit_type_BlockLatencyHistogramInfo(v, "x_flush_latency_histogram", &obj->x_flush_latency_histogram, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceStats(Visitor *v, const char *name, BlockDeviceStats **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDeviceStats), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDeviceStats_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceStats(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockStats_members(Visitor *v, BlockStats *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_BlockDeviceStats(v, "stats", &obj->stats, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "parent", &obj->has_parent)) {
+ visit_type_BlockStats(v, "parent", &obj->parent, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing", &obj->has_backing)) {
+ visit_type_BlockStats(v, "backing", &obj->backing, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockStats(Visitor *v, const char *name, BlockStats **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockStats), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockStats_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockStats(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_blockstats_arg_members(Visitor *v, q_obj_query_blockstats_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "query-nodes", &obj->has_query_nodes)) {
+ visit_type_bool(v, "query-nodes", &obj->query_nodes, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockStatsList(Visitor *v, const char *name, BlockStatsList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockStatsList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockStatsList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockStats(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockStatsList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOnError(Visitor *v, const char *name, BlockdevOnError *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevOnError_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_MirrorSyncMode(Visitor *v, const char *name, MirrorSyncMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MirrorSyncMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockJobType(Visitor *v, const char *name, BlockJobType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockJobType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockJobVerb(Visitor *v, const char *name, BlockJobVerb *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockJobVerb_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockJobStatus(Visitor *v, const char *name, BlockJobStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockJobStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockJobInfo_members(Visitor *v, BlockJobInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "len", &obj->len, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "busy", &obj->busy, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "paused", &obj->paused, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockDeviceIoStatus(v, "io-status", &obj->io_status, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "ready", &obj->ready, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockJobStatus(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "auto-finalize", &obj->auto_finalize, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "auto-dismiss", &obj->auto_dismiss, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockJobInfo(Visitor *v, const char *name, BlockJobInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockJobInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockJobInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockJobInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockJobInfoList(Visitor *v, const char *name, BlockJobInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockJobInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockJobInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockJobInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockJobInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_passwd_arg_members(Visitor *v, q_obj_block_passwd_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "password", &obj->password, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_resize_arg_members(Visitor *v, q_obj_block_resize_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NewImageMode(Visitor *v, const char *name, NewImageMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NewImageMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevSnapshotSync_members(Visitor *v, BlockdevSnapshotSync *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "snapshot-file", &obj->snapshot_file, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "snapshot-node-name", &obj->has_snapshot_node_name)) {
+ visit_type_str(v, "snapshot-node-name", &obj->snapshot_node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "mode", &obj->has_mode)) {
+ visit_type_NewImageMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshotSync(Visitor *v, const char *name, BlockdevSnapshotSync **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevSnapshotSync), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevSnapshotSync_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevSnapshotSync(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshot_members(Visitor *v, BlockdevSnapshot *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node", &obj->node, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "overlay", &obj->overlay, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshot(Visitor *v, const char *name, BlockdevSnapshot **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevSnapshot), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevSnapshot_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevSnapshot(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DriveBackup_members(Visitor *v, DriveBackup *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_MirrorSyncMode(v, "sync", &obj->sync, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "mode", &obj->has_mode)) {
+ visit_type_NewImageMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bitmap", &obj->has_bitmap)) {
+ visit_type_str(v, "bitmap", &obj->bitmap, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compress", &obj->has_compress)) {
+ visit_type_bool(v, "compress", &obj->compress, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-source-error", &obj->has_on_source_error)) {
+ visit_type_BlockdevOnError(v, "on-source-error", &obj->on_source_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-target-error", &obj->has_on_target_error)) {
+ visit_type_BlockdevOnError(v, "on-target-error", &obj->on_target_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auto-finalize", &obj->has_auto_finalize)) {
+ visit_type_bool(v, "auto-finalize", &obj->auto_finalize, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auto-dismiss", &obj->has_auto_dismiss)) {
+ visit_type_bool(v, "auto-dismiss", &obj->auto_dismiss, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DriveBackup(Visitor *v, const char *name, DriveBackup **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DriveBackup), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DriveBackup_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DriveBackup(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevBackup_members(Visitor *v, BlockdevBackup *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_MirrorSyncMode(v, "sync", &obj->sync, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compress", &obj->has_compress)) {
+ visit_type_bool(v, "compress", &obj->compress, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-source-error", &obj->has_on_source_error)) {
+ visit_type_BlockdevOnError(v, "on-source-error", &obj->on_source_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-target-error", &obj->has_on_target_error)) {
+ visit_type_BlockdevOnError(v, "on-target-error", &obj->on_target_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auto-finalize", &obj->has_auto_finalize)) {
+ visit_type_bool(v, "auto-finalize", &obj->auto_finalize, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auto-dismiss", &obj->has_auto_dismiss)) {
+ visit_type_bool(v, "auto-dismiss", &obj->auto_dismiss, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevBackup(Visitor *v, const char *name, BlockdevBackup **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevBackup), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevBackup_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevBackup(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_change_backing_file_arg_members(Visitor *v, q_obj_change_backing_file_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "image-node-name", &obj->image_node_name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_commit_arg_members(Visitor *v, q_obj_block_commit_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "base", &obj->has_base)) {
+ visit_type_str(v, "base", &obj->base, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "top", &obj->has_top)) {
+ visit_type_str(v, "top", &obj->top, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "filter-node-name", &obj->has_filter_node_name)) {
+ visit_type_str(v, "filter-node-name", &obj->filter_node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDeviceInfoList(Visitor *v, const char *name, BlockDeviceInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockDeviceInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockDeviceInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockDeviceInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDeviceInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DriveMirror_members(Visitor *v, DriveMirror *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "replaces", &obj->has_replaces)) {
+ visit_type_str(v, "replaces", &obj->replaces, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_MirrorSyncMode(v, "sync", &obj->sync, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "mode", &obj->has_mode)) {
+ visit_type_NewImageMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "granularity", &obj->has_granularity)) {
+ visit_type_uint32(v, "granularity", &obj->granularity, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "buf-size", &obj->has_buf_size)) {
+ visit_type_int(v, "buf-size", &obj->buf_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-source-error", &obj->has_on_source_error)) {
+ visit_type_BlockdevOnError(v, "on-source-error", &obj->on_source_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-target-error", &obj->has_on_target_error)) {
+ visit_type_BlockdevOnError(v, "on-target-error", &obj->on_target_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "unmap", &obj->has_unmap)) {
+ visit_type_bool(v, "unmap", &obj->unmap, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DriveMirror(Visitor *v, const char *name, DriveMirror **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DriveMirror), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DriveMirror_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DriveMirror(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmap_members(Visitor *v, BlockDirtyBitmap *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node", &obj->node, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmap(Visitor *v, const char *name, BlockDirtyBitmap **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDirtyBitmap), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDirtyBitmap_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDirtyBitmap(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmapAdd_members(Visitor *v, BlockDirtyBitmapAdd *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node", &obj->node, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "granularity", &obj->has_granularity)) {
+ visit_type_uint32(v, "granularity", &obj->granularity, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "persistent", &obj->has_persistent)) {
+ visit_type_bool(v, "persistent", &obj->persistent, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "autoload", &obj->has_autoload)) {
+ visit_type_bool(v, "autoload", &obj->autoload, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmapAdd(Visitor *v, const char *name, BlockDirtyBitmapAdd **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDirtyBitmapAdd), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDirtyBitmapAdd_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDirtyBitmapAdd(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmapSha256_members(Visitor *v, BlockDirtyBitmapSha256 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "sha256", &obj->sha256, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockDirtyBitmapSha256(Visitor *v, const char *name, BlockDirtyBitmapSha256 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockDirtyBitmapSha256), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockDirtyBitmapSha256_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockDirtyBitmapSha256(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_mirror_arg_members(Visitor *v, q_obj_blockdev_mirror_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "replaces", &obj->has_replaces)) {
+ visit_type_str(v, "replaces", &obj->replaces, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_MirrorSyncMode(v, "sync", &obj->sync, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "granularity", &obj->has_granularity)) {
+ visit_type_uint32(v, "granularity", &obj->granularity, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "buf-size", &obj->has_buf_size)) {
+ visit_type_int(v, "buf-size", &obj->buf_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-source-error", &obj->has_on_source_error)) {
+ visit_type_BlockdevOnError(v, "on-source-error", &obj->on_source_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-target-error", &obj->has_on_target_error)) {
+ visit_type_BlockdevOnError(v, "on-target-error", &obj->on_target_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "filter-node-name", &obj->has_filter_node_name)) {
+ visit_type_str(v, "filter-node-name", &obj->filter_node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockIOThrottle_members(Visitor *v, BlockIOThrottle *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "bps", &obj->bps, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bps_rd", &obj->bps_rd, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bps_wr", &obj->bps_wr, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops", &obj->iops, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops_rd", &obj->iops_rd, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "iops_wr", &obj->iops_wr, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "bps_max", &obj->has_bps_max)) {
+ visit_type_int(v, "bps_max", &obj->bps_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_rd_max", &obj->has_bps_rd_max)) {
+ visit_type_int(v, "bps_rd_max", &obj->bps_rd_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_wr_max", &obj->has_bps_wr_max)) {
+ visit_type_int(v, "bps_wr_max", &obj->bps_wr_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_max", &obj->has_iops_max)) {
+ visit_type_int(v, "iops_max", &obj->iops_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_rd_max", &obj->has_iops_rd_max)) {
+ visit_type_int(v, "iops_rd_max", &obj->iops_rd_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_wr_max", &obj->has_iops_wr_max)) {
+ visit_type_int(v, "iops_wr_max", &obj->iops_wr_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_max_length", &obj->has_bps_max_length)) {
+ visit_type_int(v, "bps_max_length", &obj->bps_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_rd_max_length", &obj->has_bps_rd_max_length)) {
+ visit_type_int(v, "bps_rd_max_length", &obj->bps_rd_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps_wr_max_length", &obj->has_bps_wr_max_length)) {
+ visit_type_int(v, "bps_wr_max_length", &obj->bps_wr_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_max_length", &obj->has_iops_max_length)) {
+ visit_type_int(v, "iops_max_length", &obj->iops_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_rd_max_length", &obj->has_iops_rd_max_length)) {
+ visit_type_int(v, "iops_rd_max_length", &obj->iops_rd_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_wr_max_length", &obj->has_iops_wr_max_length)) {
+ visit_type_int(v, "iops_wr_max_length", &obj->iops_wr_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops_size", &obj->has_iops_size)) {
+ visit_type_int(v, "iops_size", &obj->iops_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group", &obj->has_group)) {
+ visit_type_str(v, "group", &obj->group, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockIOThrottle(Visitor *v, const char *name, BlockIOThrottle **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockIOThrottle), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockIOThrottle_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockIOThrottle(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ThrottleLimits_members(Visitor *v, ThrottleLimits *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "iops-total", &obj->has_iops_total)) {
+ visit_type_int(v, "iops-total", &obj->iops_total, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-total-max", &obj->has_iops_total_max)) {
+ visit_type_int(v, "iops-total-max", &obj->iops_total_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-total-max-length", &obj->has_iops_total_max_length)) {
+ visit_type_int(v, "iops-total-max-length", &obj->iops_total_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-read", &obj->has_iops_read)) {
+ visit_type_int(v, "iops-read", &obj->iops_read, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-read-max", &obj->has_iops_read_max)) {
+ visit_type_int(v, "iops-read-max", &obj->iops_read_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-read-max-length", &obj->has_iops_read_max_length)) {
+ visit_type_int(v, "iops-read-max-length", &obj->iops_read_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-write", &obj->has_iops_write)) {
+ visit_type_int(v, "iops-write", &obj->iops_write, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-write-max", &obj->has_iops_write_max)) {
+ visit_type_int(v, "iops-write-max", &obj->iops_write_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-write-max-length", &obj->has_iops_write_max_length)) {
+ visit_type_int(v, "iops-write-max-length", &obj->iops_write_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-total", &obj->has_bps_total)) {
+ visit_type_int(v, "bps-total", &obj->bps_total, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-total-max", &obj->has_bps_total_max)) {
+ visit_type_int(v, "bps-total-max", &obj->bps_total_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-total-max-length", &obj->has_bps_total_max_length)) {
+ visit_type_int(v, "bps-total-max-length", &obj->bps_total_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-read", &obj->has_bps_read)) {
+ visit_type_int(v, "bps-read", &obj->bps_read, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-read-max", &obj->has_bps_read_max)) {
+ visit_type_int(v, "bps-read-max", &obj->bps_read_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-read-max-length", &obj->has_bps_read_max_length)) {
+ visit_type_int(v, "bps-read-max-length", &obj->bps_read_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-write", &obj->has_bps_write)) {
+ visit_type_int(v, "bps-write", &obj->bps_write, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-write-max", &obj->has_bps_write_max)) {
+ visit_type_int(v, "bps-write-max", &obj->bps_write_max, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bps-write-max-length", &obj->has_bps_write_max_length)) {
+ visit_type_int(v, "bps-write-max-length", &obj->bps_write_max_length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iops-size", &obj->has_iops_size)) {
+ visit_type_int(v, "iops-size", &obj->iops_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ThrottleLimits(Visitor *v, const char *name, ThrottleLimits **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ThrottleLimits), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ThrottleLimits_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ThrottleLimits(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_stream_arg_members(Visitor *v, q_obj_block_stream_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "job-id", &obj->has_job_id)) {
+ visit_type_str(v, "job-id", &obj->job_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "base", &obj->has_base)) {
+ visit_type_str(v, "base", &obj->base, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "base-node", &obj->has_base_node)) {
+ visit_type_str(v, "base-node", &obj->base_node, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "speed", &obj->has_speed)) {
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "on-error", &obj->has_on_error)) {
+ visit_type_BlockdevOnError(v, "on-error", &obj->on_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_set_speed_arg_members(Visitor *v, q_obj_block_job_set_speed_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_cancel_arg_members(Visitor *v, q_obj_block_job_cancel_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "force", &obj->has_force)) {
+ visit_type_bool(v, "force", &obj->force, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_pause_arg_members(Visitor *v, q_obj_block_job_pause_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_resume_arg_members(Visitor *v, q_obj_block_job_resume_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_complete_arg_members(Visitor *v, q_obj_block_job_complete_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_dismiss_arg_members(Visitor *v, q_obj_block_job_dismiss_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_job_finalize_arg_members(Visitor *v, q_obj_block_job_finalize_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevDiscardOptions(Visitor *v, const char *name, BlockdevDiscardOptions *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevDiscardOptions_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevDetectZeroesOptions(Visitor *v, const char *name, BlockdevDetectZeroesOptions *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevDetectZeroesOptions_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevAioOptions(Visitor *v, const char *name, BlockdevAioOptions *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevAioOptions_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevCacheOptions_members(Visitor *v, BlockdevCacheOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "direct", &obj->has_direct)) {
+ visit_type_bool(v, "direct", &obj->direct, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "no-flush", &obj->has_no_flush)) {
+ visit_type_bool(v, "no-flush", &obj->no_flush, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCacheOptions(Visitor *v, const char *name, BlockdevCacheOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCacheOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCacheOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCacheOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevDriver(Visitor *v, const char *name, BlockdevDriver *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevDriver_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevOptionsFile_members(Visitor *v, BlockdevOptionsFile *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "pr-manager", &obj->has_pr_manager)) {
+ visit_type_str(v, "pr-manager", &obj->pr_manager, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "locking", &obj->has_locking)) {
+ visit_type_OnOffAuto(v, "locking", &obj->locking, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "aio", &obj->has_aio)) {
+ visit_type_BlockdevAioOptions(v, "aio", &obj->aio, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsFile(Visitor *v, const char *name, BlockdevOptionsFile **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsFile), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsFile_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsFile(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNull_members(Visitor *v, BlockdevOptionsNull *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "size", &obj->has_size)) {
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "latency-ns", &obj->has_latency_ns)) {
+ visit_type_uint64(v, "latency-ns", &obj->latency_ns, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNull(Visitor *v, const char *name, BlockdevOptionsNull **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsNull), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsNull_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsNull(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNVMe_members(Visitor *v, BlockdevOptionsNVMe *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "namespace", &obj->q_namespace, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNVMe(Visitor *v, const char *name, BlockdevOptionsNVMe **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsNVMe), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsNVMe_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsNVMe(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsVVFAT_members(Visitor *v, BlockdevOptionsVVFAT *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "dir", &obj->dir, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "fat-type", &obj->has_fat_type)) {
+ visit_type_int(v, "fat-type", &obj->fat_type, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "floppy", &obj->has_floppy)) {
+ visit_type_bool(v, "floppy", &obj->floppy, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "label", &obj->has_label)) {
+ visit_type_str(v, "label", &obj->label, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "rw", &obj->has_rw)) {
+ visit_type_bool(v, "rw", &obj->rw, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsVVFAT(Visitor *v, const char *name, BlockdevOptionsVVFAT **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsVVFAT), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsVVFAT_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsVVFAT(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericFormat_members(Visitor *v, BlockdevOptionsGenericFormat *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericFormat(Visitor *v, const char *name, BlockdevOptionsGenericFormat **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsGenericFormat), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsGenericFormat_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsGenericFormat(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsLUKS_members(Visitor *v, BlockdevOptionsLUKS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericFormat_members(v, (BlockdevOptionsGenericFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "key-secret", &obj->has_key_secret)) {
+ visit_type_str(v, "key-secret", &obj->key_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsLUKS(Visitor *v, const char *name, BlockdevOptionsLUKS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsLUKS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsLUKS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsLUKS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericCOWFormat_members(Visitor *v, BlockdevOptionsGenericCOWFormat *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericFormat_members(v, (BlockdevOptionsGenericFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "backing", &obj->has_backing)) {
+ visit_type_BlockdevRefOrNull(v, "backing", &obj->backing, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGenericCOWFormat(Visitor *v, const char *name, BlockdevOptionsGenericCOWFormat **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsGenericCOWFormat), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsGenericCOWFormat_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsGenericCOWFormat(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Qcow2OverlapCheckMode(Visitor *v, const char *name, Qcow2OverlapCheckMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &Qcow2OverlapCheckMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_Qcow2OverlapCheckFlags_members(Visitor *v, Qcow2OverlapCheckFlags *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "template", &obj->has_q_template)) {
+ visit_type_Qcow2OverlapCheckMode(v, "template", &obj->q_template, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "main-header", &obj->has_main_header)) {
+ visit_type_bool(v, "main-header", &obj->main_header, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "active-l1", &obj->has_active_l1)) {
+ visit_type_bool(v, "active-l1", &obj->active_l1, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "active-l2", &obj->has_active_l2)) {
+ visit_type_bool(v, "active-l2", &obj->active_l2, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "refcount-table", &obj->has_refcount_table)) {
+ visit_type_bool(v, "refcount-table", &obj->refcount_table, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "refcount-block", &obj->has_refcount_block)) {
+ visit_type_bool(v, "refcount-block", &obj->refcount_block, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "snapshot-table", &obj->has_snapshot_table)) {
+ visit_type_bool(v, "snapshot-table", &obj->snapshot_table, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "inactive-l1", &obj->has_inactive_l1)) {
+ visit_type_bool(v, "inactive-l1", &obj->inactive_l1, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "inactive-l2", &obj->has_inactive_l2)) {
+ visit_type_bool(v, "inactive-l2", &obj->inactive_l2, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Qcow2OverlapCheckFlags(Visitor *v, const char *name, Qcow2OverlapCheckFlags **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Qcow2OverlapCheckFlags), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Qcow2OverlapCheckFlags_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Qcow2OverlapCheckFlags(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Qcow2OverlapChecks(Visitor *v, const char *name, Qcow2OverlapChecks **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type_Qcow2OverlapCheckFlags_members(v, &(*obj)->u.flags, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_QSTRING:
+ visit_type_Qcow2OverlapCheckMode(v, name, &(*obj)->u.mode, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "Qcow2OverlapChecks");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Qcow2OverlapChecks(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcowEncryptionFormat(Visitor *v, const char *name, BlockdevQcowEncryptionFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevQcowEncryptionFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_BlockdevQcowEncryption_base_members(Visitor *v, q_obj_BlockdevQcowEncryption_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevQcowEncryptionFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcowEncryption_members(Visitor *v, BlockdevQcowEncryption *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_BlockdevQcowEncryption_base_members(v, (q_obj_BlockdevQcowEncryption_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case BLOCKDEV_QCOW_ENCRYPTION_FORMAT_AES:
+ visit_type_QCryptoBlockOptionsQCow_members(v, &obj->u.aes, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcowEncryption(Visitor *v, const char *name, BlockdevQcowEncryption **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevQcowEncryption), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevQcowEncryption_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevQcowEncryption(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQcow_members(Visitor *v, BlockdevOptionsQcow *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericCOWFormat_members(v, (BlockdevOptionsGenericCOWFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "encrypt", &obj->has_encrypt)) {
+ visit_type_BlockdevQcowEncryption(v, "encrypt", &obj->encrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQcow(Visitor *v, const char *name, BlockdevOptionsQcow **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsQcow), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsQcow_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsQcow(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcow2EncryptionFormat(Visitor *v, const char *name, BlockdevQcow2EncryptionFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevQcow2EncryptionFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_BlockdevQcow2Encryption_base_members(Visitor *v, q_obj_BlockdevQcow2Encryption_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevQcow2EncryptionFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcow2Encryption_members(Visitor *v, BlockdevQcow2Encryption *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_BlockdevQcow2Encryption_base_members(v, (q_obj_BlockdevQcow2Encryption_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_AES:
+ visit_type_QCryptoBlockOptionsQCow_members(v, &obj->u.aes, &err);
+ break;
+ case BLOCKDEV_QCOW2_ENCRYPTION_FORMAT_LUKS:
+ visit_type_QCryptoBlockOptionsLUKS_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcow2Encryption(Visitor *v, const char *name, BlockdevQcow2Encryption **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevQcow2Encryption), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevQcow2Encryption_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevQcow2Encryption(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQcow2_members(Visitor *v, BlockdevOptionsQcow2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericCOWFormat_members(v, (BlockdevOptionsGenericCOWFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "lazy-refcounts", &obj->has_lazy_refcounts)) {
+ visit_type_bool(v, "lazy-refcounts", &obj->lazy_refcounts, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pass-discard-request", &obj->has_pass_discard_request)) {
+ visit_type_bool(v, "pass-discard-request", &obj->pass_discard_request, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pass-discard-snapshot", &obj->has_pass_discard_snapshot)) {
+ visit_type_bool(v, "pass-discard-snapshot", &obj->pass_discard_snapshot, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pass-discard-other", &obj->has_pass_discard_other)) {
+ visit_type_bool(v, "pass-discard-other", &obj->pass_discard_other, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "overlap-check", &obj->has_overlap_check)) {
+ visit_type_Qcow2OverlapChecks(v, "overlap-check", &obj->overlap_check, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cache-size", &obj->has_cache_size)) {
+ visit_type_int(v, "cache-size", &obj->cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "l2-cache-size", &obj->has_l2_cache_size)) {
+ visit_type_int(v, "l2-cache-size", &obj->l2_cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "l2-cache-entry-size", &obj->has_l2_cache_entry_size)) {
+ visit_type_int(v, "l2-cache-entry-size", &obj->l2_cache_entry_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "refcount-cache-size", &obj->has_refcount_cache_size)) {
+ visit_type_int(v, "refcount-cache-size", &obj->refcount_cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cache-clean-interval", &obj->has_cache_clean_interval)) {
+ visit_type_int(v, "cache-clean-interval", &obj->cache_clean_interval, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "encrypt", &obj->has_encrypt)) {
+ visit_type_BlockdevQcow2Encryption(v, "encrypt", &obj->encrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQcow2(Visitor *v, const char *name, BlockdevOptionsQcow2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsQcow2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsQcow2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsQcow2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyCheckMode(Visitor *v, const char *name, SshHostKeyCheckMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SshHostKeyCheckMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SshHostKeyCheckHashType(Visitor *v, const char *name, SshHostKeyCheckHashType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SshHostKeyCheckHashType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SshHostKeyHash_members(Visitor *v, SshHostKeyHash *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SshHostKeyCheckHashType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "hash", &obj->hash, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyHash(Visitor *v, const char *name, SshHostKeyHash **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SshHostKeyHash), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SshHostKeyHash_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SshHostKeyHash(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyDummy_members(Visitor *v, SshHostKeyDummy *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyDummy(Visitor *v, const char *name, SshHostKeyDummy **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SshHostKeyDummy), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SshHostKeyDummy_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SshHostKeyDummy(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SshHostKeyCheck_base_members(Visitor *v, q_obj_SshHostKeyCheck_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SshHostKeyCheckMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyCheck_members(Visitor *v, SshHostKeyCheck *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_SshHostKeyCheck_base_members(v, (q_obj_SshHostKeyCheck_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->mode) {
+ case SSH_HOST_KEY_CHECK_MODE_NONE:
+ visit_type_SshHostKeyDummy_members(v, &obj->u.none, &err);
+ break;
+ case SSH_HOST_KEY_CHECK_MODE_HASH:
+ visit_type_SshHostKeyHash_members(v, &obj->u.hash, &err);
+ break;
+ case SSH_HOST_KEY_CHECK_MODE_KNOWN_HOSTS:
+ visit_type_SshHostKeyDummy_members(v, &obj->u.known_hosts, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SshHostKeyCheck(Visitor *v, const char *name, SshHostKeyCheck **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SshHostKeyCheck), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SshHostKeyCheck_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SshHostKeyCheck(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsSsh_members(Visitor *v, BlockdevOptionsSsh *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InetSocketAddress(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "user", &obj->has_user)) {
+ visit_type_str(v, "user", &obj->user, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "host-key-check", &obj->has_host_key_check)) {
+ visit_type_SshHostKeyCheck(v, "host-key-check", &obj->host_key_check, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsSsh(Visitor *v, const char *name, BlockdevOptionsSsh **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsSsh), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsSsh_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsSsh(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugEvent(Visitor *v, const char *name, BlkdebugEvent *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlkdebugEvent_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlkdebugInjectErrorOptions_members(Visitor *v, BlkdebugInjectErrorOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlkdebugEvent(v, "event", &obj->event, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "state", &obj->has_state)) {
+ visit_type_int(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "errno", &obj->has_q_errno)) {
+ visit_type_int(v, "errno", &obj->q_errno, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "sector", &obj->has_sector)) {
+ visit_type_int(v, "sector", &obj->sector, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "once", &obj->has_once)) {
+ visit_type_bool(v, "once", &obj->once, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "immediately", &obj->has_immediately)) {
+ visit_type_bool(v, "immediately", &obj->immediately, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugInjectErrorOptions(Visitor *v, const char *name, BlkdebugInjectErrorOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlkdebugInjectErrorOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlkdebugInjectErrorOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlkdebugInjectErrorOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugSetStateOptions_members(Visitor *v, BlkdebugSetStateOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlkdebugEvent(v, "event", &obj->event, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "state", &obj->has_state)) {
+ visit_type_int(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "new_state", &obj->new_state, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugSetStateOptions(Visitor *v, const char *name, BlkdebugSetStateOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlkdebugSetStateOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlkdebugSetStateOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlkdebugSetStateOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugInjectErrorOptionsList(Visitor *v, const char *name, BlkdebugInjectErrorOptionsList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlkdebugInjectErrorOptionsList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlkdebugInjectErrorOptionsList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlkdebugInjectErrorOptions(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlkdebugInjectErrorOptionsList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlkdebugSetStateOptionsList(Visitor *v, const char *name, BlkdebugSetStateOptionsList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlkdebugSetStateOptionsList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlkdebugSetStateOptionsList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlkdebugSetStateOptions(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlkdebugSetStateOptionsList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsBlkdebug_members(Visitor *v, BlockdevOptionsBlkdebug *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "image", &obj->image, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "config", &obj->has_config)) {
+ visit_type_str(v, "config", &obj->config, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "align", &obj->has_align)) {
+ visit_type_int(v, "align", &obj->align, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "max-transfer", &obj->has_max_transfer)) {
+ visit_type_int32(v, "max-transfer", &obj->max_transfer, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "opt-write-zero", &obj->has_opt_write_zero)) {
+ visit_type_int32(v, "opt-write-zero", &obj->opt_write_zero, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "max-write-zero", &obj->has_max_write_zero)) {
+ visit_type_int32(v, "max-write-zero", &obj->max_write_zero, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "opt-discard", &obj->has_opt_discard)) {
+ visit_type_int32(v, "opt-discard", &obj->opt_discard, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "max-discard", &obj->has_max_discard)) {
+ visit_type_int32(v, "max-discard", &obj->max_discard, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "inject-error", &obj->has_inject_error)) {
+ visit_type_BlkdebugInjectErrorOptionsList(v, "inject-error", &obj->inject_error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "set-state", &obj->has_set_state)) {
+ visit_type_BlkdebugSetStateOptionsList(v, "set-state", &obj->set_state, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsBlkdebug(Visitor *v, const char *name, BlockdevOptionsBlkdebug **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsBlkdebug), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsBlkdebug_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsBlkdebug(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsBlkverify_members(Visitor *v, BlockdevOptionsBlkverify *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "test", &obj->test, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevRef(v, "raw", &obj->raw, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsBlkverify(Visitor *v, const char *name, BlockdevOptionsBlkverify **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsBlkverify), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsBlkverify_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsBlkverify(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QuorumReadPattern(Visitor *v, const char *name, QuorumReadPattern *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QuorumReadPattern_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevRefList(Visitor *v, const char *name, BlockdevRefList **obj, Error **errp)
+{
+ Error *err = NULL;
+ BlockdevRefList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (BlockdevRefList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_BlockdevRef(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevRefList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQuorum_members(Visitor *v, BlockdevOptionsQuorum *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "blkverify", &obj->has_blkverify)) {
+ visit_type_bool(v, "blkverify", &obj->blkverify, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_BlockdevRefList(v, "children", &obj->children, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vote-threshold", &obj->vote_threshold, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "rewrite-corrupted", &obj->has_rewrite_corrupted)) {
+ visit_type_bool(v, "rewrite-corrupted", &obj->rewrite_corrupted, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "read-pattern", &obj->has_read_pattern)) {
+ visit_type_QuorumReadPattern(v, "read-pattern", &obj->read_pattern, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsQuorum(Visitor *v, const char *name, BlockdevOptionsQuorum **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsQuorum), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsQuorum_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsQuorum(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddressList(Visitor *v, const char *name, SocketAddressList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SocketAddressList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SocketAddressList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SocketAddress(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SocketAddressList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGluster_members(Visitor *v, BlockdevOptionsGluster *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "volume", &obj->volume, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SocketAddressList(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "debug", &obj->has_debug)) {
+ visit_type_int(v, "debug", &obj->debug, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "logfile", &obj->has_logfile)) {
+ visit_type_str(v, "logfile", &obj->logfile, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsGluster(Visitor *v, const char *name, BlockdevOptionsGluster **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsGluster), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsGluster_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsGluster(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_IscsiTransport(Visitor *v, const char *name, IscsiTransport *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &IscsiTransport_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_IscsiHeaderDigest(Visitor *v, const char *name, IscsiHeaderDigest *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &IscsiHeaderDigest_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevOptionsIscsi_members(Visitor *v, BlockdevOptionsIscsi *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_IscsiTransport(v, "transport", &obj->transport, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "portal", &obj->portal, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "lun", &obj->has_lun)) {
+ visit_type_int(v, "lun", &obj->lun, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "user", &obj->has_user)) {
+ visit_type_str(v, "user", &obj->user, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "password-secret", &obj->has_password_secret)) {
+ visit_type_str(v, "password-secret", &obj->password_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "initiator-name", &obj->has_initiator_name)) {
+ visit_type_str(v, "initiator-name", &obj->initiator_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "header-digest", &obj->has_header_digest)) {
+ visit_type_IscsiHeaderDigest(v, "header-digest", &obj->header_digest, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "timeout", &obj->has_timeout)) {
+ visit_type_int(v, "timeout", &obj->timeout, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsIscsi(Visitor *v, const char *name, BlockdevOptionsIscsi **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsIscsi), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsIscsi_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsIscsi(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InetSocketAddressBaseList(Visitor *v, const char *name, InetSocketAddressBaseList **obj, Error **errp)
+{
+ Error *err = NULL;
+ InetSocketAddressBaseList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (InetSocketAddressBaseList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_InetSocketAddressBase(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InetSocketAddressBaseList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsRbd_members(Visitor *v, BlockdevOptionsRbd *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "pool", &obj->pool, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "image", &obj->image, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "conf", &obj->has_conf)) {
+ visit_type_str(v, "conf", &obj->conf, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "snapshot", &obj->has_snapshot)) {
+ visit_type_str(v, "snapshot", &obj->snapshot, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "user", &obj->has_user)) {
+ visit_type_str(v, "user", &obj->user, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "server", &obj->has_server)) {
+ visit_type_InetSocketAddressBaseList(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsRbd(Visitor *v, const char *name, BlockdevOptionsRbd **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsRbd), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsRbd_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsRbd(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsSheepdog_members(Visitor *v, BlockdevOptionsSheepdog *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SocketAddress(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "vdi", &obj->vdi, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "snap-id", &obj->has_snap_id)) {
+ visit_type_uint32(v, "snap-id", &obj->snap_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tag", &obj->has_tag)) {
+ visit_type_str(v, "tag", &obj->tag, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsSheepdog(Visitor *v, const char *name, BlockdevOptionsSheepdog **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsSheepdog), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsSheepdog_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsSheepdog(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ReplicationMode(Visitor *v, const char *name, ReplicationMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ReplicationMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevOptionsReplication_members(Visitor *v, BlockdevOptionsReplication *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericFormat_members(v, (BlockdevOptionsGenericFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ReplicationMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "top-id", &obj->has_top_id)) {
+ visit_type_str(v, "top-id", &obj->top_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsReplication(Visitor *v, const char *name, BlockdevOptionsReplication **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsReplication), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsReplication_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsReplication(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NFSTransport(Visitor *v, const char *name, NFSTransport *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NFSTransport_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_NFSServer_members(Visitor *v, NFSServer *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_NFSTransport(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NFSServer(Visitor *v, const char *name, NFSServer **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NFSServer), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NFSServer_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NFSServer(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNfs_members(Visitor *v, BlockdevOptionsNfs *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_NFSServer(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "user", &obj->has_user)) {
+ visit_type_int(v, "user", &obj->user, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group", &obj->has_group)) {
+ visit_type_int(v, "group", &obj->group, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tcp-syn-count", &obj->has_tcp_syn_count)) {
+ visit_type_int(v, "tcp-syn-count", &obj->tcp_syn_count, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "readahead-size", &obj->has_readahead_size)) {
+ visit_type_int(v, "readahead-size", &obj->readahead_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "page-cache-size", &obj->has_page_cache_size)) {
+ visit_type_int(v, "page-cache-size", &obj->page_cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "debug", &obj->has_debug)) {
+ visit_type_int(v, "debug", &obj->debug, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNfs(Visitor *v, const char *name, BlockdevOptionsNfs **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsNfs), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsNfs_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsNfs(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlBase_members(Visitor *v, BlockdevOptionsCurlBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "url", &obj->url, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "readahead", &obj->has_readahead)) {
+ visit_type_int(v, "readahead", &obj->readahead, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "timeout", &obj->has_timeout)) {
+ visit_type_int(v, "timeout", &obj->timeout, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "username", &obj->has_username)) {
+ visit_type_str(v, "username", &obj->username, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "password-secret", &obj->has_password_secret)) {
+ visit_type_str(v, "password-secret", &obj->password_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "proxy-username", &obj->has_proxy_username)) {
+ visit_type_str(v, "proxy-username", &obj->proxy_username, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "proxy-password-secret", &obj->has_proxy_password_secret)) {
+ visit_type_str(v, "proxy-password-secret", &obj->proxy_password_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlBase(Visitor *v, const char *name, BlockdevOptionsCurlBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsCurlBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsCurlBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsCurlBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlHttp_members(Visitor *v, BlockdevOptionsCurlHttp *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsCurlBase_members(v, (BlockdevOptionsCurlBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cookie", &obj->has_cookie)) {
+ visit_type_str(v, "cookie", &obj->cookie, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cookie-secret", &obj->has_cookie_secret)) {
+ visit_type_str(v, "cookie-secret", &obj->cookie_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlHttp(Visitor *v, const char *name, BlockdevOptionsCurlHttp **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsCurlHttp), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsCurlHttp_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsCurlHttp(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlHttps_members(Visitor *v, BlockdevOptionsCurlHttps *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsCurlBase_members(v, (BlockdevOptionsCurlBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cookie", &obj->has_cookie)) {
+ visit_type_str(v, "cookie", &obj->cookie, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "sslverify", &obj->has_sslverify)) {
+ visit_type_bool(v, "sslverify", &obj->sslverify, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cookie-secret", &obj->has_cookie_secret)) {
+ visit_type_str(v, "cookie-secret", &obj->cookie_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlHttps(Visitor *v, const char *name, BlockdevOptionsCurlHttps **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsCurlHttps), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsCurlHttps_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsCurlHttps(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlFtp_members(Visitor *v, BlockdevOptionsCurlFtp *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsCurlBase_members(v, (BlockdevOptionsCurlBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlFtp(Visitor *v, const char *name, BlockdevOptionsCurlFtp **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsCurlFtp), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsCurlFtp_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsCurlFtp(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlFtps_members(Visitor *v, BlockdevOptionsCurlFtps *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsCurlBase_members(v, (BlockdevOptionsCurlBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "sslverify", &obj->has_sslverify)) {
+ visit_type_bool(v, "sslverify", &obj->sslverify, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsCurlFtps(Visitor *v, const char *name, BlockdevOptionsCurlFtps **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsCurlFtps), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsCurlFtps_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsCurlFtps(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNbd_members(Visitor *v, BlockdevOptionsNbd *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SocketAddress(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "exp", &obj->has_exp)) {
+ visit_type_str(v, "exp", &obj->exp, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsNbd(Visitor *v, const char *name, BlockdevOptionsNbd **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsNbd), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsNbd_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsNbd(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsRaw_members(Visitor *v, BlockdevOptionsRaw *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGenericFormat_members(v, (BlockdevOptionsGenericFormat *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "offset", &obj->has_offset)) {
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "size", &obj->has_size)) {
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsRaw(Visitor *v, const char *name, BlockdevOptionsRaw **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsRaw), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsRaw_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsRaw(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsVxHS_members(Visitor *v, BlockdevOptionsVxHS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "vdisk-id", &obj->vdisk_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_InetSocketAddressBase(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsVxHS(Visitor *v, const char *name, BlockdevOptionsVxHS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsVxHS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsVxHS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsVxHS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsThrottle_members(Visitor *v, BlockdevOptionsThrottle *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "throttle-group", &obj->throttle_group, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptionsThrottle(Visitor *v, const char *name, BlockdevOptionsThrottle **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptionsThrottle), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptionsThrottle_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptionsThrottle(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevOptions_base_members(Visitor *v, q_obj_BlockdevOptions_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevDriver(v, "driver", &obj->driver, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "discard", &obj->has_discard)) {
+ visit_type_BlockdevDiscardOptions(v, "discard", &obj->discard, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cache", &obj->has_cache)) {
+ visit_type_BlockdevCacheOptions(v, "cache", &obj->cache, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "read-only", &obj->has_read_only)) {
+ visit_type_bool(v, "read-only", &obj->read_only, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "force-share", &obj->has_force_share)) {
+ visit_type_bool(v, "force-share", &obj->force_share, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "detect-zeroes", &obj->has_detect_zeroes)) {
+ visit_type_BlockdevDetectZeroesOptions(v, "detect-zeroes", &obj->detect_zeroes, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptions_members(Visitor *v, BlockdevOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_BlockdevOptions_base_members(v, (q_obj_BlockdevOptions_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->driver) {
+ case BLOCKDEV_DRIVER_BLKDEBUG:
+ visit_type_BlockdevOptionsBlkdebug_members(v, &obj->u.blkdebug, &err);
+ break;
+ case BLOCKDEV_DRIVER_BLKVERIFY:
+ visit_type_BlockdevOptionsBlkverify_members(v, &obj->u.blkverify, &err);
+ break;
+ case BLOCKDEV_DRIVER_BOCHS:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.bochs, &err);
+ break;
+ case BLOCKDEV_DRIVER_CLOOP:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.cloop, &err);
+ break;
+ case BLOCKDEV_DRIVER_DMG:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.dmg, &err);
+ break;
+ case BLOCKDEV_DRIVER_FILE:
+ visit_type_BlockdevOptionsFile_members(v, &obj->u.file, &err);
+ break;
+ case BLOCKDEV_DRIVER_FTP:
+ visit_type_BlockdevOptionsCurlFtp_members(v, &obj->u.ftp, &err);
+ break;
+ case BLOCKDEV_DRIVER_FTPS:
+ visit_type_BlockdevOptionsCurlFtps_members(v, &obj->u.ftps, &err);
+ break;
+ case BLOCKDEV_DRIVER_GLUSTER:
+ visit_type_BlockdevOptionsGluster_members(v, &obj->u.gluster, &err);
+ break;
+ case BLOCKDEV_DRIVER_HOST_CDROM:
+ visit_type_BlockdevOptionsFile_members(v, &obj->u.host_cdrom, &err);
+ break;
+ case BLOCKDEV_DRIVER_HOST_DEVICE:
+ visit_type_BlockdevOptionsFile_members(v, &obj->u.host_device, &err);
+ break;
+ case BLOCKDEV_DRIVER_HTTP:
+ visit_type_BlockdevOptionsCurlHttp_members(v, &obj->u.http, &err);
+ break;
+ case BLOCKDEV_DRIVER_HTTPS:
+ visit_type_BlockdevOptionsCurlHttps_members(v, &obj->u.https, &err);
+ break;
+ case BLOCKDEV_DRIVER_ISCSI:
+ visit_type_BlockdevOptionsIscsi_members(v, &obj->u.iscsi, &err);
+ break;
+ case BLOCKDEV_DRIVER_LUKS:
+ visit_type_BlockdevOptionsLUKS_members(v, &obj->u.luks, &err);
+ break;
+ case BLOCKDEV_DRIVER_NBD:
+ visit_type_BlockdevOptionsNbd_members(v, &obj->u.nbd, &err);
+ break;
+ case BLOCKDEV_DRIVER_NFS:
+ visit_type_BlockdevOptionsNfs_members(v, &obj->u.nfs, &err);
+ break;
+ case BLOCKDEV_DRIVER_NULL_AIO:
+ visit_type_BlockdevOptionsNull_members(v, &obj->u.null_aio, &err);
+ break;
+ case BLOCKDEV_DRIVER_NULL_CO:
+ visit_type_BlockdevOptionsNull_members(v, &obj->u.null_co, &err);
+ break;
+ case BLOCKDEV_DRIVER_NVME:
+ visit_type_BlockdevOptionsNVMe_members(v, &obj->u.nvme, &err);
+ break;
+ case BLOCKDEV_DRIVER_PARALLELS:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.parallels, &err);
+ break;
+ case BLOCKDEV_DRIVER_QCOW2:
+ visit_type_BlockdevOptionsQcow2_members(v, &obj->u.qcow2, &err);
+ break;
+ case BLOCKDEV_DRIVER_QCOW:
+ visit_type_BlockdevOptionsQcow_members(v, &obj->u.qcow, &err);
+ break;
+ case BLOCKDEV_DRIVER_QED:
+ visit_type_BlockdevOptionsGenericCOWFormat_members(v, &obj->u.qed, &err);
+ break;
+ case BLOCKDEV_DRIVER_QUORUM:
+ visit_type_BlockdevOptionsQuorum_members(v, &obj->u.quorum, &err);
+ break;
+ case BLOCKDEV_DRIVER_RAW:
+ visit_type_BlockdevOptionsRaw_members(v, &obj->u.raw, &err);
+ break;
+ case BLOCKDEV_DRIVER_RBD:
+ visit_type_BlockdevOptionsRbd_members(v, &obj->u.rbd, &err);
+ break;
+ case BLOCKDEV_DRIVER_REPLICATION:
+ visit_type_BlockdevOptionsReplication_members(v, &obj->u.replication, &err);
+ break;
+ case BLOCKDEV_DRIVER_SHEEPDOG:
+ visit_type_BlockdevOptionsSheepdog_members(v, &obj->u.sheepdog, &err);
+ break;
+ case BLOCKDEV_DRIVER_SSH:
+ visit_type_BlockdevOptionsSsh_members(v, &obj->u.ssh, &err);
+ break;
+ case BLOCKDEV_DRIVER_THROTTLE:
+ visit_type_BlockdevOptionsThrottle_members(v, &obj->u.throttle, &err);
+ break;
+ case BLOCKDEV_DRIVER_VDI:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.vdi, &err);
+ break;
+ case BLOCKDEV_DRIVER_VHDX:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.vhdx, &err);
+ break;
+ case BLOCKDEV_DRIVER_VMDK:
+ visit_type_BlockdevOptionsGenericCOWFormat_members(v, &obj->u.vmdk, &err);
+ break;
+ case BLOCKDEV_DRIVER_VPC:
+ visit_type_BlockdevOptionsGenericFormat_members(v, &obj->u.vpc, &err);
+ break;
+ case BLOCKDEV_DRIVER_VVFAT:
+ visit_type_BlockdevOptionsVVFAT_members(v, &obj->u.vvfat, &err);
+ break;
+ case BLOCKDEV_DRIVER_VXHS:
+ visit_type_BlockdevOptionsVxHS_members(v, &obj->u.vxhs, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevOptions(Visitor *v, const char *name, BlockdevOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevRef(Visitor *v, const char *name, BlockdevRef **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type_BlockdevOptions_members(v, &(*obj)->u.definition, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_QSTRING:
+ visit_type_str(v, name, &(*obj)->u.reference, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "BlockdevRef");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevRef(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevRefOrNull(Visitor *v, const char *name, BlockdevRefOrNull **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type_BlockdevOptions_members(v, &(*obj)->u.definition, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_QSTRING:
+ visit_type_str(v, name, &(*obj)->u.reference, &err);
+ break;
+ case QTYPE_QNULL:
+ visit_type_null(v, name, &(*obj)->u.null, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "BlockdevRefOrNull");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevRefOrNull(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_del_arg_members(Visitor *v, q_obj_blockdev_del_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsFile_members(Visitor *v, BlockdevCreateOptionsFile *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "preallocation", &obj->has_preallocation)) {
+ visit_type_PreallocMode(v, "preallocation", &obj->preallocation, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "nocow", &obj->has_nocow)) {
+ visit_type_bool(v, "nocow", &obj->nocow, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsFile(Visitor *v, const char *name, BlockdevCreateOptionsFile **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsFile), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsFile_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsFile(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsGluster_members(Visitor *v, BlockdevCreateOptionsGluster *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsGluster(v, "location", &obj->location, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "preallocation", &obj->has_preallocation)) {
+ visit_type_PreallocMode(v, "preallocation", &obj->preallocation, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsGluster(Visitor *v, const char *name, BlockdevCreateOptionsGluster **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsGluster), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsGluster_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsGluster(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsLUKS_members(Visitor *v, BlockdevCreateOptionsLUKS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockCreateOptionsLUKS_members(v, (QCryptoBlockCreateOptionsLUKS *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsLUKS(Visitor *v, const char *name, BlockdevCreateOptionsLUKS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsLUKS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsLUKS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsLUKS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsNfs_members(Visitor *v, BlockdevCreateOptionsNfs *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsNfs(v, "location", &obj->location, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsNfs(Visitor *v, const char *name, BlockdevCreateOptionsNfs **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsNfs), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsNfs_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsNfs(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsParallels_members(Visitor *v, BlockdevCreateOptionsParallels *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cluster-size", &obj->has_cluster_size)) {
+ visit_type_size(v, "cluster-size", &obj->cluster_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsParallels(Visitor *v, const char *name, BlockdevCreateOptionsParallels **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsParallels), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsParallels_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsParallels(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsQcow_members(Visitor *v, BlockdevCreateOptionsQcow *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "encrypt", &obj->has_encrypt)) {
+ visit_type_QCryptoBlockCreateOptions(v, "encrypt", &obj->encrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsQcow(Visitor *v, const char *name, BlockdevCreateOptionsQcow **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsQcow), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsQcow_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsQcow(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevQcow2Version(Visitor *v, const char *name, BlockdevQcow2Version *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevQcow2Version_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevCreateOptionsQcow2_members(Visitor *v, BlockdevCreateOptionsQcow2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "version", &obj->has_version)) {
+ visit_type_BlockdevQcow2Version(v, "version", &obj->version, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-fmt", &obj->has_backing_fmt)) {
+ visit_type_BlockdevDriver(v, "backing-fmt", &obj->backing_fmt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "encrypt", &obj->has_encrypt)) {
+ visit_type_QCryptoBlockCreateOptions(v, "encrypt", &obj->encrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cluster-size", &obj->has_cluster_size)) {
+ visit_type_size(v, "cluster-size", &obj->cluster_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "preallocation", &obj->has_preallocation)) {
+ visit_type_PreallocMode(v, "preallocation", &obj->preallocation, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "lazy-refcounts", &obj->has_lazy_refcounts)) {
+ visit_type_bool(v, "lazy-refcounts", &obj->lazy_refcounts, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "refcount-bits", &obj->has_refcount_bits)) {
+ visit_type_int(v, "refcount-bits", &obj->refcount_bits, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsQcow2(Visitor *v, const char *name, BlockdevCreateOptionsQcow2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsQcow2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsQcow2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsQcow2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsQed_members(Visitor *v, BlockdevCreateOptionsQed *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "backing-fmt", &obj->has_backing_fmt)) {
+ visit_type_BlockdevDriver(v, "backing-fmt", &obj->backing_fmt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cluster-size", &obj->has_cluster_size)) {
+ visit_type_size(v, "cluster-size", &obj->cluster_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "table-size", &obj->has_table_size)) {
+ visit_type_int(v, "table-size", &obj->table_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsQed(Visitor *v, const char *name, BlockdevCreateOptionsQed **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsQed), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsQed_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsQed(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsRbd_members(Visitor *v, BlockdevCreateOptionsRbd *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsRbd(v, "location", &obj->location, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cluster-size", &obj->has_cluster_size)) {
+ visit_type_size(v, "cluster-size", &obj->cluster_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsRbd(Visitor *v, const char *name, BlockdevCreateOptionsRbd **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsRbd), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsRbd_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsRbd(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancyType(Visitor *v, const char *name, SheepdogRedundancyType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SheepdogRedundancyType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SheepdogRedundancyFull_members(Visitor *v, SheepdogRedundancyFull *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "copies", &obj->copies, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancyFull(Visitor *v, const char *name, SheepdogRedundancyFull **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SheepdogRedundancyFull), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SheepdogRedundancyFull_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SheepdogRedundancyFull(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancyErasureCoded_members(Visitor *v, SheepdogRedundancyErasureCoded *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "data-strips", &obj->data_strips, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "parity-strips", &obj->parity_strips, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancyErasureCoded(Visitor *v, const char *name, SheepdogRedundancyErasureCoded **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SheepdogRedundancyErasureCoded), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SheepdogRedundancyErasureCoded_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SheepdogRedundancyErasureCoded(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SheepdogRedundancy_base_members(Visitor *v, q_obj_SheepdogRedundancy_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SheepdogRedundancyType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancy_members(Visitor *v, SheepdogRedundancy *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_SheepdogRedundancy_base_members(v, (q_obj_SheepdogRedundancy_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case SHEEPDOG_REDUNDANCY_TYPE_FULL:
+ visit_type_SheepdogRedundancyFull_members(v, &obj->u.full, &err);
+ break;
+ case SHEEPDOG_REDUNDANCY_TYPE_ERASURE_CODED:
+ visit_type_SheepdogRedundancyErasureCoded_members(v, &obj->u.erasure_coded, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SheepdogRedundancy(Visitor *v, const char *name, SheepdogRedundancy **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SheepdogRedundancy), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SheepdogRedundancy_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SheepdogRedundancy(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsSheepdog_members(Visitor *v, BlockdevCreateOptionsSheepdog *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsSheepdog(v, "location", &obj->location, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "backing-file", &obj->has_backing_file)) {
+ visit_type_str(v, "backing-file", &obj->backing_file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "preallocation", &obj->has_preallocation)) {
+ visit_type_PreallocMode(v, "preallocation", &obj->preallocation, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "redundancy", &obj->has_redundancy)) {
+ visit_type_SheepdogRedundancy(v, "redundancy", &obj->redundancy, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "object-size", &obj->has_object_size)) {
+ visit_type_size(v, "object-size", &obj->object_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsSheepdog(Visitor *v, const char *name, BlockdevCreateOptionsSheepdog **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsSheepdog), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsSheepdog_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsSheepdog(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsSsh_members(Visitor *v, BlockdevCreateOptionsSsh *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevOptionsSsh(v, "location", &obj->location, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsSsh(Visitor *v, const char *name, BlockdevCreateOptionsSsh **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsSsh), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsSsh_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsSsh(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsVdi_members(Visitor *v, BlockdevCreateOptionsVdi *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "preallocation", &obj->has_preallocation)) {
+ visit_type_PreallocMode(v, "preallocation", &obj->preallocation, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsVdi(Visitor *v, const char *name, BlockdevCreateOptionsVdi **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsVdi), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsVdi_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsVdi(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevVhdxSubformat(Visitor *v, const char *name, BlockdevVhdxSubformat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevVhdxSubformat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevCreateOptionsVhdx_members(Visitor *v, BlockdevCreateOptionsVhdx *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "log-size", &obj->has_log_size)) {
+ visit_type_size(v, "log-size", &obj->log_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "block-size", &obj->has_block_size)) {
+ visit_type_size(v, "block-size", &obj->block_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "subformat", &obj->has_subformat)) {
+ visit_type_BlockdevVhdxSubformat(v, "subformat", &obj->subformat, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "block-state-zero", &obj->has_block_state_zero)) {
+ visit_type_bool(v, "block-state-zero", &obj->block_state_zero, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsVhdx(Visitor *v, const char *name, BlockdevCreateOptionsVhdx **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsVhdx), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsVhdx_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsVhdx(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevVpcSubformat(Visitor *v, const char *name, BlockdevVpcSubformat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevVpcSubformat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevCreateOptionsVpc_members(Visitor *v, BlockdevCreateOptionsVpc *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevRef(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "subformat", &obj->has_subformat)) {
+ visit_type_BlockdevVpcSubformat(v, "subformat", &obj->subformat, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "force-size", &obj->has_force_size)) {
+ visit_type_bool(v, "force-size", &obj->force_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptionsVpc(Visitor *v, const char *name, BlockdevCreateOptionsVpc **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptionsVpc), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptionsVpc_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptionsVpc(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateNotSupported_members(Visitor *v, BlockdevCreateNotSupported *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateNotSupported(Visitor *v, const char *name, BlockdevCreateNotSupported **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateNotSupported), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateNotSupported_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateNotSupported(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevCreateOptions_base_members(Visitor *v, q_obj_BlockdevCreateOptions_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevDriver(v, "driver", &obj->driver, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptions_members(Visitor *v, BlockdevCreateOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_BlockdevCreateOptions_base_members(v, (q_obj_BlockdevCreateOptions_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->driver) {
+ case BLOCKDEV_DRIVER_BLKDEBUG:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.blkdebug, &err);
+ break;
+ case BLOCKDEV_DRIVER_BLKVERIFY:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.blkverify, &err);
+ break;
+ case BLOCKDEV_DRIVER_BOCHS:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.bochs, &err);
+ break;
+ case BLOCKDEV_DRIVER_CLOOP:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.cloop, &err);
+ break;
+ case BLOCKDEV_DRIVER_DMG:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.dmg, &err);
+ break;
+ case BLOCKDEV_DRIVER_FILE:
+ visit_type_BlockdevCreateOptionsFile_members(v, &obj->u.file, &err);
+ break;
+ case BLOCKDEV_DRIVER_FTP:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.ftp, &err);
+ break;
+ case BLOCKDEV_DRIVER_FTPS:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.ftps, &err);
+ break;
+ case BLOCKDEV_DRIVER_GLUSTER:
+ visit_type_BlockdevCreateOptionsGluster_members(v, &obj->u.gluster, &err);
+ break;
+ case BLOCKDEV_DRIVER_HOST_CDROM:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.host_cdrom, &err);
+ break;
+ case BLOCKDEV_DRIVER_HOST_DEVICE:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.host_device, &err);
+ break;
+ case BLOCKDEV_DRIVER_HTTP:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.http, &err);
+ break;
+ case BLOCKDEV_DRIVER_HTTPS:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.https, &err);
+ break;
+ case BLOCKDEV_DRIVER_ISCSI:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.iscsi, &err);
+ break;
+ case BLOCKDEV_DRIVER_LUKS:
+ visit_type_BlockdevCreateOptionsLUKS_members(v, &obj->u.luks, &err);
+ break;
+ case BLOCKDEV_DRIVER_NBD:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.nbd, &err);
+ break;
+ case BLOCKDEV_DRIVER_NFS:
+ visit_type_BlockdevCreateOptionsNfs_members(v, &obj->u.nfs, &err);
+ break;
+ case BLOCKDEV_DRIVER_NULL_AIO:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.null_aio, &err);
+ break;
+ case BLOCKDEV_DRIVER_NULL_CO:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.null_co, &err);
+ break;
+ case BLOCKDEV_DRIVER_NVME:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.nvme, &err);
+ break;
+ case BLOCKDEV_DRIVER_PARALLELS:
+ visit_type_BlockdevCreateOptionsParallels_members(v, &obj->u.parallels, &err);
+ break;
+ case BLOCKDEV_DRIVER_QCOW:
+ visit_type_BlockdevCreateOptionsQcow_members(v, &obj->u.qcow, &err);
+ break;
+ case BLOCKDEV_DRIVER_QCOW2:
+ visit_type_BlockdevCreateOptionsQcow2_members(v, &obj->u.qcow2, &err);
+ break;
+ case BLOCKDEV_DRIVER_QED:
+ visit_type_BlockdevCreateOptionsQed_members(v, &obj->u.qed, &err);
+ break;
+ case BLOCKDEV_DRIVER_QUORUM:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.quorum, &err);
+ break;
+ case BLOCKDEV_DRIVER_RAW:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.raw, &err);
+ break;
+ case BLOCKDEV_DRIVER_RBD:
+ visit_type_BlockdevCreateOptionsRbd_members(v, &obj->u.rbd, &err);
+ break;
+ case BLOCKDEV_DRIVER_REPLICATION:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.replication, &err);
+ break;
+ case BLOCKDEV_DRIVER_SHEEPDOG:
+ visit_type_BlockdevCreateOptionsSheepdog_members(v, &obj->u.sheepdog, &err);
+ break;
+ case BLOCKDEV_DRIVER_SSH:
+ visit_type_BlockdevCreateOptionsSsh_members(v, &obj->u.ssh, &err);
+ break;
+ case BLOCKDEV_DRIVER_THROTTLE:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.throttle, &err);
+ break;
+ case BLOCKDEV_DRIVER_VDI:
+ visit_type_BlockdevCreateOptionsVdi_members(v, &obj->u.vdi, &err);
+ break;
+ case BLOCKDEV_DRIVER_VHDX:
+ visit_type_BlockdevCreateOptionsVhdx_members(v, &obj->u.vhdx, &err);
+ break;
+ case BLOCKDEV_DRIVER_VMDK:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.vmdk, &err);
+ break;
+ case BLOCKDEV_DRIVER_VPC:
+ visit_type_BlockdevCreateOptionsVpc_members(v, &obj->u.vpc, &err);
+ break;
+ case BLOCKDEV_DRIVER_VVFAT:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.vvfat, &err);
+ break;
+ case BLOCKDEV_DRIVER_VXHS:
+ visit_type_BlockdevCreateNotSupported_members(v, &obj->u.vxhs, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevCreateOptions(Visitor *v, const char *name, BlockdevCreateOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevCreateOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevCreateOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevCreateOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_open_tray_arg_members(Visitor *v, q_obj_blockdev_open_tray_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "force", &obj->has_force)) {
+ visit_type_bool(v, "force", &obj->force, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_close_tray_arg_members(Visitor *v, q_obj_blockdev_close_tray_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_remove_medium_arg_members(Visitor *v, q_obj_blockdev_remove_medium_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_insert_medium_arg_members(Visitor *v, q_obj_blockdev_insert_medium_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevChangeReadOnlyMode(Visitor *v, const char *name, BlockdevChangeReadOnlyMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockdevChangeReadOnlyMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_blockdev_change_medium_arg_members(Visitor *v, q_obj_blockdev_change_medium_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_str(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "read-only-mode", &obj->has_read_only_mode)) {
+ visit_type_BlockdevChangeReadOnlyMode(v, "read-only-mode", &obj->read_only_mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockErrorAction(Visitor *v, const char *name, BlockErrorAction *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BlockErrorAction_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_BLOCK_IMAGE_CORRUPTED_arg_members(Visitor *v, q_obj_BLOCK_IMAGE_CORRUPTED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "msg", &obj->msg, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "offset", &obj->has_offset)) {
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "size", &obj->has_size)) {
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_bool(v, "fatal", &obj->fatal, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_IO_ERROR_arg_members(Visitor *v, q_obj_BLOCK_IO_ERROR_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "node-name", &obj->has_node_name)) {
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_IoOperationType(v, "operation", &obj->operation, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockErrorAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "nospace", &obj->has_nospace)) {
+ visit_type_bool(v, "nospace", &obj->nospace, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "reason", &obj->reason, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_JOB_COMPLETED_arg_members(Visitor *v, q_obj_BLOCK_JOB_COMPLETED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockJobType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "len", &obj->len, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "error", &obj->has_error)) {
+ visit_type_str(v, "error", &obj->error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_JOB_CANCELLED_arg_members(Visitor *v, q_obj_BLOCK_JOB_CANCELLED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockJobType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "len", &obj->len, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(Visitor *v, q_obj_BLOCK_JOB_ERROR_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_IoOperationType(v, "operation", &obj->operation, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_BlockErrorAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_JOB_READY_arg_members(Visitor *v, q_obj_BLOCK_JOB_READY_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockJobType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "len", &obj->len, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BLOCK_JOB_PENDING_arg_members(Visitor *v, q_obj_BLOCK_JOB_PENDING_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockJobType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PreallocMode(Visitor *v, const char *name, PreallocMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &PreallocMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_BLOCK_WRITE_THRESHOLD_arg_members(Visitor *v, q_obj_BLOCK_WRITE_THRESHOLD_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "amount-exceeded", &obj->amount_exceeded, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "write-threshold", &obj->write_threshold, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_block_set_write_threshold_arg_members(Visitor *v, q_obj_block_set_write_threshold_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "write-threshold", &obj->write_threshold, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_x_blockdev_change_arg_members(Visitor *v, q_obj_x_blockdev_change_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "parent", &obj->parent, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "child", &obj->has_child)) {
+ visit_type_str(v, "child", &obj->child, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "node", &obj->has_node)) {
+ visit_type_str(v, "node", &obj->node, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_x_blockdev_set_iothread_arg_members(Visitor *v, q_obj_x_blockdev_set_iothread_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_StrOrNull(v, "iothread", &obj->iothread, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "force", &obj->has_force)) {
+ visit_type_bool(v, "force", &obj->force, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_block_core_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-block-core.h b/qemu2-auto-generated/qapi/qapi-visit-block-core.h
new file mode 100644
index 0000000000..e81cc3c8a3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-block-core.h
@@ -0,0 +1,416 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_BLOCK_CORE_H
+#define QAPI_VISIT_BLOCK_CORE_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-block-core.h"
+
+#include "qapi-visit-common.h"
+#include "qapi-visit-crypto.h"
+#include "qapi-visit-sockets.h"
+
+void visit_type_SnapshotInfo_members(Visitor *v, SnapshotInfo *obj, Error **errp);
+void visit_type_SnapshotInfo(Visitor *v, const char *name, SnapshotInfo **obj, Error **errp);
+
+void visit_type_ImageInfoSpecificQCow2EncryptionBase_members(Visitor *v, ImageInfoSpecificQCow2EncryptionBase *obj, Error **errp);
+void visit_type_ImageInfoSpecificQCow2EncryptionBase(Visitor *v, const char *name, ImageInfoSpecificQCow2EncryptionBase **obj, Error **errp);
+
+void visit_type_ImageInfoSpecificQCow2Encryption_members(Visitor *v, ImageInfoSpecificQCow2Encryption *obj, Error **errp);
+void visit_type_ImageInfoSpecificQCow2Encryption(Visitor *v, const char *name, ImageInfoSpecificQCow2Encryption **obj, Error **errp);
+
+void visit_type_ImageInfoSpecificQCow2_members(Visitor *v, ImageInfoSpecificQCow2 *obj, Error **errp);
+void visit_type_ImageInfoSpecificQCow2(Visitor *v, const char *name, ImageInfoSpecificQCow2 **obj, Error **errp);
+void visit_type_ImageInfoList(Visitor *v, const char *name, ImageInfoList **obj, Error **errp);
+
+void visit_type_ImageInfoSpecificVmdk_members(Visitor *v, ImageInfoSpecificVmdk *obj, Error **errp);
+void visit_type_ImageInfoSpecificVmdk(Visitor *v, const char *name, ImageInfoSpecificVmdk **obj, Error **errp);
+
+void visit_type_q_obj_ImageInfoSpecificQCow2_wrapper_members(Visitor *v, q_obj_ImageInfoSpecificQCow2_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ImageInfoSpecificVmdk_wrapper_members(Visitor *v, q_obj_ImageInfoSpecificVmdk_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_QCryptoBlockInfoLUKS_wrapper_members(Visitor *v, q_obj_QCryptoBlockInfoLUKS_wrapper *obj, Error **errp);
+void visit_type_ImageInfoSpecificKind(Visitor *v, const char *name, ImageInfoSpecificKind *obj, Error **errp);
+
+void visit_type_ImageInfoSpecific_members(Visitor *v, ImageInfoSpecific *obj, Error **errp);
+void visit_type_ImageInfoSpecific(Visitor *v, const char *name, ImageInfoSpecific **obj, Error **errp);
+void visit_type_SnapshotInfoList(Visitor *v, const char *name, SnapshotInfoList **obj, Error **errp);
+
+void visit_type_ImageInfo_members(Visitor *v, ImageInfo *obj, Error **errp);
+void visit_type_ImageInfo(Visitor *v, const char *name, ImageInfo **obj, Error **errp);
+
+void visit_type_ImageCheck_members(Visitor *v, ImageCheck *obj, Error **errp);
+void visit_type_ImageCheck(Visitor *v, const char *name, ImageCheck **obj, Error **errp);
+
+void visit_type_MapEntry_members(Visitor *v, MapEntry *obj, Error **errp);
+void visit_type_MapEntry(Visitor *v, const char *name, MapEntry **obj, Error **errp);
+
+void visit_type_BlockdevCacheInfo_members(Visitor *v, BlockdevCacheInfo *obj, Error **errp);
+void visit_type_BlockdevCacheInfo(Visitor *v, const char *name, BlockdevCacheInfo **obj, Error **errp);
+
+void visit_type_BlockDeviceInfo_members(Visitor *v, BlockDeviceInfo *obj, Error **errp);
+void visit_type_BlockDeviceInfo(Visitor *v, const char *name, BlockDeviceInfo **obj, Error **errp);
+void visit_type_BlockDeviceIoStatus(Visitor *v, const char *name, BlockDeviceIoStatus *obj, Error **errp);
+
+void visit_type_BlockDeviceMapEntry_members(Visitor *v, BlockDeviceMapEntry *obj, Error **errp);
+void visit_type_BlockDeviceMapEntry(Visitor *v, const char *name, BlockDeviceMapEntry **obj, Error **errp);
+void visit_type_DirtyBitmapStatus(Visitor *v, const char *name, DirtyBitmapStatus *obj, Error **errp);
+
+void visit_type_BlockDirtyInfo_members(Visitor *v, BlockDirtyInfo *obj, Error **errp);
+void visit_type_BlockDirtyInfo(Visitor *v, const char *name, BlockDirtyInfo **obj, Error **errp);
+
+void visit_type_BlockLatencyHistogramInfo_members(Visitor *v, BlockLatencyHistogramInfo *obj, Error **errp);
+void visit_type_BlockLatencyHistogramInfo(Visitor *v, const char *name, BlockLatencyHistogramInfo **obj, Error **errp);
+
+void visit_type_q_obj_x_block_latency_histogram_set_arg_members(Visitor *v, q_obj_x_block_latency_histogram_set_arg *obj, Error **errp);
+void visit_type_BlockDirtyInfoList(Visitor *v, const char *name, BlockDirtyInfoList **obj, Error **errp);
+
+void visit_type_BlockInfo_members(Visitor *v, BlockInfo *obj, Error **errp);
+void visit_type_BlockInfo(Visitor *v, const char *name, BlockInfo **obj, Error **errp);
+
+void visit_type_BlockMeasureInfo_members(Visitor *v, BlockMeasureInfo *obj, Error **errp);
+void visit_type_BlockMeasureInfo(Visitor *v, const char *name, BlockMeasureInfo **obj, Error **errp);
+void visit_type_BlockInfoList(Visitor *v, const char *name, BlockInfoList **obj, Error **errp);
+
+void visit_type_BlockDeviceTimedStats_members(Visitor *v, BlockDeviceTimedStats *obj, Error **errp);
+void visit_type_BlockDeviceTimedStats(Visitor *v, const char *name, BlockDeviceTimedStats **obj, Error **errp);
+void visit_type_BlockDeviceTimedStatsList(Visitor *v, const char *name, BlockDeviceTimedStatsList **obj, Error **errp);
+
+void visit_type_BlockDeviceStats_members(Visitor *v, BlockDeviceStats *obj, Error **errp);
+void visit_type_BlockDeviceStats(Visitor *v, const char *name, BlockDeviceStats **obj, Error **errp);
+
+void visit_type_BlockStats_members(Visitor *v, BlockStats *obj, Error **errp);
+void visit_type_BlockStats(Visitor *v, const char *name, BlockStats **obj, Error **errp);
+
+void visit_type_q_obj_query_blockstats_arg_members(Visitor *v, q_obj_query_blockstats_arg *obj, Error **errp);
+void visit_type_BlockStatsList(Visitor *v, const char *name, BlockStatsList **obj, Error **errp);
+void visit_type_BlockdevOnError(Visitor *v, const char *name, BlockdevOnError *obj, Error **errp);
+void visit_type_MirrorSyncMode(Visitor *v, const char *name, MirrorSyncMode *obj, Error **errp);
+void visit_type_BlockJobType(Visitor *v, const char *name, BlockJobType *obj, Error **errp);
+void visit_type_BlockJobVerb(Visitor *v, const char *name, BlockJobVerb *obj, Error **errp);
+void visit_type_BlockJobStatus(Visitor *v, const char *name, BlockJobStatus *obj, Error **errp);
+
+void visit_type_BlockJobInfo_members(Visitor *v, BlockJobInfo *obj, Error **errp);
+void visit_type_BlockJobInfo(Visitor *v, const char *name, BlockJobInfo **obj, Error **errp);
+void visit_type_BlockJobInfoList(Visitor *v, const char *name, BlockJobInfoList **obj, Error **errp);
+
+void visit_type_q_obj_block_passwd_arg_members(Visitor *v, q_obj_block_passwd_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_resize_arg_members(Visitor *v, q_obj_block_resize_arg *obj, Error **errp);
+void visit_type_NewImageMode(Visitor *v, const char *name, NewImageMode *obj, Error **errp);
+
+void visit_type_BlockdevSnapshotSync_members(Visitor *v, BlockdevSnapshotSync *obj, Error **errp);
+void visit_type_BlockdevSnapshotSync(Visitor *v, const char *name, BlockdevSnapshotSync **obj, Error **errp);
+
+void visit_type_BlockdevSnapshot_members(Visitor *v, BlockdevSnapshot *obj, Error **errp);
+void visit_type_BlockdevSnapshot(Visitor *v, const char *name, BlockdevSnapshot **obj, Error **errp);
+
+void visit_type_DriveBackup_members(Visitor *v, DriveBackup *obj, Error **errp);
+void visit_type_DriveBackup(Visitor *v, const char *name, DriveBackup **obj, Error **errp);
+
+void visit_type_BlockdevBackup_members(Visitor *v, BlockdevBackup *obj, Error **errp);
+void visit_type_BlockdevBackup(Visitor *v, const char *name, BlockdevBackup **obj, Error **errp);
+
+void visit_type_q_obj_change_backing_file_arg_members(Visitor *v, q_obj_change_backing_file_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_commit_arg_members(Visitor *v, q_obj_block_commit_arg *obj, Error **errp);
+void visit_type_BlockDeviceInfoList(Visitor *v, const char *name, BlockDeviceInfoList **obj, Error **errp);
+
+void visit_type_DriveMirror_members(Visitor *v, DriveMirror *obj, Error **errp);
+void visit_type_DriveMirror(Visitor *v, const char *name, DriveMirror **obj, Error **errp);
+
+void visit_type_BlockDirtyBitmap_members(Visitor *v, BlockDirtyBitmap *obj, Error **errp);
+void visit_type_BlockDirtyBitmap(Visitor *v, const char *name, BlockDirtyBitmap **obj, Error **errp);
+
+void visit_type_BlockDirtyBitmapAdd_members(Visitor *v, BlockDirtyBitmapAdd *obj, Error **errp);
+void visit_type_BlockDirtyBitmapAdd(Visitor *v, const char *name, BlockDirtyBitmapAdd **obj, Error **errp);
+
+void visit_type_BlockDirtyBitmapSha256_members(Visitor *v, BlockDirtyBitmapSha256 *obj, Error **errp);
+void visit_type_BlockDirtyBitmapSha256(Visitor *v, const char *name, BlockDirtyBitmapSha256 **obj, Error **errp);
+
+void visit_type_q_obj_blockdev_mirror_arg_members(Visitor *v, q_obj_blockdev_mirror_arg *obj, Error **errp);
+
+void visit_type_BlockIOThrottle_members(Visitor *v, BlockIOThrottle *obj, Error **errp);
+void visit_type_BlockIOThrottle(Visitor *v, const char *name, BlockIOThrottle **obj, Error **errp);
+
+void visit_type_ThrottleLimits_members(Visitor *v, ThrottleLimits *obj, Error **errp);
+void visit_type_ThrottleLimits(Visitor *v, const char *name, ThrottleLimits **obj, Error **errp);
+
+void visit_type_q_obj_block_stream_arg_members(Visitor *v, q_obj_block_stream_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_set_speed_arg_members(Visitor *v, q_obj_block_job_set_speed_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_cancel_arg_members(Visitor *v, q_obj_block_job_cancel_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_pause_arg_members(Visitor *v, q_obj_block_job_pause_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_resume_arg_members(Visitor *v, q_obj_block_job_resume_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_complete_arg_members(Visitor *v, q_obj_block_job_complete_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_dismiss_arg_members(Visitor *v, q_obj_block_job_dismiss_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_job_finalize_arg_members(Visitor *v, q_obj_block_job_finalize_arg *obj, Error **errp);
+void visit_type_BlockdevDiscardOptions(Visitor *v, const char *name, BlockdevDiscardOptions *obj, Error **errp);
+void visit_type_BlockdevDetectZeroesOptions(Visitor *v, const char *name, BlockdevDetectZeroesOptions *obj, Error **errp);
+void visit_type_BlockdevAioOptions(Visitor *v, const char *name, BlockdevAioOptions *obj, Error **errp);
+
+void visit_type_BlockdevCacheOptions_members(Visitor *v, BlockdevCacheOptions *obj, Error **errp);
+void visit_type_BlockdevCacheOptions(Visitor *v, const char *name, BlockdevCacheOptions **obj, Error **errp);
+void visit_type_BlockdevDriver(Visitor *v, const char *name, BlockdevDriver *obj, Error **errp);
+
+void visit_type_BlockdevOptionsFile_members(Visitor *v, BlockdevOptionsFile *obj, Error **errp);
+void visit_type_BlockdevOptionsFile(Visitor *v, const char *name, BlockdevOptionsFile **obj, Error **errp);
+
+void visit_type_BlockdevOptionsNull_members(Visitor *v, BlockdevOptionsNull *obj, Error **errp);
+void visit_type_BlockdevOptionsNull(Visitor *v, const char *name, BlockdevOptionsNull **obj, Error **errp);
+
+void visit_type_BlockdevOptionsNVMe_members(Visitor *v, BlockdevOptionsNVMe *obj, Error **errp);
+void visit_type_BlockdevOptionsNVMe(Visitor *v, const char *name, BlockdevOptionsNVMe **obj, Error **errp);
+
+void visit_type_BlockdevOptionsVVFAT_members(Visitor *v, BlockdevOptionsVVFAT *obj, Error **errp);
+void visit_type_BlockdevOptionsVVFAT(Visitor *v, const char *name, BlockdevOptionsVVFAT **obj, Error **errp);
+
+void visit_type_BlockdevOptionsGenericFormat_members(Visitor *v, BlockdevOptionsGenericFormat *obj, Error **errp);
+void visit_type_BlockdevOptionsGenericFormat(Visitor *v, const char *name, BlockdevOptionsGenericFormat **obj, Error **errp);
+
+void visit_type_BlockdevOptionsLUKS_members(Visitor *v, BlockdevOptionsLUKS *obj, Error **errp);
+void visit_type_BlockdevOptionsLUKS(Visitor *v, const char *name, BlockdevOptionsLUKS **obj, Error **errp);
+
+void visit_type_BlockdevOptionsGenericCOWFormat_members(Visitor *v, BlockdevOptionsGenericCOWFormat *obj, Error **errp);
+void visit_type_BlockdevOptionsGenericCOWFormat(Visitor *v, const char *name, BlockdevOptionsGenericCOWFormat **obj, Error **errp);
+void visit_type_Qcow2OverlapCheckMode(Visitor *v, const char *name, Qcow2OverlapCheckMode *obj, Error **errp);
+
+void visit_type_Qcow2OverlapCheckFlags_members(Visitor *v, Qcow2OverlapCheckFlags *obj, Error **errp);
+void visit_type_Qcow2OverlapCheckFlags(Visitor *v, const char *name, Qcow2OverlapCheckFlags **obj, Error **errp);
+void visit_type_Qcow2OverlapChecks(Visitor *v, const char *name, Qcow2OverlapChecks **obj, Error **errp);
+void visit_type_BlockdevQcowEncryptionFormat(Visitor *v, const char *name, BlockdevQcowEncryptionFormat *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevQcowEncryption_base_members(Visitor *v, q_obj_BlockdevQcowEncryption_base *obj, Error **errp);
+
+void visit_type_BlockdevQcowEncryption_members(Visitor *v, BlockdevQcowEncryption *obj, Error **errp);
+void visit_type_BlockdevQcowEncryption(Visitor *v, const char *name, BlockdevQcowEncryption **obj, Error **errp);
+
+void visit_type_BlockdevOptionsQcow_members(Visitor *v, BlockdevOptionsQcow *obj, Error **errp);
+void visit_type_BlockdevOptionsQcow(Visitor *v, const char *name, BlockdevOptionsQcow **obj, Error **errp);
+void visit_type_BlockdevQcow2EncryptionFormat(Visitor *v, const char *name, BlockdevQcow2EncryptionFormat *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevQcow2Encryption_base_members(Visitor *v, q_obj_BlockdevQcow2Encryption_base *obj, Error **errp);
+
+void visit_type_BlockdevQcow2Encryption_members(Visitor *v, BlockdevQcow2Encryption *obj, Error **errp);
+void visit_type_BlockdevQcow2Encryption(Visitor *v, const char *name, BlockdevQcow2Encryption **obj, Error **errp);
+
+void visit_type_BlockdevOptionsQcow2_members(Visitor *v, BlockdevOptionsQcow2 *obj, Error **errp);
+void visit_type_BlockdevOptionsQcow2(Visitor *v, const char *name, BlockdevOptionsQcow2 **obj, Error **errp);
+void visit_type_SshHostKeyCheckMode(Visitor *v, const char *name, SshHostKeyCheckMode *obj, Error **errp);
+void visit_type_SshHostKeyCheckHashType(Visitor *v, const char *name, SshHostKeyCheckHashType *obj, Error **errp);
+
+void visit_type_SshHostKeyHash_members(Visitor *v, SshHostKeyHash *obj, Error **errp);
+void visit_type_SshHostKeyHash(Visitor *v, const char *name, SshHostKeyHash **obj, Error **errp);
+
+void visit_type_SshHostKeyDummy_members(Visitor *v, SshHostKeyDummy *obj, Error **errp);
+void visit_type_SshHostKeyDummy(Visitor *v, const char *name, SshHostKeyDummy **obj, Error **errp);
+
+void visit_type_q_obj_SshHostKeyCheck_base_members(Visitor *v, q_obj_SshHostKeyCheck_base *obj, Error **errp);
+
+void visit_type_SshHostKeyCheck_members(Visitor *v, SshHostKeyCheck *obj, Error **errp);
+void visit_type_SshHostKeyCheck(Visitor *v, const char *name, SshHostKeyCheck **obj, Error **errp);
+
+void visit_type_BlockdevOptionsSsh_members(Visitor *v, BlockdevOptionsSsh *obj, Error **errp);
+void visit_type_BlockdevOptionsSsh(Visitor *v, const char *name, BlockdevOptionsSsh **obj, Error **errp);
+void visit_type_BlkdebugEvent(Visitor *v, const char *name, BlkdebugEvent *obj, Error **errp);
+
+void visit_type_BlkdebugInjectErrorOptions_members(Visitor *v, BlkdebugInjectErrorOptions *obj, Error **errp);
+void visit_type_BlkdebugInjectErrorOptions(Visitor *v, const char *name, BlkdebugInjectErrorOptions **obj, Error **errp);
+
+void visit_type_BlkdebugSetStateOptions_members(Visitor *v, BlkdebugSetStateOptions *obj, Error **errp);
+void visit_type_BlkdebugSetStateOptions(Visitor *v, const char *name, BlkdebugSetStateOptions **obj, Error **errp);
+void visit_type_BlkdebugInjectErrorOptionsList(Visitor *v, const char *name, BlkdebugInjectErrorOptionsList **obj, Error **errp);
+void visit_type_BlkdebugSetStateOptionsList(Visitor *v, const char *name, BlkdebugSetStateOptionsList **obj, Error **errp);
+
+void visit_type_BlockdevOptionsBlkdebug_members(Visitor *v, BlockdevOptionsBlkdebug *obj, Error **errp);
+void visit_type_BlockdevOptionsBlkdebug(Visitor *v, const char *name, BlockdevOptionsBlkdebug **obj, Error **errp);
+
+void visit_type_BlockdevOptionsBlkverify_members(Visitor *v, BlockdevOptionsBlkverify *obj, Error **errp);
+void visit_type_BlockdevOptionsBlkverify(Visitor *v, const char *name, BlockdevOptionsBlkverify **obj, Error **errp);
+void visit_type_QuorumReadPattern(Visitor *v, const char *name, QuorumReadPattern *obj, Error **errp);
+void visit_type_BlockdevRefList(Visitor *v, const char *name, BlockdevRefList **obj, Error **errp);
+
+void visit_type_BlockdevOptionsQuorum_members(Visitor *v, BlockdevOptionsQuorum *obj, Error **errp);
+void visit_type_BlockdevOptionsQuorum(Visitor *v, const char *name, BlockdevOptionsQuorum **obj, Error **errp);
+void visit_type_SocketAddressList(Visitor *v, const char *name, SocketAddressList **obj, Error **errp);
+
+void visit_type_BlockdevOptionsGluster_members(Visitor *v, BlockdevOptionsGluster *obj, Error **errp);
+void visit_type_BlockdevOptionsGluster(Visitor *v, const char *name, BlockdevOptionsGluster **obj, Error **errp);
+void visit_type_IscsiTransport(Visitor *v, const char *name, IscsiTransport *obj, Error **errp);
+void visit_type_IscsiHeaderDigest(Visitor *v, const char *name, IscsiHeaderDigest *obj, Error **errp);
+
+void visit_type_BlockdevOptionsIscsi_members(Visitor *v, BlockdevOptionsIscsi *obj, Error **errp);
+void visit_type_BlockdevOptionsIscsi(Visitor *v, const char *name, BlockdevOptionsIscsi **obj, Error **errp);
+void visit_type_InetSocketAddressBaseList(Visitor *v, const char *name, InetSocketAddressBaseList **obj, Error **errp);
+
+void visit_type_BlockdevOptionsRbd_members(Visitor *v, BlockdevOptionsRbd *obj, Error **errp);
+void visit_type_BlockdevOptionsRbd(Visitor *v, const char *name, BlockdevOptionsRbd **obj, Error **errp);
+
+void visit_type_BlockdevOptionsSheepdog_members(Visitor *v, BlockdevOptionsSheepdog *obj, Error **errp);
+void visit_type_BlockdevOptionsSheepdog(Visitor *v, const char *name, BlockdevOptionsSheepdog **obj, Error **errp);
+void visit_type_ReplicationMode(Visitor *v, const char *name, ReplicationMode *obj, Error **errp);
+
+void visit_type_BlockdevOptionsReplication_members(Visitor *v, BlockdevOptionsReplication *obj, Error **errp);
+void visit_type_BlockdevOptionsReplication(Visitor *v, const char *name, BlockdevOptionsReplication **obj, Error **errp);
+void visit_type_NFSTransport(Visitor *v, const char *name, NFSTransport *obj, Error **errp);
+
+void visit_type_NFSServer_members(Visitor *v, NFSServer *obj, Error **errp);
+void visit_type_NFSServer(Visitor *v, const char *name, NFSServer **obj, Error **errp);
+
+void visit_type_BlockdevOptionsNfs_members(Visitor *v, BlockdevOptionsNfs *obj, Error **errp);
+void visit_type_BlockdevOptionsNfs(Visitor *v, const char *name, BlockdevOptionsNfs **obj, Error **errp);
+
+void visit_type_BlockdevOptionsCurlBase_members(Visitor *v, BlockdevOptionsCurlBase *obj, Error **errp);
+void visit_type_BlockdevOptionsCurlBase(Visitor *v, const char *name, BlockdevOptionsCurlBase **obj, Error **errp);
+
+void visit_type_BlockdevOptionsCurlHttp_members(Visitor *v, BlockdevOptionsCurlHttp *obj, Error **errp);
+void visit_type_BlockdevOptionsCurlHttp(Visitor *v, const char *name, BlockdevOptionsCurlHttp **obj, Error **errp);
+
+void visit_type_BlockdevOptionsCurlHttps_members(Visitor *v, BlockdevOptionsCurlHttps *obj, Error **errp);
+void visit_type_BlockdevOptionsCurlHttps(Visitor *v, const char *name, BlockdevOptionsCurlHttps **obj, Error **errp);
+
+void visit_type_BlockdevOptionsCurlFtp_members(Visitor *v, BlockdevOptionsCurlFtp *obj, Error **errp);
+void visit_type_BlockdevOptionsCurlFtp(Visitor *v, const char *name, BlockdevOptionsCurlFtp **obj, Error **errp);
+
+void visit_type_BlockdevOptionsCurlFtps_members(Visitor *v, BlockdevOptionsCurlFtps *obj, Error **errp);
+void visit_type_BlockdevOptionsCurlFtps(Visitor *v, const char *name, BlockdevOptionsCurlFtps **obj, Error **errp);
+
+void visit_type_BlockdevOptionsNbd_members(Visitor *v, BlockdevOptionsNbd *obj, Error **errp);
+void visit_type_BlockdevOptionsNbd(Visitor *v, const char *name, BlockdevOptionsNbd **obj, Error **errp);
+
+void visit_type_BlockdevOptionsRaw_members(Visitor *v, BlockdevOptionsRaw *obj, Error **errp);
+void visit_type_BlockdevOptionsRaw(Visitor *v, const char *name, BlockdevOptionsRaw **obj, Error **errp);
+
+void visit_type_BlockdevOptionsVxHS_members(Visitor *v, BlockdevOptionsVxHS *obj, Error **errp);
+void visit_type_BlockdevOptionsVxHS(Visitor *v, const char *name, BlockdevOptionsVxHS **obj, Error **errp);
+
+void visit_type_BlockdevOptionsThrottle_members(Visitor *v, BlockdevOptionsThrottle *obj, Error **errp);
+void visit_type_BlockdevOptionsThrottle(Visitor *v, const char *name, BlockdevOptionsThrottle **obj, Error **errp);
+
+void visit_type_q_obj_BlockdevOptions_base_members(Visitor *v, q_obj_BlockdevOptions_base *obj, Error **errp);
+
+void visit_type_BlockdevOptions_members(Visitor *v, BlockdevOptions *obj, Error **errp);
+void visit_type_BlockdevOptions(Visitor *v, const char *name, BlockdevOptions **obj, Error **errp);
+void visit_type_BlockdevRef(Visitor *v, const char *name, BlockdevRef **obj, Error **errp);
+void visit_type_BlockdevRefOrNull(Visitor *v, const char *name, BlockdevRefOrNull **obj, Error **errp);
+
+void visit_type_q_obj_blockdev_del_arg_members(Visitor *v, q_obj_blockdev_del_arg *obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsFile_members(Visitor *v, BlockdevCreateOptionsFile *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsFile(Visitor *v, const char *name, BlockdevCreateOptionsFile **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsGluster_members(Visitor *v, BlockdevCreateOptionsGluster *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsGluster(Visitor *v, const char *name, BlockdevCreateOptionsGluster **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsLUKS_members(Visitor *v, BlockdevCreateOptionsLUKS *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsLUKS(Visitor *v, const char *name, BlockdevCreateOptionsLUKS **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsNfs_members(Visitor *v, BlockdevCreateOptionsNfs *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsNfs(Visitor *v, const char *name, BlockdevCreateOptionsNfs **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsParallels_members(Visitor *v, BlockdevCreateOptionsParallels *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsParallels(Visitor *v, const char *name, BlockdevCreateOptionsParallels **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsQcow_members(Visitor *v, BlockdevCreateOptionsQcow *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsQcow(Visitor *v, const char *name, BlockdevCreateOptionsQcow **obj, Error **errp);
+void visit_type_BlockdevQcow2Version(Visitor *v, const char *name, BlockdevQcow2Version *obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsQcow2_members(Visitor *v, BlockdevCreateOptionsQcow2 *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsQcow2(Visitor *v, const char *name, BlockdevCreateOptionsQcow2 **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsQed_members(Visitor *v, BlockdevCreateOptionsQed *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsQed(Visitor *v, const char *name, BlockdevCreateOptionsQed **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsRbd_members(Visitor *v, BlockdevCreateOptionsRbd *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsRbd(Visitor *v, const char *name, BlockdevCreateOptionsRbd **obj, Error **errp);
+void visit_type_SheepdogRedundancyType(Visitor *v, const char *name, SheepdogRedundancyType *obj, Error **errp);
+
+void visit_type_SheepdogRedundancyFull_members(Visitor *v, SheepdogRedundancyFull *obj, Error **errp);
+void visit_type_SheepdogRedundancyFull(Visitor *v, const char *name, SheepdogRedundancyFull **obj, Error **errp);
+
+void visit_type_SheepdogRedundancyErasureCoded_members(Visitor *v, SheepdogRedundancyErasureCoded *obj, Error **errp);
+void visit_type_SheepdogRedundancyErasureCoded(Visitor *v, const char *name, SheepdogRedundancyErasureCoded **obj, Error **errp);
+
+void visit_type_q_obj_SheepdogRedundancy_base_members(Visitor *v, q_obj_SheepdogRedundancy_base *obj, Error **errp);
+
+void visit_type_SheepdogRedundancy_members(Visitor *v, SheepdogRedundancy *obj, Error **errp);
+void visit_type_SheepdogRedundancy(Visitor *v, const char *name, SheepdogRedundancy **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsSheepdog_members(Visitor *v, BlockdevCreateOptionsSheepdog *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsSheepdog(Visitor *v, const char *name, BlockdevCreateOptionsSheepdog **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsSsh_members(Visitor *v, BlockdevCreateOptionsSsh *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsSsh(Visitor *v, const char *name, BlockdevCreateOptionsSsh **obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsVdi_members(Visitor *v, BlockdevCreateOptionsVdi *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsVdi(Visitor *v, const char *name, BlockdevCreateOptionsVdi **obj, Error **errp);
+void visit_type_BlockdevVhdxSubformat(Visitor *v, const char *name, BlockdevVhdxSubformat *obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsVhdx_members(Visitor *v, BlockdevCreateOptionsVhdx *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsVhdx(Visitor *v, const char *name, BlockdevCreateOptionsVhdx **obj, Error **errp);
+void visit_type_BlockdevVpcSubformat(Visitor *v, const char *name, BlockdevVpcSubformat *obj, Error **errp);
+
+void visit_type_BlockdevCreateOptionsVpc_members(Visitor *v, BlockdevCreateOptionsVpc *obj, Error **errp);
+void visit_type_BlockdevCreateOptionsVpc(Visitor *v, const char *name, BlockdevCreateOptionsVpc **obj, Error **errp);
+
+void visit_type_BlockdevCreateNotSupported_members(Visitor *v, BlockdevCreateNotSupported *obj, Error **errp);
+void visit_type_BlockdevCreateNotSupported(Visitor *v, const char *name, BlockdevCreateNotSupported **obj, Error **errp);
+
+void visit_type_q_obj_BlockdevCreateOptions_base_members(Visitor *v, q_obj_BlockdevCreateOptions_base *obj, Error **errp);
+
+void visit_type_BlockdevCreateOptions_members(Visitor *v, BlockdevCreateOptions *obj, Error **errp);
+void visit_type_BlockdevCreateOptions(Visitor *v, const char *name, BlockdevCreateOptions **obj, Error **errp);
+
+void visit_type_q_obj_blockdev_open_tray_arg_members(Visitor *v, q_obj_blockdev_open_tray_arg *obj, Error **errp);
+
+void visit_type_q_obj_blockdev_close_tray_arg_members(Visitor *v, q_obj_blockdev_close_tray_arg *obj, Error **errp);
+
+void visit_type_q_obj_blockdev_remove_medium_arg_members(Visitor *v, q_obj_blockdev_remove_medium_arg *obj, Error **errp);
+
+void visit_type_q_obj_blockdev_insert_medium_arg_members(Visitor *v, q_obj_blockdev_insert_medium_arg *obj, Error **errp);
+void visit_type_BlockdevChangeReadOnlyMode(Visitor *v, const char *name, BlockdevChangeReadOnlyMode *obj, Error **errp);
+
+void visit_type_q_obj_blockdev_change_medium_arg_members(Visitor *v, q_obj_blockdev_change_medium_arg *obj, Error **errp);
+void visit_type_BlockErrorAction(Visitor *v, const char *name, BlockErrorAction *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_IMAGE_CORRUPTED_arg_members(Visitor *v, q_obj_BLOCK_IMAGE_CORRUPTED_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_IO_ERROR_arg_members(Visitor *v, q_obj_BLOCK_IO_ERROR_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_JOB_COMPLETED_arg_members(Visitor *v, q_obj_BLOCK_JOB_COMPLETED_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_JOB_CANCELLED_arg_members(Visitor *v, q_obj_BLOCK_JOB_CANCELLED_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_JOB_ERROR_arg_members(Visitor *v, q_obj_BLOCK_JOB_ERROR_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_JOB_READY_arg_members(Visitor *v, q_obj_BLOCK_JOB_READY_arg *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_JOB_PENDING_arg_members(Visitor *v, q_obj_BLOCK_JOB_PENDING_arg *obj, Error **errp);
+void visit_type_PreallocMode(Visitor *v, const char *name, PreallocMode *obj, Error **errp);
+
+void visit_type_q_obj_BLOCK_WRITE_THRESHOLD_arg_members(Visitor *v, q_obj_BLOCK_WRITE_THRESHOLD_arg *obj, Error **errp);
+
+void visit_type_q_obj_block_set_write_threshold_arg_members(Visitor *v, q_obj_block_set_write_threshold_arg *obj, Error **errp);
+
+void visit_type_q_obj_x_blockdev_change_arg_members(Visitor *v, q_obj_x_blockdev_change_arg *obj, Error **errp);
+
+void visit_type_q_obj_x_blockdev_set_iothread_arg_members(Visitor *v, q_obj_x_blockdev_set_iothread_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_BLOCK_CORE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-block.c b/qemu2-auto-generated/qapi/qapi-visit-block.c
new file mode 100644
index 0000000000..cd60eaa747
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-block.c
@@ -0,0 +1,278 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-block.h"
+
+void visit_type_BiosAtaTranslation(Visitor *v, const char *name, BiosAtaTranslation *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &BiosAtaTranslation_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_FloppyDriveType(Visitor *v, const char *name, FloppyDriveType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &FloppyDriveType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_BlockdevSnapshotInternal_members(Visitor *v, BlockdevSnapshotInternal *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BlockdevSnapshotInternal(Visitor *v, const char *name, BlockdevSnapshotInternal **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BlockdevSnapshotInternal), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BlockdevSnapshotInternal_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BlockdevSnapshotInternal(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_blockdev_snapshot_delete_internal_sync_arg_members(Visitor *v, q_obj_blockdev_snapshot_delete_internal_sync_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_eject_arg_members(Visitor *v, q_obj_eject_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "force", &obj->has_force)) {
+ visit_type_bool(v, "force", &obj->force, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_nbd_server_start_arg_members(Visitor *v, q_obj_nbd_server_start_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SocketAddressLegacy(v, "addr", &obj->addr, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_nbd_server_add_arg_members(Visitor *v, q_obj_nbd_server_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "writable", &obj->has_writable)) {
+ visit_type_bool(v, "writable", &obj->writable, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NbdServerRemoveMode(Visitor *v, const char *name, NbdServerRemoveMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NbdServerRemoveMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_nbd_server_remove_arg_members(Visitor *v, q_obj_nbd_server_remove_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "mode", &obj->has_mode)) {
+ visit_type_NbdServerRemoveMode(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_DEVICE_TRAY_MOVED_arg_members(Visitor *v, q_obj_DEVICE_TRAY_MOVED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "tray-open", &obj->tray_open, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QuorumOpType(Visitor *v, const char *name, QuorumOpType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QuorumOpType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_QUORUM_FAILURE_arg_members(Visitor *v, q_obj_QUORUM_FAILURE_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "reference", &obj->reference, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "sector-num", &obj->sector_num, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "sectors-count", &obj->sectors_count, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_QUORUM_REPORT_BAD_arg_members(Visitor *v, q_obj_QUORUM_REPORT_BAD_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QuorumOpType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "error", &obj->has_error)) {
+ visit_type_str(v, "error", &obj->error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "node-name", &obj->node_name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "sector-num", &obj->sector_num, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "sectors-count", &obj->sectors_count, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_block_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-block.h b/qemu2-auto-generated/qapi/qapi-visit-block.h
new file mode 100644
index 0000000000..a26003a5df
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-block.h
@@ -0,0 +1,44 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_BLOCK_H
+#define QAPI_VISIT_BLOCK_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-block.h"
+
+#include "qapi-visit-block-core.h"
+void visit_type_BiosAtaTranslation(Visitor *v, const char *name, BiosAtaTranslation *obj, Error **errp);
+void visit_type_FloppyDriveType(Visitor *v, const char *name, FloppyDriveType *obj, Error **errp);
+
+void visit_type_BlockdevSnapshotInternal_members(Visitor *v, BlockdevSnapshotInternal *obj, Error **errp);
+void visit_type_BlockdevSnapshotInternal(Visitor *v, const char *name, BlockdevSnapshotInternal **obj, Error **errp);
+
+void visit_type_q_obj_blockdev_snapshot_delete_internal_sync_arg_members(Visitor *v, q_obj_blockdev_snapshot_delete_internal_sync_arg *obj, Error **errp);
+
+void visit_type_q_obj_eject_arg_members(Visitor *v, q_obj_eject_arg *obj, Error **errp);
+
+void visit_type_q_obj_nbd_server_start_arg_members(Visitor *v, q_obj_nbd_server_start_arg *obj, Error **errp);
+
+void visit_type_q_obj_nbd_server_add_arg_members(Visitor *v, q_obj_nbd_server_add_arg *obj, Error **errp);
+void visit_type_NbdServerRemoveMode(Visitor *v, const char *name, NbdServerRemoveMode *obj, Error **errp);
+
+void visit_type_q_obj_nbd_server_remove_arg_members(Visitor *v, q_obj_nbd_server_remove_arg *obj, Error **errp);
+
+void visit_type_q_obj_DEVICE_TRAY_MOVED_arg_members(Visitor *v, q_obj_DEVICE_TRAY_MOVED_arg *obj, Error **errp);
+void visit_type_QuorumOpType(Visitor *v, const char *name, QuorumOpType *obj, Error **errp);
+
+void visit_type_q_obj_QUORUM_FAILURE_arg_members(Visitor *v, q_obj_QUORUM_FAILURE_arg *obj, Error **errp);
+
+void visit_type_q_obj_QUORUM_REPORT_BAD_arg_members(Visitor *v, q_obj_QUORUM_REPORT_BAD_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_BLOCK_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-char.c b/qemu2-auto-generated/qapi/qapi-visit-char.c
new file mode 100644
index 0000000000..77efc571e6
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-char.c
@@ -0,0 +1,1152 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-char.h"
+
+void visit_type_ChardevInfo_members(Visitor *v, ChardevInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "label", &obj->label, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "frontend-open", &obj->frontend_open, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevInfo(Visitor *v, const char *name, ChardevInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevInfoList(Visitor *v, const char *name, ChardevInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ChardevInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ChardevInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ChardevInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevBackendInfo_members(Visitor *v, ChardevBackendInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevBackendInfo(Visitor *v, const char *name, ChardevBackendInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevBackendInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevBackendInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevBackendInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevBackendInfoList(Visitor *v, const char *name, ChardevBackendInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ChardevBackendInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ChardevBackendInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ChardevBackendInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevBackendInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DataFormat(Visitor *v, const char *name, DataFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &DataFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_ringbuf_write_arg_members(Visitor *v, q_obj_ringbuf_write_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_DataFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ringbuf_read_arg_members(Visitor *v, q_obj_ringbuf_read_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_DataFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevCommon_members(Visitor *v, ChardevCommon *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "logfile", &obj->has_logfile)) {
+ visit_type_str(v, "logfile", &obj->logfile, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "logappend", &obj->has_logappend)) {
+ visit_type_bool(v, "logappend", &obj->logappend, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevCommon(Visitor *v, const char *name, ChardevCommon **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevCommon), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevCommon_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevCommon(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevFile_members(Visitor *v, ChardevFile *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "in", &obj->has_in)) {
+ visit_type_str(v, "in", &obj->in, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "out", &obj->out, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "append", &obj->has_append)) {
+ visit_type_bool(v, "append", &obj->append, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevFile(Visitor *v, const char *name, ChardevFile **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevFile), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevFile_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevFile(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevHostdev_members(Visitor *v, ChardevHostdev *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevHostdev(Visitor *v, const char *name, ChardevHostdev **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevHostdev), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevHostdev_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevHostdev(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSocket_members(Visitor *v, ChardevSocket *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SocketAddressLegacy(v, "addr", &obj->addr, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "server", &obj->has_server)) {
+ visit_type_bool(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "wait", &obj->has_wait)) {
+ visit_type_bool(v, "wait", &obj->wait, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "nodelay", &obj->has_nodelay)) {
+ visit_type_bool(v, "nodelay", &obj->nodelay, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "telnet", &obj->has_telnet)) {
+ visit_type_bool(v, "telnet", &obj->telnet, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tn3270", &obj->has_tn3270)) {
+ visit_type_bool(v, "tn3270", &obj->tn3270, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "reconnect", &obj->has_reconnect)) {
+ visit_type_int(v, "reconnect", &obj->reconnect, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSocket(Visitor *v, const char *name, ChardevSocket **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevSocket), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevSocket_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevSocket(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevUdp_members(Visitor *v, ChardevUdp *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SocketAddressLegacy(v, "remote", &obj->remote, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "local", &obj->has_local)) {
+ visit_type_SocketAddressLegacy(v, "local", &obj->local, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevUdp(Visitor *v, const char *name, ChardevUdp **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevUdp), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevUdp_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevUdp(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevMux_members(Visitor *v, ChardevMux *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "chardev", &obj->chardev, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevMux(Visitor *v, const char *name, ChardevMux **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevMux), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevMux_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevMux(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevStdio_members(Visitor *v, ChardevStdio *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "signal", &obj->has_signal)) {
+ visit_type_bool(v, "signal", &obj->signal, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevStdio(Visitor *v, const char *name, ChardevStdio **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevStdio), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevStdio_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevStdio(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpiceChannel_members(Visitor *v, ChardevSpiceChannel *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpiceChannel(Visitor *v, const char *name, ChardevSpiceChannel **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevSpiceChannel), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevSpiceChannel_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevSpiceChannel(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpicePort_members(Visitor *v, ChardevSpicePort *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "fqdn", &obj->fqdn, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevSpicePort(Visitor *v, const char *name, ChardevSpicePort **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevSpicePort), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevSpicePort_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevSpicePort(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevVC_members(Visitor *v, ChardevVC *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "width", &obj->has_width)) {
+ visit_type_int(v, "width", &obj->width, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "height", &obj->has_height)) {
+ visit_type_int(v, "height", &obj->height, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cols", &obj->has_cols)) {
+ visit_type_int(v, "cols", &obj->cols, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "rows", &obj->has_rows)) {
+ visit_type_int(v, "rows", &obj->rows, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevVC(Visitor *v, const char *name, ChardevVC **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevVC), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevVC_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevVC(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevRingbuf_members(Visitor *v, ChardevRingbuf *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon_members(v, (ChardevCommon *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "size", &obj->has_size)) {
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevRingbuf(Visitor *v, const char *name, ChardevRingbuf **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevRingbuf), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevRingbuf_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevRingbuf(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevFile_wrapper_members(Visitor *v, q_obj_ChardevFile_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevFile(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevHostdev_wrapper_members(Visitor *v, q_obj_ChardevHostdev_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevHostdev(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevSocket_wrapper_members(Visitor *v, q_obj_ChardevSocket_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevSocket(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevUdp_wrapper_members(Visitor *v, q_obj_ChardevUdp_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevUdp(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevCommon_wrapper_members(Visitor *v, q_obj_ChardevCommon_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevCommon(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevMux_wrapper_members(Visitor *v, q_obj_ChardevMux_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevMux(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevStdio_wrapper_members(Visitor *v, q_obj_ChardevStdio_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevStdio(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevSpiceChannel_wrapper_members(Visitor *v, q_obj_ChardevSpiceChannel_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevSpiceChannel(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevSpicePort_wrapper_members(Visitor *v, q_obj_ChardevSpicePort_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevSpicePort(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevVC_wrapper_members(Visitor *v, q_obj_ChardevVC_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevVC(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ChardevRingbuf_wrapper_members(Visitor *v, q_obj_ChardevRingbuf_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevRingbuf(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevBackendKind(Visitor *v, const char *name, ChardevBackendKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ChardevBackendKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_ChardevBackend_members(Visitor *v, ChardevBackend *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ChardevBackendKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case CHARDEV_BACKEND_KIND_FILE:
+ visit_type_q_obj_ChardevFile_wrapper_members(v, &obj->u.file, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SERIAL:
+ visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.serial, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PARALLEL:
+ visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.parallel, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PIPE:
+ visit_type_q_obj_ChardevHostdev_wrapper_members(v, &obj->u.pipe, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SOCKET:
+ visit_type_q_obj_ChardevSocket_wrapper_members(v, &obj->u.socket, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_UDP:
+ visit_type_q_obj_ChardevUdp_wrapper_members(v, &obj->u.udp, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_PTY:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.pty, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_NULL:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.null, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MUX:
+ visit_type_q_obj_ChardevMux_wrapper_members(v, &obj->u.mux, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MSMOUSE:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.msmouse, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_WCTABLET:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.wctablet, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_BRAILLE:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.braille, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_TESTDEV:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.testdev, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_STDIO:
+ visit_type_q_obj_ChardevStdio_wrapper_members(v, &obj->u.stdio, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_CONSOLE:
+ visit_type_q_obj_ChardevCommon_wrapper_members(v, &obj->u.console, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SPICEVMC:
+ visit_type_q_obj_ChardevSpiceChannel_wrapper_members(v, &obj->u.spicevmc, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_SPICEPORT:
+ visit_type_q_obj_ChardevSpicePort_wrapper_members(v, &obj->u.spiceport, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_VC:
+ visit_type_q_obj_ChardevVC_wrapper_members(v, &obj->u.vc, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_RINGBUF:
+ visit_type_q_obj_ChardevRingbuf_wrapper_members(v, &obj->u.ringbuf, &err);
+ break;
+ case CHARDEV_BACKEND_KIND_MEMORY:
+ visit_type_q_obj_ChardevRingbuf_wrapper_members(v, &obj->u.memory, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevBackend(Visitor *v, const char *name, ChardevBackend **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevBackend), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevBackend_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevBackend(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevReturn_members(Visitor *v, ChardevReturn *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "pty", &obj->has_pty)) {
+ visit_type_str(v, "pty", &obj->pty, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ChardevReturn(Visitor *v, const char *name, ChardevReturn **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ChardevReturn), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ChardevReturn_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ChardevReturn(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_chardev_add_arg_members(Visitor *v, q_obj_chardev_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ChardevBackend(v, "backend", &obj->backend, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_chardev_change_arg_members(Visitor *v, q_obj_chardev_change_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ChardevBackend(v, "backend", &obj->backend, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_chardev_remove_arg_members(Visitor *v, q_obj_chardev_remove_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_chardev_send_break_arg_members(Visitor *v, q_obj_chardev_send_break_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_VSERPORT_CHANGE_arg_members(Visitor *v, q_obj_VSERPORT_CHANGE_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "open", &obj->open, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_char_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-char.h b/qemu2-auto-generated/qapi/qapi-visit-char.h
new file mode 100644
index 0000000000..13693a83ab
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-char.h
@@ -0,0 +1,106 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_CHAR_H
+#define QAPI_VISIT_CHAR_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-char.h"
+
+#include "qapi-visit-sockets.h"
+
+void visit_type_ChardevInfo_members(Visitor *v, ChardevInfo *obj, Error **errp);
+void visit_type_ChardevInfo(Visitor *v, const char *name, ChardevInfo **obj, Error **errp);
+void visit_type_ChardevInfoList(Visitor *v, const char *name, ChardevInfoList **obj, Error **errp);
+
+void visit_type_ChardevBackendInfo_members(Visitor *v, ChardevBackendInfo *obj, Error **errp);
+void visit_type_ChardevBackendInfo(Visitor *v, const char *name, ChardevBackendInfo **obj, Error **errp);
+void visit_type_ChardevBackendInfoList(Visitor *v, const char *name, ChardevBackendInfoList **obj, Error **errp);
+void visit_type_DataFormat(Visitor *v, const char *name, DataFormat *obj, Error **errp);
+
+void visit_type_q_obj_ringbuf_write_arg_members(Visitor *v, q_obj_ringbuf_write_arg *obj, Error **errp);
+
+void visit_type_q_obj_ringbuf_read_arg_members(Visitor *v, q_obj_ringbuf_read_arg *obj, Error **errp);
+
+void visit_type_ChardevCommon_members(Visitor *v, ChardevCommon *obj, Error **errp);
+void visit_type_ChardevCommon(Visitor *v, const char *name, ChardevCommon **obj, Error **errp);
+
+void visit_type_ChardevFile_members(Visitor *v, ChardevFile *obj, Error **errp);
+void visit_type_ChardevFile(Visitor *v, const char *name, ChardevFile **obj, Error **errp);
+
+void visit_type_ChardevHostdev_members(Visitor *v, ChardevHostdev *obj, Error **errp);
+void visit_type_ChardevHostdev(Visitor *v, const char *name, ChardevHostdev **obj, Error **errp);
+
+void visit_type_ChardevSocket_members(Visitor *v, ChardevSocket *obj, Error **errp);
+void visit_type_ChardevSocket(Visitor *v, const char *name, ChardevSocket **obj, Error **errp);
+
+void visit_type_ChardevUdp_members(Visitor *v, ChardevUdp *obj, Error **errp);
+void visit_type_ChardevUdp(Visitor *v, const char *name, ChardevUdp **obj, Error **errp);
+
+void visit_type_ChardevMux_members(Visitor *v, ChardevMux *obj, Error **errp);
+void visit_type_ChardevMux(Visitor *v, const char *name, ChardevMux **obj, Error **errp);
+
+void visit_type_ChardevStdio_members(Visitor *v, ChardevStdio *obj, Error **errp);
+void visit_type_ChardevStdio(Visitor *v, const char *name, ChardevStdio **obj, Error **errp);
+
+void visit_type_ChardevSpiceChannel_members(Visitor *v, ChardevSpiceChannel *obj, Error **errp);
+void visit_type_ChardevSpiceChannel(Visitor *v, const char *name, ChardevSpiceChannel **obj, Error **errp);
+
+void visit_type_ChardevSpicePort_members(Visitor *v, ChardevSpicePort *obj, Error **errp);
+void visit_type_ChardevSpicePort(Visitor *v, const char *name, ChardevSpicePort **obj, Error **errp);
+
+void visit_type_ChardevVC_members(Visitor *v, ChardevVC *obj, Error **errp);
+void visit_type_ChardevVC(Visitor *v, const char *name, ChardevVC **obj, Error **errp);
+
+void visit_type_ChardevRingbuf_members(Visitor *v, ChardevRingbuf *obj, Error **errp);
+void visit_type_ChardevRingbuf(Visitor *v, const char *name, ChardevRingbuf **obj, Error **errp);
+
+void visit_type_q_obj_ChardevFile_wrapper_members(Visitor *v, q_obj_ChardevFile_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevHostdev_wrapper_members(Visitor *v, q_obj_ChardevHostdev_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevSocket_wrapper_members(Visitor *v, q_obj_ChardevSocket_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevUdp_wrapper_members(Visitor *v, q_obj_ChardevUdp_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevCommon_wrapper_members(Visitor *v, q_obj_ChardevCommon_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevMux_wrapper_members(Visitor *v, q_obj_ChardevMux_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevStdio_wrapper_members(Visitor *v, q_obj_ChardevStdio_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevSpiceChannel_wrapper_members(Visitor *v, q_obj_ChardevSpiceChannel_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevSpicePort_wrapper_members(Visitor *v, q_obj_ChardevSpicePort_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevVC_wrapper_members(Visitor *v, q_obj_ChardevVC_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_ChardevRingbuf_wrapper_members(Visitor *v, q_obj_ChardevRingbuf_wrapper *obj, Error **errp);
+void visit_type_ChardevBackendKind(Visitor *v, const char *name, ChardevBackendKind *obj, Error **errp);
+
+void visit_type_ChardevBackend_members(Visitor *v, ChardevBackend *obj, Error **errp);
+void visit_type_ChardevBackend(Visitor *v, const char *name, ChardevBackend **obj, Error **errp);
+
+void visit_type_ChardevReturn_members(Visitor *v, ChardevReturn *obj, Error **errp);
+void visit_type_ChardevReturn(Visitor *v, const char *name, ChardevReturn **obj, Error **errp);
+
+void visit_type_q_obj_chardev_add_arg_members(Visitor *v, q_obj_chardev_add_arg *obj, Error **errp);
+
+void visit_type_q_obj_chardev_change_arg_members(Visitor *v, q_obj_chardev_change_arg *obj, Error **errp);
+
+void visit_type_q_obj_chardev_remove_arg_members(Visitor *v, q_obj_chardev_remove_arg *obj, Error **errp);
+
+void visit_type_q_obj_chardev_send_break_arg_members(Visitor *v, q_obj_chardev_send_break_arg *obj, Error **errp);
+
+void visit_type_q_obj_VSERPORT_CHANGE_arg_members(Visitor *v, q_obj_VSERPORT_CHANGE_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_CHAR_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-common.c b/qemu2-auto-generated/qapi/qapi-visit-common.c
new file mode 100644
index 0000000000..eb18c2e363
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-common.c
@@ -0,0 +1,128 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-common.h"
+
+void visit_type_QapiErrorClass(Visitor *v, const char *name, QapiErrorClass *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QapiErrorClass_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_IoOperationType(Visitor *v, const char *name, IoOperationType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &IoOperationType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_OnOffAuto(Visitor *v, const char *name, OnOffAuto *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &OnOffAuto_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_OnOffSplit(Visitor *v, const char *name, OnOffSplit *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &OnOffSplit_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_String_members(Visitor *v, String *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "str", &obj->str, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_String(Visitor *v, const char *name, String **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(String), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_String_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_String(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_StrOrNull(Visitor *v, const char *name, StrOrNull **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_str(v, name, &(*obj)->u.s, &err);
+ break;
+ case QTYPE_QNULL:
+ visit_type_null(v, name, &(*obj)->u.n, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "StrOrNull");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_StrOrNull(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_OffAutoPCIBAR(Visitor *v, const char *name, OffAutoPCIBAR *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &OffAutoPCIBAR_lookup, errp);
+ *obj = value;
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_common_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-common.h b/qemu2-auto-generated/qapi/qapi-visit-common.h
new file mode 100644
index 0000000000..e911b78add
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-common.h
@@ -0,0 +1,29 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_COMMON_H
+#define QAPI_VISIT_COMMON_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-common.h"
+
+void visit_type_QapiErrorClass(Visitor *v, const char *name, QapiErrorClass *obj, Error **errp);
+void visit_type_IoOperationType(Visitor *v, const char *name, IoOperationType *obj, Error **errp);
+void visit_type_OnOffAuto(Visitor *v, const char *name, OnOffAuto *obj, Error **errp);
+void visit_type_OnOffSplit(Visitor *v, const char *name, OnOffSplit *obj, Error **errp);
+
+void visit_type_String_members(Visitor *v, String *obj, Error **errp);
+void visit_type_String(Visitor *v, const char *name, String **obj, Error **errp);
+void visit_type_StrOrNull(Visitor *v, const char *name, StrOrNull **obj, Error **errp);
+void visit_type_OffAutoPCIBAR(Visitor *v, const char *name, OffAutoPCIBAR *obj, Error **errp);
+
+#endif /* QAPI_VISIT_COMMON_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-crypto.c b/qemu2-auto-generated/qapi/qapi-visit-crypto.c
new file mode 100644
index 0000000000..21e91b1d90
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-crypto.c
@@ -0,0 +1,642 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-crypto.h"
+
+void visit_type_QCryptoTLSCredsEndpoint(Visitor *v, const char *name, QCryptoTLSCredsEndpoint *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoTLSCredsEndpoint_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoSecretFormat(Visitor *v, const char *name, QCryptoSecretFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoSecretFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoHashAlgorithm(Visitor *v, const char *name, QCryptoHashAlgorithm *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoHashAlgorithm_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoCipherAlgorithm(Visitor *v, const char *name, QCryptoCipherAlgorithm *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoCipherAlgorithm_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoCipherMode(Visitor *v, const char *name, QCryptoCipherMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoCipherMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoIVGenAlgorithm(Visitor *v, const char *name, QCryptoIVGenAlgorithm *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoIVGenAlgorithm_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoBlockFormat(Visitor *v, const char *name, QCryptoBlockFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QCryptoBlockFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_QCryptoBlockOptionsBase_members(Visitor *v, QCryptoBlockOptionsBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOptionsBase(Visitor *v, const char *name, QCryptoBlockOptionsBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockOptionsBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockOptionsBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockOptionsBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOptionsQCow_members(Visitor *v, QCryptoBlockOptionsQCow *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "key-secret", &obj->has_key_secret)) {
+ visit_type_str(v, "key-secret", &obj->key_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOptionsQCow(Visitor *v, const char *name, QCryptoBlockOptionsQCow **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockOptionsQCow), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockOptionsQCow_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockOptionsQCow(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOptionsLUKS_members(Visitor *v, QCryptoBlockOptionsLUKS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "key-secret", &obj->has_key_secret)) {
+ visit_type_str(v, "key-secret", &obj->key_secret, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOptionsLUKS(Visitor *v, const char *name, QCryptoBlockOptionsLUKS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockOptionsLUKS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockOptionsLUKS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockOptionsLUKS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockCreateOptionsLUKS_members(Visitor *v, QCryptoBlockCreateOptionsLUKS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockOptionsLUKS_members(v, (QCryptoBlockOptionsLUKS *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cipher-alg", &obj->has_cipher_alg)) {
+ visit_type_QCryptoCipherAlgorithm(v, "cipher-alg", &obj->cipher_alg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cipher-mode", &obj->has_cipher_mode)) {
+ visit_type_QCryptoCipherMode(v, "cipher-mode", &obj->cipher_mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ivgen-alg", &obj->has_ivgen_alg)) {
+ visit_type_QCryptoIVGenAlgorithm(v, "ivgen-alg", &obj->ivgen_alg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ivgen-hash-alg", &obj->has_ivgen_hash_alg)) {
+ visit_type_QCryptoHashAlgorithm(v, "ivgen-hash-alg", &obj->ivgen_hash_alg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "hash-alg", &obj->has_hash_alg)) {
+ visit_type_QCryptoHashAlgorithm(v, "hash-alg", &obj->hash_alg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "iter-time", &obj->has_iter_time)) {
+ visit_type_int(v, "iter-time", &obj->iter_time, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockCreateOptionsLUKS(Visitor *v, const char *name, QCryptoBlockCreateOptionsLUKS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockCreateOptionsLUKS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockCreateOptionsLUKS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockCreateOptionsLUKS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOpenOptions_members(Visitor *v, QCryptoBlockOpenOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockOptionsBase_members(v, (QCryptoBlockOptionsBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case Q_CRYPTO_BLOCK_FORMAT_QCOW:
+ visit_type_QCryptoBlockOptionsQCow_members(v, &obj->u.qcow, &err);
+ break;
+ case Q_CRYPTO_BLOCK_FORMAT_LUKS:
+ visit_type_QCryptoBlockOptionsLUKS_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockOpenOptions(Visitor *v, const char *name, QCryptoBlockOpenOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockOpenOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockOpenOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockOpenOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockCreateOptions_members(Visitor *v, QCryptoBlockCreateOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockOptionsBase_members(v, (QCryptoBlockOptionsBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case Q_CRYPTO_BLOCK_FORMAT_QCOW:
+ visit_type_QCryptoBlockOptionsQCow_members(v, &obj->u.qcow, &err);
+ break;
+ case Q_CRYPTO_BLOCK_FORMAT_LUKS:
+ visit_type_QCryptoBlockCreateOptionsLUKS_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockCreateOptions(Visitor *v, const char *name, QCryptoBlockCreateOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockCreateOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockCreateOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockCreateOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoBase_members(Visitor *v, QCryptoBlockInfoBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoBase(Visitor *v, const char *name, QCryptoBlockInfoBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockInfoBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockInfoBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfoBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoLUKSSlot_members(Visitor *v, QCryptoBlockInfoLUKSSlot *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "active", &obj->active, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "iters", &obj->has_iters)) {
+ visit_type_int(v, "iters", &obj->iters, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "stripes", &obj->has_stripes)) {
+ visit_type_int(v, "stripes", &obj->stripes, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "key-offset", &obj->key_offset, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoLUKSSlot(Visitor *v, const char *name, QCryptoBlockInfoLUKSSlot **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockInfoLUKSSlot), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockInfoLUKSSlot_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfoLUKSSlot(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoLUKSSlotList(Visitor *v, const char *name, QCryptoBlockInfoLUKSSlotList **obj, Error **errp)
+{
+ Error *err = NULL;
+ QCryptoBlockInfoLUKSSlotList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (QCryptoBlockInfoLUKSSlotList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_QCryptoBlockInfoLUKSSlot(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfoLUKSSlotList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoLUKS_members(Visitor *v, QCryptoBlockInfoLUKS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoCipherAlgorithm(v, "cipher-alg", &obj->cipher_alg, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_QCryptoCipherMode(v, "cipher-mode", &obj->cipher_mode, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_QCryptoIVGenAlgorithm(v, "ivgen-alg", &obj->ivgen_alg, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "ivgen-hash-alg", &obj->has_ivgen_hash_alg)) {
+ visit_type_QCryptoHashAlgorithm(v, "ivgen-hash-alg", &obj->ivgen_hash_alg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_QCryptoHashAlgorithm(v, "hash-alg", &obj->hash_alg, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "payload-offset", &obj->payload_offset, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "master-key-iters", &obj->master_key_iters, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "uuid", &obj->uuid, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_QCryptoBlockInfoLUKSSlotList(v, "slots", &obj->slots, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoLUKS(Visitor *v, const char *name, QCryptoBlockInfoLUKS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockInfoLUKS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockInfoLUKS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfoLUKS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoQCow_members(Visitor *v, QCryptoBlockInfoQCow *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfoQCow(Visitor *v, const char *name, QCryptoBlockInfoQCow **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockInfoQCow), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockInfoQCow_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfoQCow(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfo_members(Visitor *v, QCryptoBlockInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QCryptoBlockInfoBase_members(v, (QCryptoBlockInfoBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->format) {
+ case Q_CRYPTO_BLOCK_FORMAT_QCOW:
+ visit_type_QCryptoBlockInfoQCow_members(v, &obj->u.qcow, &err);
+ break;
+ case Q_CRYPTO_BLOCK_FORMAT_LUKS:
+ visit_type_QCryptoBlockInfoLUKS_members(v, &obj->u.luks, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QCryptoBlockInfo(Visitor *v, const char *name, QCryptoBlockInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(QCryptoBlockInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_QCryptoBlockInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QCryptoBlockInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_crypto_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-crypto.h b/qemu2-auto-generated/qapi/qapi-visit-crypto.h
new file mode 100644
index 0000000000..721d667dd9
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-crypto.h
@@ -0,0 +1,61 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_CRYPTO_H
+#define QAPI_VISIT_CRYPTO_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-crypto.h"
+
+void visit_type_QCryptoTLSCredsEndpoint(Visitor *v, const char *name, QCryptoTLSCredsEndpoint *obj, Error **errp);
+void visit_type_QCryptoSecretFormat(Visitor *v, const char *name, QCryptoSecretFormat *obj, Error **errp);
+void visit_type_QCryptoHashAlgorithm(Visitor *v, const char *name, QCryptoHashAlgorithm *obj, Error **errp);
+void visit_type_QCryptoCipherAlgorithm(Visitor *v, const char *name, QCryptoCipherAlgorithm *obj, Error **errp);
+void visit_type_QCryptoCipherMode(Visitor *v, const char *name, QCryptoCipherMode *obj, Error **errp);
+void visit_type_QCryptoIVGenAlgorithm(Visitor *v, const char *name, QCryptoIVGenAlgorithm *obj, Error **errp);
+void visit_type_QCryptoBlockFormat(Visitor *v, const char *name, QCryptoBlockFormat *obj, Error **errp);
+
+void visit_type_QCryptoBlockOptionsBase_members(Visitor *v, QCryptoBlockOptionsBase *obj, Error **errp);
+void visit_type_QCryptoBlockOptionsBase(Visitor *v, const char *name, QCryptoBlockOptionsBase **obj, Error **errp);
+
+void visit_type_QCryptoBlockOptionsQCow_members(Visitor *v, QCryptoBlockOptionsQCow *obj, Error **errp);
+void visit_type_QCryptoBlockOptionsQCow(Visitor *v, const char *name, QCryptoBlockOptionsQCow **obj, Error **errp);
+
+void visit_type_QCryptoBlockOptionsLUKS_members(Visitor *v, QCryptoBlockOptionsLUKS *obj, Error **errp);
+void visit_type_QCryptoBlockOptionsLUKS(Visitor *v, const char *name, QCryptoBlockOptionsLUKS **obj, Error **errp);
+
+void visit_type_QCryptoBlockCreateOptionsLUKS_members(Visitor *v, QCryptoBlockCreateOptionsLUKS *obj, Error **errp);
+void visit_type_QCryptoBlockCreateOptionsLUKS(Visitor *v, const char *name, QCryptoBlockCreateOptionsLUKS **obj, Error **errp);
+
+void visit_type_QCryptoBlockOpenOptions_members(Visitor *v, QCryptoBlockOpenOptions *obj, Error **errp);
+void visit_type_QCryptoBlockOpenOptions(Visitor *v, const char *name, QCryptoBlockOpenOptions **obj, Error **errp);
+
+void visit_type_QCryptoBlockCreateOptions_members(Visitor *v, QCryptoBlockCreateOptions *obj, Error **errp);
+void visit_type_QCryptoBlockCreateOptions(Visitor *v, const char *name, QCryptoBlockCreateOptions **obj, Error **errp);
+
+void visit_type_QCryptoBlockInfoBase_members(Visitor *v, QCryptoBlockInfoBase *obj, Error **errp);
+void visit_type_QCryptoBlockInfoBase(Visitor *v, const char *name, QCryptoBlockInfoBase **obj, Error **errp);
+
+void visit_type_QCryptoBlockInfoLUKSSlot_members(Visitor *v, QCryptoBlockInfoLUKSSlot *obj, Error **errp);
+void visit_type_QCryptoBlockInfoLUKSSlot(Visitor *v, const char *name, QCryptoBlockInfoLUKSSlot **obj, Error **errp);
+void visit_type_QCryptoBlockInfoLUKSSlotList(Visitor *v, const char *name, QCryptoBlockInfoLUKSSlotList **obj, Error **errp);
+
+void visit_type_QCryptoBlockInfoLUKS_members(Visitor *v, QCryptoBlockInfoLUKS *obj, Error **errp);
+void visit_type_QCryptoBlockInfoLUKS(Visitor *v, const char *name, QCryptoBlockInfoLUKS **obj, Error **errp);
+
+void visit_type_QCryptoBlockInfoQCow_members(Visitor *v, QCryptoBlockInfoQCow *obj, Error **errp);
+void visit_type_QCryptoBlockInfoQCow(Visitor *v, const char *name, QCryptoBlockInfoQCow **obj, Error **errp);
+
+void visit_type_QCryptoBlockInfo_members(Visitor *v, QCryptoBlockInfo *obj, Error **errp);
+void visit_type_QCryptoBlockInfo(Visitor *v, const char *name, QCryptoBlockInfo **obj, Error **errp);
+
+#endif /* QAPI_VISIT_CRYPTO_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-introspect.c b/qemu2-auto-generated/qapi/qapi-visit-introspect.c
new file mode 100644
index 0000000000..1a9417acba
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-introspect.c
@@ -0,0 +1,662 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-introspect.h"
+
+void visit_type_SchemaInfoList(Visitor *v, const char *name, SchemaInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SchemaInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SchemaInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SchemaInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaMetaType(Visitor *v, const char *name, SchemaMetaType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SchemaMetaType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_SchemaInfo_base_members(Visitor *v, q_obj_SchemaInfo_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SchemaMetaType(v, "meta-type", &obj->meta_type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfo_members(Visitor *v, SchemaInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_SchemaInfo_base_members(v, (q_obj_SchemaInfo_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->meta_type) {
+ case SCHEMA_META_TYPE_BUILTIN:
+ visit_type_SchemaInfoBuiltin_members(v, &obj->u.builtin, &err);
+ break;
+ case SCHEMA_META_TYPE_ENUM:
+ visit_type_SchemaInfoEnum_members(v, &obj->u.q_enum, &err);
+ break;
+ case SCHEMA_META_TYPE_ARRAY:
+ visit_type_SchemaInfoArray_members(v, &obj->u.array, &err);
+ break;
+ case SCHEMA_META_TYPE_OBJECT:
+ visit_type_SchemaInfoObject_members(v, &obj->u.object, &err);
+ break;
+ case SCHEMA_META_TYPE_ALTERNATE:
+ visit_type_SchemaInfoAlternate_members(v, &obj->u.alternate, &err);
+ break;
+ case SCHEMA_META_TYPE_COMMAND:
+ visit_type_SchemaInfoCommand_members(v, &obj->u.command, &err);
+ break;
+ case SCHEMA_META_TYPE_EVENT:
+ visit_type_SchemaInfoEvent_members(v, &obj->u.event, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfo(Visitor *v, const char *name, SchemaInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoBuiltin_members(Visitor *v, SchemaInfoBuiltin *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_JSONType(v, "json-type", &obj->json_type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoBuiltin(Visitor *v, const char *name, SchemaInfoBuiltin **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoBuiltin), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoBuiltin_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoBuiltin(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_JSONType(Visitor *v, const char *name, JSONType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &JSONType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SchemaInfoEnum_members(Visitor *v, SchemaInfoEnum *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_strList(v, "values", &obj->values, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoEnum(Visitor *v, const char *name, SchemaInfoEnum **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoEnum), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoEnum_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoEnum(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoArray_members(Visitor *v, SchemaInfoArray *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "element-type", &obj->element_type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoArray(Visitor *v, const char *name, SchemaInfoArray **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoArray), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoArray_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoArray(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectMemberList(Visitor *v, const char *name, SchemaInfoObjectMemberList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SchemaInfoObjectMemberList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SchemaInfoObjectMemberList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SchemaInfoObjectMember(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoObjectMemberList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectVariantList(Visitor *v, const char *name, SchemaInfoObjectVariantList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SchemaInfoObjectVariantList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SchemaInfoObjectVariantList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SchemaInfoObjectVariant(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoObjectVariantList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObject_members(Visitor *v, SchemaInfoObject *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SchemaInfoObjectMemberList(v, "members", &obj->members, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "tag", &obj->has_tag)) {
+ visit_type_str(v, "tag", &obj->tag, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "variants", &obj->has_variants)) {
+ visit_type_SchemaInfoObjectVariantList(v, "variants", &obj->variants, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObject(Visitor *v, const char *name, SchemaInfoObject **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoObject), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoObject_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoObject(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectMember_members(Visitor *v, SchemaInfoObjectMember *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "default", &obj->has_q_default)) {
+ visit_type_any(v, "default", &obj->q_default, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectMember(Visitor *v, const char *name, SchemaInfoObjectMember **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoObjectMember), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoObjectMember_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoObjectMember(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectVariant_members(Visitor *v, SchemaInfoObjectVariant *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "case", &obj->q_case, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoObjectVariant(Visitor *v, const char *name, SchemaInfoObjectVariant **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoObjectVariant), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoObjectVariant_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoObjectVariant(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoAlternateMemberList(Visitor *v, const char *name, SchemaInfoAlternateMemberList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SchemaInfoAlternateMemberList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SchemaInfoAlternateMemberList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SchemaInfoAlternateMember(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoAlternateMemberList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoAlternate_members(Visitor *v, SchemaInfoAlternate *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SchemaInfoAlternateMemberList(v, "members", &obj->members, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoAlternate(Visitor *v, const char *name, SchemaInfoAlternate **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoAlternate), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoAlternate_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoAlternate(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoAlternateMember_members(Visitor *v, SchemaInfoAlternateMember *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoAlternateMember(Visitor *v, const char *name, SchemaInfoAlternateMember **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoAlternateMember), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoAlternateMember_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoAlternateMember(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoCommand_members(Visitor *v, SchemaInfoCommand *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "arg-type", &obj->arg_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "ret-type", &obj->ret_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "allow-oob", &obj->allow_oob, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoCommand(Visitor *v, const char *name, SchemaInfoCommand **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoCommand), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoCommand_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoCommand(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoEvent_members(Visitor *v, SchemaInfoEvent *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "arg-type", &obj->arg_type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SchemaInfoEvent(Visitor *v, const char *name, SchemaInfoEvent **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SchemaInfoEvent), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SchemaInfoEvent_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SchemaInfoEvent(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_introspect_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-introspect.h b/qemu2-auto-generated/qapi/qapi-visit-introspect.h
new file mode 100644
index 0000000000..0950037afb
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-introspect.h
@@ -0,0 +1,61 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_INTROSPECT_H
+#define QAPI_VISIT_INTROSPECT_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-introspect.h"
+
+void visit_type_SchemaInfoList(Visitor *v, const char *name, SchemaInfoList **obj, Error **errp);
+void visit_type_SchemaMetaType(Visitor *v, const char *name, SchemaMetaType *obj, Error **errp);
+
+void visit_type_q_obj_SchemaInfo_base_members(Visitor *v, q_obj_SchemaInfo_base *obj, Error **errp);
+
+void visit_type_SchemaInfo_members(Visitor *v, SchemaInfo *obj, Error **errp);
+void visit_type_SchemaInfo(Visitor *v, const char *name, SchemaInfo **obj, Error **errp);
+
+void visit_type_SchemaInfoBuiltin_members(Visitor *v, SchemaInfoBuiltin *obj, Error **errp);
+void visit_type_SchemaInfoBuiltin(Visitor *v, const char *name, SchemaInfoBuiltin **obj, Error **errp);
+void visit_type_JSONType(Visitor *v, const char *name, JSONType *obj, Error **errp);
+
+void visit_type_SchemaInfoEnum_members(Visitor *v, SchemaInfoEnum *obj, Error **errp);
+void visit_type_SchemaInfoEnum(Visitor *v, const char *name, SchemaInfoEnum **obj, Error **errp);
+
+void visit_type_SchemaInfoArray_members(Visitor *v, SchemaInfoArray *obj, Error **errp);
+void visit_type_SchemaInfoArray(Visitor *v, const char *name, SchemaInfoArray **obj, Error **errp);
+void visit_type_SchemaInfoObjectMemberList(Visitor *v, const char *name, SchemaInfoObjectMemberList **obj, Error **errp);
+void visit_type_SchemaInfoObjectVariantList(Visitor *v, const char *name, SchemaInfoObjectVariantList **obj, Error **errp);
+
+void visit_type_SchemaInfoObject_members(Visitor *v, SchemaInfoObject *obj, Error **errp);
+void visit_type_SchemaInfoObject(Visitor *v, const char *name, SchemaInfoObject **obj, Error **errp);
+
+void visit_type_SchemaInfoObjectMember_members(Visitor *v, SchemaInfoObjectMember *obj, Error **errp);
+void visit_type_SchemaInfoObjectMember(Visitor *v, const char *name, SchemaInfoObjectMember **obj, Error **errp);
+
+void visit_type_SchemaInfoObjectVariant_members(Visitor *v, SchemaInfoObjectVariant *obj, Error **errp);
+void visit_type_SchemaInfoObjectVariant(Visitor *v, const char *name, SchemaInfoObjectVariant **obj, Error **errp);
+void visit_type_SchemaInfoAlternateMemberList(Visitor *v, const char *name, SchemaInfoAlternateMemberList **obj, Error **errp);
+
+void visit_type_SchemaInfoAlternate_members(Visitor *v, SchemaInfoAlternate *obj, Error **errp);
+void visit_type_SchemaInfoAlternate(Visitor *v, const char *name, SchemaInfoAlternate **obj, Error **errp);
+
+void visit_type_SchemaInfoAlternateMember_members(Visitor *v, SchemaInfoAlternateMember *obj, Error **errp);
+void visit_type_SchemaInfoAlternateMember(Visitor *v, const char *name, SchemaInfoAlternateMember **obj, Error **errp);
+
+void visit_type_SchemaInfoCommand_members(Visitor *v, SchemaInfoCommand *obj, Error **errp);
+void visit_type_SchemaInfoCommand(Visitor *v, const char *name, SchemaInfoCommand **obj, Error **errp);
+
+void visit_type_SchemaInfoEvent_members(Visitor *v, SchemaInfoEvent *obj, Error **errp);
+void visit_type_SchemaInfoEvent(Visitor *v, const char *name, SchemaInfoEvent **obj, Error **errp);
+
+#endif /* QAPI_VISIT_INTROSPECT_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-migration.c b/qemu2-auto-generated/qapi/qapi-visit-migration.c
new file mode 100644
index 0000000000..73c9dae775
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-migration.c
@@ -0,0 +1,867 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-migration.h"
+
+void visit_type_MigrationStats_members(Visitor *v, MigrationStats *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "transferred", &obj->transferred, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "remaining", &obj->remaining, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "total", &obj->total, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "duplicate", &obj->duplicate, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "skipped", &obj->skipped, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "normal", &obj->normal, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "normal-bytes", &obj->normal_bytes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "dirty-pages-rate", &obj->dirty_pages_rate, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_number(v, "mbps", &obj->mbps, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "dirty-sync-count", &obj->dirty_sync_count, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "postcopy-requests", &obj->postcopy_requests, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "page-size", &obj->page_size, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationStats(Visitor *v, const char *name, MigrationStats **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MigrationStats), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MigrationStats_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrationStats(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_XBZRLECacheStats_members(Visitor *v, XBZRLECacheStats *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "cache-size", &obj->cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "bytes", &obj->bytes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "pages", &obj->pages, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "cache-miss", &obj->cache_miss, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_number(v, "cache-miss-rate", &obj->cache_miss_rate, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "overflow", &obj->overflow, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_XBZRLECacheStats(Visitor *v, const char *name, XBZRLECacheStats **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(XBZRLECacheStats), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_XBZRLECacheStats_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_XBZRLECacheStats(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationStatus(Visitor *v, const char *name, MigrationStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MigrationStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_MigrationInfo_members(Visitor *v, MigrationInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "status", &obj->has_status)) {
+ visit_type_MigrationStatus(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ram", &obj->has_ram)) {
+ visit_type_MigrationStats(v, "ram", &obj->ram, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "disk", &obj->has_disk)) {
+ visit_type_MigrationStats(v, "disk", &obj->disk, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "xbzrle-cache", &obj->has_xbzrle_cache)) {
+ visit_type_XBZRLECacheStats(v, "xbzrle-cache", &obj->xbzrle_cache, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "total-time", &obj->has_total_time)) {
+ visit_type_int(v, "total-time", &obj->total_time, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "expected-downtime", &obj->has_expected_downtime)) {
+ visit_type_int(v, "expected-downtime", &obj->expected_downtime, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "downtime", &obj->has_downtime)) {
+ visit_type_int(v, "downtime", &obj->downtime, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "setup-time", &obj->has_setup_time)) {
+ visit_type_int(v, "setup-time", &obj->setup_time, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpu-throttle-percentage", &obj->has_cpu_throttle_percentage)) {
+ visit_type_int(v, "cpu-throttle-percentage", &obj->cpu_throttle_percentage, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "error-desc", &obj->has_error_desc)) {
+ visit_type_str(v, "error-desc", &obj->error_desc, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationInfo(Visitor *v, const char *name, MigrationInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MigrationInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MigrationInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrationInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationCapability(Visitor *v, const char *name, MigrationCapability *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MigrationCapability_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_MigrationCapabilityStatus_members(Visitor *v, MigrationCapabilityStatus *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_MigrationCapability(v, "capability", &obj->capability, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationCapabilityStatus(Visitor *v, const char *name, MigrationCapabilityStatus **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MigrationCapabilityStatus), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MigrationCapabilityStatus_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrationCapabilityStatus(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationCapabilityStatusList(Visitor *v, const char *name, MigrationCapabilityStatusList **obj, Error **errp)
+{
+ Error *err = NULL;
+ MigrationCapabilityStatusList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (MigrationCapabilityStatusList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_MigrationCapabilityStatus(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrationCapabilityStatusList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_set_capabilities_arg_members(Visitor *v, q_obj_migrate_set_capabilities_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_MigrationCapabilityStatusList(v, "capabilities", &obj->capabilities, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationParameter(Visitor *v, const char *name, MigrationParameter *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MigrationParameter_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_MigrateSetParameters_members(Visitor *v, MigrateSetParameters *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "compress-level", &obj->has_compress_level)) {
+ visit_type_int(v, "compress-level", &obj->compress_level, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compress-threads", &obj->has_compress_threads)) {
+ visit_type_int(v, "compress-threads", &obj->compress_threads, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "decompress-threads", &obj->has_decompress_threads)) {
+ visit_type_int(v, "decompress-threads", &obj->decompress_threads, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpu-throttle-initial", &obj->has_cpu_throttle_initial)) {
+ visit_type_int(v, "cpu-throttle-initial", &obj->cpu_throttle_initial, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpu-throttle-increment", &obj->has_cpu_throttle_increment)) {
+ visit_type_int(v, "cpu-throttle-increment", &obj->cpu_throttle_increment, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_StrOrNull(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-hostname", &obj->has_tls_hostname)) {
+ visit_type_StrOrNull(v, "tls-hostname", &obj->tls_hostname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "max-bandwidth", &obj->has_max_bandwidth)) {
+ visit_type_int(v, "max-bandwidth", &obj->max_bandwidth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "downtime-limit", &obj->has_downtime_limit)) {
+ visit_type_int(v, "downtime-limit", &obj->downtime_limit, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-checkpoint-delay", &obj->has_x_checkpoint_delay)) {
+ visit_type_int(v, "x-checkpoint-delay", &obj->x_checkpoint_delay, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "block-incremental", &obj->has_block_incremental)) {
+ visit_type_bool(v, "block-incremental", &obj->block_incremental, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-multifd-channels", &obj->has_x_multifd_channels)) {
+ visit_type_int(v, "x-multifd-channels", &obj->x_multifd_channels, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-multifd-page-count", &obj->has_x_multifd_page_count)) {
+ visit_type_int(v, "x-multifd-page-count", &obj->x_multifd_page_count, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "xbzrle-cache-size", &obj->has_xbzrle_cache_size)) {
+ visit_type_size(v, "xbzrle-cache-size", &obj->xbzrle_cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrateSetParameters(Visitor *v, const char *name, MigrateSetParameters **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MigrateSetParameters), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MigrateSetParameters_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrateSetParameters(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationParameters_members(Visitor *v, MigrationParameters *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "compress-level", &obj->has_compress_level)) {
+ visit_type_uint8(v, "compress-level", &obj->compress_level, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compress-threads", &obj->has_compress_threads)) {
+ visit_type_uint8(v, "compress-threads", &obj->compress_threads, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "decompress-threads", &obj->has_decompress_threads)) {
+ visit_type_uint8(v, "decompress-threads", &obj->decompress_threads, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpu-throttle-initial", &obj->has_cpu_throttle_initial)) {
+ visit_type_uint8(v, "cpu-throttle-initial", &obj->cpu_throttle_initial, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpu-throttle-increment", &obj->has_cpu_throttle_increment)) {
+ visit_type_uint8(v, "cpu-throttle-increment", &obj->cpu_throttle_increment, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-creds", &obj->has_tls_creds)) {
+ visit_type_str(v, "tls-creds", &obj->tls_creds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-hostname", &obj->has_tls_hostname)) {
+ visit_type_str(v, "tls-hostname", &obj->tls_hostname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "max-bandwidth", &obj->has_max_bandwidth)) {
+ visit_type_size(v, "max-bandwidth", &obj->max_bandwidth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "downtime-limit", &obj->has_downtime_limit)) {
+ visit_type_uint64(v, "downtime-limit", &obj->downtime_limit, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-checkpoint-delay", &obj->has_x_checkpoint_delay)) {
+ visit_type_uint32(v, "x-checkpoint-delay", &obj->x_checkpoint_delay, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "block-incremental", &obj->has_block_incremental)) {
+ visit_type_bool(v, "block-incremental", &obj->block_incremental, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-multifd-channels", &obj->has_x_multifd_channels)) {
+ visit_type_uint8(v, "x-multifd-channels", &obj->x_multifd_channels, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "x-multifd-page-count", &obj->has_x_multifd_page_count)) {
+ visit_type_uint32(v, "x-multifd-page-count", &obj->x_multifd_page_count, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "xbzrle-cache-size", &obj->has_xbzrle_cache_size)) {
+ visit_type_size(v, "xbzrle-cache-size", &obj->xbzrle_cache_size, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MigrationParameters(Visitor *v, const char *name, MigrationParameters **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MigrationParameters), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MigrationParameters_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MigrationParameters(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_client_migrate_info_arg_members(Visitor *v, q_obj_client_migrate_info_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "protocol", &obj->protocol, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "hostname", &obj->hostname, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "port", &obj->has_port)) {
+ visit_type_int(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-port", &obj->has_tls_port)) {
+ visit_type_int(v, "tls-port", &obj->tls_port, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cert-subject", &obj->has_cert_subject)) {
+ visit_type_str(v, "cert-subject", &obj->cert_subject, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_MIGRATION_arg_members(Visitor *v, q_obj_MIGRATION_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_MigrationStatus(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_MIGRATION_PASS_arg_members(Visitor *v, q_obj_MIGRATION_PASS_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "pass", &obj->pass, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_COLOMessage(Visitor *v, const char *name, COLOMessage *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &COLOMessage_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_COLOMode(Visitor *v, const char *name, COLOMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &COLOMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_FailoverStatus(Visitor *v, const char *name, FailoverStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &FailoverStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_migrate_continue_arg_members(Visitor *v, q_obj_migrate_continue_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_MigrationStatus(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_set_downtime_arg_members(Visitor *v, q_obj_migrate_set_downtime_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_number(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_set_speed_arg_members(Visitor *v, q_obj_migrate_set_speed_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_set_cache_size_arg_members(Visitor *v, q_obj_migrate_set_cache_size_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_arg_members(Visitor *v, q_obj_migrate_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "uri", &obj->uri, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "blk", &obj->has_blk)) {
+ visit_type_bool(v, "blk", &obj->blk, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "inc", &obj->has_inc)) {
+ visit_type_bool(v, "inc", &obj->inc, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "detach", &obj->has_detach)) {
+ visit_type_bool(v, "detach", &obj->detach, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_migrate_incoming_arg_members(Visitor *v, q_obj_migrate_incoming_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "uri", &obj->uri, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_xen_save_devices_state_arg_members(Visitor *v, q_obj_xen_save_devices_state_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "live", &obj->has_live)) {
+ visit_type_bool(v, "live", &obj->live, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_xen_set_replication_arg_members(Visitor *v, q_obj_xen_set_replication_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enable", &obj->enable, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "primary", &obj->primary, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "failover", &obj->has_failover)) {
+ visit_type_bool(v, "failover", &obj->failover, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ReplicationStatus_members(Visitor *v, ReplicationStatus *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "error", &obj->error, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "desc", &obj->has_desc)) {
+ visit_type_str(v, "desc", &obj->desc, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ReplicationStatus(Visitor *v, const char *name, ReplicationStatus **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ReplicationStatus), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ReplicationStatus_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ReplicationStatus(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_migration_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-migration.h b/qemu2-auto-generated/qapi/qapi-visit-migration.h
new file mode 100644
index 0000000000..0480a1bfd6
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-migration.h
@@ -0,0 +1,73 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_MIGRATION_H
+#define QAPI_VISIT_MIGRATION_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-migration.h"
+
+#include "qapi-visit-common.h"
+
+void visit_type_MigrationStats_members(Visitor *v, MigrationStats *obj, Error **errp);
+void visit_type_MigrationStats(Visitor *v, const char *name, MigrationStats **obj, Error **errp);
+
+void visit_type_XBZRLECacheStats_members(Visitor *v, XBZRLECacheStats *obj, Error **errp);
+void visit_type_XBZRLECacheStats(Visitor *v, const char *name, XBZRLECacheStats **obj, Error **errp);
+void visit_type_MigrationStatus(Visitor *v, const char *name, MigrationStatus *obj, Error **errp);
+
+void visit_type_MigrationInfo_members(Visitor *v, MigrationInfo *obj, Error **errp);
+void visit_type_MigrationInfo(Visitor *v, const char *name, MigrationInfo **obj, Error **errp);
+void visit_type_MigrationCapability(Visitor *v, const char *name, MigrationCapability *obj, Error **errp);
+
+void visit_type_MigrationCapabilityStatus_members(Visitor *v, MigrationCapabilityStatus *obj, Error **errp);
+void visit_type_MigrationCapabilityStatus(Visitor *v, const char *name, MigrationCapabilityStatus **obj, Error **errp);
+void visit_type_MigrationCapabilityStatusList(Visitor *v, const char *name, MigrationCapabilityStatusList **obj, Error **errp);
+
+void visit_type_q_obj_migrate_set_capabilities_arg_members(Visitor *v, q_obj_migrate_set_capabilities_arg *obj, Error **errp);
+void visit_type_MigrationParameter(Visitor *v, const char *name, MigrationParameter *obj, Error **errp);
+
+void visit_type_MigrateSetParameters_members(Visitor *v, MigrateSetParameters *obj, Error **errp);
+void visit_type_MigrateSetParameters(Visitor *v, const char *name, MigrateSetParameters **obj, Error **errp);
+
+void visit_type_MigrationParameters_members(Visitor *v, MigrationParameters *obj, Error **errp);
+void visit_type_MigrationParameters(Visitor *v, const char *name, MigrationParameters **obj, Error **errp);
+
+void visit_type_q_obj_client_migrate_info_arg_members(Visitor *v, q_obj_client_migrate_info_arg *obj, Error **errp);
+
+void visit_type_q_obj_MIGRATION_arg_members(Visitor *v, q_obj_MIGRATION_arg *obj, Error **errp);
+
+void visit_type_q_obj_MIGRATION_PASS_arg_members(Visitor *v, q_obj_MIGRATION_PASS_arg *obj, Error **errp);
+void visit_type_COLOMessage(Visitor *v, const char *name, COLOMessage *obj, Error **errp);
+void visit_type_COLOMode(Visitor *v, const char *name, COLOMode *obj, Error **errp);
+void visit_type_FailoverStatus(Visitor *v, const char *name, FailoverStatus *obj, Error **errp);
+
+void visit_type_q_obj_migrate_continue_arg_members(Visitor *v, q_obj_migrate_continue_arg *obj, Error **errp);
+
+void visit_type_q_obj_migrate_set_downtime_arg_members(Visitor *v, q_obj_migrate_set_downtime_arg *obj, Error **errp);
+
+void visit_type_q_obj_migrate_set_speed_arg_members(Visitor *v, q_obj_migrate_set_speed_arg *obj, Error **errp);
+
+void visit_type_q_obj_migrate_set_cache_size_arg_members(Visitor *v, q_obj_migrate_set_cache_size_arg *obj, Error **errp);
+
+void visit_type_q_obj_migrate_arg_members(Visitor *v, q_obj_migrate_arg *obj, Error **errp);
+
+void visit_type_q_obj_migrate_incoming_arg_members(Visitor *v, q_obj_migrate_incoming_arg *obj, Error **errp);
+
+void visit_type_q_obj_xen_save_devices_state_arg_members(Visitor *v, q_obj_xen_save_devices_state_arg *obj, Error **errp);
+
+void visit_type_q_obj_xen_set_replication_arg_members(Visitor *v, q_obj_xen_set_replication_arg *obj, Error **errp);
+
+void visit_type_ReplicationStatus_members(Visitor *v, ReplicationStatus *obj, Error **errp);
+void visit_type_ReplicationStatus(Visitor *v, const char *name, ReplicationStatus **obj, Error **errp);
+
+#endif /* QAPI_VISIT_MIGRATION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-misc.c b/qemu2-auto-generated/qapi/qapi-visit-misc.c
new file mode 100644
index 0000000000..b553fe76d7
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-misc.c
@@ -0,0 +1,4643 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-misc.h"
+
+void visit_type_QMPCapabilityList(Visitor *v, const char *name, QMPCapabilityList **obj, Error **errp)
+{
+ Error *err = NULL;
+ QMPCapabilityList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (QMPCapabilityList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_QMPCapability(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_QMPCapabilityList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qmp_capabilities_arg_members(Visitor *v, q_obj_qmp_capabilities_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "enable", &obj->has_enable)) {
+ visit_type_QMPCapabilityList(v, "enable", &obj->enable, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QMPCapability(Visitor *v, const char *name, QMPCapability *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QMPCapability_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_VersionTriple_members(Visitor *v, VersionTriple *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "major", &obj->major, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "minor", &obj->minor, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "micro", &obj->micro, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VersionTriple(Visitor *v, const char *name, VersionTriple **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VersionTriple), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VersionTriple_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VersionTriple(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VersionInfo_members(Visitor *v, VersionInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VersionTriple(v, "qemu", &obj->qemu, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "package", &obj->package, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VersionInfo(Visitor *v, const char *name, VersionInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VersionInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VersionInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VersionInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandInfo_members(Visitor *v, CommandInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandInfo(Visitor *v, const char *name, CommandInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CommandInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CommandInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandInfoList(Visitor *v, const char *name, CommandInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CommandInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CommandInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CommandInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_LostTickPolicy(Visitor *v, const char *name, LostTickPolicy *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &LostTickPolicy_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_add_client_arg_members(Visitor *v, q_obj_add_client_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "protocol", &obj->protocol, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "fdname", &obj->fdname, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "skipauth", &obj->has_skipauth)) {
+ visit_type_bool(v, "skipauth", &obj->skipauth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls", &obj->has_tls)) {
+ visit_type_bool(v, "tls", &obj->tls, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NameInfo_members(Visitor *v, NameInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NameInfo(Visitor *v, const char *name, NameInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NameInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NameInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NameInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_KvmInfo_members(Visitor *v, KvmInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enabled", &obj->enabled, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "present", &obj->present, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_KvmInfo(Visitor *v, const char *name, KvmInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(KvmInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_KvmInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_KvmInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UuidInfo_members(Visitor *v, UuidInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "UUID", &obj->UUID, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UuidInfo(Visitor *v, const char *name, UuidInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UuidInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UuidInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UuidInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EventInfo_members(Visitor *v, EventInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EventInfo(Visitor *v, const char *name, EventInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(EventInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_EventInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_EventInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EventInfoList(Visitor *v, const char *name, EventInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ EventInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (EventInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_EventInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_EventInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoArch(Visitor *v, const char *name, CpuInfoArch *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CpuInfoArch_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_CpuInfo_base_members(Visitor *v, q_obj_CpuInfo_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "CPU", &obj->CPU, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "current", &obj->current, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "halted", &obj->halted, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "qom_path", &obj->qom_path, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "thread_id", &obj->thread_id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "props", &obj->has_props)) {
+ visit_type_CpuInstanceProperties(v, "props", &obj->props, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_CpuInfoArch(v, "arch", &obj->arch, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfo_members(Visitor *v, CpuInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_CpuInfo_base_members(v, (q_obj_CpuInfo_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->arch) {
+ case CPU_INFO_ARCH_X86:
+ visit_type_CpuInfoX86_members(v, &obj->u.x86, &err);
+ break;
+ case CPU_INFO_ARCH_SPARC:
+ visit_type_CpuInfoSPARC_members(v, &obj->u.q_sparc, &err);
+ break;
+ case CPU_INFO_ARCH_PPC:
+ visit_type_CpuInfoPPC_members(v, &obj->u.ppc, &err);
+ break;
+ case CPU_INFO_ARCH_MIPS:
+ visit_type_CpuInfoMIPS_members(v, &obj->u.q_mips, &err);
+ break;
+ case CPU_INFO_ARCH_TRICORE:
+ visit_type_CpuInfoTricore_members(v, &obj->u.tricore, &err);
+ break;
+ case CPU_INFO_ARCH_S390:
+ visit_type_CpuInfoS390_members(v, &obj->u.s390, &err);
+ break;
+ case CPU_INFO_ARCH_RISCV:
+ visit_type_CpuInfoRISCV_members(v, &obj->u.riscv, &err);
+ break;
+ case CPU_INFO_ARCH_OTHER:
+ visit_type_CpuInfoOther_members(v, &obj->u.other, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfo(Visitor *v, const char *name, CpuInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoX86_members(Visitor *v, CpuInfoX86 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "pc", &obj->pc, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoX86(Visitor *v, const char *name, CpuInfoX86 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoX86), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoX86_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoX86(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoSPARC_members(Visitor *v, CpuInfoSPARC *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "pc", &obj->pc, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "npc", &obj->npc, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoSPARC(Visitor *v, const char *name, CpuInfoSPARC **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoSPARC), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoSPARC_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoSPARC(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoPPC_members(Visitor *v, CpuInfoPPC *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "nip", &obj->nip, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoPPC(Visitor *v, const char *name, CpuInfoPPC **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoPPC), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoPPC_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoPPC(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoMIPS_members(Visitor *v, CpuInfoMIPS *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "PC", &obj->PC, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoMIPS(Visitor *v, const char *name, CpuInfoMIPS **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoMIPS), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoMIPS_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoMIPS(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoTricore_members(Visitor *v, CpuInfoTricore *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "PC", &obj->PC, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoTricore(Visitor *v, const char *name, CpuInfoTricore **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoTricore), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoTricore_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoTricore(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoRISCV_members(Visitor *v, CpuInfoRISCV *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "pc", &obj->pc, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoRISCV(Visitor *v, const char *name, CpuInfoRISCV **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoRISCV), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoRISCV_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoRISCV(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoOther_members(Visitor *v, CpuInfoOther *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoOther(Visitor *v, const char *name, CpuInfoOther **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoOther), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoOther_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoOther(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuS390State(Visitor *v, const char *name, CpuS390State *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CpuS390State_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_CpuInfoS390_members(Visitor *v, CpuInfoS390 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuS390State(v, "cpu-state", &obj->cpu_state, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoS390(Visitor *v, const char *name, CpuInfoS390 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoS390), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoS390_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoS390(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoList(Visitor *v, const char *name, CpuInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CpuInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CpuInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CpuInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_CpuInfoFast_base_members(Visitor *v, q_obj_CpuInfoFast_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "cpu-index", &obj->cpu_index, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "qom-path", &obj->qom_path, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "thread-id", &obj->thread_id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "props", &obj->has_props)) {
+ visit_type_CpuInstanceProperties(v, "props", &obj->props, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_CpuInfoArch(v, "arch", &obj->arch, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoFast_members(Visitor *v, CpuInfoFast *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_CpuInfoFast_base_members(v, (q_obj_CpuInfoFast_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->arch) {
+ case CPU_INFO_ARCH_X86:
+ visit_type_CpuInfoOther_members(v, &obj->u.x86, &err);
+ break;
+ case CPU_INFO_ARCH_SPARC:
+ visit_type_CpuInfoOther_members(v, &obj->u.q_sparc, &err);
+ break;
+ case CPU_INFO_ARCH_PPC:
+ visit_type_CpuInfoOther_members(v, &obj->u.ppc, &err);
+ break;
+ case CPU_INFO_ARCH_MIPS:
+ visit_type_CpuInfoOther_members(v, &obj->u.q_mips, &err);
+ break;
+ case CPU_INFO_ARCH_TRICORE:
+ visit_type_CpuInfoOther_members(v, &obj->u.tricore, &err);
+ break;
+ case CPU_INFO_ARCH_S390:
+ visit_type_CpuInfoS390_members(v, &obj->u.s390, &err);
+ break;
+ case CPU_INFO_ARCH_RISCV:
+ visit_type_CpuInfoRISCV_members(v, &obj->u.riscv, &err);
+ break;
+ case CPU_INFO_ARCH_OTHER:
+ visit_type_CpuInfoOther_members(v, &obj->u.other, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoFast(Visitor *v, const char *name, CpuInfoFast **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInfoFast), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInfoFast_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoFast(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInfoFastList(Visitor *v, const char *name, CpuInfoFastList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CpuInfoFastList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CpuInfoFastList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CpuInfoFast(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInfoFastList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_IOThreadInfo_members(Visitor *v, IOThreadInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "thread-id", &obj->thread_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "poll-max-ns", &obj->poll_max_ns, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "poll-grow", &obj->poll_grow, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "poll-shrink", &obj->poll_shrink, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_IOThreadInfo(Visitor *v, const char *name, IOThreadInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(IOThreadInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_IOThreadInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_IOThreadInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_IOThreadInfoList(Visitor *v, const char *name, IOThreadInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ IOThreadInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (IOThreadInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_IOThreadInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_IOThreadInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BalloonInfo_members(Visitor *v, BalloonInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "actual", &obj->actual, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_BalloonInfo(Visitor *v, const char *name, BalloonInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(BalloonInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_BalloonInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_BalloonInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BALLOON_CHANGE_arg_members(Visitor *v, q_obj_BALLOON_CHANGE_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "actual", &obj->actual, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRange_members(Visitor *v, PciMemoryRange *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "base", &obj->base, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "limit", &obj->limit, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRange(Visitor *v, const char *name, PciMemoryRange **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciMemoryRange), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciMemoryRange_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciMemoryRange(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRegion_members(Visitor *v, PciMemoryRegion *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "bar", &obj->bar, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "address", &obj->address, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "prefetch", &obj->has_prefetch)) {
+ visit_type_bool(v, "prefetch", &obj->prefetch, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "mem_type_64", &obj->has_mem_type_64)) {
+ visit_type_bool(v, "mem_type_64", &obj->mem_type_64, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRegion(Visitor *v, const char *name, PciMemoryRegion **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciMemoryRegion), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciMemoryRegion_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciMemoryRegion(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciBusInfo_members(Visitor *v, PciBusInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "number", &obj->number, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "secondary", &obj->secondary, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "subordinate", &obj->subordinate, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciMemoryRange(v, "io_range", &obj->io_range, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciMemoryRange(v, "memory_range", &obj->memory_range, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciMemoryRange(v, "prefetchable_range", &obj->prefetchable_range, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciBusInfo(Visitor *v, const char *name, PciBusInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciBusInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciBusInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciBusInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceInfoList(Visitor *v, const char *name, PciDeviceInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ PciDeviceInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (PciDeviceInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_PciDeviceInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciDeviceInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciBridgeInfo_members(Visitor *v, PciBridgeInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_PciBusInfo(v, "bus", &obj->bus, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "devices", &obj->has_devices)) {
+ visit_type_PciDeviceInfoList(v, "devices", &obj->devices, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciBridgeInfo(Visitor *v, const char *name, PciBridgeInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciBridgeInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciBridgeInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciBridgeInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceClass_members(Visitor *v, PciDeviceClass *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "desc", &obj->has_desc)) {
+ visit_type_str(v, "desc", &obj->desc, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "class", &obj->q_class, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceClass(Visitor *v, const char *name, PciDeviceClass **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciDeviceClass), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciDeviceClass_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciDeviceClass(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceId_members(Visitor *v, PciDeviceId *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vendor", &obj->vendor, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceId(Visitor *v, const char *name, PciDeviceId **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciDeviceId), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciDeviceId_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciDeviceId(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciMemoryRegionList(Visitor *v, const char *name, PciMemoryRegionList **obj, Error **errp)
+{
+ Error *err = NULL;
+ PciMemoryRegionList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (PciMemoryRegionList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_PciMemoryRegion(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciMemoryRegionList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceInfo_members(Visitor *v, PciDeviceInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "bus", &obj->bus, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "slot", &obj->slot, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "function", &obj->function, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciDeviceClass(v, "class_info", &obj->class_info, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciDeviceId(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "irq", &obj->has_irq)) {
+ visit_type_int(v, "irq", &obj->irq, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "qdev_id", &obj->qdev_id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "pci_bridge", &obj->has_pci_bridge)) {
+ visit_type_PciBridgeInfo(v, "pci_bridge", &obj->pci_bridge, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_PciMemoryRegionList(v, "regions", &obj->regions, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciDeviceInfo(Visitor *v, const char *name, PciDeviceInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciDeviceInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciDeviceInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciDeviceInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciInfo_members(Visitor *v, PciInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "bus", &obj->bus, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_PciDeviceInfoList(v, "devices", &obj->devices, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciInfo(Visitor *v, const char *name, PciInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PciInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PciInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PciInfoList(Visitor *v, const char *name, PciInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ PciInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (PciInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_PciInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PciInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_cpu_add_arg_members(Visitor *v, q_obj_cpu_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_memsave_arg_members(Visitor *v, q_obj_memsave_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "val", &obj->val, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cpu-index", &obj->has_cpu_index)) {
+ visit_type_int(v, "cpu-index", &obj->cpu_index, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_pmemsave_arg_members(Visitor *v, q_obj_pmemsave_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "val", &obj->val, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_balloon_arg_members(Visitor *v, q_obj_balloon_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_human_monitor_command_arg_members(Visitor *v, q_obj_human_monitor_command_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "command-line", &obj->command_line, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cpu-index", &obj->has_cpu_index)) {
+ visit_type_int(v, "cpu-index", &obj->cpu_index, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectPropertyInfo_members(Visitor *v, ObjectPropertyInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "description", &obj->has_description)) {
+ visit_type_str(v, "description", &obj->description, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectPropertyInfo(Visitor *v, const char *name, ObjectPropertyInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ObjectPropertyInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ObjectPropertyInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ObjectPropertyInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qom_list_arg_members(Visitor *v, q_obj_qom_list_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectPropertyInfoList(Visitor *v, const char *name, ObjectPropertyInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ObjectPropertyInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ObjectPropertyInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ObjectPropertyInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ObjectPropertyInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qom_get_arg_members(Visitor *v, q_obj_qom_get_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "property", &obj->property, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qom_set_arg_members(Visitor *v, q_obj_qom_set_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "property", &obj->property, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_any(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_change_arg_members(Visitor *v, q_obj_change_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "target", &obj->target, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "arg", &obj->has_arg)) {
+ visit_type_str(v, "arg", &obj->arg, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectTypeInfo_members(Visitor *v, ObjectTypeInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "abstract", &obj->has_abstract)) {
+ visit_type_bool(v, "abstract", &obj->abstract, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "parent", &obj->has_parent)) {
+ visit_type_str(v, "parent", &obj->parent, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectTypeInfo(Visitor *v, const char *name, ObjectTypeInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ObjectTypeInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ObjectTypeInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ObjectTypeInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qom_list_types_arg_members(Visitor *v, q_obj_qom_list_types_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "implements", &obj->has_implements)) {
+ visit_type_str(v, "implements", &obj->implements, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "abstract", &obj->has_abstract)) {
+ visit_type_bool(v, "abstract", &obj->abstract, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ObjectTypeInfoList(Visitor *v, const char *name, ObjectTypeInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ObjectTypeInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ObjectTypeInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ObjectTypeInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ObjectTypeInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_device_list_properties_arg_members(Visitor *v, q_obj_device_list_properties_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "typename", &obj->q_typename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_qom_list_properties_arg_members(Visitor *v, q_obj_qom_list_properties_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "typename", &obj->q_typename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_xen_set_global_dirty_log_arg_members(Visitor *v, q_obj_xen_set_global_dirty_log_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enable", &obj->enable, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_device_add_arg_members(Visitor *v, q_obj_device_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "driver", &obj->driver, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "bus", &obj->has_bus)) {
+ visit_type_str(v, "bus", &obj->bus, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_device_del_arg_members(Visitor *v, q_obj_device_del_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_DEVICE_DELETED_arg_members(Visitor *v, q_obj_DEVICE_DELETED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpGuestMemoryFormat(Visitor *v, const char *name, DumpGuestMemoryFormat *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &DumpGuestMemoryFormat_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_dump_guest_memory_arg_members(Visitor *v, q_obj_dump_guest_memory_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "paging", &obj->paging, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "protocol", &obj->protocol, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "detach", &obj->has_detach)) {
+ visit_type_bool(v, "detach", &obj->detach, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "begin", &obj->has_begin)) {
+ visit_type_int(v, "begin", &obj->begin, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "length", &obj->has_length)) {
+ visit_type_int(v, "length", &obj->length, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "format", &obj->has_format)) {
+ visit_type_DumpGuestMemoryFormat(v, "format", &obj->format, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpStatus(Visitor *v, const char *name, DumpStatus *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &DumpStatus_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_DumpQueryResult_members(Visitor *v, DumpQueryResult *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_DumpStatus(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "completed", &obj->completed, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "total", &obj->total, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpQueryResult(Visitor *v, const char *name, DumpQueryResult **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DumpQueryResult), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DumpQueryResult_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DumpQueryResult(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_DUMP_COMPLETED_arg_members(Visitor *v, q_obj_DUMP_COMPLETED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_DumpQueryResult(v, "result", &obj->result, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "error", &obj->has_error)) {
+ visit_type_str(v, "error", &obj->error, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpGuestMemoryFormatList(Visitor *v, const char *name, DumpGuestMemoryFormatList **obj, Error **errp)
+{
+ Error *err = NULL;
+ DumpGuestMemoryFormatList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (DumpGuestMemoryFormatList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_DumpGuestMemoryFormat(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DumpGuestMemoryFormatList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpGuestMemoryCapability_members(Visitor *v, DumpGuestMemoryCapability *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_DumpGuestMemoryFormatList(v, "formats", &obj->formats, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DumpGuestMemoryCapability(Visitor *v, const char *name, DumpGuestMemoryCapability **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DumpGuestMemoryCapability), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DumpGuestMemoryCapability_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DumpGuestMemoryCapability(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_dump_skeys_arg_members(Visitor *v, q_obj_dump_skeys_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_object_add_arg_members(Visitor *v, q_obj_object_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "qom-type", &obj->qom_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "props", &obj->has_props)) {
+ visit_type_any(v, "props", &obj->props, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_object_del_arg_members(Visitor *v, q_obj_object_del_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_getfd_arg_members(Visitor *v, q_obj_getfd_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "fdname", &obj->fdname, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_closefd_arg_members(Visitor *v, q_obj_closefd_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "fdname", &obj->fdname, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MachineInfo_members(Visitor *v, MachineInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "alias", &obj->has_alias)) {
+ visit_type_str(v, "alias", &obj->alias, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "is-default", &obj->has_is_default)) {
+ visit_type_bool(v, "is-default", &obj->is_default, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "cpu-max", &obj->cpu_max, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "hotpluggable-cpus", &obj->hotpluggable_cpus, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MachineInfo(Visitor *v, const char *name, MachineInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MachineInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MachineInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MachineInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MachineInfoList(Visitor *v, const char *name, MachineInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ MachineInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (MachineInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_MachineInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MachineInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuDefinitionInfo_members(Visitor *v, CpuDefinitionInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "migration-safe", &obj->has_migration_safe)) {
+ visit_type_bool(v, "migration-safe", &obj->migration_safe, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_bool(v, "static", &obj->q_static, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "unavailable-features", &obj->has_unavailable_features)) {
+ visit_type_strList(v, "unavailable-features", &obj->unavailable_features, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "typename", &obj->q_typename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuDefinitionInfo(Visitor *v, const char *name, CpuDefinitionInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuDefinitionInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuDefinitionInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuDefinitionInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemoryInfo_members(Visitor *v, MemoryInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_size(v, "base-memory", &obj->base_memory, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "plugged-memory", &obj->has_plugged_memory)) {
+ visit_type_size(v, "plugged-memory", &obj->plugged_memory, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemoryInfo(Visitor *v, const char *name, MemoryInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MemoryInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MemoryInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MemoryInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuDefinitionInfoList(Visitor *v, const char *name, CpuDefinitionInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CpuDefinitionInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CpuDefinitionInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CpuDefinitionInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuDefinitionInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelInfo_members(Visitor *v, CpuModelInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "props", &obj->has_props)) {
+ visit_type_any(v, "props", &obj->props, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelInfo(Visitor *v, const char *name, CpuModelInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuModelInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuModelInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuModelInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelExpansionType(Visitor *v, const char *name, CpuModelExpansionType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CpuModelExpansionType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_CpuModelExpansionInfo_members(Visitor *v, CpuModelExpansionInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelInfo(v, "model", &obj->model, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelExpansionInfo(Visitor *v, const char *name, CpuModelExpansionInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuModelExpansionInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuModelExpansionInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuModelExpansionInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_cpu_model_expansion_arg_members(Visitor *v, q_obj_query_cpu_model_expansion_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelExpansionType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CpuModelInfo(v, "model", &obj->model, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelCompareResult(Visitor *v, const char *name, CpuModelCompareResult *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CpuModelCompareResult_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_CpuModelCompareInfo_members(Visitor *v, CpuModelCompareInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelCompareResult(v, "result", &obj->result, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_strList(v, "responsible-properties", &obj->responsible_properties, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelCompareInfo(Visitor *v, const char *name, CpuModelCompareInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuModelCompareInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuModelCompareInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuModelCompareInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_cpu_model_comparison_arg_members(Visitor *v, q_obj_query_cpu_model_comparison_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelInfo(v, "modela", &obj->modela, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CpuModelInfo(v, "modelb", &obj->modelb, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelBaselineInfo_members(Visitor *v, CpuModelBaselineInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelInfo(v, "model", &obj->model, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuModelBaselineInfo(Visitor *v, const char *name, CpuModelBaselineInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuModelBaselineInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuModelBaselineInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuModelBaselineInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_cpu_model_baseline_arg_members(Visitor *v, q_obj_query_cpu_model_baseline_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuModelInfo(v, "modela", &obj->modela, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CpuModelInfo(v, "modelb", &obj->modelb, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AddfdInfo_members(Visitor *v, AddfdInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "fdset-id", &obj->fdset_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "fd", &obj->fd, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AddfdInfo(Visitor *v, const char *name, AddfdInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(AddfdInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_AddfdInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AddfdInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_add_fd_arg_members(Visitor *v, q_obj_add_fd_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "fdset-id", &obj->has_fdset_id)) {
+ visit_type_int(v, "fdset-id", &obj->fdset_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "opaque", &obj->has_opaque)) {
+ visit_type_str(v, "opaque", &obj->opaque, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_remove_fd_arg_members(Visitor *v, q_obj_remove_fd_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "fdset-id", &obj->fdset_id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "fd", &obj->has_fd)) {
+ visit_type_int(v, "fd", &obj->fd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetFdInfo_members(Visitor *v, FdsetFdInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "fd", &obj->fd, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "opaque", &obj->has_opaque)) {
+ visit_type_str(v, "opaque", &obj->opaque, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetFdInfo(Visitor *v, const char *name, FdsetFdInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(FdsetFdInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_FdsetFdInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_FdsetFdInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetFdInfoList(Visitor *v, const char *name, FdsetFdInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ FdsetFdInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (FdsetFdInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_FdsetFdInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_FdsetFdInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetInfo_members(Visitor *v, FdsetInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "fdset-id", &obj->fdset_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_FdsetFdInfoList(v, "fds", &obj->fds, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetInfo(Visitor *v, const char *name, FdsetInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(FdsetInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_FdsetInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_FdsetInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_FdsetInfoList(Visitor *v, const char *name, FdsetInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ FdsetInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (FdsetInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_FdsetInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_FdsetInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TargetInfo_members(Visitor *v, TargetInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "arch", &obj->arch, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TargetInfo(Visitor *v, const char *name, TargetInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TargetInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TargetInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TargetInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AcpiTableOptions_members(Visitor *v, AcpiTableOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "sig", &obj->has_sig)) {
+ visit_type_str(v, "sig", &obj->sig, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "rev", &obj->has_rev)) {
+ visit_type_uint8(v, "rev", &obj->rev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "oem_id", &obj->has_oem_id)) {
+ visit_type_str(v, "oem_id", &obj->oem_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "oem_table_id", &obj->has_oem_table_id)) {
+ visit_type_str(v, "oem_table_id", &obj->oem_table_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "oem_rev", &obj->has_oem_rev)) {
+ visit_type_uint32(v, "oem_rev", &obj->oem_rev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "asl_compiler_id", &obj->has_asl_compiler_id)) {
+ visit_type_str(v, "asl_compiler_id", &obj->asl_compiler_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "asl_compiler_rev", &obj->has_asl_compiler_rev)) {
+ visit_type_uint32(v, "asl_compiler_rev", &obj->asl_compiler_rev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "file", &obj->has_file)) {
+ visit_type_str(v, "file", &obj->file, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "data", &obj->has_data)) {
+ visit_type_str(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AcpiTableOptions(Visitor *v, const char *name, AcpiTableOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(AcpiTableOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_AcpiTableOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AcpiTableOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineParameterType(Visitor *v, const char *name, CommandLineParameterType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CommandLineParameterType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_CommandLineParameterInfo_members(Visitor *v, CommandLineParameterInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CommandLineParameterType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "help", &obj->has_help)) {
+ visit_type_str(v, "help", &obj->help, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "default", &obj->has_q_default)) {
+ visit_type_str(v, "default", &obj->q_default, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineParameterInfo(Visitor *v, const char *name, CommandLineParameterInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CommandLineParameterInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CommandLineParameterInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandLineParameterInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineParameterInfoList(Visitor *v, const char *name, CommandLineParameterInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CommandLineParameterInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CommandLineParameterInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CommandLineParameterInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandLineParameterInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineOptionInfo_members(Visitor *v, CommandLineOptionInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "option", &obj->option, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CommandLineParameterInfoList(v, "parameters", &obj->parameters, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineOptionInfo(Visitor *v, const char *name, CommandLineOptionInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CommandLineOptionInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CommandLineOptionInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandLineOptionInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_command_line_options_arg_members(Visitor *v, q_obj_query_command_line_options_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "option", &obj->has_option)) {
+ visit_type_str(v, "option", &obj->option, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandLineOptionInfoList(Visitor *v, const char *name, CommandLineOptionInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ CommandLineOptionInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (CommandLineOptionInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_CommandLineOptionInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CommandLineOptionInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_X86CPURegister32(Visitor *v, const char *name, X86CPURegister32 *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &X86CPURegister32_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_X86CPUFeatureWordInfo_members(Visitor *v, X86CPUFeatureWordInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "cpuid-input-eax", &obj->cpuid_input_eax, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "cpuid-input-ecx", &obj->has_cpuid_input_ecx)) {
+ visit_type_int(v, "cpuid-input-ecx", &obj->cpuid_input_ecx, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_X86CPURegister32(v, "cpuid-register", &obj->cpuid_register, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "features", &obj->features, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_X86CPUFeatureWordInfo(Visitor *v, const char *name, X86CPUFeatureWordInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(X86CPUFeatureWordInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_X86CPUFeatureWordInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_X86CPUFeatureWordInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_X86CPUFeatureWordInfoList(Visitor *v, const char *name, X86CPUFeatureWordInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ X86CPUFeatureWordInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (X86CPUFeatureWordInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_X86CPUFeatureWordInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_X86CPUFeatureWordInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DummyForceArrays_members(Visitor *v, DummyForceArrays *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_X86CPUFeatureWordInfoList(v, "unused", &obj->unused, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DummyForceArrays(Visitor *v, const char *name, DummyForceArrays **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DummyForceArrays), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DummyForceArrays_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DummyForceArrays(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaOptionsType(Visitor *v, const char *name, NumaOptionsType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NumaOptionsType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_NumaOptions_base_members(Visitor *v, q_obj_NumaOptions_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_NumaOptionsType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaOptions_members(Visitor *v, NumaOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_NumaOptions_base_members(v, (q_obj_NumaOptions_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case NUMA_OPTIONS_TYPE_NODE:
+ visit_type_NumaNodeOptions_members(v, &obj->u.node, &err);
+ break;
+ case NUMA_OPTIONS_TYPE_DIST:
+ visit_type_NumaDistOptions_members(v, &obj->u.dist, &err);
+ break;
+ case NUMA_OPTIONS_TYPE_CPU:
+ visit_type_NumaCpuOptions_members(v, &obj->u.cpu, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaOptions(Visitor *v, const char *name, NumaOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NumaOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NumaOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NumaOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaNodeOptions_members(Visitor *v, NumaNodeOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "nodeid", &obj->has_nodeid)) {
+ visit_type_uint16(v, "nodeid", &obj->nodeid, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cpus", &obj->has_cpus)) {
+ visit_type_uint16List(v, "cpus", &obj->cpus, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "mem", &obj->has_mem)) {
+ visit_type_size(v, "mem", &obj->mem, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "memdev", &obj->has_memdev)) {
+ visit_type_str(v, "memdev", &obj->memdev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaNodeOptions(Visitor *v, const char *name, NumaNodeOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NumaNodeOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NumaNodeOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NumaNodeOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaDistOptions_members(Visitor *v, NumaDistOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint16(v, "src", &obj->src, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint16(v, "dst", &obj->dst, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint8(v, "val", &obj->val, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaDistOptions(Visitor *v, const char *name, NumaDistOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NumaDistOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NumaDistOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NumaDistOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaCpuOptions_members(Visitor *v, NumaCpuOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_CpuInstanceProperties_members(v, (CpuInstanceProperties *)obj, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NumaCpuOptions(Visitor *v, const char *name, NumaCpuOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NumaCpuOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NumaCpuOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NumaCpuOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_HostMemPolicy(Visitor *v, const char *name, HostMemPolicy *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &HostMemPolicy_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_Memdev_members(Visitor *v, Memdev *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_size(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "merge", &obj->merge, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "dump", &obj->dump, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "prealloc", &obj->prealloc, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint16List(v, "host-nodes", &obj->host_nodes, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_HostMemPolicy(v, "policy", &obj->policy, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Memdev(Visitor *v, const char *name, Memdev **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Memdev), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Memdev_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Memdev(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemdevList(Visitor *v, const char *name, MemdevList **obj, Error **errp)
+{
+ Error *err = NULL;
+ MemdevList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (MemdevList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_Memdev(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MemdevList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PCDIMMDeviceInfo_members(Visitor *v, PCDIMMDeviceInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_int(v, "addr", &obj->addr, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "size", &obj->size, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "slot", &obj->slot, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "node", &obj->node, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "memdev", &obj->memdev, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "hotplugged", &obj->hotplugged, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "hotpluggable", &obj->hotpluggable, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_PCDIMMDeviceInfo(Visitor *v, const char *name, PCDIMMDeviceInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(PCDIMMDeviceInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_PCDIMMDeviceInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_PCDIMMDeviceInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_PCDIMMDeviceInfo_wrapper_members(Visitor *v, q_obj_PCDIMMDeviceInfo_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_PCDIMMDeviceInfo(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemoryDeviceInfoKind(Visitor *v, const char *name, MemoryDeviceInfoKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MemoryDeviceInfoKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_MemoryDeviceInfo_members(Visitor *v, MemoryDeviceInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_MemoryDeviceInfoKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case MEMORY_DEVICE_INFO_KIND_DIMM:
+ visit_type_q_obj_PCDIMMDeviceInfo_wrapper_members(v, &obj->u.dimm, &err);
+ break;
+ case MEMORY_DEVICE_INFO_KIND_NVDIMM:
+ visit_type_q_obj_PCDIMMDeviceInfo_wrapper_members(v, &obj->u.nvdimm, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemoryDeviceInfo(Visitor *v, const char *name, MemoryDeviceInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MemoryDeviceInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MemoryDeviceInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MemoryDeviceInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MemoryDeviceInfoList(Visitor *v, const char *name, MemoryDeviceInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ MemoryDeviceInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (MemoryDeviceInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_MemoryDeviceInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MemoryDeviceInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_MEM_UNPLUG_ERROR_arg_members(Visitor *v, q_obj_MEM_UNPLUG_ERROR_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "msg", &obj->msg, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ACPISlotType(Visitor *v, const char *name, ACPISlotType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ACPISlotType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_ACPIOSTInfo_members(Visitor *v, ACPIOSTInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "slot", &obj->slot, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_ACPISlotType(v, "slot-type", &obj->slot_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "source", &obj->source, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ACPIOSTInfo(Visitor *v, const char *name, ACPIOSTInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ACPIOSTInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ACPIOSTInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ACPIOSTInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ACPIOSTInfoList(Visitor *v, const char *name, ACPIOSTInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ ACPIOSTInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (ACPIOSTInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_ACPIOSTInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ACPIOSTInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_ACPI_DEVICE_OST_arg_members(Visitor *v, q_obj_ACPI_DEVICE_OST_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_ACPIOSTInfo(v, "info", &obj->info, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_RTC_CHANGE_arg_members(Visitor *v, q_obj_RTC_CHANGE_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ReplayMode(Visitor *v, const char *name, ReplayMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ReplayMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_xen_load_devices_state_arg_members(Visitor *v, q_obj_xen_load_devices_state_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GICCapability_members(Visitor *v, GICCapability *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "version", &obj->version, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "emulated", &obj->emulated, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "kernel", &obj->kernel, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GICCapability(Visitor *v, const char *name, GICCapability **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(GICCapability), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_GICCapability_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GICCapability(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GICCapabilityList(Visitor *v, const char *name, GICCapabilityList **obj, Error **errp)
+{
+ Error *err = NULL;
+ GICCapabilityList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (GICCapabilityList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_GICCapability(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GICCapabilityList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInstanceProperties_members(Visitor *v, CpuInstanceProperties *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "node-id", &obj->has_node_id)) {
+ visit_type_int(v, "node-id", &obj->node_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "socket-id", &obj->has_socket_id)) {
+ visit_type_int(v, "socket-id", &obj->socket_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "core-id", &obj->has_core_id)) {
+ visit_type_int(v, "core-id", &obj->core_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "thread-id", &obj->has_thread_id)) {
+ visit_type_int(v, "thread-id", &obj->thread_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CpuInstanceProperties(Visitor *v, const char *name, CpuInstanceProperties **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(CpuInstanceProperties), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_CpuInstanceProperties_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_CpuInstanceProperties(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_HotpluggableCPU_members(Visitor *v, HotpluggableCPU *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "vcpus-count", &obj->vcpus_count, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CpuInstanceProperties(v, "props", &obj->props, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "qom-path", &obj->has_qom_path)) {
+ visit_type_str(v, "qom-path", &obj->qom_path, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_HotpluggableCPU(Visitor *v, const char *name, HotpluggableCPU **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(HotpluggableCPU), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_HotpluggableCPU_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_HotpluggableCPU(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_HotpluggableCPUList(Visitor *v, const char *name, HotpluggableCPUList **obj, Error **errp)
+{
+ Error *err = NULL;
+ HotpluggableCPUList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (HotpluggableCPUList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_HotpluggableCPU(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_HotpluggableCPUList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuidInfo_members(Visitor *v, GuidInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "guid", &obj->guid, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuidInfo(Visitor *v, const char *name, GuidInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(GuidInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_GuidInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GuidInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevState(Visitor *v, const char *name, SevState *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SevState_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SevInfo_members(Visitor *v, SevInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enabled", &obj->enabled, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint8(v, "api-major", &obj->api_major, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint8(v, "api-minor", &obj->api_minor, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint8(v, "build-id", &obj->build_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "policy", &obj->policy, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SevState(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "handle", &obj->handle, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevInfo(Visitor *v, const char *name, SevInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SevInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SevInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SevInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevLaunchMeasureInfo_members(Visitor *v, SevLaunchMeasureInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevLaunchMeasureInfo(Visitor *v, const char *name, SevLaunchMeasureInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SevLaunchMeasureInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SevLaunchMeasureInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SevLaunchMeasureInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevCapability_members(Visitor *v, SevCapability *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "pdh", &obj->pdh, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "cert-chain", &obj->cert_chain, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "cbitpos", &obj->cbitpos, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "reduced-phys-bits", &obj->reduced_phys_bits, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SevCapability(Visitor *v, const char *name, SevCapability **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SevCapability), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SevCapability_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SevCapability(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_CommandDropReason(Visitor *v, const char *name, CommandDropReason *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &CommandDropReason_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_COMMAND_DROPPED_arg_members(Visitor *v, q_obj_COMMAND_DROPPED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_any(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_CommandDropReason(v, "reason", &obj->reason, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_x_oob_test_arg_members(Visitor *v, q_obj_x_oob_test_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "lock", &obj->lock, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_misc_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-misc.h b/qemu2-auto-generated/qapi/qapi-visit-misc.h
new file mode 100644
index 0000000000..368c954439
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-misc.h
@@ -0,0 +1,331 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_MISC_H
+#define QAPI_VISIT_MISC_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-misc.h"
+
+void visit_type_QMPCapabilityList(Visitor *v, const char *name, QMPCapabilityList **obj, Error **errp);
+
+void visit_type_q_obj_qmp_capabilities_arg_members(Visitor *v, q_obj_qmp_capabilities_arg *obj, Error **errp);
+void visit_type_QMPCapability(Visitor *v, const char *name, QMPCapability *obj, Error **errp);
+
+void visit_type_VersionTriple_members(Visitor *v, VersionTriple *obj, Error **errp);
+void visit_type_VersionTriple(Visitor *v, const char *name, VersionTriple **obj, Error **errp);
+
+void visit_type_VersionInfo_members(Visitor *v, VersionInfo *obj, Error **errp);
+void visit_type_VersionInfo(Visitor *v, const char *name, VersionInfo **obj, Error **errp);
+
+void visit_type_CommandInfo_members(Visitor *v, CommandInfo *obj, Error **errp);
+void visit_type_CommandInfo(Visitor *v, const char *name, CommandInfo **obj, Error **errp);
+void visit_type_CommandInfoList(Visitor *v, const char *name, CommandInfoList **obj, Error **errp);
+void visit_type_LostTickPolicy(Visitor *v, const char *name, LostTickPolicy *obj, Error **errp);
+
+void visit_type_q_obj_add_client_arg_members(Visitor *v, q_obj_add_client_arg *obj, Error **errp);
+
+void visit_type_NameInfo_members(Visitor *v, NameInfo *obj, Error **errp);
+void visit_type_NameInfo(Visitor *v, const char *name, NameInfo **obj, Error **errp);
+
+void visit_type_KvmInfo_members(Visitor *v, KvmInfo *obj, Error **errp);
+void visit_type_KvmInfo(Visitor *v, const char *name, KvmInfo **obj, Error **errp);
+
+void visit_type_UuidInfo_members(Visitor *v, UuidInfo *obj, Error **errp);
+void visit_type_UuidInfo(Visitor *v, const char *name, UuidInfo **obj, Error **errp);
+
+void visit_type_EventInfo_members(Visitor *v, EventInfo *obj, Error **errp);
+void visit_type_EventInfo(Visitor *v, const char *name, EventInfo **obj, Error **errp);
+void visit_type_EventInfoList(Visitor *v, const char *name, EventInfoList **obj, Error **errp);
+void visit_type_CpuInfoArch(Visitor *v, const char *name, CpuInfoArch *obj, Error **errp);
+
+void visit_type_q_obj_CpuInfo_base_members(Visitor *v, q_obj_CpuInfo_base *obj, Error **errp);
+
+void visit_type_CpuInfo_members(Visitor *v, CpuInfo *obj, Error **errp);
+void visit_type_CpuInfo(Visitor *v, const char *name, CpuInfo **obj, Error **errp);
+
+void visit_type_CpuInfoX86_members(Visitor *v, CpuInfoX86 *obj, Error **errp);
+void visit_type_CpuInfoX86(Visitor *v, const char *name, CpuInfoX86 **obj, Error **errp);
+
+void visit_type_CpuInfoSPARC_members(Visitor *v, CpuInfoSPARC *obj, Error **errp);
+void visit_type_CpuInfoSPARC(Visitor *v, const char *name, CpuInfoSPARC **obj, Error **errp);
+
+void visit_type_CpuInfoPPC_members(Visitor *v, CpuInfoPPC *obj, Error **errp);
+void visit_type_CpuInfoPPC(Visitor *v, const char *name, CpuInfoPPC **obj, Error **errp);
+
+void visit_type_CpuInfoMIPS_members(Visitor *v, CpuInfoMIPS *obj, Error **errp);
+void visit_type_CpuInfoMIPS(Visitor *v, const char *name, CpuInfoMIPS **obj, Error **errp);
+
+void visit_type_CpuInfoTricore_members(Visitor *v, CpuInfoTricore *obj, Error **errp);
+void visit_type_CpuInfoTricore(Visitor *v, const char *name, CpuInfoTricore **obj, Error **errp);
+
+void visit_type_CpuInfoRISCV_members(Visitor *v, CpuInfoRISCV *obj, Error **errp);
+void visit_type_CpuInfoRISCV(Visitor *v, const char *name, CpuInfoRISCV **obj, Error **errp);
+
+void visit_type_CpuInfoOther_members(Visitor *v, CpuInfoOther *obj, Error **errp);
+void visit_type_CpuInfoOther(Visitor *v, const char *name, CpuInfoOther **obj, Error **errp);
+void visit_type_CpuS390State(Visitor *v, const char *name, CpuS390State *obj, Error **errp);
+
+void visit_type_CpuInfoS390_members(Visitor *v, CpuInfoS390 *obj, Error **errp);
+void visit_type_CpuInfoS390(Visitor *v, const char *name, CpuInfoS390 **obj, Error **errp);
+void visit_type_CpuInfoList(Visitor *v, const char *name, CpuInfoList **obj, Error **errp);
+
+void visit_type_q_obj_CpuInfoFast_base_members(Visitor *v, q_obj_CpuInfoFast_base *obj, Error **errp);
+
+void visit_type_CpuInfoFast_members(Visitor *v, CpuInfoFast *obj, Error **errp);
+void visit_type_CpuInfoFast(Visitor *v, const char *name, CpuInfoFast **obj, Error **errp);
+void visit_type_CpuInfoFastList(Visitor *v, const char *name, CpuInfoFastList **obj, Error **errp);
+
+void visit_type_IOThreadInfo_members(Visitor *v, IOThreadInfo *obj, Error **errp);
+void visit_type_IOThreadInfo(Visitor *v, const char *name, IOThreadInfo **obj, Error **errp);
+void visit_type_IOThreadInfoList(Visitor *v, const char *name, IOThreadInfoList **obj, Error **errp);
+
+void visit_type_BalloonInfo_members(Visitor *v, BalloonInfo *obj, Error **errp);
+void visit_type_BalloonInfo(Visitor *v, const char *name, BalloonInfo **obj, Error **errp);
+
+void visit_type_q_obj_BALLOON_CHANGE_arg_members(Visitor *v, q_obj_BALLOON_CHANGE_arg *obj, Error **errp);
+
+void visit_type_PciMemoryRange_members(Visitor *v, PciMemoryRange *obj, Error **errp);
+void visit_type_PciMemoryRange(Visitor *v, const char *name, PciMemoryRange **obj, Error **errp);
+
+void visit_type_PciMemoryRegion_members(Visitor *v, PciMemoryRegion *obj, Error **errp);
+void visit_type_PciMemoryRegion(Visitor *v, const char *name, PciMemoryRegion **obj, Error **errp);
+
+void visit_type_PciBusInfo_members(Visitor *v, PciBusInfo *obj, Error **errp);
+void visit_type_PciBusInfo(Visitor *v, const char *name, PciBusInfo **obj, Error **errp);
+void visit_type_PciDeviceInfoList(Visitor *v, const char *name, PciDeviceInfoList **obj, Error **errp);
+
+void visit_type_PciBridgeInfo_members(Visitor *v, PciBridgeInfo *obj, Error **errp);
+void visit_type_PciBridgeInfo(Visitor *v, const char *name, PciBridgeInfo **obj, Error **errp);
+
+void visit_type_PciDeviceClass_members(Visitor *v, PciDeviceClass *obj, Error **errp);
+void visit_type_PciDeviceClass(Visitor *v, const char *name, PciDeviceClass **obj, Error **errp);
+
+void visit_type_PciDeviceId_members(Visitor *v, PciDeviceId *obj, Error **errp);
+void visit_type_PciDeviceId(Visitor *v, const char *name, PciDeviceId **obj, Error **errp);
+void visit_type_PciMemoryRegionList(Visitor *v, const char *name, PciMemoryRegionList **obj, Error **errp);
+
+void visit_type_PciDeviceInfo_members(Visitor *v, PciDeviceInfo *obj, Error **errp);
+void visit_type_PciDeviceInfo(Visitor *v, const char *name, PciDeviceInfo **obj, Error **errp);
+
+void visit_type_PciInfo_members(Visitor *v, PciInfo *obj, Error **errp);
+void visit_type_PciInfo(Visitor *v, const char *name, PciInfo **obj, Error **errp);
+void visit_type_PciInfoList(Visitor *v, const char *name, PciInfoList **obj, Error **errp);
+
+void visit_type_q_obj_cpu_add_arg_members(Visitor *v, q_obj_cpu_add_arg *obj, Error **errp);
+
+void visit_type_q_obj_memsave_arg_members(Visitor *v, q_obj_memsave_arg *obj, Error **errp);
+
+void visit_type_q_obj_pmemsave_arg_members(Visitor *v, q_obj_pmemsave_arg *obj, Error **errp);
+
+void visit_type_q_obj_balloon_arg_members(Visitor *v, q_obj_balloon_arg *obj, Error **errp);
+
+void visit_type_q_obj_human_monitor_command_arg_members(Visitor *v, q_obj_human_monitor_command_arg *obj, Error **errp);
+
+void visit_type_ObjectPropertyInfo_members(Visitor *v, ObjectPropertyInfo *obj, Error **errp);
+void visit_type_ObjectPropertyInfo(Visitor *v, const char *name, ObjectPropertyInfo **obj, Error **errp);
+
+void visit_type_q_obj_qom_list_arg_members(Visitor *v, q_obj_qom_list_arg *obj, Error **errp);
+void visit_type_ObjectPropertyInfoList(Visitor *v, const char *name, ObjectPropertyInfoList **obj, Error **errp);
+
+void visit_type_q_obj_qom_get_arg_members(Visitor *v, q_obj_qom_get_arg *obj, Error **errp);
+
+void visit_type_q_obj_qom_set_arg_members(Visitor *v, q_obj_qom_set_arg *obj, Error **errp);
+
+void visit_type_q_obj_change_arg_members(Visitor *v, q_obj_change_arg *obj, Error **errp);
+
+void visit_type_ObjectTypeInfo_members(Visitor *v, ObjectTypeInfo *obj, Error **errp);
+void visit_type_ObjectTypeInfo(Visitor *v, const char *name, ObjectTypeInfo **obj, Error **errp);
+
+void visit_type_q_obj_qom_list_types_arg_members(Visitor *v, q_obj_qom_list_types_arg *obj, Error **errp);
+void visit_type_ObjectTypeInfoList(Visitor *v, const char *name, ObjectTypeInfoList **obj, Error **errp);
+
+void visit_type_q_obj_device_list_properties_arg_members(Visitor *v, q_obj_device_list_properties_arg *obj, Error **errp);
+
+void visit_type_q_obj_qom_list_properties_arg_members(Visitor *v, q_obj_qom_list_properties_arg *obj, Error **errp);
+
+void visit_type_q_obj_xen_set_global_dirty_log_arg_members(Visitor *v, q_obj_xen_set_global_dirty_log_arg *obj, Error **errp);
+
+void visit_type_q_obj_device_add_arg_members(Visitor *v, q_obj_device_add_arg *obj, Error **errp);
+
+void visit_type_q_obj_device_del_arg_members(Visitor *v, q_obj_device_del_arg *obj, Error **errp);
+
+void visit_type_q_obj_DEVICE_DELETED_arg_members(Visitor *v, q_obj_DEVICE_DELETED_arg *obj, Error **errp);
+void visit_type_DumpGuestMemoryFormat(Visitor *v, const char *name, DumpGuestMemoryFormat *obj, Error **errp);
+
+void visit_type_q_obj_dump_guest_memory_arg_members(Visitor *v, q_obj_dump_guest_memory_arg *obj, Error **errp);
+void visit_type_DumpStatus(Visitor *v, const char *name, DumpStatus *obj, Error **errp);
+
+void visit_type_DumpQueryResult_members(Visitor *v, DumpQueryResult *obj, Error **errp);
+void visit_type_DumpQueryResult(Visitor *v, const char *name, DumpQueryResult **obj, Error **errp);
+
+void visit_type_q_obj_DUMP_COMPLETED_arg_members(Visitor *v, q_obj_DUMP_COMPLETED_arg *obj, Error **errp);
+void visit_type_DumpGuestMemoryFormatList(Visitor *v, const char *name, DumpGuestMemoryFormatList **obj, Error **errp);
+
+void visit_type_DumpGuestMemoryCapability_members(Visitor *v, DumpGuestMemoryCapability *obj, Error **errp);
+void visit_type_DumpGuestMemoryCapability(Visitor *v, const char *name, DumpGuestMemoryCapability **obj, Error **errp);
+
+void visit_type_q_obj_dump_skeys_arg_members(Visitor *v, q_obj_dump_skeys_arg *obj, Error **errp);
+
+void visit_type_q_obj_object_add_arg_members(Visitor *v, q_obj_object_add_arg *obj, Error **errp);
+
+void visit_type_q_obj_object_del_arg_members(Visitor *v, q_obj_object_del_arg *obj, Error **errp);
+
+void visit_type_q_obj_getfd_arg_members(Visitor *v, q_obj_getfd_arg *obj, Error **errp);
+
+void visit_type_q_obj_closefd_arg_members(Visitor *v, q_obj_closefd_arg *obj, Error **errp);
+
+void visit_type_MachineInfo_members(Visitor *v, MachineInfo *obj, Error **errp);
+void visit_type_MachineInfo(Visitor *v, const char *name, MachineInfo **obj, Error **errp);
+void visit_type_MachineInfoList(Visitor *v, const char *name, MachineInfoList **obj, Error **errp);
+
+void visit_type_CpuDefinitionInfo_members(Visitor *v, CpuDefinitionInfo *obj, Error **errp);
+void visit_type_CpuDefinitionInfo(Visitor *v, const char *name, CpuDefinitionInfo **obj, Error **errp);
+
+void visit_type_MemoryInfo_members(Visitor *v, MemoryInfo *obj, Error **errp);
+void visit_type_MemoryInfo(Visitor *v, const char *name, MemoryInfo **obj, Error **errp);
+void visit_type_CpuDefinitionInfoList(Visitor *v, const char *name, CpuDefinitionInfoList **obj, Error **errp);
+
+void visit_type_CpuModelInfo_members(Visitor *v, CpuModelInfo *obj, Error **errp);
+void visit_type_CpuModelInfo(Visitor *v, const char *name, CpuModelInfo **obj, Error **errp);
+void visit_type_CpuModelExpansionType(Visitor *v, const char *name, CpuModelExpansionType *obj, Error **errp);
+
+void visit_type_CpuModelExpansionInfo_members(Visitor *v, CpuModelExpansionInfo *obj, Error **errp);
+void visit_type_CpuModelExpansionInfo(Visitor *v, const char *name, CpuModelExpansionInfo **obj, Error **errp);
+
+void visit_type_q_obj_query_cpu_model_expansion_arg_members(Visitor *v, q_obj_query_cpu_model_expansion_arg *obj, Error **errp);
+void visit_type_CpuModelCompareResult(Visitor *v, const char *name, CpuModelCompareResult *obj, Error **errp);
+
+void visit_type_CpuModelCompareInfo_members(Visitor *v, CpuModelCompareInfo *obj, Error **errp);
+void visit_type_CpuModelCompareInfo(Visitor *v, const char *name, CpuModelCompareInfo **obj, Error **errp);
+
+void visit_type_q_obj_query_cpu_model_comparison_arg_members(Visitor *v, q_obj_query_cpu_model_comparison_arg *obj, Error **errp);
+
+void visit_type_CpuModelBaselineInfo_members(Visitor *v, CpuModelBaselineInfo *obj, Error **errp);
+void visit_type_CpuModelBaselineInfo(Visitor *v, const char *name, CpuModelBaselineInfo **obj, Error **errp);
+
+void visit_type_q_obj_query_cpu_model_baseline_arg_members(Visitor *v, q_obj_query_cpu_model_baseline_arg *obj, Error **errp);
+
+void visit_type_AddfdInfo_members(Visitor *v, AddfdInfo *obj, Error **errp);
+void visit_type_AddfdInfo(Visitor *v, const char *name, AddfdInfo **obj, Error **errp);
+
+void visit_type_q_obj_add_fd_arg_members(Visitor *v, q_obj_add_fd_arg *obj, Error **errp);
+
+void visit_type_q_obj_remove_fd_arg_members(Visitor *v, q_obj_remove_fd_arg *obj, Error **errp);
+
+void visit_type_FdsetFdInfo_members(Visitor *v, FdsetFdInfo *obj, Error **errp);
+void visit_type_FdsetFdInfo(Visitor *v, const char *name, FdsetFdInfo **obj, Error **errp);
+void visit_type_FdsetFdInfoList(Visitor *v, const char *name, FdsetFdInfoList **obj, Error **errp);
+
+void visit_type_FdsetInfo_members(Visitor *v, FdsetInfo *obj, Error **errp);
+void visit_type_FdsetInfo(Visitor *v, const char *name, FdsetInfo **obj, Error **errp);
+void visit_type_FdsetInfoList(Visitor *v, const char *name, FdsetInfoList **obj, Error **errp);
+
+void visit_type_TargetInfo_members(Visitor *v, TargetInfo *obj, Error **errp);
+void visit_type_TargetInfo(Visitor *v, const char *name, TargetInfo **obj, Error **errp);
+
+void visit_type_AcpiTableOptions_members(Visitor *v, AcpiTableOptions *obj, Error **errp);
+void visit_type_AcpiTableOptions(Visitor *v, const char *name, AcpiTableOptions **obj, Error **errp);
+void visit_type_CommandLineParameterType(Visitor *v, const char *name, CommandLineParameterType *obj, Error **errp);
+
+void visit_type_CommandLineParameterInfo_members(Visitor *v, CommandLineParameterInfo *obj, Error **errp);
+void visit_type_CommandLineParameterInfo(Visitor *v, const char *name, CommandLineParameterInfo **obj, Error **errp);
+void visit_type_CommandLineParameterInfoList(Visitor *v, const char *name, CommandLineParameterInfoList **obj, Error **errp);
+
+void visit_type_CommandLineOptionInfo_members(Visitor *v, CommandLineOptionInfo *obj, Error **errp);
+void visit_type_CommandLineOptionInfo(Visitor *v, const char *name, CommandLineOptionInfo **obj, Error **errp);
+
+void visit_type_q_obj_query_command_line_options_arg_members(Visitor *v, q_obj_query_command_line_options_arg *obj, Error **errp);
+void visit_type_CommandLineOptionInfoList(Visitor *v, const char *name, CommandLineOptionInfoList **obj, Error **errp);
+void visit_type_X86CPURegister32(Visitor *v, const char *name, X86CPURegister32 *obj, Error **errp);
+
+void visit_type_X86CPUFeatureWordInfo_members(Visitor *v, X86CPUFeatureWordInfo *obj, Error **errp);
+void visit_type_X86CPUFeatureWordInfo(Visitor *v, const char *name, X86CPUFeatureWordInfo **obj, Error **errp);
+void visit_type_X86CPUFeatureWordInfoList(Visitor *v, const char *name, X86CPUFeatureWordInfoList **obj, Error **errp);
+
+void visit_type_DummyForceArrays_members(Visitor *v, DummyForceArrays *obj, Error **errp);
+void visit_type_DummyForceArrays(Visitor *v, const char *name, DummyForceArrays **obj, Error **errp);
+void visit_type_NumaOptionsType(Visitor *v, const char *name, NumaOptionsType *obj, Error **errp);
+
+void visit_type_q_obj_NumaOptions_base_members(Visitor *v, q_obj_NumaOptions_base *obj, Error **errp);
+
+void visit_type_NumaOptions_members(Visitor *v, NumaOptions *obj, Error **errp);
+void visit_type_NumaOptions(Visitor *v, const char *name, NumaOptions **obj, Error **errp);
+
+void visit_type_NumaNodeOptions_members(Visitor *v, NumaNodeOptions *obj, Error **errp);
+void visit_type_NumaNodeOptions(Visitor *v, const char *name, NumaNodeOptions **obj, Error **errp);
+
+void visit_type_NumaDistOptions_members(Visitor *v, NumaDistOptions *obj, Error **errp);
+void visit_type_NumaDistOptions(Visitor *v, const char *name, NumaDistOptions **obj, Error **errp);
+
+void visit_type_NumaCpuOptions_members(Visitor *v, NumaCpuOptions *obj, Error **errp);
+void visit_type_NumaCpuOptions(Visitor *v, const char *name, NumaCpuOptions **obj, Error **errp);
+void visit_type_HostMemPolicy(Visitor *v, const char *name, HostMemPolicy *obj, Error **errp);
+
+void visit_type_Memdev_members(Visitor *v, Memdev *obj, Error **errp);
+void visit_type_Memdev(Visitor *v, const char *name, Memdev **obj, Error **errp);
+void visit_type_MemdevList(Visitor *v, const char *name, MemdevList **obj, Error **errp);
+
+void visit_type_PCDIMMDeviceInfo_members(Visitor *v, PCDIMMDeviceInfo *obj, Error **errp);
+void visit_type_PCDIMMDeviceInfo(Visitor *v, const char *name, PCDIMMDeviceInfo **obj, Error **errp);
+
+void visit_type_q_obj_PCDIMMDeviceInfo_wrapper_members(Visitor *v, q_obj_PCDIMMDeviceInfo_wrapper *obj, Error **errp);
+void visit_type_MemoryDeviceInfoKind(Visitor *v, const char *name, MemoryDeviceInfoKind *obj, Error **errp);
+
+void visit_type_MemoryDeviceInfo_members(Visitor *v, MemoryDeviceInfo *obj, Error **errp);
+void visit_type_MemoryDeviceInfo(Visitor *v, const char *name, MemoryDeviceInfo **obj, Error **errp);
+void visit_type_MemoryDeviceInfoList(Visitor *v, const char *name, MemoryDeviceInfoList **obj, Error **errp);
+
+void visit_type_q_obj_MEM_UNPLUG_ERROR_arg_members(Visitor *v, q_obj_MEM_UNPLUG_ERROR_arg *obj, Error **errp);
+void visit_type_ACPISlotType(Visitor *v, const char *name, ACPISlotType *obj, Error **errp);
+
+void visit_type_ACPIOSTInfo_members(Visitor *v, ACPIOSTInfo *obj, Error **errp);
+void visit_type_ACPIOSTInfo(Visitor *v, const char *name, ACPIOSTInfo **obj, Error **errp);
+void visit_type_ACPIOSTInfoList(Visitor *v, const char *name, ACPIOSTInfoList **obj, Error **errp);
+
+void visit_type_q_obj_ACPI_DEVICE_OST_arg_members(Visitor *v, q_obj_ACPI_DEVICE_OST_arg *obj, Error **errp);
+
+void visit_type_q_obj_RTC_CHANGE_arg_members(Visitor *v, q_obj_RTC_CHANGE_arg *obj, Error **errp);
+void visit_type_ReplayMode(Visitor *v, const char *name, ReplayMode *obj, Error **errp);
+
+void visit_type_q_obj_xen_load_devices_state_arg_members(Visitor *v, q_obj_xen_load_devices_state_arg *obj, Error **errp);
+
+void visit_type_GICCapability_members(Visitor *v, GICCapability *obj, Error **errp);
+void visit_type_GICCapability(Visitor *v, const char *name, GICCapability **obj, Error **errp);
+void visit_type_GICCapabilityList(Visitor *v, const char *name, GICCapabilityList **obj, Error **errp);
+
+void visit_type_CpuInstanceProperties_members(Visitor *v, CpuInstanceProperties *obj, Error **errp);
+void visit_type_CpuInstanceProperties(Visitor *v, const char *name, CpuInstanceProperties **obj, Error **errp);
+
+void visit_type_HotpluggableCPU_members(Visitor *v, HotpluggableCPU *obj, Error **errp);
+void visit_type_HotpluggableCPU(Visitor *v, const char *name, HotpluggableCPU **obj, Error **errp);
+void visit_type_HotpluggableCPUList(Visitor *v, const char *name, HotpluggableCPUList **obj, Error **errp);
+
+void visit_type_GuidInfo_members(Visitor *v, GuidInfo *obj, Error **errp);
+void visit_type_GuidInfo(Visitor *v, const char *name, GuidInfo **obj, Error **errp);
+void visit_type_SevState(Visitor *v, const char *name, SevState *obj, Error **errp);
+
+void visit_type_SevInfo_members(Visitor *v, SevInfo *obj, Error **errp);
+void visit_type_SevInfo(Visitor *v, const char *name, SevInfo **obj, Error **errp);
+
+void visit_type_SevLaunchMeasureInfo_members(Visitor *v, SevLaunchMeasureInfo *obj, Error **errp);
+void visit_type_SevLaunchMeasureInfo(Visitor *v, const char *name, SevLaunchMeasureInfo **obj, Error **errp);
+
+void visit_type_SevCapability_members(Visitor *v, SevCapability *obj, Error **errp);
+void visit_type_SevCapability(Visitor *v, const char *name, SevCapability **obj, Error **errp);
+void visit_type_CommandDropReason(Visitor *v, const char *name, CommandDropReason *obj, Error **errp);
+
+void visit_type_q_obj_COMMAND_DROPPED_arg_members(Visitor *v, q_obj_COMMAND_DROPPED_arg *obj, Error **errp);
+
+void visit_type_q_obj_x_oob_test_arg_members(Visitor *v, q_obj_x_oob_test_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_MISC_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-net.c b/qemu2-auto-generated/qapi/qapi-visit-net.c
new file mode 100644
index 0000000000..baa3a87de5
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-net.c
@@ -0,0 +1,1318 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-net.h"
+
+void visit_type_q_obj_set_link_arg_members(Visitor *v, q_obj_set_link_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "up", &obj->up, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_netdev_add_arg_members(Visitor *v, q_obj_netdev_add_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_netdev_del_arg_members(Visitor *v, q_obj_netdev_del_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNoneOptions_members(Visitor *v, NetdevNoneOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNoneOptions(Visitor *v, const char *name, NetdevNoneOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevNoneOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevNoneOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevNoneOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyNicOptions_members(Visitor *v, NetLegacyNicOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "netdev", &obj->has_netdev)) {
+ visit_type_str(v, "netdev", &obj->netdev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "macaddr", &obj->has_macaddr)) {
+ visit_type_str(v, "macaddr", &obj->macaddr, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "model", &obj->has_model)) {
+ visit_type_str(v, "model", &obj->model, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "addr", &obj->has_addr)) {
+ visit_type_str(v, "addr", &obj->addr, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vectors", &obj->has_vectors)) {
+ visit_type_uint32(v, "vectors", &obj->vectors, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyNicOptions(Visitor *v, const char *name, NetLegacyNicOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetLegacyNicOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetLegacyNicOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetLegacyNicOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_StringList(Visitor *v, const char *name, StringList **obj, Error **errp)
+{
+ Error *err = NULL;
+ StringList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (StringList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_String(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_StringList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevUserOptions_members(Visitor *v, NetdevUserOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "hostname", &obj->has_hostname)) {
+ visit_type_str(v, "hostname", &obj->hostname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "restrict", &obj->has_q_restrict)) {
+ visit_type_bool(v, "restrict", &obj->q_restrict, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv4", &obj->has_ipv4)) {
+ visit_type_bool(v, "ipv4", &obj->ipv4, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
+ visit_type_bool(v, "ipv6", &obj->ipv6, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip", &obj->has_ip)) {
+ visit_type_str(v, "ip", &obj->ip, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "net", &obj->has_net)) {
+ visit_type_str(v, "net", &obj->net, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "host", &obj->has_host)) {
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tftp", &obj->has_tftp)) {
+ visit_type_str(v, "tftp", &obj->tftp, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "bootfile", &obj->has_bootfile)) {
+ visit_type_str(v, "bootfile", &obj->bootfile, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "dhcpstart", &obj->has_dhcpstart)) {
+ visit_type_str(v, "dhcpstart", &obj->dhcpstart, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "dns", &obj->has_dns)) {
+ visit_type_str(v, "dns", &obj->dns, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "dnssearch", &obj->has_dnssearch)) {
+ visit_type_StringList(v, "dnssearch", &obj->dnssearch, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6-prefix", &obj->has_ipv6_prefix)) {
+ visit_type_str(v, "ipv6-prefix", &obj->ipv6_prefix, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6-prefixlen", &obj->has_ipv6_prefixlen)) {
+ visit_type_int(v, "ipv6-prefixlen", &obj->ipv6_prefixlen, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6-host", &obj->has_ipv6_host)) {
+ visit_type_str(v, "ipv6-host", &obj->ipv6_host, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6-dns", &obj->has_ipv6_dns)) {
+ visit_type_str(v, "ipv6-dns", &obj->ipv6_dns, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "smb", &obj->has_smb)) {
+ visit_type_str(v, "smb", &obj->smb, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "smbserver", &obj->has_smbserver)) {
+ visit_type_str(v, "smbserver", &obj->smbserver, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "hostfwd", &obj->has_hostfwd)) {
+ visit_type_StringList(v, "hostfwd", &obj->hostfwd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "guestfwd", &obj->has_guestfwd)) {
+ visit_type_StringList(v, "guestfwd", &obj->guestfwd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevUserOptions(Visitor *v, const char *name, NetdevUserOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevUserOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevUserOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevUserOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevTapOptions_members(Visitor *v, NetdevTapOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "ifname", &obj->has_ifname)) {
+ visit_type_str(v, "ifname", &obj->ifname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "fd", &obj->has_fd)) {
+ visit_type_str(v, "fd", &obj->fd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "fds", &obj->has_fds)) {
+ visit_type_str(v, "fds", &obj->fds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "script", &obj->has_script)) {
+ visit_type_str(v, "script", &obj->script, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "downscript", &obj->has_downscript)) {
+ visit_type_str(v, "downscript", &obj->downscript, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "br", &obj->has_br)) {
+ visit_type_str(v, "br", &obj->br, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "helper", &obj->has_helper)) {
+ visit_type_str(v, "helper", &obj->helper, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "sndbuf", &obj->has_sndbuf)) {
+ visit_type_size(v, "sndbuf", &obj->sndbuf, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vnet_hdr", &obj->has_vnet_hdr)) {
+ visit_type_bool(v, "vnet_hdr", &obj->vnet_hdr, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vhost", &obj->has_vhost)) {
+ visit_type_bool(v, "vhost", &obj->vhost, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vhostfd", &obj->has_vhostfd)) {
+ visit_type_str(v, "vhostfd", &obj->vhostfd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vhostfds", &obj->has_vhostfds)) {
+ visit_type_str(v, "vhostfds", &obj->vhostfds, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vhostforce", &obj->has_vhostforce)) {
+ visit_type_bool(v, "vhostforce", &obj->vhostforce, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "queues", &obj->has_queues)) {
+ visit_type_uint32(v, "queues", &obj->queues, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "poll-us", &obj->has_poll_us)) {
+ visit_type_uint32(v, "poll-us", &obj->poll_us, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevTapOptions(Visitor *v, const char *name, NetdevTapOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevTapOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevTapOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevTapOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevSocketOptions_members(Visitor *v, NetdevSocketOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "fd", &obj->has_fd)) {
+ visit_type_str(v, "fd", &obj->fd, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "listen", &obj->has_listen)) {
+ visit_type_str(v, "listen", &obj->listen, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "connect", &obj->has_connect)) {
+ visit_type_str(v, "connect", &obj->connect, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "mcast", &obj->has_mcast)) {
+ visit_type_str(v, "mcast", &obj->mcast, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "localaddr", &obj->has_localaddr)) {
+ visit_type_str(v, "localaddr", &obj->localaddr, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "udp", &obj->has_udp)) {
+ visit_type_str(v, "udp", &obj->udp, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevSocketOptions(Visitor *v, const char *name, NetdevSocketOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevSocketOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevSocketOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevSocketOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevL2TPv3Options_members(Visitor *v, NetdevL2TPv3Options *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "src", &obj->src, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "dst", &obj->dst, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "srcport", &obj->has_srcport)) {
+ visit_type_str(v, "srcport", &obj->srcport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "dstport", &obj->has_dstport)) {
+ visit_type_str(v, "dstport", &obj->dstport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
+ visit_type_bool(v, "ipv6", &obj->ipv6, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "udp", &obj->has_udp)) {
+ visit_type_bool(v, "udp", &obj->udp, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cookie64", &obj->has_cookie64)) {
+ visit_type_bool(v, "cookie64", &obj->cookie64, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "counter", &obj->has_counter)) {
+ visit_type_bool(v, "counter", &obj->counter, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pincounter", &obj->has_pincounter)) {
+ visit_type_bool(v, "pincounter", &obj->pincounter, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "txcookie", &obj->has_txcookie)) {
+ visit_type_uint64(v, "txcookie", &obj->txcookie, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "rxcookie", &obj->has_rxcookie)) {
+ visit_type_uint64(v, "rxcookie", &obj->rxcookie, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_uint32(v, "txsession", &obj->txsession, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "rxsession", &obj->has_rxsession)) {
+ visit_type_uint32(v, "rxsession", &obj->rxsession, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "offset", &obj->has_offset)) {
+ visit_type_uint32(v, "offset", &obj->offset, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevL2TPv3Options(Visitor *v, const char *name, NetdevL2TPv3Options **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevL2TPv3Options), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevL2TPv3Options_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevL2TPv3Options(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevVdeOptions_members(Visitor *v, NetdevVdeOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "sock", &obj->has_sock)) {
+ visit_type_str(v, "sock", &obj->sock, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "port", &obj->has_port)) {
+ visit_type_uint16(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group", &obj->has_group)) {
+ visit_type_str(v, "group", &obj->group, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "mode", &obj->has_mode)) {
+ visit_type_uint16(v, "mode", &obj->mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevVdeOptions(Visitor *v, const char *name, NetdevVdeOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevVdeOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevVdeOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevVdeOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevBridgeOptions_members(Visitor *v, NetdevBridgeOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "br", &obj->has_br)) {
+ visit_type_str(v, "br", &obj->br, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "helper", &obj->has_helper)) {
+ visit_type_str(v, "helper", &obj->helper, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevBridgeOptions(Visitor *v, const char *name, NetdevBridgeOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevBridgeOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevBridgeOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevBridgeOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevHubPortOptions_members(Visitor *v, NetdevHubPortOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int32(v, "hubid", &obj->hubid, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "netdev", &obj->has_netdev)) {
+ visit_type_str(v, "netdev", &obj->netdev, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevHubPortOptions(Visitor *v, const char *name, NetdevHubPortOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevHubPortOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevHubPortOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevHubPortOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNetmapOptions_members(Visitor *v, NetdevNetmapOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "ifname", &obj->ifname, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "devname", &obj->has_devname)) {
+ visit_type_str(v, "devname", &obj->devname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevNetmapOptions(Visitor *v, const char *name, NetdevNetmapOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevNetmapOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevNetmapOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevNetmapOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevVhostUserOptions_members(Visitor *v, NetdevVhostUserOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "chardev", &obj->chardev, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "vhostforce", &obj->has_vhostforce)) {
+ visit_type_bool(v, "vhostforce", &obj->vhostforce, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "queues", &obj->has_queues)) {
+ visit_type_int(v, "queues", &obj->queues, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetdevVhostUserOptions(Visitor *v, const char *name, NetdevVhostUserOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetdevVhostUserOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetdevVhostUserOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetdevVhostUserOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetClientDriver(Visitor *v, const char *name, NetClientDriver *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NetClientDriver_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_Netdev_base_members(Visitor *v, q_obj_Netdev_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_NetClientDriver(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Netdev_members(Visitor *v, Netdev *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_Netdev_base_members(v, (q_obj_Netdev_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case NET_CLIENT_DRIVER_NONE:
+ visit_type_NetdevNoneOptions_members(v, &obj->u.none, &err);
+ break;
+ case NET_CLIENT_DRIVER_NIC:
+ visit_type_NetLegacyNicOptions_members(v, &obj->u.nic, &err);
+ break;
+ case NET_CLIENT_DRIVER_USER:
+ visit_type_NetdevUserOptions_members(v, &obj->u.user, &err);
+ break;
+ case NET_CLIENT_DRIVER_TAP:
+ visit_type_NetdevTapOptions_members(v, &obj->u.tap, &err);
+ break;
+ case NET_CLIENT_DRIVER_L2TPV3:
+ visit_type_NetdevL2TPv3Options_members(v, &obj->u.l2tpv3, &err);
+ break;
+ case NET_CLIENT_DRIVER_SOCKET:
+ visit_type_NetdevSocketOptions_members(v, &obj->u.socket, &err);
+ break;
+ case NET_CLIENT_DRIVER_VDE:
+ visit_type_NetdevVdeOptions_members(v, &obj->u.vde, &err);
+ break;
+ case NET_CLIENT_DRIVER_BRIDGE:
+ visit_type_NetdevBridgeOptions_members(v, &obj->u.bridge, &err);
+ break;
+ case NET_CLIENT_DRIVER_HUBPORT:
+ visit_type_NetdevHubPortOptions_members(v, &obj->u.hubport, &err);
+ break;
+ case NET_CLIENT_DRIVER_NETMAP:
+ visit_type_NetdevNetmapOptions_members(v, &obj->u.netmap, &err);
+ break;
+ case NET_CLIENT_DRIVER_VHOST_USER:
+ visit_type_NetdevVhostUserOptions_members(v, &obj->u.vhost_user, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Netdev(Visitor *v, const char *name, Netdev **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Netdev), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Netdev_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Netdev(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacy_members(Visitor *v, NetLegacy *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "vlan", &obj->has_vlan)) {
+ visit_type_int32(v, "vlan", &obj->vlan, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "id", &obj->has_id)) {
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_NetLegacyOptions(v, "opts", &obj->opts, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacy(Visitor *v, const char *name, NetLegacy **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetLegacy), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetLegacy_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetLegacy(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyOptionsType(Visitor *v, const char *name, NetLegacyOptionsType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NetLegacyOptionsType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_NetLegacyOptions_base_members(Visitor *v, q_obj_NetLegacyOptions_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_NetLegacyOptionsType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyOptions_members(Visitor *v, NetLegacyOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_NetLegacyOptions_base_members(v, (q_obj_NetLegacyOptions_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case NET_LEGACY_OPTIONS_TYPE_NONE:
+ visit_type_NetdevNoneOptions_members(v, &obj->u.none, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_NIC:
+ visit_type_NetLegacyNicOptions_members(v, &obj->u.nic, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_USER:
+ visit_type_NetdevUserOptions_members(v, &obj->u.user, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_TAP:
+ visit_type_NetdevTapOptions_members(v, &obj->u.tap, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_L2TPV3:
+ visit_type_NetdevL2TPv3Options_members(v, &obj->u.l2tpv3, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_SOCKET:
+ visit_type_NetdevSocketOptions_members(v, &obj->u.socket, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_VDE:
+ visit_type_NetdevVdeOptions_members(v, &obj->u.vde, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_BRIDGE:
+ visit_type_NetdevBridgeOptions_members(v, &obj->u.bridge, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_NETMAP:
+ visit_type_NetdevNetmapOptions_members(v, &obj->u.netmap, &err);
+ break;
+ case NET_LEGACY_OPTIONS_TYPE_VHOST_USER:
+ visit_type_NetdevVhostUserOptions_members(v, &obj->u.vhost_user, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetLegacyOptions(Visitor *v, const char *name, NetLegacyOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NetLegacyOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NetLegacyOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NetLegacyOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NetFilterDirection(Visitor *v, const char *name, NetFilterDirection *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NetFilterDirection_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_RxState(Visitor *v, const char *name, RxState *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &RxState_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_RxFilterInfo_members(Visitor *v, RxFilterInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "promiscuous", &obj->promiscuous, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RxState(v, "multicast", &obj->multicast, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RxState(v, "unicast", &obj->unicast, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RxState(v, "vlan", &obj->vlan, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "broadcast-allowed", &obj->broadcast_allowed, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "multicast-overflow", &obj->multicast_overflow, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "unicast-overflow", &obj->unicast_overflow, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "main-mac", &obj->main_mac, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_intList(v, "vlan-table", &obj->vlan_table, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_strList(v, "unicast-table", &obj->unicast_table, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_strList(v, "multicast-table", &obj->multicast_table, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RxFilterInfo(Visitor *v, const char *name, RxFilterInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RxFilterInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RxFilterInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RxFilterInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_rx_filter_arg_members(Visitor *v, q_obj_query_rx_filter_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RxFilterInfoList(Visitor *v, const char *name, RxFilterInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ RxFilterInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (RxFilterInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_RxFilterInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RxFilterInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_NIC_RX_FILTER_CHANGED_arg_members(Visitor *v, q_obj_NIC_RX_FILTER_CHANGED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "name", &obj->has_name)) {
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_net_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-net.h b/qemu2-auto-generated/qapi/qapi-visit-net.h
new file mode 100644
index 0000000000..53f4e4cf4b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-net.h
@@ -0,0 +1,86 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_NET_H
+#define QAPI_VISIT_NET_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-net.h"
+
+#include "qapi-visit-common.h"
+
+void visit_type_q_obj_set_link_arg_members(Visitor *v, q_obj_set_link_arg *obj, Error **errp);
+
+void visit_type_q_obj_netdev_add_arg_members(Visitor *v, q_obj_netdev_add_arg *obj, Error **errp);
+
+void visit_type_q_obj_netdev_del_arg_members(Visitor *v, q_obj_netdev_del_arg *obj, Error **errp);
+
+void visit_type_NetdevNoneOptions_members(Visitor *v, NetdevNoneOptions *obj, Error **errp);
+void visit_type_NetdevNoneOptions(Visitor *v, const char *name, NetdevNoneOptions **obj, Error **errp);
+
+void visit_type_NetLegacyNicOptions_members(Visitor *v, NetLegacyNicOptions *obj, Error **errp);
+void visit_type_NetLegacyNicOptions(Visitor *v, const char *name, NetLegacyNicOptions **obj, Error **errp);
+void visit_type_StringList(Visitor *v, const char *name, StringList **obj, Error **errp);
+
+void visit_type_NetdevUserOptions_members(Visitor *v, NetdevUserOptions *obj, Error **errp);
+void visit_type_NetdevUserOptions(Visitor *v, const char *name, NetdevUserOptions **obj, Error **errp);
+
+void visit_type_NetdevTapOptions_members(Visitor *v, NetdevTapOptions *obj, Error **errp);
+void visit_type_NetdevTapOptions(Visitor *v, const char *name, NetdevTapOptions **obj, Error **errp);
+
+void visit_type_NetdevSocketOptions_members(Visitor *v, NetdevSocketOptions *obj, Error **errp);
+void visit_type_NetdevSocketOptions(Visitor *v, const char *name, NetdevSocketOptions **obj, Error **errp);
+
+void visit_type_NetdevL2TPv3Options_members(Visitor *v, NetdevL2TPv3Options *obj, Error **errp);
+void visit_type_NetdevL2TPv3Options(Visitor *v, const char *name, NetdevL2TPv3Options **obj, Error **errp);
+
+void visit_type_NetdevVdeOptions_members(Visitor *v, NetdevVdeOptions *obj, Error **errp);
+void visit_type_NetdevVdeOptions(Visitor *v, const char *name, NetdevVdeOptions **obj, Error **errp);
+
+void visit_type_NetdevBridgeOptions_members(Visitor *v, NetdevBridgeOptions *obj, Error **errp);
+void visit_type_NetdevBridgeOptions(Visitor *v, const char *name, NetdevBridgeOptions **obj, Error **errp);
+
+void visit_type_NetdevHubPortOptions_members(Visitor *v, NetdevHubPortOptions *obj, Error **errp);
+void visit_type_NetdevHubPortOptions(Visitor *v, const char *name, NetdevHubPortOptions **obj, Error **errp);
+
+void visit_type_NetdevNetmapOptions_members(Visitor *v, NetdevNetmapOptions *obj, Error **errp);
+void visit_type_NetdevNetmapOptions(Visitor *v, const char *name, NetdevNetmapOptions **obj, Error **errp);
+
+void visit_type_NetdevVhostUserOptions_members(Visitor *v, NetdevVhostUserOptions *obj, Error **errp);
+void visit_type_NetdevVhostUserOptions(Visitor *v, const char *name, NetdevVhostUserOptions **obj, Error **errp);
+void visit_type_NetClientDriver(Visitor *v, const char *name, NetClientDriver *obj, Error **errp);
+
+void visit_type_q_obj_Netdev_base_members(Visitor *v, q_obj_Netdev_base *obj, Error **errp);
+
+void visit_type_Netdev_members(Visitor *v, Netdev *obj, Error **errp);
+void visit_type_Netdev(Visitor *v, const char *name, Netdev **obj, Error **errp);
+
+void visit_type_NetLegacy_members(Visitor *v, NetLegacy *obj, Error **errp);
+void visit_type_NetLegacy(Visitor *v, const char *name, NetLegacy **obj, Error **errp);
+void visit_type_NetLegacyOptionsType(Visitor *v, const char *name, NetLegacyOptionsType *obj, Error **errp);
+
+void visit_type_q_obj_NetLegacyOptions_base_members(Visitor *v, q_obj_NetLegacyOptions_base *obj, Error **errp);
+
+void visit_type_NetLegacyOptions_members(Visitor *v, NetLegacyOptions *obj, Error **errp);
+void visit_type_NetLegacyOptions(Visitor *v, const char *name, NetLegacyOptions **obj, Error **errp);
+void visit_type_NetFilterDirection(Visitor *v, const char *name, NetFilterDirection *obj, Error **errp);
+void visit_type_RxState(Visitor *v, const char *name, RxState *obj, Error **errp);
+
+void visit_type_RxFilterInfo_members(Visitor *v, RxFilterInfo *obj, Error **errp);
+void visit_type_RxFilterInfo(Visitor *v, const char *name, RxFilterInfo **obj, Error **errp);
+
+void visit_type_q_obj_query_rx_filter_arg_members(Visitor *v, q_obj_query_rx_filter_arg *obj, Error **errp);
+void visit_type_RxFilterInfoList(Visitor *v, const char *name, RxFilterInfoList **obj, Error **errp);
+
+void visit_type_q_obj_NIC_RX_FILTER_CHANGED_arg_members(Visitor *v, q_obj_NIC_RX_FILTER_CHANGED_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_NET_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-rocker.c b/qemu2-auto-generated/qapi/qapi-visit-rocker.c
new file mode 100644
index 0000000000..03e6c0c191
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-rocker.c
@@ -0,0 +1,705 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-rocker.h"
+
+void visit_type_RockerSwitch_members(Visitor *v, RockerSwitch *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "ports", &obj->ports, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerSwitch(Visitor *v, const char *name, RockerSwitch **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerSwitch), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerSwitch_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerSwitch(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_rocker_arg_members(Visitor *v, q_obj_query_rocker_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerPortDuplex(Visitor *v, const char *name, RockerPortDuplex *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &RockerPortDuplex_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_RockerPortAutoneg(Visitor *v, const char *name, RockerPortAutoneg *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &RockerPortAutoneg_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_RockerPort_members(Visitor *v, RockerPort *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "enabled", &obj->enabled, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "link-up", &obj->link_up, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "speed", &obj->speed, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RockerPortDuplex(v, "duplex", &obj->duplex, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RockerPortAutoneg(v, "autoneg", &obj->autoneg, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerPort(Visitor *v, const char *name, RockerPort **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerPort), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerPort_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerPort(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_rocker_ports_arg_members(Visitor *v, q_obj_query_rocker_ports_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerPortList(Visitor *v, const char *name, RockerPortList **obj, Error **errp)
+{
+ Error *err = NULL;
+ RockerPortList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (RockerPortList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_RockerPort(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerPortList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowKey_members(Visitor *v, RockerOfDpaFlowKey *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint32(v, "priority", &obj->priority, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint32(v, "tbl-id", &obj->tbl_id, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "in-pport", &obj->has_in_pport)) {
+ visit_type_uint32(v, "in-pport", &obj->in_pport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tunnel-id", &obj->has_tunnel_id)) {
+ visit_type_uint32(v, "tunnel-id", &obj->tunnel_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vlan-id", &obj->has_vlan_id)) {
+ visit_type_uint16(v, "vlan-id", &obj->vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "eth-type", &obj->has_eth_type)) {
+ visit_type_uint16(v, "eth-type", &obj->eth_type, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "eth-src", &obj->has_eth_src)) {
+ visit_type_str(v, "eth-src", &obj->eth_src, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "eth-dst", &obj->has_eth_dst)) {
+ visit_type_str(v, "eth-dst", &obj->eth_dst, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip-proto", &obj->has_ip_proto)) {
+ visit_type_uint8(v, "ip-proto", &obj->ip_proto, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip-tos", &obj->has_ip_tos)) {
+ visit_type_uint8(v, "ip-tos", &obj->ip_tos, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip-dst", &obj->has_ip_dst)) {
+ visit_type_str(v, "ip-dst", &obj->ip_dst, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowKey(Visitor *v, const char *name, RockerOfDpaFlowKey **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowKey), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerOfDpaFlowKey_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaFlowKey(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowMask_members(Visitor *v, RockerOfDpaFlowMask *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "in-pport", &obj->has_in_pport)) {
+ visit_type_uint32(v, "in-pport", &obj->in_pport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tunnel-id", &obj->has_tunnel_id)) {
+ visit_type_uint32(v, "tunnel-id", &obj->tunnel_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vlan-id", &obj->has_vlan_id)) {
+ visit_type_uint16(v, "vlan-id", &obj->vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "eth-src", &obj->has_eth_src)) {
+ visit_type_str(v, "eth-src", &obj->eth_src, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "eth-dst", &obj->has_eth_dst)) {
+ visit_type_str(v, "eth-dst", &obj->eth_dst, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip-proto", &obj->has_ip_proto)) {
+ visit_type_uint8(v, "ip-proto", &obj->ip_proto, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ip-tos", &obj->has_ip_tos)) {
+ visit_type_uint8(v, "ip-tos", &obj->ip_tos, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowMask(Visitor *v, const char *name, RockerOfDpaFlowMask **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowMask), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerOfDpaFlowMask_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaFlowMask(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowAction_members(Visitor *v, RockerOfDpaFlowAction *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "goto-tbl", &obj->has_goto_tbl)) {
+ visit_type_uint32(v, "goto-tbl", &obj->goto_tbl, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group-id", &obj->has_group_id)) {
+ visit_type_uint32(v, "group-id", &obj->group_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tunnel-lport", &obj->has_tunnel_lport)) {
+ visit_type_uint32(v, "tunnel-lport", &obj->tunnel_lport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vlan-id", &obj->has_vlan_id)) {
+ visit_type_uint16(v, "vlan-id", &obj->vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "new-vlan-id", &obj->has_new_vlan_id)) {
+ visit_type_uint16(v, "new-vlan-id", &obj->new_vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "out-pport", &obj->has_out_pport)) {
+ visit_type_uint32(v, "out-pport", &obj->out_pport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowAction(Visitor *v, const char *name, RockerOfDpaFlowAction **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlowAction), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerOfDpaFlowAction_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaFlowAction(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlow_members(Visitor *v, RockerOfDpaFlow *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint64(v, "cookie", &obj->cookie, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "hits", &obj->hits, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RockerOfDpaFlowKey(v, "key", &obj->key, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RockerOfDpaFlowMask(v, "mask", &obj->mask, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RockerOfDpaFlowAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlow(Visitor *v, const char *name, RockerOfDpaFlow **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaFlow), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerOfDpaFlow_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaFlow(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_rocker_of_dpa_flows_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_flows_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "tbl-id", &obj->has_tbl_id)) {
+ visit_type_uint32(v, "tbl-id", &obj->tbl_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaFlowList(Visitor *v, const char *name, RockerOfDpaFlowList **obj, Error **errp)
+{
+ Error *err = NULL;
+ RockerOfDpaFlowList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (RockerOfDpaFlowList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_RockerOfDpaFlow(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaFlowList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaGroup_members(Visitor *v, RockerOfDpaGroup *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint32(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint8(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "vlan-id", &obj->has_vlan_id)) {
+ visit_type_uint16(v, "vlan-id", &obj->vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pport", &obj->has_pport)) {
+ visit_type_uint32(v, "pport", &obj->pport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "index", &obj->has_index)) {
+ visit_type_uint32(v, "index", &obj->index, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "out-pport", &obj->has_out_pport)) {
+ visit_type_uint32(v, "out-pport", &obj->out_pport, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group-id", &obj->has_group_id)) {
+ visit_type_uint32(v, "group-id", &obj->group_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "set-vlan-id", &obj->has_set_vlan_id)) {
+ visit_type_uint16(v, "set-vlan-id", &obj->set_vlan_id, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "pop-vlan", &obj->has_pop_vlan)) {
+ visit_type_uint8(v, "pop-vlan", &obj->pop_vlan, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "group-ids", &obj->has_group_ids)) {
+ visit_type_uint32List(v, "group-ids", &obj->group_ids, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "set-eth-src", &obj->has_set_eth_src)) {
+ visit_type_str(v, "set-eth-src", &obj->set_eth_src, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "set-eth-dst", &obj->has_set_eth_dst)) {
+ visit_type_str(v, "set-eth-dst", &obj->set_eth_dst, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ttl-check", &obj->has_ttl_check)) {
+ visit_type_uint8(v, "ttl-check", &obj->ttl_check, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaGroup(Visitor *v, const char *name, RockerOfDpaGroup **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(RockerOfDpaGroup), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_RockerOfDpaGroup_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaGroup(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_query_rocker_of_dpa_groups_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_groups_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "type", &obj->has_type)) {
+ visit_type_uint8(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_RockerOfDpaGroupList(Visitor *v, const char *name, RockerOfDpaGroupList **obj, Error **errp)
+{
+ Error *err = NULL;
+ RockerOfDpaGroupList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (RockerOfDpaGroupList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_RockerOfDpaGroup(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_RockerOfDpaGroupList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_rocker_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-rocker.h b/qemu2-auto-generated/qapi/qapi-visit-rocker.h
new file mode 100644
index 0000000000..99196670b1
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-rocker.h
@@ -0,0 +1,54 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_ROCKER_H
+#define QAPI_VISIT_ROCKER_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-rocker.h"
+
+
+void visit_type_RockerSwitch_members(Visitor *v, RockerSwitch *obj, Error **errp);
+void visit_type_RockerSwitch(Visitor *v, const char *name, RockerSwitch **obj, Error **errp);
+
+void visit_type_q_obj_query_rocker_arg_members(Visitor *v, q_obj_query_rocker_arg *obj, Error **errp);
+void visit_type_RockerPortDuplex(Visitor *v, const char *name, RockerPortDuplex *obj, Error **errp);
+void visit_type_RockerPortAutoneg(Visitor *v, const char *name, RockerPortAutoneg *obj, Error **errp);
+
+void visit_type_RockerPort_members(Visitor *v, RockerPort *obj, Error **errp);
+void visit_type_RockerPort(Visitor *v, const char *name, RockerPort **obj, Error **errp);
+
+void visit_type_q_obj_query_rocker_ports_arg_members(Visitor *v, q_obj_query_rocker_ports_arg *obj, Error **errp);
+void visit_type_RockerPortList(Visitor *v, const char *name, RockerPortList **obj, Error **errp);
+
+void visit_type_RockerOfDpaFlowKey_members(Visitor *v, RockerOfDpaFlowKey *obj, Error **errp);
+void visit_type_RockerOfDpaFlowKey(Visitor *v, const char *name, RockerOfDpaFlowKey **obj, Error **errp);
+
+void visit_type_RockerOfDpaFlowMask_members(Visitor *v, RockerOfDpaFlowMask *obj, Error **errp);
+void visit_type_RockerOfDpaFlowMask(Visitor *v, const char *name, RockerOfDpaFlowMask **obj, Error **errp);
+
+void visit_type_RockerOfDpaFlowAction_members(Visitor *v, RockerOfDpaFlowAction *obj, Error **errp);
+void visit_type_RockerOfDpaFlowAction(Visitor *v, const char *name, RockerOfDpaFlowAction **obj, Error **errp);
+
+void visit_type_RockerOfDpaFlow_members(Visitor *v, RockerOfDpaFlow *obj, Error **errp);
+void visit_type_RockerOfDpaFlow(Visitor *v, const char *name, RockerOfDpaFlow **obj, Error **errp);
+
+void visit_type_q_obj_query_rocker_of_dpa_flows_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_flows_arg *obj, Error **errp);
+void visit_type_RockerOfDpaFlowList(Visitor *v, const char *name, RockerOfDpaFlowList **obj, Error **errp);
+
+void visit_type_RockerOfDpaGroup_members(Visitor *v, RockerOfDpaGroup *obj, Error **errp);
+void visit_type_RockerOfDpaGroup(Visitor *v, const char *name, RockerOfDpaGroup **obj, Error **errp);
+
+void visit_type_q_obj_query_rocker_of_dpa_groups_arg_members(Visitor *v, q_obj_query_rocker_of_dpa_groups_arg *obj, Error **errp);
+void visit_type_RockerOfDpaGroupList(Visitor *v, const char *name, RockerOfDpaGroupList **obj, Error **errp);
+
+#endif /* QAPI_VISIT_ROCKER_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-run-state.c b/qemu2-auto-generated/qapi/qapi-visit-run-state.c
new file mode 100644
index 0000000000..51261760e1
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-run-state.c
@@ -0,0 +1,340 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-run-state.h"
+
+void visit_type_RunState(Visitor *v, const char *name, RunState *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &RunState_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_StatusInfo_members(Visitor *v, StatusInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "running", &obj->running, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "singlestep", &obj->singlestep, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_RunState(v, "status", &obj->status, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_StatusInfo(Visitor *v, const char *name, StatusInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(StatusInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_StatusInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_StatusInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SHUTDOWN_arg_members(Visitor *v, q_obj_SHUTDOWN_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "guest", &obj->guest, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_RESET_arg_members(Visitor *v, q_obj_RESET_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "guest", &obj->guest, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_WATCHDOG_arg_members(Visitor *v, q_obj_WATCHDOG_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_WatchdogAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_WatchdogAction(Visitor *v, const char *name, WatchdogAction *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &WatchdogAction_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_watchdog_set_action_arg_members(Visitor *v, q_obj_watchdog_set_action_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_WatchdogAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_GUEST_PANICKED_arg_members(Visitor *v, q_obj_GUEST_PANICKED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_GuestPanicAction(v, "action", &obj->action, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "info", &obj->has_info)) {
+ visit_type_GuestPanicInformation(v, "info", &obj->info, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicAction(Visitor *v, const char *name, GuestPanicAction *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &GuestPanicAction_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_GuestPanicInformationType(Visitor *v, const char *name, GuestPanicInformationType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &GuestPanicInformationType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_GuestPanicInformation_base_members(Visitor *v, q_obj_GuestPanicInformation_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_GuestPanicInformationType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicInformation_members(Visitor *v, GuestPanicInformation *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_GuestPanicInformation_base_members(v, (q_obj_GuestPanicInformation_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case GUEST_PANIC_INFORMATION_TYPE_HYPER_V:
+ visit_type_GuestPanicInformationHyperV_members(v, &obj->u.hyper_v, &err);
+ break;
+ case GUEST_PANIC_INFORMATION_TYPE_S390:
+ visit_type_GuestPanicInformationS390_members(v, &obj->u.s390, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicInformation(Visitor *v, const char *name, GuestPanicInformation **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(GuestPanicInformation), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_GuestPanicInformation_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GuestPanicInformation(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicInformationHyperV_members(Visitor *v, GuestPanicInformationHyperV *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint64(v, "arg1", &obj->arg1, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "arg2", &obj->arg2, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "arg3", &obj->arg3, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "arg4", &obj->arg4, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "arg5", &obj->arg5, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicInformationHyperV(Visitor *v, const char *name, GuestPanicInformationHyperV **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(GuestPanicInformationHyperV), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_GuestPanicInformationHyperV_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GuestPanicInformationHyperV(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_S390CrashReason(Visitor *v, const char *name, S390CrashReason *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &S390CrashReason_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_GuestPanicInformationS390_members(Visitor *v, GuestPanicInformationS390 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint32(v, "core", &obj->core, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "psw-mask", &obj->psw_mask, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_uint64(v, "psw-addr", &obj->psw_addr, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_S390CrashReason(v, "reason", &obj->reason, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_GuestPanicInformationS390(Visitor *v, const char *name, GuestPanicInformationS390 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(GuestPanicInformationS390), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_GuestPanicInformationS390_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_GuestPanicInformationS390(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_run_state_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-run-state.h b/qemu2-auto-generated/qapi/qapi-visit-run-state.h
new file mode 100644
index 0000000000..e7374303c2
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-run-state.h
@@ -0,0 +1,49 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_RUN_STATE_H
+#define QAPI_VISIT_RUN_STATE_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-run-state.h"
+
+void visit_type_RunState(Visitor *v, const char *name, RunState *obj, Error **errp);
+
+void visit_type_StatusInfo_members(Visitor *v, StatusInfo *obj, Error **errp);
+void visit_type_StatusInfo(Visitor *v, const char *name, StatusInfo **obj, Error **errp);
+
+void visit_type_q_obj_SHUTDOWN_arg_members(Visitor *v, q_obj_SHUTDOWN_arg *obj, Error **errp);
+
+void visit_type_q_obj_RESET_arg_members(Visitor *v, q_obj_RESET_arg *obj, Error **errp);
+
+void visit_type_q_obj_WATCHDOG_arg_members(Visitor *v, q_obj_WATCHDOG_arg *obj, Error **errp);
+void visit_type_WatchdogAction(Visitor *v, const char *name, WatchdogAction *obj, Error **errp);
+
+void visit_type_q_obj_watchdog_set_action_arg_members(Visitor *v, q_obj_watchdog_set_action_arg *obj, Error **errp);
+
+void visit_type_q_obj_GUEST_PANICKED_arg_members(Visitor *v, q_obj_GUEST_PANICKED_arg *obj, Error **errp);
+void visit_type_GuestPanicAction(Visitor *v, const char *name, GuestPanicAction *obj, Error **errp);
+void visit_type_GuestPanicInformationType(Visitor *v, const char *name, GuestPanicInformationType *obj, Error **errp);
+
+void visit_type_q_obj_GuestPanicInformation_base_members(Visitor *v, q_obj_GuestPanicInformation_base *obj, Error **errp);
+
+void visit_type_GuestPanicInformation_members(Visitor *v, GuestPanicInformation *obj, Error **errp);
+void visit_type_GuestPanicInformation(Visitor *v, const char *name, GuestPanicInformation **obj, Error **errp);
+
+void visit_type_GuestPanicInformationHyperV_members(Visitor *v, GuestPanicInformationHyperV *obj, Error **errp);
+void visit_type_GuestPanicInformationHyperV(Visitor *v, const char *name, GuestPanicInformationHyperV **obj, Error **errp);
+void visit_type_S390CrashReason(Visitor *v, const char *name, S390CrashReason *obj, Error **errp);
+
+void visit_type_GuestPanicInformationS390_members(Visitor *v, GuestPanicInformationS390 *obj, Error **errp);
+void visit_type_GuestPanicInformationS390(Visitor *v, const char *name, GuestPanicInformationS390 **obj, Error **errp);
+
+#endif /* QAPI_VISIT_RUN_STATE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-sockets.c b/qemu2-auto-generated/qapi/qapi-visit-sockets.c
new file mode 100644
index 0000000000..47946074e3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-sockets.c
@@ -0,0 +1,403 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-sockets.h"
+
+void visit_type_NetworkAddressFamily(Visitor *v, const char *name, NetworkAddressFamily *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &NetworkAddressFamily_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_InetSocketAddressBase_members(Visitor *v, InetSocketAddressBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InetSocketAddressBase(Visitor *v, const char *name, InetSocketAddressBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InetSocketAddressBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InetSocketAddressBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InetSocketAddressBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InetSocketAddress_members(Visitor *v, InetSocketAddress *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InetSocketAddressBase_members(v, (InetSocketAddressBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "numeric", &obj->has_numeric)) {
+ visit_type_bool(v, "numeric", &obj->numeric, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "to", &obj->has_to)) {
+ visit_type_uint16(v, "to", &obj->to, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv4", &obj->has_ipv4)) {
+ visit_type_bool(v, "ipv4", &obj->ipv4, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "ipv6", &obj->has_ipv6)) {
+ visit_type_bool(v, "ipv6", &obj->ipv6, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InetSocketAddress(Visitor *v, const char *name, InetSocketAddress **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InetSocketAddress), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InetSocketAddress_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InetSocketAddress(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UnixSocketAddress_members(Visitor *v, UnixSocketAddress *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UnixSocketAddress(Visitor *v, const char *name, UnixSocketAddress **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UnixSocketAddress), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UnixSocketAddress_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UnixSocketAddress(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VsockSocketAddress_members(Visitor *v, VsockSocketAddress *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "cid", &obj->cid, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VsockSocketAddress(Visitor *v, const char *name, VsockSocketAddress **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VsockSocketAddress), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VsockSocketAddress_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VsockSocketAddress(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_InetSocketAddress_wrapper_members(Visitor *v, q_obj_InetSocketAddress_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InetSocketAddress(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_UnixSocketAddress_wrapper_members(Visitor *v, q_obj_UnixSocketAddress_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UnixSocketAddress(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_VsockSocketAddress_wrapper_members(Visitor *v, q_obj_VsockSocketAddress_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VsockSocketAddress(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_String_wrapper_members(Visitor *v, q_obj_String_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_String(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddressLegacyKind(Visitor *v, const char *name, SocketAddressLegacyKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SocketAddressLegacyKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SocketAddressLegacy_members(Visitor *v, SocketAddressLegacy *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SocketAddressLegacyKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case SOCKET_ADDRESS_LEGACY_KIND_INET:
+ visit_type_q_obj_InetSocketAddress_wrapper_members(v, &obj->u.inet, &err);
+ break;
+ case SOCKET_ADDRESS_LEGACY_KIND_UNIX:
+ visit_type_q_obj_UnixSocketAddress_wrapper_members(v, &obj->u.q_unix, &err);
+ break;
+ case SOCKET_ADDRESS_LEGACY_KIND_VSOCK:
+ visit_type_q_obj_VsockSocketAddress_wrapper_members(v, &obj->u.vsock, &err);
+ break;
+ case SOCKET_ADDRESS_LEGACY_KIND_FD:
+ visit_type_q_obj_String_wrapper_members(v, &obj->u.fd, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddressLegacy(Visitor *v, const char *name, SocketAddressLegacy **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SocketAddressLegacy), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SocketAddressLegacy_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SocketAddressLegacy(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddressType(Visitor *v, const char *name, SocketAddressType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SocketAddressType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_SocketAddress_base_members(Visitor *v, q_obj_SocketAddress_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SocketAddressType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddress_members(Visitor *v, SocketAddress *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_SocketAddress_base_members(v, (q_obj_SocketAddress_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case SOCKET_ADDRESS_TYPE_INET:
+ visit_type_InetSocketAddress_members(v, &obj->u.inet, &err);
+ break;
+ case SOCKET_ADDRESS_TYPE_UNIX:
+ visit_type_UnixSocketAddress_members(v, &obj->u.q_unix, &err);
+ break;
+ case SOCKET_ADDRESS_TYPE_VSOCK:
+ visit_type_VsockSocketAddress_members(v, &obj->u.vsock, &err);
+ break;
+ case SOCKET_ADDRESS_TYPE_FD:
+ visit_type_String_members(v, &obj->u.fd, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SocketAddress(Visitor *v, const char *name, SocketAddress **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SocketAddress), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SocketAddress_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SocketAddress(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_sockets_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-sockets.h b/qemu2-auto-generated/qapi/qapi-visit-sockets.h
new file mode 100644
index 0000000000..c60910d75d
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-sockets.h
@@ -0,0 +1,52 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_SOCKETS_H
+#define QAPI_VISIT_SOCKETS_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-sockets.h"
+
+#include "qapi-visit-common.h"
+void visit_type_NetworkAddressFamily(Visitor *v, const char *name, NetworkAddressFamily *obj, Error **errp);
+
+void visit_type_InetSocketAddressBase_members(Visitor *v, InetSocketAddressBase *obj, Error **errp);
+void visit_type_InetSocketAddressBase(Visitor *v, const char *name, InetSocketAddressBase **obj, Error **errp);
+
+void visit_type_InetSocketAddress_members(Visitor *v, InetSocketAddress *obj, Error **errp);
+void visit_type_InetSocketAddress(Visitor *v, const char *name, InetSocketAddress **obj, Error **errp);
+
+void visit_type_UnixSocketAddress_members(Visitor *v, UnixSocketAddress *obj, Error **errp);
+void visit_type_UnixSocketAddress(Visitor *v, const char *name, UnixSocketAddress **obj, Error **errp);
+
+void visit_type_VsockSocketAddress_members(Visitor *v, VsockSocketAddress *obj, Error **errp);
+void visit_type_VsockSocketAddress(Visitor *v, const char *name, VsockSocketAddress **obj, Error **errp);
+
+void visit_type_q_obj_InetSocketAddress_wrapper_members(Visitor *v, q_obj_InetSocketAddress_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_UnixSocketAddress_wrapper_members(Visitor *v, q_obj_UnixSocketAddress_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_VsockSocketAddress_wrapper_members(Visitor *v, q_obj_VsockSocketAddress_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_String_wrapper_members(Visitor *v, q_obj_String_wrapper *obj, Error **errp);
+void visit_type_SocketAddressLegacyKind(Visitor *v, const char *name, SocketAddressLegacyKind *obj, Error **errp);
+
+void visit_type_SocketAddressLegacy_members(Visitor *v, SocketAddressLegacy *obj, Error **errp);
+void visit_type_SocketAddressLegacy(Visitor *v, const char *name, SocketAddressLegacy **obj, Error **errp);
+void visit_type_SocketAddressType(Visitor *v, const char *name, SocketAddressType *obj, Error **errp);
+
+void visit_type_q_obj_SocketAddress_base_members(Visitor *v, q_obj_SocketAddress_base *obj, Error **errp);
+
+void visit_type_SocketAddress_members(Visitor *v, SocketAddress *obj, Error **errp);
+void visit_type_SocketAddress(Visitor *v, const char *name, SocketAddress **obj, Error **errp);
+
+#endif /* QAPI_VISIT_SOCKETS_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-tpm.c b/qemu2-auto-generated/qapi/qapi-visit-tpm.c
new file mode 100644
index 0000000000..336a313156
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-tpm.c
@@ -0,0 +1,341 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-tpm.h"
+
+void visit_type_TpmModel(Visitor *v, const char *name, TpmModel *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &TpmModel_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_TpmModelList(Visitor *v, const char *name, TpmModelList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TpmModelList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TpmModelList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TpmModel(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TpmModelList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TpmType(Visitor *v, const char *name, TpmType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &TpmType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_TpmTypeList(Visitor *v, const char *name, TpmTypeList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TpmTypeList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TpmTypeList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TpmType(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TpmTypeList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMPassthroughOptions_members(Visitor *v, TPMPassthroughOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "path", &obj->has_path)) {
+ visit_type_str(v, "path", &obj->path, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "cancel-path", &obj->has_cancel_path)) {
+ visit_type_str(v, "cancel-path", &obj->cancel_path, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMPassthroughOptions(Visitor *v, const char *name, TPMPassthroughOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TPMPassthroughOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TPMPassthroughOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TPMPassthroughOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMEmulatorOptions_members(Visitor *v, TPMEmulatorOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "chardev", &obj->chardev, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMEmulatorOptions(Visitor *v, const char *name, TPMEmulatorOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TPMEmulatorOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TPMEmulatorOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TPMEmulatorOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_TPMPassthroughOptions_wrapper_members(Visitor *v, q_obj_TPMPassthroughOptions_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_TPMPassthroughOptions(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_TPMEmulatorOptions_wrapper_members(Visitor *v, q_obj_TPMEmulatorOptions_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_TPMEmulatorOptions(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TpmTypeOptionsKind(Visitor *v, const char *name, TpmTypeOptionsKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &TpmTypeOptionsKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_TpmTypeOptions_members(Visitor *v, TpmTypeOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_TpmTypeOptionsKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
+ visit_type_q_obj_TPMPassthroughOptions_wrapper_members(v, &obj->u.passthrough, &err);
+ break;
+ case TPM_TYPE_OPTIONS_KIND_EMULATOR:
+ visit_type_q_obj_TPMEmulatorOptions_wrapper_members(v, &obj->u.emulator, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TpmTypeOptions(Visitor *v, const char *name, TpmTypeOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TpmTypeOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TpmTypeOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TpmTypeOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMInfo_members(Visitor *v, TPMInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_TpmModel(v, "model", &obj->model, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_TpmTypeOptions(v, "options", &obj->options, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMInfo(Visitor *v, const char *name, TPMInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TPMInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TPMInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TPMInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TPMInfoList(Visitor *v, const char *name, TPMInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TPMInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TPMInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TPMInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TPMInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_tpm_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-tpm.h b/qemu2-auto-generated/qapi/qapi-visit-tpm.h
new file mode 100644
index 0000000000..f6fd2476fc
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-tpm.h
@@ -0,0 +1,42 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_TPM_H
+#define QAPI_VISIT_TPM_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-tpm.h"
+
+void visit_type_TpmModel(Visitor *v, const char *name, TpmModel *obj, Error **errp);
+void visit_type_TpmModelList(Visitor *v, const char *name, TpmModelList **obj, Error **errp);
+void visit_type_TpmType(Visitor *v, const char *name, TpmType *obj, Error **errp);
+void visit_type_TpmTypeList(Visitor *v, const char *name, TpmTypeList **obj, Error **errp);
+
+void visit_type_TPMPassthroughOptions_members(Visitor *v, TPMPassthroughOptions *obj, Error **errp);
+void visit_type_TPMPassthroughOptions(Visitor *v, const char *name, TPMPassthroughOptions **obj, Error **errp);
+
+void visit_type_TPMEmulatorOptions_members(Visitor *v, TPMEmulatorOptions *obj, Error **errp);
+void visit_type_TPMEmulatorOptions(Visitor *v, const char *name, TPMEmulatorOptions **obj, Error **errp);
+
+void visit_type_q_obj_TPMPassthroughOptions_wrapper_members(Visitor *v, q_obj_TPMPassthroughOptions_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_TPMEmulatorOptions_wrapper_members(Visitor *v, q_obj_TPMEmulatorOptions_wrapper *obj, Error **errp);
+void visit_type_TpmTypeOptionsKind(Visitor *v, const char *name, TpmTypeOptionsKind *obj, Error **errp);
+
+void visit_type_TpmTypeOptions_members(Visitor *v, TpmTypeOptions *obj, Error **errp);
+void visit_type_TpmTypeOptions(Visitor *v, const char *name, TpmTypeOptions **obj, Error **errp);
+
+void visit_type_TPMInfo_members(Visitor *v, TPMInfo *obj, Error **errp);
+void visit_type_TPMInfo(Visitor *v, const char *name, TPMInfo **obj, Error **errp);
+void visit_type_TPMInfoList(Visitor *v, const char *name, TPMInfoList **obj, Error **errp);
+
+#endif /* QAPI_VISIT_TPM_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-trace.c b/qemu2-auto-generated/qapi/qapi-visit-trace.c
new file mode 100644
index 0000000000..2e4d66f6d3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-trace.c
@@ -0,0 +1,152 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-trace.h"
+
+void visit_type_TraceEventState(Visitor *v, const char *name, TraceEventState *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &TraceEventState_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_TraceEventInfo_members(Visitor *v, TraceEventInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_TraceEventState(v, "state", &obj->state, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "vcpu", &obj->vcpu, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TraceEventInfo(Visitor *v, const char *name, TraceEventInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TraceEventInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TraceEventInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TraceEventInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_trace_event_get_state_arg_members(Visitor *v, q_obj_trace_event_get_state_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "vcpu", &obj->has_vcpu)) {
+ visit_type_int(v, "vcpu", &obj->vcpu, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TraceEventInfoList(Visitor *v, const char *name, TraceEventInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TraceEventInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TraceEventInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TraceEventInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TraceEventInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_trace_event_set_state_arg_members(Visitor *v, q_obj_trace_event_set_state_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "enable", &obj->enable, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "ignore-unavailable", &obj->has_ignore_unavailable)) {
+ visit_type_bool(v, "ignore-unavailable", &obj->ignore_unavailable, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "vcpu", &obj->has_vcpu)) {
+ visit_type_int(v, "vcpu", &obj->vcpu, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_trace_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-trace.h b/qemu2-auto-generated/qapi/qapi-visit-trace.h
new file mode 100644
index 0000000000..ed8b65e978
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-trace.h
@@ -0,0 +1,29 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_TRACE_H
+#define QAPI_VISIT_TRACE_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-trace.h"
+
+void visit_type_TraceEventState(Visitor *v, const char *name, TraceEventState *obj, Error **errp);
+
+void visit_type_TraceEventInfo_members(Visitor *v, TraceEventInfo *obj, Error **errp);
+void visit_type_TraceEventInfo(Visitor *v, const char *name, TraceEventInfo **obj, Error **errp);
+
+void visit_type_q_obj_trace_event_get_state_arg_members(Visitor *v, q_obj_trace_event_get_state_arg *obj, Error **errp);
+void visit_type_TraceEventInfoList(Visitor *v, const char *name, TraceEventInfoList **obj, Error **errp);
+
+void visit_type_q_obj_trace_event_set_state_arg_members(Visitor *v, q_obj_trace_event_set_state_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_TRACE_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-transaction.c b/qemu2-auto-generated/qapi/qapi-visit-transaction.c
new file mode 100644
index 0000000000..450fa9ea91
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-transaction.c
@@ -0,0 +1,328 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-transaction.h"
+
+void visit_type_Abort_members(Visitor *v, Abort *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_Abort(Visitor *v, const char *name, Abort **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Abort), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Abort_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Abort(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ActionCompletionMode(Visitor *v, const char *name, ActionCompletionMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &ActionCompletionMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_Abort_wrapper_members(Visitor *v, q_obj_Abort_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_Abort(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmapAdd_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockDirtyBitmapAdd(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockDirtyBitmap_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmap_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockDirtyBitmap(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevBackup_wrapper_members(Visitor *v, q_obj_BlockdevBackup_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevBackup(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevSnapshot_wrapper_members(Visitor *v, q_obj_BlockdevSnapshot_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevSnapshot(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotInternal_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevSnapshotInternal(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotSync_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_BlockdevSnapshotSync(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_DriveBackup_wrapper_members(Visitor *v, q_obj_DriveBackup_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_DriveBackup(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TransactionActionKind(Visitor *v, const char *name, TransactionActionKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &TransactionActionKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_TransactionAction_members(Visitor *v, TransactionAction *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_TransactionActionKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case TRANSACTION_ACTION_KIND_ABORT:
+ visit_type_q_obj_Abort_wrapper_members(v, &obj->u.abort, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_ADD:
+ visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(v, &obj->u.block_dirty_bitmap_add, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR:
+ visit_type_q_obj_BlockDirtyBitmap_wrapper_members(v, &obj->u.block_dirty_bitmap_clear, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_BACKUP:
+ visit_type_q_obj_BlockdevBackup_wrapper_members(v, &obj->u.blockdev_backup, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT:
+ visit_type_q_obj_BlockdevSnapshot_wrapper_members(v, &obj->u.blockdev_snapshot, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_INTERNAL_SYNC:
+ visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(v, &obj->u.blockdev_snapshot_internal_sync, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC:
+ visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(v, &obj->u.blockdev_snapshot_sync, &err);
+ break;
+ case TRANSACTION_ACTION_KIND_DRIVE_BACKUP:
+ visit_type_q_obj_DriveBackup_wrapper_members(v, &obj->u.drive_backup, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TransactionAction(Visitor *v, const char *name, TransactionAction **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TransactionAction), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TransactionAction_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TransactionAction(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TransactionProperties_members(Visitor *v, TransactionProperties *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "completion-mode", &obj->has_completion_mode)) {
+ visit_type_ActionCompletionMode(v, "completion-mode", &obj->completion_mode, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TransactionProperties(Visitor *v, const char *name, TransactionProperties **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TransactionProperties), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TransactionProperties_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TransactionProperties(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TransactionActionList(Visitor *v, const char *name, TransactionActionList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TransactionActionList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TransactionActionList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TransactionAction(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TransactionActionList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_transaction_arg_members(Visitor *v, q_obj_transaction_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_TransactionActionList(v, "actions", &obj->actions, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "properties", &obj->has_properties)) {
+ visit_type_TransactionProperties(v, "properties", &obj->properties, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_transaction_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-transaction.h b/qemu2-auto-generated/qapi/qapi-visit-transaction.h
new file mode 100644
index 0000000000..5d47f947c5
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-transaction.h
@@ -0,0 +1,51 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_TRANSACTION_H
+#define QAPI_VISIT_TRANSACTION_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-transaction.h"
+
+#include "qapi-visit-block.h"
+
+void visit_type_Abort_members(Visitor *v, Abort *obj, Error **errp);
+void visit_type_Abort(Visitor *v, const char *name, Abort **obj, Error **errp);
+void visit_type_ActionCompletionMode(Visitor *v, const char *name, ActionCompletionMode *obj, Error **errp);
+
+void visit_type_q_obj_Abort_wrapper_members(Visitor *v, q_obj_Abort_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockDirtyBitmapAdd_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmapAdd_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockDirtyBitmap_wrapper_members(Visitor *v, q_obj_BlockDirtyBitmap_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevBackup_wrapper_members(Visitor *v, q_obj_BlockdevBackup_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevSnapshot_wrapper_members(Visitor *v, q_obj_BlockdevSnapshot_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevSnapshotInternal_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotInternal_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_BlockdevSnapshotSync_wrapper_members(Visitor *v, q_obj_BlockdevSnapshotSync_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_DriveBackup_wrapper_members(Visitor *v, q_obj_DriveBackup_wrapper *obj, Error **errp);
+void visit_type_TransactionActionKind(Visitor *v, const char *name, TransactionActionKind *obj, Error **errp);
+
+void visit_type_TransactionAction_members(Visitor *v, TransactionAction *obj, Error **errp);
+void visit_type_TransactionAction(Visitor *v, const char *name, TransactionAction **obj, Error **errp);
+
+void visit_type_TransactionProperties_members(Visitor *v, TransactionProperties *obj, Error **errp);
+void visit_type_TransactionProperties(Visitor *v, const char *name, TransactionProperties **obj, Error **errp);
+void visit_type_TransactionActionList(Visitor *v, const char *name, TransactionActionList **obj, Error **errp);
+
+void visit_type_q_obj_transaction_arg_members(Visitor *v, q_obj_transaction_arg *obj, Error **errp);
+
+#endif /* QAPI_VISIT_TRANSACTION_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit-ui.c b/qemu2-auto-generated/qapi/qapi-visit-ui.c
new file mode 100644
index 0000000000..e873ad17f4
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-ui.c
@@ -0,0 +1,1599 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit-ui.h"
+
+void visit_type_q_obj_set_password_arg_members(Visitor *v, q_obj_set_password_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "protocol", &obj->protocol, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "password", &obj->password, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "connected", &obj->has_connected)) {
+ visit_type_str(v, "connected", &obj->connected, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_expire_password_arg_members(Visitor *v, q_obj_expire_password_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "protocol", &obj->protocol, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "time", &obj->time, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_screendump_arg_members(Visitor *v, q_obj_screendump_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "filename", &obj->filename, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "head", &obj->has_head)) {
+ visit_type_int(v, "head", &obj->head, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceBasicInfo_members(Visitor *v, SpiceBasicInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceBasicInfo(Visitor *v, const char *name, SpiceBasicInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SpiceBasicInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SpiceBasicInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SpiceBasicInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceServerInfo_members(Visitor *v, SpiceServerInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SpiceBasicInfo_members(v, (SpiceBasicInfo *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "auth", &obj->has_auth)) {
+ visit_type_str(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceServerInfo(Visitor *v, const char *name, SpiceServerInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SpiceServerInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SpiceServerInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SpiceServerInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceChannel_members(Visitor *v, SpiceChannel *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SpiceBasicInfo_members(v, (SpiceBasicInfo *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "connection-id", &obj->connection_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "channel-type", &obj->channel_type, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "channel-id", &obj->channel_id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "tls", &obj->tls, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceChannel(Visitor *v, const char *name, SpiceChannel **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SpiceChannel), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SpiceChannel_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SpiceChannel(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceQueryMouseMode(Visitor *v, const char *name, SpiceQueryMouseMode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &SpiceQueryMouseMode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_SpiceChannelList(Visitor *v, const char *name, SpiceChannelList **obj, Error **errp)
+{
+ Error *err = NULL;
+ SpiceChannelList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (SpiceChannelList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_SpiceChannel(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SpiceChannelList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceInfo_members(Visitor *v, SpiceInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enabled", &obj->enabled, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "migrated", &obj->migrated, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "host", &obj->has_host)) {
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "port", &obj->has_port)) {
+ visit_type_int(v, "port", &obj->port, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "tls-port", &obj->has_tls_port)) {
+ visit_type_int(v, "tls-port", &obj->tls_port, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auth", &obj->has_auth)) {
+ visit_type_str(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "compiled-version", &obj->has_compiled_version)) {
+ visit_type_str(v, "compiled-version", &obj->compiled_version, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_SpiceQueryMouseMode(v, "mouse-mode", &obj->mouse_mode, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "channels", &obj->has_channels)) {
+ visit_type_SpiceChannelList(v, "channels", &obj->channels, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_SpiceInfo(Visitor *v, const char *name, SpiceInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(SpiceInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_SpiceInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_SpiceInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SPICE_CONNECTED_arg_members(Visitor *v, q_obj_SPICE_CONNECTED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SpiceBasicInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SpiceBasicInfo(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SPICE_INITIALIZED_arg_members(Visitor *v, q_obj_SPICE_INITIALIZED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SpiceServerInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SpiceChannel(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_SPICE_DISCONNECTED_arg_members(Visitor *v, q_obj_SPICE_DISCONNECTED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_SpiceBasicInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_SpiceBasicInfo(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncBasicInfo_members(Visitor *v, VncBasicInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "service", &obj->service, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "websocket", &obj->websocket, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncBasicInfo(Visitor *v, const char *name, VncBasicInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncBasicInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncBasicInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncBasicInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncServerInfo_members(Visitor *v, VncServerInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "auth", &obj->has_auth)) {
+ visit_type_str(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncServerInfo(Visitor *v, const char *name, VncServerInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncServerInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncServerInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncServerInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncClientInfo_members(Visitor *v, VncClientInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "x509_dname", &obj->has_x509_dname)) {
+ visit_type_str(v, "x509_dname", &obj->x509_dname, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "sasl_username", &obj->has_sasl_username)) {
+ visit_type_str(v, "sasl_username", &obj->sasl_username, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncClientInfo(Visitor *v, const char *name, VncClientInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncClientInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncClientInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncClientInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncClientInfoList(Visitor *v, const char *name, VncClientInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ VncClientInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (VncClientInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_VncClientInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncClientInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo_members(Visitor *v, VncInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "enabled", &obj->enabled, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "host", &obj->has_host)) {
+ visit_type_str(v, "host", &obj->host, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "family", &obj->has_family)) {
+ visit_type_NetworkAddressFamily(v, "family", &obj->family, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "service", &obj->has_service)) {
+ visit_type_str(v, "service", &obj->service, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "auth", &obj->has_auth)) {
+ visit_type_str(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "clients", &obj->has_clients)) {
+ visit_type_VncClientInfoList(v, "clients", &obj->clients, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo(Visitor *v, const char *name, VncInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncPrimaryAuth(Visitor *v, const char *name, VncPrimaryAuth *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &VncPrimaryAuth_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_VncVencryptSubAuth(Visitor *v, const char *name, VncVencryptSubAuth *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &VncVencryptSubAuth_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_VncServerInfo2_members(Visitor *v, VncServerInfo2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncBasicInfo_members(v, (VncBasicInfo *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncPrimaryAuth(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "vencrypt", &obj->has_vencrypt)) {
+ visit_type_VncVencryptSubAuth(v, "vencrypt", &obj->vencrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncServerInfo2(Visitor *v, const char *name, VncServerInfo2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncServerInfo2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncServerInfo2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncServerInfo2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncServerInfo2List(Visitor *v, const char *name, VncServerInfo2List **obj, Error **errp)
+{
+ Error *err = NULL;
+ VncServerInfo2List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (VncServerInfo2List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_VncServerInfo2(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncServerInfo2List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo2_members(Visitor *v, VncInfo2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "id", &obj->id, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncServerInfo2List(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncClientInfoList(v, "clients", &obj->clients, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncPrimaryAuth(v, "auth", &obj->auth, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "vencrypt", &obj->has_vencrypt)) {
+ visit_type_VncVencryptSubAuth(v, "vencrypt", &obj->vencrypt, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "display", &obj->has_display)) {
+ visit_type_str(v, "display", &obj->display, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo2(Visitor *v, const char *name, VncInfo2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(VncInfo2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_VncInfo2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncInfo2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_VncInfo2List(Visitor *v, const char *name, VncInfo2List **obj, Error **errp)
+{
+ Error *err = NULL;
+ VncInfo2List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (VncInfo2List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_VncInfo2(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_VncInfo2List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_change_vnc_password_arg_members(Visitor *v, q_obj_change_vnc_password_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "password", &obj->password, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_VNC_CONNECTED_arg_members(Visitor *v, q_obj_VNC_CONNECTED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncServerInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncBasicInfo(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_VNC_INITIALIZED_arg_members(Visitor *v, q_obj_VNC_INITIALIZED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncServerInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncClientInfo(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_VNC_DISCONNECTED_arg_members(Visitor *v, q_obj_VNC_DISCONNECTED_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_VncServerInfo(v, "server", &obj->server, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_VncClientInfo(v, "client", &obj->client, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MouseInfo_members(Visitor *v, MouseInfo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "name", &obj->name, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "index", &obj->index, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "current", &obj->current, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "absolute", &obj->absolute, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MouseInfo(Visitor *v, const char *name, MouseInfo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(MouseInfo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_MouseInfo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MouseInfo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MouseInfoList(Visitor *v, const char *name, MouseInfoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ MouseInfoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (MouseInfoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_MouseInfo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_MouseInfoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QKeyCode(Visitor *v, const char *name, QKeyCode *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QKeyCode_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_int_wrapper_members(Visitor *v, q_obj_int_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_QKeyCode_wrapper_members(Visitor *v, q_obj_QKeyCode_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_QKeyCode(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_KeyValueKind(Visitor *v, const char *name, KeyValueKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &KeyValueKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_KeyValue_members(Visitor *v, KeyValue *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_KeyValueKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case KEY_VALUE_KIND_NUMBER:
+ visit_type_q_obj_int_wrapper_members(v, &obj->u.number, &err);
+ break;
+ case KEY_VALUE_KIND_QCODE:
+ visit_type_q_obj_QKeyCode_wrapper_members(v, &obj->u.qcode, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_KeyValue(Visitor *v, const char *name, KeyValue **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(KeyValue), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_KeyValue_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_KeyValue(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_KeyValueList(Visitor *v, const char *name, KeyValueList **obj, Error **errp)
+{
+ Error *err = NULL;
+ KeyValueList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (KeyValueList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_KeyValue(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_KeyValueList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_send_key_arg_members(Visitor *v, q_obj_send_key_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_KeyValueList(v, "keys", &obj->keys, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "hold-time", &obj->has_hold_time)) {
+ visit_type_int(v, "hold-time", &obj->hold_time, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputButton(Visitor *v, const char *name, InputButton *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &InputButton_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_InputAxis(Visitor *v, const char *name, InputAxis *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &InputAxis_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_InputKeyEvent_members(Visitor *v, InputKeyEvent *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_KeyValue(v, "key", &obj->key, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "down", &obj->down, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputKeyEvent(Visitor *v, const char *name, InputKeyEvent **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InputKeyEvent), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InputKeyEvent_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InputKeyEvent(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputBtnEvent_members(Visitor *v, InputBtnEvent *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputButton(v, "button", &obj->button, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "down", &obj->down, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputBtnEvent(Visitor *v, const char *name, InputBtnEvent **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InputBtnEvent), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InputBtnEvent_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InputBtnEvent(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputMoveEvent_members(Visitor *v, InputMoveEvent *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputAxis(v, "axis", &obj->axis, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_int(v, "value", &obj->value, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputMoveEvent(Visitor *v, const char *name, InputMoveEvent **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InputMoveEvent), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InputMoveEvent_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InputMoveEvent(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_InputKeyEvent_wrapper_members(Visitor *v, q_obj_InputKeyEvent_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputKeyEvent(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_InputBtnEvent_wrapper_members(Visitor *v, q_obj_InputBtnEvent_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputBtnEvent(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_InputMoveEvent_wrapper_members(Visitor *v, q_obj_InputMoveEvent_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputMoveEvent(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputEventKind(Visitor *v, const char *name, InputEventKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &InputEventKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_InputEvent_members(Visitor *v, InputEvent *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_InputEventKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case INPUT_EVENT_KIND_KEY:
+ visit_type_q_obj_InputKeyEvent_wrapper_members(v, &obj->u.key, &err);
+ break;
+ case INPUT_EVENT_KIND_BTN:
+ visit_type_q_obj_InputBtnEvent_wrapper_members(v, &obj->u.btn, &err);
+ break;
+ case INPUT_EVENT_KIND_REL:
+ visit_type_q_obj_InputMoveEvent_wrapper_members(v, &obj->u.rel, &err);
+ break;
+ case INPUT_EVENT_KIND_ABS:
+ visit_type_q_obj_InputMoveEvent_wrapper_members(v, &obj->u.abs, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputEvent(Visitor *v, const char *name, InputEvent **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(InputEvent), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_InputEvent_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InputEvent(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_InputEventList(Visitor *v, const char *name, InputEventList **obj, Error **errp)
+{
+ Error *err = NULL;
+ InputEventList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (InputEventList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_InputEvent(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_InputEventList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_input_send_event_arg_members(Visitor *v, q_obj_input_send_event_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "device", &obj->has_device)) {
+ visit_type_str(v, "device", &obj->device, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "head", &obj->has_head)) {
+ visit_type_int(v, "head", &obj->head, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_InputEventList(v, "events", &obj->events, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayNoOpts_members(Visitor *v, DisplayNoOpts *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayNoOpts(Visitor *v, const char *name, DisplayNoOpts **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DisplayNoOpts), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DisplayNoOpts_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DisplayNoOpts(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayGTK_members(Visitor *v, DisplayGTK *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "grab-on-hover", &obj->has_grab_on_hover)) {
+ visit_type_bool(v, "grab-on-hover", &obj->grab_on_hover, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayGTK(Visitor *v, const char *name, DisplayGTK **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DisplayGTK), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DisplayGTK_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DisplayGTK(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayType(Visitor *v, const char *name, DisplayType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &DisplayType_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_q_obj_DisplayOptions_base_members(Visitor *v, q_obj_DisplayOptions_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_DisplayType(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "full-screen", &obj->has_full_screen)) {
+ visit_type_bool(v, "full-screen", &obj->full_screen, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "window-close", &obj->has_window_close)) {
+ visit_type_bool(v, "window-close", &obj->window_close, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "gl", &obj->has_gl)) {
+ visit_type_bool(v, "gl", &obj->gl, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayOptions_members(Visitor *v, DisplayOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_DisplayOptions_base_members(v, (q_obj_DisplayOptions_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case DISPLAY_TYPE_DEFAULT:
+ visit_type_DisplayNoOpts_members(v, &obj->u.q_default, &err);
+ break;
+ case DISPLAY_TYPE_NONE:
+ visit_type_DisplayNoOpts_members(v, &obj->u.none, &err);
+ break;
+ case DISPLAY_TYPE_GTK:
+ visit_type_DisplayGTK_members(v, &obj->u.gtk, &err);
+ break;
+ case DISPLAY_TYPE_SDL:
+ visit_type_DisplayNoOpts_members(v, &obj->u.sdl, &err);
+ break;
+ case DISPLAY_TYPE_EGL_HEADLESS:
+ visit_type_DisplayNoOpts_members(v, &obj->u.egl_headless, &err);
+ break;
+ case DISPLAY_TYPE_CURSES:
+ visit_type_DisplayNoOpts_members(v, &obj->u.curses, &err);
+ break;
+ case DISPLAY_TYPE_COCOA:
+ visit_type_DisplayNoOpts_members(v, &obj->u.cocoa, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_DisplayOptions(Visitor *v, const char *name, DisplayOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(DisplayOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_DisplayOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_DisplayOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_ui_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit-ui.h b/qemu2-auto-generated/qapi/qapi-visit-ui.h
new file mode 100644
index 0000000000..232c475bea
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit-ui.h
@@ -0,0 +1,130 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_UI_H
+#define QAPI_VISIT_UI_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types-ui.h"
+
+#include "qapi-visit-sockets.h"
+
+void visit_type_q_obj_set_password_arg_members(Visitor *v, q_obj_set_password_arg *obj, Error **errp);
+
+void visit_type_q_obj_expire_password_arg_members(Visitor *v, q_obj_expire_password_arg *obj, Error **errp);
+
+void visit_type_q_obj_screendump_arg_members(Visitor *v, q_obj_screendump_arg *obj, Error **errp);
+
+void visit_type_SpiceBasicInfo_members(Visitor *v, SpiceBasicInfo *obj, Error **errp);
+void visit_type_SpiceBasicInfo(Visitor *v, const char *name, SpiceBasicInfo **obj, Error **errp);
+
+void visit_type_SpiceServerInfo_members(Visitor *v, SpiceServerInfo *obj, Error **errp);
+void visit_type_SpiceServerInfo(Visitor *v, const char *name, SpiceServerInfo **obj, Error **errp);
+
+void visit_type_SpiceChannel_members(Visitor *v, SpiceChannel *obj, Error **errp);
+void visit_type_SpiceChannel(Visitor *v, const char *name, SpiceChannel **obj, Error **errp);
+void visit_type_SpiceQueryMouseMode(Visitor *v, const char *name, SpiceQueryMouseMode *obj, Error **errp);
+void visit_type_SpiceChannelList(Visitor *v, const char *name, SpiceChannelList **obj, Error **errp);
+
+void visit_type_SpiceInfo_members(Visitor *v, SpiceInfo *obj, Error **errp);
+void visit_type_SpiceInfo(Visitor *v, const char *name, SpiceInfo **obj, Error **errp);
+
+void visit_type_q_obj_SPICE_CONNECTED_arg_members(Visitor *v, q_obj_SPICE_CONNECTED_arg *obj, Error **errp);
+
+void visit_type_q_obj_SPICE_INITIALIZED_arg_members(Visitor *v, q_obj_SPICE_INITIALIZED_arg *obj, Error **errp);
+
+void visit_type_q_obj_SPICE_DISCONNECTED_arg_members(Visitor *v, q_obj_SPICE_DISCONNECTED_arg *obj, Error **errp);
+
+void visit_type_VncBasicInfo_members(Visitor *v, VncBasicInfo *obj, Error **errp);
+void visit_type_VncBasicInfo(Visitor *v, const char *name, VncBasicInfo **obj, Error **errp);
+
+void visit_type_VncServerInfo_members(Visitor *v, VncServerInfo *obj, Error **errp);
+void visit_type_VncServerInfo(Visitor *v, const char *name, VncServerInfo **obj, Error **errp);
+
+void visit_type_VncClientInfo_members(Visitor *v, VncClientInfo *obj, Error **errp);
+void visit_type_VncClientInfo(Visitor *v, const char *name, VncClientInfo **obj, Error **errp);
+void visit_type_VncClientInfoList(Visitor *v, const char *name, VncClientInfoList **obj, Error **errp);
+
+void visit_type_VncInfo_members(Visitor *v, VncInfo *obj, Error **errp);
+void visit_type_VncInfo(Visitor *v, const char *name, VncInfo **obj, Error **errp);
+void visit_type_VncPrimaryAuth(Visitor *v, const char *name, VncPrimaryAuth *obj, Error **errp);
+void visit_type_VncVencryptSubAuth(Visitor *v, const char *name, VncVencryptSubAuth *obj, Error **errp);
+
+void visit_type_VncServerInfo2_members(Visitor *v, VncServerInfo2 *obj, Error **errp);
+void visit_type_VncServerInfo2(Visitor *v, const char *name, VncServerInfo2 **obj, Error **errp);
+void visit_type_VncServerInfo2List(Visitor *v, const char *name, VncServerInfo2List **obj, Error **errp);
+
+void visit_type_VncInfo2_members(Visitor *v, VncInfo2 *obj, Error **errp);
+void visit_type_VncInfo2(Visitor *v, const char *name, VncInfo2 **obj, Error **errp);
+void visit_type_VncInfo2List(Visitor *v, const char *name, VncInfo2List **obj, Error **errp);
+
+void visit_type_q_obj_change_vnc_password_arg_members(Visitor *v, q_obj_change_vnc_password_arg *obj, Error **errp);
+
+void visit_type_q_obj_VNC_CONNECTED_arg_members(Visitor *v, q_obj_VNC_CONNECTED_arg *obj, Error **errp);
+
+void visit_type_q_obj_VNC_INITIALIZED_arg_members(Visitor *v, q_obj_VNC_INITIALIZED_arg *obj, Error **errp);
+
+void visit_type_q_obj_VNC_DISCONNECTED_arg_members(Visitor *v, q_obj_VNC_DISCONNECTED_arg *obj, Error **errp);
+
+void visit_type_MouseInfo_members(Visitor *v, MouseInfo *obj, Error **errp);
+void visit_type_MouseInfo(Visitor *v, const char *name, MouseInfo **obj, Error **errp);
+void visit_type_MouseInfoList(Visitor *v, const char *name, MouseInfoList **obj, Error **errp);
+void visit_type_QKeyCode(Visitor *v, const char *name, QKeyCode *obj, Error **errp);
+
+void visit_type_q_obj_int_wrapper_members(Visitor *v, q_obj_int_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_QKeyCode_wrapper_members(Visitor *v, q_obj_QKeyCode_wrapper *obj, Error **errp);
+void visit_type_KeyValueKind(Visitor *v, const char *name, KeyValueKind *obj, Error **errp);
+
+void visit_type_KeyValue_members(Visitor *v, KeyValue *obj, Error **errp);
+void visit_type_KeyValue(Visitor *v, const char *name, KeyValue **obj, Error **errp);
+void visit_type_KeyValueList(Visitor *v, const char *name, KeyValueList **obj, Error **errp);
+
+void visit_type_q_obj_send_key_arg_members(Visitor *v, q_obj_send_key_arg *obj, Error **errp);
+void visit_type_InputButton(Visitor *v, const char *name, InputButton *obj, Error **errp);
+void visit_type_InputAxis(Visitor *v, const char *name, InputAxis *obj, Error **errp);
+
+void visit_type_InputKeyEvent_members(Visitor *v, InputKeyEvent *obj, Error **errp);
+void visit_type_InputKeyEvent(Visitor *v, const char *name, InputKeyEvent **obj, Error **errp);
+
+void visit_type_InputBtnEvent_members(Visitor *v, InputBtnEvent *obj, Error **errp);
+void visit_type_InputBtnEvent(Visitor *v, const char *name, InputBtnEvent **obj, Error **errp);
+
+void visit_type_InputMoveEvent_members(Visitor *v, InputMoveEvent *obj, Error **errp);
+void visit_type_InputMoveEvent(Visitor *v, const char *name, InputMoveEvent **obj, Error **errp);
+
+void visit_type_q_obj_InputKeyEvent_wrapper_members(Visitor *v, q_obj_InputKeyEvent_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_InputBtnEvent_wrapper_members(Visitor *v, q_obj_InputBtnEvent_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_InputMoveEvent_wrapper_members(Visitor *v, q_obj_InputMoveEvent_wrapper *obj, Error **errp);
+void visit_type_InputEventKind(Visitor *v, const char *name, InputEventKind *obj, Error **errp);
+
+void visit_type_InputEvent_members(Visitor *v, InputEvent *obj, Error **errp);
+void visit_type_InputEvent(Visitor *v, const char *name, InputEvent **obj, Error **errp);
+void visit_type_InputEventList(Visitor *v, const char *name, InputEventList **obj, Error **errp);
+
+void visit_type_q_obj_input_send_event_arg_members(Visitor *v, q_obj_input_send_event_arg *obj, Error **errp);
+
+void visit_type_DisplayNoOpts_members(Visitor *v, DisplayNoOpts *obj, Error **errp);
+void visit_type_DisplayNoOpts(Visitor *v, const char *name, DisplayNoOpts **obj, Error **errp);
+
+void visit_type_DisplayGTK_members(Visitor *v, DisplayGTK *obj, Error **errp);
+void visit_type_DisplayGTK(Visitor *v, const char *name, DisplayGTK **obj, Error **errp);
+void visit_type_DisplayType(Visitor *v, const char *name, DisplayType *obj, Error **errp);
+
+void visit_type_q_obj_DisplayOptions_base_members(Visitor *v, q_obj_DisplayOptions_base *obj, Error **errp);
+
+void visit_type_DisplayOptions_members(Visitor *v, DisplayOptions *obj, Error **errp);
+void visit_type_DisplayOptions(Visitor *v, const char *name, DisplayOptions **obj, Error **errp);
+
+#endif /* QAPI_VISIT_UI_H */
diff --git a/qemu2-auto-generated/qapi/qapi-visit.c b/qemu2-auto-generated/qapi/qapi-visit.c
new file mode 100644
index 0000000000..ee74ec1e2b
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit.c
@@ -0,0 +1,19 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "qapi-visit.h"
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_visit_c;
diff --git a/qemu2-auto-generated/qapi/qapi-visit.h b/qemu2-auto-generated/qapi/qapi-visit.h
new file mode 100644
index 0000000000..8d332c4d03
--- /dev/null
+++ b/qemu2-auto-generated/qapi/qapi-visit.h
@@ -0,0 +1,35 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_VISIT_H
+#define QAPI_VISIT_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "qapi-types.h"
+
+#include "qapi-visit-common.h"
+#include "qapi-visit-sockets.h"
+#include "qapi-visit-run-state.h"
+#include "qapi-visit-crypto.h"
+#include "qapi-visit-block.h"
+#include "qapi-visit-char.h"
+#include "qapi-visit-net.h"
+#include "qapi-visit-rocker.h"
+#include "qapi-visit-tpm.h"
+#include "qapi-visit-ui.h"
+#include "qapi-visit-migration.h"
+#include "qapi-visit-transaction.h"
+#include "qapi-visit-trace.h"
+#include "qapi-visit-introspect.h"
+#include "qapi-visit-misc.h"
+
+#endif /* QAPI_VISIT_H */
diff --git a/qemu2-auto-generated/qapi/trace.c b/qemu2-auto-generated/qapi/trace.c
new file mode 100644
index 0000000000..e504027a31
--- /dev/null
+++ b/qemu2-auto-generated/qapi/trace.c
@@ -0,0 +1,266 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_VISIT_FREE_DSTATE;
+uint16_t _TRACE_VISIT_COMPLETE_DSTATE;
+uint16_t _TRACE_VISIT_START_STRUCT_DSTATE;
+uint16_t _TRACE_VISIT_CHECK_STRUCT_DSTATE;
+uint16_t _TRACE_VISIT_END_STRUCT_DSTATE;
+uint16_t _TRACE_VISIT_START_LIST_DSTATE;
+uint16_t _TRACE_VISIT_NEXT_LIST_DSTATE;
+uint16_t _TRACE_VISIT_CHECK_LIST_DSTATE;
+uint16_t _TRACE_VISIT_END_LIST_DSTATE;
+uint16_t _TRACE_VISIT_START_ALTERNATE_DSTATE;
+uint16_t _TRACE_VISIT_END_ALTERNATE_DSTATE;
+uint16_t _TRACE_VISIT_OPTIONAL_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_ENUM_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_INT_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_UINT8_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_UINT16_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_UINT32_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_UINT64_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_INT8_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_INT16_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_INT32_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_INT64_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_SIZE_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_BOOL_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_STR_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_NUMBER_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_ANY_DSTATE;
+uint16_t _TRACE_VISIT_TYPE_NULL_DSTATE;
+TraceEvent _TRACE_VISIT_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_free",
+ .sstate = TRACE_VISIT_FREE_ENABLED,
+ .dstate = &_TRACE_VISIT_FREE_DSTATE
+};
+TraceEvent _TRACE_VISIT_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_complete",
+ .sstate = TRACE_VISIT_COMPLETE_ENABLED,
+ .dstate = &_TRACE_VISIT_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_VISIT_START_STRUCT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_start_struct",
+ .sstate = TRACE_VISIT_START_STRUCT_ENABLED,
+ .dstate = &_TRACE_VISIT_START_STRUCT_DSTATE
+};
+TraceEvent _TRACE_VISIT_CHECK_STRUCT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_check_struct",
+ .sstate = TRACE_VISIT_CHECK_STRUCT_ENABLED,
+ .dstate = &_TRACE_VISIT_CHECK_STRUCT_DSTATE
+};
+TraceEvent _TRACE_VISIT_END_STRUCT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_end_struct",
+ .sstate = TRACE_VISIT_END_STRUCT_ENABLED,
+ .dstate = &_TRACE_VISIT_END_STRUCT_DSTATE
+};
+TraceEvent _TRACE_VISIT_START_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_start_list",
+ .sstate = TRACE_VISIT_START_LIST_ENABLED,
+ .dstate = &_TRACE_VISIT_START_LIST_DSTATE
+};
+TraceEvent _TRACE_VISIT_NEXT_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_next_list",
+ .sstate = TRACE_VISIT_NEXT_LIST_ENABLED,
+ .dstate = &_TRACE_VISIT_NEXT_LIST_DSTATE
+};
+TraceEvent _TRACE_VISIT_CHECK_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_check_list",
+ .sstate = TRACE_VISIT_CHECK_LIST_ENABLED,
+ .dstate = &_TRACE_VISIT_CHECK_LIST_DSTATE
+};
+TraceEvent _TRACE_VISIT_END_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_end_list",
+ .sstate = TRACE_VISIT_END_LIST_ENABLED,
+ .dstate = &_TRACE_VISIT_END_LIST_DSTATE
+};
+TraceEvent _TRACE_VISIT_START_ALTERNATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_start_alternate",
+ .sstate = TRACE_VISIT_START_ALTERNATE_ENABLED,
+ .dstate = &_TRACE_VISIT_START_ALTERNATE_DSTATE
+};
+TraceEvent _TRACE_VISIT_END_ALTERNATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_end_alternate",
+ .sstate = TRACE_VISIT_END_ALTERNATE_ENABLED,
+ .dstate = &_TRACE_VISIT_END_ALTERNATE_DSTATE
+};
+TraceEvent _TRACE_VISIT_OPTIONAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_optional",
+ .sstate = TRACE_VISIT_OPTIONAL_ENABLED,
+ .dstate = &_TRACE_VISIT_OPTIONAL_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_ENUM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_enum",
+ .sstate = TRACE_VISIT_TYPE_ENUM_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_ENUM_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_INT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_int",
+ .sstate = TRACE_VISIT_TYPE_INT_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_INT_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_UINT8_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_uint8",
+ .sstate = TRACE_VISIT_TYPE_UINT8_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_UINT8_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_UINT16_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_uint16",
+ .sstate = TRACE_VISIT_TYPE_UINT16_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_UINT16_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_UINT32_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_uint32",
+ .sstate = TRACE_VISIT_TYPE_UINT32_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_UINT32_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_UINT64_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_uint64",
+ .sstate = TRACE_VISIT_TYPE_UINT64_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_UINT64_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_INT8_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_int8",
+ .sstate = TRACE_VISIT_TYPE_INT8_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_INT8_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_INT16_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_int16",
+ .sstate = TRACE_VISIT_TYPE_INT16_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_INT16_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_INT32_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_int32",
+ .sstate = TRACE_VISIT_TYPE_INT32_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_INT32_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_INT64_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_int64",
+ .sstate = TRACE_VISIT_TYPE_INT64_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_INT64_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_SIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_size",
+ .sstate = TRACE_VISIT_TYPE_SIZE_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_SIZE_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_BOOL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_bool",
+ .sstate = TRACE_VISIT_TYPE_BOOL_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_BOOL_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_STR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_str",
+ .sstate = TRACE_VISIT_TYPE_STR_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_STR_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_NUMBER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_number",
+ .sstate = TRACE_VISIT_TYPE_NUMBER_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_NUMBER_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_ANY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_any",
+ .sstate = TRACE_VISIT_TYPE_ANY_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_ANY_DSTATE
+};
+TraceEvent _TRACE_VISIT_TYPE_NULL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "visit_type_null",
+ .sstate = TRACE_VISIT_TYPE_NULL_ENABLED,
+ .dstate = &_TRACE_VISIT_TYPE_NULL_DSTATE
+};
+TraceEvent *qapi_trace_events[] = {
+ &_TRACE_VISIT_FREE_EVENT,
+ &_TRACE_VISIT_COMPLETE_EVENT,
+ &_TRACE_VISIT_START_STRUCT_EVENT,
+ &_TRACE_VISIT_CHECK_STRUCT_EVENT,
+ &_TRACE_VISIT_END_STRUCT_EVENT,
+ &_TRACE_VISIT_START_LIST_EVENT,
+ &_TRACE_VISIT_NEXT_LIST_EVENT,
+ &_TRACE_VISIT_CHECK_LIST_EVENT,
+ &_TRACE_VISIT_END_LIST_EVENT,
+ &_TRACE_VISIT_START_ALTERNATE_EVENT,
+ &_TRACE_VISIT_END_ALTERNATE_EVENT,
+ &_TRACE_VISIT_OPTIONAL_EVENT,
+ &_TRACE_VISIT_TYPE_ENUM_EVENT,
+ &_TRACE_VISIT_TYPE_INT_EVENT,
+ &_TRACE_VISIT_TYPE_UINT8_EVENT,
+ &_TRACE_VISIT_TYPE_UINT16_EVENT,
+ &_TRACE_VISIT_TYPE_UINT32_EVENT,
+ &_TRACE_VISIT_TYPE_UINT64_EVENT,
+ &_TRACE_VISIT_TYPE_INT8_EVENT,
+ &_TRACE_VISIT_TYPE_INT16_EVENT,
+ &_TRACE_VISIT_TYPE_INT32_EVENT,
+ &_TRACE_VISIT_TYPE_INT64_EVENT,
+ &_TRACE_VISIT_TYPE_SIZE_EVENT,
+ &_TRACE_VISIT_TYPE_BOOL_EVENT,
+ &_TRACE_VISIT_TYPE_STR_EVENT,
+ &_TRACE_VISIT_TYPE_NUMBER_EVENT,
+ &_TRACE_VISIT_TYPE_ANY_EVENT,
+ &_TRACE_VISIT_TYPE_NULL_EVENT,
+ NULL,
+};
+
+static void trace_qapi_register_events(void)
+{
+ trace_event_register_group(qapi_trace_events);
+}
+trace_init(trace_qapi_register_events)
diff --git a/qemu2-auto-generated/qapi/trace.h b/qemu2-auto-generated/qapi/trace.h
new file mode 100644
index 0000000000..3eef86aba3
--- /dev/null
+++ b/qemu2-auto-generated/qapi/trace.h
@@ -0,0 +1,485 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_QAPI_GENERATED_TRACERS_H
+#define TRACE_QAPI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_VISIT_FREE_EVENT;
+extern TraceEvent _TRACE_VISIT_COMPLETE_EVENT;
+extern TraceEvent _TRACE_VISIT_START_STRUCT_EVENT;
+extern TraceEvent _TRACE_VISIT_CHECK_STRUCT_EVENT;
+extern TraceEvent _TRACE_VISIT_END_STRUCT_EVENT;
+extern TraceEvent _TRACE_VISIT_START_LIST_EVENT;
+extern TraceEvent _TRACE_VISIT_NEXT_LIST_EVENT;
+extern TraceEvent _TRACE_VISIT_CHECK_LIST_EVENT;
+extern TraceEvent _TRACE_VISIT_END_LIST_EVENT;
+extern TraceEvent _TRACE_VISIT_START_ALTERNATE_EVENT;
+extern TraceEvent _TRACE_VISIT_END_ALTERNATE_EVENT;
+extern TraceEvent _TRACE_VISIT_OPTIONAL_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_ENUM_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_INT_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_UINT8_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_UINT16_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_UINT32_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_UINT64_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_INT8_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_INT16_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_INT32_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_INT64_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_SIZE_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_BOOL_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_STR_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_NUMBER_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_ANY_EVENT;
+extern TraceEvent _TRACE_VISIT_TYPE_NULL_EVENT;
+extern uint16_t _TRACE_VISIT_FREE_DSTATE;
+extern uint16_t _TRACE_VISIT_COMPLETE_DSTATE;
+extern uint16_t _TRACE_VISIT_START_STRUCT_DSTATE;
+extern uint16_t _TRACE_VISIT_CHECK_STRUCT_DSTATE;
+extern uint16_t _TRACE_VISIT_END_STRUCT_DSTATE;
+extern uint16_t _TRACE_VISIT_START_LIST_DSTATE;
+extern uint16_t _TRACE_VISIT_NEXT_LIST_DSTATE;
+extern uint16_t _TRACE_VISIT_CHECK_LIST_DSTATE;
+extern uint16_t _TRACE_VISIT_END_LIST_DSTATE;
+extern uint16_t _TRACE_VISIT_START_ALTERNATE_DSTATE;
+extern uint16_t _TRACE_VISIT_END_ALTERNATE_DSTATE;
+extern uint16_t _TRACE_VISIT_OPTIONAL_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_ENUM_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_INT_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_UINT8_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_UINT16_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_UINT32_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_UINT64_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_INT8_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_INT16_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_INT32_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_INT64_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_SIZE_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_BOOL_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_STR_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_NUMBER_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_ANY_DSTATE;
+extern uint16_t _TRACE_VISIT_TYPE_NULL_DSTATE;
+#define TRACE_VISIT_FREE_ENABLED 1
+#define TRACE_VISIT_COMPLETE_ENABLED 1
+#define TRACE_VISIT_START_STRUCT_ENABLED 1
+#define TRACE_VISIT_CHECK_STRUCT_ENABLED 1
+#define TRACE_VISIT_END_STRUCT_ENABLED 1
+#define TRACE_VISIT_START_LIST_ENABLED 1
+#define TRACE_VISIT_NEXT_LIST_ENABLED 1
+#define TRACE_VISIT_CHECK_LIST_ENABLED 1
+#define TRACE_VISIT_END_LIST_ENABLED 1
+#define TRACE_VISIT_START_ALTERNATE_ENABLED 1
+#define TRACE_VISIT_END_ALTERNATE_ENABLED 1
+#define TRACE_VISIT_OPTIONAL_ENABLED 1
+#define TRACE_VISIT_TYPE_ENUM_ENABLED 1
+#define TRACE_VISIT_TYPE_INT_ENABLED 1
+#define TRACE_VISIT_TYPE_UINT8_ENABLED 1
+#define TRACE_VISIT_TYPE_UINT16_ENABLED 1
+#define TRACE_VISIT_TYPE_UINT32_ENABLED 1
+#define TRACE_VISIT_TYPE_UINT64_ENABLED 1
+#define TRACE_VISIT_TYPE_INT8_ENABLED 1
+#define TRACE_VISIT_TYPE_INT16_ENABLED 1
+#define TRACE_VISIT_TYPE_INT32_ENABLED 1
+#define TRACE_VISIT_TYPE_INT64_ENABLED 1
+#define TRACE_VISIT_TYPE_SIZE_ENABLED 1
+#define TRACE_VISIT_TYPE_BOOL_ENABLED 1
+#define TRACE_VISIT_TYPE_STR_ENABLED 1
+#define TRACE_VISIT_TYPE_NUMBER_ENABLED 1
+#define TRACE_VISIT_TYPE_ANY_ENABLED 1
+#define TRACE_VISIT_TYPE_NULL_ENABLED 1
+
+#define TRACE_VISIT_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_free(void * v)
+{
+}
+
+static inline void trace_visit_free(void * v)
+{
+ if (true) {
+ _nocheck__trace_visit_free(v);
+ }
+}
+
+#define TRACE_VISIT_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_complete(void * v, void * opaque)
+{
+}
+
+static inline void trace_visit_complete(void * v, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_visit_complete(v, opaque);
+ }
+}
+
+#define TRACE_VISIT_START_STRUCT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_start_struct(void * v, const char * name, void * obj, size_t size)
+{
+}
+
+static inline void trace_visit_start_struct(void * v, const char * name, void * obj, size_t size)
+{
+ if (true) {
+ _nocheck__trace_visit_start_struct(v, name, obj, size);
+ }
+}
+
+#define TRACE_VISIT_CHECK_STRUCT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_check_struct(void * v)
+{
+}
+
+static inline void trace_visit_check_struct(void * v)
+{
+ if (true) {
+ _nocheck__trace_visit_check_struct(v);
+ }
+}
+
+#define TRACE_VISIT_END_STRUCT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_end_struct(void * v, void * obj)
+{
+}
+
+static inline void trace_visit_end_struct(void * v, void * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_end_struct(v, obj);
+ }
+}
+
+#define TRACE_VISIT_START_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_start_list(void * v, const char * name, void * obj, size_t size)
+{
+}
+
+static inline void trace_visit_start_list(void * v, const char * name, void * obj, size_t size)
+{
+ if (true) {
+ _nocheck__trace_visit_start_list(v, name, obj, size);
+ }
+}
+
+#define TRACE_VISIT_NEXT_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_next_list(void * v, void * tail, size_t size)
+{
+}
+
+static inline void trace_visit_next_list(void * v, void * tail, size_t size)
+{
+ if (true) {
+ _nocheck__trace_visit_next_list(v, tail, size);
+ }
+}
+
+#define TRACE_VISIT_CHECK_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_check_list(void * v)
+{
+}
+
+static inline void trace_visit_check_list(void * v)
+{
+ if (true) {
+ _nocheck__trace_visit_check_list(v);
+ }
+}
+
+#define TRACE_VISIT_END_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_end_list(void * v, void * obj)
+{
+}
+
+static inline void trace_visit_end_list(void * v, void * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_end_list(v, obj);
+ }
+}
+
+#define TRACE_VISIT_START_ALTERNATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_start_alternate(void * v, const char * name, void * obj, size_t size)
+{
+}
+
+static inline void trace_visit_start_alternate(void * v, const char * name, void * obj, size_t size)
+{
+ if (true) {
+ _nocheck__trace_visit_start_alternate(v, name, obj, size);
+ }
+}
+
+#define TRACE_VISIT_END_ALTERNATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_end_alternate(void * v, void * obj)
+{
+}
+
+static inline void trace_visit_end_alternate(void * v, void * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_end_alternate(v, obj);
+ }
+}
+
+#define TRACE_VISIT_OPTIONAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_optional(void * v, const char * name, bool * present)
+{
+}
+
+static inline void trace_visit_optional(void * v, const char * name, bool * present)
+{
+ if (true) {
+ _nocheck__trace_visit_optional(v, name, present);
+ }
+}
+
+#define TRACE_VISIT_TYPE_ENUM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_enum(void * v, const char * name, int * obj)
+{
+}
+
+static inline void trace_visit_type_enum(void * v, const char * name, int * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_enum(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_INT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_int(void * v, const char * name, int64_t * obj)
+{
+}
+
+static inline void trace_visit_type_int(void * v, const char * name, int64_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_int(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_UINT8_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_uint8(void * v, const char * name, uint8_t * obj)
+{
+}
+
+static inline void trace_visit_type_uint8(void * v, const char * name, uint8_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_uint8(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_UINT16_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_uint16(void * v, const char * name, uint16_t * obj)
+{
+}
+
+static inline void trace_visit_type_uint16(void * v, const char * name, uint16_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_uint16(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_UINT32_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_uint32(void * v, const char * name, uint32_t * obj)
+{
+}
+
+static inline void trace_visit_type_uint32(void * v, const char * name, uint32_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_uint32(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_UINT64_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_uint64(void * v, const char * name, uint64_t * obj)
+{
+}
+
+static inline void trace_visit_type_uint64(void * v, const char * name, uint64_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_uint64(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_INT8_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_int8(void * v, const char * name, int8_t * obj)
+{
+}
+
+static inline void trace_visit_type_int8(void * v, const char * name, int8_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_int8(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_INT16_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_int16(void * v, const char * name, int16_t * obj)
+{
+}
+
+static inline void trace_visit_type_int16(void * v, const char * name, int16_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_int16(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_INT32_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_int32(void * v, const char * name, int32_t * obj)
+{
+}
+
+static inline void trace_visit_type_int32(void * v, const char * name, int32_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_int32(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_INT64_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_int64(void * v, const char * name, int64_t * obj)
+{
+}
+
+static inline void trace_visit_type_int64(void * v, const char * name, int64_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_int64(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_SIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_size(void * v, const char * name, uint64_t * obj)
+{
+}
+
+static inline void trace_visit_type_size(void * v, const char * name, uint64_t * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_size(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_BOOL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_bool(void * v, const char * name, bool * obj)
+{
+}
+
+static inline void trace_visit_type_bool(void * v, const char * name, bool * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_bool(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_STR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_str(void * v, const char * name, char ** obj)
+{
+}
+
+static inline void trace_visit_type_str(void * v, const char * name, char ** obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_str(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_NUMBER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_number(void * v, const char * name, double * obj)
+{
+}
+
+static inline void trace_visit_type_number(void * v, const char * name, double * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_number(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_ANY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_any(void * v, const char * name, void * obj)
+{
+}
+
+static inline void trace_visit_type_any(void * v, const char * name, void * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_any(v, name, obj);
+ }
+}
+
+#define TRACE_VISIT_TYPE_NULL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_visit_type_null(void * v, const char * name, void * obj)
+{
+}
+
+static inline void trace_visit_type_null(void * v, const char * name, void * obj)
+{
+ if (true) {
+ _nocheck__trace_visit_type_null(v, name, obj);
+ }
+}
+#endif /* TRACE_QAPI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/qemu-img-cmds.h b/qemu2-auto-generated/qemu-img-cmds.h
new file mode 100644
index 0000000000..240bf5f16a
--- /dev/null
+++ b/qemu2-auto-generated/qemu-img-cmds.h
@@ -0,0 +1,44 @@
+
+
+DEF("amend", img_amend,
+"amend [--object objectdef] [--image-opts] [-p] [-q] [-f fmt] [-t cache] -o options filename")
+
+DEF("bench", img_bench,
+"bench [-c count] [-d depth] [-f fmt] [--flush-interval=flush_interval] [-n] [--no-drain] [-o offset] [--pattern=pattern] [-q] [-s buffer_size] [-S step_size] [-t cache] [-w] [-U] filename")
+
+DEF("check", img_check,
+"check [-q] [--object objectdef] [--image-opts] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] [-U] filename")
+
+DEF("commit", img_commit,
+"commit [-q] [--object objectdef] [--image-opts] [-f fmt] [-t cache] [-b base] [-d] [-p] filename")
+
+DEF("compare", img_compare,
+"compare [--object objectdef] [--image-opts] [-f fmt] [-F fmt] [-T src_cache] [-p] [-q] [-s] [-U] filename1 filename2")
+
+DEF("convert", img_convert,
+"convert [--object objectdef] [--image-opts] [--target-image-opts] [-U] [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-B backing_file] [-o options] [-s snapshot_id_or_name] [-l snapshot_param] [-S sparse_size] [-m num_coroutines] [-W] filename [filename2 [...]] output_filename")
+
+DEF("create", img_create,
+"create [-q] [--object objectdef] [-f fmt] [-b backing_file] [-F backing_fmt] [-u] [-o options] filename [size]")
+
+DEF("dd", img_dd,
+"dd [--image-opts] [-U] [-f fmt] [-O output_fmt] [bs=block_size] [count=blocks] [skip=blocks] if=input of=output")
+
+DEF("info", img_info,
+"info [--object objectdef] [--image-opts] [-f fmt] [--output=ofmt] [--backing-chain] [-U] filename")
+
+DEF("map", img_map,
+"map [--object objectdef] [--image-opts] [-f fmt] [--output=ofmt] [-U] filename")
+
+DEF("measure", img_measure,
+"measure [--output=ofmt] [-O output_fmt] [-o options] [--size N | [--object objectdef] [--image-opts] [-f fmt] [-l snapshot_param] filename]")
+
+DEF("snapshot", img_snapshot,
+"snapshot [--object objectdef] [--image-opts] [-U] [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename")
+
+DEF("rebase", img_rebase,
+"rebase [--object objectdef] [--image-opts] [-U] [-q] [-f fmt] [-t cache] [-T src_cache] [-p] [-u] -b backing_file [-F backing_fmt] filename")
+
+DEF("resize", img_resize,
+"resize [--object objectdef] [--image-opts] [-q] [--shrink] filename [+ | -]size")
+
diff --git a/qemu2-auto-generated/qemu-options.def b/qemu2-auto-generated/qemu-options.def
new file mode 100644
index 0000000000..14c8f2f3b8
--- /dev/null
+++ b/qemu2-auto-generated/qemu-options.def
@@ -0,0 +1,979 @@
+
+DEFHEADING(Standard options:)
+
+DEF("help", 0, QEMU_OPTION_h,
+"-h or -help display this help and exit\n", QEMU_ARCH_ALL)
+
+DEF("version", 0, QEMU_OPTION_version,
+"-version display version information and exit\n", QEMU_ARCH_ALL)
+
+DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
+"-machine [type=]name[,prop[=value][,...]]\n"
+" selects emulated machine ('-machine help' for list)\n"
+" property accel=accel1[:accel2[:...]] selects accelerator\n"
+" supported accelerators are kvm, xen, hax, hvf, whpx or tcg (default: tcg)\n"
+" kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n"
+" vmport=on|off|auto controls emulation of vmport (default: auto)\n"
+" kvm_shadow_mem=size of KVM shadow MMU in bytes\n"
+" dump-guest-core=on|off include guest memory in a core dump (default=on)\n"
+" mem-merge=on|off controls memory merge support (default: on)\n"
+" igd-passthru=on|off controls IGD GFX passthrough support (default=off)\n"
+" aes-key-wrap=on|off controls support for AES key wrapping (default=on)\n"
+" dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
+" suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
+" nvdimm=on|off controls NVDIMM support (default=off)\n"
+" enforce-config-section=on|off enforce configuration section migration (default=off)\n"
+" s390-squash-mcss=on|off (deprecated) controls support for squashing into default css (default=off)\n"
+" memory-encryption=@var{} memory encryption object to use (default=none)\n",
+QEMU_ARCH_ALL)
+
+DEF("M", HAS_ARG, QEMU_OPTION_M, "", QEMU_ARCH_ALL)
+
+DEF("cpu", HAS_ARG, QEMU_OPTION_cpu,
+"-cpu cpu select CPU ('-cpu help' for list)\n", QEMU_ARCH_ALL)
+
+DEF("accel", HAS_ARG, QEMU_OPTION_accel,
+"-accel [accel=]accelerator[,thread=single|multi]\n"
+" select accelerator (kvm, xen, hax, hvf, whpx or tcg; use 'help' for a list)\n"
+" thread=single|multi (enable multi-threaded TCG)", QEMU_ARCH_ALL)
+
+DEF("smp", HAS_ARG, QEMU_OPTION_smp,
+"-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]\n"
+" set the number of CPUs to 'n' [default=1]\n"
+" maxcpus= maximum number of total cpus, including\n"
+" offline CPUs for hotplug, etc\n"
+" cores= number of CPU cores on one socket\n"
+" threads= number of threads on one CPU core\n"
+" sockets= number of discrete sockets in the system\n",
+QEMU_ARCH_ALL)
+
+DEF("numa", HAS_ARG, QEMU_OPTION_numa,
+"-numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node]\n"
+"-numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node]\n"
+"-numa dist,src=source,dst=destination,val=distance\n"
+"-numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]\n",
+QEMU_ARCH_ALL)
+
+DEF("add-fd", HAS_ARG, QEMU_OPTION_add_fd,
+"-add-fd fd=fd,set=set[,opaque=opaque]\n"
+" Add 'fd' to fd 'set'\n", QEMU_ARCH_ALL)
+
+DEF("set", HAS_ARG, QEMU_OPTION_set,
+"-set group.id.arg=value\n"
+" set <arg> parameter for item <id> of type <group>\n"
+" i.e. -set drive.$id.file=/path/to/image\n", QEMU_ARCH_ALL)
+
+DEF("global", HAS_ARG, QEMU_OPTION_global,
+"-global driver.property=value\n"
+"-global driver=driver,property=property,value=value\n"
+" set a global default for a driver property\n",
+QEMU_ARCH_ALL)
+
+DEF("boot", HAS_ARG, QEMU_OPTION_boot,
+"-boot [order=drives][,once=drives][,menu=on|off]\n"
+" [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]\n"
+" 'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)\n"
+" 'sp_name': the file's name that would be passed to bios as logo picture, if menu=on\n"
+" 'sp_time': the period that splash picture last if menu=on, unit is ms\n"
+" 'rb_timeout': the timeout before guest reboot when boot failed, unit is ms\n",
+QEMU_ARCH_ALL)
+
+DEF("m", HAS_ARG, QEMU_OPTION_m,
+"-m [size=]megs[,slots=n,maxmem=size]\n"
+" configure guest RAM\n"
+" size: initial amount of guest memory\n"
+" slots: number of hotplug slots (default: none)\n"
+" maxmem: maximum amount of guest memory (default: none)\n"
+"NOTE: Some architectures might enforce a specific granularity\n",
+QEMU_ARCH_ALL)
+
+DEF("mem-path", HAS_ARG, QEMU_OPTION_mempath,
+"-mem-path FILE provide backing storage for guest RAM\n", QEMU_ARCH_ALL)
+
+DEF("mem-prealloc", 0, QEMU_OPTION_mem_prealloc,
+"-mem-prealloc preallocate guest memory (use with -mem-path)\n",
+QEMU_ARCH_ALL)
+
+DEF("k", HAS_ARG, QEMU_OPTION_k,
+"-k language use keyboard layout (for example 'fr' for French)\n",
+QEMU_ARCH_ALL)
+
+
+DEF("audio-help", 0, QEMU_OPTION_audio_help,
+"-audio-help print list of audio drivers and their options\n",
+QEMU_ARCH_ALL)
+
+DEF("no-audio", 0, QEMU_OPTION_audio_none,
+"-no-audio disable audio support\n",
+QEMU_ARCH_ALL)
+
+DEF("soundhw", HAS_ARG, QEMU_OPTION_soundhw,
+"-soundhw c1,... enable audio support\n"
+" and only specified sound cards (comma separated list)\n"
+" use '-soundhw help' to get the list of supported cards\n"
+" use '-soundhw all' to enable all of them\n", QEMU_ARCH_ALL)
+
+DEF("balloon", HAS_ARG, QEMU_OPTION_balloon,
+"-balloon virtio[,addr=str]\n"
+" enable virtio balloon device (deprecated)\n", QEMU_ARCH_ALL)
+
+DEF("device", HAS_ARG, QEMU_OPTION_device,
+"-device driver[,prop[=value][,...]]\n"
+" add device (based on driver)\n"
+" prop=value,... sets driver properties\n"
+" use '-device help' to print all possible drivers\n"
+" use '-device driver,help' to print all possible properties\n",
+QEMU_ARCH_ALL)
+
+DEF("name", HAS_ARG, QEMU_OPTION_name,
+"-name string1[,process=string2][,debug-threads=on|off]\n"
+" set the name of the guest\n"
+" string1 sets the window title and string2 the process name (on Linux)\n"
+" When debug-threads is enabled, individual threads are given a separate name (on Linux)\n"
+" NOTE: The thread names are for debugging and not a stable API.\n",
+QEMU_ARCH_ALL)
+
+DEF("uuid", HAS_ARG, QEMU_OPTION_uuid,
+"-uuid %08x-%04x-%04x-%04x-%012x\n"
+" specify machine UUID\n", QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+DEFHEADING(Block device options:)
+
+DEF("fda", HAS_ARG, QEMU_OPTION_fda,
+"-fda/-fdb file use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
+DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
+
+DEF("hda", HAS_ARG, QEMU_OPTION_hda,
+"-hda/-hdb file use 'file' as IDE hard disk 0/1 image\n", QEMU_ARCH_ALL)
+DEF("hdb", HAS_ARG, QEMU_OPTION_hdb, "", QEMU_ARCH_ALL)
+DEF("hdc", HAS_ARG, QEMU_OPTION_hdc,
+"-hdc/-hdd file use 'file' as IDE hard disk 2/3 image\n", QEMU_ARCH_ALL)
+DEF("hdd", HAS_ARG, QEMU_OPTION_hdd, "", QEMU_ARCH_ALL)
+
+DEF("cdrom", HAS_ARG, QEMU_OPTION_cdrom,
+"-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)\n",
+QEMU_ARCH_ALL)
+
+DEF("blockdev", HAS_ARG, QEMU_OPTION_blockdev,
+"-blockdev [driver=]driver[,node-name=N][,discard=ignore|unmap]\n"
+" [,cache.direct=on|off][,cache.no-flush=on|off]\n"
+" [,read-only=on|off][,detect-zeroes=on|off|unmap]\n"
+" [,driver specific parameters...]\n"
+" configure a block backend\n", QEMU_ARCH_ALL)
+
+DEF("drive", HAS_ARG, QEMU_OPTION_drive,
+"-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n"
+" [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]\n"
+" [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]\n"
+" [,serial=s][,addr=A][,rerror=ignore|stop|report]\n"
+" [,werror=ignore|stop|report|enospc][,id=name][,aio=threads|native]\n"
+" [,readonly=on|off][,copy-on-read=on|off]\n"
+" [,discard=ignore|unmap][,detect-zeroes=on|off|unmap]\n"
+" [[,bps=b]|[[,bps_rd=r][,bps_wr=w]]]\n"
+" [[,iops=i]|[[,iops_rd=r][,iops_wr=w]]]\n"
+" [[,bps_max=bm]|[[,bps_rd_max=rm][,bps_wr_max=wm]]]\n"
+" [[,iops_max=im]|[[,iops_rd_max=irm][,iops_wr_max=iwm]]]\n"
+" [[,iops_size=is]]\n"
+" [[,group=g]]\n"
+" use 'file' as a drive image\n", QEMU_ARCH_ALL)
+
+DEF("mtdblock", HAS_ARG, QEMU_OPTION_mtdblock,
+"-mtdblock file use 'file' as on-board Flash memory image\n",
+QEMU_ARCH_ALL)
+
+DEF("sd", HAS_ARG, QEMU_OPTION_sd,
+"-sd file use 'file' as SecureDigital card image\n", QEMU_ARCH_ALL)
+
+DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
+"-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
+
+DEF("snapshot", 0, QEMU_OPTION_snapshot,
+"-snapshot write to temporary files instead of disk image files\n",
+QEMU_ARCH_ALL)
+
+DEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev,
+"-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}]\n"
+" [,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd][,fmode=fmode][,dmode=dmode]\n"
+" [[,throttling.bps-total=b]|[[,throttling.bps-read=r][,throttling.bps-write=w]]]\n"
+" [[,throttling.iops-total=i]|[[,throttling.iops-read=r][,throttling.iops-write=w]]]\n"
+" [[,throttling.bps-total-max=bm]|[[,throttling.bps-read-max=rm][,throttling.bps-write-max=wm]]]\n"
+" [[,throttling.iops-total-max=im]|[[,throttling.iops-read-max=irm][,throttling.iops-write-max=iwm]]]\n"
+" [[,throttling.iops-size=is]]\n",
+QEMU_ARCH_ALL)
+
+
+DEF("virtfs", HAS_ARG, QEMU_OPTION_virtfs,
+"-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none]\n"
+" [,id=id][,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd][,fmode=fmode][,dmode=dmode]\n",
+QEMU_ARCH_ALL)
+
+
+DEF("virtfs_synth", 0, QEMU_OPTION_virtfs_synth,
+"-virtfs_synth Create synthetic file system image\n",
+QEMU_ARCH_ALL)
+
+DEF("iscsi", HAS_ARG, QEMU_OPTION_iscsi,
+"-iscsi [user=user][,password=password]\n"
+" [,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE\n"
+" [,initiator-name=initiator-iqn][,id=target-iqn]\n"
+" [,timeout=timeout]\n"
+" iSCSI session parameters\n", QEMU_ARCH_ALL)
+
+
+DEFHEADING()
+
+DEFHEADING(USB options:)
+
+DEF("usb", 0, QEMU_OPTION_usb,
+"-usb enable the USB driver (if it is not used by default yet)\n",
+QEMU_ARCH_ALL)
+
+DEF("usbdevice", HAS_ARG, QEMU_OPTION_usbdevice,
+"-usbdevice name add the host or guest USB device 'name'\n",
+QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+DEFHEADING(Display options:)
+
+DEF("display", HAS_ARG, QEMU_OPTION_display,
+"-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n"
+" [,window_close=on|off][,gl=on|off]\n"
+"-display gtk[,grab_on_hover=on|off][,gl=on|off]|\n"
+"-display vnc=<display>[,<optargs>]\n"
+"-display curses\n"
+"-display none"
+" select display type\n"
+"The default display is equivalent to\n"
+#if defined(CONFIG_GTK)
+"\t\"-display gtk\"\n"
+#elif defined(CONFIG_SDL)
+"\t\"-display sdl\"\n"
+#elif defined(CONFIG_COCOA)
+"\t\"-display cocoa\"\n"
+#elif defined(CONFIG_VNC)
+"\t\"-vnc localhost:0,to=99,id=default\"\n"
+#else
+"\t\"-display none\"\n"
+#endif
+, QEMU_ARCH_ALL)
+
+DEF("nographic", 0, QEMU_OPTION_nographic,
+"-nographic disable graphical output and redirect serial I/Os to console\n",
+QEMU_ARCH_ALL)
+
+DEF("curses", 0, QEMU_OPTION_curses,
+"-curses shorthand for -display curses\n",
+QEMU_ARCH_ALL)
+
+DEF("no-frame", 0, QEMU_OPTION_no_frame,
+"-no-frame open SDL window without a frame and window decorations\n",
+QEMU_ARCH_ALL)
+
+DEF("alt-grab", 0, QEMU_OPTION_alt_grab,
+"-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)\n",
+QEMU_ARCH_ALL)
+
+DEF("ctrl-grab", 0, QEMU_OPTION_ctrl_grab,
+"-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)\n",
+QEMU_ARCH_ALL)
+
+DEF("no-quit", 0, QEMU_OPTION_no_quit,
+"-no-quit disable SDL window close capability\n", QEMU_ARCH_ALL)
+
+DEF("sdl", 0, QEMU_OPTION_sdl,
+"-sdl shorthand for -display sdl\n", QEMU_ARCH_ALL)
+
+DEF("spice", HAS_ARG, QEMU_OPTION_spice,
+"-spice [port=port][,tls-port=secured-port][,x509-dir=<dir>]\n"
+" [,x509-key-file=<file>][,x509-key-password=<file>]\n"
+" [,x509-cert-file=<file>][,x509-cacert-file=<file>]\n"
+" [,x509-dh-key-file=<file>][,addr=addr][,ipv4|ipv6|unix]\n"
+" [,tls-ciphers=<list>]\n"
+" [,tls-channel=[main|display|cursor|inputs|record|playback]]\n"
+" [,plaintext-channel=[main|display|cursor|inputs|record|playback]]\n"
+" [,sasl][,password=<secret>][,disable-ticketing]\n"
+" [,image-compression=[auto_glz|auto_lz|quic|glz|lz|off]]\n"
+" [,jpeg-wan-compression=[auto|never|always]]\n"
+" [,zlib-glz-wan-compression=[auto|never|always]]\n"
+" [,streaming-video=[off|all|filter]][,disable-copy-paste]\n"
+" [,disable-agent-file-xfer][,agent-mouse=[on|off]]\n"
+" [,playback-compression=[on|off]][,seamless-migration=[on|off]]\n"
+" [,gl=[on|off]][,rendernode=<file>]\n"
+" enable spice\n"
+" at least one of {port, tls-port} is mandatory\n",
+QEMU_ARCH_ALL)
+
+DEF("portrait", 0, QEMU_OPTION_portrait,
+"-portrait rotate graphical output 90 deg left (only PXA LCD)\n",
+QEMU_ARCH_ALL)
+
+DEF("rotate", HAS_ARG, QEMU_OPTION_rotate,
+"-rotate <deg> rotate graphical output some deg left (only PXA LCD)\n",
+QEMU_ARCH_ALL)
+
+DEF("vga", HAS_ARG, QEMU_OPTION_vga,
+"-vga [std|cirrus|vmware|qxl|xenfb|tcx|cg3|virtio|none]\n"
+" select video card type\n", QEMU_ARCH_ALL)
+
+DEF("full-screen", 0, QEMU_OPTION_full_screen,
+"-full-screen start in full screen\n", QEMU_ARCH_ALL)
+
+DEF("g", 1, QEMU_OPTION_g ,
+"-g WxH[xDEPTH] Set the initial graphical resolution and depth\n",
+QEMU_ARCH_PPC | QEMU_ARCH_SPARC)
+
+DEF("vnc", HAS_ARG, QEMU_OPTION_vnc ,
+"-vnc <display> shorthand for -display vnc=<display>\n", QEMU_ARCH_ALL)
+
+ARCHHEADING(, QEMU_ARCH_I386)
+
+ARCHHEADING(i386 target only:, QEMU_ARCH_I386)
+
+DEF("win2k-hack", 0, QEMU_OPTION_win2k_hack,
+"-win2k-hack use it when installing Windows 2000 to avoid a disk full bug\n",
+QEMU_ARCH_I386)
+
+DEF("rtc-td-hack", 0, QEMU_OPTION_rtc_td_hack, "", QEMU_ARCH_I386)
+
+DEF("no-fd-bootchk", 0, QEMU_OPTION_no_fd_bootchk,
+"-no-fd-bootchk disable boot signature checking for floppy disks\n",
+QEMU_ARCH_I386)
+
+DEF("no-acpi", 0, QEMU_OPTION_no_acpi,
+"-no-acpi disable ACPI\n", QEMU_ARCH_I386 | QEMU_ARCH_ARM)
+
+DEF("no-hpet", 0, QEMU_OPTION_no_hpet,
+"-no-hpet disable HPET\n", QEMU_ARCH_I386)
+
+DEF("acpitable", HAS_ARG, QEMU_OPTION_acpitable,
+"-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]\n"
+" ACPI table description\n", QEMU_ARCH_I386)
+
+DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
+"-smbios file=binary\n"
+" load SMBIOS entry from binary file\n"
+"-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]\n"
+" [,uefi=on|off]\n"
+" specify SMBIOS type 0 fields\n"
+"-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
+" [,uuid=uuid][,sku=str][,family=str]\n"
+" specify SMBIOS type 1 fields\n"
+"-smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str]\n"
+" [,asset=str][,location=str]\n"
+" specify SMBIOS type 2 fields\n"
+"-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str]\n"
+" [,sku=str]\n"
+" specify SMBIOS type 3 fields\n"
+"-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
+" [,asset=str][,part=str]\n"
+" specify SMBIOS type 4 fields\n"
+"-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
+" [,asset=str][,part=str][,speed=%d]\n"
+" specify SMBIOS type 17 fields\n",
+QEMU_ARCH_I386 | QEMU_ARCH_ARM)
+
+DEFHEADING()
+
+DEFHEADING(Network options:)
+
+#ifdef CONFIG_SLIRP
+DEF("tftp", HAS_ARG, QEMU_OPTION_tftp, "", QEMU_ARCH_ALL)
+DEF("bootp", HAS_ARG, QEMU_OPTION_bootp, "", QEMU_ARCH_ALL)
+DEF("redir", HAS_ARG, QEMU_OPTION_redir, "", QEMU_ARCH_ALL)
+#ifndef _WIN32
+DEF("smb", HAS_ARG, QEMU_OPTION_smb, "", QEMU_ARCH_ALL)
+#endif
+#endif
+
+DEF("netdev", HAS_ARG, QEMU_OPTION_netdev,
+#ifdef CONFIG_SLIRP
+"-netdev user,id=str[,ipv4[=on|off]][,net=addr[/mask]][,host=addr]\n"
+" [,ipv6[=on|off]][,ipv6-net=addr[/int]][,ipv6-host=addr]\n"
+" [,restrict=on|off][,hostname=host][,dhcpstart=addr]\n"
+" [,dns=addr][,ipv6-dns=addr][,dnssearch=domain][,tftp=dir]\n"
+" [,bootfile=f][,hostfwd=rule][,guestfwd=rule]"
+#ifndef _WIN32
+"[,smb=dir[,smbserver=addr]]\n"
+#endif
+" configure a user mode network backend with ID 'str',\n"
+" its DHCP server and optional services\n"
+#endif
+#ifdef _WIN32
+"-netdev tap,id=str,ifname=name\n"
+" configure a host TAP network backend with ID 'str'\n"
+#else
+"-netdev tap,id=str[,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]\n"
+" [,br=bridge][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off]\n"
+" [,vhostfd=h][,vhostfds=x:y:...:z][,vhostforce=on|off][,queues=n]\n"
+" [,poll-us=n]\n"
+" configure a host TAP network backend with ID 'str'\n"
+" connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
+" use network scripts 'file' (default=" DEFAULT_NETWORK_SCRIPT ")\n"
+" to configure it and 'dfile' (default=" DEFAULT_NETWORK_DOWN_SCRIPT ")\n"
+" to deconfigure it\n"
+" use '[down]script=no' to disable script execution\n"
+" use network helper 'helper' (default=" DEFAULT_BRIDGE_HELPER ") to\n"
+" configure it\n"
+" use 'fd=h' to connect to an already opened TAP interface\n"
+" use 'fds=x:y:...:z' to connect to already opened multiqueue capable TAP interfaces\n"
+" use 'sndbuf=nbytes' to limit the size of the send buffer (the\n"
+" default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')\n"
+" use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag\n"
+" use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition\n"
+" use vhost=on to enable experimental in kernel accelerator\n"
+" (only has effect for virtio guests which use MSIX)\n"
+" use vhostforce=on to force vhost on for non-MSIX virtio guests\n"
+" use 'vhostfd=h' to connect to an already opened vhost net device\n"
+" use 'vhostfds=x:y:...:z to connect to multiple already opened vhost net devices\n"
+" use 'queues=n' to specify the number of queues to be created for multiqueue TAP\n"
+" use 'poll-us=n' to speciy the maximum number of microseconds that could be\n"
+" spent on busy polling for vhost net\n"
+"-netdev bridge,id=str[,br=bridge][,helper=helper]\n"
+" configure a host TAP network backend with ID 'str' that is\n"
+" connected to a bridge (default=" DEFAULT_BRIDGE_INTERFACE ")\n"
+" using the program 'helper (default=" DEFAULT_BRIDGE_HELPER ")\n"
+#endif
+#ifdef __linux__
+"-netdev l2tpv3,id=str,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport]\n"
+" [,rxsession=rxsession],txsession=txsession[,ipv6=on/off][,udp=on/off]\n"
+" [,cookie64=on/off][,counter][,pincounter][,txcookie=txcookie]\n"
+" [,rxcookie=rxcookie][,offset=offset]\n"
+" configure a network backend with ID 'str' connected to\n"
+" an Ethernet over L2TPv3 pseudowire.\n"
+" Linux kernel 3.3+ as well as most routers can talk\n"
+" L2TPv3. This transport allows connecting a VM to a VM,\n"
+" VM to a router and even VM to Host. It is a nearly-universal\n"
+" standard (RFC3391). Note - this implementation uses static\n"
+" pre-configured tunnels (same as the Linux kernel).\n"
+" use 'src=' to specify source address\n"
+" use 'dst=' to specify destination address\n"
+" use 'udp=on' to specify udp encapsulation\n"
+" use 'srcport=' to specify source udp port\n"
+" use 'dstport=' to specify destination udp port\n"
+" use 'ipv6=on' to force v6\n"
+" L2TPv3 uses cookies to prevent misconfiguration as\n"
+" well as a weak security measure\n"
+" use 'rxcookie=0x012345678' to specify a rxcookie\n"
+" use 'txcookie=0x012345678' to specify a txcookie\n"
+" use 'cookie64=on' to set cookie size to 64 bit, otherwise 32\n"
+" use 'counter=off' to force a 'cut-down' L2TPv3 with no counter\n"
+" use 'pincounter=on' to work around broken counter handling in peer\n"
+" use 'offset=X' to add an extra offset between header and data\n"
+#endif
+"-netdev socket,id=str[,fd=h][,listen=[host]:port][,connect=host:port]\n"
+" configure a network backend to connect to another network\n"
+" using a socket connection\n"
+"-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]\n"
+" configure a network backend to connect to a multicast maddr and port\n"
+" use 'localaddr=addr' to specify the host address to send packets from\n"
+"-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]\n"
+" configure a network backend to connect to another network\n"
+" using an UDP tunnel\n"
+#ifdef CONFIG_VDE
+"-netdev vde,id=str[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]\n"
+" configure a network backend to connect to port 'n' of a vde switch\n"
+" running on host and listening for incoming connections on 'socketpath'.\n"
+" Use group 'groupname' and mode 'octalmode' to change default\n"
+" ownership and permissions for communication port.\n"
+#endif
+#ifdef CONFIG_NETMAP
+"-netdev netmap,id=str,ifname=name[,devname=nmname]\n"
+" attach to the existing netmap-enabled network interface 'name', or to a\n"
+" VALE port (created on the fly) called 'name' ('nmname' is name of the \n"
+" netmap device, defaults to '/dev/netmap')\n"
+#endif
+#ifdef CONFIG_POSIX
+"-netdev vhost-user,id=str,chardev=dev[,vhostforce=on|off]\n"
+" configure a vhost-user network, backed by a chardev 'dev'\n"
+#endif
+"-netdev hubport,id=str,hubid=n[,netdev=nd]\n"
+" configure a hub port on QEMU VLAN 'n'\n", QEMU_ARCH_ALL)
+DEF("nic", HAS_ARG, QEMU_OPTION_nic,
+"--nic [tap|bridge|"
+#ifdef CONFIG_SLIRP
+"user|"
+#endif
+#ifdef __linux__
+"l2tpv3|"
+#endif
+#ifdef CONFIG_VDE
+"vde|"
+#endif
+#ifdef CONFIG_NETMAP
+"netmap|"
+#endif
+#ifdef CONFIG_POSIX
+"vhost-user|"
+#endif
+"socket][,option][,...][mac=macaddr]\n"
+" initialize an on-board / default host NIC (using MAC address\n"
+" macaddr) and connect it to the given host network backend\n"
+"--nic none use it alone to have zero network devices (the default is to\n"
+" provided a 'user' network connection)\n",
+QEMU_ARCH_ALL)
+DEF("net", HAS_ARG, QEMU_OPTION_net,
+"-net nic[,vlan=n][,netdev=nd][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]\n"
+" configure or create an on-board (or machine default) NIC and\n"
+" connect it either to VLAN 'n' or the netdev 'nd' (for pluggable\n"
+" NICs please use '-device devtype,netdev=nd' instead)\n"
+"-net ["
+#ifdef CONFIG_SLIRP
+"user|"
+#endif
+"tap|"
+"bridge|"
+#ifdef CONFIG_VDE
+"vde|"
+#endif
+#ifdef CONFIG_NETMAP
+"netmap|"
+#endif
+"socket][,vlan=n][,option][,option][,...]\n"
+" old way to initialize a host network interface\n"
+" (use the -netdev option if possible instead)\n", QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+DEFHEADING(Character device options:)
+
+DEF("chardev", HAS_ARG, QEMU_OPTION_chardev,
+"-chardev help\n"
+"-chardev null,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev socket,id=id[,host=host],port=port[,to=to][,ipv4][,ipv6][,nodelay][,reconnect=seconds]\n"
+" [,server][,nowait][,telnet][,reconnect=seconds][,mux=on|off]\n"
+" [,logfile=PATH][,logappend=on|off][,tls-creds=ID] (tcp)\n"
+"-chardev socket,id=id,path=path[,server][,nowait][,telnet][,reconnect=seconds]\n"
+" [,mux=on|off][,logfile=PATH][,logappend=on|off] (unix)\n"
+"-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]\n"
+" [,localport=localport][,ipv4][,ipv6][,mux=on|off]\n"
+" [,logfile=PATH][,logappend=on|off]\n"
+"-chardev msmouse,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]\n"
+" [,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev ringbuf,id=id[,size=size][,logfile=PATH][,logappend=on|off]\n"
+"-chardev file,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev pipe,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+#ifdef _WIN32
+"-chardev console,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+#else
+"-chardev pty,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev stdio,id=id[,mux=on|off][,signal=on|off][,logfile=PATH][,logappend=on|off]\n"
+#endif
+#ifdef CONFIG_BRLAPI
+"-chardev braille,id=id[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+#endif
+#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \
+|| defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+"-chardev serial,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev tty,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+#endif
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__)
+"-chardev parallel,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+"-chardev parport,id=id,path=path[,mux=on|off][,logfile=PATH][,logappend=on|off]\n"
+#endif
+#if defined(CONFIG_SPICE)
+"-chardev spicevmc,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
+"-chardev spiceport,id=id,name=name[,debug=debug][,logfile=PATH][,logappend=on|off]\n"
+#endif
+, QEMU_ARCH_ALL
+)
+
+
+DEFHEADING()
+
+DEFHEADING(Device URL Syntax:)
+
+
+DEFHEADING(Bluetooth(R) options:)
+
+DEF("bt", HAS_ARG, QEMU_OPTION_bt, \
+"-bt hci,null dumb bluetooth HCI - doesn't respond to commands\n" \
+"-bt hci,host[:id]\n" \
+" use host's HCI with the given name\n" \
+"-bt hci[,vlan=n]\n" \
+" emulate a standard HCI in virtual scatternet 'n'\n" \
+"-bt vhci[,vlan=n]\n" \
+" add host computer to virtual scatternet 'n' using VHCI\n" \
+"-bt device:dev[,vlan=n]\n" \
+" emulate a bluetooth device 'dev' in scatternet 'n'\n",
+QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+#ifdef CONFIG_TPM
+DEFHEADING(TPM device options:)
+
+DEF("tpmdev", HAS_ARG, QEMU_OPTION_tpmdev, \
+"-tpmdev passthrough,id=id[,path=path][,cancel-path=path]\n"
+" use path to provide path to a character device; default is /dev/tpm0\n"
+" use cancel-path to provide path to TPM's cancel sysfs entry; if\n"
+" not provided it will be searched for in /sys/class/misc/tpm?/device\n"
+"-tpmdev emulator,id=id,chardev=dev\n"
+" configure the TPM device using chardev backend\n",
+QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+#endif
+
+DEFHEADING(Linux/Multiboot boot specific:)
+
+DEF("kernel", HAS_ARG, QEMU_OPTION_kernel, \
+"-kernel bzImage use 'bzImage' as kernel image\n", QEMU_ARCH_ALL)
+
+DEF("append", HAS_ARG, QEMU_OPTION_append, \
+"-append cmdline use 'cmdline' as kernel command line\n", QEMU_ARCH_ALL)
+
+DEF("initrd", HAS_ARG, QEMU_OPTION_initrd, \
+"-initrd file use 'file' as initial ram disk\n", QEMU_ARCH_ALL)
+
+DEF("dtb", HAS_ARG, QEMU_OPTION_dtb, \
+"-dtb file use 'file' as device tree image\n", QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+DEFHEADING(Debug/Expert options:)
+
+DEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg,
+"-fw_cfg [name=]<name>,file=<file>\n"
+" add named fw_cfg entry with contents from file\n"
+"-fw_cfg [name=]<name>,string=<str>\n"
+" add named fw_cfg entry with contents from string\n",
+QEMU_ARCH_ALL)
+
+DEF("serial", HAS_ARG, QEMU_OPTION_serial, \
+"-serial dev redirect the serial port to char device 'dev'\n",
+QEMU_ARCH_ALL)
+
+DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \
+"-parallel dev redirect the parallel port to char device 'dev'\n",
+QEMU_ARCH_ALL)
+
+DEF("monitor", HAS_ARG, QEMU_OPTION_monitor, \
+"-monitor dev redirect the monitor to char device 'dev'\n",
+QEMU_ARCH_ALL)
+DEF("qmp", HAS_ARG, QEMU_OPTION_qmp, \
+"-qmp dev like -monitor but opens in 'control' mode\n",
+QEMU_ARCH_ALL)
+DEF("qmp-pretty", HAS_ARG, QEMU_OPTION_qmp_pretty, \
+"-qmp-pretty dev like -qmp but uses pretty JSON formatting\n",
+QEMU_ARCH_ALL)
+
+DEF("mon", HAS_ARG, QEMU_OPTION_mon, \
+"-mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]\n", QEMU_ARCH_ALL)
+
+DEF("debugcon", HAS_ARG, QEMU_OPTION_debugcon, \
+"-debugcon dev redirect the debug console to char device 'dev'\n",
+QEMU_ARCH_ALL)
+
+DEF("pidfile", HAS_ARG, QEMU_OPTION_pidfile, \
+"-pidfile file write PID to 'file'\n", QEMU_ARCH_ALL)
+
+DEF("singlestep", 0, QEMU_OPTION_singlestep, \
+"-singlestep always run in singlestep mode\n", QEMU_ARCH_ALL)
+
+DEF("S", 0, QEMU_OPTION_S, \
+"-S freeze CPU at startup (use 'c' to start execution)\n",
+QEMU_ARCH_ALL)
+
+DEF("realtime", HAS_ARG, QEMU_OPTION_realtime,
+"-realtime [mlock=on|off]\n"
+" run qemu with realtime features\n"
+" mlock=on|off controls mlock support (default: on)\n",
+QEMU_ARCH_ALL)
+
+DEF("gdb", HAS_ARG, QEMU_OPTION_gdb, \
+"-gdb dev wait for gdb connection on 'dev'\n", QEMU_ARCH_ALL)
+
+DEF("s", 0, QEMU_OPTION_s, \
+"-s shorthand for -gdb tcp::" DEFAULT_GDBSTUB_PORT "\n",
+QEMU_ARCH_ALL)
+
+DEF("d", HAS_ARG, QEMU_OPTION_d, \
+"-d item1,... enable logging of specified items (use '-d help' for a list of log items)\n",
+QEMU_ARCH_ALL)
+
+DEF("D", HAS_ARG, QEMU_OPTION_D, \
+"-D logfile output log to logfile (default stderr)\n",
+QEMU_ARCH_ALL)
+
+DEF("dfilter", HAS_ARG, QEMU_OPTION_DFILTER, \
+"-dfilter range,.. filter debug output to range of addresses (useful for -d cpu,exec,etc..)\n",
+QEMU_ARCH_ALL)
+
+DEF("L", HAS_ARG, QEMU_OPTION_L, \
+"-L path set the directory for the BIOS, VGA BIOS and keymaps\n",
+QEMU_ARCH_ALL)
+
+DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
+"-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
+
+DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
+"-enable-kvm enable KVM full virtualization support\n", QEMU_ARCH_ALL)
+
+DEF("enable-hax", 0, QEMU_OPTION_enable_hax, \
+"-enable-hax enable HAX virtualization support\n", QEMU_ARCH_I386)
+
+DEF("enable-whpx", 0, QEMU_OPTION_enable_whpx, \
+"-enable-whpx enable WHPX virtualization support\n", QEMU_ARCH_ALL)
+
+DEF("enable-hvf", 0, QEMU_OPTION_enable_hvf, \
+"-enable-hvf enable Hypervisor.framework virtualization support\n", QEMU_ARCH_I386)
+
+DEF("xen-domid", HAS_ARG, QEMU_OPTION_xen_domid,
+"-xen-domid id specify xen guest domain id\n", QEMU_ARCH_ALL)
+DEF("xen-create", 0, QEMU_OPTION_xen_create,
+"-xen-create create domain using xen hypercalls, bypassing xend\n"
+" warning: should not be used when xend is in use\n",
+QEMU_ARCH_ALL)
+DEF("xen-attach", 0, QEMU_OPTION_xen_attach,
+"-xen-attach attach to existing xen domain\n"
+" xend will use this when starting QEMU\n",
+QEMU_ARCH_ALL)
+DEF("xen-domid-restrict", 0, QEMU_OPTION_xen_domid_restrict,
+"-xen-domid-restrict restrict set of available xen operations\n"
+" to specified domain id. (Does not affect\n"
+" xenpv machine type).\n",
+QEMU_ARCH_ALL)
+
+DEF("no-reboot", 0, QEMU_OPTION_no_reboot, \
+"-no-reboot exit instead of rebooting\n", QEMU_ARCH_ALL)
+
+DEF("no-shutdown", 0, QEMU_OPTION_no_shutdown, \
+"-no-shutdown stop before shutdown\n", QEMU_ARCH_ALL)
+
+DEF("loadvm", HAS_ARG, QEMU_OPTION_loadvm, \
+"-loadvm [tag|id]\n" \
+" start right away with a saved state (loadvm in monitor)\n",
+QEMU_ARCH_ALL)
+
+DEF("snapshot-list", 0, QEMU_OPTION_snapshot_list, \
+"-snapshot-list\n" \
+" list snapshots of current AVD on startup\n",
+QEMU_ARCH_ALL)
+
+#ifndef _WIN32
+DEF("daemonize", 0, QEMU_OPTION_daemonize, \
+"-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
+#endif
+
+DEF("option-rom", HAS_ARG, QEMU_OPTION_option_rom, \
+"-option-rom rom load a file, rom, into the option ROM space\n",
+QEMU_ARCH_ALL)
+
+DEF("clock", HAS_ARG, QEMU_OPTION_clock, "", QEMU_ARCH_ALL)
+
+DEF("localtime", 0, QEMU_OPTION_localtime, "", QEMU_ARCH_ALL)
+DEF("startdate", HAS_ARG, QEMU_OPTION_startdate, "", QEMU_ARCH_ALL)
+
+DEF("rtc", HAS_ARG, QEMU_OPTION_rtc, \
+"-rtc [base=utc|localtime|date][,clock=host|rt|vm][,driftfix=none|slew]\n" \
+" set the RTC base and clock, enable drift fix for clock ticks (x86 only)\n",
+QEMU_ARCH_ALL)
+
+
+DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
+"-icount [shift=N|auto][,align=on|off][,sleep=on|off,rr=record|replay,rrfile=<filename>,rrsnapshot=<snapshot>]\n" \
+" enable virtual instruction counter with 2^N clock ticks per\n" \
+" instruction, enable aligning the host and virtual clocks\n" \
+" or disable real time cpu sleeping\n", QEMU_ARCH_ALL)
+
+DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
+"-watchdog model\n" \
+" enable virtual hardware watchdog [default=none]\n",
+QEMU_ARCH_ALL)
+
+DEF("watchdog-action", HAS_ARG, QEMU_OPTION_watchdog_action, \
+"-watchdog-action reset|shutdown|poweroff|inject-nmi|pause|debug|none\n" \
+" action when watchdog fires [default=reset]\n",
+QEMU_ARCH_ALL)
+
+DEF("echr", HAS_ARG, QEMU_OPTION_echr, \
+"-echr chr set terminal escape character instead of ctrl-a\n",
+QEMU_ARCH_ALL)
+
+DEF("virtioconsole", HAS_ARG, QEMU_OPTION_virtiocon, \
+"-virtioconsole c\n" \
+" set virtio console\n", QEMU_ARCH_ALL)
+
+DEF("show-cursor", 0, QEMU_OPTION_show_cursor, \
+"-show-cursor show cursor\n", QEMU_ARCH_ALL)
+
+DEF("tb-size", HAS_ARG, QEMU_OPTION_tb_size, \
+"-tb-size n set TB size\n", QEMU_ARCH_ALL)
+
+DEF("incoming", HAS_ARG, QEMU_OPTION_incoming, \
+"-incoming tcp:[host]:port[,to=maxport][,ipv4][,ipv6]\n" \
+"-incoming rdma:host:port[,ipv4][,ipv6]\n" \
+"-incoming unix:socketpath\n" \
+" prepare for incoming migration, listen on\n" \
+" specified protocol and socket address\n" \
+"-incoming fd:fd\n" \
+"-incoming exec:cmdline\n" \
+" accept incoming migration on given file descriptor\n" \
+" or from given external command\n" \
+"-incoming defer\n" \
+" wait for the URI to be specified via migrate_incoming\n",
+QEMU_ARCH_ALL)
+
+DEF("only-migratable", 0, QEMU_OPTION_only_migratable, \
+"-only-migratable allow only migratable devices\n", QEMU_ARCH_ALL)
+
+DEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
+"-nodefaults don't create default devices\n", QEMU_ARCH_ALL)
+
+#ifndef _WIN32
+DEF("chroot", HAS_ARG, QEMU_OPTION_chroot, \
+"-chroot dir chroot to dir just before starting the VM\n",
+QEMU_ARCH_ALL)
+#endif
+
+#ifndef _WIN32
+DEF("runas", HAS_ARG, QEMU_OPTION_runas, \
+"-runas user change to user id user just before starting the VM\n",
+QEMU_ARCH_ALL)
+#endif
+
+DEF("prom-env", HAS_ARG, QEMU_OPTION_prom_env,
+"-prom-env variable=value\n"
+" set OpenBIOS nvram variables\n",
+QEMU_ARCH_PPC | QEMU_ARCH_SPARC)
+DEF("semihosting", 0, QEMU_OPTION_semihosting,
+"-semihosting semihosting mode\n",
+QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
+QEMU_ARCH_MIPS)
+DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
+"-semihosting-config [enable=on|off][,target=native|gdb|auto][,arg=str[,...]]\n" \
+" semihosting configuration\n",
+QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
+QEMU_ARCH_MIPS)
+DEF("old-param", 0, QEMU_OPTION_old_param,
+"-old-param old param mode\n", QEMU_ARCH_ARM)
+
+DEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \
+"-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \
+" [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \
+" Enable seccomp mode 2 system call filter (default 'off').\n" \
+" use 'obsolete' to allow obsolete system calls that are provided\n" \
+" by the kernel, but typically no longer used by modern\n" \
+" C library implementations.\n" \
+" use 'elevateprivileges' to allow or deny QEMU process to elevate\n" \
+" its privileges by blacklisting all set*uid|gid system calls.\n" \
+" The value 'children' will deny set*uid|gid system calls for\n" \
+" main QEMU process but will allow forks and execves to run unprivileged\n" \
+" use 'spawn' to avoid QEMU to spawn new threads or processes by\n" \
+" blacklisting *fork and execve\n" \
+" use 'resourcecontrol' to disable process affinity and schedular priority\n",
+QEMU_ARCH_ALL)
+
+DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig,
+"-readconfig <file>\n", QEMU_ARCH_ALL)
+DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig,
+"-writeconfig <file>\n"
+" read/write config file\n", QEMU_ARCH_ALL)
+DEF("nodefconfig", 0, QEMU_OPTION_nodefconfig, "", QEMU_ARCH_ALL)
+DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
+"-no-user-config\n"
+" do not load default user-provided config files at startup\n",
+QEMU_ARCH_ALL)
+DEF("trace", HAS_ARG, QEMU_OPTION_trace,
+"-trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
+" specify tracing options\n",
+QEMU_ARCH_ALL)
+
+DEF("qtest", HAS_ARG, QEMU_OPTION_qtest, "", QEMU_ARCH_ALL)
+DEF("qtest-log", HAS_ARG, QEMU_OPTION_qtest_log, "", QEMU_ARCH_ALL)
+
+#ifdef __linux__
+DEF("enable-fips", 0, QEMU_OPTION_enablefips,
+"-enable-fips enable FIPS 140-2 compliance\n",
+QEMU_ARCH_ALL)
+#endif
+
+DEF("no-kvm", 0, QEMU_OPTION_no_kvm, "", QEMU_ARCH_I386)
+
+DEF("no-kvm-pit-reinjection", 0, QEMU_OPTION_no_kvm_pit_reinjection,
+"", QEMU_ARCH_I386)
+
+DEF("no-kvm-irqchip", 0, QEMU_OPTION_no_kvm_irqchip, "", QEMU_ARCH_I386)
+
+DEF("tdf", 0, QEMU_OPTION_tdf,"", QEMU_ARCH_ALL)
+
+DEF("msg", HAS_ARG, QEMU_OPTION_msg,
+"-msg timestamp[=on|off]\n"
+" change the format of messages\n"
+" on|off controls leading timestamps (default:on)\n",
+QEMU_ARCH_ALL)
+
+DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate,
+"-dump-vmstate <file>\n"
+" Output vmstate information in JSON format to file.\n"
+" Use the scripts/vmstate-static-checker.py file to\n"
+" check for possible regressions in migration code\n"
+" by comparing two such vmstate dumps.\n",
+QEMU_ARCH_ALL)
+
+DEFHEADING()
+
+DEFHEADING(Generic object creation:)
+
+DEF("object", HAS_ARG, QEMU_OPTION_object,
+"-object TYPENAME[,PROP1=VALUE1,...]\n"
+" create a new object of type TYPENAME setting properties\n"
+" in the order they are specified. Note that the 'id'\n"
+" property must be set. These objects are placed in the\n"
+" '/objects' path.\n",
+QEMU_ARCH_ALL)
+
+#ifdef CONFIG_ANDROID
+
+DEF("boot-property", HAS_ARG, QEMU_OPTION_boot_property, \
+"-boot-property <name>=<value> set system property on boot\n", QEMU_ARCH_ALL)
+
+DEF("lcd-density", HAS_ARG, QEMU_OPTION_lcd_density,
+"-lcd-density density\n"
+" select lcd display density value (default is 160)\n", QEMU_ARCH_ALL)
+
+DEF("android-ports", HAS_ARG, QEMU_OPTION_android_ports,
+"-android-ports <consoleport>,<adbport>"
+" TCP ports used for the emulator instance and adb bridge\n", QEMU_ARCH_ALL)
+
+DEF("android-report-console", HAS_ARG, QEMU_OPTION_android_report_console, \
+"-android-report-console <socket>"
+" report console port to remote socket\n", QEMU_ARCH_ALL)
+
+DEF("dns-server", HAS_ARG, QEMU_OPTION_dns_server,
+"-dns-server <servers> use this DNS server(s) in the emulated system\n", QEMU_ARCH_ALL)
+
+DEF("android-hw", HAS_ARG, QEMU_OPTION_android_hw,
+"-android-hw <file>\n"
+" specify the hw config ini file location\n", QEMU_ARCH_ALL)
+
+DEF("skip-adb-auth", 0, QEMU_OPTION_android_skip_adb_auth,
+"-skip-adb-auth skip adb authentication dialogue\n", QEMU_ARCH_ALL)
+
+DEF("timezone", HAS_ARG, QEMU_OPTION_timezone,
+"-timezone <timezone> use this timezone instead of host's default\n", QEMU_ARCH_ALL)
+
+DEF("net-tap", HAS_ARG, QEMU_OPTION_net_tap,
+"-net-tap <tap interface> use the provided TAP interface for networking\n", QEMU_ARCH_ALL)
+
+DEF("net-tap-script-up", HAS_ARG, QEMU_OPTION_net_tap_script_up,
+"-net-tap-script-up <script> script to run when TAP interface goes up\n", QEMU_ARCH_ALL)
+
+DEF("net-tap-script-down", HAS_ARG, QEMU_OPTION_net_tap_script_down,
+"-net-tap-script-down <script> script to run when TAP interface goes down\n", QEMU_ARCH_ALL)
+
+
+DEF("mem-file-shared", 0, QEMU_OPTION_mem_file_shared,
+"-mem-file-shared (use with -mem-path) initializes RAM backing file (specified in -mem-path) as a shared mapping\n", QEMU_ARCH_ALL)
+
+DEF("read-only", 0, QEMU_OPTION_read_only,
+"-read-only mark the session as read-only and abandon all snapshot or any disk changes at exit.\n", QEMU_ARCH_ALL)
+
+#endif // CONFIG_ANDROID
+
diff --git a/qemu2-auto-generated/qom/trace.c b/qemu2-auto-generated/qom/trace.c
new file mode 100644
index 0000000000..75697a2056
--- /dev/null
+++ b/qemu2-auto-generated/qom/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_OBJECT_DYNAMIC_CAST_ASSERT_DSTATE;
+uint16_t _TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_DSTATE;
+TraceEvent _TRACE_OBJECT_DYNAMIC_CAST_ASSERT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "object_dynamic_cast_assert",
+ .sstate = TRACE_OBJECT_DYNAMIC_CAST_ASSERT_ENABLED,
+ .dstate = &_TRACE_OBJECT_DYNAMIC_CAST_ASSERT_DSTATE
+};
+TraceEvent _TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "object_class_dynamic_cast_assert",
+ .sstate = TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_ENABLED,
+ .dstate = &_TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_DSTATE
+};
+TraceEvent *qom_trace_events[] = {
+ &_TRACE_OBJECT_DYNAMIC_CAST_ASSERT_EVENT,
+ &_TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_EVENT,
+ NULL,
+};
+
+static void trace_qom_register_events(void)
+{
+ trace_event_register_group(qom_trace_events);
+}
+trace_init(trace_qom_register_events)
diff --git a/qemu2-auto-generated/qom/trace.h b/qemu2-auto-generated/qom/trace.h
new file mode 100644
index 0000000000..823c0d117e
--- /dev/null
+++ b/qemu2-auto-generated/qom/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_QOM_GENERATED_TRACERS_H
+#define TRACE_QOM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_OBJECT_DYNAMIC_CAST_ASSERT_EVENT;
+extern TraceEvent _TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_EVENT;
+extern uint16_t _TRACE_OBJECT_DYNAMIC_CAST_ASSERT_DSTATE;
+extern uint16_t _TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_DSTATE;
+#define TRACE_OBJECT_DYNAMIC_CAST_ASSERT_ENABLED 1
+#define TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_ENABLED 1
+
+#define TRACE_OBJECT_DYNAMIC_CAST_ASSERT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_object_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
+{
+}
+
+static inline void trace_object_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
+{
+ if (true) {
+ _nocheck__trace_object_dynamic_cast_assert(type, target, file, line, func);
+ }
+}
+
+#define TRACE_OBJECT_CLASS_DYNAMIC_CAST_ASSERT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_object_class_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
+{
+}
+
+static inline void trace_object_class_dynamic_cast_assert(const char * type, const char * target, const char * file, int line, const char * func)
+{
+ if (true) {
+ _nocheck__trace_object_class_dynamic_cast_assert(type, target, file, line, func);
+ }
+}
+#endif /* TRACE_QOM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/scsi/trace.c b/qemu2-auto-generated/scsi/trace.c
new file mode 100644
index 0000000000..05ad34e78f
--- /dev/null
+++ b/qemu2-auto-generated/scsi/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_PR_MANAGER_EXECUTE_DSTATE;
+uint16_t _TRACE_PR_MANAGER_RUN_DSTATE;
+TraceEvent _TRACE_PR_MANAGER_EXECUTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pr_manager_execute",
+ .sstate = TRACE_PR_MANAGER_EXECUTE_ENABLED,
+ .dstate = &_TRACE_PR_MANAGER_EXECUTE_DSTATE
+};
+TraceEvent _TRACE_PR_MANAGER_RUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "pr_manager_run",
+ .sstate = TRACE_PR_MANAGER_RUN_ENABLED,
+ .dstate = &_TRACE_PR_MANAGER_RUN_DSTATE
+};
+TraceEvent *scsi_trace_events[] = {
+ &_TRACE_PR_MANAGER_EXECUTE_EVENT,
+ &_TRACE_PR_MANAGER_RUN_EVENT,
+ NULL,
+};
+
+static void trace_scsi_register_events(void)
+{
+ trace_event_register_group(scsi_trace_events);
+}
+trace_init(trace_scsi_register_events)
diff --git a/qemu2-auto-generated/scsi/trace.h b/qemu2-auto-generated/scsi/trace.h
new file mode 100644
index 0000000000..004d2d254e
--- /dev/null
+++ b/qemu2-auto-generated/scsi/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_SCSI_GENERATED_TRACERS_H
+#define TRACE_SCSI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_PR_MANAGER_EXECUTE_EVENT;
+extern TraceEvent _TRACE_PR_MANAGER_RUN_EVENT;
+extern uint16_t _TRACE_PR_MANAGER_EXECUTE_DSTATE;
+extern uint16_t _TRACE_PR_MANAGER_RUN_DSTATE;
+#define TRACE_PR_MANAGER_EXECUTE_ENABLED 1
+#define TRACE_PR_MANAGER_RUN_ENABLED 1
+
+#define TRACE_PR_MANAGER_EXECUTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pr_manager_execute(int fd, int cmd, int sa, void * opaque)
+{
+}
+
+static inline void trace_pr_manager_execute(int fd, int cmd, int sa, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_pr_manager_execute(fd, cmd, sa, opaque);
+ }
+}
+
+#define TRACE_PR_MANAGER_RUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_pr_manager_run(int fd, int cmd, int sa)
+{
+}
+
+static inline void trace_pr_manager_run(int fd, int cmd, int sa)
+{
+ if (true) {
+ _nocheck__trace_pr_manager_run(fd, cmd, sa);
+ }
+}
+#endif /* TRACE_SCSI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/aarch64/generated-helpers.c b/qemu2-auto-generated/target/aarch64/generated-helpers.c
new file mode 100644
index 0000000000..dd00cfd97d
--- /dev/null
+++ b/qemu2-auto-generated/target/aarch64/generated-helpers.c
@@ -0,0 +1,12 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+void helper_trace_guest_mem_before_exec_proxy(CPUArchState * __tcg___cpu, target_ulong vaddr, uint32_t info)
+{
+ _nocheck__trace_guest_mem_before_exec((CPUState *)ENV_GET_CPU(__tcg___cpu), (uint64_t)vaddr, (uint8_t)info);
+}
diff --git a/qemu2-auto-generated/target/aarch64/generated-helpers.h b/qemu2-auto-generated/target/aarch64/generated-helpers.h
new file mode 100644
index 0000000000..670b09ef1c
--- /dev/null
+++ b/qemu2-auto-generated/target/aarch64/generated-helpers.h
@@ -0,0 +1,3 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+DEF_HELPER_FLAGS_3(trace_guest_mem_before_exec_proxy, TCG_CALL_NO_RWG, void, env, tl, i32)
diff --git a/qemu2-auto-generated/target/arm/generated-helpers.c b/qemu2-auto-generated/target/arm/generated-helpers.c
new file mode 100644
index 0000000000..dd00cfd97d
--- /dev/null
+++ b/qemu2-auto-generated/target/arm/generated-helpers.c
@@ -0,0 +1,12 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+void helper_trace_guest_mem_before_exec_proxy(CPUArchState * __tcg___cpu, target_ulong vaddr, uint32_t info)
+{
+ _nocheck__trace_guest_mem_before_exec((CPUState *)ENV_GET_CPU(__tcg___cpu), (uint64_t)vaddr, (uint8_t)info);
+}
diff --git a/qemu2-auto-generated/target/arm/generated-helpers.h b/qemu2-auto-generated/target/arm/generated-helpers.h
new file mode 100644
index 0000000000..670b09ef1c
--- /dev/null
+++ b/qemu2-auto-generated/target/arm/generated-helpers.h
@@ -0,0 +1,3 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+DEF_HELPER_FLAGS_3(trace_guest_mem_before_exec_proxy, TCG_CALL_NO_RWG, void, env, tl, i32)
diff --git a/qemu2-auto-generated/target/arm/trace.c b/qemu2-auto-generated/target/arm/trace.c
new file mode 100644
index 0000000000..46a6dcdfd9
--- /dev/null
+++ b/qemu2-auto-generated/target/arm/trace.c
@@ -0,0 +1,77 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_ARM_GT_RECALC_DSTATE;
+uint16_t _TRACE_ARM_GT_RECALC_DISABLED_DSTATE;
+uint16_t _TRACE_ARM_GT_CVAL_WRITE_DSTATE;
+uint16_t _TRACE_ARM_GT_TVAL_WRITE_DSTATE;
+uint16_t _TRACE_ARM_GT_CTL_WRITE_DSTATE;
+uint16_t _TRACE_ARM_GT_IMASK_TOGGLE_DSTATE;
+uint16_t _TRACE_ARM_GT_CNTVOFF_WRITE_DSTATE;
+TraceEvent _TRACE_ARM_GT_RECALC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_recalc",
+ .sstate = TRACE_ARM_GT_RECALC_ENABLED,
+ .dstate = &_TRACE_ARM_GT_RECALC_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_RECALC_DISABLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_recalc_disabled",
+ .sstate = TRACE_ARM_GT_RECALC_DISABLED_ENABLED,
+ .dstate = &_TRACE_ARM_GT_RECALC_DISABLED_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_CVAL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_cval_write",
+ .sstate = TRACE_ARM_GT_CVAL_WRITE_ENABLED,
+ .dstate = &_TRACE_ARM_GT_CVAL_WRITE_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_TVAL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_tval_write",
+ .sstate = TRACE_ARM_GT_TVAL_WRITE_ENABLED,
+ .dstate = &_TRACE_ARM_GT_TVAL_WRITE_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_CTL_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_ctl_write",
+ .sstate = TRACE_ARM_GT_CTL_WRITE_ENABLED,
+ .dstate = &_TRACE_ARM_GT_CTL_WRITE_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_IMASK_TOGGLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_imask_toggle",
+ .sstate = TRACE_ARM_GT_IMASK_TOGGLE_ENABLED,
+ .dstate = &_TRACE_ARM_GT_IMASK_TOGGLE_DSTATE
+};
+TraceEvent _TRACE_ARM_GT_CNTVOFF_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "arm_gt_cntvoff_write",
+ .sstate = TRACE_ARM_GT_CNTVOFF_WRITE_ENABLED,
+ .dstate = &_TRACE_ARM_GT_CNTVOFF_WRITE_DSTATE
+};
+TraceEvent *target_arm_trace_events[] = {
+ &_TRACE_ARM_GT_RECALC_EVENT,
+ &_TRACE_ARM_GT_RECALC_DISABLED_EVENT,
+ &_TRACE_ARM_GT_CVAL_WRITE_EVENT,
+ &_TRACE_ARM_GT_TVAL_WRITE_EVENT,
+ &_TRACE_ARM_GT_CTL_WRITE_EVENT,
+ &_TRACE_ARM_GT_IMASK_TOGGLE_EVENT,
+ &_TRACE_ARM_GT_CNTVOFF_WRITE_EVENT,
+ NULL,
+};
+
+static void trace_target_arm_register_events(void)
+{
+ trace_event_register_group(target_arm_trace_events);
+}
+trace_init(trace_target_arm_register_events)
diff --git a/qemu2-auto-generated/target/arm/trace.h b/qemu2-auto-generated/target/arm/trace.h
new file mode 100644
index 0000000000..6f2df218f9
--- /dev/null
+++ b/qemu2-auto-generated/target/arm/trace.h
@@ -0,0 +1,128 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_ARM_GENERATED_TRACERS_H
+#define TRACE_TARGET_ARM_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_ARM_GT_RECALC_EVENT;
+extern TraceEvent _TRACE_ARM_GT_RECALC_DISABLED_EVENT;
+extern TraceEvent _TRACE_ARM_GT_CVAL_WRITE_EVENT;
+extern TraceEvent _TRACE_ARM_GT_TVAL_WRITE_EVENT;
+extern TraceEvent _TRACE_ARM_GT_CTL_WRITE_EVENT;
+extern TraceEvent _TRACE_ARM_GT_IMASK_TOGGLE_EVENT;
+extern TraceEvent _TRACE_ARM_GT_CNTVOFF_WRITE_EVENT;
+extern uint16_t _TRACE_ARM_GT_RECALC_DSTATE;
+extern uint16_t _TRACE_ARM_GT_RECALC_DISABLED_DSTATE;
+extern uint16_t _TRACE_ARM_GT_CVAL_WRITE_DSTATE;
+extern uint16_t _TRACE_ARM_GT_TVAL_WRITE_DSTATE;
+extern uint16_t _TRACE_ARM_GT_CTL_WRITE_DSTATE;
+extern uint16_t _TRACE_ARM_GT_IMASK_TOGGLE_DSTATE;
+extern uint16_t _TRACE_ARM_GT_CNTVOFF_WRITE_DSTATE;
+#define TRACE_ARM_GT_RECALC_ENABLED 1
+#define TRACE_ARM_GT_RECALC_DISABLED_ENABLED 1
+#define TRACE_ARM_GT_CVAL_WRITE_ENABLED 1
+#define TRACE_ARM_GT_TVAL_WRITE_ENABLED 1
+#define TRACE_ARM_GT_CTL_WRITE_ENABLED 1
+#define TRACE_ARM_GT_IMASK_TOGGLE_ENABLED 1
+#define TRACE_ARM_GT_CNTVOFF_WRITE_ENABLED 1
+
+#define TRACE_ARM_GT_RECALC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_recalc(int timer, int irqstate, uint64_t nexttick)
+{
+}
+
+static inline void trace_arm_gt_recalc(int timer, int irqstate, uint64_t nexttick)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_recalc(timer, irqstate, nexttick);
+ }
+}
+
+#define TRACE_ARM_GT_RECALC_DISABLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_recalc_disabled(int timer)
+{
+}
+
+static inline void trace_arm_gt_recalc_disabled(int timer)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_recalc_disabled(timer);
+ }
+}
+
+#define TRACE_ARM_GT_CVAL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_cval_write(int timer, uint64_t value)
+{
+}
+
+static inline void trace_arm_gt_cval_write(int timer, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_cval_write(timer, value);
+ }
+}
+
+#define TRACE_ARM_GT_TVAL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_tval_write(int timer, uint64_t value)
+{
+}
+
+static inline void trace_arm_gt_tval_write(int timer, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_tval_write(timer, value);
+ }
+}
+
+#define TRACE_ARM_GT_CTL_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_ctl_write(int timer, uint64_t value)
+{
+}
+
+static inline void trace_arm_gt_ctl_write(int timer, uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_ctl_write(timer, value);
+ }
+}
+
+#define TRACE_ARM_GT_IMASK_TOGGLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_imask_toggle(int timer, int irqstate)
+{
+}
+
+static inline void trace_arm_gt_imask_toggle(int timer, int irqstate)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_imask_toggle(timer, irqstate);
+ }
+}
+
+#define TRACE_ARM_GT_CNTVOFF_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_arm_gt_cntvoff_write(uint64_t value)
+{
+}
+
+static inline void trace_arm_gt_cntvoff_write(uint64_t value)
+{
+ if (true) {
+ _nocheck__trace_arm_gt_cntvoff_write(value);
+ }
+}
+#endif /* TRACE_TARGET_ARM_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/i386/generated-helpers.c b/qemu2-auto-generated/target/i386/generated-helpers.c
new file mode 100644
index 0000000000..dd00cfd97d
--- /dev/null
+++ b/qemu2-auto-generated/target/i386/generated-helpers.c
@@ -0,0 +1,12 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+void helper_trace_guest_mem_before_exec_proxy(CPUArchState * __tcg___cpu, target_ulong vaddr, uint32_t info)
+{
+ _nocheck__trace_guest_mem_before_exec((CPUState *)ENV_GET_CPU(__tcg___cpu), (uint64_t)vaddr, (uint8_t)info);
+}
diff --git a/qemu2-auto-generated/target/i386/generated-helpers.h b/qemu2-auto-generated/target/i386/generated-helpers.h
new file mode 100644
index 0000000000..670b09ef1c
--- /dev/null
+++ b/qemu2-auto-generated/target/i386/generated-helpers.h
@@ -0,0 +1,3 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+DEF_HELPER_FLAGS_3(trace_guest_mem_before_exec_proxy, TCG_CALL_NO_RWG, void, env, tl, i32)
diff --git a/qemu2-auto-generated/target/i386/trace.c b/qemu2-auto-generated/target/i386/trace.c
new file mode 100644
index 0000000000..6652cb9c48
--- /dev/null
+++ b/qemu2-auto-generated/target/i386/trace.c
@@ -0,0 +1,122 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_KVM_X86_FIXUP_MSI_ERROR_DSTATE;
+uint16_t _TRACE_KVM_X86_ADD_MSI_ROUTE_DSTATE;
+uint16_t _TRACE_KVM_X86_REMOVE_MSI_ROUTE_DSTATE;
+uint16_t _TRACE_KVM_X86_UPDATE_MSI_ROUTES_DSTATE;
+uint16_t _TRACE_KVM_SEV_INIT_DSTATE;
+uint16_t _TRACE_KVM_MEMCRYPT_REGISTER_REGION_DSTATE;
+uint16_t _TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_DSTATE;
+uint16_t _TRACE_KVM_SEV_CHANGE_STATE_DSTATE;
+uint16_t _TRACE_KVM_SEV_LAUNCH_START_DSTATE;
+uint16_t _TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_DSTATE;
+uint16_t _TRACE_KVM_SEV_LAUNCH_MEASUREMENT_DSTATE;
+uint16_t _TRACE_KVM_SEV_LAUNCH_FINISH_DSTATE;
+TraceEvent _TRACE_KVM_X86_FIXUP_MSI_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_x86_fixup_msi_error",
+ .sstate = TRACE_KVM_X86_FIXUP_MSI_ERROR_ENABLED,
+ .dstate = &_TRACE_KVM_X86_FIXUP_MSI_ERROR_DSTATE
+};
+TraceEvent _TRACE_KVM_X86_ADD_MSI_ROUTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_x86_add_msi_route",
+ .sstate = TRACE_KVM_X86_ADD_MSI_ROUTE_ENABLED,
+ .dstate = &_TRACE_KVM_X86_ADD_MSI_ROUTE_DSTATE
+};
+TraceEvent _TRACE_KVM_X86_REMOVE_MSI_ROUTE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_x86_remove_msi_route",
+ .sstate = TRACE_KVM_X86_REMOVE_MSI_ROUTE_ENABLED,
+ .dstate = &_TRACE_KVM_X86_REMOVE_MSI_ROUTE_DSTATE
+};
+TraceEvent _TRACE_KVM_X86_UPDATE_MSI_ROUTES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_x86_update_msi_routes",
+ .sstate = TRACE_KVM_X86_UPDATE_MSI_ROUTES_ENABLED,
+ .dstate = &_TRACE_KVM_X86_UPDATE_MSI_ROUTES_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_init",
+ .sstate = TRACE_KVM_SEV_INIT_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_INIT_DSTATE
+};
+TraceEvent _TRACE_KVM_MEMCRYPT_REGISTER_REGION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_memcrypt_register_region",
+ .sstate = TRACE_KVM_MEMCRYPT_REGISTER_REGION_ENABLED,
+ .dstate = &_TRACE_KVM_MEMCRYPT_REGISTER_REGION_DSTATE
+};
+TraceEvent _TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_memcrypt_unregister_region",
+ .sstate = TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_ENABLED,
+ .dstate = &_TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_CHANGE_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_change_state",
+ .sstate = TRACE_KVM_SEV_CHANGE_STATE_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_CHANGE_STATE_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_LAUNCH_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_launch_start",
+ .sstate = TRACE_KVM_SEV_LAUNCH_START_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_LAUNCH_START_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_launch_update_data",
+ .sstate = TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_LAUNCH_MEASUREMENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_launch_measurement",
+ .sstate = TRACE_KVM_SEV_LAUNCH_MEASUREMENT_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_LAUNCH_MEASUREMENT_DSTATE
+};
+TraceEvent _TRACE_KVM_SEV_LAUNCH_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_sev_launch_finish",
+ .sstate = TRACE_KVM_SEV_LAUNCH_FINISH_ENABLED,
+ .dstate = &_TRACE_KVM_SEV_LAUNCH_FINISH_DSTATE
+};
+TraceEvent *target_i386_trace_events[] = {
+ &_TRACE_KVM_X86_FIXUP_MSI_ERROR_EVENT,
+ &_TRACE_KVM_X86_ADD_MSI_ROUTE_EVENT,
+ &_TRACE_KVM_X86_REMOVE_MSI_ROUTE_EVENT,
+ &_TRACE_KVM_X86_UPDATE_MSI_ROUTES_EVENT,
+ &_TRACE_KVM_SEV_INIT_EVENT,
+ &_TRACE_KVM_MEMCRYPT_REGISTER_REGION_EVENT,
+ &_TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_EVENT,
+ &_TRACE_KVM_SEV_CHANGE_STATE_EVENT,
+ &_TRACE_KVM_SEV_LAUNCH_START_EVENT,
+ &_TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_EVENT,
+ &_TRACE_KVM_SEV_LAUNCH_MEASUREMENT_EVENT,
+ &_TRACE_KVM_SEV_LAUNCH_FINISH_EVENT,
+ NULL,
+};
+
+static void trace_target_i386_register_events(void)
+{
+ trace_event_register_group(target_i386_trace_events);
+}
+trace_init(trace_target_i386_register_events)
diff --git a/qemu2-auto-generated/target/i386/trace.h b/qemu2-auto-generated/target/i386/trace.h
new file mode 100644
index 0000000000..0ac1756f70
--- /dev/null
+++ b/qemu2-auto-generated/target/i386/trace.h
@@ -0,0 +1,213 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_I386_GENERATED_TRACERS_H
+#define TRACE_TARGET_I386_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_KVM_X86_FIXUP_MSI_ERROR_EVENT;
+extern TraceEvent _TRACE_KVM_X86_ADD_MSI_ROUTE_EVENT;
+extern TraceEvent _TRACE_KVM_X86_REMOVE_MSI_ROUTE_EVENT;
+extern TraceEvent _TRACE_KVM_X86_UPDATE_MSI_ROUTES_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_INIT_EVENT;
+extern TraceEvent _TRACE_KVM_MEMCRYPT_REGISTER_REGION_EVENT;
+extern TraceEvent _TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_CHANGE_STATE_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_LAUNCH_START_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_LAUNCH_MEASUREMENT_EVENT;
+extern TraceEvent _TRACE_KVM_SEV_LAUNCH_FINISH_EVENT;
+extern uint16_t _TRACE_KVM_X86_FIXUP_MSI_ERROR_DSTATE;
+extern uint16_t _TRACE_KVM_X86_ADD_MSI_ROUTE_DSTATE;
+extern uint16_t _TRACE_KVM_X86_REMOVE_MSI_ROUTE_DSTATE;
+extern uint16_t _TRACE_KVM_X86_UPDATE_MSI_ROUTES_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_INIT_DSTATE;
+extern uint16_t _TRACE_KVM_MEMCRYPT_REGISTER_REGION_DSTATE;
+extern uint16_t _TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_CHANGE_STATE_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_LAUNCH_START_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_LAUNCH_MEASUREMENT_DSTATE;
+extern uint16_t _TRACE_KVM_SEV_LAUNCH_FINISH_DSTATE;
+#define TRACE_KVM_X86_FIXUP_MSI_ERROR_ENABLED 1
+#define TRACE_KVM_X86_ADD_MSI_ROUTE_ENABLED 1
+#define TRACE_KVM_X86_REMOVE_MSI_ROUTE_ENABLED 1
+#define TRACE_KVM_X86_UPDATE_MSI_ROUTES_ENABLED 1
+#define TRACE_KVM_SEV_INIT_ENABLED 1
+#define TRACE_KVM_MEMCRYPT_REGISTER_REGION_ENABLED 1
+#define TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_ENABLED 1
+#define TRACE_KVM_SEV_CHANGE_STATE_ENABLED 1
+#define TRACE_KVM_SEV_LAUNCH_START_ENABLED 1
+#define TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_ENABLED 1
+#define TRACE_KVM_SEV_LAUNCH_MEASUREMENT_ENABLED 1
+#define TRACE_KVM_SEV_LAUNCH_FINISH_ENABLED 1
+
+#define TRACE_KVM_X86_FIXUP_MSI_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_x86_fixup_msi_error(uint32_t gsi)
+{
+}
+
+static inline void trace_kvm_x86_fixup_msi_error(uint32_t gsi)
+{
+ if (true) {
+ _nocheck__trace_kvm_x86_fixup_msi_error(gsi);
+ }
+}
+
+#define TRACE_KVM_X86_ADD_MSI_ROUTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_x86_add_msi_route(int virq)
+{
+}
+
+static inline void trace_kvm_x86_add_msi_route(int virq)
+{
+ if (true) {
+ _nocheck__trace_kvm_x86_add_msi_route(virq);
+ }
+}
+
+#define TRACE_KVM_X86_REMOVE_MSI_ROUTE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_x86_remove_msi_route(int virq)
+{
+}
+
+static inline void trace_kvm_x86_remove_msi_route(int virq)
+{
+ if (true) {
+ _nocheck__trace_kvm_x86_remove_msi_route(virq);
+ }
+}
+
+#define TRACE_KVM_X86_UPDATE_MSI_ROUTES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_x86_update_msi_routes(int num)
+{
+}
+
+static inline void trace_kvm_x86_update_msi_routes(int num)
+{
+ if (true) {
+ _nocheck__trace_kvm_x86_update_msi_routes(num);
+ }
+}
+
+#define TRACE_KVM_SEV_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_init(void)
+{
+}
+
+static inline void trace_kvm_sev_init(void)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_init();
+ }
+}
+
+#define TRACE_KVM_MEMCRYPT_REGISTER_REGION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_memcrypt_register_region(void * addr, size_t len)
+{
+}
+
+static inline void trace_kvm_memcrypt_register_region(void * addr, size_t len)
+{
+ if (true) {
+ _nocheck__trace_kvm_memcrypt_register_region(addr, len);
+ }
+}
+
+#define TRACE_KVM_MEMCRYPT_UNREGISTER_REGION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_memcrypt_unregister_region(void * addr, size_t len)
+{
+}
+
+static inline void trace_kvm_memcrypt_unregister_region(void * addr, size_t len)
+{
+ if (true) {
+ _nocheck__trace_kvm_memcrypt_unregister_region(addr, len);
+ }
+}
+
+#define TRACE_KVM_SEV_CHANGE_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_change_state(const char * old, const char * new)
+{
+}
+
+static inline void trace_kvm_sev_change_state(const char * old, const char * new)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_change_state(old, new);
+ }
+}
+
+#define TRACE_KVM_SEV_LAUNCH_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_launch_start(int policy, void * session, void * pdh)
+{
+}
+
+static inline void trace_kvm_sev_launch_start(int policy, void * session, void * pdh)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_launch_start(policy, session, pdh);
+ }
+}
+
+#define TRACE_KVM_SEV_LAUNCH_UPDATE_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_launch_update_data(void * addr, uint64_t len)
+{
+}
+
+static inline void trace_kvm_sev_launch_update_data(void * addr, uint64_t len)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_launch_update_data(addr, len);
+ }
+}
+
+#define TRACE_KVM_SEV_LAUNCH_MEASUREMENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_launch_measurement(const char * value)
+{
+}
+
+static inline void trace_kvm_sev_launch_measurement(const char * value)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_launch_measurement(value);
+ }
+}
+
+#define TRACE_KVM_SEV_LAUNCH_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_sev_launch_finish(void)
+{
+}
+
+static inline void trace_kvm_sev_launch_finish(void)
+{
+ if (true) {
+ _nocheck__trace_kvm_sev_launch_finish();
+ }
+}
+#endif /* TRACE_TARGET_I386_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/mips/generated-helpers.c b/qemu2-auto-generated/target/mips/generated-helpers.c
new file mode 100644
index 0000000000..dd00cfd97d
--- /dev/null
+++ b/qemu2-auto-generated/target/mips/generated-helpers.c
@@ -0,0 +1,12 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+void helper_trace_guest_mem_before_exec_proxy(CPUArchState * __tcg___cpu, target_ulong vaddr, uint32_t info)
+{
+ _nocheck__trace_guest_mem_before_exec((CPUState *)ENV_GET_CPU(__tcg___cpu), (uint64_t)vaddr, (uint8_t)info);
+}
diff --git a/qemu2-auto-generated/target/mips/generated-helpers.h b/qemu2-auto-generated/target/mips/generated-helpers.h
new file mode 100644
index 0000000000..670b09ef1c
--- /dev/null
+++ b/qemu2-auto-generated/target/mips/generated-helpers.h
@@ -0,0 +1,3 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+DEF_HELPER_FLAGS_3(trace_guest_mem_before_exec_proxy, TCG_CALL_NO_RWG, void, env, tl, i32)
diff --git a/qemu2-auto-generated/target/mips/trace.c b/qemu2-auto-generated/target/mips/trace.c
new file mode 100644
index 0000000000..edd3507b26
--- /dev/null
+++ b/qemu2-auto-generated/target/mips/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_MIPS_TRANSLATE_C0_DSTATE;
+uint16_t _TRACE_MIPS_TRANSLATE_TR_DSTATE;
+TraceEvent _TRACE_MIPS_TRANSLATE_C0_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mips_translate_c0",
+ .sstate = TRACE_MIPS_TRANSLATE_C0_ENABLED,
+ .dstate = &_TRACE_MIPS_TRANSLATE_C0_DSTATE
+};
+TraceEvent _TRACE_MIPS_TRANSLATE_TR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mips_translate_tr",
+ .sstate = TRACE_MIPS_TRANSLATE_TR_ENABLED,
+ .dstate = &_TRACE_MIPS_TRANSLATE_TR_DSTATE
+};
+TraceEvent *target_mips_trace_events[] = {
+ &_TRACE_MIPS_TRANSLATE_C0_EVENT,
+ &_TRACE_MIPS_TRANSLATE_TR_EVENT,
+ NULL,
+};
+
+static void trace_target_mips_register_events(void)
+{
+ trace_event_register_group(target_mips_trace_events);
+}
+trace_init(trace_target_mips_register_events)
diff --git a/qemu2-auto-generated/target/mips/trace.h b/qemu2-auto-generated/target/mips/trace.h
new file mode 100644
index 0000000000..3a8afdea3b
--- /dev/null
+++ b/qemu2-auto-generated/target/mips/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_MIPS_GENERATED_TRACERS_H
+#define TRACE_TARGET_MIPS_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_MIPS_TRANSLATE_C0_EVENT;
+extern TraceEvent _TRACE_MIPS_TRANSLATE_TR_EVENT;
+extern uint16_t _TRACE_MIPS_TRANSLATE_C0_DSTATE;
+extern uint16_t _TRACE_MIPS_TRANSLATE_TR_DSTATE;
+#define TRACE_MIPS_TRANSLATE_C0_ENABLED 1
+#define TRACE_MIPS_TRANSLATE_TR_ENABLED 1
+
+#define TRACE_MIPS_TRANSLATE_C0_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mips_translate_c0(const char * instr, const char * rn, int reg, int sel)
+{
+}
+
+static inline void trace_mips_translate_c0(const char * instr, const char * rn, int reg, int sel)
+{
+ if (true) {
+ _nocheck__trace_mips_translate_c0(instr, rn, reg, sel);
+ }
+}
+
+#define TRACE_MIPS_TRANSLATE_TR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mips_translate_tr(const char * instr, int rt, int u, int sel, int h)
+{
+}
+
+static inline void trace_mips_translate_tr(const char * instr, int rt, int u, int sel, int h)
+{
+ if (true) {
+ _nocheck__trace_mips_translate_tr(instr, rt, u, sel, h);
+ }
+}
+#endif /* TRACE_TARGET_MIPS_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/ppc/trace.c b/qemu2-auto-generated/target/ppc/trace.c
new file mode 100644
index 0000000000..c210fa4b12
--- /dev/null
+++ b/qemu2-auto-generated/target/ppc/trace.c
@@ -0,0 +1,32 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_KVM_FAILED_SPR_SET_DSTATE;
+uint16_t _TRACE_KVM_FAILED_SPR_GET_DSTATE;
+TraceEvent _TRACE_KVM_FAILED_SPR_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_failed_spr_set",
+ .sstate = TRACE_KVM_FAILED_SPR_SET_ENABLED,
+ .dstate = &_TRACE_KVM_FAILED_SPR_SET_DSTATE
+};
+TraceEvent _TRACE_KVM_FAILED_SPR_GET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_failed_spr_get",
+ .sstate = TRACE_KVM_FAILED_SPR_GET_ENABLED,
+ .dstate = &_TRACE_KVM_FAILED_SPR_GET_DSTATE
+};
+TraceEvent *target_ppc_trace_events[] = {
+ &_TRACE_KVM_FAILED_SPR_SET_EVENT,
+ &_TRACE_KVM_FAILED_SPR_GET_EVENT,
+ NULL,
+};
+
+static void trace_target_ppc_register_events(void)
+{
+ trace_event_register_group(target_ppc_trace_events);
+}
+trace_init(trace_target_ppc_register_events)
diff --git a/qemu2-auto-generated/target/ppc/trace.h b/qemu2-auto-generated/target/ppc/trace.h
new file mode 100644
index 0000000000..cf88504333
--- /dev/null
+++ b/qemu2-auto-generated/target/ppc/trace.h
@@ -0,0 +1,43 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_PPC_GENERATED_TRACERS_H
+#define TRACE_TARGET_PPC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_KVM_FAILED_SPR_SET_EVENT;
+extern TraceEvent _TRACE_KVM_FAILED_SPR_GET_EVENT;
+extern uint16_t _TRACE_KVM_FAILED_SPR_SET_DSTATE;
+extern uint16_t _TRACE_KVM_FAILED_SPR_GET_DSTATE;
+#define TRACE_KVM_FAILED_SPR_SET_ENABLED 1
+#define TRACE_KVM_FAILED_SPR_GET_ENABLED 1
+
+#define TRACE_KVM_FAILED_SPR_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_failed_spr_set(int str, const char * msg)
+{
+}
+
+static inline void trace_kvm_failed_spr_set(int str, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_kvm_failed_spr_set(str, msg);
+ }
+}
+
+#define TRACE_KVM_FAILED_SPR_GET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_failed_spr_get(int str, const char * msg)
+{
+}
+
+static inline void trace_kvm_failed_spr_get(int str, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_kvm_failed_spr_get(str, msg);
+ }
+}
+#endif /* TRACE_TARGET_PPC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/s390x/trace.c b/qemu2-auto-generated/target/s390x/trace.c
new file mode 100644
index 0000000000..1914c6a519
--- /dev/null
+++ b/qemu2-auto-generated/target/s390x/trace.c
@@ -0,0 +1,131 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_GET_SKEYS_NONZERO_DSTATE;
+uint16_t _TRACE_SET_SKEYS_NONZERO_DSTATE;
+uint16_t _TRACE_IOINST_DSTATE;
+uint16_t _TRACE_IOINST_SCH_ID_DSTATE;
+uint16_t _TRACE_IOINST_CHP_ID_DSTATE;
+uint16_t _TRACE_IOINST_CHSC_CMD_DSTATE;
+uint16_t _TRACE_KVM_ENABLE_CMMA_DSTATE;
+uint16_t _TRACE_KVM_CLEAR_CMMA_DSTATE;
+uint16_t _TRACE_KVM_FAILED_CPU_STATE_SET_DSTATE;
+uint16_t _TRACE_CPU_SET_STATE_DSTATE;
+uint16_t _TRACE_CPU_HALT_DSTATE;
+uint16_t _TRACE_CPU_UNHALT_DSTATE;
+uint16_t _TRACE_SIGP_FINISHED_DSTATE;
+TraceEvent _TRACE_GET_SKEYS_NONZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "get_skeys_nonzero",
+ .sstate = TRACE_GET_SKEYS_NONZERO_ENABLED,
+ .dstate = &_TRACE_GET_SKEYS_NONZERO_DSTATE
+};
+TraceEvent _TRACE_SET_SKEYS_NONZERO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "set_skeys_nonzero",
+ .sstate = TRACE_SET_SKEYS_NONZERO_ENABLED,
+ .dstate = &_TRACE_SET_SKEYS_NONZERO_DSTATE
+};
+TraceEvent _TRACE_IOINST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioinst",
+ .sstate = TRACE_IOINST_ENABLED,
+ .dstate = &_TRACE_IOINST_DSTATE
+};
+TraceEvent _TRACE_IOINST_SCH_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioinst_sch_id",
+ .sstate = TRACE_IOINST_SCH_ID_ENABLED,
+ .dstate = &_TRACE_IOINST_SCH_ID_DSTATE
+};
+TraceEvent _TRACE_IOINST_CHP_ID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioinst_chp_id",
+ .sstate = TRACE_IOINST_CHP_ID_ENABLED,
+ .dstate = &_TRACE_IOINST_CHP_ID_DSTATE
+};
+TraceEvent _TRACE_IOINST_CHSC_CMD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ioinst_chsc_cmd",
+ .sstate = TRACE_IOINST_CHSC_CMD_ENABLED,
+ .dstate = &_TRACE_IOINST_CHSC_CMD_DSTATE
+};
+TraceEvent _TRACE_KVM_ENABLE_CMMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_enable_cmma",
+ .sstate = TRACE_KVM_ENABLE_CMMA_ENABLED,
+ .dstate = &_TRACE_KVM_ENABLE_CMMA_DSTATE
+};
+TraceEvent _TRACE_KVM_CLEAR_CMMA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_clear_cmma",
+ .sstate = TRACE_KVM_CLEAR_CMMA_ENABLED,
+ .dstate = &_TRACE_KVM_CLEAR_CMMA_DSTATE
+};
+TraceEvent _TRACE_KVM_FAILED_CPU_STATE_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "kvm_failed_cpu_state_set",
+ .sstate = TRACE_KVM_FAILED_CPU_STATE_SET_ENABLED,
+ .dstate = &_TRACE_KVM_FAILED_CPU_STATE_SET_DSTATE
+};
+TraceEvent _TRACE_CPU_SET_STATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_set_state",
+ .sstate = TRACE_CPU_SET_STATE_ENABLED,
+ .dstate = &_TRACE_CPU_SET_STATE_DSTATE
+};
+TraceEvent _TRACE_CPU_HALT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_halt",
+ .sstate = TRACE_CPU_HALT_ENABLED,
+ .dstate = &_TRACE_CPU_HALT_DSTATE
+};
+TraceEvent _TRACE_CPU_UNHALT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_unhalt",
+ .sstate = TRACE_CPU_UNHALT_ENABLED,
+ .dstate = &_TRACE_CPU_UNHALT_DSTATE
+};
+TraceEvent _TRACE_SIGP_FINISHED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "sigp_finished",
+ .sstate = TRACE_SIGP_FINISHED_ENABLED,
+ .dstate = &_TRACE_SIGP_FINISHED_DSTATE
+};
+TraceEvent *target_s390x_trace_events[] = {
+ &_TRACE_GET_SKEYS_NONZERO_EVENT,
+ &_TRACE_SET_SKEYS_NONZERO_EVENT,
+ &_TRACE_IOINST_EVENT,
+ &_TRACE_IOINST_SCH_ID_EVENT,
+ &_TRACE_IOINST_CHP_ID_EVENT,
+ &_TRACE_IOINST_CHSC_CMD_EVENT,
+ &_TRACE_KVM_ENABLE_CMMA_EVENT,
+ &_TRACE_KVM_CLEAR_CMMA_EVENT,
+ &_TRACE_KVM_FAILED_CPU_STATE_SET_EVENT,
+ &_TRACE_CPU_SET_STATE_EVENT,
+ &_TRACE_CPU_HALT_EVENT,
+ &_TRACE_CPU_UNHALT_EVENT,
+ &_TRACE_SIGP_FINISHED_EVENT,
+ NULL,
+};
+
+static void trace_target_s390x_register_events(void)
+{
+ trace_event_register_group(target_s390x_trace_events);
+}
+trace_init(trace_target_s390x_register_events)
diff --git a/qemu2-auto-generated/target/s390x/trace.h b/qemu2-auto-generated/target/s390x/trace.h
new file mode 100644
index 0000000000..a3a7fc72c1
--- /dev/null
+++ b/qemu2-auto-generated/target/s390x/trace.h
@@ -0,0 +1,230 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_S390X_GENERATED_TRACERS_H
+#define TRACE_TARGET_S390X_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_GET_SKEYS_NONZERO_EVENT;
+extern TraceEvent _TRACE_SET_SKEYS_NONZERO_EVENT;
+extern TraceEvent _TRACE_IOINST_EVENT;
+extern TraceEvent _TRACE_IOINST_SCH_ID_EVENT;
+extern TraceEvent _TRACE_IOINST_CHP_ID_EVENT;
+extern TraceEvent _TRACE_IOINST_CHSC_CMD_EVENT;
+extern TraceEvent _TRACE_KVM_ENABLE_CMMA_EVENT;
+extern TraceEvent _TRACE_KVM_CLEAR_CMMA_EVENT;
+extern TraceEvent _TRACE_KVM_FAILED_CPU_STATE_SET_EVENT;
+extern TraceEvent _TRACE_CPU_SET_STATE_EVENT;
+extern TraceEvent _TRACE_CPU_HALT_EVENT;
+extern TraceEvent _TRACE_CPU_UNHALT_EVENT;
+extern TraceEvent _TRACE_SIGP_FINISHED_EVENT;
+extern uint16_t _TRACE_GET_SKEYS_NONZERO_DSTATE;
+extern uint16_t _TRACE_SET_SKEYS_NONZERO_DSTATE;
+extern uint16_t _TRACE_IOINST_DSTATE;
+extern uint16_t _TRACE_IOINST_SCH_ID_DSTATE;
+extern uint16_t _TRACE_IOINST_CHP_ID_DSTATE;
+extern uint16_t _TRACE_IOINST_CHSC_CMD_DSTATE;
+extern uint16_t _TRACE_KVM_ENABLE_CMMA_DSTATE;
+extern uint16_t _TRACE_KVM_CLEAR_CMMA_DSTATE;
+extern uint16_t _TRACE_KVM_FAILED_CPU_STATE_SET_DSTATE;
+extern uint16_t _TRACE_CPU_SET_STATE_DSTATE;
+extern uint16_t _TRACE_CPU_HALT_DSTATE;
+extern uint16_t _TRACE_CPU_UNHALT_DSTATE;
+extern uint16_t _TRACE_SIGP_FINISHED_DSTATE;
+#define TRACE_GET_SKEYS_NONZERO_ENABLED 1
+#define TRACE_SET_SKEYS_NONZERO_ENABLED 1
+#define TRACE_IOINST_ENABLED 1
+#define TRACE_IOINST_SCH_ID_ENABLED 1
+#define TRACE_IOINST_CHP_ID_ENABLED 1
+#define TRACE_IOINST_CHSC_CMD_ENABLED 1
+#define TRACE_KVM_ENABLE_CMMA_ENABLED 1
+#define TRACE_KVM_CLEAR_CMMA_ENABLED 1
+#define TRACE_KVM_FAILED_CPU_STATE_SET_ENABLED 1
+#define TRACE_CPU_SET_STATE_ENABLED 1
+#define TRACE_CPU_HALT_ENABLED 1
+#define TRACE_CPU_UNHALT_ENABLED 1
+#define TRACE_SIGP_FINISHED_ENABLED 1
+
+#define TRACE_GET_SKEYS_NONZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_get_skeys_nonzero(int rc)
+{
+}
+
+static inline void trace_get_skeys_nonzero(int rc)
+{
+ if (true) {
+ _nocheck__trace_get_skeys_nonzero(rc);
+ }
+}
+
+#define TRACE_SET_SKEYS_NONZERO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_set_skeys_nonzero(int rc)
+{
+}
+
+static inline void trace_set_skeys_nonzero(int rc)
+{
+ if (true) {
+ _nocheck__trace_set_skeys_nonzero(rc);
+ }
+}
+
+#define TRACE_IOINST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioinst(const char * insn)
+{
+}
+
+static inline void trace_ioinst(const char * insn)
+{
+ if (true) {
+ _nocheck__trace_ioinst(insn);
+ }
+}
+
+#define TRACE_IOINST_SCH_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioinst_sch_id(const char * insn, int cssid, int ssid, int schid)
+{
+}
+
+static inline void trace_ioinst_sch_id(const char * insn, int cssid, int ssid, int schid)
+{
+ if (true) {
+ _nocheck__trace_ioinst_sch_id(insn, cssid, ssid, schid);
+ }
+}
+
+#define TRACE_IOINST_CHP_ID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioinst_chp_id(const char * insn, int cssid, int chpid)
+{
+}
+
+static inline void trace_ioinst_chp_id(const char * insn, int cssid, int chpid)
+{
+ if (true) {
+ _nocheck__trace_ioinst_chp_id(insn, cssid, chpid);
+ }
+}
+
+#define TRACE_IOINST_CHSC_CMD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ioinst_chsc_cmd(uint16_t cmd, uint16_t len)
+{
+}
+
+static inline void trace_ioinst_chsc_cmd(uint16_t cmd, uint16_t len)
+{
+ if (true) {
+ _nocheck__trace_ioinst_chsc_cmd(cmd, len);
+ }
+}
+
+#define TRACE_KVM_ENABLE_CMMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_enable_cmma(int rc)
+{
+}
+
+static inline void trace_kvm_enable_cmma(int rc)
+{
+ if (true) {
+ _nocheck__trace_kvm_enable_cmma(rc);
+ }
+}
+
+#define TRACE_KVM_CLEAR_CMMA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_clear_cmma(int rc)
+{
+}
+
+static inline void trace_kvm_clear_cmma(int rc)
+{
+ if (true) {
+ _nocheck__trace_kvm_clear_cmma(rc);
+ }
+}
+
+#define TRACE_KVM_FAILED_CPU_STATE_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_kvm_failed_cpu_state_set(int cpu_index, uint8_t state, const char * msg)
+{
+}
+
+static inline void trace_kvm_failed_cpu_state_set(int cpu_index, uint8_t state, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_kvm_failed_cpu_state_set(cpu_index, state, msg);
+ }
+}
+
+#define TRACE_CPU_SET_STATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_set_state(int cpu_index, uint8_t state)
+{
+}
+
+static inline void trace_cpu_set_state(int cpu_index, uint8_t state)
+{
+ if (true) {
+ _nocheck__trace_cpu_set_state(cpu_index, state);
+ }
+}
+
+#define TRACE_CPU_HALT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_halt(int cpu_index)
+{
+}
+
+static inline void trace_cpu_halt(int cpu_index)
+{
+ if (true) {
+ _nocheck__trace_cpu_halt(cpu_index);
+ }
+}
+
+#define TRACE_CPU_UNHALT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_unhalt(int cpu_index)
+{
+}
+
+static inline void trace_cpu_unhalt(int cpu_index)
+{
+ if (true) {
+ _nocheck__trace_cpu_unhalt(cpu_index);
+ }
+}
+
+#define TRACE_SIGP_FINISHED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_sigp_finished(uint8_t order, int cpu_index, int dst_index, int cc)
+{
+}
+
+static inline void trace_sigp_finished(uint8_t order, int cpu_index, int dst_index, int cc)
+{
+ if (true) {
+ _nocheck__trace_sigp_finished(order, cpu_index, dst_index, cc);
+ }
+}
+#endif /* TRACE_TARGET_S390X_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/target/sparc/trace.c b/qemu2-auto-generated/target/sparc/trace.c
new file mode 100644
index 0000000000..b310a72e39
--- /dev/null
+++ b/qemu2-auto-generated/target/sparc/trace.c
@@ -0,0 +1,185 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_MMU_HELPER_DFAULT_DSTATE;
+uint16_t _TRACE_MMU_HELPER_DPROT_DSTATE;
+uint16_t _TRACE_MMU_HELPER_DMISS_DSTATE;
+uint16_t _TRACE_MMU_HELPER_TFAULT_DSTATE;
+uint16_t _TRACE_MMU_HELPER_TMISS_DSTATE;
+uint16_t _TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_DSTATE;
+uint16_t _TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_DSTATE;
+uint16_t _TRACE_MMU_HELPER_MMU_FAULT_DSTATE;
+uint16_t _TRACE_INT_HELPER_SET_SOFTINT_DSTATE;
+uint16_t _TRACE_INT_HELPER_CLEAR_SOFTINT_DSTATE;
+uint16_t _TRACE_INT_HELPER_WRITE_SOFTINT_DSTATE;
+uint16_t _TRACE_INT_HELPER_ICACHE_FREEZE_DSTATE;
+uint16_t _TRACE_INT_HELPER_DCACHE_FREEZE_DSTATE;
+uint16_t _TRACE_WIN_HELPER_GREGSET_ERROR_DSTATE;
+uint16_t _TRACE_WIN_HELPER_SWITCH_PSTATE_DSTATE;
+uint16_t _TRACE_WIN_HELPER_NO_SWITCH_PSTATE_DSTATE;
+uint16_t _TRACE_WIN_HELPER_WRPIL_DSTATE;
+uint16_t _TRACE_WIN_HELPER_DONE_DSTATE;
+uint16_t _TRACE_WIN_HELPER_RETRY_DSTATE;
+TraceEvent _TRACE_MMU_HELPER_DFAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_dfault",
+ .sstate = TRACE_MMU_HELPER_DFAULT_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_DFAULT_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_DPROT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_dprot",
+ .sstate = TRACE_MMU_HELPER_DPROT_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_DPROT_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_DMISS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_dmiss",
+ .sstate = TRACE_MMU_HELPER_DMISS_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_DMISS_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_TFAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_tfault",
+ .sstate = TRACE_MMU_HELPER_TFAULT_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_TFAULT_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_TMISS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_tmiss",
+ .sstate = TRACE_MMU_HELPER_TMISS_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_TMISS_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_get_phys_addr_code",
+ .sstate = TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_get_phys_addr_data",
+ .sstate = TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_DSTATE
+};
+TraceEvent _TRACE_MMU_HELPER_MMU_FAULT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "mmu_helper_mmu_fault",
+ .sstate = TRACE_MMU_HELPER_MMU_FAULT_ENABLED,
+ .dstate = &_TRACE_MMU_HELPER_MMU_FAULT_DSTATE
+};
+TraceEvent _TRACE_INT_HELPER_SET_SOFTINT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "int_helper_set_softint",
+ .sstate = TRACE_INT_HELPER_SET_SOFTINT_ENABLED,
+ .dstate = &_TRACE_INT_HELPER_SET_SOFTINT_DSTATE
+};
+TraceEvent _TRACE_INT_HELPER_CLEAR_SOFTINT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "int_helper_clear_softint",
+ .sstate = TRACE_INT_HELPER_CLEAR_SOFTINT_ENABLED,
+ .dstate = &_TRACE_INT_HELPER_CLEAR_SOFTINT_DSTATE
+};
+TraceEvent _TRACE_INT_HELPER_WRITE_SOFTINT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "int_helper_write_softint",
+ .sstate = TRACE_INT_HELPER_WRITE_SOFTINT_ENABLED,
+ .dstate = &_TRACE_INT_HELPER_WRITE_SOFTINT_DSTATE
+};
+TraceEvent _TRACE_INT_HELPER_ICACHE_FREEZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "int_helper_icache_freeze",
+ .sstate = TRACE_INT_HELPER_ICACHE_FREEZE_ENABLED,
+ .dstate = &_TRACE_INT_HELPER_ICACHE_FREEZE_DSTATE
+};
+TraceEvent _TRACE_INT_HELPER_DCACHE_FREEZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "int_helper_dcache_freeze",
+ .sstate = TRACE_INT_HELPER_DCACHE_FREEZE_ENABLED,
+ .dstate = &_TRACE_INT_HELPER_DCACHE_FREEZE_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_GREGSET_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_gregset_error",
+ .sstate = TRACE_WIN_HELPER_GREGSET_ERROR_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_GREGSET_ERROR_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_SWITCH_PSTATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_switch_pstate",
+ .sstate = TRACE_WIN_HELPER_SWITCH_PSTATE_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_SWITCH_PSTATE_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_NO_SWITCH_PSTATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_no_switch_pstate",
+ .sstate = TRACE_WIN_HELPER_NO_SWITCH_PSTATE_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_NO_SWITCH_PSTATE_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_WRPIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_wrpil",
+ .sstate = TRACE_WIN_HELPER_WRPIL_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_WRPIL_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_DONE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_done",
+ .sstate = TRACE_WIN_HELPER_DONE_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_DONE_DSTATE
+};
+TraceEvent _TRACE_WIN_HELPER_RETRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "win_helper_retry",
+ .sstate = TRACE_WIN_HELPER_RETRY_ENABLED,
+ .dstate = &_TRACE_WIN_HELPER_RETRY_DSTATE
+};
+TraceEvent *target_sparc_trace_events[] = {
+ &_TRACE_MMU_HELPER_DFAULT_EVENT,
+ &_TRACE_MMU_HELPER_DPROT_EVENT,
+ &_TRACE_MMU_HELPER_DMISS_EVENT,
+ &_TRACE_MMU_HELPER_TFAULT_EVENT,
+ &_TRACE_MMU_HELPER_TMISS_EVENT,
+ &_TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_EVENT,
+ &_TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_EVENT,
+ &_TRACE_MMU_HELPER_MMU_FAULT_EVENT,
+ &_TRACE_INT_HELPER_SET_SOFTINT_EVENT,
+ &_TRACE_INT_HELPER_CLEAR_SOFTINT_EVENT,
+ &_TRACE_INT_HELPER_WRITE_SOFTINT_EVENT,
+ &_TRACE_INT_HELPER_ICACHE_FREEZE_EVENT,
+ &_TRACE_INT_HELPER_DCACHE_FREEZE_EVENT,
+ &_TRACE_WIN_HELPER_GREGSET_ERROR_EVENT,
+ &_TRACE_WIN_HELPER_SWITCH_PSTATE_EVENT,
+ &_TRACE_WIN_HELPER_NO_SWITCH_PSTATE_EVENT,
+ &_TRACE_WIN_HELPER_WRPIL_EVENT,
+ &_TRACE_WIN_HELPER_DONE_EVENT,
+ &_TRACE_WIN_HELPER_RETRY_EVENT,
+ NULL,
+};
+
+static void trace_target_sparc_register_events(void)
+{
+ trace_event_register_group(target_sparc_trace_events);
+}
+trace_init(trace_target_sparc_register_events)
diff --git a/qemu2-auto-generated/target/sparc/trace.h b/qemu2-auto-generated/target/sparc/trace.h
new file mode 100644
index 0000000000..4ee5379472
--- /dev/null
+++ b/qemu2-auto-generated/target/sparc/trace.h
@@ -0,0 +1,332 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_TARGET_SPARC_GENERATED_TRACERS_H
+#define TRACE_TARGET_SPARC_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_MMU_HELPER_DFAULT_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_DPROT_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_DMISS_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_TFAULT_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_TMISS_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_EVENT;
+extern TraceEvent _TRACE_MMU_HELPER_MMU_FAULT_EVENT;
+extern TraceEvent _TRACE_INT_HELPER_SET_SOFTINT_EVENT;
+extern TraceEvent _TRACE_INT_HELPER_CLEAR_SOFTINT_EVENT;
+extern TraceEvent _TRACE_INT_HELPER_WRITE_SOFTINT_EVENT;
+extern TraceEvent _TRACE_INT_HELPER_ICACHE_FREEZE_EVENT;
+extern TraceEvent _TRACE_INT_HELPER_DCACHE_FREEZE_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_GREGSET_ERROR_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_SWITCH_PSTATE_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_NO_SWITCH_PSTATE_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_WRPIL_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_DONE_EVENT;
+extern TraceEvent _TRACE_WIN_HELPER_RETRY_EVENT;
+extern uint16_t _TRACE_MMU_HELPER_DFAULT_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_DPROT_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_DMISS_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_TFAULT_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_TMISS_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_DSTATE;
+extern uint16_t _TRACE_MMU_HELPER_MMU_FAULT_DSTATE;
+extern uint16_t _TRACE_INT_HELPER_SET_SOFTINT_DSTATE;
+extern uint16_t _TRACE_INT_HELPER_CLEAR_SOFTINT_DSTATE;
+extern uint16_t _TRACE_INT_HELPER_WRITE_SOFTINT_DSTATE;
+extern uint16_t _TRACE_INT_HELPER_ICACHE_FREEZE_DSTATE;
+extern uint16_t _TRACE_INT_HELPER_DCACHE_FREEZE_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_GREGSET_ERROR_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_SWITCH_PSTATE_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_NO_SWITCH_PSTATE_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_WRPIL_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_DONE_DSTATE;
+extern uint16_t _TRACE_WIN_HELPER_RETRY_DSTATE;
+#define TRACE_MMU_HELPER_DFAULT_ENABLED 1
+#define TRACE_MMU_HELPER_DPROT_ENABLED 1
+#define TRACE_MMU_HELPER_DMISS_ENABLED 1
+#define TRACE_MMU_HELPER_TFAULT_ENABLED 1
+#define TRACE_MMU_HELPER_TMISS_ENABLED 1
+#define TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_ENABLED 1
+#define TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_ENABLED 1
+#define TRACE_MMU_HELPER_MMU_FAULT_ENABLED 1
+#define TRACE_INT_HELPER_SET_SOFTINT_ENABLED 1
+#define TRACE_INT_HELPER_CLEAR_SOFTINT_ENABLED 1
+#define TRACE_INT_HELPER_WRITE_SOFTINT_ENABLED 1
+#define TRACE_INT_HELPER_ICACHE_FREEZE_ENABLED 1
+#define TRACE_INT_HELPER_DCACHE_FREEZE_ENABLED 1
+#define TRACE_WIN_HELPER_GREGSET_ERROR_ENABLED 1
+#define TRACE_WIN_HELPER_SWITCH_PSTATE_ENABLED 1
+#define TRACE_WIN_HELPER_NO_SWITCH_PSTATE_ENABLED 1
+#define TRACE_WIN_HELPER_WRPIL_ENABLED 1
+#define TRACE_WIN_HELPER_DONE_ENABLED 1
+#define TRACE_WIN_HELPER_RETRY_ENABLED 1
+
+#define TRACE_MMU_HELPER_DFAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_dfault(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl)
+{
+}
+
+static inline void trace_mmu_helper_dfault(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_dfault(address, context, mmu_idx, tl);
+ }
+}
+
+#define TRACE_MMU_HELPER_DPROT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_dprot(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl)
+{
+}
+
+static inline void trace_mmu_helper_dprot(uint64_t address, uint64_t context, int mmu_idx, uint32_t tl)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_dprot(address, context, mmu_idx, tl);
+ }
+}
+
+#define TRACE_MMU_HELPER_DMISS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_dmiss(uint64_t address, uint64_t context)
+{
+}
+
+static inline void trace_mmu_helper_dmiss(uint64_t address, uint64_t context)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_dmiss(address, context);
+ }
+}
+
+#define TRACE_MMU_HELPER_TFAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_tfault(uint64_t address, uint64_t context)
+{
+}
+
+static inline void trace_mmu_helper_tfault(uint64_t address, uint64_t context)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_tfault(address, context);
+ }
+}
+
+#define TRACE_MMU_HELPER_TMISS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_tmiss(uint64_t address, uint64_t context)
+{
+}
+
+static inline void trace_mmu_helper_tmiss(uint64_t address, uint64_t context)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_tmiss(address, context);
+ }
+}
+
+#define TRACE_MMU_HELPER_GET_PHYS_ADDR_CODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_get_phys_addr_code(uint32_t tl, int mmu_idx, uint64_t prim_context, uint64_t sec_context, uint64_t address)
+{
+}
+
+static inline void trace_mmu_helper_get_phys_addr_code(uint32_t tl, int mmu_idx, uint64_t prim_context, uint64_t sec_context, uint64_t address)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_get_phys_addr_code(tl, mmu_idx, prim_context, sec_context, address);
+ }
+}
+
+#define TRACE_MMU_HELPER_GET_PHYS_ADDR_DATA_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_get_phys_addr_data(uint32_t tl, int mmu_idx, uint64_t prim_context, uint64_t sec_context, uint64_t address)
+{
+}
+
+static inline void trace_mmu_helper_get_phys_addr_data(uint32_t tl, int mmu_idx, uint64_t prim_context, uint64_t sec_context, uint64_t address)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_get_phys_addr_data(tl, mmu_idx, prim_context, sec_context, address);
+ }
+}
+
+#define TRACE_MMU_HELPER_MMU_FAULT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_mmu_helper_mmu_fault(uint64_t address, uint64_t paddr, int mmu_idx, uint32_t tl, uint64_t prim_context, uint64_t sec_context)
+{
+}
+
+static inline void trace_mmu_helper_mmu_fault(uint64_t address, uint64_t paddr, int mmu_idx, uint32_t tl, uint64_t prim_context, uint64_t sec_context)
+{
+ if (true) {
+ _nocheck__trace_mmu_helper_mmu_fault(address, paddr, mmu_idx, tl, prim_context, sec_context);
+ }
+}
+
+#define TRACE_INT_HELPER_SET_SOFTINT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_int_helper_set_softint(uint32_t softint)
+{
+}
+
+static inline void trace_int_helper_set_softint(uint32_t softint)
+{
+ if (true) {
+ _nocheck__trace_int_helper_set_softint(softint);
+ }
+}
+
+#define TRACE_INT_HELPER_CLEAR_SOFTINT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_int_helper_clear_softint(uint32_t softint)
+{
+}
+
+static inline void trace_int_helper_clear_softint(uint32_t softint)
+{
+ if (true) {
+ _nocheck__trace_int_helper_clear_softint(softint);
+ }
+}
+
+#define TRACE_INT_HELPER_WRITE_SOFTINT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_int_helper_write_softint(uint32_t softint)
+{
+}
+
+static inline void trace_int_helper_write_softint(uint32_t softint)
+{
+ if (true) {
+ _nocheck__trace_int_helper_write_softint(softint);
+ }
+}
+
+#define TRACE_INT_HELPER_ICACHE_FREEZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_int_helper_icache_freeze(void)
+{
+}
+
+static inline void trace_int_helper_icache_freeze(void)
+{
+ if (true) {
+ _nocheck__trace_int_helper_icache_freeze();
+ }
+}
+
+#define TRACE_INT_HELPER_DCACHE_FREEZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_int_helper_dcache_freeze(void)
+{
+}
+
+static inline void trace_int_helper_dcache_freeze(void)
+{
+ if (true) {
+ _nocheck__trace_int_helper_dcache_freeze();
+ }
+}
+
+#define TRACE_WIN_HELPER_GREGSET_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_gregset_error(uint32_t pstate)
+{
+}
+
+static inline void trace_win_helper_gregset_error(uint32_t pstate)
+{
+ if (true) {
+ _nocheck__trace_win_helper_gregset_error(pstate);
+ }
+}
+
+#define TRACE_WIN_HELPER_SWITCH_PSTATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_switch_pstate(uint32_t pstate_regs, uint32_t new_pstate_regs)
+{
+}
+
+static inline void trace_win_helper_switch_pstate(uint32_t pstate_regs, uint32_t new_pstate_regs)
+{
+ if (true) {
+ _nocheck__trace_win_helper_switch_pstate(pstate_regs, new_pstate_regs);
+ }
+}
+
+#define TRACE_WIN_HELPER_NO_SWITCH_PSTATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_no_switch_pstate(uint32_t new_pstate_regs)
+{
+}
+
+static inline void trace_win_helper_no_switch_pstate(uint32_t new_pstate_regs)
+{
+ if (true) {
+ _nocheck__trace_win_helper_no_switch_pstate(new_pstate_regs);
+ }
+}
+
+#define TRACE_WIN_HELPER_WRPIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_wrpil(uint32_t psrpil, uint32_t new_pil)
+{
+}
+
+static inline void trace_win_helper_wrpil(uint32_t psrpil, uint32_t new_pil)
+{
+ if (true) {
+ _nocheck__trace_win_helper_wrpil(psrpil, new_pil);
+ }
+}
+
+#define TRACE_WIN_HELPER_DONE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_done(uint32_t tl)
+{
+}
+
+static inline void trace_win_helper_done(uint32_t tl)
+{
+ if (true) {
+ _nocheck__trace_win_helper_done(tl);
+ }
+}
+
+#define TRACE_WIN_HELPER_RETRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_win_helper_retry(uint32_t tl)
+{
+}
+
+static inline void trace_win_helper_retry(uint32_t tl)
+{
+ if (true) {
+ _nocheck__trace_win_helper_retry(tl);
+ }
+}
+#endif /* TRACE_TARGET_SPARC_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/tests/qapi-builtin-types.c b/qemu2-auto-generated/tests/qapi-builtin-types.c
new file mode 100644
index 0000000000..417ecfe686
--- /dev/null
+++ b/qemu2-auto-generated/tests/qapi-builtin-types.c
@@ -0,0 +1,226 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/qapi-builtin-types.h"
+#include "qapi/qapi-builtin-visit.h"
+
+void qapi_free_strList(strList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_strList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_numberList(numberList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_numberList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_intList(intList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_intList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int8List(int8List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int8List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int16List(int16List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int16List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int32List(int32List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int32List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_int64List(int64List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_int64List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint8List(uint8List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint8List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint16List(uint16List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint16List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint32List(uint32List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint32List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_uint64List(uint64List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_uint64List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_sizeList(sizeList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_sizeList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_boolList(boolList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_boolList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_anyList(anyList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_anyList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_nullList(nullList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_nullList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QType_lookup = {
+ .array = (const char *const[]) {
+ [QTYPE_NONE] = "none",
+ [QTYPE_QNULL] = "qnull",
+ [QTYPE_QNUM] = "qnum",
+ [QTYPE_QSTRING] = "qstring",
+ [QTYPE_QDICT] = "qdict",
+ [QTYPE_QLIST] = "qlist",
+ [QTYPE_QBOOL] = "qbool",
+ },
+ .size = QTYPE__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_builtin_types_c;
diff --git a/qemu2-auto-generated/tests/qapi-builtin-types.h b/qemu2-auto-generated/tests/qapi-builtin-types.h
new file mode 100644
index 0000000000..19fc73e6f8
--- /dev/null
+++ b/qemu2-auto-generated/tests/qapi-builtin-types.h
@@ -0,0 +1,169 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_BUILTIN_TYPES_H
+#define QAPI_BUILTIN_TYPES_H
+
+#include "qapi/util.h"
+
+typedef struct strList strList;
+
+typedef struct numberList numberList;
+
+typedef struct intList intList;
+
+typedef struct int8List int8List;
+
+typedef struct int16List int16List;
+
+typedef struct int32List int32List;
+
+typedef struct int64List int64List;
+
+typedef struct uint8List uint8List;
+
+typedef struct uint16List uint16List;
+
+typedef struct uint32List uint32List;
+
+typedef struct uint64List uint64List;
+
+typedef struct sizeList sizeList;
+
+typedef struct boolList boolList;
+
+typedef struct anyList anyList;
+
+typedef struct nullList nullList;
+
+typedef enum QType {
+ QTYPE_NONE = 0,
+ QTYPE_QNULL = 1,
+ QTYPE_QNUM = 2,
+ QTYPE_QSTRING = 3,
+ QTYPE_QDICT = 4,
+ QTYPE_QLIST = 5,
+ QTYPE_QBOOL = 6,
+ QTYPE__MAX = 7,
+} QType;
+
+#define QType_str(val) \
+ qapi_enum_lookup(&QType_lookup, (val))
+
+extern const QEnumLookup QType_lookup;
+
+struct strList {
+ strList *next;
+ char *value;
+};
+
+void qapi_free_strList(strList *obj);
+
+struct numberList {
+ numberList *next;
+ double value;
+};
+
+void qapi_free_numberList(numberList *obj);
+
+struct intList {
+ intList *next;
+ int64_t value;
+};
+
+void qapi_free_intList(intList *obj);
+
+struct int8List {
+ int8List *next;
+ int8_t value;
+};
+
+void qapi_free_int8List(int8List *obj);
+
+struct int16List {
+ int16List *next;
+ int16_t value;
+};
+
+void qapi_free_int16List(int16List *obj);
+
+struct int32List {
+ int32List *next;
+ int32_t value;
+};
+
+void qapi_free_int32List(int32List *obj);
+
+struct int64List {
+ int64List *next;
+ int64_t value;
+};
+
+void qapi_free_int64List(int64List *obj);
+
+struct uint8List {
+ uint8List *next;
+ uint8_t value;
+};
+
+void qapi_free_uint8List(uint8List *obj);
+
+struct uint16List {
+ uint16List *next;
+ uint16_t value;
+};
+
+void qapi_free_uint16List(uint16List *obj);
+
+struct uint32List {
+ uint32List *next;
+ uint32_t value;
+};
+
+void qapi_free_uint32List(uint32List *obj);
+
+struct uint64List {
+ uint64List *next;
+ uint64_t value;
+};
+
+void qapi_free_uint64List(uint64List *obj);
+
+struct sizeList {
+ sizeList *next;
+ uint64_t value;
+};
+
+void qapi_free_sizeList(sizeList *obj);
+
+struct boolList {
+ boolList *next;
+ bool value;
+};
+
+void qapi_free_boolList(boolList *obj);
+
+struct anyList {
+ anyList *next;
+ QObject *value;
+};
+
+void qapi_free_anyList(anyList *obj);
+
+struct nullList {
+ nullList *next;
+ QNull *value;
+};
+
+void qapi_free_nullList(nullList *obj);
+
+#endif /* QAPI_BUILTIN_TYPES_H */
diff --git a/qemu2-auto-generated/tests/qapi-builtin-visit.c b/qemu2-auto-generated/tests/qapi-builtin-visit.c
new file mode 100644
index 0000000000..0c82c31e14
--- /dev/null
+++ b/qemu2-auto-generated/tests/qapi-builtin-visit.c
@@ -0,0 +1,490 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qapi-builtin-visit.h"
+
+void visit_type_strList(Visitor *v, const char *name, strList **obj, Error **errp)
+{
+ Error *err = NULL;
+ strList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (strList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_str(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_strList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_numberList(Visitor *v, const char *name, numberList **obj, Error **errp)
+{
+ Error *err = NULL;
+ numberList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (numberList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_number(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_numberList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_intList(Visitor *v, const char *name, intList **obj, Error **errp)
+{
+ Error *err = NULL;
+ intList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (intList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_intList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int8List(Visitor *v, const char *name, int8List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int8List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int8List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int8(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int8List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int16List(Visitor *v, const char *name, int16List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int16List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int16List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int16(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int16List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int32List(Visitor *v, const char *name, int32List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int32List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int32List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int32(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int32List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_int64List(Visitor *v, const char *name, int64List **obj, Error **errp)
+{
+ Error *err = NULL;
+ int64List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (int64List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_int64(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_int64List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint8List(Visitor *v, const char *name, uint8List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint8List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint8List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint8(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint8List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint16List(Visitor *v, const char *name, uint16List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint16List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint16List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint16(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint16List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint32List(Visitor *v, const char *name, uint32List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint32List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint32List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint32(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint32List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_uint64List(Visitor *v, const char *name, uint64List **obj, Error **errp)
+{
+ Error *err = NULL;
+ uint64List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (uint64List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_uint64(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_uint64List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_sizeList(Visitor *v, const char *name, sizeList **obj, Error **errp)
+{
+ Error *err = NULL;
+ sizeList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (sizeList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_size(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_sizeList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_boolList(Visitor *v, const char *name, boolList **obj, Error **errp)
+{
+ Error *err = NULL;
+ boolList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (boolList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_bool(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_boolList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_anyList(Visitor *v, const char *name, anyList **obj, Error **errp)
+{
+ Error *err = NULL;
+ anyList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (anyList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_any(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_anyList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_nullList(Visitor *v, const char *name, nullList **obj, Error **errp)
+{
+ Error *err = NULL;
+ nullList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (nullList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_null(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_nullList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QType(Visitor *v, const char *name, QType *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QType_lookup, errp);
+ *obj = value;
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_qapi_builtin_visit_c;
diff --git a/qemu2-auto-generated/tests/qapi-builtin-visit.h b/qemu2-auto-generated/tests/qapi-builtin-visit.h
new file mode 100644
index 0000000000..a40c01dad2
--- /dev/null
+++ b/qemu2-auto-generated/tests/qapi-builtin-visit.h
@@ -0,0 +1,36 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Built-in QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef QAPI_BUILTIN_VISIT_H
+#define QAPI_BUILTIN_VISIT_H
+
+#include "qapi/visitor.h"
+#include "qapi/qapi-builtin-types.h"
+
+void visit_type_strList(Visitor *v, const char *name, strList **obj, Error **errp);
+void visit_type_numberList(Visitor *v, const char *name, numberList **obj, Error **errp);
+void visit_type_intList(Visitor *v, const char *name, intList **obj, Error **errp);
+void visit_type_int8List(Visitor *v, const char *name, int8List **obj, Error **errp);
+void visit_type_int16List(Visitor *v, const char *name, int16List **obj, Error **errp);
+void visit_type_int32List(Visitor *v, const char *name, int32List **obj, Error **errp);
+void visit_type_int64List(Visitor *v, const char *name, int64List **obj, Error **errp);
+void visit_type_uint8List(Visitor *v, const char *name, uint8List **obj, Error **errp);
+void visit_type_uint16List(Visitor *v, const char *name, uint16List **obj, Error **errp);
+void visit_type_uint32List(Visitor *v, const char *name, uint32List **obj, Error **errp);
+void visit_type_uint64List(Visitor *v, const char *name, uint64List **obj, Error **errp);
+void visit_type_sizeList(Visitor *v, const char *name, sizeList **obj, Error **errp);
+void visit_type_boolList(Visitor *v, const char *name, boolList **obj, Error **errp);
+void visit_type_anyList(Visitor *v, const char *name, anyList **obj, Error **errp);
+void visit_type_nullList(Visitor *v, const char *name, nullList **obj, Error **errp);
+void visit_type_QType(Visitor *v, const char *name, QType *obj, Error **errp);
+
+#endif /* QAPI_BUILTIN_VISIT_H */
diff --git a/qemu2-auto-generated/tests/test-qapi-commands.c b/qemu2-auto-generated/tests/test-qapi-commands.c
new file mode 100644
index 0000000000..da65fb7d69
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-commands.c
@@ -0,0 +1,496 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qemu/module.h"
+#include "qapi/visitor.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qobject-input-visitor.h"
+#include "qapi/dealloc-visitor.h"
+#include "qapi/error.h"
+#include "test-qapi-visit.h"
+#include "test-qapi-commands.h"
+
+
+static void qmp_marshal_output_Empty2(Empty2 *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_Empty2(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_Empty2(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_user_def_cmd0(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Empty2 *retval;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ retval = qmp_user_def_cmd0(&err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_Empty2(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_user_def_cmd(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_user_def_cmd(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+void qmp_marshal_user_def_cmd1(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ q_obj_user_def_cmd1_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_user_def_cmd1_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_user_def_cmd1(arg.ud1a, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_user_def_cmd1_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_UserDefTwo(UserDefTwo *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_UserDefTwo(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefTwo(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_user_def_cmd2(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ UserDefTwo *retval;
+ Visitor *v;
+ q_obj_user_def_cmd2_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_user_def_cmd2_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_user_def_cmd2(arg.ud1a, arg.has_ud1b, arg.ud1b, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_UserDefTwo(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_user_def_cmd2_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_int(int64_t ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_int(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_int(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_guest_get_time(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ int64_t retval;
+ Visitor *v;
+ q_obj_guest_get_time_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_guest_get_time_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_guest_get_time(arg.a, arg.has_b, arg.b, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_int(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_guest_get_time_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+static void qmp_marshal_output_any(QObject *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type_any(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type_any(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_guest_sync(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ QObject *retval;
+ Visitor *v;
+ q_obj_guest_sync_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_guest_sync_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp_guest_sync(arg.arg, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output_any(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj_guest_sync_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_boxed_struct(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ UserDefZero arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_UserDefZero_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_boxed_struct(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_UserDefZero_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_boxed_union(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+ UserDefNativeListUnion arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_UserDefNativeListUnion_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ qmp_boxed_union(&arg, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_UserDefNativeListUnion_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal_an_oob_command(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v = NULL;
+
+ if (args) {
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+ }
+
+ qmp_an_oob_command(&err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ if (args) {
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+
+ visit_end_struct(v, NULL);
+ visit_free(v);
+ }
+}
+
+static void qmp_marshal_output___org_qemu_x_Union1(__org_qemu_x_Union1 *ret_in, QObject **ret_out, Error **errp)
+{
+ Error *err = NULL;
+ Visitor *v;
+
+ v = qobject_output_visitor_new(ret_out);
+ visit_type___org_qemu_x_Union1(v, "unused", &ret_in, &err);
+ if (!err) {
+ visit_complete(v, ret_out);
+ }
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Union1(v, "unused", &ret_in, NULL);
+ visit_free(v);
+}
+
+void qmp_marshal___org_qemu_x_command(QDict *args, QObject **ret, Error **errp)
+{
+ Error *err = NULL;
+ __org_qemu_x_Union1 *retval;
+ Visitor *v;
+ q_obj___org_qemu_x_command_arg arg = {0};
+
+ v = qobject_input_visitor_new(QOBJECT(args));
+ visit_start_struct(v, NULL, NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj___org_qemu_x_command_arg_members(v, &arg, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ retval = qmp___org_qemu_x_command(arg.a, arg.b, arg.c, arg.d, &err);
+ if (err) {
+ goto out;
+ }
+
+ qmp_marshal_output___org_qemu_x_Union1(retval, ret, &err);
+
+out:
+ error_propagate(errp, err);
+ visit_free(v);
+ v = qapi_dealloc_visitor_new();
+ visit_start_struct(v, NULL, NULL, 0, NULL);
+ visit_type_q_obj___org_qemu_x_command_arg_members(v, &arg, NULL);
+ visit_end_struct(v, NULL);
+ visit_free(v);
+}
+
+void test_qmp_init_marshal(QmpCommandList *cmds)
+{
+ QTAILQ_INIT(cmds);
+
+ qmp_register_command(cmds, "user_def_cmd0",
+ qmp_marshal_user_def_cmd0, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "user_def_cmd",
+ qmp_marshal_user_def_cmd, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "user_def_cmd1",
+ qmp_marshal_user_def_cmd1, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "user_def_cmd2",
+ qmp_marshal_user_def_cmd2, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "guest-get-time",
+ qmp_marshal_guest_get_time, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "guest-sync",
+ qmp_marshal_guest_sync, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "boxed-struct",
+ qmp_marshal_boxed_struct, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "boxed-union",
+ qmp_marshal_boxed_union, QCO_NO_OPTIONS);
+ qmp_register_command(cmds, "an-oob-command",
+ qmp_marshal_an_oob_command, QCO_ALLOW_OOB);
+ qmp_register_command(cmds, "__org.qemu_x-command",
+ qmp_marshal___org_qemu_x_command, QCO_NO_OPTIONS);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_test_qapi_commands_c;
diff --git a/qemu2-auto-generated/tests/test-qapi-commands.h b/qemu2-auto-generated/tests/test-qapi-commands.h
new file mode 100644
index 0000000000..a9e093858a
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-commands.h
@@ -0,0 +1,41 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP commands
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef TEST_QAPI_COMMANDS_H
+#define TEST_QAPI_COMMANDS_H
+
+#include "test-qapi-types.h"
+#include "qapi/qmp/dispatch.h"
+
+Empty2 *qmp_user_def_cmd0(Error **errp);
+void qmp_marshal_user_def_cmd0(QDict *args, QObject **ret, Error **errp);
+void qmp_user_def_cmd(Error **errp);
+void qmp_marshal_user_def_cmd(QDict *args, QObject **ret, Error **errp);
+void qmp_user_def_cmd1(UserDefOne *ud1a, Error **errp);
+void qmp_marshal_user_def_cmd1(QDict *args, QObject **ret, Error **errp);
+UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a, bool has_ud1b, UserDefOne *ud1b, Error **errp);
+void qmp_marshal_user_def_cmd2(QDict *args, QObject **ret, Error **errp);
+int64_t qmp_guest_get_time(int64_t a, bool has_b, int64_t b, Error **errp);
+void qmp_marshal_guest_get_time(QDict *args, QObject **ret, Error **errp);
+QObject *qmp_guest_sync(QObject *arg, Error **errp);
+void qmp_marshal_guest_sync(QDict *args, QObject **ret, Error **errp);
+void qmp_boxed_struct(UserDefZero *arg, Error **errp);
+void qmp_marshal_boxed_struct(QDict *args, QObject **ret, Error **errp);
+void qmp_boxed_union(UserDefNativeListUnion *arg, Error **errp);
+void qmp_marshal_boxed_union(QDict *args, QObject **ret, Error **errp);
+void qmp_an_oob_command(Error **errp);
+void qmp_marshal_an_oob_command(QDict *args, QObject **ret, Error **errp);
+__org_qemu_x_Union1 *qmp___org_qemu_x_command(__org_qemu_x_EnumList *a, __org_qemu_x_StructList *b, __org_qemu_x_Union2 *c, __org_qemu_x_Alt *d, Error **errp);
+void qmp_marshal___org_qemu_x_command(QDict *args, QObject **ret, Error **errp);
+void test_qmp_init_marshal(QmpCommandList *cmds);
+
+#endif /* TEST_QAPI_COMMANDS_H */
diff --git a/qemu2-auto-generated/tests/test-qapi-events.c b/qemu2-auto-generated/tests/test-qapi-events.c
new file mode 100644
index 0000000000..1c9545ccb7
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-events.c
@@ -0,0 +1,257 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "test-qapi-events.h"
+#include "test-qapi-visit.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qdict.h"
+#include "qapi/qobject-output-visitor.h"
+#include "qapi/qmp-event.h"
+
+
+void qapi_event_send_event_a(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_A");
+
+ emit(TEST_QAPI_EVENT_EVENT_A, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_event_b(Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_B");
+
+ emit(TEST_QAPI_EVENT_EVENT_B, qmp, &err);
+
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_event_c(bool has_a, int64_t a, bool has_b, UserDefOne *b, const char *c, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_EVENT_C_arg param = {
+ has_a, a, has_b, b, (char *)c
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_C");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "EVENT_C", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_EVENT_C_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(TEST_QAPI_EVENT_EVENT_C, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_event_d(EventStructOne *a, const char *b, bool has_c, const char *c, bool has_enum3, EnumOne enum3, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ q_obj_EVENT_D_arg param = {
+ a, (char *)b, has_c, (char *)c, has_enum3, enum3
+ };
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_D");
+
+ v = qobject_output_visitor_new(&obj);
+
+ visit_start_struct(v, "EVENT_D", NULL, 0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_q_obj_EVENT_D_arg_members(v, &param, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(TEST_QAPI_EVENT_EVENT_D, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_event_e(UserDefZero *arg, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_E");
+
+ v = qobject_output_visitor_new(&obj);
+ visit_type_UserDefZero(v, "EVENT_E", &arg, &err);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(TEST_QAPI_EVENT_EVENT_E, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send_event_f(UserDefAlternate *arg, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("EVENT_F");
+
+ v = qobject_output_visitor_new(&obj);
+ visit_type_UserDefAlternate(v, "EVENT_F", &arg, &err);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(TEST_QAPI_EVENT_EVENT_F, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+void qapi_event_send___org_qemu_x_event(__org_qemu_x_Enum __org_qemu_x_member1, const char *__org_qemu_x_member2, bool has_q_wchar_t, int64_t q_wchar_t, Error **errp)
+{
+ QDict *qmp;
+ Error *err = NULL;
+ QMPEventFuncEmit emit;
+ QObject *obj;
+ Visitor *v;
+ __org_qemu_x_Struct param = {
+ __org_qemu_x_member1, (char *)__org_qemu_x_member2, has_q_wchar_t, q_wchar_t
+ };
+ __org_qemu_x_Struct *arg = &param;
+
+ emit = qmp_event_get_func_emit();
+ if (!emit) {
+ return;
+ }
+
+ qmp = qmp_event_build_dict("__ORG.QEMU_X-EVENT");
+
+ v = qobject_output_visitor_new(&obj);
+ visit_type___org_qemu_x_Struct(v, "__ORG.QEMU_X-EVENT", &arg, &err);
+ if (err) {
+ goto out;
+ }
+
+ visit_complete(v, &obj);
+ qdict_put_obj(qmp, "data", obj);
+ emit(TEST_QAPI_EVENT___ORG_QEMU_X_EVENT, qmp, &err);
+
+out:
+ visit_free(v);
+ error_propagate(errp, err);
+ QDECREF(qmp);
+}
+
+const QEnumLookup test_QAPIEvent_lookup = {
+ .array = (const char *const[]) {
+ [TEST_QAPI_EVENT_EVENT_A] = "EVENT_A",
+ [TEST_QAPI_EVENT_EVENT_B] = "EVENT_B",
+ [TEST_QAPI_EVENT_EVENT_C] = "EVENT_C",
+ [TEST_QAPI_EVENT_EVENT_D] = "EVENT_D",
+ [TEST_QAPI_EVENT_EVENT_E] = "EVENT_E",
+ [TEST_QAPI_EVENT_EVENT_F] = "EVENT_F",
+ [TEST_QAPI_EVENT___ORG_QEMU_X_EVENT] = "__ORG.QEMU_X-EVENT",
+ },
+ .size = TEST_QAPI_EVENT__MAX
+};
+/* Dummy declaration to prevent empty .o file */
+char dummy_test_qapi_events_c;
diff --git a/qemu2-auto-generated/tests/test-qapi-events.h b/qemu2-auto-generated/tests/test-qapi-events.h
new file mode 100644
index 0000000000..aa41d28aec
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-events.h
@@ -0,0 +1,50 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI/QMP events
+ *
+ * Copyright (c) 2014 Wenchao Xia
+ * Copyright (c) 2015-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef TEST_QAPI_EVENTS_H
+#define TEST_QAPI_EVENTS_H
+
+#include "qapi/util.h"
+#include "test-qapi-types.h"
+
+
+void qapi_event_send_event_a(Error **errp);
+
+void qapi_event_send_event_b(Error **errp);
+
+void qapi_event_send_event_c(bool has_a, int64_t a, bool has_b, UserDefOne *b, const char *c, Error **errp);
+
+void qapi_event_send_event_d(EventStructOne *a, const char *b, bool has_c, const char *c, bool has_enum3, EnumOne enum3, Error **errp);
+
+void qapi_event_send_event_e(UserDefZero *arg, Error **errp);
+
+void qapi_event_send_event_f(UserDefAlternate *arg, Error **errp);
+
+void qapi_event_send___org_qemu_x_event(__org_qemu_x_Enum __org_qemu_x_member1, const char *__org_qemu_x_member2, bool has_q_wchar_t, int64_t q_wchar_t, Error **errp);
+
+typedef enum test_QAPIEvent {
+ TEST_QAPI_EVENT_EVENT_A = 0,
+ TEST_QAPI_EVENT_EVENT_B = 1,
+ TEST_QAPI_EVENT_EVENT_C = 2,
+ TEST_QAPI_EVENT_EVENT_D = 3,
+ TEST_QAPI_EVENT_EVENT_E = 4,
+ TEST_QAPI_EVENT_EVENT_F = 5,
+ TEST_QAPI_EVENT___ORG_QEMU_X_EVENT = 6,
+ TEST_QAPI_EVENT__MAX = 7,
+} test_QAPIEvent;
+
+#define test_QAPIEvent_str(val) \
+ qapi_enum_lookup(&test_QAPIEvent_lookup, (val))
+
+extern const QEnumLookup test_QAPIEvent_lookup;
+
+#endif /* TEST_QAPI_EVENTS_H */
diff --git a/qemu2-auto-generated/tests/test-qapi-introspect.c b/qemu2-auto-generated/tests/test-qapi-introspect.c
new file mode 100644
index 0000000000..fff4f8399d
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-introspect.c
@@ -0,0 +1,1056 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * QAPI/QMP schema introspection
+ *
+ * Copyright (C) 2015-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "test-qapi-introspect.h"
+
+const QLitObject test_qmp_schema_qlit = QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("0") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("user_def_cmd0") },
+ { "ret-type", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("1") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("user_def_cmd") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("2") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("user_def_cmd1") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("3") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("user_def_cmd2") },
+ { "ret-type", QLIT_QSTR("4") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("5") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("guest-get-time") },
+ { "ret-type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("6") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("guest-sync") },
+ { "ret-type", QLIT_QSTR("any") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("7") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("boxed-struct") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("8") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("boxed-union") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(true) },
+ { "arg-type", QLIT_QSTR("1") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("an-oob-command") },
+ { "ret-type", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("1") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_A") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("1") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_B") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("9") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_C") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("10") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_D") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("7") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_E") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("11") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("EVENT_F") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "arg-type", QLIT_QSTR("12") },
+ { "meta-type", QLIT_QSTR("event") },
+ { "name", QLIT_QSTR("__ORG.QEMU_X-EVENT") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "allow-oob", QLIT_QBOOL(false) },
+ { "arg-type", QLIT_QSTR("13") },
+ { "meta-type", QLIT_QSTR("command") },
+ { "name", QLIT_QSTR("__org.qemu_x-command") },
+ { "ret-type", QLIT_QSTR("14") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("0") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("1") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ud1a") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("2") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("ud1a") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("ud1b") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("3") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string0") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dict1") },
+ { "type", QLIT_QSTR("16") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("4") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("a") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("b") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("5") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("int") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("arg") },
+ { "type", QLIT_QSTR("any") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("6") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("value") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("any") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("integer") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("7") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("17") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("8") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("integer") },
+ { "type", QLIT_QSTR("18") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s8") },
+ { "type", QLIT_QSTR("19") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s16") },
+ { "type", QLIT_QSTR("20") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s32") },
+ { "type", QLIT_QSTR("21") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("s64") },
+ { "type", QLIT_QSTR("22") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("u8") },
+ { "type", QLIT_QSTR("23") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("u16") },
+ { "type", QLIT_QSTR("24") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("u32") },
+ { "type", QLIT_QSTR("25") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("u64") },
+ { "type", QLIT_QSTR("26") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("number") },
+ { "type", QLIT_QSTR("27") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("boolean") },
+ { "type", QLIT_QSTR("28") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("string") },
+ { "type", QLIT_QSTR("29") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("sizes") },
+ { "type", QLIT_QSTR("30") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("any") },
+ { "type", QLIT_QSTR("31") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("a") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("b") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("c") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("9") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("a") },
+ { "type", QLIT_QSTR("32") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("b") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("c") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("enum3") },
+ { "type", QLIT_QSTR("33") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("10") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("34") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("33") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("null") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("11") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("__org.qemu_x-member1") },
+ { "type", QLIT_QSTR("35") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("__org.qemu_x-member2") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("wchar-t") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("12") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("a") },
+ { "type", QLIT_QSTR("[35]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("b") },
+ { "type", QLIT_QSTR("[12]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("c") },
+ { "type", QLIT_QSTR("36") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("d") },
+ { "type", QLIT_QSTR("37") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("13") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("type") },
+ { "type", QLIT_QSTR("38") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("14") },
+ { "tag", QLIT_QSTR("type") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("__org.qemu_x-branch") },
+ { "type", QLIT_QSTR("39") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("integer") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("enum1") },
+ { "type", QLIT_QSTR("33") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("string") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string1") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("dict2") },
+ { "type", QLIT_QSTR("40") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("dict3") },
+ { "type", QLIT_QSTR("40") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("16") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("17") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("integer"),
+ QLIT_QSTR("s8"),
+ QLIT_QSTR("s16"),
+ QLIT_QSTR("s32"),
+ QLIT_QSTR("s64"),
+ QLIT_QSTR("u8"),
+ QLIT_QSTR("u16"),
+ QLIT_QSTR("u32"),
+ QLIT_QSTR("u64"),
+ QLIT_QSTR("number"),
+ QLIT_QSTR("boolean"),
+ QLIT_QSTR("string"),
+ QLIT_QSTR("sizes"),
+ QLIT_QSTR("any"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("18") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("19") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("20") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("21") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("22") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("23") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("24") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("25") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("26") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[number]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("27") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[bool]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("28") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[str]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("29") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[int]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("30") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("[any]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("31") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("struct1") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("enum2") },
+ { "type", QLIT_QSTR("33") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("32") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("33") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("value1"),
+ QLIT_QSTR("value2"),
+ QLIT_QSTR("value3"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("integer") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("enum1") },
+ { "type", QLIT_QSTR("33") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("34") },
+ { "tag", QLIT_QSTR("enum1") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("value1") },
+ { "type", QLIT_QSTR("41") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("value2") },
+ { "type", QLIT_QSTR("42") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("value3") },
+ { "type", QLIT_QSTR("42") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("null") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("null") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("35") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("__org.qemu_x-value"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("35") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[35]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("12") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[12]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("__org.qemu_x-member1") },
+ { "type", QLIT_QSTR("35") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("36") },
+ { "tag", QLIT_QSTR("__org.qemu_x-member1") },
+ { "variants", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "case", QLIT_QSTR("__org.qemu_x-value") },
+ { "type", QLIT_QSTR("43") },
+ {}
+ })),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "type", QLIT_QSTR("44") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("alternate") },
+ { "name", QLIT_QSTR("37") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "meta-type", QLIT_QSTR("enum") },
+ { "name", QLIT_QSTR("38") },
+ { "values", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QSTR("__org.qemu_x-branch"),
+ {}
+ })) },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("data") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("39") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("userdef") },
+ { "type", QLIT_QSTR("15") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("string") },
+ { "type", QLIT_QSTR("str") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("40") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("int") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[int]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("number") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[number]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("number") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("number") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("bool") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[bool]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "json-type", QLIT_QSTR("boolean") },
+ { "meta-type", QLIT_QSTR("builtin") },
+ { "name", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("str") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[str]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("any") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[any]") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("boolean") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("a_b") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("41") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("intb") },
+ { "type", QLIT_QSTR("int") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "default", QLIT_QNULL },
+ { "name", QLIT_QSTR("a-b") },
+ { "type", QLIT_QSTR("bool") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("42") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("array") },
+ { "type", QLIT_QSTR("[14]") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("43") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "members", QLIT_QLIST(((QLitObject[]) {
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "name", QLIT_QSTR("__org.qemu_x-member1") },
+ { "type", QLIT_QSTR("35") },
+ {}
+ })),
+ {}
+ })) },
+ { "meta-type", QLIT_QSTR("object") },
+ { "name", QLIT_QSTR("44") },
+ {}
+ })),
+ QLIT_QDICT(((QLitDictEntry[]) {
+ { "element-type", QLIT_QSTR("14") },
+ { "meta-type", QLIT_QSTR("array") },
+ { "name", QLIT_QSTR("[14]") },
+ {}
+ })),
+ {}
+}));
+/* Dummy declaration to prevent empty .o file */
+char dummy_test_qapi_introspect_c;
diff --git a/qemu2-auto-generated/tests/test-qapi-introspect.h b/qemu2-auto-generated/tests/test-qapi-introspect.h
new file mode 100644
index 0000000000..1f006e034a
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-introspect.h
@@ -0,0 +1,19 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * QAPI/QMP schema introspection
+ *
+ * Copyright (C) 2015-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef TEST_QAPI_INTROSPECT_H
+#define TEST_QAPI_INTROSPECT_H
+
+#include "qapi/qmp/qlit.h"
+
+extern const QLitObject test_qmp_schema_qlit;
+
+#endif /* TEST_QAPI_INTROSPECT_H */
diff --git a/qemu2-auto-generated/tests/test-qapi-types.c b/qemu2-auto-generated/tests/test-qapi-types.c
new file mode 100644
index 0000000000..96ef9959b1
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-types.c
@@ -0,0 +1,569 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/dealloc-visitor.h"
+#include "test-qapi-types.h"
+#include "test-qapi-visit.h"
+
+void qapi_free_TestStruct(TestStruct *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TestStruct(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_NestedEnumsOne(NestedEnumsOne *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_NestedEnumsOne(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup MyEnum_lookup = {
+ .array = (const char *const[]) {
+ },
+ .size = MY_ENUM__MAX
+};
+
+void qapi_free_Empty1(Empty1 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Empty1(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_Empty2(Empty2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_Empty2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup QEnumTwo_lookup = {
+ .array = (const char *const[]) {
+ [QENUM_TWO_VALUE1] = "value1",
+ [QENUM_TWO_VALUE2] = "value2",
+ },
+ .size = QENUM_TWO__MAX
+};
+
+void qapi_free_UserDefOne(UserDefOne *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefOne(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup EnumOne_lookup = {
+ .array = (const char *const[]) {
+ [ENUM_ONE_VALUE1] = "value1",
+ [ENUM_ONE_VALUE2] = "value2",
+ [ENUM_ONE_VALUE3] = "value3",
+ },
+ .size = ENUM_ONE__MAX
+};
+
+void qapi_free_UserDefZero(UserDefZero *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefZero(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefTwoDictDict(UserDefTwoDictDict *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefTwoDictDict(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefTwoDict(UserDefTwoDict *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefTwoDict(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefTwo(UserDefTwo *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefTwo(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefOneList(UserDefOneList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefOneList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefTwoList(UserDefTwoList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefTwoList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_TestStructList(TestStructList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_TestStructList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_ForceArrays(ForceArrays *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_ForceArrays(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefA(UserDefA *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefA(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefB(UserDefB *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefB(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefFlatUnion(UserDefFlatUnion *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefFlatUnion(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefUnionBase(UserDefUnionBase *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefUnionBase(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefFlatUnion2(UserDefFlatUnion2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefFlatUnion2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_WrapAlternate(WrapAlternate *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_WrapAlternate(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefAlternate(UserDefAlternate *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefAlternate(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefC(UserDefC *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefC(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AltEnumBool(AltEnumBool *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AltEnumBool(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AltEnumNum(AltEnumNum *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AltEnumNum(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AltNumEnum(AltNumEnum *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AltNumEnum(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AltEnumInt(AltEnumInt *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AltEnumInt(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_AltStrObj(AltStrObj *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_AltStrObj(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup UserDefNativeListUnionKind_lookup = {
+ .array = (const char *const[]) {
+ [USER_DEF_NATIVE_LIST_UNION_KIND_INTEGER] = "integer",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_S8] = "s8",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_S16] = "s16",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_S32] = "s32",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_S64] = "s64",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_U8] = "u8",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_U16] = "u16",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_U32] = "u32",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_U64] = "u64",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_NUMBER] = "number",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_BOOLEAN] = "boolean",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_STRING] = "string",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_SIZES] = "sizes",
+ [USER_DEF_NATIVE_LIST_UNION_KIND_ANY] = "any",
+ },
+ .size = USER_DEF_NATIVE_LIST_UNION_KIND__MAX
+};
+
+void qapi_free_UserDefNativeListUnion(UserDefNativeListUnion *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefNativeListUnion(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_UserDefOptions(UserDefOptions *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_UserDefOptions(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free_EventStructOne(EventStructOne *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type_EventStructOne(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup __org_qemu_x_Enum_lookup = {
+ .array = (const char *const[]) {
+ [ORG_QEMU_X_ENUM___ORG_QEMU_X_VALUE] = "__org.qemu_x-value",
+ },
+ .size = ORG_QEMU_X_ENUM__MAX
+};
+
+void qapi_free___org_qemu_x_Base(__org_qemu_x_Base *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Base(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_Struct(__org_qemu_x_Struct *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Struct(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+const QEnumLookup __org_qemu_x_Union1Kind_lookup = {
+ .array = (const char *const[]) {
+ [ORG_QEMU_X_UNION1_KIND___ORG_QEMU_X_BRANCH] = "__org.qemu_x-branch",
+ },
+ .size = ORG_QEMU_X_UNION1_KIND__MAX
+};
+
+void qapi_free___org_qemu_x_Union1(__org_qemu_x_Union1 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Union1(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_Union1List(__org_qemu_x_Union1List *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Union1List(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_Struct2(__org_qemu_x_Struct2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Struct2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_Union2(__org_qemu_x_Union2 *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Union2(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_Alt(__org_qemu_x_Alt *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_Alt(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_EnumList(__org_qemu_x_EnumList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_EnumList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+
+void qapi_free___org_qemu_x_StructList(__org_qemu_x_StructList *obj)
+{
+ Visitor *v;
+
+ if (!obj) {
+ return;
+ }
+
+ v = qapi_dealloc_visitor_new();
+ visit_type___org_qemu_x_StructList(v, NULL, &obj, NULL);
+ visit_free(v);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_test_qapi_types_c;
diff --git a/qemu2-auto-generated/tests/test-qapi-types.h b/qemu2-auto-generated/tests/test-qapi-types.h
new file mode 100644
index 0000000000..6e7d9886b1
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-types.h
@@ -0,0 +1,707 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI types
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (c) 2013-2018 Red Hat Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef TEST_QAPI_TYPES_H
+#define TEST_QAPI_TYPES_H
+
+#include "qapi/qapi-builtin-types.h"
+
+typedef struct TestStruct TestStruct;
+
+typedef struct NestedEnumsOne NestedEnumsOne;
+
+typedef enum MyEnum {
+ MY_ENUM__MAX = 0,
+} MyEnum;
+
+#define MyEnum_str(val) \
+ qapi_enum_lookup(&MyEnum_lookup, (val))
+
+extern const QEnumLookup MyEnum_lookup;
+
+typedef struct Empty1 Empty1;
+
+typedef struct Empty2 Empty2;
+
+typedef enum QEnumTwo {
+ QENUM_TWO_VALUE1 = 0,
+ QENUM_TWO_VALUE2 = 1,
+ QENUM_TWO__MAX = 2,
+} QEnumTwo;
+
+#define QEnumTwo_str(val) \
+ qapi_enum_lookup(&QEnumTwo_lookup, (val))
+
+extern const QEnumLookup QEnumTwo_lookup;
+
+typedef struct UserDefOne UserDefOne;
+
+typedef enum EnumOne {
+ ENUM_ONE_VALUE1 = 0,
+ ENUM_ONE_VALUE2 = 1,
+ ENUM_ONE_VALUE3 = 2,
+ ENUM_ONE__MAX = 3,
+} EnumOne;
+
+#define EnumOne_str(val) \
+ qapi_enum_lookup(&EnumOne_lookup, (val))
+
+extern const QEnumLookup EnumOne_lookup;
+
+typedef struct UserDefZero UserDefZero;
+
+typedef struct UserDefTwoDictDict UserDefTwoDictDict;
+
+typedef struct UserDefTwoDict UserDefTwoDict;
+
+typedef struct UserDefTwo UserDefTwo;
+
+typedef struct UserDefOneList UserDefOneList;
+
+typedef struct UserDefTwoList UserDefTwoList;
+
+typedef struct TestStructList TestStructList;
+
+typedef struct ForceArrays ForceArrays;
+
+typedef struct UserDefA UserDefA;
+
+typedef struct UserDefB UserDefB;
+
+typedef struct UserDefFlatUnion UserDefFlatUnion;
+
+typedef struct UserDefUnionBase UserDefUnionBase;
+
+typedef struct q_obj_UserDefFlatUnion2_base q_obj_UserDefFlatUnion2_base;
+
+typedef struct UserDefFlatUnion2 UserDefFlatUnion2;
+
+typedef struct WrapAlternate WrapAlternate;
+
+typedef struct UserDefAlternate UserDefAlternate;
+
+typedef struct UserDefC UserDefC;
+
+typedef struct AltEnumBool AltEnumBool;
+
+typedef struct AltEnumNum AltEnumNum;
+
+typedef struct AltNumEnum AltNumEnum;
+
+typedef struct AltEnumInt AltEnumInt;
+
+typedef struct AltStrObj AltStrObj;
+
+typedef struct q_obj_intList_wrapper q_obj_intList_wrapper;
+
+typedef struct q_obj_int8List_wrapper q_obj_int8List_wrapper;
+
+typedef struct q_obj_int16List_wrapper q_obj_int16List_wrapper;
+
+typedef struct q_obj_int32List_wrapper q_obj_int32List_wrapper;
+
+typedef struct q_obj_int64List_wrapper q_obj_int64List_wrapper;
+
+typedef struct q_obj_uint8List_wrapper q_obj_uint8List_wrapper;
+
+typedef struct q_obj_uint16List_wrapper q_obj_uint16List_wrapper;
+
+typedef struct q_obj_uint32List_wrapper q_obj_uint32List_wrapper;
+
+typedef struct q_obj_uint64List_wrapper q_obj_uint64List_wrapper;
+
+typedef struct q_obj_numberList_wrapper q_obj_numberList_wrapper;
+
+typedef struct q_obj_boolList_wrapper q_obj_boolList_wrapper;
+
+typedef struct q_obj_strList_wrapper q_obj_strList_wrapper;
+
+typedef struct q_obj_sizeList_wrapper q_obj_sizeList_wrapper;
+
+typedef struct q_obj_anyList_wrapper q_obj_anyList_wrapper;
+
+typedef enum UserDefNativeListUnionKind {
+ USER_DEF_NATIVE_LIST_UNION_KIND_INTEGER = 0,
+ USER_DEF_NATIVE_LIST_UNION_KIND_S8 = 1,
+ USER_DEF_NATIVE_LIST_UNION_KIND_S16 = 2,
+ USER_DEF_NATIVE_LIST_UNION_KIND_S32 = 3,
+ USER_DEF_NATIVE_LIST_UNION_KIND_S64 = 4,
+ USER_DEF_NATIVE_LIST_UNION_KIND_U8 = 5,
+ USER_DEF_NATIVE_LIST_UNION_KIND_U16 = 6,
+ USER_DEF_NATIVE_LIST_UNION_KIND_U32 = 7,
+ USER_DEF_NATIVE_LIST_UNION_KIND_U64 = 8,
+ USER_DEF_NATIVE_LIST_UNION_KIND_NUMBER = 9,
+ USER_DEF_NATIVE_LIST_UNION_KIND_BOOLEAN = 10,
+ USER_DEF_NATIVE_LIST_UNION_KIND_STRING = 11,
+ USER_DEF_NATIVE_LIST_UNION_KIND_SIZES = 12,
+ USER_DEF_NATIVE_LIST_UNION_KIND_ANY = 13,
+ USER_DEF_NATIVE_LIST_UNION_KIND__MAX = 14,
+} UserDefNativeListUnionKind;
+
+#define UserDefNativeListUnionKind_str(val) \
+ qapi_enum_lookup(&UserDefNativeListUnionKind_lookup, (val))
+
+extern const QEnumLookup UserDefNativeListUnionKind_lookup;
+
+typedef struct UserDefNativeListUnion UserDefNativeListUnion;
+
+typedef struct q_obj_user_def_cmd1_arg q_obj_user_def_cmd1_arg;
+
+typedef struct q_obj_user_def_cmd2_arg q_obj_user_def_cmd2_arg;
+
+typedef struct q_obj_guest_get_time_arg q_obj_guest_get_time_arg;
+
+typedef struct q_obj_guest_sync_arg q_obj_guest_sync_arg;
+
+typedef struct UserDefOptions UserDefOptions;
+
+typedef struct EventStructOne EventStructOne;
+
+typedef struct q_obj_EVENT_C_arg q_obj_EVENT_C_arg;
+
+typedef struct q_obj_EVENT_D_arg q_obj_EVENT_D_arg;
+
+typedef enum __org_qemu_x_Enum {
+ ORG_QEMU_X_ENUM___ORG_QEMU_X_VALUE = 0,
+ ORG_QEMU_X_ENUM__MAX = 1,
+} __org_qemu_x_Enum;
+
+#define __org_qemu_x_Enum_str(val) \
+ qapi_enum_lookup(&__org_qemu_x_Enum_lookup, (val))
+
+extern const QEnumLookup __org_qemu_x_Enum_lookup;
+
+typedef struct __org_qemu_x_Base __org_qemu_x_Base;
+
+typedef struct __org_qemu_x_Struct __org_qemu_x_Struct;
+
+typedef struct q_obj_str_wrapper q_obj_str_wrapper;
+
+typedef enum __org_qemu_x_Union1Kind {
+ ORG_QEMU_X_UNION1_KIND___ORG_QEMU_X_BRANCH = 0,
+ ORG_QEMU_X_UNION1_KIND__MAX = 1,
+} __org_qemu_x_Union1Kind;
+
+#define __org_qemu_x_Union1Kind_str(val) \
+ qapi_enum_lookup(&__org_qemu_x_Union1Kind_lookup, (val))
+
+extern const QEnumLookup __org_qemu_x_Union1Kind_lookup;
+
+typedef struct __org_qemu_x_Union1 __org_qemu_x_Union1;
+
+typedef struct __org_qemu_x_Union1List __org_qemu_x_Union1List;
+
+typedef struct __org_qemu_x_Struct2 __org_qemu_x_Struct2;
+
+typedef struct __org_qemu_x_Union2 __org_qemu_x_Union2;
+
+typedef struct __org_qemu_x_Alt __org_qemu_x_Alt;
+
+typedef struct __org_qemu_x_EnumList __org_qemu_x_EnumList;
+
+typedef struct __org_qemu_x_StructList __org_qemu_x_StructList;
+
+typedef struct q_obj___org_qemu_x_command_arg q_obj___org_qemu_x_command_arg;
+
+struct TestStruct {
+ int64_t integer;
+ bool boolean;
+ char *string;
+};
+
+void qapi_free_TestStruct(TestStruct *obj);
+
+struct NestedEnumsOne {
+ EnumOne enum1;
+ bool has_enum2;
+ EnumOne enum2;
+ EnumOne enum3;
+ bool has_enum4;
+ EnumOne enum4;
+};
+
+void qapi_free_NestedEnumsOne(NestedEnumsOne *obj);
+
+struct Empty1 {
+ char qapi_dummy_for_empty_struct;
+};
+
+void qapi_free_Empty1(Empty1 *obj);
+
+struct Empty2 {
+ /* Members inherited from Empty1: */
+ /* Own members: */
+ char qapi_dummy_for_empty_struct;
+};
+
+static inline Empty1 *qapi_Empty2_base(const Empty2 *obj)
+{
+ return (Empty1 *)obj;
+}
+
+void qapi_free_Empty2(Empty2 *obj);
+
+struct UserDefOne {
+ /* Members inherited from UserDefZero: */
+ int64_t integer;
+ /* Own members: */
+ char *string;
+ bool has_enum1;
+ EnumOne enum1;
+};
+
+static inline UserDefZero *qapi_UserDefOne_base(const UserDefOne *obj)
+{
+ return (UserDefZero *)obj;
+}
+
+void qapi_free_UserDefOne(UserDefOne *obj);
+
+struct UserDefZero {
+ int64_t integer;
+};
+
+void qapi_free_UserDefZero(UserDefZero *obj);
+
+struct UserDefTwoDictDict {
+ UserDefOne *userdef;
+ char *string;
+};
+
+void qapi_free_UserDefTwoDictDict(UserDefTwoDictDict *obj);
+
+struct UserDefTwoDict {
+ char *string1;
+ UserDefTwoDictDict *dict2;
+ bool has_dict3;
+ UserDefTwoDictDict *dict3;
+};
+
+void qapi_free_UserDefTwoDict(UserDefTwoDict *obj);
+
+struct UserDefTwo {
+ char *string0;
+ UserDefTwoDict *dict1;
+};
+
+void qapi_free_UserDefTwo(UserDefTwo *obj);
+
+struct UserDefOneList {
+ UserDefOneList *next;
+ UserDefOne *value;
+};
+
+void qapi_free_UserDefOneList(UserDefOneList *obj);
+
+struct UserDefTwoList {
+ UserDefTwoList *next;
+ UserDefTwo *value;
+};
+
+void qapi_free_UserDefTwoList(UserDefTwoList *obj);
+
+struct TestStructList {
+ TestStructList *next;
+ TestStruct *value;
+};
+
+void qapi_free_TestStructList(TestStructList *obj);
+
+struct ForceArrays {
+ UserDefOneList *unused1;
+ UserDefTwoList *unused2;
+ TestStructList *unused3;
+};
+
+void qapi_free_ForceArrays(ForceArrays *obj);
+
+struct UserDefA {
+ bool boolean;
+ bool has_a_b;
+ int64_t a_b;
+};
+
+void qapi_free_UserDefA(UserDefA *obj);
+
+struct UserDefB {
+ int64_t intb;
+ bool has_a_b;
+ bool a_b;
+};
+
+void qapi_free_UserDefB(UserDefB *obj);
+
+struct UserDefFlatUnion {
+ /* Members inherited from UserDefUnionBase: */
+ int64_t integer;
+ char *string;
+ EnumOne enum1;
+ /* Own members: */
+ union { /* union tag is @enum1 */
+ UserDefA value1;
+ UserDefB value2;
+ UserDefB value3;
+ } u;
+};
+
+static inline UserDefUnionBase *qapi_UserDefFlatUnion_base(const UserDefFlatUnion *obj)
+{
+ return (UserDefUnionBase *)obj;
+}
+
+void qapi_free_UserDefFlatUnion(UserDefFlatUnion *obj);
+
+struct UserDefUnionBase {
+ /* Members inherited from UserDefZero: */
+ int64_t integer;
+ /* Own members: */
+ char *string;
+ EnumOne enum1;
+};
+
+static inline UserDefZero *qapi_UserDefUnionBase_base(const UserDefUnionBase *obj)
+{
+ return (UserDefZero *)obj;
+}
+
+void qapi_free_UserDefUnionBase(UserDefUnionBase *obj);
+
+struct q_obj_UserDefFlatUnion2_base {
+ bool has_integer;
+ int64_t integer;
+ char *string;
+ QEnumTwo enum1;
+};
+
+struct UserDefC {
+ char *string1;
+ char *string2;
+};
+
+struct UserDefFlatUnion2 {
+ bool has_integer;
+ int64_t integer;
+ char *string;
+ QEnumTwo enum1;
+ union { /* union tag is @enum1 */
+ UserDefC value1;
+ UserDefB value2;
+ } u;
+};
+
+void qapi_free_UserDefFlatUnion2(UserDefFlatUnion2 *obj);
+
+struct WrapAlternate {
+ UserDefAlternate *alt;
+};
+
+void qapi_free_WrapAlternate(WrapAlternate *obj);
+
+struct UserDefAlternate {
+ QType type;
+ union { /* union tag is @type */
+ UserDefFlatUnion udfu;
+ EnumOne e;
+ int64_t i;
+ QNull *n;
+ } u;
+};
+
+void qapi_free_UserDefAlternate(UserDefAlternate *obj);
+
+void qapi_free_UserDefC(UserDefC *obj);
+
+struct AltEnumBool {
+ QType type;
+ union { /* union tag is @type */
+ EnumOne e;
+ bool b;
+ } u;
+};
+
+void qapi_free_AltEnumBool(AltEnumBool *obj);
+
+struct AltEnumNum {
+ QType type;
+ union { /* union tag is @type */
+ EnumOne e;
+ double n;
+ } u;
+};
+
+void qapi_free_AltEnumNum(AltEnumNum *obj);
+
+struct AltNumEnum {
+ QType type;
+ union { /* union tag is @type */
+ double n;
+ EnumOne e;
+ } u;
+};
+
+void qapi_free_AltNumEnum(AltNumEnum *obj);
+
+struct AltEnumInt {
+ QType type;
+ union { /* union tag is @type */
+ EnumOne e;
+ int64_t i;
+ } u;
+};
+
+void qapi_free_AltEnumInt(AltEnumInt *obj);
+
+struct AltStrObj {
+ QType type;
+ union { /* union tag is @type */
+ char *s;
+ TestStruct o;
+ } u;
+};
+
+void qapi_free_AltStrObj(AltStrObj *obj);
+
+struct q_obj_intList_wrapper {
+ intList *data;
+};
+
+struct q_obj_int8List_wrapper {
+ int8List *data;
+};
+
+struct q_obj_int16List_wrapper {
+ int16List *data;
+};
+
+struct q_obj_int32List_wrapper {
+ int32List *data;
+};
+
+struct q_obj_int64List_wrapper {
+ int64List *data;
+};
+
+struct q_obj_uint8List_wrapper {
+ uint8List *data;
+};
+
+struct q_obj_uint16List_wrapper {
+ uint16List *data;
+};
+
+struct q_obj_uint32List_wrapper {
+ uint32List *data;
+};
+
+struct q_obj_uint64List_wrapper {
+ uint64List *data;
+};
+
+struct q_obj_numberList_wrapper {
+ numberList *data;
+};
+
+struct q_obj_boolList_wrapper {
+ boolList *data;
+};
+
+struct q_obj_strList_wrapper {
+ strList *data;
+};
+
+struct q_obj_sizeList_wrapper {
+ sizeList *data;
+};
+
+struct q_obj_anyList_wrapper {
+ anyList *data;
+};
+
+struct UserDefNativeListUnion {
+ UserDefNativeListUnionKind type;
+ union { /* union tag is @type */
+ q_obj_intList_wrapper integer;
+ q_obj_int8List_wrapper s8;
+ q_obj_int16List_wrapper s16;
+ q_obj_int32List_wrapper s32;
+ q_obj_int64List_wrapper s64;
+ q_obj_uint8List_wrapper u8;
+ q_obj_uint16List_wrapper u16;
+ q_obj_uint32List_wrapper u32;
+ q_obj_uint64List_wrapper u64;
+ q_obj_numberList_wrapper number;
+ q_obj_boolList_wrapper boolean;
+ q_obj_strList_wrapper string;
+ q_obj_sizeList_wrapper sizes;
+ q_obj_anyList_wrapper any;
+ } u;
+};
+
+void qapi_free_UserDefNativeListUnion(UserDefNativeListUnion *obj);
+
+struct q_obj_user_def_cmd1_arg {
+ UserDefOne *ud1a;
+};
+
+struct q_obj_user_def_cmd2_arg {
+ UserDefOne *ud1a;
+ bool has_ud1b;
+ UserDefOne *ud1b;
+};
+
+struct q_obj_guest_get_time_arg {
+ int64_t a;
+ bool has_b;
+ int64_t b;
+};
+
+struct q_obj_guest_sync_arg {
+ QObject *arg;
+};
+
+struct UserDefOptions {
+ bool has_i64;
+ intList *i64;
+ bool has_u64;
+ uint64List *u64;
+ bool has_u16;
+ uint16List *u16;
+ bool has_i64x;
+ int64_t i64x;
+ bool has_u64x;
+ uint64_t u64x;
+};
+
+void qapi_free_UserDefOptions(UserDefOptions *obj);
+
+struct EventStructOne {
+ UserDefOne *struct1;
+ char *string;
+ bool has_enum2;
+ EnumOne enum2;
+};
+
+void qapi_free_EventStructOne(EventStructOne *obj);
+
+struct q_obj_EVENT_C_arg {
+ bool has_a;
+ int64_t a;
+ bool has_b;
+ UserDefOne *b;
+ char *c;
+};
+
+struct q_obj_EVENT_D_arg {
+ EventStructOne *a;
+ char *b;
+ bool has_c;
+ char *c;
+ bool has_enum3;
+ EnumOne enum3;
+};
+
+struct __org_qemu_x_Base {
+ __org_qemu_x_Enum __org_qemu_x_member1;
+};
+
+void qapi_free___org_qemu_x_Base(__org_qemu_x_Base *obj);
+
+struct __org_qemu_x_Struct {
+ /* Members inherited from __org_qemu_x_Base: */
+ __org_qemu_x_Enum __org_qemu_x_member1;
+ /* Own members: */
+ char *__org_qemu_x_member2;
+ bool has_q_wchar_t;
+ int64_t q_wchar_t;
+};
+
+static inline __org_qemu_x_Base *qapi___org_qemu_x_Struct_base(const __org_qemu_x_Struct *obj)
+{
+ return (__org_qemu_x_Base *)obj;
+}
+
+void qapi_free___org_qemu_x_Struct(__org_qemu_x_Struct *obj);
+
+struct q_obj_str_wrapper {
+ char *data;
+};
+
+struct __org_qemu_x_Union1 {
+ __org_qemu_x_Union1Kind type;
+ union { /* union tag is @type */
+ q_obj_str_wrapper __org_qemu_x_branch;
+ } u;
+};
+
+void qapi_free___org_qemu_x_Union1(__org_qemu_x_Union1 *obj);
+
+struct __org_qemu_x_Union1List {
+ __org_qemu_x_Union1List *next;
+ __org_qemu_x_Union1 *value;
+};
+
+void qapi_free___org_qemu_x_Union1List(__org_qemu_x_Union1List *obj);
+
+struct __org_qemu_x_Struct2 {
+ __org_qemu_x_Union1List *array;
+};
+
+void qapi_free___org_qemu_x_Struct2(__org_qemu_x_Struct2 *obj);
+
+struct __org_qemu_x_Union2 {
+ /* Members inherited from __org_qemu_x_Base: */
+ __org_qemu_x_Enum __org_qemu_x_member1;
+ /* Own members: */
+ union { /* union tag is @__org_qemu_x_member1 */
+ __org_qemu_x_Struct2 __org_qemu_x_value;
+ } u;
+};
+
+static inline __org_qemu_x_Base *qapi___org_qemu_x_Union2_base(const __org_qemu_x_Union2 *obj)
+{
+ return (__org_qemu_x_Base *)obj;
+}
+
+void qapi_free___org_qemu_x_Union2(__org_qemu_x_Union2 *obj);
+
+struct __org_qemu_x_Alt {
+ QType type;
+ union { /* union tag is @type */
+ char *__org_qemu_x_branch;
+ __org_qemu_x_Base b;
+ } u;
+};
+
+void qapi_free___org_qemu_x_Alt(__org_qemu_x_Alt *obj);
+
+struct __org_qemu_x_EnumList {
+ __org_qemu_x_EnumList *next;
+ __org_qemu_x_Enum value;
+};
+
+void qapi_free___org_qemu_x_EnumList(__org_qemu_x_EnumList *obj);
+
+struct __org_qemu_x_StructList {
+ __org_qemu_x_StructList *next;
+ __org_qemu_x_Struct *value;
+};
+
+void qapi_free___org_qemu_x_StructList(__org_qemu_x_StructList *obj);
+
+struct q_obj___org_qemu_x_command_arg {
+ __org_qemu_x_EnumList *a;
+ __org_qemu_x_StructList *b;
+ __org_qemu_x_Union2 *c;
+ __org_qemu_x_Alt *d;
+};
+
+#endif /* TEST_QAPI_TYPES_H */
diff --git a/qemu2-auto-generated/tests/test-qapi-visit.c b/qemu2-auto-generated/tests/test-qapi-visit.c
new file mode 100644
index 0000000000..4677c02b2a
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-visit.c
@@ -0,0 +1,2065 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi/error.h"
+#include "qapi/qmp/qerror.h"
+#include "test-qapi-visit.h"
+
+void visit_type_TestStruct_members(Visitor *v, TestStruct *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "integer", &obj->integer, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_bool(v, "boolean", &obj->boolean, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TestStruct(Visitor *v, const char *name, TestStruct **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(TestStruct), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_TestStruct_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TestStruct(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NestedEnumsOne_members(Visitor *v, NestedEnumsOne *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_EnumOne(v, "enum1", &obj->enum1, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "enum2", &obj->has_enum2)) {
+ visit_type_EnumOne(v, "enum2", &obj->enum2, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_EnumOne(v, "enum3", &obj->enum3, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "enum4", &obj->has_enum4)) {
+ visit_type_EnumOne(v, "enum4", &obj->enum4, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_NestedEnumsOne(Visitor *v, const char *name, NestedEnumsOne **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(NestedEnumsOne), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_NestedEnumsOne_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_NestedEnumsOne(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_MyEnum(Visitor *v, const char *name, MyEnum *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &MyEnum_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_Empty1_members(Visitor *v, Empty1 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ error_propagate(errp, err);
+}
+
+void visit_type_Empty1(Visitor *v, const char *name, Empty1 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Empty1), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Empty1_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Empty1(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Empty2_members(Visitor *v, Empty2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_Empty1_members(v, (Empty1 *)obj, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_Empty2(Visitor *v, const char *name, Empty2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(Empty2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_Empty2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_Empty2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_QEnumTwo(Visitor *v, const char *name, QEnumTwo *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &QEnumTwo_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_UserDefOne_members(Visitor *v, UserDefOne *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefZero_members(v, (UserDefZero *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "enum1", &obj->has_enum1)) {
+ visit_type_EnumOne(v, "enum1", &obj->enum1, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefOne(Visitor *v, const char *name, UserDefOne **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefOne), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefOne_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefOne(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EnumOne(Visitor *v, const char *name, EnumOne *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &EnumOne_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_UserDefZero_members(Visitor *v, UserDefZero *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "integer", &obj->integer, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefZero(Visitor *v, const char *name, UserDefZero **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefZero), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefZero_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefZero(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwoDictDict_members(Visitor *v, UserDefTwoDictDict *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefOne(v, "userdef", &obj->userdef, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwoDictDict(Visitor *v, const char *name, UserDefTwoDictDict **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefTwoDictDict), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefTwoDictDict_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefTwoDictDict(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwoDict_members(Visitor *v, UserDefTwoDict *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "string1", &obj->string1, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_UserDefTwoDictDict(v, "dict2", &obj->dict2, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "dict3", &obj->has_dict3)) {
+ visit_type_UserDefTwoDictDict(v, "dict3", &obj->dict3, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwoDict(Visitor *v, const char *name, UserDefTwoDict **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefTwoDict), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefTwoDict_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefTwoDict(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwo_members(Visitor *v, UserDefTwo *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "string0", &obj->string0, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_UserDefTwoDict(v, "dict1", &obj->dict1, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwo(Visitor *v, const char *name, UserDefTwo **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefTwo), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefTwo_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefTwo(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefOneList(Visitor *v, const char *name, UserDefOneList **obj, Error **errp)
+{
+ Error *err = NULL;
+ UserDefOneList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (UserDefOneList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_UserDefOne(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefOneList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefTwoList(Visitor *v, const char *name, UserDefTwoList **obj, Error **errp)
+{
+ Error *err = NULL;
+ UserDefTwoList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (UserDefTwoList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_UserDefTwo(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefTwoList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_TestStructList(Visitor *v, const char *name, TestStructList **obj, Error **errp)
+{
+ Error *err = NULL;
+ TestStructList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (TestStructList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type_TestStruct(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_TestStructList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ForceArrays_members(Visitor *v, ForceArrays *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefOneList(v, "unused1", &obj->unused1, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_UserDefTwoList(v, "unused2", &obj->unused2, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_TestStructList(v, "unused3", &obj->unused3, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_ForceArrays(Visitor *v, const char *name, ForceArrays **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(ForceArrays), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_ForceArrays_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_ForceArrays(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefA_members(Visitor *v, UserDefA *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_bool(v, "boolean", &obj->boolean, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "a_b", &obj->has_a_b)) {
+ visit_type_int(v, "a_b", &obj->a_b, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefA(Visitor *v, const char *name, UserDefA **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefA), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefA_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefA(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefB_members(Visitor *v, UserDefB *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "intb", &obj->intb, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "a-b", &obj->has_a_b)) {
+ visit_type_bool(v, "a-b", &obj->a_b, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefB(Visitor *v, const char *name, UserDefB **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefB), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefB_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefB(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefFlatUnion_members(Visitor *v, UserDefFlatUnion *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefUnionBase_members(v, (UserDefUnionBase *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->enum1) {
+ case ENUM_ONE_VALUE1:
+ visit_type_UserDefA_members(v, &obj->u.value1, &err);
+ break;
+ case ENUM_ONE_VALUE2:
+ visit_type_UserDefB_members(v, &obj->u.value2, &err);
+ break;
+ case ENUM_ONE_VALUE3:
+ visit_type_UserDefB_members(v, &obj->u.value3, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefFlatUnion(Visitor *v, const char *name, UserDefFlatUnion **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefFlatUnion), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefFlatUnion_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefFlatUnion(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefUnionBase_members(Visitor *v, UserDefUnionBase *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefZero_members(v, (UserDefZero *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_EnumOne(v, "enum1", &obj->enum1, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefUnionBase(Visitor *v, const char *name, UserDefUnionBase **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefUnionBase), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefUnionBase_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefUnionBase(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_UserDefFlatUnion2_base_members(Visitor *v, q_obj_UserDefFlatUnion2_base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "integer", &obj->has_integer)) {
+ visit_type_int(v, "integer", &obj->integer, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_QEnumTwo(v, "enum1", &obj->enum1, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefFlatUnion2_members(Visitor *v, UserDefFlatUnion2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_q_obj_UserDefFlatUnion2_base_members(v, (q_obj_UserDefFlatUnion2_base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->enum1) {
+ case QENUM_TWO_VALUE1:
+ visit_type_UserDefC_members(v, &obj->u.value1, &err);
+ break;
+ case QENUM_TWO_VALUE2:
+ visit_type_UserDefB_members(v, &obj->u.value2, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefFlatUnion2(Visitor *v, const char *name, UserDefFlatUnion2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefFlatUnion2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefFlatUnion2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefFlatUnion2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_WrapAlternate_members(Visitor *v, WrapAlternate *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefAlternate(v, "alt", &obj->alt, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_WrapAlternate(Visitor *v, const char *name, WrapAlternate **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(WrapAlternate), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_WrapAlternate_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_WrapAlternate(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefAlternate(Visitor *v, const char *name, UserDefAlternate **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type_UserDefFlatUnion_members(v, &(*obj)->u.udfu, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_QSTRING:
+ visit_type_EnumOne(v, name, &(*obj)->u.e, &err);
+ break;
+ case QTYPE_QNUM:
+ visit_type_int(v, name, &(*obj)->u.i, &err);
+ break;
+ case QTYPE_QNULL:
+ visit_type_null(v, name, &(*obj)->u.n, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "UserDefAlternate");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefAlternate(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefC_members(Visitor *v, UserDefC *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "string1", &obj->string1, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string2", &obj->string2, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefC(Visitor *v, const char *name, UserDefC **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefC), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefC_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefC(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AltEnumBool(Visitor *v, const char *name, AltEnumBool **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_EnumOne(v, name, &(*obj)->u.e, &err);
+ break;
+ case QTYPE_QBOOL:
+ visit_type_bool(v, name, &(*obj)->u.b, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "AltEnumBool");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AltEnumBool(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AltEnumNum(Visitor *v, const char *name, AltEnumNum **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_EnumOne(v, name, &(*obj)->u.e, &err);
+ break;
+ case QTYPE_QNUM:
+ visit_type_number(v, name, &(*obj)->u.n, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "AltEnumNum");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AltEnumNum(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AltNumEnum(Visitor *v, const char *name, AltNumEnum **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QNUM:
+ visit_type_number(v, name, &(*obj)->u.n, &err);
+ break;
+ case QTYPE_QSTRING:
+ visit_type_EnumOne(v, name, &(*obj)->u.e, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "AltNumEnum");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AltNumEnum(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AltEnumInt(Visitor *v, const char *name, AltEnumInt **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_EnumOne(v, name, &(*obj)->u.e, &err);
+ break;
+ case QTYPE_QNUM:
+ visit_type_int(v, name, &(*obj)->u.i, &err);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "AltEnumInt");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AltEnumInt(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_AltStrObj(Visitor *v, const char *name, AltStrObj **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_str(v, name, &(*obj)->u.s, &err);
+ break;
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type_TestStruct_members(v, &(*obj)->u.o, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "AltStrObj");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_AltStrObj(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_intList_wrapper_members(Visitor *v, q_obj_intList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_intList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_int8List_wrapper_members(Visitor *v, q_obj_int8List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int8List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_int16List_wrapper_members(Visitor *v, q_obj_int16List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int16List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_int32List_wrapper_members(Visitor *v, q_obj_int32List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int32List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_int64List_wrapper_members(Visitor *v, q_obj_int64List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int64List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_uint8List_wrapper_members(Visitor *v, q_obj_uint8List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint8List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_uint16List_wrapper_members(Visitor *v, q_obj_uint16List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint16List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_uint32List_wrapper_members(Visitor *v, q_obj_uint32List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint32List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_uint64List_wrapper_members(Visitor *v, q_obj_uint64List_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_uint64List(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_numberList_wrapper_members(Visitor *v, q_obj_numberList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_numberList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_boolList_wrapper_members(Visitor *v, q_obj_boolList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_boolList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_strList_wrapper_members(Visitor *v, q_obj_strList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_strList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_sizeList_wrapper_members(Visitor *v, q_obj_sizeList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_sizeList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_anyList_wrapper_members(Visitor *v, q_obj_anyList_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_anyList(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefNativeListUnionKind(Visitor *v, const char *name, UserDefNativeListUnionKind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &UserDefNativeListUnionKind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type_UserDefNativeListUnion_members(Visitor *v, UserDefNativeListUnion *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefNativeListUnionKind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case USER_DEF_NATIVE_LIST_UNION_KIND_INTEGER:
+ visit_type_q_obj_intList_wrapper_members(v, &obj->u.integer, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_S8:
+ visit_type_q_obj_int8List_wrapper_members(v, &obj->u.s8, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_S16:
+ visit_type_q_obj_int16List_wrapper_members(v, &obj->u.s16, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_S32:
+ visit_type_q_obj_int32List_wrapper_members(v, &obj->u.s32, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_S64:
+ visit_type_q_obj_int64List_wrapper_members(v, &obj->u.s64, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_U8:
+ visit_type_q_obj_uint8List_wrapper_members(v, &obj->u.u8, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_U16:
+ visit_type_q_obj_uint16List_wrapper_members(v, &obj->u.u16, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_U32:
+ visit_type_q_obj_uint32List_wrapper_members(v, &obj->u.u32, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_U64:
+ visit_type_q_obj_uint64List_wrapper_members(v, &obj->u.u64, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_NUMBER:
+ visit_type_q_obj_numberList_wrapper_members(v, &obj->u.number, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_BOOLEAN:
+ visit_type_q_obj_boolList_wrapper_members(v, &obj->u.boolean, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_STRING:
+ visit_type_q_obj_strList_wrapper_members(v, &obj->u.string, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_SIZES:
+ visit_type_q_obj_sizeList_wrapper_members(v, &obj->u.sizes, &err);
+ break;
+ case USER_DEF_NATIVE_LIST_UNION_KIND_ANY:
+ visit_type_q_obj_anyList_wrapper_members(v, &obj->u.any, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefNativeListUnion(Visitor *v, const char *name, UserDefNativeListUnion **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefNativeListUnion), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefNativeListUnion_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefNativeListUnion(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_user_def_cmd1_arg_members(Visitor *v, q_obj_user_def_cmd1_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefOne(v, "ud1a", &obj->ud1a, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_user_def_cmd2_arg_members(Visitor *v, q_obj_user_def_cmd2_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefOne(v, "ud1a", &obj->ud1a, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "ud1b", &obj->has_ud1b)) {
+ visit_type_UserDefOne(v, "ud1b", &obj->ud1b, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_guest_get_time_arg_members(Visitor *v, q_obj_guest_get_time_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_int(v, "a", &obj->a, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "b", &obj->has_b)) {
+ visit_type_int(v, "b", &obj->b, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_guest_sync_arg_members(Visitor *v, q_obj_guest_sync_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_any(v, "arg", &obj->arg, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefOptions_members(Visitor *v, UserDefOptions *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "i64", &obj->has_i64)) {
+ visit_type_intList(v, "i64", &obj->i64, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "u64", &obj->has_u64)) {
+ visit_type_uint64List(v, "u64", &obj->u64, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "u16", &obj->has_u16)) {
+ visit_type_uint16List(v, "u16", &obj->u16, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "i64x", &obj->has_i64x)) {
+ visit_type_int(v, "i64x", &obj->i64x, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "u64x", &obj->has_u64x)) {
+ visit_type_uint64(v, "u64x", &obj->u64x, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_UserDefOptions(Visitor *v, const char *name, UserDefOptions **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(UserDefOptions), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_UserDefOptions_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_UserDefOptions(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EventStructOne_members(Visitor *v, EventStructOne *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_UserDefOne(v, "struct1", &obj->struct1, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "string", &obj->string, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "enum2", &obj->has_enum2)) {
+ visit_type_EnumOne(v, "enum2", &obj->enum2, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_EventStructOne(Visitor *v, const char *name, EventStructOne **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(EventStructOne), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type_EventStructOne_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free_EventStructOne(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_EVENT_C_arg_members(Visitor *v, q_obj_EVENT_C_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ if (visit_optional(v, "a", &obj->has_a)) {
+ visit_type_int(v, "a", &obj->a, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "b", &obj->has_b)) {
+ visit_type_UserDefOne(v, "b", &obj->b, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ visit_type_str(v, "c", &obj->c, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_EVENT_D_arg_members(Visitor *v, q_obj_EVENT_D_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_EventStructOne(v, "a", &obj->a, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "b", &obj->b, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "c", &obj->has_c)) {
+ visit_type_str(v, "c", &obj->c, &err);
+ if (err) {
+ goto out;
+ }
+ }
+ if (visit_optional(v, "enum3", &obj->has_enum3)) {
+ visit_type_EnumOne(v, "enum3", &obj->enum3, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Enum(Visitor *v, const char *name, __org_qemu_x_Enum *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &__org_qemu_x_Enum_lookup, errp);
+ *obj = value;
+}
+
+void visit_type___org_qemu_x_Base_members(Visitor *v, __org_qemu_x_Base *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_Enum(v, "__org.qemu_x-member1", &obj->__org_qemu_x_member1, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Base(Visitor *v, const char *name, __org_qemu_x_Base **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(__org_qemu_x_Base), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type___org_qemu_x_Base_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Base(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Struct_members(Visitor *v, __org_qemu_x_Struct *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_Base_members(v, (__org_qemu_x_Base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type_str(v, "__org.qemu_x-member2", &obj->__org_qemu_x_member2, &err);
+ if (err) {
+ goto out;
+ }
+ if (visit_optional(v, "wchar-t", &obj->has_q_wchar_t)) {
+ visit_type_int(v, "wchar-t", &obj->q_wchar_t, &err);
+ if (err) {
+ goto out;
+ }
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Struct(Visitor *v, const char *name, __org_qemu_x_Struct **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(__org_qemu_x_Struct), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type___org_qemu_x_Struct_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Struct(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj_str_wrapper_members(Visitor *v, q_obj_str_wrapper *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type_str(v, "data", &obj->data, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Union1Kind(Visitor *v, const char *name, __org_qemu_x_Union1Kind *obj, Error **errp)
+{
+ int value = *obj;
+ visit_type_enum(v, name, &value, &__org_qemu_x_Union1Kind_lookup, errp);
+ *obj = value;
+}
+
+void visit_type___org_qemu_x_Union1_members(Visitor *v, __org_qemu_x_Union1 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_Union1Kind(v, "type", &obj->type, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->type) {
+ case ORG_QEMU_X_UNION1_KIND___ORG_QEMU_X_BRANCH:
+ visit_type_q_obj_str_wrapper_members(v, &obj->u.__org_qemu_x_branch, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Union1(Visitor *v, const char *name, __org_qemu_x_Union1 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(__org_qemu_x_Union1), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type___org_qemu_x_Union1_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Union1(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Union1List(Visitor *v, const char *name, __org_qemu_x_Union1List **obj, Error **errp)
+{
+ Error *err = NULL;
+ __org_qemu_x_Union1List *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (__org_qemu_x_Union1List *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type___org_qemu_x_Union1(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Union1List(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Struct2_members(Visitor *v, __org_qemu_x_Struct2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_Union1List(v, "array", &obj->array, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Struct2(Visitor *v, const char *name, __org_qemu_x_Struct2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(__org_qemu_x_Struct2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type___org_qemu_x_Struct2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Struct2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Union2_members(Visitor *v, __org_qemu_x_Union2 *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_Base_members(v, (__org_qemu_x_Base *)obj, &err);
+ if (err) {
+ goto out;
+ }
+ switch (obj->__org_qemu_x_member1) {
+ case ORG_QEMU_X_ENUM___ORG_QEMU_X_VALUE:
+ visit_type___org_qemu_x_Struct2_members(v, &obj->u.__org_qemu_x_value, &err);
+ break;
+ default:
+ abort();
+ }
+
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Union2(Visitor *v, const char *name, __org_qemu_x_Union2 **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_struct(v, name, (void **)obj, sizeof(__org_qemu_x_Union2), &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ visit_type___org_qemu_x_Union2_members(v, *obj, &err);
+ if (err) {
+ goto out_obj;
+ }
+ visit_check_struct(v, &err);
+out_obj:
+ visit_end_struct(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Union2(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_Alt(Visitor *v, const char *name, __org_qemu_x_Alt **obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_start_alternate(v, name, (GenericAlternate **)obj, sizeof(**obj),
+ &err);
+ if (err) {
+ goto out;
+ }
+ if (!*obj) {
+ goto out_obj;
+ }
+ switch ((*obj)->type) {
+ case QTYPE_QSTRING:
+ visit_type_str(v, name, &(*obj)->u.__org_qemu_x_branch, &err);
+ break;
+ case QTYPE_QDICT:
+ visit_start_struct(v, name, NULL, 0, &err);
+ if (err) {
+ break;
+ }
+ visit_type___org_qemu_x_Base_members(v, &(*obj)->u.b, &err);
+ if (!err) {
+ visit_check_struct(v, &err);
+ }
+ visit_end_struct(v, NULL);
+ break;
+ case QTYPE_NONE:
+ abort();
+ default:
+ error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
+ "__org.qemu_x-Alt");
+ }
+out_obj:
+ visit_end_alternate(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_Alt(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_EnumList(Visitor *v, const char *name, __org_qemu_x_EnumList **obj, Error **errp)
+{
+ Error *err = NULL;
+ __org_qemu_x_EnumList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (__org_qemu_x_EnumList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type___org_qemu_x_Enum(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_EnumList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type___org_qemu_x_StructList(Visitor *v, const char *name, __org_qemu_x_StructList **obj, Error **errp)
+{
+ Error *err = NULL;
+ __org_qemu_x_StructList *tail;
+ size_t size = sizeof(**obj);
+
+ visit_start_list(v, name, (GenericList **)obj, size, &err);
+ if (err) {
+ goto out;
+ }
+
+ for (tail = *obj; tail;
+ tail = (__org_qemu_x_StructList *)visit_next_list(v, (GenericList *)tail, size)) {
+ visit_type___org_qemu_x_Struct(v, NULL, &tail->value, &err);
+ if (err) {
+ break;
+ }
+ }
+
+ if (!err) {
+ visit_check_list(v, &err);
+ }
+ visit_end_list(v, (void **)obj);
+ if (err && visit_is_input(v)) {
+ qapi_free___org_qemu_x_StructList(*obj);
+ *obj = NULL;
+ }
+out:
+ error_propagate(errp, err);
+}
+
+void visit_type_q_obj___org_qemu_x_command_arg_members(Visitor *v, q_obj___org_qemu_x_command_arg *obj, Error **errp)
+{
+ Error *err = NULL;
+
+ visit_type___org_qemu_x_EnumList(v, "a", &obj->a, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type___org_qemu_x_StructList(v, "b", &obj->b, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type___org_qemu_x_Union2(v, "c", &obj->c, &err);
+ if (err) {
+ goto out;
+ }
+ visit_type___org_qemu_x_Alt(v, "d", &obj->d, &err);
+ if (err) {
+ goto out;
+ }
+
+out:
+ error_propagate(errp, err);
+}
+/* Dummy declaration to prevent empty .o file */
+char dummy_test_qapi_visit_c;
diff --git a/qemu2-auto-generated/tests/test-qapi-visit.h b/qemu2-auto-generated/tests/test-qapi-visit.h
new file mode 100644
index 0000000000..a07280456d
--- /dev/null
+++ b/qemu2-auto-generated/tests/test-qapi-visit.h
@@ -0,0 +1,160 @@
+/* AUTOMATICALLY GENERATED, DO NOT MODIFY */
+
+/*
+ * Schema-defined QAPI visitors
+ *
+ * Copyright IBM, Corp. 2011
+ * Copyright (C) 2014-2018 Red Hat, Inc.
+ *
+ * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
+ * See the COPYING.LIB file in the top-level directory.
+ */
+
+#ifndef TEST_QAPI_VISIT_H
+#define TEST_QAPI_VISIT_H
+
+#include "qapi/qapi-builtin-visit.h"
+#include "test-qapi-types.h"
+
+
+void visit_type_TestStruct_members(Visitor *v, TestStruct *obj, Error **errp);
+void visit_type_TestStruct(Visitor *v, const char *name, TestStruct **obj, Error **errp);
+
+void visit_type_NestedEnumsOne_members(Visitor *v, NestedEnumsOne *obj, Error **errp);
+void visit_type_NestedEnumsOne(Visitor *v, const char *name, NestedEnumsOne **obj, Error **errp);
+void visit_type_MyEnum(Visitor *v, const char *name, MyEnum *obj, Error **errp);
+
+void visit_type_Empty1_members(Visitor *v, Empty1 *obj, Error **errp);
+void visit_type_Empty1(Visitor *v, const char *name, Empty1 **obj, Error **errp);
+
+void visit_type_Empty2_members(Visitor *v, Empty2 *obj, Error **errp);
+void visit_type_Empty2(Visitor *v, const char *name, Empty2 **obj, Error **errp);
+void visit_type_QEnumTwo(Visitor *v, const char *name, QEnumTwo *obj, Error **errp);
+
+void visit_type_UserDefOne_members(Visitor *v, UserDefOne *obj, Error **errp);
+void visit_type_UserDefOne(Visitor *v, const char *name, UserDefOne **obj, Error **errp);
+void visit_type_EnumOne(Visitor *v, const char *name, EnumOne *obj, Error **errp);
+
+void visit_type_UserDefZero_members(Visitor *v, UserDefZero *obj, Error **errp);
+void visit_type_UserDefZero(Visitor *v, const char *name, UserDefZero **obj, Error **errp);
+
+void visit_type_UserDefTwoDictDict_members(Visitor *v, UserDefTwoDictDict *obj, Error **errp);
+void visit_type_UserDefTwoDictDict(Visitor *v, const char *name, UserDefTwoDictDict **obj, Error **errp);
+
+void visit_type_UserDefTwoDict_members(Visitor *v, UserDefTwoDict *obj, Error **errp);
+void visit_type_UserDefTwoDict(Visitor *v, const char *name, UserDefTwoDict **obj, Error **errp);
+
+void visit_type_UserDefTwo_members(Visitor *v, UserDefTwo *obj, Error **errp);
+void visit_type_UserDefTwo(Visitor *v, const char *name, UserDefTwo **obj, Error **errp);
+void visit_type_UserDefOneList(Visitor *v, const char *name, UserDefOneList **obj, Error **errp);
+void visit_type_UserDefTwoList(Visitor *v, const char *name, UserDefTwoList **obj, Error **errp);
+void visit_type_TestStructList(Visitor *v, const char *name, TestStructList **obj, Error **errp);
+
+void visit_type_ForceArrays_members(Visitor *v, ForceArrays *obj, Error **errp);
+void visit_type_ForceArrays(Visitor *v, const char *name, ForceArrays **obj, Error **errp);
+
+void visit_type_UserDefA_members(Visitor *v, UserDefA *obj, Error **errp);
+void visit_type_UserDefA(Visitor *v, const char *name, UserDefA **obj, Error **errp);
+
+void visit_type_UserDefB_members(Visitor *v, UserDefB *obj, Error **errp);
+void visit_type_UserDefB(Visitor *v, const char *name, UserDefB **obj, Error **errp);
+
+void visit_type_UserDefFlatUnion_members(Visitor *v, UserDefFlatUnion *obj, Error **errp);
+void visit_type_UserDefFlatUnion(Visitor *v, const char *name, UserDefFlatUnion **obj, Error **errp);
+
+void visit_type_UserDefUnionBase_members(Visitor *v, UserDefUnionBase *obj, Error **errp);
+void visit_type_UserDefUnionBase(Visitor *v, const char *name, UserDefUnionBase **obj, Error **errp);
+
+void visit_type_q_obj_UserDefFlatUnion2_base_members(Visitor *v, q_obj_UserDefFlatUnion2_base *obj, Error **errp);
+
+void visit_type_UserDefFlatUnion2_members(Visitor *v, UserDefFlatUnion2 *obj, Error **errp);
+void visit_type_UserDefFlatUnion2(Visitor *v, const char *name, UserDefFlatUnion2 **obj, Error **errp);
+
+void visit_type_WrapAlternate_members(Visitor *v, WrapAlternate *obj, Error **errp);
+void visit_type_WrapAlternate(Visitor *v, const char *name, WrapAlternate **obj, Error **errp);
+void visit_type_UserDefAlternate(Visitor *v, const char *name, UserDefAlternate **obj, Error **errp);
+
+void visit_type_UserDefC_members(Visitor *v, UserDefC *obj, Error **errp);
+void visit_type_UserDefC(Visitor *v, const char *name, UserDefC **obj, Error **errp);
+void visit_type_AltEnumBool(Visitor *v, const char *name, AltEnumBool **obj, Error **errp);
+void visit_type_AltEnumNum(Visitor *v, const char *name, AltEnumNum **obj, Error **errp);
+void visit_type_AltNumEnum(Visitor *v, const char *name, AltNumEnum **obj, Error **errp);
+void visit_type_AltEnumInt(Visitor *v, const char *name, AltEnumInt **obj, Error **errp);
+void visit_type_AltStrObj(Visitor *v, const char *name, AltStrObj **obj, Error **errp);
+
+void visit_type_q_obj_intList_wrapper_members(Visitor *v, q_obj_intList_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_int8List_wrapper_members(Visitor *v, q_obj_int8List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_int16List_wrapper_members(Visitor *v, q_obj_int16List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_int32List_wrapper_members(Visitor *v, q_obj_int32List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_int64List_wrapper_members(Visitor *v, q_obj_int64List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_uint8List_wrapper_members(Visitor *v, q_obj_uint8List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_uint16List_wrapper_members(Visitor *v, q_obj_uint16List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_uint32List_wrapper_members(Visitor *v, q_obj_uint32List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_uint64List_wrapper_members(Visitor *v, q_obj_uint64List_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_numberList_wrapper_members(Visitor *v, q_obj_numberList_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_boolList_wrapper_members(Visitor *v, q_obj_boolList_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_strList_wrapper_members(Visitor *v, q_obj_strList_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_sizeList_wrapper_members(Visitor *v, q_obj_sizeList_wrapper *obj, Error **errp);
+
+void visit_type_q_obj_anyList_wrapper_members(Visitor *v, q_obj_anyList_wrapper *obj, Error **errp);
+void visit_type_UserDefNativeListUnionKind(Visitor *v, const char *name, UserDefNativeListUnionKind *obj, Error **errp);
+
+void visit_type_UserDefNativeListUnion_members(Visitor *v, UserDefNativeListUnion *obj, Error **errp);
+void visit_type_UserDefNativeListUnion(Visitor *v, const char *name, UserDefNativeListUnion **obj, Error **errp);
+
+void visit_type_q_obj_user_def_cmd1_arg_members(Visitor *v, q_obj_user_def_cmd1_arg *obj, Error **errp);
+
+void visit_type_q_obj_user_def_cmd2_arg_members(Visitor *v, q_obj_user_def_cmd2_arg *obj, Error **errp);
+
+void visit_type_q_obj_guest_get_time_arg_members(Visitor *v, q_obj_guest_get_time_arg *obj, Error **errp);
+
+void visit_type_q_obj_guest_sync_arg_members(Visitor *v, q_obj_guest_sync_arg *obj, Error **errp);
+
+void visit_type_UserDefOptions_members(Visitor *v, UserDefOptions *obj, Error **errp);
+void visit_type_UserDefOptions(Visitor *v, const char *name, UserDefOptions **obj, Error **errp);
+
+void visit_type_EventStructOne_members(Visitor *v, EventStructOne *obj, Error **errp);
+void visit_type_EventStructOne(Visitor *v, const char *name, EventStructOne **obj, Error **errp);
+
+void visit_type_q_obj_EVENT_C_arg_members(Visitor *v, q_obj_EVENT_C_arg *obj, Error **errp);
+
+void visit_type_q_obj_EVENT_D_arg_members(Visitor *v, q_obj_EVENT_D_arg *obj, Error **errp);
+void visit_type___org_qemu_x_Enum(Visitor *v, const char *name, __org_qemu_x_Enum *obj, Error **errp);
+
+void visit_type___org_qemu_x_Base_members(Visitor *v, __org_qemu_x_Base *obj, Error **errp);
+void visit_type___org_qemu_x_Base(Visitor *v, const char *name, __org_qemu_x_Base **obj, Error **errp);
+
+void visit_type___org_qemu_x_Struct_members(Visitor *v, __org_qemu_x_Struct *obj, Error **errp);
+void visit_type___org_qemu_x_Struct(Visitor *v, const char *name, __org_qemu_x_Struct **obj, Error **errp);
+
+void visit_type_q_obj_str_wrapper_members(Visitor *v, q_obj_str_wrapper *obj, Error **errp);
+void visit_type___org_qemu_x_Union1Kind(Visitor *v, const char *name, __org_qemu_x_Union1Kind *obj, Error **errp);
+
+void visit_type___org_qemu_x_Union1_members(Visitor *v, __org_qemu_x_Union1 *obj, Error **errp);
+void visit_type___org_qemu_x_Union1(Visitor *v, const char *name, __org_qemu_x_Union1 **obj, Error **errp);
+void visit_type___org_qemu_x_Union1List(Visitor *v, const char *name, __org_qemu_x_Union1List **obj, Error **errp);
+
+void visit_type___org_qemu_x_Struct2_members(Visitor *v, __org_qemu_x_Struct2 *obj, Error **errp);
+void visit_type___org_qemu_x_Struct2(Visitor *v, const char *name, __org_qemu_x_Struct2 **obj, Error **errp);
+
+void visit_type___org_qemu_x_Union2_members(Visitor *v, __org_qemu_x_Union2 *obj, Error **errp);
+void visit_type___org_qemu_x_Union2(Visitor *v, const char *name, __org_qemu_x_Union2 **obj, Error **errp);
+void visit_type___org_qemu_x_Alt(Visitor *v, const char *name, __org_qemu_x_Alt **obj, Error **errp);
+void visit_type___org_qemu_x_EnumList(Visitor *v, const char *name, __org_qemu_x_EnumList **obj, Error **errp);
+void visit_type___org_qemu_x_StructList(Visitor *v, const char *name, __org_qemu_x_StructList **obj, Error **errp);
+
+void visit_type_q_obj___org_qemu_x_command_arg_members(Visitor *v, q_obj___org_qemu_x_command_arg *obj, Error **errp);
+
+#endif /* TEST_QAPI_VISIT_H */
diff --git a/qemu2-auto-generated/trace-config b/qemu2-auto-generated/trace-config
new file mode 100644
index 0000000000..bf086c23ba
--- /dev/null
+++ b/qemu2-auto-generated/trace-config
@@ -0,0 +1 @@
+QEMU2_TRACE :=
diff --git a/qemu2-auto-generated/trace-root.c b/qemu2-auto-generated/trace-root.c
new file mode 100644
index 0000000000..17828291dc
--- /dev/null
+++ b/qemu2-auto-generated/trace-root.c
@@ -0,0 +1,635 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace-root.h"
+
+uint16_t _TRACE_CPU_IN_DSTATE;
+uint16_t _TRACE_CPU_OUT_DSTATE;
+uint16_t _TRACE_BALLOON_EVENT_DSTATE;
+uint16_t _TRACE_VM_STATE_NOTIFY_DSTATE;
+uint16_t _TRACE_LOAD_FILE_DSTATE;
+uint16_t _TRACE_RUNSTATE_SET_DSTATE;
+uint16_t _TRACE_SYSTEM_WAKEUP_REQUEST_DSTATE;
+uint16_t _TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_DSTATE;
+uint16_t _TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_DSTATE;
+uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_DSTATE;
+uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_EMIT_DSTATE;
+uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_DSTATE;
+uint16_t _TRACE_HANDLE_HMP_COMMAND_DSTATE;
+uint16_t _TRACE_HANDLE_QMP_COMMAND_DSTATE;
+uint16_t _TRACE_MONITOR_SUSPEND_DSTATE;
+uint16_t _TRACE_MONITOR_QMP_CMD_IN_BAND_DSTATE;
+uint16_t _TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_DSTATE;
+uint16_t _TRACE_DMA_BLK_IO_DSTATE;
+uint16_t _TRACE_DMA_AIO_CANCEL_DSTATE;
+uint16_t _TRACE_DMA_COMPLETE_DSTATE;
+uint16_t _TRACE_DMA_BLK_CB_DSTATE;
+uint16_t _TRACE_DMA_MAP_WAIT_DSTATE;
+uint16_t _TRACE_FIND_RAM_OFFSET_DSTATE;
+uint16_t _TRACE_FIND_RAM_OFFSET_LOOP_DSTATE;
+uint16_t _TRACE_RAM_BLOCK_DISCARD_RANGE_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_OPS_READ_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_OPS_WRITE_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_SUBPAGE_READ_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_SUBPAGE_WRITE_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_TB_READ_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_TB_WRITE_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_RAM_DEVICE_READ_DSTATE;
+uint16_t _TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_DSTATE;
+uint16_t _TRACE_FLATVIEW_NEW_DSTATE;
+uint16_t _TRACE_FLATVIEW_DESTROY_DSTATE;
+uint16_t _TRACE_FLATVIEW_DESTROY_RCU_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_START_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_EXITING_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_CONTINUE_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_CONTINUE_CPU_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_STEPPING_DSTATE;
+uint16_t _TRACE_GDBSTUB_OP_EXTRA_INFO_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_WATCHPOINT_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_INTERNAL_ERROR_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_BREAK_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_PAUSED_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_SHUTDOWN_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_IO_ERROR_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_WATCHDOG_DSTATE;
+uint16_t _TRACE_GDBSTUB_HIT_UNKNOWN_DSTATE;
+uint16_t _TRACE_GDBSTUB_IO_REPLY_DSTATE;
+uint16_t _TRACE_GDBSTUB_IO_BINARYREPLY_DSTATE;
+uint16_t _TRACE_GDBSTUB_IO_COMMAND_DSTATE;
+uint16_t _TRACE_GDBSTUB_IO_GOT_ACK_DSTATE;
+uint16_t _TRACE_GDBSTUB_IO_GOT_UNEXPECTED_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_GOT_NACK_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_GARBAGE_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_OVERRUN_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_INVALID_REPEAT_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_INVALID_RLE_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_DSTATE;
+uint16_t _TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_DSTATE;
+uint16_t _TRACE_GUEST_CPU_ENTER_DSTATE;
+uint16_t _TRACE_GUEST_CPU_EXIT_DSTATE;
+uint16_t _TRACE_GUEST_CPU_RESET_DSTATE;
+uint16_t _TRACE_GUEST_MEM_BEFORE_TRANS_DSTATE;
+uint16_t _TRACE_GUEST_MEM_BEFORE_EXEC_DSTATE;
+uint16_t _TRACE_GUEST_USER_SYSCALL_DSTATE;
+uint16_t _TRACE_GUEST_USER_SYSCALL_RET_DSTATE;
+TraceEvent _TRACE_CPU_IN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_in",
+ .sstate = TRACE_CPU_IN_ENABLED,
+ .dstate = &_TRACE_CPU_IN_DSTATE
+};
+TraceEvent _TRACE_CPU_OUT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "cpu_out",
+ .sstate = TRACE_CPU_OUT_ENABLED,
+ .dstate = &_TRACE_CPU_OUT_DSTATE
+};
+TraceEvent _TRACE_BALLOON_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "balloon_event",
+ .sstate = TRACE_BALLOON_EVENT_ENABLED,
+ .dstate = &_TRACE_BALLOON_EVENT_DSTATE
+};
+TraceEvent _TRACE_VM_STATE_NOTIFY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vm_state_notify",
+ .sstate = TRACE_VM_STATE_NOTIFY_ENABLED,
+ .dstate = &_TRACE_VM_STATE_NOTIFY_DSTATE
+};
+TraceEvent _TRACE_LOAD_FILE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "load_file",
+ .sstate = TRACE_LOAD_FILE_ENABLED,
+ .dstate = &_TRACE_LOAD_FILE_DSTATE
+};
+TraceEvent _TRACE_RUNSTATE_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "runstate_set",
+ .sstate = TRACE_RUNSTATE_SET_ENABLED,
+ .dstate = &_TRACE_RUNSTATE_SET_DSTATE
+};
+TraceEvent _TRACE_SYSTEM_WAKEUP_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "system_wakeup_request",
+ .sstate = TRACE_SYSTEM_WAKEUP_REQUEST_ENABLED,
+ .dstate = &_TRACE_SYSTEM_WAKEUP_REQUEST_DSTATE
+};
+TraceEvent _TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_system_shutdown_request",
+ .sstate = TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_ENABLED,
+ .dstate = &_TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_DSTATE
+};
+TraceEvent _TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_system_powerdown_request",
+ .sstate = TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_ENABLED,
+ .dstate = &_TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_DSTATE
+};
+TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_protocol_event_handler",
+ .sstate = TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_ENABLED,
+ .dstate = &_TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_DSTATE
+};
+TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_EMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_protocol_event_emit",
+ .sstate = TRACE_MONITOR_PROTOCOL_EVENT_EMIT_ENABLED,
+ .dstate = &_TRACE_MONITOR_PROTOCOL_EVENT_EMIT_DSTATE
+};
+TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_protocol_event_queue",
+ .sstate = TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_ENABLED,
+ .dstate = &_TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_DSTATE
+};
+TraceEvent _TRACE_HANDLE_HMP_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_hmp_command",
+ .sstate = TRACE_HANDLE_HMP_COMMAND_ENABLED,
+ .dstate = &_TRACE_HANDLE_HMP_COMMAND_DSTATE
+};
+TraceEvent _TRACE_HANDLE_QMP_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "handle_qmp_command",
+ .sstate = TRACE_HANDLE_QMP_COMMAND_ENABLED,
+ .dstate = &_TRACE_HANDLE_QMP_COMMAND_DSTATE
+};
+TraceEvent _TRACE_MONITOR_SUSPEND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_suspend",
+ .sstate = TRACE_MONITOR_SUSPEND_ENABLED,
+ .dstate = &_TRACE_MONITOR_SUSPEND_DSTATE
+};
+TraceEvent _TRACE_MONITOR_QMP_CMD_IN_BAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_qmp_cmd_in_band",
+ .sstate = TRACE_MONITOR_QMP_CMD_IN_BAND_ENABLED,
+ .dstate = &_TRACE_MONITOR_QMP_CMD_IN_BAND_DSTATE
+};
+TraceEvent _TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "monitor_qmp_cmd_out_of_band",
+ .sstate = TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_ENABLED,
+ .dstate = &_TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_DSTATE
+};
+TraceEvent _TRACE_DMA_BLK_IO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dma_blk_io",
+ .sstate = TRACE_DMA_BLK_IO_ENABLED,
+ .dstate = &_TRACE_DMA_BLK_IO_DSTATE
+};
+TraceEvent _TRACE_DMA_AIO_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dma_aio_cancel",
+ .sstate = TRACE_DMA_AIO_CANCEL_ENABLED,
+ .dstate = &_TRACE_DMA_AIO_CANCEL_DSTATE
+};
+TraceEvent _TRACE_DMA_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dma_complete",
+ .sstate = TRACE_DMA_COMPLETE_ENABLED,
+ .dstate = &_TRACE_DMA_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_DMA_BLK_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dma_blk_cb",
+ .sstate = TRACE_DMA_BLK_CB_ENABLED,
+ .dstate = &_TRACE_DMA_BLK_CB_DSTATE
+};
+TraceEvent _TRACE_DMA_MAP_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "dma_map_wait",
+ .sstate = TRACE_DMA_MAP_WAIT_ENABLED,
+ .dstate = &_TRACE_DMA_MAP_WAIT_DSTATE
+};
+TraceEvent _TRACE_FIND_RAM_OFFSET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "find_ram_offset",
+ .sstate = TRACE_FIND_RAM_OFFSET_ENABLED,
+ .dstate = &_TRACE_FIND_RAM_OFFSET_DSTATE
+};
+TraceEvent _TRACE_FIND_RAM_OFFSET_LOOP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "find_ram_offset_loop",
+ .sstate = TRACE_FIND_RAM_OFFSET_LOOP_ENABLED,
+ .dstate = &_TRACE_FIND_RAM_OFFSET_LOOP_DSTATE
+};
+TraceEvent _TRACE_RAM_BLOCK_DISCARD_RANGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ram_block_discard_range",
+ .sstate = TRACE_RAM_BLOCK_DISCARD_RANGE_ENABLED,
+ .dstate = &_TRACE_RAM_BLOCK_DISCARD_RANGE_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_OPS_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_ops_read",
+ .sstate = TRACE_MEMORY_REGION_OPS_READ_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_OPS_READ_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_OPS_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_ops_write",
+ .sstate = TRACE_MEMORY_REGION_OPS_WRITE_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_OPS_WRITE_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_SUBPAGE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_subpage_read",
+ .sstate = TRACE_MEMORY_REGION_SUBPAGE_READ_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_SUBPAGE_READ_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_SUBPAGE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_subpage_write",
+ .sstate = TRACE_MEMORY_REGION_SUBPAGE_WRITE_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_SUBPAGE_WRITE_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_TB_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_tb_read",
+ .sstate = TRACE_MEMORY_REGION_TB_READ_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_TB_READ_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_TB_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_tb_write",
+ .sstate = TRACE_MEMORY_REGION_TB_WRITE_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_TB_WRITE_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_RAM_DEVICE_READ_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_ram_device_read",
+ .sstate = TRACE_MEMORY_REGION_RAM_DEVICE_READ_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_RAM_DEVICE_READ_DSTATE
+};
+TraceEvent _TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "memory_region_ram_device_write",
+ .sstate = TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_ENABLED,
+ .dstate = &_TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_DSTATE
+};
+TraceEvent _TRACE_FLATVIEW_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flatview_new",
+ .sstate = TRACE_FLATVIEW_NEW_ENABLED,
+ .dstate = &_TRACE_FLATVIEW_NEW_DSTATE
+};
+TraceEvent _TRACE_FLATVIEW_DESTROY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flatview_destroy",
+ .sstate = TRACE_FLATVIEW_DESTROY_ENABLED,
+ .dstate = &_TRACE_FLATVIEW_DESTROY_DSTATE
+};
+TraceEvent _TRACE_FLATVIEW_DESTROY_RCU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "flatview_destroy_rcu",
+ .sstate = TRACE_FLATVIEW_DESTROY_RCU_ENABLED,
+ .dstate = &_TRACE_FLATVIEW_DESTROY_RCU_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_start",
+ .sstate = TRACE_GDBSTUB_OP_START_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_START_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_EXITING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_exiting",
+ .sstate = TRACE_GDBSTUB_OP_EXITING_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_EXITING_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_CONTINUE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_continue",
+ .sstate = TRACE_GDBSTUB_OP_CONTINUE_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_CONTINUE_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_CONTINUE_CPU_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_continue_cpu",
+ .sstate = TRACE_GDBSTUB_OP_CONTINUE_CPU_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_CONTINUE_CPU_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_STEPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_stepping",
+ .sstate = TRACE_GDBSTUB_OP_STEPPING_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_STEPPING_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_OP_EXTRA_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_op_extra_info",
+ .sstate = TRACE_GDBSTUB_OP_EXTRA_INFO_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_OP_EXTRA_INFO_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_WATCHPOINT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_watchpoint",
+ .sstate = TRACE_GDBSTUB_HIT_WATCHPOINT_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_WATCHPOINT_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_INTERNAL_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_internal_error",
+ .sstate = TRACE_GDBSTUB_HIT_INTERNAL_ERROR_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_INTERNAL_ERROR_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_BREAK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_break",
+ .sstate = TRACE_GDBSTUB_HIT_BREAK_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_BREAK_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_PAUSED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_paused",
+ .sstate = TRACE_GDBSTUB_HIT_PAUSED_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_PAUSED_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_SHUTDOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_shutdown",
+ .sstate = TRACE_GDBSTUB_HIT_SHUTDOWN_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_SHUTDOWN_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_IO_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_io_error",
+ .sstate = TRACE_GDBSTUB_HIT_IO_ERROR_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_IO_ERROR_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_WATCHDOG_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_watchdog",
+ .sstate = TRACE_GDBSTUB_HIT_WATCHDOG_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_WATCHDOG_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_HIT_UNKNOWN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_hit_unknown",
+ .sstate = TRACE_GDBSTUB_HIT_UNKNOWN_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_HIT_UNKNOWN_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_IO_REPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_io_reply",
+ .sstate = TRACE_GDBSTUB_IO_REPLY_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_IO_REPLY_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_IO_BINARYREPLY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_io_binaryreply",
+ .sstate = TRACE_GDBSTUB_IO_BINARYREPLY_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_IO_BINARYREPLY_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_IO_COMMAND_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_io_command",
+ .sstate = TRACE_GDBSTUB_IO_COMMAND_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_IO_COMMAND_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_IO_GOT_ACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_io_got_ack",
+ .sstate = TRACE_GDBSTUB_IO_GOT_ACK_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_IO_GOT_ACK_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_IO_GOT_UNEXPECTED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_io_got_unexpected",
+ .sstate = TRACE_GDBSTUB_IO_GOT_UNEXPECTED_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_IO_GOT_UNEXPECTED_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_GOT_NACK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_got_nack",
+ .sstate = TRACE_GDBSTUB_ERR_GOT_NACK_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_GOT_NACK_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_GARBAGE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_garbage",
+ .sstate = TRACE_GDBSTUB_ERR_GARBAGE_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_GARBAGE_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_OVERRUN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_overrun",
+ .sstate = TRACE_GDBSTUB_ERR_OVERRUN_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_OVERRUN_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_INVALID_REPEAT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_invalid_repeat",
+ .sstate = TRACE_GDBSTUB_ERR_INVALID_REPEAT_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_INVALID_REPEAT_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_INVALID_RLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_invalid_rle",
+ .sstate = TRACE_GDBSTUB_ERR_INVALID_RLE_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_INVALID_RLE_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_checksum_invalid",
+ .sstate = TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_DSTATE
+};
+TraceEvent _TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gdbstub_err_checksum_incorrect",
+ .sstate = TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_ENABLED,
+ .dstate = &_TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_DSTATE
+};
+TraceEvent _TRACE_GUEST_CPU_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_cpu_enter",
+ .sstate = TRACE_GUEST_CPU_ENTER_ENABLED,
+ .dstate = &_TRACE_GUEST_CPU_ENTER_DSTATE
+};
+TraceEvent _TRACE_GUEST_CPU_EXIT_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_cpu_exit",
+ .sstate = TRACE_GUEST_CPU_EXIT_ENABLED,
+ .dstate = &_TRACE_GUEST_CPU_EXIT_DSTATE
+};
+TraceEvent _TRACE_GUEST_CPU_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_cpu_reset",
+ .sstate = TRACE_GUEST_CPU_RESET_ENABLED,
+ .dstate = &_TRACE_GUEST_CPU_RESET_DSTATE
+};
+TraceEvent _TRACE_GUEST_MEM_BEFORE_TRANS_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_mem_before_trans",
+ .sstate = TRACE_GUEST_MEM_BEFORE_TRANS_ENABLED,
+ .dstate = &_TRACE_GUEST_MEM_BEFORE_TRANS_DSTATE
+};
+TraceEvent _TRACE_GUEST_MEM_BEFORE_EXEC_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_mem_before_exec",
+ .sstate = TRACE_GUEST_MEM_BEFORE_EXEC_ENABLED,
+ .dstate = &_TRACE_GUEST_MEM_BEFORE_EXEC_DSTATE
+};
+TraceEvent _TRACE_GUEST_USER_SYSCALL_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_user_syscall",
+ .sstate = TRACE_GUEST_USER_SYSCALL_ENABLED,
+ .dstate = &_TRACE_GUEST_USER_SYSCALL_DSTATE
+};
+TraceEvent _TRACE_GUEST_USER_SYSCALL_RET_EVENT = {
+ .id = 0,
+ .vcpu_id = 0,
+ .name = "guest_user_syscall_ret",
+ .sstate = TRACE_GUEST_USER_SYSCALL_RET_ENABLED,
+ .dstate = &_TRACE_GUEST_USER_SYSCALL_RET_DSTATE
+};
+TraceEvent *root_trace_events[] = {
+ &_TRACE_CPU_IN_EVENT,
+ &_TRACE_CPU_OUT_EVENT,
+ &_TRACE_BALLOON_EVENT_EVENT,
+ &_TRACE_VM_STATE_NOTIFY_EVENT,
+ &_TRACE_LOAD_FILE_EVENT,
+ &_TRACE_RUNSTATE_SET_EVENT,
+ &_TRACE_SYSTEM_WAKEUP_REQUEST_EVENT,
+ &_TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_EVENT,
+ &_TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_EVENT,
+ &_TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_EVENT,
+ &_TRACE_MONITOR_PROTOCOL_EVENT_EMIT_EVENT,
+ &_TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_EVENT,
+ &_TRACE_HANDLE_HMP_COMMAND_EVENT,
+ &_TRACE_HANDLE_QMP_COMMAND_EVENT,
+ &_TRACE_MONITOR_SUSPEND_EVENT,
+ &_TRACE_MONITOR_QMP_CMD_IN_BAND_EVENT,
+ &_TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_EVENT,
+ &_TRACE_DMA_BLK_IO_EVENT,
+ &_TRACE_DMA_AIO_CANCEL_EVENT,
+ &_TRACE_DMA_COMPLETE_EVENT,
+ &_TRACE_DMA_BLK_CB_EVENT,
+ &_TRACE_DMA_MAP_WAIT_EVENT,
+ &_TRACE_FIND_RAM_OFFSET_EVENT,
+ &_TRACE_FIND_RAM_OFFSET_LOOP_EVENT,
+ &_TRACE_RAM_BLOCK_DISCARD_RANGE_EVENT,
+ &_TRACE_MEMORY_REGION_OPS_READ_EVENT,
+ &_TRACE_MEMORY_REGION_OPS_WRITE_EVENT,
+ &_TRACE_MEMORY_REGION_SUBPAGE_READ_EVENT,
+ &_TRACE_MEMORY_REGION_SUBPAGE_WRITE_EVENT,
+ &_TRACE_MEMORY_REGION_TB_READ_EVENT,
+ &_TRACE_MEMORY_REGION_TB_WRITE_EVENT,
+ &_TRACE_MEMORY_REGION_RAM_DEVICE_READ_EVENT,
+ &_TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_EVENT,
+ &_TRACE_FLATVIEW_NEW_EVENT,
+ &_TRACE_FLATVIEW_DESTROY_EVENT,
+ &_TRACE_FLATVIEW_DESTROY_RCU_EVENT,
+ &_TRACE_GDBSTUB_OP_START_EVENT,
+ &_TRACE_GDBSTUB_OP_EXITING_EVENT,
+ &_TRACE_GDBSTUB_OP_CONTINUE_EVENT,
+ &_TRACE_GDBSTUB_OP_CONTINUE_CPU_EVENT,
+ &_TRACE_GDBSTUB_OP_STEPPING_EVENT,
+ &_TRACE_GDBSTUB_OP_EXTRA_INFO_EVENT,
+ &_TRACE_GDBSTUB_HIT_WATCHPOINT_EVENT,
+ &_TRACE_GDBSTUB_HIT_INTERNAL_ERROR_EVENT,
+ &_TRACE_GDBSTUB_HIT_BREAK_EVENT,
+ &_TRACE_GDBSTUB_HIT_PAUSED_EVENT,
+ &_TRACE_GDBSTUB_HIT_SHUTDOWN_EVENT,
+ &_TRACE_GDBSTUB_HIT_IO_ERROR_EVENT,
+ &_TRACE_GDBSTUB_HIT_WATCHDOG_EVENT,
+ &_TRACE_GDBSTUB_HIT_UNKNOWN_EVENT,
+ &_TRACE_GDBSTUB_IO_REPLY_EVENT,
+ &_TRACE_GDBSTUB_IO_BINARYREPLY_EVENT,
+ &_TRACE_GDBSTUB_IO_COMMAND_EVENT,
+ &_TRACE_GDBSTUB_IO_GOT_ACK_EVENT,
+ &_TRACE_GDBSTUB_IO_GOT_UNEXPECTED_EVENT,
+ &_TRACE_GDBSTUB_ERR_GOT_NACK_EVENT,
+ &_TRACE_GDBSTUB_ERR_GARBAGE_EVENT,
+ &_TRACE_GDBSTUB_ERR_OVERRUN_EVENT,
+ &_TRACE_GDBSTUB_ERR_INVALID_REPEAT_EVENT,
+ &_TRACE_GDBSTUB_ERR_INVALID_RLE_EVENT,
+ &_TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_EVENT,
+ &_TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_EVENT,
+ &_TRACE_GUEST_CPU_ENTER_EVENT,
+ &_TRACE_GUEST_CPU_EXIT_EVENT,
+ &_TRACE_GUEST_CPU_RESET_EVENT,
+ &_TRACE_GUEST_MEM_BEFORE_TRANS_EVENT,
+ &_TRACE_GUEST_MEM_BEFORE_EXEC_EVENT,
+ &_TRACE_GUEST_USER_SYSCALL_EVENT,
+ &_TRACE_GUEST_USER_SYSCALL_RET_EVENT,
+ NULL,
+};
+
+static void trace_root_register_events(void)
+{
+ trace_event_register_group(root_trace_events);
+}
+trace_init(trace_root_register_events)
diff --git a/qemu2-auto-generated/trace-root.h b/qemu2-auto-generated/trace-root.h
new file mode 100644
index 0000000000..4a14f5f895
--- /dev/null
+++ b/qemu2-auto-generated/trace-root.h
@@ -0,0 +1,1183 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_ROOT_GENERATED_TRACERS_H
+#define TRACE_ROOT_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CPU_IN_EVENT;
+extern TraceEvent _TRACE_CPU_OUT_EVENT;
+extern TraceEvent _TRACE_BALLOON_EVENT_EVENT;
+extern TraceEvent _TRACE_VM_STATE_NOTIFY_EVENT;
+extern TraceEvent _TRACE_LOAD_FILE_EVENT;
+extern TraceEvent _TRACE_RUNSTATE_SET_EVENT;
+extern TraceEvent _TRACE_SYSTEM_WAKEUP_REQUEST_EVENT;
+extern TraceEvent _TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_EVENT;
+extern TraceEvent _TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_EVENT;
+extern TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_EVENT;
+extern TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_EMIT_EVENT;
+extern TraceEvent _TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_EVENT;
+extern TraceEvent _TRACE_HANDLE_HMP_COMMAND_EVENT;
+extern TraceEvent _TRACE_HANDLE_QMP_COMMAND_EVENT;
+extern TraceEvent _TRACE_MONITOR_SUSPEND_EVENT;
+extern TraceEvent _TRACE_MONITOR_QMP_CMD_IN_BAND_EVENT;
+extern TraceEvent _TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_EVENT;
+extern TraceEvent _TRACE_DMA_BLK_IO_EVENT;
+extern TraceEvent _TRACE_DMA_AIO_CANCEL_EVENT;
+extern TraceEvent _TRACE_DMA_COMPLETE_EVENT;
+extern TraceEvent _TRACE_DMA_BLK_CB_EVENT;
+extern TraceEvent _TRACE_DMA_MAP_WAIT_EVENT;
+extern TraceEvent _TRACE_FIND_RAM_OFFSET_EVENT;
+extern TraceEvent _TRACE_FIND_RAM_OFFSET_LOOP_EVENT;
+extern TraceEvent _TRACE_RAM_BLOCK_DISCARD_RANGE_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_OPS_READ_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_OPS_WRITE_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_SUBPAGE_READ_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_SUBPAGE_WRITE_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_TB_READ_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_TB_WRITE_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_RAM_DEVICE_READ_EVENT;
+extern TraceEvent _TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_EVENT;
+extern TraceEvent _TRACE_FLATVIEW_NEW_EVENT;
+extern TraceEvent _TRACE_FLATVIEW_DESTROY_EVENT;
+extern TraceEvent _TRACE_FLATVIEW_DESTROY_RCU_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_START_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_EXITING_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_CONTINUE_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_CONTINUE_CPU_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_STEPPING_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_OP_EXTRA_INFO_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_WATCHPOINT_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_INTERNAL_ERROR_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_BREAK_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_PAUSED_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_SHUTDOWN_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_IO_ERROR_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_WATCHDOG_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_HIT_UNKNOWN_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_IO_REPLY_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_IO_BINARYREPLY_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_IO_COMMAND_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_IO_GOT_ACK_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_IO_GOT_UNEXPECTED_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_GOT_NACK_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_GARBAGE_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_OVERRUN_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_INVALID_REPEAT_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_INVALID_RLE_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_EVENT;
+extern TraceEvent _TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_EVENT;
+extern TraceEvent _TRACE_GUEST_CPU_ENTER_EVENT;
+extern TraceEvent _TRACE_GUEST_CPU_EXIT_EVENT;
+extern TraceEvent _TRACE_GUEST_CPU_RESET_EVENT;
+extern TraceEvent _TRACE_GUEST_MEM_BEFORE_TRANS_EVENT;
+extern TraceEvent _TRACE_GUEST_MEM_BEFORE_EXEC_EVENT;
+extern TraceEvent _TRACE_GUEST_USER_SYSCALL_EVENT;
+extern TraceEvent _TRACE_GUEST_USER_SYSCALL_RET_EVENT;
+extern uint16_t _TRACE_CPU_IN_DSTATE;
+extern uint16_t _TRACE_CPU_OUT_DSTATE;
+extern uint16_t _TRACE_BALLOON_EVENT_DSTATE;
+extern uint16_t _TRACE_VM_STATE_NOTIFY_DSTATE;
+extern uint16_t _TRACE_LOAD_FILE_DSTATE;
+extern uint16_t _TRACE_RUNSTATE_SET_DSTATE;
+extern uint16_t _TRACE_SYSTEM_WAKEUP_REQUEST_DSTATE;
+extern uint16_t _TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_DSTATE;
+extern uint16_t _TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_DSTATE;
+extern uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_DSTATE;
+extern uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_EMIT_DSTATE;
+extern uint16_t _TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_DSTATE;
+extern uint16_t _TRACE_HANDLE_HMP_COMMAND_DSTATE;
+extern uint16_t _TRACE_HANDLE_QMP_COMMAND_DSTATE;
+extern uint16_t _TRACE_MONITOR_SUSPEND_DSTATE;
+extern uint16_t _TRACE_MONITOR_QMP_CMD_IN_BAND_DSTATE;
+extern uint16_t _TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_DSTATE;
+extern uint16_t _TRACE_DMA_BLK_IO_DSTATE;
+extern uint16_t _TRACE_DMA_AIO_CANCEL_DSTATE;
+extern uint16_t _TRACE_DMA_COMPLETE_DSTATE;
+extern uint16_t _TRACE_DMA_BLK_CB_DSTATE;
+extern uint16_t _TRACE_DMA_MAP_WAIT_DSTATE;
+extern uint16_t _TRACE_FIND_RAM_OFFSET_DSTATE;
+extern uint16_t _TRACE_FIND_RAM_OFFSET_LOOP_DSTATE;
+extern uint16_t _TRACE_RAM_BLOCK_DISCARD_RANGE_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_OPS_READ_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_OPS_WRITE_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_SUBPAGE_READ_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_SUBPAGE_WRITE_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_TB_READ_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_TB_WRITE_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_RAM_DEVICE_READ_DSTATE;
+extern uint16_t _TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_DSTATE;
+extern uint16_t _TRACE_FLATVIEW_NEW_DSTATE;
+extern uint16_t _TRACE_FLATVIEW_DESTROY_DSTATE;
+extern uint16_t _TRACE_FLATVIEW_DESTROY_RCU_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_START_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_EXITING_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_CONTINUE_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_CONTINUE_CPU_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_STEPPING_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_OP_EXTRA_INFO_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_WATCHPOINT_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_INTERNAL_ERROR_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_BREAK_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_PAUSED_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_SHUTDOWN_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_IO_ERROR_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_WATCHDOG_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_HIT_UNKNOWN_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_IO_REPLY_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_IO_BINARYREPLY_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_IO_COMMAND_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_IO_GOT_ACK_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_IO_GOT_UNEXPECTED_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_GOT_NACK_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_GARBAGE_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_OVERRUN_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_INVALID_REPEAT_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_INVALID_RLE_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_DSTATE;
+extern uint16_t _TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_DSTATE;
+extern uint16_t _TRACE_GUEST_CPU_ENTER_DSTATE;
+extern uint16_t _TRACE_GUEST_CPU_EXIT_DSTATE;
+extern uint16_t _TRACE_GUEST_CPU_RESET_DSTATE;
+extern uint16_t _TRACE_GUEST_MEM_BEFORE_TRANS_DSTATE;
+extern uint16_t _TRACE_GUEST_MEM_BEFORE_EXEC_DSTATE;
+extern uint16_t _TRACE_GUEST_USER_SYSCALL_DSTATE;
+extern uint16_t _TRACE_GUEST_USER_SYSCALL_RET_DSTATE;
+#define TRACE_CPU_IN_ENABLED 1
+#define TRACE_CPU_OUT_ENABLED 1
+#define TRACE_BALLOON_EVENT_ENABLED 1
+#define TRACE_VM_STATE_NOTIFY_ENABLED 1
+#define TRACE_LOAD_FILE_ENABLED 1
+#define TRACE_RUNSTATE_SET_ENABLED 1
+#define TRACE_SYSTEM_WAKEUP_REQUEST_ENABLED 1
+#define TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_ENABLED 1
+#define TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_ENABLED 1
+#define TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_ENABLED 1
+#define TRACE_MONITOR_PROTOCOL_EVENT_EMIT_ENABLED 1
+#define TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_ENABLED 1
+#define TRACE_HANDLE_HMP_COMMAND_ENABLED 1
+#define TRACE_HANDLE_QMP_COMMAND_ENABLED 1
+#define TRACE_MONITOR_SUSPEND_ENABLED 1
+#define TRACE_MONITOR_QMP_CMD_IN_BAND_ENABLED 1
+#define TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_ENABLED 1
+#define TRACE_DMA_BLK_IO_ENABLED 1
+#define TRACE_DMA_AIO_CANCEL_ENABLED 1
+#define TRACE_DMA_COMPLETE_ENABLED 1
+#define TRACE_DMA_BLK_CB_ENABLED 1
+#define TRACE_DMA_MAP_WAIT_ENABLED 1
+#define TRACE_FIND_RAM_OFFSET_ENABLED 1
+#define TRACE_FIND_RAM_OFFSET_LOOP_ENABLED 1
+#define TRACE_RAM_BLOCK_DISCARD_RANGE_ENABLED 1
+#define TRACE_MEMORY_REGION_OPS_READ_ENABLED 1
+#define TRACE_MEMORY_REGION_OPS_WRITE_ENABLED 1
+#define TRACE_MEMORY_REGION_SUBPAGE_READ_ENABLED 1
+#define TRACE_MEMORY_REGION_SUBPAGE_WRITE_ENABLED 1
+#define TRACE_MEMORY_REGION_TB_READ_ENABLED 1
+#define TRACE_MEMORY_REGION_TB_WRITE_ENABLED 1
+#define TRACE_MEMORY_REGION_RAM_DEVICE_READ_ENABLED 1
+#define TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_ENABLED 1
+#define TRACE_FLATVIEW_NEW_ENABLED 1
+#define TRACE_FLATVIEW_DESTROY_ENABLED 1
+#define TRACE_FLATVIEW_DESTROY_RCU_ENABLED 1
+#define TRACE_GDBSTUB_OP_START_ENABLED 1
+#define TRACE_GDBSTUB_OP_EXITING_ENABLED 1
+#define TRACE_GDBSTUB_OP_CONTINUE_ENABLED 1
+#define TRACE_GDBSTUB_OP_CONTINUE_CPU_ENABLED 1
+#define TRACE_GDBSTUB_OP_STEPPING_ENABLED 1
+#define TRACE_GDBSTUB_OP_EXTRA_INFO_ENABLED 1
+#define TRACE_GDBSTUB_HIT_WATCHPOINT_ENABLED 1
+#define TRACE_GDBSTUB_HIT_INTERNAL_ERROR_ENABLED 1
+#define TRACE_GDBSTUB_HIT_BREAK_ENABLED 1
+#define TRACE_GDBSTUB_HIT_PAUSED_ENABLED 1
+#define TRACE_GDBSTUB_HIT_SHUTDOWN_ENABLED 1
+#define TRACE_GDBSTUB_HIT_IO_ERROR_ENABLED 1
+#define TRACE_GDBSTUB_HIT_WATCHDOG_ENABLED 1
+#define TRACE_GDBSTUB_HIT_UNKNOWN_ENABLED 1
+#define TRACE_GDBSTUB_IO_REPLY_ENABLED 1
+#define TRACE_GDBSTUB_IO_BINARYREPLY_ENABLED 1
+#define TRACE_GDBSTUB_IO_COMMAND_ENABLED 1
+#define TRACE_GDBSTUB_IO_GOT_ACK_ENABLED 1
+#define TRACE_GDBSTUB_IO_GOT_UNEXPECTED_ENABLED 1
+#define TRACE_GDBSTUB_ERR_GOT_NACK_ENABLED 1
+#define TRACE_GDBSTUB_ERR_GARBAGE_ENABLED 1
+#define TRACE_GDBSTUB_ERR_OVERRUN_ENABLED 1
+#define TRACE_GDBSTUB_ERR_INVALID_REPEAT_ENABLED 1
+#define TRACE_GDBSTUB_ERR_INVALID_RLE_ENABLED 1
+#define TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_ENABLED 1
+#define TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_ENABLED 1
+#define TRACE_GUEST_CPU_ENTER_ENABLED 1
+#define TRACE_GUEST_CPU_EXIT_ENABLED 1
+#define TRACE_GUEST_CPU_RESET_ENABLED 1
+#define TRACE_GUEST_MEM_BEFORE_TRANS_ENABLED 1
+#define TRACE_GUEST_MEM_BEFORE_ENABLED 1
+#define TRACE_GUEST_MEM_BEFORE_EXEC_ENABLED 1
+#define TRACE_GUEST_USER_SYSCALL_ENABLED 1
+#define TRACE_GUEST_USER_SYSCALL_RET_ENABLED 1
+
+#define TRACE_CPU_IN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_in(unsigned int addr, char size, unsigned int val)
+{
+}
+
+static inline void trace_cpu_in(unsigned int addr, char size, unsigned int val)
+{
+ if (true) {
+ _nocheck__trace_cpu_in(addr, size, val);
+ }
+}
+
+#define TRACE_CPU_OUT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_cpu_out(unsigned int addr, char size, unsigned int val)
+{
+}
+
+static inline void trace_cpu_out(unsigned int addr, char size, unsigned int val)
+{
+ if (true) {
+ _nocheck__trace_cpu_out(addr, size, val);
+ }
+}
+
+#define TRACE_BALLOON_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_balloon_event(void * opaque, unsigned long addr)
+{
+}
+
+static inline void trace_balloon_event(void * opaque, unsigned long addr)
+{
+ if (true) {
+ _nocheck__trace_balloon_event(opaque, addr);
+ }
+}
+
+#define TRACE_VM_STATE_NOTIFY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vm_state_notify(int running, int reason)
+{
+}
+
+static inline void trace_vm_state_notify(int running, int reason)
+{
+ if (true) {
+ _nocheck__trace_vm_state_notify(running, reason);
+ }
+}
+
+#define TRACE_LOAD_FILE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_load_file(const char * name, const char * path)
+{
+}
+
+static inline void trace_load_file(const char * name, const char * path)
+{
+ if (true) {
+ _nocheck__trace_load_file(name, path);
+ }
+}
+
+#define TRACE_RUNSTATE_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_runstate_set(int new_state)
+{
+}
+
+static inline void trace_runstate_set(int new_state)
+{
+ if (true) {
+ _nocheck__trace_runstate_set(new_state);
+ }
+}
+
+#define TRACE_SYSTEM_WAKEUP_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_system_wakeup_request(int reason)
+{
+}
+
+static inline void trace_system_wakeup_request(int reason)
+{
+ if (true) {
+ _nocheck__trace_system_wakeup_request(reason);
+ }
+}
+
+#define TRACE_QEMU_SYSTEM_SHUTDOWN_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_system_shutdown_request(int reason)
+{
+}
+
+static inline void trace_qemu_system_shutdown_request(int reason)
+{
+ if (true) {
+ _nocheck__trace_qemu_system_shutdown_request(reason);
+ }
+}
+
+#define TRACE_QEMU_SYSTEM_POWERDOWN_REQUEST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_system_powerdown_request(void)
+{
+}
+
+static inline void trace_qemu_system_powerdown_request(void)
+{
+ if (true) {
+ _nocheck__trace_qemu_system_powerdown_request();
+ }
+}
+
+#define TRACE_MONITOR_PROTOCOL_EVENT_HANDLER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_protocol_event_handler(uint32_t event, void * qdict)
+{
+}
+
+static inline void trace_monitor_protocol_event_handler(uint32_t event, void * qdict)
+{
+ if (true) {
+ _nocheck__trace_monitor_protocol_event_handler(event, qdict);
+ }
+}
+
+#define TRACE_MONITOR_PROTOCOL_EVENT_EMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_protocol_event_emit(uint32_t event, void * data)
+{
+}
+
+static inline void trace_monitor_protocol_event_emit(uint32_t event, void * data)
+{
+ if (true) {
+ _nocheck__trace_monitor_protocol_event_emit(event, data);
+ }
+}
+
+#define TRACE_MONITOR_PROTOCOL_EVENT_QUEUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_protocol_event_queue(uint32_t event, void * qdict, uint64_t rate)
+{
+}
+
+static inline void trace_monitor_protocol_event_queue(uint32_t event, void * qdict, uint64_t rate)
+{
+ if (true) {
+ _nocheck__trace_monitor_protocol_event_queue(event, qdict, rate);
+ }
+}
+
+#define TRACE_HANDLE_HMP_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_hmp_command(void * mon, const char * cmdline)
+{
+}
+
+static inline void trace_handle_hmp_command(void * mon, const char * cmdline)
+{
+ if (true) {
+ _nocheck__trace_handle_hmp_command(mon, cmdline);
+ }
+}
+
+#define TRACE_HANDLE_QMP_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_handle_qmp_command(void * mon, const char * req)
+{
+}
+
+static inline void trace_handle_qmp_command(void * mon, const char * req)
+{
+ if (true) {
+ _nocheck__trace_handle_qmp_command(mon, req);
+ }
+}
+
+#define TRACE_MONITOR_SUSPEND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_suspend(void * ptr, int cnt)
+{
+}
+
+static inline void trace_monitor_suspend(void * ptr, int cnt)
+{
+ if (true) {
+ _nocheck__trace_monitor_suspend(ptr, cnt);
+ }
+}
+
+#define TRACE_MONITOR_QMP_CMD_IN_BAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_qmp_cmd_in_band(const char * id)
+{
+}
+
+static inline void trace_monitor_qmp_cmd_in_band(const char * id)
+{
+ if (true) {
+ _nocheck__trace_monitor_qmp_cmd_in_band(id);
+ }
+}
+
+#define TRACE_MONITOR_QMP_CMD_OUT_OF_BAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_monitor_qmp_cmd_out_of_band(const char * id)
+{
+}
+
+static inline void trace_monitor_qmp_cmd_out_of_band(const char * id)
+{
+ if (true) {
+ _nocheck__trace_monitor_qmp_cmd_out_of_band(id);
+ }
+}
+
+#define TRACE_DMA_BLK_IO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dma_blk_io(void * dbs, void * bs, int64_t offset, bool to_dev)
+{
+}
+
+static inline void trace_dma_blk_io(void * dbs, void * bs, int64_t offset, bool to_dev)
+{
+ if (true) {
+ _nocheck__trace_dma_blk_io(dbs, bs, offset, to_dev);
+ }
+}
+
+#define TRACE_DMA_AIO_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dma_aio_cancel(void * dbs)
+{
+}
+
+static inline void trace_dma_aio_cancel(void * dbs)
+{
+ if (true) {
+ _nocheck__trace_dma_aio_cancel(dbs);
+ }
+}
+
+#define TRACE_DMA_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dma_complete(void * dbs, int ret, void * cb)
+{
+}
+
+static inline void trace_dma_complete(void * dbs, int ret, void * cb)
+{
+ if (true) {
+ _nocheck__trace_dma_complete(dbs, ret, cb);
+ }
+}
+
+#define TRACE_DMA_BLK_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dma_blk_cb(void * dbs, int ret)
+{
+}
+
+static inline void trace_dma_blk_cb(void * dbs, int ret)
+{
+ if (true) {
+ _nocheck__trace_dma_blk_cb(dbs, ret);
+ }
+}
+
+#define TRACE_DMA_MAP_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_dma_map_wait(void * dbs)
+{
+}
+
+static inline void trace_dma_map_wait(void * dbs)
+{
+ if (true) {
+ _nocheck__trace_dma_map_wait(dbs);
+ }
+}
+
+#define TRACE_FIND_RAM_OFFSET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_find_ram_offset(uint64_t size, uint64_t offset)
+{
+}
+
+static inline void trace_find_ram_offset(uint64_t size, uint64_t offset)
+{
+ if (true) {
+ _nocheck__trace_find_ram_offset(size, offset);
+ }
+}
+
+#define TRACE_FIND_RAM_OFFSET_LOOP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_find_ram_offset_loop(uint64_t size, uint64_t candidate, uint64_t offset, uint64_t next, uint64_t mingap)
+{
+}
+
+static inline void trace_find_ram_offset_loop(uint64_t size, uint64_t candidate, uint64_t offset, uint64_t next, uint64_t mingap)
+{
+ if (true) {
+ _nocheck__trace_find_ram_offset_loop(size, candidate, offset, next, mingap);
+ }
+}
+
+#define TRACE_RAM_BLOCK_DISCARD_RANGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ram_block_discard_range(const char * rbname, void * hva, size_t length, bool need_madvise, bool need_fallocate, int ret)
+{
+}
+
+static inline void trace_ram_block_discard_range(const char * rbname, void * hva, size_t length, bool need_madvise, bool need_fallocate, int ret)
+{
+ if (true) {
+ _nocheck__trace_ram_block_discard_range(rbname, hva, length, need_madvise, need_fallocate, ret);
+ }
+}
+
+#define TRACE_MEMORY_REGION_OPS_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_ops_read(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_ops_read(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_ops_read(cpu_index, mr, addr, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_OPS_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_ops_write(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_ops_write(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_ops_write(cpu_index, mr, addr, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_SUBPAGE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_subpage_read(int cpu_index, void * mr, uint64_t offset, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_subpage_read(int cpu_index, void * mr, uint64_t offset, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_subpage_read(cpu_index, mr, offset, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_SUBPAGE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_subpage_write(int cpu_index, void * mr, uint64_t offset, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_subpage_write(int cpu_index, void * mr, uint64_t offset, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_subpage_write(cpu_index, mr, offset, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_TB_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_tb_read(int cpu_index, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_tb_read(int cpu_index, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_tb_read(cpu_index, addr, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_TB_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_tb_write(int cpu_index, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_tb_write(int cpu_index, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_tb_write(cpu_index, addr, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_RAM_DEVICE_READ_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_ram_device_read(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_ram_device_read(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_ram_device_read(cpu_index, mr, addr, value, size);
+ }
+}
+
+#define TRACE_MEMORY_REGION_RAM_DEVICE_WRITE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_memory_region_ram_device_write(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+}
+
+static inline void trace_memory_region_ram_device_write(int cpu_index, void * mr, uint64_t addr, uint64_t value, unsigned size)
+{
+ if (true) {
+ _nocheck__trace_memory_region_ram_device_write(cpu_index, mr, addr, value, size);
+ }
+}
+
+#define TRACE_FLATVIEW_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flatview_new(void * view, void * root)
+{
+}
+
+static inline void trace_flatview_new(void * view, void * root)
+{
+ if (true) {
+ _nocheck__trace_flatview_new(view, root);
+ }
+}
+
+#define TRACE_FLATVIEW_DESTROY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flatview_destroy(void * view, void * root)
+{
+}
+
+static inline void trace_flatview_destroy(void * view, void * root)
+{
+ if (true) {
+ _nocheck__trace_flatview_destroy(view, root);
+ }
+}
+
+#define TRACE_FLATVIEW_DESTROY_RCU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_flatview_destroy_rcu(void * view, void * root)
+{
+}
+
+static inline void trace_flatview_destroy_rcu(void * view, void * root)
+{
+ if (true) {
+ _nocheck__trace_flatview_destroy_rcu(view, root);
+ }
+}
+
+#define TRACE_GDBSTUB_OP_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_start(const char * device)
+{
+}
+
+static inline void trace_gdbstub_op_start(const char * device)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_start(device);
+ }
+}
+
+#define TRACE_GDBSTUB_OP_EXITING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_exiting(uint8_t code)
+{
+}
+
+static inline void trace_gdbstub_op_exiting(uint8_t code)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_exiting(code);
+ }
+}
+
+#define TRACE_GDBSTUB_OP_CONTINUE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_continue(void)
+{
+}
+
+static inline void trace_gdbstub_op_continue(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_continue();
+ }
+}
+
+#define TRACE_GDBSTUB_OP_CONTINUE_CPU_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_continue_cpu(int cpu_index)
+{
+}
+
+static inline void trace_gdbstub_op_continue_cpu(int cpu_index)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_continue_cpu(cpu_index);
+ }
+}
+
+#define TRACE_GDBSTUB_OP_STEPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_stepping(int cpu_index)
+{
+}
+
+static inline void trace_gdbstub_op_stepping(int cpu_index)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_stepping(cpu_index);
+ }
+}
+
+#define TRACE_GDBSTUB_OP_EXTRA_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_op_extra_info(const char * info)
+{
+}
+
+static inline void trace_gdbstub_op_extra_info(const char * info)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_op_extra_info(info);
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_WATCHPOINT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_watchpoint(const char * type, int cpu_gdb_index, uint64_t vaddr)
+{
+}
+
+static inline void trace_gdbstub_hit_watchpoint(const char * type, int cpu_gdb_index, uint64_t vaddr)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_watchpoint(type, cpu_gdb_index, vaddr);
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_INTERNAL_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_internal_error(void)
+{
+}
+
+static inline void trace_gdbstub_hit_internal_error(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_internal_error();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_BREAK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_break(void)
+{
+}
+
+static inline void trace_gdbstub_hit_break(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_break();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_PAUSED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_paused(void)
+{
+}
+
+static inline void trace_gdbstub_hit_paused(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_paused();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_SHUTDOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_shutdown(void)
+{
+}
+
+static inline void trace_gdbstub_hit_shutdown(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_shutdown();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_IO_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_io_error(void)
+{
+}
+
+static inline void trace_gdbstub_hit_io_error(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_io_error();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_WATCHDOG_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_watchdog(void)
+{
+}
+
+static inline void trace_gdbstub_hit_watchdog(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_watchdog();
+ }
+}
+
+#define TRACE_GDBSTUB_HIT_UNKNOWN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_hit_unknown(int state)
+{
+}
+
+static inline void trace_gdbstub_hit_unknown(int state)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_hit_unknown(state);
+ }
+}
+
+#define TRACE_GDBSTUB_IO_REPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_io_reply(const char * message)
+{
+}
+
+static inline void trace_gdbstub_io_reply(const char * message)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_io_reply(message);
+ }
+}
+
+#define TRACE_GDBSTUB_IO_BINARYREPLY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_io_binaryreply(size_t ofs, const char * line)
+{
+}
+
+static inline void trace_gdbstub_io_binaryreply(size_t ofs, const char * line)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_io_binaryreply(ofs, line);
+ }
+}
+
+#define TRACE_GDBSTUB_IO_COMMAND_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_io_command(const char * command)
+{
+}
+
+static inline void trace_gdbstub_io_command(const char * command)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_io_command(command);
+ }
+}
+
+#define TRACE_GDBSTUB_IO_GOT_ACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_io_got_ack(void)
+{
+}
+
+static inline void trace_gdbstub_io_got_ack(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_io_got_ack();
+ }
+}
+
+#define TRACE_GDBSTUB_IO_GOT_UNEXPECTED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_io_got_unexpected(uint8_t ch)
+{
+}
+
+static inline void trace_gdbstub_io_got_unexpected(uint8_t ch)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_io_got_unexpected(ch);
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_GOT_NACK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_got_nack(void)
+{
+}
+
+static inline void trace_gdbstub_err_got_nack(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_got_nack();
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_GARBAGE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_garbage(uint8_t ch)
+{
+}
+
+static inline void trace_gdbstub_err_garbage(uint8_t ch)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_garbage(ch);
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_OVERRUN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_overrun(void)
+{
+}
+
+static inline void trace_gdbstub_err_overrun(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_overrun();
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_INVALID_REPEAT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_invalid_repeat(uint8_t ch)
+{
+}
+
+static inline void trace_gdbstub_err_invalid_repeat(uint8_t ch)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_invalid_repeat(ch);
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_INVALID_RLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_invalid_rle(void)
+{
+}
+
+static inline void trace_gdbstub_err_invalid_rle(void)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_invalid_rle();
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_CHECKSUM_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_checksum_invalid(uint8_t ch)
+{
+}
+
+static inline void trace_gdbstub_err_checksum_invalid(uint8_t ch)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_checksum_invalid(ch);
+ }
+}
+
+#define TRACE_GDBSTUB_ERR_CHECKSUM_INCORRECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got)
+{
+}
+
+static inline void trace_gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got)
+{
+ if (true) {
+ _nocheck__trace_gdbstub_err_checksum_incorrect(expected, got);
+ }
+}
+
+#define TRACE_GUEST_CPU_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_cpu_enter(CPUState * __cpu)
+{
+}
+
+static inline void trace_guest_cpu_enter(CPUState * __cpu)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_CPU_ENTER)) {
+ _nocheck__trace_guest_cpu_enter(__cpu);
+ }
+}
+
+#define TRACE_GUEST_CPU_EXIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_cpu_exit(CPUState * __cpu)
+{
+}
+
+static inline void trace_guest_cpu_exit(CPUState * __cpu)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_CPU_EXIT)) {
+ _nocheck__trace_guest_cpu_exit(__cpu);
+ }
+}
+
+#define TRACE_GUEST_CPU_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_cpu_reset(CPUState * __cpu)
+{
+}
+
+static inline void trace_guest_cpu_reset(CPUState * __cpu)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_CPU_RESET)) {
+ _nocheck__trace_guest_cpu_reset(__cpu);
+ }
+}
+
+#define TRACE_GUEST_MEM_BEFORE_TRANS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_mem_before_trans(CPUState * __cpu, uint8_t info)
+{
+}
+
+static inline void trace_guest_mem_before_trans(CPUState * __cpu, uint8_t info)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_MEM_BEFORE_TRANS)) {
+ _nocheck__trace_guest_mem_before_trans(__cpu, info);
+ }
+}
+
+#define TRACE_GUEST_MEM_BEFORE_EXEC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_mem_before_exec(CPUState * __cpu, uint64_t vaddr, uint8_t info)
+{
+}
+
+static inline void trace_guest_mem_before_exec(CPUState * __cpu, uint64_t vaddr, uint8_t info)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_MEM_BEFORE_EXEC)) {
+ _nocheck__trace_guest_mem_before_exec(__cpu, vaddr, info);
+ }
+}
+
+#define TRACE_GUEST_USER_SYSCALL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_user_syscall(CPUState * __cpu, uint64_t num, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8)
+{
+}
+
+static inline void trace_guest_user_syscall(CPUState * __cpu, uint64_t num, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_USER_SYSCALL)) {
+ _nocheck__trace_guest_user_syscall(__cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+ }
+}
+
+#define TRACE_GUEST_USER_SYSCALL_RET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_guest_user_syscall_ret(CPUState * __cpu, uint64_t num, uint64_t ret)
+{
+}
+
+static inline void trace_guest_user_syscall_ret(CPUState * __cpu, uint64_t num, uint64_t ret)
+{
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_USER_SYSCALL_RET)) {
+ _nocheck__trace_guest_user_syscall_ret(__cpu, num, ret);
+ }
+}
+#endif /* TRACE_ROOT_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/trace/generated-helpers-wrappers.h b/qemu2-auto-generated/trace/generated-helpers-wrappers.h
new file mode 100644
index 0000000000..7ba46d15f0
--- /dev/null
+++ b/qemu2-auto-generated/trace/generated-helpers-wrappers.h
@@ -0,0 +1,15 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#define tcg_temp_new_nop(v) (v)
+#define tcg_temp_free_nop(v)
+
+static inline void gen_helper_trace_guest_mem_before_exec(TCGv_env __tcg___cpu, TCGv vaddr, uint8_t info)
+{
+ TCGv_env ____tcg___cpu = tcg_temp_new_nop(__tcg___cpu);
+ TCGv __vaddr = tcg_temp_new_nop(vaddr);
+ TCGv_i32 __info = tcg_const_i32(info);
+ gen_helper_trace_guest_mem_before_exec_proxy(____tcg___cpu, __vaddr, __info);
+ tcg_temp_free_nop(____tcg___cpu);
+ tcg_temp_free_nop(__vaddr);
+ tcg_temp_free_i32(__info);
+}
diff --git a/qemu2-auto-generated/trace/generated-helpers.c b/qemu2-auto-generated/trace/generated-helpers.c
new file mode 100644
index 0000000000..dd00cfd97d
--- /dev/null
+++ b/qemu2-auto-generated/trace/generated-helpers.c
@@ -0,0 +1,12 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+void helper_trace_guest_mem_before_exec_proxy(CPUArchState * __tcg___cpu, target_ulong vaddr, uint32_t info)
+{
+ _nocheck__trace_guest_mem_before_exec((CPUState *)ENV_GET_CPU(__tcg___cpu), (uint64_t)vaddr, (uint8_t)info);
+}
diff --git a/qemu2-auto-generated/trace/generated-helpers.h b/qemu2-auto-generated/trace/generated-helpers.h
new file mode 100644
index 0000000000..670b09ef1c
--- /dev/null
+++ b/qemu2-auto-generated/trace/generated-helpers.h
@@ -0,0 +1,3 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+DEF_HELPER_FLAGS_3(trace_guest_mem_before_exec_proxy, TCG_CALL_NO_RWG, void, env, tl, i32)
diff --git a/qemu2-auto-generated/trace/generated-tcg-tracers.h b/qemu2-auto-generated/trace/generated-tcg-tracers.h
new file mode 100644
index 0000000000..e4e5983af8
--- /dev/null
+++ b/qemu2-auto-generated/trace/generated-tcg-tracers.h
@@ -0,0 +1,18 @@
+/* This file is autogenerated by tracetool, do not edit. */
+/* You must include this file after the inclusion of helper.h */
+
+#ifndef TRACE_ROOT_GENERATED_TCG_TRACERS_H
+#define TRACE_ROOT_GENERATED_TCG_TRACERS_H
+
+#include "exec/helper-proto.h"
+#include "trace-root.h"
+
+static inline void trace_guest_mem_before_tcg(CPUState * __cpu, TCGv_env __tcg___cpu, TCGv vaddr, uint8_t info)
+{
+ trace_guest_mem_before_trans(__cpu, info);
+ if (trace_event_get_vcpu_state(__cpu, TRACE_GUEST_MEM_BEFORE_EXEC)) {
+ gen_helper_trace_guest_mem_before_exec(__tcg___cpu, vaddr, info);
+ }
+}
+
+#endif /* TRACE_ROOT_GENERATED_TCG_TRACERS_H */
diff --git a/qemu2-auto-generated/ui/input-keymap-atset1-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-atset1-to-qcode.c
new file mode 100644
index 0000000000..c1dee6ad44
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-atset1-to-qcode.c
@@ -0,0 +1,245 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_atset1_to_qcode code-map keymaps.csv atset1 qcode
+*/
+const guint16 qemu_input_map_atset1_to_qcode[57470] = {
+ [0x1] = Q_KEY_CODE_ESC, /* atset1:1 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x2] = Q_KEY_CODE_1, /* atset1:2 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x3] = Q_KEY_CODE_2, /* atset1:3 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x4] = Q_KEY_CODE_3, /* atset1:4 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x5] = Q_KEY_CODE_4, /* atset1:5 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x6] = Q_KEY_CODE_5, /* atset1:6 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x7] = Q_KEY_CODE_6, /* atset1:7 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x8] = Q_KEY_CODE_7, /* atset1:8 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x9] = Q_KEY_CODE_8, /* atset1:9 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0xa] = Q_KEY_CODE_9, /* atset1:10 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0xb] = Q_KEY_CODE_0, /* atset1:11 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0xc] = Q_KEY_CODE_MINUS, /* atset1:12 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xd] = Q_KEY_CODE_EQUAL, /* atset1:13 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xe] = Q_KEY_CODE_BACKSPACE, /* atset1:14 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xf] = Q_KEY_CODE_TAB, /* atset1:15 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x10] = Q_KEY_CODE_Q, /* atset1:16 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x11] = Q_KEY_CODE_W, /* atset1:17 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x12] = Q_KEY_CODE_E, /* atset1:18 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x13] = Q_KEY_CODE_R, /* atset1:19 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x14] = Q_KEY_CODE_T, /* atset1:20 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x15] = Q_KEY_CODE_Y, /* atset1:21 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x16] = Q_KEY_CODE_U, /* atset1:22 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x17] = Q_KEY_CODE_I, /* atset1:23 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x18] = Q_KEY_CODE_O, /* atset1:24 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x19] = Q_KEY_CODE_P, /* atset1:25 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x1a] = Q_KEY_CODE_BRACKET_LEFT, /* atset1:26 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x1b] = Q_KEY_CODE_BRACKET_RIGHT, /* atset1:27 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x1c] = Q_KEY_CODE_RET, /* atset1:28 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x1d] = Q_KEY_CODE_CTRL, /* atset1:29 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x1e] = Q_KEY_CODE_A, /* atset1:30 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x1f] = Q_KEY_CODE_S, /* atset1:31 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x20] = Q_KEY_CODE_D, /* atset1:32 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x21] = Q_KEY_CODE_F, /* atset1:33 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x22] = Q_KEY_CODE_G, /* atset1:34 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x23] = Q_KEY_CODE_H, /* atset1:35 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x24] = Q_KEY_CODE_J, /* atset1:36 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x25] = Q_KEY_CODE_K, /* atset1:37 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x26] = Q_KEY_CODE_L, /* atset1:38 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x27] = Q_KEY_CODE_SEMICOLON, /* atset1:39 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x28] = Q_KEY_CODE_APOSTROPHE, /* atset1:40 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x29] = Q_KEY_CODE_GRAVE_ACCENT, /* atset1:41 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x2a] = Q_KEY_CODE_SHIFT, /* atset1:42 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x2b] = Q_KEY_CODE_BACKSLASH, /* atset1:43 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x2c] = Q_KEY_CODE_Z, /* atset1:44 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x2d] = Q_KEY_CODE_X, /* atset1:45 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x2e] = Q_KEY_CODE_C, /* atset1:46 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x2f] = Q_KEY_CODE_V, /* atset1:47 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x30] = Q_KEY_CODE_B, /* atset1:48 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x31] = Q_KEY_CODE_N, /* atset1:49 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x32] = Q_KEY_CODE_M, /* atset1:50 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x33] = Q_KEY_CODE_COMMA, /* atset1:51 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_DOT, /* atset1:52 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x35] = Q_KEY_CODE_SLASH, /* atset1:53 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x36] = Q_KEY_CODE_SHIFT_R, /* atset1:54 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x37] = Q_KEY_CODE_KP_MULTIPLY, /* atset1:55 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x38] = Q_KEY_CODE_ALT, /* atset1:56 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x39] = Q_KEY_CODE_SPC, /* atset1:57 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_CAPS_LOCK, /* atset1:58 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x3b] = Q_KEY_CODE_F1, /* atset1:59 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x3c] = Q_KEY_CODE_F2, /* atset1:60 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x3d] = Q_KEY_CODE_F3, /* atset1:61 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x3e] = Q_KEY_CODE_F4, /* atset1:62 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x3f] = Q_KEY_CODE_F5, /* atset1:63 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x40] = Q_KEY_CODE_F6, /* atset1:64 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x41] = Q_KEY_CODE_F7, /* atset1:65 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x42] = Q_KEY_CODE_F8, /* atset1:66 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x43] = Q_KEY_CODE_F9, /* atset1:67 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x44] = Q_KEY_CODE_F10, /* atset1:68 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x45] = Q_KEY_CODE_NUM_LOCK, /* atset1:69 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x46] = Q_KEY_CODE_SCROLL_LOCK, /* atset1:70 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x47] = Q_KEY_CODE_KP_7, /* atset1:71 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x48] = Q_KEY_CODE_KP_8, /* atset1:72 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x49] = Q_KEY_CODE_KP_9, /* atset1:73 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x4a] = Q_KEY_CODE_KP_SUBTRACT, /* atset1:74 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x4b] = Q_KEY_CODE_KP_4, /* atset1:75 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x4c] = Q_KEY_CODE_KP_5, /* atset1:76 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x4d] = Q_KEY_CODE_KP_6, /* atset1:77 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x4e] = Q_KEY_CODE_KP_ADD, /* atset1:78 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_KP_1, /* atset1:79 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x50] = Q_KEY_CODE_KP_2, /* atset1:80 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x51] = Q_KEY_CODE_KP_3, /* atset1:81 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x52] = Q_KEY_CODE_KP_0, /* atset1:82 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x53] = Q_KEY_CODE_KP_DECIMAL, /* atset1:83 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x54] = Q_KEY_CODE_SYSRQ, /* atset1:84 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x55] = Q_KEY_CODE_UNMAPPED, /* atset1:85 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x56] = Q_KEY_CODE_LESS, /* atset1:86 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x57] = Q_KEY_CODE_F11, /* atset1:87 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x58] = Q_KEY_CODE_F12, /* atset1:88 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x59] = Q_KEY_CODE_KP_EQUALS, /* atset1:89 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x5a] = Q_KEY_CODE_UNMAPPED, /* atset1:90 -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5b] = Q_KEY_CODE_LF, /* atset1:91 -> linux:101 (KEY_LINEFEED) -> qcode:Q_KEY_CODE_LF (lf) */
+ [0x5c] = Q_KEY_CODE_UNMAPPED, /* atset1:92 -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* atset1:93 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_UNMAPPED, /* atset1:94 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5f] = Q_KEY_CODE_UNMAPPED, /* atset1:95 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_UNMAPPED, /* atset1:99 -> linux:169 (KEY_PHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x64] = Q_KEY_CODE_OPEN, /* atset1:100 -> linux:134 (KEY_OPEN) -> qcode:Q_KEY_CODE_OPEN (open) */
+ [0x65] = Q_KEY_CODE_PASTE, /* atset1:101 -> linux:135 (KEY_PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x66] = Q_KEY_CODE_UNMAPPED, /* atset1:102 -> linux:141 (KEY_SETUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* atset1:103 -> linux:144 (KEY_FILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_UNMAPPED, /* atset1:104 -> linux:145 (KEY_SENDFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x69] = Q_KEY_CODE_UNMAPPED, /* atset1:105 -> linux:146 (KEY_DELETEFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6a] = Q_KEY_CODE_UNMAPPED, /* atset1:106 -> linux:151 (KEY_MSDOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6b] = Q_KEY_CODE_UNMAPPED, /* atset1:107 -> linux:153 (KEY_DIRECTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6c] = Q_KEY_CODE_UNMAPPED, /* atset1:108 -> linux:161 (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6d] = Q_KEY_CODE_UNMAPPED, /* atset1:109 -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6f] = Q_KEY_CODE_UNMAPPED, /* atset1:111 -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* atset1:112 -> linux:170 (KEY_ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* atset1:113 -> linux:174 (KEY_EXIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* atset1:114 -> linux:175 (KEY_MOVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_RO, /* atset1:115 -> linux:89 (KEY_RO) -> qcode:Q_KEY_CODE_RO (ro) */
+ [0x74] = Q_KEY_CODE_UNMAPPED, /* atset1:116 -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x75] = Q_KEY_CODE_UNMAPPED, /* atset1:117 -> linux:177 (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* atset1:118 -> linux:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_HIRAGANA, /* atset1:119 -> linux:91 (KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* atset1:120 -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_HENKAN, /* atset1:121 -> linux:92 (KEY_HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x7b] = Q_KEY_CODE_UNMAPPED, /* atset1:123 -> linux:94 (KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7d] = Q_KEY_CODE_YEN, /* atset1:125 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x7e] = Q_KEY_CODE_KP_COMMA, /* atset1:126 -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0xe001] = Q_KEY_CODE_UNMAPPED, /* atset1:57345 -> linux:171 (KEY_CONFIG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe002] = Q_KEY_CODE_UNMAPPED, /* atset1:57346 -> linux:150 (KEY_WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe003] = Q_KEY_CODE_UNMAPPED, /* atset1:57347 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe004] = Q_KEY_CODE_UNMAPPED, /* atset1:57348 -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe005] = Q_KEY_CODE_AGAIN, /* atset1:57349 -> linux:129 (KEY_AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */
+ [0xe006] = Q_KEY_CODE_PROPS, /* atset1:57350 -> linux:130 (KEY_PROPS) -> qcode:Q_KEY_CODE_PROPS (props) */
+ [0xe007] = Q_KEY_CODE_UNDO, /* atset1:57351 -> linux:131 (KEY_UNDO) -> qcode:Q_KEY_CODE_UNDO (undo) */
+ [0xe008] = Q_KEY_CODE_UNMAPPED, /* atset1:57352 -> linux:176 (KEY_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe009] = Q_KEY_CODE_UNMAPPED, /* atset1:57353 -> linux:181 (KEY_NEW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00a] = Q_KEY_CODE_UNMAPPED, /* atset1:57354 -> linux:182 (KEY_REDO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00b] = Q_KEY_CODE_UNMAPPED, /* atset1:57355 -> linux:120 (KEY_SCALE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00c] = Q_KEY_CODE_FRONT, /* atset1:57356 -> linux:132 (KEY_FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */
+ [0xe00d] = Q_KEY_CODE_UNMAPPED, /* atset1:57357 -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00e] = Q_KEY_CODE_UNMAPPED, /* atset1:57358 -> linux:233 (KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00f] = Q_KEY_CODE_UNMAPPED, /* atset1:57359 -> linux:178 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe010] = Q_KEY_CODE_AUDIOPREV, /* atset1:57360 -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xe012] = Q_KEY_CODE_UNMAPPED, /* atset1:57362 -> linux:152 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe013] = Q_KEY_CODE_UNMAPPED, /* atset1:57363 -> linux:147 (KEY_XFER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe014] = Q_KEY_CODE_UNMAPPED, /* atset1:57364 -> linux:222 (KEY_ALTERASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe015] = Q_KEY_CODE_UNMAPPED, /* atset1:57365 -> linux:195 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe016] = Q_KEY_CODE_UNMAPPED, /* atset1:57366 -> linux:196 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe017] = Q_KEY_CODE_UNMAPPED, /* atset1:57367 -> linux:149 (KEY_PROG2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe018] = Q_KEY_CODE_UNMAPPED, /* atset1:57368 -> linux:168 (KEY_REWIND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe019] = Q_KEY_CODE_AUDIONEXT, /* atset1:57369 -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xe01a] = Q_KEY_CODE_UNMAPPED, /* atset1:57370 -> linux:197 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe01b] = Q_KEY_CODE_UNMAPPED, /* atset1:57371 -> linux:198 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe01c] = Q_KEY_CODE_KP_ENTER, /* atset1:57372 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0xe01d] = Q_KEY_CODE_CTRL_R, /* atset1:57373 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xe01e] = Q_KEY_CODE_MENU, /* atset1:57374 -> linux:139 (KEY_MENU) -> qcode:Q_KEY_CODE_MENU (menu) */
+ [0xe01f] = Q_KEY_CODE_UNMAPPED, /* atset1:57375 -> linux:148 (KEY_PROG1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe020] = Q_KEY_CODE_AUDIOMUTE, /* atset1:57376 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xe021] = Q_KEY_CODE_CALCULATOR, /* atset1:57377 -> linux:140 (KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0xe022] = Q_KEY_CODE_AUDIOPLAY, /* atset1:57378 -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xe023] = Q_KEY_CODE_UNMAPPED, /* atset1:57379 -> linux:160 (KEY_CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe024] = Q_KEY_CODE_AUDIOSTOP, /* atset1:57380 -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xe025] = Q_KEY_CODE_UNMAPPED, /* atset1:57381 -> linux:205 (KEY_SUSPEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe026] = Q_KEY_CODE_UNMAPPED, /* atset1:57382 -> linux:154 (KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe027] = Q_KEY_CODE_UNMAPPED, /* atset1:57383 -> linux:199 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe028] = Q_KEY_CODE_UNMAPPED, /* atset1:57384 -> linux:200 (KEY_PLAYCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe029] = Q_KEY_CODE_UNMAPPED, /* atset1:57385 -> linux:201 (KEY_PAUSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02b] = Q_KEY_CODE_UNMAPPED, /* atset1:57387 -> linux:202 (KEY_PROG3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02c] = Q_KEY_CODE_UNMAPPED, /* atset1:57388 -> linux:203 (KEY_PROG4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02d] = Q_KEY_CODE_UNMAPPED, /* atset1:57389 -> linux:204 (KEY_DASHBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02e] = Q_KEY_CODE_VOLUMEDOWN, /* atset1:57390 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xe02f] = Q_KEY_CODE_UNMAPPED, /* atset1:57391 -> linux:206 (KEY_CLOSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe030] = Q_KEY_CODE_VOLUMEUP, /* atset1:57392 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xe031] = Q_KEY_CODE_UNMAPPED, /* atset1:57393 -> linux:167 (KEY_RECORD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe032] = Q_KEY_CODE_AC_HOME, /* atset1:57394 -> linux:172 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xe033] = Q_KEY_CODE_UNMAPPED, /* atset1:57395 -> linux:207 (KEY_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe034] = Q_KEY_CODE_UNMAPPED, /* atset1:57396 -> linux:208 (KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe035] = Q_KEY_CODE_KP_DIVIDE, /* atset1:57397 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0xe036] = Q_KEY_CODE_UNMAPPED, /* atset1:57398 -> linux:209 (KEY_BASSBOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe038] = Q_KEY_CODE_ALT_R, /* atset1:57400 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xe039] = Q_KEY_CODE_UNMAPPED, /* atset1:57401 -> linux:210 (KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03a] = Q_KEY_CODE_UNMAPPED, /* atset1:57402 -> linux:211 (KEY_HP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03b] = Q_KEY_CODE_UNMAPPED, /* atset1:57403 -> linux:212 (KEY_CAMERA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03c] = Q_KEY_CODE_CUT, /* atset1:57404 -> linux:137 (KEY_CUT) -> qcode:Q_KEY_CODE_CUT (cut) */
+ [0xe03d] = Q_KEY_CODE_UNMAPPED, /* atset1:57405 -> linux:213 (KEY_SOUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03e] = Q_KEY_CODE_UNMAPPED, /* atset1:57406 -> linux:214 (KEY_QUESTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03f] = Q_KEY_CODE_UNMAPPED, /* atset1:57407 -> linux:215 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe040] = Q_KEY_CODE_UNMAPPED, /* atset1:57408 -> linux:216 (KEY_CHAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe041] = Q_KEY_CODE_FIND, /* atset1:57409 -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0xe042] = Q_KEY_CODE_UNMAPPED, /* atset1:57410 -> linux:218 (KEY_CONNECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe043] = Q_KEY_CODE_UNMAPPED, /* atset1:57411 -> linux:219 (KEY_FINANCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe044] = Q_KEY_CODE_UNMAPPED, /* atset1:57412 -> linux:220 (KEY_SPORT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe045] = Q_KEY_CODE_UNMAPPED, /* atset1:57413 -> linux:221 (KEY_SHOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe046] = Q_KEY_CODE_PAUSE, /* atset1:57414 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0xe047] = Q_KEY_CODE_HOME, /* atset1:57415 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0xe048] = Q_KEY_CODE_UP, /* atset1:57416 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0xe049] = Q_KEY_CODE_PGUP, /* atset1:57417 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0xe04a] = Q_KEY_CODE_UNMAPPED, /* atset1:57418 -> linux:223 (KEY_CANCEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04b] = Q_KEY_CODE_LEFT, /* atset1:57419 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0xe04c] = Q_KEY_CODE_UNMAPPED, /* atset1:57420 -> linux:224 (KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04d] = Q_KEY_CODE_RIGHT, /* atset1:57421 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0xe04e] = Q_KEY_CODE_UNMAPPED, /* atset1:57422 -> linux:118 (KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04f] = Q_KEY_CODE_END, /* atset1:57423 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0xe050] = Q_KEY_CODE_DOWN, /* atset1:57424 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0xe051] = Q_KEY_CODE_PGDN, /* atset1:57425 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0xe052] = Q_KEY_CODE_INSERT, /* atset1:57426 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0xe053] = Q_KEY_CODE_DELETE, /* atset1:57427 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0xe054] = Q_KEY_CODE_UNMAPPED, /* atset1:57428 -> linux:225 (KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe055] = Q_KEY_CODE_UNMAPPED, /* atset1:57429 -> linux:234 (KEY_SAVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe056] = Q_KEY_CODE_UNMAPPED, /* atset1:57430 -> linux:227 (KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe057] = Q_KEY_CODE_UNMAPPED, /* atset1:57431 -> linux:228 (KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe058] = Q_KEY_CODE_UNMAPPED, /* atset1:57432 -> linux:229 (KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe059] = Q_KEY_CODE_UNMAPPED, /* atset1:57433 -> linux:230 (KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe05a] = Q_KEY_CODE_UNMAPPED, /* atset1:57434 -> linux:231 (KEY_SEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe05b] = Q_KEY_CODE_META_L, /* atset1:57435 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xe05c] = Q_KEY_CODE_META_R, /* atset1:57436 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xe05d] = Q_KEY_CODE_COMPOSE, /* atset1:57437 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0xe05e] = Q_KEY_CODE_POWER, /* atset1:57438 -> linux:116 (KEY_POWER) -> qcode:Q_KEY_CODE_POWER (power) */
+ [0xe05f] = Q_KEY_CODE_SLEEP, /* atset1:57439 -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0xe063] = Q_KEY_CODE_WAKE, /* atset1:57443 -> linux:143 (KEY_WAKEUP) -> qcode:Q_KEY_CODE_WAKE (wake) */
+ [0xe064] = Q_KEY_CODE_UNMAPPED, /* atset1:57444 -> linux:232 (KEY_REPLY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe065] = Q_KEY_CODE_UNMAPPED, /* atset1:57445 -> linux:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe066] = Q_KEY_CODE_AC_BOOKMARKS, /* atset1:57446 -> linux:156 (KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0xe067] = Q_KEY_CODE_AC_REFRESH, /* atset1:57447 -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xe068] = Q_KEY_CODE_STOP, /* atset1:57448 -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0xe069] = Q_KEY_CODE_AC_FORWARD, /* atset1:57449 -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xe06a] = Q_KEY_CODE_AC_BACK, /* atset1:57450 -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xe06b] = Q_KEY_CODE_COMPUTER, /* atset1:57451 -> linux:157 (KEY_COMPUTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0xe06c] = Q_KEY_CODE_MAIL, /* atset1:57452 -> linux:155 (KEY_MAIL) -> qcode:Q_KEY_CODE_MAIL (mail) */
+ [0xe06d] = Q_KEY_CODE_MEDIASELECT, /* atset1:57453 -> linux:226 (KEY_MEDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xe06f] = Q_KEY_CODE_UNMAPPED, /* atset1:57455 -> linux:112 (KEY_MACRO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe070] = Q_KEY_CODE_UNMAPPED, /* atset1:57456 -> linux:235 (KEY_DOCUMENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe071] = Q_KEY_CODE_UNMAPPED, /* atset1:57457 -> linux:236 (KEY_BATTERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe072] = Q_KEY_CODE_UNMAPPED, /* atset1:57458 -> linux:237 (KEY_BLUETOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe073] = Q_KEY_CODE_UNMAPPED, /* atset1:57459 -> linux:238 (KEY_WLAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe074] = Q_KEY_CODE_UNMAPPED, /* atset1:57460 -> linux:239 (KEY_UWB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe075] = Q_KEY_CODE_HELP, /* atset1:57461 -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0xe076] = Q_KEY_CODE_UNMAPPED, /* atset1:57462 -> linux:179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe077] = Q_KEY_CODE_UNMAPPED, /* atset1:57463 -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe078] = Q_KEY_CODE_COPY, /* atset1:57464 -> linux:133 (KEY_COPY) -> qcode:Q_KEY_CODE_COPY (copy) */
+ [0xe079] = Q_KEY_CODE_UNMAPPED, /* atset1:57465 -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe07b] = Q_KEY_CODE_UNMAPPED, /* atset1:57467 -> linux:180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe07d] = Q_KEY_CODE_UNMAPPED, /* atset1:57469 -> linux:162 (KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_atset1_to_qcode_len = sizeof(qemu_input_map_atset1_to_qcode)/sizeof(qemu_input_map_atset1_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-linux-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-linux-to-qcode.c
new file mode 100644
index 0000000000..ff47c6f117
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-linux-to-qcode.c
@@ -0,0 +1,464 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_linux_to_qcode code-map keymaps.csv linux qcode
+*/
+const guint16 qemu_input_map_linux_to_qcode[581] = {
+ [0x0] = Q_KEY_CODE_UNMAPPED, /* linux:0 (KEY_RESERVED) -> linux:0 (KEY_RESERVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */
+ [0x1] = Q_KEY_CODE_ESC, /* linux:1 (KEY_ESC) -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x2] = Q_KEY_CODE_1, /* linux:2 (KEY_1) -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x3] = Q_KEY_CODE_2, /* linux:3 (KEY_2) -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x4] = Q_KEY_CODE_3, /* linux:4 (KEY_3) -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x5] = Q_KEY_CODE_4, /* linux:5 (KEY_4) -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x6] = Q_KEY_CODE_5, /* linux:6 (KEY_5) -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x7] = Q_KEY_CODE_6, /* linux:7 (KEY_6) -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x8] = Q_KEY_CODE_7, /* linux:8 (KEY_7) -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x9] = Q_KEY_CODE_8, /* linux:9 (KEY_8) -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0xa] = Q_KEY_CODE_9, /* linux:10 (KEY_9) -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0xb] = Q_KEY_CODE_0, /* linux:11 (KEY_0) -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0xc] = Q_KEY_CODE_MINUS, /* linux:12 (KEY_MINUS) -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xd] = Q_KEY_CODE_EQUAL, /* linux:13 (KEY_EQUAL) -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xe] = Q_KEY_CODE_BACKSPACE, /* linux:14 (KEY_BACKSPACE) -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xf] = Q_KEY_CODE_TAB, /* linux:15 (KEY_TAB) -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x10] = Q_KEY_CODE_Q, /* linux:16 (KEY_Q) -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x11] = Q_KEY_CODE_W, /* linux:17 (KEY_W) -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x12] = Q_KEY_CODE_E, /* linux:18 (KEY_E) -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x13] = Q_KEY_CODE_R, /* linux:19 (KEY_R) -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x14] = Q_KEY_CODE_T, /* linux:20 (KEY_T) -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x15] = Q_KEY_CODE_Y, /* linux:21 (KEY_Y) -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x16] = Q_KEY_CODE_U, /* linux:22 (KEY_U) -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x17] = Q_KEY_CODE_I, /* linux:23 (KEY_I) -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x18] = Q_KEY_CODE_O, /* linux:24 (KEY_O) -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x19] = Q_KEY_CODE_P, /* linux:25 (KEY_P) -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x1a] = Q_KEY_CODE_BRACKET_LEFT, /* linux:26 (KEY_LEFTBRACE) -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x1b] = Q_KEY_CODE_BRACKET_RIGHT, /* linux:27 (KEY_RIGHTBRACE) -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x1c] = Q_KEY_CODE_RET, /* linux:28 (KEY_ENTER) -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x1d] = Q_KEY_CODE_CTRL, /* linux:29 (KEY_LEFTCTRL) -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x1e] = Q_KEY_CODE_A, /* linux:30 (KEY_A) -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x1f] = Q_KEY_CODE_S, /* linux:31 (KEY_S) -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x20] = Q_KEY_CODE_D, /* linux:32 (KEY_D) -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x21] = Q_KEY_CODE_F, /* linux:33 (KEY_F) -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x22] = Q_KEY_CODE_G, /* linux:34 (KEY_G) -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x23] = Q_KEY_CODE_H, /* linux:35 (KEY_H) -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x24] = Q_KEY_CODE_J, /* linux:36 (KEY_J) -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x25] = Q_KEY_CODE_K, /* linux:37 (KEY_K) -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x26] = Q_KEY_CODE_L, /* linux:38 (KEY_L) -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x27] = Q_KEY_CODE_SEMICOLON, /* linux:39 (KEY_SEMICOLON) -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x28] = Q_KEY_CODE_APOSTROPHE, /* linux:40 (KEY_APOSTROPHE) -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x29] = Q_KEY_CODE_GRAVE_ACCENT, /* linux:41 (KEY_GRAVE) -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x2a] = Q_KEY_CODE_SHIFT, /* linux:42 (KEY_LEFTSHIFT) -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x2b] = Q_KEY_CODE_BACKSLASH, /* linux:43 (KEY_BACKSLASH) -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x2c] = Q_KEY_CODE_Z, /* linux:44 (KEY_Z) -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x2d] = Q_KEY_CODE_X, /* linux:45 (KEY_X) -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x2e] = Q_KEY_CODE_C, /* linux:46 (KEY_C) -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x2f] = Q_KEY_CODE_V, /* linux:47 (KEY_V) -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x30] = Q_KEY_CODE_B, /* linux:48 (KEY_B) -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x31] = Q_KEY_CODE_N, /* linux:49 (KEY_N) -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x32] = Q_KEY_CODE_M, /* linux:50 (KEY_M) -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x33] = Q_KEY_CODE_COMMA, /* linux:51 (KEY_COMMA) -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_DOT, /* linux:52 (KEY_DOT) -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x35] = Q_KEY_CODE_SLASH, /* linux:53 (KEY_SLASH) -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x36] = Q_KEY_CODE_SHIFT_R, /* linux:54 (KEY_RIGHTSHIFT) -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x37] = Q_KEY_CODE_KP_MULTIPLY, /* linux:55 (KEY_KPASTERISK) -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x38] = Q_KEY_CODE_ALT, /* linux:56 (KEY_LEFTALT) -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x39] = Q_KEY_CODE_SPC, /* linux:57 (KEY_SPACE) -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_CAPS_LOCK, /* linux:58 (KEY_CAPSLOCK) -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x3b] = Q_KEY_CODE_F1, /* linux:59 (KEY_F1) -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x3c] = Q_KEY_CODE_F2, /* linux:60 (KEY_F2) -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x3d] = Q_KEY_CODE_F3, /* linux:61 (KEY_F3) -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x3e] = Q_KEY_CODE_F4, /* linux:62 (KEY_F4) -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x3f] = Q_KEY_CODE_F5, /* linux:63 (KEY_F5) -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x40] = Q_KEY_CODE_F6, /* linux:64 (KEY_F6) -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x41] = Q_KEY_CODE_F7, /* linux:65 (KEY_F7) -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x42] = Q_KEY_CODE_F8, /* linux:66 (KEY_F8) -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x43] = Q_KEY_CODE_F9, /* linux:67 (KEY_F9) -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x44] = Q_KEY_CODE_F10, /* linux:68 (KEY_F10) -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x45] = Q_KEY_CODE_NUM_LOCK, /* linux:69 (KEY_NUMLOCK) -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x46] = Q_KEY_CODE_SCROLL_LOCK, /* linux:70 (KEY_SCROLLLOCK) -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x47] = Q_KEY_CODE_KP_7, /* linux:71 (KEY_KP7) -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x48] = Q_KEY_CODE_KP_8, /* linux:72 (KEY_KP8) -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x49] = Q_KEY_CODE_KP_9, /* linux:73 (KEY_KP9) -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x4a] = Q_KEY_CODE_KP_SUBTRACT, /* linux:74 (KEY_KPMINUS) -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x4b] = Q_KEY_CODE_KP_4, /* linux:75 (KEY_KP4) -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x4c] = Q_KEY_CODE_KP_5, /* linux:76 (KEY_KP5) -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x4d] = Q_KEY_CODE_KP_6, /* linux:77 (KEY_KP6) -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x4e] = Q_KEY_CODE_KP_ADD, /* linux:78 (KEY_KPPLUS) -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_KP_1, /* linux:79 (KEY_KP1) -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x50] = Q_KEY_CODE_KP_2, /* linux:80 (KEY_KP2) -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x51] = Q_KEY_CODE_KP_3, /* linux:81 (KEY_KP3) -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x52] = Q_KEY_CODE_KP_0, /* linux:82 (KEY_KP0) -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x53] = Q_KEY_CODE_KP_DECIMAL, /* linux:83 (KEY_KPDOT) -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x54] = Q_KEY_CODE_UNMAPPED, /* linux:84 (unnamed) -> linux:84 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x55] = Q_KEY_CODE_UNMAPPED, /* linux:85 (KEY_ZENKAKUHANKAKU) -> linux:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x56] = Q_KEY_CODE_LESS, /* linux:86 (KEY_102ND) -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x57] = Q_KEY_CODE_F11, /* linux:87 (KEY_F11) -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x58] = Q_KEY_CODE_F12, /* linux:88 (KEY_F12) -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x59] = Q_KEY_CODE_RO, /* linux:89 (KEY_RO) -> linux:89 (KEY_RO) -> qcode:Q_KEY_CODE_RO (ro) */
+ [0x5a] = Q_KEY_CODE_UNMAPPED, /* linux:90 (KEY_KATAKANA) -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5b] = Q_KEY_CODE_HIRAGANA, /* linux:91 (KEY_HIRAGANA) -> linux:91 (KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x5c] = Q_KEY_CODE_HENKAN, /* linux:92 (KEY_HENKAN) -> linux:92 (KEY_HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* linux:93 (KEY_KATAKANAHIRAGANA) -> linux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_UNMAPPED, /* linux:94 (KEY_MUHENKAN) -> linux:94 (KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5f] = Q_KEY_CODE_UNMAPPED, /* linux:95 (KEY_KPJPCOMMA) -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x60] = Q_KEY_CODE_KP_ENTER, /* linux:96 (KEY_KPENTER) -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x61] = Q_KEY_CODE_CTRL_R, /* linux:97 (KEY_RIGHTCTRL) -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x62] = Q_KEY_CODE_KP_DIVIDE, /* linux:98 (KEY_KPSLASH) -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x63] = Q_KEY_CODE_SYSRQ, /* linux:99 (KEY_SYSRQ) -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x64] = Q_KEY_CODE_ALT_R, /* linux:100 (KEY_RIGHTALT) -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x65] = Q_KEY_CODE_LF, /* linux:101 (KEY_LINEFEED) -> linux:101 (KEY_LINEFEED) -> qcode:Q_KEY_CODE_LF (lf) */
+ [0x66] = Q_KEY_CODE_HOME, /* linux:102 (KEY_HOME) -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x67] = Q_KEY_CODE_UP, /* linux:103 (KEY_UP) -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x68] = Q_KEY_CODE_PGUP, /* linux:104 (KEY_PAGEUP) -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x69] = Q_KEY_CODE_LEFT, /* linux:105 (KEY_LEFT) -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x6a] = Q_KEY_CODE_RIGHT, /* linux:106 (KEY_RIGHT) -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x6b] = Q_KEY_CODE_END, /* linux:107 (KEY_END) -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x6c] = Q_KEY_CODE_DOWN, /* linux:108 (KEY_DOWN) -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x6d] = Q_KEY_CODE_PGDN, /* linux:109 (KEY_PAGEDOWN) -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x6e] = Q_KEY_CODE_INSERT, /* linux:110 (KEY_INSERT) -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x6f] = Q_KEY_CODE_DELETE, /* linux:111 (KEY_DELETE) -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* linux:112 (KEY_MACRO) -> linux:112 (KEY_MACRO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_AUDIOMUTE, /* linux:113 (KEY_MUTE) -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x72] = Q_KEY_CODE_VOLUMEDOWN, /* linux:114 (KEY_VOLUMEDOWN) -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x73] = Q_KEY_CODE_VOLUMEUP, /* linux:115 (KEY_VOLUMEUP) -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x74] = Q_KEY_CODE_POWER, /* linux:116 (KEY_POWER) -> linux:116 (KEY_POWER) -> qcode:Q_KEY_CODE_POWER (power) */
+ [0x75] = Q_KEY_CODE_KP_EQUALS, /* linux:117 (KEY_KPEQUAL) -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* linux:118 (KEY_KPPLUSMINUS) -> linux:118 (KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_PAUSE, /* linux:119 (KEY_PAUSE) -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* linux:120 (KEY_SCALE) -> linux:120 (KEY_SCALE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_KP_COMMA, /* linux:121 (KEY_KPCOMMA) -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x7a] = Q_KEY_CODE_UNMAPPED, /* linux:122 (KEY_HANGEUL) -> linux:122 (KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7b] = Q_KEY_CODE_UNMAPPED, /* linux:123 (KEY_HANJA) -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7c] = Q_KEY_CODE_YEN, /* linux:124 (KEY_YEN) -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x7d] = Q_KEY_CODE_META_L, /* linux:125 (KEY_LEFTMETA) -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x7e] = Q_KEY_CODE_META_R, /* linux:126 (KEY_RIGHTMETA) -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x7f] = Q_KEY_CODE_COMPOSE, /* linux:127 (KEY_COMPOSE) -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x80] = Q_KEY_CODE_STOP, /* linux:128 (KEY_STOP) -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0x81] = Q_KEY_CODE_AGAIN, /* linux:129 (KEY_AGAIN) -> linux:129 (KEY_AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */
+ [0x82] = Q_KEY_CODE_PROPS, /* linux:130 (KEY_PROPS) -> linux:130 (KEY_PROPS) -> qcode:Q_KEY_CODE_PROPS (props) */
+ [0x83] = Q_KEY_CODE_UNDO, /* linux:131 (KEY_UNDO) -> linux:131 (KEY_UNDO) -> qcode:Q_KEY_CODE_UNDO (undo) */
+ [0x84] = Q_KEY_CODE_FRONT, /* linux:132 (KEY_FRONT) -> linux:132 (KEY_FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */
+ [0x85] = Q_KEY_CODE_COPY, /* linux:133 (KEY_COPY) -> linux:133 (KEY_COPY) -> qcode:Q_KEY_CODE_COPY (copy) */
+ [0x86] = Q_KEY_CODE_OPEN, /* linux:134 (KEY_OPEN) -> linux:134 (KEY_OPEN) -> qcode:Q_KEY_CODE_OPEN (open) */
+ [0x87] = Q_KEY_CODE_PASTE, /* linux:135 (KEY_PASTE) -> linux:135 (KEY_PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x88] = Q_KEY_CODE_FIND, /* linux:136 (KEY_FIND) -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0x89] = Q_KEY_CODE_CUT, /* linux:137 (KEY_CUT) -> linux:137 (KEY_CUT) -> qcode:Q_KEY_CODE_CUT (cut) */
+ [0x8a] = Q_KEY_CODE_HELP, /* linux:138 (KEY_HELP) -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0x8b] = Q_KEY_CODE_MENU, /* linux:139 (KEY_MENU) -> linux:139 (KEY_MENU) -> qcode:Q_KEY_CODE_MENU (menu) */
+ [0x8c] = Q_KEY_CODE_CALCULATOR, /* linux:140 (KEY_CALC) -> linux:140 (KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0x8d] = Q_KEY_CODE_UNMAPPED, /* linux:141 (KEY_SETUP) -> linux:141 (KEY_SETUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8e] = Q_KEY_CODE_SLEEP, /* linux:142 (KEY_SLEEP) -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0x8f] = Q_KEY_CODE_WAKE, /* linux:143 (KEY_WAKEUP) -> linux:143 (KEY_WAKEUP) -> qcode:Q_KEY_CODE_WAKE (wake) */
+ [0x90] = Q_KEY_CODE_UNMAPPED, /* linux:144 (KEY_FILE) -> linux:144 (KEY_FILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x91] = Q_KEY_CODE_UNMAPPED, /* linux:145 (KEY_SENDFILE) -> linux:145 (KEY_SENDFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x92] = Q_KEY_CODE_UNMAPPED, /* linux:146 (KEY_DELETEFILE) -> linux:146 (KEY_DELETEFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x93] = Q_KEY_CODE_UNMAPPED, /* linux:147 (KEY_XFER) -> linux:147 (KEY_XFER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x94] = Q_KEY_CODE_UNMAPPED, /* linux:148 (KEY_PROG1) -> linux:148 (KEY_PROG1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x95] = Q_KEY_CODE_UNMAPPED, /* linux:149 (KEY_PROG2) -> linux:149 (KEY_PROG2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x96] = Q_KEY_CODE_UNMAPPED, /* linux:150 (KEY_WWW) -> linux:150 (KEY_WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x97] = Q_KEY_CODE_UNMAPPED, /* linux:151 (KEY_MSDOS) -> linux:151 (KEY_MSDOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x98] = Q_KEY_CODE_UNMAPPED, /* linux:152 (KEY_SCREENLOCK) -> linux:152 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x99] = Q_KEY_CODE_UNMAPPED, /* linux:153 (KEY_DIRECTION) -> linux:153 (KEY_DIRECTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9a] = Q_KEY_CODE_UNMAPPED, /* linux:154 (KEY_CYCLEWINDOWS) -> linux:154 (KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9b] = Q_KEY_CODE_MAIL, /* linux:155 (KEY_MAIL) -> linux:155 (KEY_MAIL) -> qcode:Q_KEY_CODE_MAIL (mail) */
+ [0x9c] = Q_KEY_CODE_AC_BOOKMARKS, /* linux:156 (KEY_BOOKMARKS) -> linux:156 (KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0x9d] = Q_KEY_CODE_COMPUTER, /* linux:157 (KEY_COMPUTER) -> linux:157 (KEY_COMPUTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0x9e] = Q_KEY_CODE_AC_BACK, /* linux:158 (KEY_BACK) -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0x9f] = Q_KEY_CODE_AC_FORWARD, /* linux:159 (KEY_FORWARD) -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xa0] = Q_KEY_CODE_UNMAPPED, /* linux:160 (KEY_CLOSECD) -> linux:160 (KEY_CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa1] = Q_KEY_CODE_UNMAPPED, /* linux:161 (KEY_EJECTCD) -> linux:161 (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa2] = Q_KEY_CODE_UNMAPPED, /* linux:162 (KEY_EJECTCLOSECD) -> linux:162 (KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa3] = Q_KEY_CODE_AUDIONEXT, /* linux:163 (KEY_NEXTSONG) -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xa4] = Q_KEY_CODE_AUDIOPLAY, /* linux:164 (KEY_PLAYPAUSE) -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xa5] = Q_KEY_CODE_AUDIOPREV, /* linux:165 (KEY_PREVIOUSSONG) -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xa6] = Q_KEY_CODE_AUDIOSTOP, /* linux:166 (KEY_STOPCD) -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xa7] = Q_KEY_CODE_UNMAPPED, /* linux:167 (KEY_RECORD) -> linux:167 (KEY_RECORD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa8] = Q_KEY_CODE_UNMAPPED, /* linux:168 (KEY_REWIND) -> linux:168 (KEY_REWIND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa9] = Q_KEY_CODE_UNMAPPED, /* linux:169 (KEY_PHONE) -> linux:169 (KEY_PHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xaa] = Q_KEY_CODE_UNMAPPED, /* linux:170 (KEY_ISO) -> linux:170 (KEY_ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_UNMAPPED, /* linux:171 (KEY_CONFIG) -> linux:171 (KEY_CONFIG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xac] = Q_KEY_CODE_AC_HOME, /* linux:172 (KEY_HOMEPAGE) -> linux:172 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xad] = Q_KEY_CODE_AC_REFRESH, /* linux:173 (KEY_REFRESH) -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xae] = Q_KEY_CODE_UNMAPPED, /* linux:174 (KEY_EXIT) -> linux:174 (KEY_EXIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xaf] = Q_KEY_CODE_UNMAPPED, /* linux:175 (KEY_MOVE) -> linux:175 (KEY_MOVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb0] = Q_KEY_CODE_UNMAPPED, /* linux:176 (KEY_EDIT) -> linux:176 (KEY_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb1] = Q_KEY_CODE_UNMAPPED, /* linux:177 (KEY_SCROLLUP) -> linux:177 (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb2] = Q_KEY_CODE_UNMAPPED, /* linux:178 (KEY_SCROLLDOWN) -> linux:178 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb3] = Q_KEY_CODE_UNMAPPED, /* linux:179 (KEY_KPLEFTPAREN) -> linux:179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb4] = Q_KEY_CODE_UNMAPPED, /* linux:180 (KEY_KPRIGHTPAREN) -> linux:180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb5] = Q_KEY_CODE_UNMAPPED, /* linux:181 (KEY_NEW) -> linux:181 (KEY_NEW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb6] = Q_KEY_CODE_UNMAPPED, /* linux:182 (KEY_REDO) -> linux:182 (KEY_REDO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb7] = Q_KEY_CODE_UNMAPPED, /* linux:183 (KEY_F13) -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb8] = Q_KEY_CODE_UNMAPPED, /* linux:184 (KEY_F14) -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb9] = Q_KEY_CODE_UNMAPPED, /* linux:185 (KEY_F15) -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_UNMAPPED, /* linux:186 (KEY_F16) -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbb] = Q_KEY_CODE_UNMAPPED, /* linux:187 (KEY_F17) -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbc] = Q_KEY_CODE_UNMAPPED, /* linux:188 (KEY_F18) -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbd] = Q_KEY_CODE_UNMAPPED, /* linux:189 (KEY_F19) -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbe] = Q_KEY_CODE_UNMAPPED, /* linux:190 (KEY_F20) -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbf] = Q_KEY_CODE_UNMAPPED, /* linux:191 (KEY_F21) -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc0] = Q_KEY_CODE_UNMAPPED, /* linux:192 (KEY_F22) -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc1] = Q_KEY_CODE_UNMAPPED, /* linux:193 (KEY_F23) -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc2] = Q_KEY_CODE_UNMAPPED, /* linux:194 (KEY_F24) -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc3] = Q_KEY_CODE_UNMAPPED, /* linux:195 (unnamed) -> linux:195 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc4] = Q_KEY_CODE_UNMAPPED, /* linux:196 (unnamed) -> linux:196 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc5] = Q_KEY_CODE_UNMAPPED, /* linux:197 (unnamed) -> linux:197 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc6] = Q_KEY_CODE_UNMAPPED, /* linux:198 (unnamed) -> linux:198 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc7] = Q_KEY_CODE_UNMAPPED, /* linux:199 (unnamed) -> linux:199 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc8] = Q_KEY_CODE_UNMAPPED, /* linux:200 (KEY_PLAYCD) -> linux:200 (KEY_PLAYCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc9] = Q_KEY_CODE_UNMAPPED, /* linux:201 (KEY_PAUSECD) -> linux:201 (KEY_PAUSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xca] = Q_KEY_CODE_UNMAPPED, /* linux:202 (KEY_PROG3) -> linux:202 (KEY_PROG3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcb] = Q_KEY_CODE_UNMAPPED, /* linux:203 (KEY_PROG4) -> linux:203 (KEY_PROG4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcc] = Q_KEY_CODE_UNMAPPED, /* linux:204 (KEY_DASHBOARD) -> linux:204 (KEY_DASHBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcd] = Q_KEY_CODE_UNMAPPED, /* linux:205 (KEY_SUSPEND) -> linux:205 (KEY_SUSPEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xce] = Q_KEY_CODE_UNMAPPED, /* linux:206 (KEY_CLOSE) -> linux:206 (KEY_CLOSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcf] = Q_KEY_CODE_UNMAPPED, /* linux:207 (KEY_PLAY) -> linux:207 (KEY_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* linux:208 (KEY_FASTFORWARD) -> linux:208 (KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd1] = Q_KEY_CODE_UNMAPPED, /* linux:209 (KEY_BASSBOOST) -> linux:209 (KEY_BASSBOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd2] = Q_KEY_CODE_UNMAPPED, /* linux:210 (KEY_PRINT) -> linux:210 (KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd3] = Q_KEY_CODE_UNMAPPED, /* linux:211 (KEY_HP) -> linux:211 (KEY_HP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd4] = Q_KEY_CODE_UNMAPPED, /* linux:212 (KEY_CAMERA) -> linux:212 (KEY_CAMERA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd5] = Q_KEY_CODE_UNMAPPED, /* linux:213 (KEY_SOUND) -> linux:213 (KEY_SOUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd6] = Q_KEY_CODE_UNMAPPED, /* linux:214 (KEY_QUESTION) -> linux:214 (KEY_QUESTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd7] = Q_KEY_CODE_UNMAPPED, /* linux:215 (KEY_EMAIL) -> linux:215 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd8] = Q_KEY_CODE_UNMAPPED, /* linux:216 (KEY_CHAT) -> linux:216 (KEY_CHAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd9] = Q_KEY_CODE_UNMAPPED, /* linux:217 (KEY_SEARCH) -> linux:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xda] = Q_KEY_CODE_UNMAPPED, /* linux:218 (KEY_CONNECT) -> linux:218 (KEY_CONNECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdb] = Q_KEY_CODE_UNMAPPED, /* linux:219 (KEY_FINANCE) -> linux:219 (KEY_FINANCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdc] = Q_KEY_CODE_UNMAPPED, /* linux:220 (KEY_SPORT) -> linux:220 (KEY_SPORT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdd] = Q_KEY_CODE_UNMAPPED, /* linux:221 (KEY_SHOP) -> linux:221 (KEY_SHOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xde] = Q_KEY_CODE_UNMAPPED, /* linux:222 (KEY_ALTERASE) -> linux:222 (KEY_ALTERASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdf] = Q_KEY_CODE_UNMAPPED, /* linux:223 (KEY_CANCEL) -> linux:223 (KEY_CANCEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe0] = Q_KEY_CODE_UNMAPPED, /* linux:224 (KEY_BRIGHTNESSDOWN) -> linux:224 (KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe1] = Q_KEY_CODE_UNMAPPED, /* linux:225 (KEY_BRIGHTNESSUP) -> linux:225 (KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe2] = Q_KEY_CODE_MEDIASELECT, /* linux:226 (KEY_MEDIA) -> linux:226 (KEY_MEDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xe3] = Q_KEY_CODE_UNMAPPED, /* linux:227 (KEY_SWITCHVIDEOMODE) -> linux:227 (KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe4] = Q_KEY_CODE_UNMAPPED, /* linux:228 (KEY_KBDILLUMTOGGLE) -> linux:228 (KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe5] = Q_KEY_CODE_UNMAPPED, /* linux:229 (KEY_KBDILLUMDOWN) -> linux:229 (KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe6] = Q_KEY_CODE_UNMAPPED, /* linux:230 (KEY_KBDILLUMUP) -> linux:230 (KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe7] = Q_KEY_CODE_UNMAPPED, /* linux:231 (KEY_SEND) -> linux:231 (KEY_SEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe8] = Q_KEY_CODE_UNMAPPED, /* linux:232 (KEY_REPLY) -> linux:232 (KEY_REPLY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe9] = Q_KEY_CODE_UNMAPPED, /* linux:233 (KEY_FORWARDMAIL) -> linux:233 (KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xea] = Q_KEY_CODE_UNMAPPED, /* linux:234 (KEY_SAVE) -> linux:234 (KEY_SAVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xeb] = Q_KEY_CODE_UNMAPPED, /* linux:235 (KEY_DOCUMENTS) -> linux:235 (KEY_DOCUMENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xec] = Q_KEY_CODE_UNMAPPED, /* linux:236 (KEY_BATTERY) -> linux:236 (KEY_BATTERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xed] = Q_KEY_CODE_UNMAPPED, /* linux:237 (KEY_BLUETOOTH) -> linux:237 (KEY_BLUETOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xee] = Q_KEY_CODE_UNMAPPED, /* linux:238 (KEY_WLAN) -> linux:238 (KEY_WLAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xef] = Q_KEY_CODE_UNMAPPED, /* linux:239 (KEY_UWB) -> linux:239 (KEY_UWB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf0] = Q_KEY_CODE_UNMAPPED, /* linux:240 (KEY_UNKNOWN) -> linux:240 (KEY_UNKNOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf1] = Q_KEY_CODE_UNMAPPED, /* linux:241 (KEY_VIDEO_NEXT) -> linux:241 (KEY_VIDEO_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf2] = Q_KEY_CODE_UNMAPPED, /* linux:242 (KEY_VIDEO_PREV) -> linux:242 (KEY_VIDEO_PREV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf3] = Q_KEY_CODE_UNMAPPED, /* linux:243 (KEY_BRIGHTNESS_CYCLE) -> linux:243 (KEY_BRIGHTNESS_CYCLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf4] = Q_KEY_CODE_UNMAPPED, /* linux:244 (KEY_BRIGHTNESS_ZERO) -> linux:244 (KEY_BRIGHTNESS_ZERO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf5] = Q_KEY_CODE_UNMAPPED, /* linux:245 (KEY_DISPLAY_OFF) -> linux:245 (KEY_DISPLAY_OFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf6] = Q_KEY_CODE_UNMAPPED, /* linux:246 (KEY_WIMAX) -> linux:246 (KEY_WIMAX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf7] = Q_KEY_CODE_UNMAPPED, /* linux:247 (unnamed) -> linux:247 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf8] = Q_KEY_CODE_UNMAPPED, /* linux:248 (unnamed) -> linux:248 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf9] = Q_KEY_CODE_UNMAPPED, /* linux:249 (unnamed) -> linux:249 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfa] = Q_KEY_CODE_UNMAPPED, /* linux:250 (unnamed) -> linux:250 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = Q_KEY_CODE_UNMAPPED, /* linux:251 (unnamed) -> linux:251 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfc] = Q_KEY_CODE_UNMAPPED, /* linux:252 (unnamed) -> linux:252 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfd] = Q_KEY_CODE_UNMAPPED, /* linux:253 (unnamed) -> linux:253 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfe] = Q_KEY_CODE_UNMAPPED, /* linux:254 (unnamed) -> linux:254 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xff] = Q_KEY_CODE_UNMAPPED, /* linux:255 (unnamed) -> linux:255 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x100] = Q_KEY_CODE_UNMAPPED, /* linux:256 (BTN_0) -> linux:256 (BTN_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x101] = Q_KEY_CODE_UNMAPPED, /* linux:257 (BTN_1) -> linux:257 (BTN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x102] = Q_KEY_CODE_UNMAPPED, /* linux:258 (BTN_2) -> linux:258 (BTN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x103] = Q_KEY_CODE_UNMAPPED, /* linux:259 (BTN_3) -> linux:259 (BTN_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x104] = Q_KEY_CODE_UNMAPPED, /* linux:260 (BTN_4) -> linux:260 (BTN_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x105] = Q_KEY_CODE_UNMAPPED, /* linux:261 (BTN_5) -> linux:261 (BTN_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x106] = Q_KEY_CODE_UNMAPPED, /* linux:262 (BTN_6) -> linux:262 (BTN_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x107] = Q_KEY_CODE_UNMAPPED, /* linux:263 (BTN_7) -> linux:263 (BTN_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x108] = Q_KEY_CODE_UNMAPPED, /* linux:264 (BTN_8) -> linux:264 (BTN_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x109] = Q_KEY_CODE_UNMAPPED, /* linux:265 (BTN_9) -> linux:265 (BTN_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x110] = Q_KEY_CODE_UNMAPPED, /* linux:272 (BTN_LEFT) -> linux:272 (BTN_LEFT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x111] = Q_KEY_CODE_UNMAPPED, /* linux:273 (BTN_RIGHT) -> linux:273 (BTN_RIGHT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x112] = Q_KEY_CODE_UNMAPPED, /* linux:274 (BTN_MIDDLE) -> linux:274 (BTN_MIDDLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x113] = Q_KEY_CODE_UNMAPPED, /* linux:275 (BTN_SIDE) -> linux:275 (BTN_SIDE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x114] = Q_KEY_CODE_UNMAPPED, /* linux:276 (BTN_EXTRA) -> linux:276 (BTN_EXTRA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x115] = Q_KEY_CODE_UNMAPPED, /* linux:277 (BTN_FORWARD) -> linux:277 (BTN_FORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x116] = Q_KEY_CODE_UNMAPPED, /* linux:278 (BTN_BACK) -> linux:278 (BTN_BACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x117] = Q_KEY_CODE_UNMAPPED, /* linux:279 (BTN_TASK) -> linux:279 (BTN_TASK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x120] = Q_KEY_CODE_UNMAPPED, /* linux:288 (BTN_TRIGGER) -> linux:288 (BTN_TRIGGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x121] = Q_KEY_CODE_UNMAPPED, /* linux:289 (BTN_THUMB) -> linux:289 (BTN_THUMB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x122] = Q_KEY_CODE_UNMAPPED, /* linux:290 (BTN_THUMB2) -> linux:290 (BTN_THUMB2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x123] = Q_KEY_CODE_UNMAPPED, /* linux:291 (BTN_TOP) -> linux:291 (BTN_TOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x124] = Q_KEY_CODE_UNMAPPED, /* linux:292 (BTN_TOP2) -> linux:292 (BTN_TOP2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x125] = Q_KEY_CODE_UNMAPPED, /* linux:293 (BTN_PINKIE) -> linux:293 (BTN_PINKIE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x126] = Q_KEY_CODE_UNMAPPED, /* linux:294 (BTN_BASE) -> linux:294 (BTN_BASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x127] = Q_KEY_CODE_UNMAPPED, /* linux:295 (BTN_BASE2) -> linux:295 (BTN_BASE2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x128] = Q_KEY_CODE_UNMAPPED, /* linux:296 (BTN_BASE3) -> linux:296 (BTN_BASE3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x129] = Q_KEY_CODE_UNMAPPED, /* linux:297 (BTN_BASE4) -> linux:297 (BTN_BASE4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12a] = Q_KEY_CODE_UNMAPPED, /* linux:298 (BTN_BASE5) -> linux:298 (BTN_BASE5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12b] = Q_KEY_CODE_UNMAPPED, /* linux:299 (BTN_BASE6) -> linux:299 (BTN_BASE6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12f] = Q_KEY_CODE_UNMAPPED, /* linux:303 (BTN_DEAD) -> linux:303 (BTN_DEAD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x130] = Q_KEY_CODE_UNMAPPED, /* linux:304 (BTN_A) -> linux:304 (BTN_A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x131] = Q_KEY_CODE_UNMAPPED, /* linux:305 (BTN_B) -> linux:305 (BTN_B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x132] = Q_KEY_CODE_UNMAPPED, /* linux:306 (BTN_C) -> linux:306 (BTN_C) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x133] = Q_KEY_CODE_UNMAPPED, /* linux:307 (BTN_X) -> linux:307 (BTN_X) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x134] = Q_KEY_CODE_UNMAPPED, /* linux:308 (BTN_Y) -> linux:308 (BTN_Y) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x135] = Q_KEY_CODE_UNMAPPED, /* linux:309 (BTN_Z) -> linux:309 (BTN_Z) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x136] = Q_KEY_CODE_UNMAPPED, /* linux:310 (BTN_TL) -> linux:310 (BTN_TL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x137] = Q_KEY_CODE_UNMAPPED, /* linux:311 (BTN_TR) -> linux:311 (BTN_TR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x138] = Q_KEY_CODE_UNMAPPED, /* linux:312 (BTN_TL2) -> linux:312 (BTN_TL2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x139] = Q_KEY_CODE_UNMAPPED, /* linux:313 (BTN_TR2) -> linux:313 (BTN_TR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13a] = Q_KEY_CODE_UNMAPPED, /* linux:314 (BTN_SELECT) -> linux:314 (BTN_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13b] = Q_KEY_CODE_UNMAPPED, /* linux:315 (BTN_START) -> linux:315 (BTN_START) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13c] = Q_KEY_CODE_UNMAPPED, /* linux:316 (BTN_MODE) -> linux:316 (BTN_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13d] = Q_KEY_CODE_UNMAPPED, /* linux:317 (BTN_THUMBL) -> linux:317 (BTN_THUMBL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13e] = Q_KEY_CODE_UNMAPPED, /* linux:318 (BTN_THUMBR) -> linux:318 (BTN_THUMBR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x140] = Q_KEY_CODE_UNMAPPED, /* linux:320 (BTN_TOOL_PEN) -> linux:320 (BTN_TOOL_PEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x141] = Q_KEY_CODE_UNMAPPED, /* linux:321 (BTN_TOOL_RUBBER) -> linux:321 (BTN_TOOL_RUBBER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x142] = Q_KEY_CODE_UNMAPPED, /* linux:322 (BTN_TOOL_BRUSH) -> linux:322 (BTN_TOOL_BRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x143] = Q_KEY_CODE_UNMAPPED, /* linux:323 (BTN_TOOL_PENCIL) -> linux:323 (BTN_TOOL_PENCIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x144] = Q_KEY_CODE_UNMAPPED, /* linux:324 (BTN_TOOL_AIRBRUSH) -> linux:324 (BTN_TOOL_AIRBRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x145] = Q_KEY_CODE_UNMAPPED, /* linux:325 (BTN_TOOL_FINGER) -> linux:325 (BTN_TOOL_FINGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x146] = Q_KEY_CODE_UNMAPPED, /* linux:326 (BTN_TOOL_MOUSE) -> linux:326 (BTN_TOOL_MOUSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x147] = Q_KEY_CODE_UNMAPPED, /* linux:327 (BTN_TOOL_LENS) -> linux:327 (BTN_TOOL_LENS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14a] = Q_KEY_CODE_UNMAPPED, /* linux:330 (BTN_TOUCH) -> linux:330 (BTN_TOUCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14b] = Q_KEY_CODE_UNMAPPED, /* linux:331 (BTN_STYLUS) -> linux:331 (BTN_STYLUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14c] = Q_KEY_CODE_UNMAPPED, /* linux:332 (BTN_STYLUS2) -> linux:332 (BTN_STYLUS2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14d] = Q_KEY_CODE_UNMAPPED, /* linux:333 (BTN_TOOL_DOUBLETAP) -> linux:333 (BTN_TOOL_DOUBLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14e] = Q_KEY_CODE_UNMAPPED, /* linux:334 (BTN_TOOL_TRIPLETAP) -> linux:334 (BTN_TOOL_TRIPLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14f] = Q_KEY_CODE_UNMAPPED, /* linux:335 (BTN_TOOL_QUADTAP) -> linux:335 (BTN_TOOL_QUADTAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x150] = Q_KEY_CODE_UNMAPPED, /* linux:336 (BTN_GEAR_DOWN) -> linux:336 (BTN_GEAR_DOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x151] = Q_KEY_CODE_UNMAPPED, /* linux:337 (BTN_GEAR_UP) -> linux:337 (BTN_GEAR_UP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x160] = Q_KEY_CODE_UNMAPPED, /* linux:352 (KEY_OK) -> linux:352 (KEY_OK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x161] = Q_KEY_CODE_UNMAPPED, /* linux:353 (KEY_SELECT) -> linux:353 (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x162] = Q_KEY_CODE_UNMAPPED, /* linux:354 (KEY_GOTO) -> linux:354 (KEY_GOTO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x163] = Q_KEY_CODE_UNMAPPED, /* linux:355 (KEY_CLEAR) -> linux:355 (KEY_CLEAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x164] = Q_KEY_CODE_UNMAPPED, /* linux:356 (KEY_POWER2) -> linux:356 (KEY_POWER2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x165] = Q_KEY_CODE_UNMAPPED, /* linux:357 (KEY_OPTION) -> linux:357 (KEY_OPTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x166] = Q_KEY_CODE_UNMAPPED, /* linux:358 (KEY_INFO) -> linux:358 (KEY_INFO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x167] = Q_KEY_CODE_UNMAPPED, /* linux:359 (KEY_TIME) -> linux:359 (KEY_TIME) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x168] = Q_KEY_CODE_UNMAPPED, /* linux:360 (KEY_VENDOR) -> linux:360 (KEY_VENDOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x169] = Q_KEY_CODE_UNMAPPED, /* linux:361 (KEY_ARCHIVE) -> linux:361 (KEY_ARCHIVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16a] = Q_KEY_CODE_UNMAPPED, /* linux:362 (KEY_PROGRAM) -> linux:362 (KEY_PROGRAM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16b] = Q_KEY_CODE_UNMAPPED, /* linux:363 (KEY_CHANNEL) -> linux:363 (KEY_CHANNEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16c] = Q_KEY_CODE_UNMAPPED, /* linux:364 (KEY_FAVORITES) -> linux:364 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16d] = Q_KEY_CODE_UNMAPPED, /* linux:365 (KEY_EPG) -> linux:365 (KEY_EPG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16e] = Q_KEY_CODE_UNMAPPED, /* linux:366 (KEY_PVR) -> linux:366 (KEY_PVR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16f] = Q_KEY_CODE_UNMAPPED, /* linux:367 (KEY_MHP) -> linux:367 (KEY_MHP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x170] = Q_KEY_CODE_UNMAPPED, /* linux:368 (KEY_LANGUAGE) -> linux:368 (KEY_LANGUAGE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x171] = Q_KEY_CODE_UNMAPPED, /* linux:369 (KEY_TITLE) -> linux:369 (KEY_TITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x172] = Q_KEY_CODE_UNMAPPED, /* linux:370 (KEY_SUBTITLE) -> linux:370 (KEY_SUBTITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x173] = Q_KEY_CODE_UNMAPPED, /* linux:371 (KEY_ANGLE) -> linux:371 (KEY_ANGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x174] = Q_KEY_CODE_UNMAPPED, /* linux:372 (KEY_ZOOM) -> linux:372 (KEY_ZOOM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x175] = Q_KEY_CODE_UNMAPPED, /* linux:373 (KEY_MODE) -> linux:373 (KEY_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x176] = Q_KEY_CODE_UNMAPPED, /* linux:374 (KEY_KEYBOARD) -> linux:374 (KEY_KEYBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x177] = Q_KEY_CODE_UNMAPPED, /* linux:375 (KEY_SCREEN) -> linux:375 (KEY_SCREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x178] = Q_KEY_CODE_UNMAPPED, /* linux:376 (KEY_PC) -> linux:376 (KEY_PC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x179] = Q_KEY_CODE_UNMAPPED, /* linux:377 (KEY_TV) -> linux:377 (KEY_TV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17a] = Q_KEY_CODE_UNMAPPED, /* linux:378 (KEY_TV2) -> linux:378 (KEY_TV2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17b] = Q_KEY_CODE_UNMAPPED, /* linux:379 (KEY_VCR) -> linux:379 (KEY_VCR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17c] = Q_KEY_CODE_UNMAPPED, /* linux:380 (KEY_VCR2) -> linux:380 (KEY_VCR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17d] = Q_KEY_CODE_UNMAPPED, /* linux:381 (KEY_SAT) -> linux:381 (KEY_SAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17e] = Q_KEY_CODE_UNMAPPED, /* linux:382 (KEY_SAT2) -> linux:382 (KEY_SAT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17f] = Q_KEY_CODE_UNMAPPED, /* linux:383 (KEY_CD) -> linux:383 (KEY_CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x180] = Q_KEY_CODE_UNMAPPED, /* linux:384 (KEY_TAPE) -> linux:384 (KEY_TAPE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x181] = Q_KEY_CODE_UNMAPPED, /* linux:385 (KEY_RADIO) -> linux:385 (KEY_RADIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x182] = Q_KEY_CODE_UNMAPPED, /* linux:386 (KEY_TUNER) -> linux:386 (KEY_TUNER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x183] = Q_KEY_CODE_UNMAPPED, /* linux:387 (KEY_PLAYER) -> linux:387 (KEY_PLAYER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x184] = Q_KEY_CODE_UNMAPPED, /* linux:388 (KEY_TEXT) -> linux:388 (KEY_TEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x185] = Q_KEY_CODE_UNMAPPED, /* linux:389 (KEY_DVD) -> linux:389 (KEY_DVD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x186] = Q_KEY_CODE_UNMAPPED, /* linux:390 (KEY_AUX) -> linux:390 (KEY_AUX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x187] = Q_KEY_CODE_UNMAPPED, /* linux:391 (KEY_MP3) -> linux:391 (KEY_MP3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x188] = Q_KEY_CODE_UNMAPPED, /* linux:392 (KEY_AUDIO) -> linux:392 (KEY_AUDIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x189] = Q_KEY_CODE_UNMAPPED, /* linux:393 (KEY_VIDEO) -> linux:393 (KEY_VIDEO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18a] = Q_KEY_CODE_UNMAPPED, /* linux:394 (KEY_DIRECTORY) -> linux:394 (KEY_DIRECTORY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18b] = Q_KEY_CODE_UNMAPPED, /* linux:395 (KEY_LIST) -> linux:395 (KEY_LIST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18c] = Q_KEY_CODE_UNMAPPED, /* linux:396 (KEY_MEMO) -> linux:396 (KEY_MEMO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18d] = Q_KEY_CODE_UNMAPPED, /* linux:397 (KEY_CALENDAR) -> linux:397 (KEY_CALENDAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18e] = Q_KEY_CODE_UNMAPPED, /* linux:398 (KEY_RED) -> linux:398 (KEY_RED) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18f] = Q_KEY_CODE_UNMAPPED, /* linux:399 (KEY_GREEN) -> linux:399 (KEY_GREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x190] = Q_KEY_CODE_UNMAPPED, /* linux:400 (KEY_YELLOW) -> linux:400 (KEY_YELLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x191] = Q_KEY_CODE_UNMAPPED, /* linux:401 (KEY_BLUE) -> linux:401 (KEY_BLUE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x192] = Q_KEY_CODE_UNMAPPED, /* linux:402 (KEY_CHANNELUP) -> linux:402 (KEY_CHANNELUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x193] = Q_KEY_CODE_UNMAPPED, /* linux:403 (KEY_CHANNELDOWN) -> linux:403 (KEY_CHANNELDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x194] = Q_KEY_CODE_UNMAPPED, /* linux:404 (KEY_FIRST) -> linux:404 (KEY_FIRST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x195] = Q_KEY_CODE_UNMAPPED, /* linux:405 (KEY_LAST) -> linux:405 (KEY_LAST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x196] = Q_KEY_CODE_UNMAPPED, /* linux:406 (KEY_AB) -> linux:406 (KEY_AB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x197] = Q_KEY_CODE_UNMAPPED, /* linux:407 (KEY_NEXT) -> linux:407 (KEY_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x198] = Q_KEY_CODE_UNMAPPED, /* linux:408 (KEY_RESTART) -> linux:408 (KEY_RESTART) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x199] = Q_KEY_CODE_UNMAPPED, /* linux:409 (KEY_SLOW) -> linux:409 (KEY_SLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19a] = Q_KEY_CODE_UNMAPPED, /* linux:410 (KEY_SHUFFLE) -> linux:410 (KEY_SHUFFLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19b] = Q_KEY_CODE_UNMAPPED, /* linux:411 (KEY_BREAK) -> linux:411 (KEY_BREAK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19c] = Q_KEY_CODE_UNMAPPED, /* linux:412 (KEY_PREVIOUS) -> linux:412 (KEY_PREVIOUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19d] = Q_KEY_CODE_UNMAPPED, /* linux:413 (KEY_DIGITS) -> linux:413 (KEY_DIGITS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19e] = Q_KEY_CODE_UNMAPPED, /* linux:414 (KEY_TEEN) -> linux:414 (KEY_TEEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19f] = Q_KEY_CODE_UNMAPPED, /* linux:415 (KEY_TWEN) -> linux:415 (KEY_TWEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a0] = Q_KEY_CODE_UNMAPPED, /* linux:416 (KEY_VIDEOPHONE) -> linux:416 (KEY_VIDEOPHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a1] = Q_KEY_CODE_UNMAPPED, /* linux:417 (KEY_GAMES) -> linux:417 (KEY_GAMES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a2] = Q_KEY_CODE_UNMAPPED, /* linux:418 (KEY_ZOOMIN) -> linux:418 (KEY_ZOOMIN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a3] = Q_KEY_CODE_UNMAPPED, /* linux:419 (KEY_ZOOMOUT) -> linux:419 (KEY_ZOOMOUT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a4] = Q_KEY_CODE_UNMAPPED, /* linux:420 (KEY_ZOOMRESET) -> linux:420 (KEY_ZOOMRESET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a5] = Q_KEY_CODE_UNMAPPED, /* linux:421 (KEY_WORDPROCESSOR) -> linux:421 (KEY_WORDPROCESSOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a6] = Q_KEY_CODE_UNMAPPED, /* linux:422 (KEY_EDITOR) -> linux:422 (KEY_EDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a7] = Q_KEY_CODE_UNMAPPED, /* linux:423 (KEY_SPREADSHEET) -> linux:423 (KEY_SPREADSHEET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a8] = Q_KEY_CODE_UNMAPPED, /* linux:424 (KEY_GRAPHICSEDITOR) -> linux:424 (KEY_GRAPHICSEDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a9] = Q_KEY_CODE_UNMAPPED, /* linux:425 (KEY_PRESENTATION) -> linux:425 (KEY_PRESENTATION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1aa] = Q_KEY_CODE_UNMAPPED, /* linux:426 (KEY_DATABASE) -> linux:426 (KEY_DATABASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ab] = Q_KEY_CODE_UNMAPPED, /* linux:427 (KEY_NEWS) -> linux:427 (KEY_NEWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ac] = Q_KEY_CODE_UNMAPPED, /* linux:428 (KEY_VOICEMAIL) -> linux:428 (KEY_VOICEMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ad] = Q_KEY_CODE_UNMAPPED, /* linux:429 (KEY_ADDRESSBOOK) -> linux:429 (KEY_ADDRESSBOOK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ae] = Q_KEY_CODE_UNMAPPED, /* linux:430 (KEY_MESSENGER) -> linux:430 (KEY_MESSENGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1af] = Q_KEY_CODE_UNMAPPED, /* linux:431 (KEY_DISPLAYTOGGLE) -> linux:431 (KEY_DISPLAYTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b0] = Q_KEY_CODE_UNMAPPED, /* linux:432 (KEY_SPELLCHECK) -> linux:432 (KEY_SPELLCHECK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b1] = Q_KEY_CODE_UNMAPPED, /* linux:433 (KEY_LOGOFF) -> linux:433 (KEY_LOGOFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b2] = Q_KEY_CODE_UNMAPPED, /* linux:434 (KEY_DOLLAR) -> linux:434 (KEY_DOLLAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b3] = Q_KEY_CODE_UNMAPPED, /* linux:435 (KEY_EURO) -> linux:435 (KEY_EURO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b4] = Q_KEY_CODE_UNMAPPED, /* linux:436 (KEY_FRAMEBACK) -> linux:436 (KEY_FRAMEBACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b5] = Q_KEY_CODE_UNMAPPED, /* linux:437 (KEY_FRAMEFORWARD) -> linux:437 (KEY_FRAMEFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b6] = Q_KEY_CODE_UNMAPPED, /* linux:438 (KEY_CONTEXT_MENU) -> linux:438 (KEY_CONTEXT_MENU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b7] = Q_KEY_CODE_UNMAPPED, /* linux:439 (KEY_MEDIA_REPEAT) -> linux:439 (KEY_MEDIA_REPEAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c0] = Q_KEY_CODE_UNMAPPED, /* linux:448 (KEY_DEL_EOL) -> linux:448 (KEY_DEL_EOL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c1] = Q_KEY_CODE_UNMAPPED, /* linux:449 (KEY_DEL_EOS) -> linux:449 (KEY_DEL_EOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c2] = Q_KEY_CODE_UNMAPPED, /* linux:450 (KEY_INS_LINE) -> linux:450 (KEY_INS_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c3] = Q_KEY_CODE_UNMAPPED, /* linux:451 (KEY_DEL_LINE) -> linux:451 (KEY_DEL_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d0] = Q_KEY_CODE_UNMAPPED, /* linux:464 (KEY_FN) -> linux:464 (KEY_FN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d1] = Q_KEY_CODE_UNMAPPED, /* linux:465 (KEY_FN_ESC) -> linux:465 (KEY_FN_ESC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d2] = Q_KEY_CODE_UNMAPPED, /* linux:466 (KEY_FN_F1) -> linux:466 (KEY_FN_F1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d3] = Q_KEY_CODE_UNMAPPED, /* linux:467 (KEY_FN_F2) -> linux:467 (KEY_FN_F2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d4] = Q_KEY_CODE_UNMAPPED, /* linux:468 (KEY_FN_F3) -> linux:468 (KEY_FN_F3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d5] = Q_KEY_CODE_UNMAPPED, /* linux:469 (KEY_FN_F4) -> linux:469 (KEY_FN_F4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d6] = Q_KEY_CODE_UNMAPPED, /* linux:470 (KEY_FN_F5) -> linux:470 (KEY_FN_F5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d7] = Q_KEY_CODE_UNMAPPED, /* linux:471 (KEY_FN_F6) -> linux:471 (KEY_FN_F6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d8] = Q_KEY_CODE_UNMAPPED, /* linux:472 (KEY_FN_F7) -> linux:472 (KEY_FN_F7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d9] = Q_KEY_CODE_UNMAPPED, /* linux:473 (KEY_FN_F8) -> linux:473 (KEY_FN_F8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1da] = Q_KEY_CODE_UNMAPPED, /* linux:474 (KEY_FN_F9) -> linux:474 (KEY_FN_F9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1db] = Q_KEY_CODE_UNMAPPED, /* linux:475 (KEY_FN_F10) -> linux:475 (KEY_FN_F10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dc] = Q_KEY_CODE_UNMAPPED, /* linux:476 (KEY_FN_F11) -> linux:476 (KEY_FN_F11) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dd] = Q_KEY_CODE_UNMAPPED, /* linux:477 (KEY_FN_F12) -> linux:477 (KEY_FN_F12) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1de] = Q_KEY_CODE_UNMAPPED, /* linux:478 (KEY_FN_1) -> linux:478 (KEY_FN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1df] = Q_KEY_CODE_UNMAPPED, /* linux:479 (KEY_FN_2) -> linux:479 (KEY_FN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e0] = Q_KEY_CODE_UNMAPPED, /* linux:480 (KEY_FN_D) -> linux:480 (KEY_FN_D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e1] = Q_KEY_CODE_UNMAPPED, /* linux:481 (KEY_FN_E) -> linux:481 (KEY_FN_E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e2] = Q_KEY_CODE_UNMAPPED, /* linux:482 (KEY_FN_F) -> linux:482 (KEY_FN_F) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e3] = Q_KEY_CODE_UNMAPPED, /* linux:483 (KEY_FN_S) -> linux:483 (KEY_FN_S) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e4] = Q_KEY_CODE_UNMAPPED, /* linux:484 (KEY_FN_B) -> linux:484 (KEY_FN_B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f1] = Q_KEY_CODE_UNMAPPED, /* linux:497 (KEY_BRL_DOT1) -> linux:497 (KEY_BRL_DOT1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f2] = Q_KEY_CODE_UNMAPPED, /* linux:498 (KEY_BRL_DOT2) -> linux:498 (KEY_BRL_DOT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f3] = Q_KEY_CODE_UNMAPPED, /* linux:499 (KEY_BRL_DOT3) -> linux:499 (KEY_BRL_DOT3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f4] = Q_KEY_CODE_UNMAPPED, /* linux:500 (KEY_BRL_DOT4) -> linux:500 (KEY_BRL_DOT4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f5] = Q_KEY_CODE_UNMAPPED, /* linux:501 (KEY_BRL_DOT5) -> linux:501 (KEY_BRL_DOT5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f6] = Q_KEY_CODE_UNMAPPED, /* linux:502 (KEY_BRL_DOT6) -> linux:502 (KEY_BRL_DOT6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f7] = Q_KEY_CODE_UNMAPPED, /* linux:503 (KEY_BRL_DOT7) -> linux:503 (KEY_BRL_DOT7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f8] = Q_KEY_CODE_UNMAPPED, /* linux:504 (KEY_BRL_DOT8) -> linux:504 (KEY_BRL_DOT8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f9] = Q_KEY_CODE_UNMAPPED, /* linux:505 (KEY_BRL_DOT9) -> linux:505 (KEY_BRL_DOT9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fa] = Q_KEY_CODE_UNMAPPED, /* linux:506 (KEY_BRL_DOT10) -> linux:506 (KEY_BRL_DOT10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x200] = Q_KEY_CODE_UNMAPPED, /* linux:512 (KEY_NUMERIC_0) -> linux:512 (KEY_NUMERIC_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x201] = Q_KEY_CODE_UNMAPPED, /* linux:513 (KEY_NUMERIC_1) -> linux:513 (KEY_NUMERIC_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x202] = Q_KEY_CODE_UNMAPPED, /* linux:514 (KEY_NUMERIC_2) -> linux:514 (KEY_NUMERIC_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x203] = Q_KEY_CODE_UNMAPPED, /* linux:515 (KEY_NUMERIC_3) -> linux:515 (KEY_NUMERIC_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x204] = Q_KEY_CODE_UNMAPPED, /* linux:516 (KEY_NUMERIC_4) -> linux:516 (KEY_NUMERIC_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x205] = Q_KEY_CODE_UNMAPPED, /* linux:517 (KEY_NUMERIC_5) -> linux:517 (KEY_NUMERIC_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x206] = Q_KEY_CODE_UNMAPPED, /* linux:518 (KEY_NUMERIC_6) -> linux:518 (KEY_NUMERIC_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x207] = Q_KEY_CODE_UNMAPPED, /* linux:519 (KEY_NUMERIC_7) -> linux:519 (KEY_NUMERIC_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x208] = Q_KEY_CODE_UNMAPPED, /* linux:520 (KEY_NUMERIC_8) -> linux:520 (KEY_NUMERIC_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x209] = Q_KEY_CODE_UNMAPPED, /* linux:521 (KEY_NUMERIC_9) -> linux:521 (KEY_NUMERIC_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20a] = Q_KEY_CODE_UNMAPPED, /* linux:522 (KEY_NUMERIC_STAR) -> linux:522 (KEY_NUMERIC_STAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20b] = Q_KEY_CODE_UNMAPPED, /* linux:523 (KEY_NUMERIC_POUND) -> linux:523 (KEY_NUMERIC_POUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20c] = Q_KEY_CODE_UNMAPPED, /* linux:524 (KEY_RFKILL) -> linux:524 (KEY_RFKILL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x244] = Q_KEY_CODE_UNMAPPED, /* linux:580 (KEY_ANDROID_RECENTS) -> linux:580 (KEY_ANDROID_RECENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_linux_to_qcode_len = sizeof(qemu_input_map_linux_to_qcode)/sizeof(qemu_input_map_linux_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-atset1.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset1.c
new file mode 100644
index 0000000000..3140ac2190
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset1.c
@@ -0,0 +1,154 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_atset1 code-map keymaps.csv qcode atset1
+*/
+const guint16 qemu_input_map_qcode_to_atset1[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_0] = 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> atset1:11 */
+ [Q_KEY_CODE_1] = 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> atset1:2 */
+ [Q_KEY_CODE_2] = 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> atset1:3 */
+ [Q_KEY_CODE_3] = 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> atset1:4 */
+ [Q_KEY_CODE_4] = 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> atset1:5 */
+ [Q_KEY_CODE_5] = 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> atset1:6 */
+ [Q_KEY_CODE_6] = 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> atset1:7 */
+ [Q_KEY_CODE_7] = 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> atset1:8 */
+ [Q_KEY_CODE_8] = 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> atset1:9 */
+ [Q_KEY_CODE_9] = 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> atset1:10 */
+ [Q_KEY_CODE_A] = 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> atset1:30 */
+ [Q_KEY_CODE_AC_BACK] = 0xe06a, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> linux:158 (KEY_BACK) -> atset1:57450 */
+ [Q_KEY_CODE_AC_BOOKMARKS] = 0xe066, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> atset1:57446 */
+ [Q_KEY_CODE_AC_FORWARD] = 0xe069, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) -> linux:159 (KEY_FORWARD) -> atset1:57449 */
+ [Q_KEY_CODE_AC_HOME] = 0xe032, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> linux:172 (KEY_HOMEPAGE) -> atset1:57394 */
+ [Q_KEY_CODE_AC_REFRESH] = 0xe067, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) -> linux:173 (KEY_REFRESH) -> atset1:57447 */
+ [Q_KEY_CODE_AGAIN] = 0xe005, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> atset1:57349 */
+ [Q_KEY_CODE_ALT] = 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> atset1:56 */
+ [Q_KEY_CODE_ALT_R] = 0xe038, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> atset1:57400 */
+ [Q_KEY_CODE_APOSTROPHE] = 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> atset1:40 */
+ [Q_KEY_CODE_ASTERISK] = 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset1:55 */
+ [Q_KEY_CODE_AUDIOMUTE] = 0xe020, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) -> linux:113 (KEY_MUTE) -> atset1:57376 */
+ [Q_KEY_CODE_AUDIONEXT] = 0xe019, /* qcode:Q_KEY_CODE_AUDIONEXT (audionext) -> linux:163 (KEY_NEXTSONG) -> atset1:57369 */
+ [Q_KEY_CODE_AUDIOPLAY] = 0xe022, /* qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) -> linux:164 (KEY_PLAYPAUSE) -> atset1:57378 */
+ [Q_KEY_CODE_AUDIOPREV] = 0xe010, /* qcode:Q_KEY_CODE_AUDIOPREV (audioprev) -> linux:165 (KEY_PREVIOUSSONG) -> atset1:57360 */
+ [Q_KEY_CODE_AUDIOSTOP] = 0xe024, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) -> linux:166 (KEY_STOPCD) -> atset1:57380 */
+ [Q_KEY_CODE_B] = 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> atset1:48 */
+ [Q_KEY_CODE_BACKSLASH] = 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> atset1:43 */
+ [Q_KEY_CODE_BACKSPACE] = 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> atset1:14 */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> atset1:26 */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset1:27 */
+ [Q_KEY_CODE_C] = 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> atset1:46 */
+ [Q_KEY_CODE_CALCULATOR] = 0xe021, /* qcode:Q_KEY_CODE_CALCULATOR (calculator) -> linux:140 (KEY_CALC) -> atset1:57377 */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> atset1:58 */
+ [Q_KEY_CODE_COMMA] = 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> atset1:51 */
+ [Q_KEY_CODE_COMPOSE] = 0xe05d, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> atset1:57437 */
+ [Q_KEY_CODE_COMPUTER] = 0xe06b, /* qcode:Q_KEY_CODE_COMPUTER (computer) -> linux:157 (KEY_COMPUTER) -> atset1:57451 */
+ [Q_KEY_CODE_COPY] = 0xe078, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> atset1:57464 */
+ [Q_KEY_CODE_CTRL] = 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> atset1:29 */
+ [Q_KEY_CODE_CTRL_R] = 0xe01d, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> atset1:57373 */
+ [Q_KEY_CODE_CUT] = 0xe03c, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> atset1:57404 */
+ [Q_KEY_CODE_D] = 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> atset1:32 */
+ [Q_KEY_CODE_DELETE] = 0xe053, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> atset1:57427 */
+ [Q_KEY_CODE_DOT] = 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> atset1:52 */
+ [Q_KEY_CODE_DOWN] = 0xe050, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> atset1:57424 */
+ [Q_KEY_CODE_E] = 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> atset1:18 */
+ [Q_KEY_CODE_END] = 0xe04f, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> atset1:57423 */
+ [Q_KEY_CODE_EQUAL] = 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> atset1:13 */
+ [Q_KEY_CODE_ESC] = 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> atset1:1 */
+ [Q_KEY_CODE_F] = 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> atset1:33 */
+ [Q_KEY_CODE_F1] = 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> atset1:59 */
+ [Q_KEY_CODE_F10] = 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> atset1:68 */
+ [Q_KEY_CODE_F11] = 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> atset1:87 */
+ [Q_KEY_CODE_F12] = 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> atset1:88 */
+ [Q_KEY_CODE_F2] = 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> atset1:60 */
+ [Q_KEY_CODE_F3] = 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> atset1:61 */
+ [Q_KEY_CODE_F4] = 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> atset1:62 */
+ [Q_KEY_CODE_F5] = 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> atset1:63 */
+ [Q_KEY_CODE_F6] = 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> atset1:64 */
+ [Q_KEY_CODE_F7] = 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> atset1:65 */
+ [Q_KEY_CODE_F8] = 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> atset1:66 */
+ [Q_KEY_CODE_F9] = 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> atset1:67 */
+ [Q_KEY_CODE_FIND] = 0xe041, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> atset1:57409 */
+ [Q_KEY_CODE_FRONT] = 0xe00c, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:132 (KEY_FRONT) -> atset1:57356 */
+ [Q_KEY_CODE_G] = 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> atset1:34 */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> atset1:41 */
+ [Q_KEY_CODE_H] = 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> atset1:35 */
+ [Q_KEY_CODE_HELP] = 0xe075, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> atset1:57461 */
+ [Q_KEY_CODE_HENKAN] = 0x79, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> linux:92 (KEY_HENKAN) -> atset1:121 */
+ [Q_KEY_CODE_HIRAGANA] = 0x77, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) -> linux:91 (KEY_HIRAGANA) -> atset1:119 */
+ [Q_KEY_CODE_HOME] = 0xe047, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> atset1:57415 */
+ [Q_KEY_CODE_I] = 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> atset1:23 */
+ [Q_KEY_CODE_INSERT] = 0xe052, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> atset1:57426 */
+ [Q_KEY_CODE_J] = 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> atset1:36 */
+ [Q_KEY_CODE_K] = 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> atset1:37 */
+ [Q_KEY_CODE_KP_0] = 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> atset1:82 */
+ [Q_KEY_CODE_KP_1] = 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> atset1:79 */
+ [Q_KEY_CODE_KP_2] = 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> atset1:80 */
+ [Q_KEY_CODE_KP_3] = 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> atset1:81 */
+ [Q_KEY_CODE_KP_4] = 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> atset1:75 */
+ [Q_KEY_CODE_KP_5] = 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> atset1:76 */
+ [Q_KEY_CODE_KP_6] = 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> atset1:77 */
+ [Q_KEY_CODE_KP_7] = 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> atset1:71 */
+ [Q_KEY_CODE_KP_8] = 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> atset1:72 */
+ [Q_KEY_CODE_KP_9] = 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> atset1:73 */
+ [Q_KEY_CODE_KP_ADD] = 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> atset1:78 */
+ [Q_KEY_CODE_KP_COMMA] = 0x7e, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) -> linux:121 (KEY_KPCOMMA) -> atset1:126 */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> atset1:83 */
+ [Q_KEY_CODE_KP_DIVIDE] = 0xe035, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> atset1:57397 */
+ [Q_KEY_CODE_KP_ENTER] = 0xe01c, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> atset1:57372 */
+ [Q_KEY_CODE_KP_EQUALS] = 0x59, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> atset1:89 */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset1:55 */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> atset1:74 */
+ [Q_KEY_CODE_L] = 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> atset1:38 */
+ [Q_KEY_CODE_LEFT] = 0xe04b, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> atset1:57419 */
+ [Q_KEY_CODE_LESS] = 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> atset1:86 */
+ [Q_KEY_CODE_LF] = 0x5b, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_LINEFEED) -> atset1:91 */
+ [Q_KEY_CODE_M] = 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> atset1:50 */
+ [Q_KEY_CODE_MAIL] = 0xe06c, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155 (KEY_MAIL) -> atset1:57452 */
+ [Q_KEY_CODE_MEDIASELECT] = 0xe06d, /* qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) -> linux:226 (KEY_MEDIA) -> atset1:57453 */
+ [Q_KEY_CODE_MENU] = 0xe01e, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139 (KEY_MENU) -> atset1:57374 */
+ [Q_KEY_CODE_META_L] = 0xe05b, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> atset1:57435 */
+ [Q_KEY_CODE_META_R] = 0xe05c, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> atset1:57436 */
+ [Q_KEY_CODE_MINUS] = 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> atset1:12 */
+ [Q_KEY_CODE_N] = 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> atset1:49 */
+ [Q_KEY_CODE_NUM_LOCK] = 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> atset1:69 */
+ [Q_KEY_CODE_O] = 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> atset1:24 */
+ [Q_KEY_CODE_OPEN] = 0x64, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> atset1:100 */
+ [Q_KEY_CODE_P] = 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> atset1:25 */
+ [Q_KEY_CODE_PASTE] = 0x65, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> atset1:101 */
+ [Q_KEY_CODE_PAUSE] = 0xe046, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> atset1:57414 */
+ [Q_KEY_CODE_PGDN] = 0xe051, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> atset1:57425 */
+ [Q_KEY_CODE_PGUP] = 0xe049, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> atset1:57417 */
+ [Q_KEY_CODE_POWER] = 0xe05e, /* qcode:Q_KEY_CODE_POWER (power) -> linux:116 (KEY_POWER) -> atset1:57438 */
+ [Q_KEY_CODE_PRINT] = 0x54, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> atset1:84 */
+ [Q_KEY_CODE_PROPS] = 0xe006, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> atset1:57350 */
+ [Q_KEY_CODE_Q] = 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> atset1:16 */
+ [Q_KEY_CODE_R] = 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> atset1:19 */
+ [Q_KEY_CODE_RET] = 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> atset1:28 */
+ [Q_KEY_CODE_RIGHT] = 0xe04d, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> atset1:57421 */
+ [Q_KEY_CODE_RO] = 0x73, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_RO) -> atset1:115 */
+ [Q_KEY_CODE_S] = 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> atset1:31 */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset1:70 */
+ [Q_KEY_CODE_SEMICOLON] = 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> atset1:39 */
+ [Q_KEY_CODE_SHIFT] = 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> atset1:42 */
+ [Q_KEY_CODE_SHIFT_R] = 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> atset1:54 */
+ [Q_KEY_CODE_SLASH] = 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> atset1:53 */
+ [Q_KEY_CODE_SLEEP] = 0xe05f, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:142 (KEY_SLEEP) -> atset1:57439 */
+ [Q_KEY_CODE_SPC] = 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> atset1:57 */
+ [Q_KEY_CODE_STOP] = 0xe068, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> atset1:57448 */
+ [Q_KEY_CODE_SYSRQ] = 0x54, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> atset1:84 */
+ [Q_KEY_CODE_T] = 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> atset1:20 */
+ [Q_KEY_CODE_TAB] = 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> atset1:15 */
+ [Q_KEY_CODE_U] = 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> atset1:22 */
+ [Q_KEY_CODE_UNDO] = 0xe007, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> atset1:57351 */
+ [Q_KEY_CODE_UP] = 0xe048, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> atset1:57416 */
+ [Q_KEY_CODE_V] = 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> atset1:47 */
+ [Q_KEY_CODE_VOLUMEDOWN] = 0xe02e, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) -> linux:114 (KEY_VOLUMEDOWN) -> atset1:57390 */
+ [Q_KEY_CODE_VOLUMEUP] = 0xe030, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) -> linux:115 (KEY_VOLUMEUP) -> atset1:57392 */
+ [Q_KEY_CODE_W] = 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> atset1:17 */
+ [Q_KEY_CODE_WAKE] = 0xe063, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143 (KEY_WAKEUP) -> atset1:57443 */
+ [Q_KEY_CODE_X] = 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> atset1:45 */
+ [Q_KEY_CODE_Y] = 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> atset1:21 */
+ [Q_KEY_CODE_YEN] = 0x7d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (KEY_YEN) -> atset1:125 */
+ [Q_KEY_CODE_Z] = 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> atset1:44 */
+};
+const guint qemu_input_map_qcode_to_atset1_len = sizeof(qemu_input_map_qcode_to_atset1)/sizeof(qemu_input_map_qcode_to_atset1[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-atset2.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset2.c
new file mode 100644
index 0000000000..88da77b4d2
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset2.c
@@ -0,0 +1,142 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_atset2 code-map keymaps.csv qcode atset2
+*/
+const guint16 qemu_input_map_qcode_to_atset2[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_0] = 0x45, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> atset2:69 */
+ [Q_KEY_CODE_1] = 0x16, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> atset2:22 */
+ [Q_KEY_CODE_2] = 0x1e, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> atset2:30 */
+ [Q_KEY_CODE_3] = 0x26, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> atset2:38 */
+ [Q_KEY_CODE_4] = 0x25, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> atset2:37 */
+ [Q_KEY_CODE_5] = 0x2e, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> atset2:46 */
+ [Q_KEY_CODE_6] = 0x36, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> atset2:54 */
+ [Q_KEY_CODE_7] = 0x3d, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> atset2:61 */
+ [Q_KEY_CODE_8] = 0x3e, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> atset2:62 */
+ [Q_KEY_CODE_9] = 0x46, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> atset2:70 */
+ [Q_KEY_CODE_A] = 0x1c, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> atset2:28 */
+ [Q_KEY_CODE_AC_BACK] = 0xe038, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> linux:158 (KEY_BACK) -> atset2:57400 */
+ [Q_KEY_CODE_AC_BOOKMARKS] = 0xe018, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> atset2:57368 */
+ [Q_KEY_CODE_AC_FORWARD] = 0xe030, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) -> linux:159 (KEY_FORWARD) -> atset2:57392 */
+ [Q_KEY_CODE_AC_HOME] = 0xe03a, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> linux:172 (KEY_HOMEPAGE) -> atset2:57402 */
+ [Q_KEY_CODE_AC_REFRESH] = 0xe020, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) -> linux:173 (KEY_REFRESH) -> atset2:57376 */
+ [Q_KEY_CODE_ALT] = 0x11, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> atset2:17 */
+ [Q_KEY_CODE_ALT_R] = 0xe011, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> atset2:57361 */
+ [Q_KEY_CODE_APOSTROPHE] = 0x52, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> atset2:82 */
+ [Q_KEY_CODE_ASTERISK] = 0x7c, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset2:124 */
+ [Q_KEY_CODE_AUDIOMUTE] = 0xe023, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) -> linux:113 (KEY_MUTE) -> atset2:57379 */
+ [Q_KEY_CODE_AUDIONEXT] = 0xe04d, /* qcode:Q_KEY_CODE_AUDIONEXT (audionext) -> linux:163 (KEY_NEXTSONG) -> atset2:57421 */
+ [Q_KEY_CODE_AUDIOPLAY] = 0xe034, /* qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) -> linux:164 (KEY_PLAYPAUSE) -> atset2:57396 */
+ [Q_KEY_CODE_AUDIOPREV] = 0xe015, /* qcode:Q_KEY_CODE_AUDIOPREV (audioprev) -> linux:165 (KEY_PREVIOUSSONG) -> atset2:57365 */
+ [Q_KEY_CODE_AUDIOSTOP] = 0xe03b, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) -> linux:166 (KEY_STOPCD) -> atset2:57403 */
+ [Q_KEY_CODE_B] = 0x32, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> atset2:50 */
+ [Q_KEY_CODE_BACKSLASH] = 0x5d, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> atset2:93 */
+ [Q_KEY_CODE_BACKSPACE] = 0x66, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> atset2:102 */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x54, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> atset2:84 */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x5b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset2:91 */
+ [Q_KEY_CODE_C] = 0x21, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> atset2:33 */
+ [Q_KEY_CODE_CALCULATOR] = 0xe02b, /* qcode:Q_KEY_CODE_CALCULATOR (calculator) -> linux:140 (KEY_CALC) -> atset2:57387 */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x58, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> atset2:88 */
+ [Q_KEY_CODE_COMMA] = 0x41, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> atset2:65 */
+ [Q_KEY_CODE_COMPOSE] = 0xe02f, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> atset2:57391 */
+ [Q_KEY_CODE_COMPUTER] = 0xe040, /* qcode:Q_KEY_CODE_COMPUTER (computer) -> linux:157 (KEY_COMPUTER) -> atset2:57408 */
+ [Q_KEY_CODE_CTRL] = 0x14, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> atset2:20 */
+ [Q_KEY_CODE_CTRL_R] = 0xe014, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> atset2:57364 */
+ [Q_KEY_CODE_D] = 0x23, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> atset2:35 */
+ [Q_KEY_CODE_DELETE] = 0xe071, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> atset2:57457 */
+ [Q_KEY_CODE_DOT] = 0x49, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> atset2:73 */
+ [Q_KEY_CODE_DOWN] = 0xe072, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> atset2:57458 */
+ [Q_KEY_CODE_E] = 0x24, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> atset2:36 */
+ [Q_KEY_CODE_END] = 0xe069, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> atset2:57449 */
+ [Q_KEY_CODE_EQUAL] = 0x55, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> atset2:85 */
+ [Q_KEY_CODE_ESC] = 0x76, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> atset2:118 */
+ [Q_KEY_CODE_F] = 0x2b, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> atset2:43 */
+ [Q_KEY_CODE_F1] = 0x5, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> atset2:5 */
+ [Q_KEY_CODE_F10] = 0x9, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> atset2:9 */
+ [Q_KEY_CODE_F11] = 0x78, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> atset2:120 */
+ [Q_KEY_CODE_F12] = 0x7, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> atset2:7 */
+ [Q_KEY_CODE_F2] = 0x6, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> atset2:6 */
+ [Q_KEY_CODE_F3] = 0x4, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> atset2:4 */
+ [Q_KEY_CODE_F4] = 0xc, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> atset2:12 */
+ [Q_KEY_CODE_F5] = 0x3, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> atset2:3 */
+ [Q_KEY_CODE_F6] = 0xb, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> atset2:11 */
+ [Q_KEY_CODE_F7] = 0x83, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> atset2:131 */
+ [Q_KEY_CODE_F8] = 0xa, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> atset2:10 */
+ [Q_KEY_CODE_F9] = 0x1, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> atset2:1 */
+ [Q_KEY_CODE_G] = 0x34, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> atset2:52 */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0xe, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> atset2:14 */
+ [Q_KEY_CODE_H] = 0x33, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> atset2:51 */
+ [Q_KEY_CODE_HENKAN] = 0x64, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> linux:92 (KEY_HENKAN) -> atset2:100 */
+ [Q_KEY_CODE_HIRAGANA] = 0x62, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) -> linux:91 (KEY_HIRAGANA) -> atset2:98 */
+ [Q_KEY_CODE_HOME] = 0xe06c, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> atset2:57452 */
+ [Q_KEY_CODE_I] = 0x43, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> atset2:67 */
+ [Q_KEY_CODE_INSERT] = 0xe070, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> atset2:57456 */
+ [Q_KEY_CODE_J] = 0x3b, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> atset2:59 */
+ [Q_KEY_CODE_K] = 0x42, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> atset2:66 */
+ [Q_KEY_CODE_KP_0] = 0x70, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> atset2:112 */
+ [Q_KEY_CODE_KP_1] = 0x69, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> atset2:105 */
+ [Q_KEY_CODE_KP_2] = 0x72, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> atset2:114 */
+ [Q_KEY_CODE_KP_3] = 0x7a, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> atset2:122 */
+ [Q_KEY_CODE_KP_4] = 0x6b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> atset2:107 */
+ [Q_KEY_CODE_KP_5] = 0x73, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> atset2:115 */
+ [Q_KEY_CODE_KP_6] = 0x74, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> atset2:116 */
+ [Q_KEY_CODE_KP_7] = 0x6c, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> atset2:108 */
+ [Q_KEY_CODE_KP_8] = 0x75, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> atset2:117 */
+ [Q_KEY_CODE_KP_9] = 0x7d, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> atset2:125 */
+ [Q_KEY_CODE_KP_ADD] = 0x79, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> atset2:121 */
+ [Q_KEY_CODE_KP_COMMA] = 0x6d, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) -> linux:121 (KEY_KPCOMMA) -> atset2:109 */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x71, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> atset2:113 */
+ [Q_KEY_CODE_KP_DIVIDE] = 0xe04a, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> atset2:57418 */
+ [Q_KEY_CODE_KP_ENTER] = 0xe05a, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> atset2:57434 */
+ [Q_KEY_CODE_KP_EQUALS] = 0xf, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> atset2:15 */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x7c, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset2:124 */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x7b, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> atset2:123 */
+ [Q_KEY_CODE_L] = 0x4b, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> atset2:75 */
+ [Q_KEY_CODE_LEFT] = 0xe06b, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> atset2:57451 */
+ [Q_KEY_CODE_LESS] = 0x61, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> atset2:97 */
+ [Q_KEY_CODE_M] = 0x3a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> atset2:58 */
+ [Q_KEY_CODE_MAIL] = 0xe048, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155 (KEY_MAIL) -> atset2:57416 */
+ [Q_KEY_CODE_MEDIASELECT] = 0xe050, /* qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) -> linux:226 (KEY_MEDIA) -> atset2:57424 */
+ [Q_KEY_CODE_META_L] = 0xe01f, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> atset2:57375 */
+ [Q_KEY_CODE_META_R] = 0xe027, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> atset2:57383 */
+ [Q_KEY_CODE_MINUS] = 0x4e, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> atset2:78 */
+ [Q_KEY_CODE_N] = 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> atset2:49 */
+ [Q_KEY_CODE_NUM_LOCK] = 0x77, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> atset2:119 */
+ [Q_KEY_CODE_O] = 0x44, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> atset2:68 */
+ [Q_KEY_CODE_P] = 0x4d, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> atset2:77 */
+ [Q_KEY_CODE_PAUSE] = 0xe077, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> atset2:57463 */
+ [Q_KEY_CODE_PGDN] = 0xe07a, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> atset2:57466 */
+ [Q_KEY_CODE_PGUP] = 0xe07d, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> atset2:57469 */
+ [Q_KEY_CODE_POWER] = 0xe037, /* qcode:Q_KEY_CODE_POWER (power) -> linux:116 (KEY_POWER) -> atset2:57399 */
+ [Q_KEY_CODE_PRINT] = 0x7f, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> atset2:127 */
+ [Q_KEY_CODE_Q] = 0x15, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> atset2:21 */
+ [Q_KEY_CODE_R] = 0x2d, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> atset2:45 */
+ [Q_KEY_CODE_RET] = 0x5a, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> atset2:90 */
+ [Q_KEY_CODE_RIGHT] = 0xe074, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> atset2:57460 */
+ [Q_KEY_CODE_RO] = 0x51, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_RO) -> atset2:81 */
+ [Q_KEY_CODE_S] = 0x1b, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> atset2:27 */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x7e, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset2:126 */
+ [Q_KEY_CODE_SEMICOLON] = 0x4c, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> atset2:76 */
+ [Q_KEY_CODE_SHIFT] = 0x12, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> atset2:18 */
+ [Q_KEY_CODE_SHIFT_R] = 0x59, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> atset2:89 */
+ [Q_KEY_CODE_SLASH] = 0x4a, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> atset2:74 */
+ [Q_KEY_CODE_SLEEP] = 0xe03f, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:142 (KEY_SLEEP) -> atset2:57407 */
+ [Q_KEY_CODE_SPC] = 0x29, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> atset2:41 */
+ [Q_KEY_CODE_STOP] = 0xe028, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> atset2:57384 */
+ [Q_KEY_CODE_SYSRQ] = 0x7f, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> atset2:127 */
+ [Q_KEY_CODE_T] = 0x2c, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> atset2:44 */
+ [Q_KEY_CODE_TAB] = 0xd, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> atset2:13 */
+ [Q_KEY_CODE_U] = 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> atset2:60 */
+ [Q_KEY_CODE_UP] = 0xe075, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> atset2:57461 */
+ [Q_KEY_CODE_V] = 0x2a, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> atset2:42 */
+ [Q_KEY_CODE_VOLUMEDOWN] = 0xe021, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) -> linux:114 (KEY_VOLUMEDOWN) -> atset2:57377 */
+ [Q_KEY_CODE_VOLUMEUP] = 0xe032, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) -> linux:115 (KEY_VOLUMEUP) -> atset2:57394 */
+ [Q_KEY_CODE_W] = 0x1d, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> atset2:29 */
+ [Q_KEY_CODE_WAKE] = 0xe05e, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143 (KEY_WAKEUP) -> atset2:57438 */
+ [Q_KEY_CODE_X] = 0x22, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> atset2:34 */
+ [Q_KEY_CODE_Y] = 0x35, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> atset2:53 */
+ [Q_KEY_CODE_YEN] = 0x6a, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (KEY_YEN) -> atset2:106 */
+ [Q_KEY_CODE_Z] = 0x1a, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> atset2:26 */
+};
+const guint qemu_input_map_qcode_to_atset2_len = sizeof(qemu_input_map_qcode_to_atset2)/sizeof(qemu_input_map_qcode_to_atset2[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-atset3.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset3.c
new file mode 100644
index 0000000000..1b6ced02ae
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-atset3.c
@@ -0,0 +1,138 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_atset3 code-map keymaps.csv qcode atset3
+*/
+const guint16 qemu_input_map_qcode_to_atset3[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_0] = 0x45, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> atset3:69 */
+ [Q_KEY_CODE_1] = 0x16, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> atset3:22 */
+ [Q_KEY_CODE_2] = 0x1e, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> atset3:30 */
+ [Q_KEY_CODE_3] = 0x26, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> atset3:38 */
+ [Q_KEY_CODE_4] = 0x25, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> atset3:37 */
+ [Q_KEY_CODE_5] = 0x2e, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> atset3:46 */
+ [Q_KEY_CODE_6] = 0x36, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> atset3:54 */
+ [Q_KEY_CODE_7] = 0x3d, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> atset3:61 */
+ [Q_KEY_CODE_8] = 0x3e, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> atset3:62 */
+ [Q_KEY_CODE_9] = 0x46, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> atset3:70 */
+ [Q_KEY_CODE_A] = 0x1c, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> atset3:28 */
+ [Q_KEY_CODE_AC_HOME] = 0x97, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> linux:172 (KEY_HOMEPAGE) -> atset3:151 */
+ [Q_KEY_CODE_AGAIN] = 0xb, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> atset3:11 */
+ [Q_KEY_CODE_ALT] = 0x19, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> atset3:25 */
+ [Q_KEY_CODE_ALT_R] = 0x39, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> atset3:57 */
+ [Q_KEY_CODE_APOSTROPHE] = 0x52, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> atset3:82 */
+ [Q_KEY_CODE_ASTERISK] = 0x7e, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset3:126 */
+ [Q_KEY_CODE_AUDIOMUTE] = 0x9c, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) -> linux:113 (KEY_MUTE) -> atset3:156 */
+ [Q_KEY_CODE_AUDIONEXT] = 0x93, /* qcode:Q_KEY_CODE_AUDIONEXT (audionext) -> linux:163 (KEY_NEXTSONG) -> atset3:147 */
+ [Q_KEY_CODE_AUDIOPREV] = 0x94, /* qcode:Q_KEY_CODE_AUDIOPREV (audioprev) -> linux:165 (KEY_PREVIOUSSONG) -> atset3:148 */
+ [Q_KEY_CODE_AUDIOSTOP] = 0x98, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) -> linux:166 (KEY_STOPCD) -> atset3:152 */
+ [Q_KEY_CODE_B] = 0x32, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> atset3:50 */
+ [Q_KEY_CODE_BACKSLASH] = 0x5c, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> atset3:92 */
+ [Q_KEY_CODE_BACKSPACE] = 0x66, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> atset3:102 */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x54, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> atset3:84 */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x5b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset3:91 */
+ [Q_KEY_CODE_C] = 0x21, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> atset3:33 */
+ [Q_KEY_CODE_CALCULATOR] = 0xa3, /* qcode:Q_KEY_CODE_CALCULATOR (calculator) -> linux:140 (KEY_CALC) -> atset3:163 */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x14, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> atset3:20 */
+ [Q_KEY_CODE_COMMA] = 0x41, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> atset3:65 */
+ [Q_KEY_CODE_COMPOSE] = 0x8d, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> atset3:141 */
+ [Q_KEY_CODE_COPY] = 0x18, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> atset3:24 */
+ [Q_KEY_CODE_CTRL] = 0x11, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> atset3:17 */
+ [Q_KEY_CODE_CTRL_R] = 0x58, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> atset3:88 */
+ [Q_KEY_CODE_CUT] = 0x38, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> atset3:56 */
+ [Q_KEY_CODE_D] = 0x23, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> atset3:35 */
+ [Q_KEY_CODE_DELETE] = 0x64, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> atset3:100 */
+ [Q_KEY_CODE_DOT] = 0x49, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> atset3:73 */
+ [Q_KEY_CODE_DOWN] = 0x60, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> atset3:96 */
+ [Q_KEY_CODE_E] = 0x24, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> atset3:36 */
+ [Q_KEY_CODE_END] = 0x65, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> atset3:101 */
+ [Q_KEY_CODE_EQUAL] = 0x55, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> atset3:85 */
+ [Q_KEY_CODE_ESC] = 0x8, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> atset3:8 */
+ [Q_KEY_CODE_F] = 0x2b, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> atset3:43 */
+ [Q_KEY_CODE_F1] = 0x7, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> atset3:7 */
+ [Q_KEY_CODE_F10] = 0x4f, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> atset3:79 */
+ [Q_KEY_CODE_F11] = 0x56, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> atset3:86 */
+ [Q_KEY_CODE_F12] = 0x5e, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> atset3:94 */
+ [Q_KEY_CODE_F2] = 0xf, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> atset3:15 */
+ [Q_KEY_CODE_F3] = 0x17, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> atset3:23 */
+ [Q_KEY_CODE_F4] = 0x1f, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> atset3:31 */
+ [Q_KEY_CODE_F5] = 0x27, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> atset3:39 */
+ [Q_KEY_CODE_F6] = 0x2f, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> atset3:47 */
+ [Q_KEY_CODE_F7] = 0x37, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> atset3:55 */
+ [Q_KEY_CODE_F8] = 0x3f, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> atset3:63 */
+ [Q_KEY_CODE_F9] = 0x47, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> atset3:71 */
+ [Q_KEY_CODE_FIND] = 0x30, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> atset3:48 */
+ [Q_KEY_CODE_G] = 0x34, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> atset3:52 */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0xe, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> atset3:14 */
+ [Q_KEY_CODE_H] = 0x33, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> atset3:51 */
+ [Q_KEY_CODE_HELP] = 0x9, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> atset3:9 */
+ [Q_KEY_CODE_HENKAN] = 0x86, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> linux:92 (KEY_HENKAN) -> atset3:134 */
+ [Q_KEY_CODE_HIRAGANA] = 0x87, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) -> linux:91 (KEY_HIRAGANA) -> atset3:135 */
+ [Q_KEY_CODE_HOME] = 0x6e, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> atset3:110 */
+ [Q_KEY_CODE_I] = 0x43, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> atset3:67 */
+ [Q_KEY_CODE_INSERT] = 0x67, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> atset3:103 */
+ [Q_KEY_CODE_J] = 0x3b, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> atset3:59 */
+ [Q_KEY_CODE_K] = 0x42, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> atset3:66 */
+ [Q_KEY_CODE_KP_0] = 0x70, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> atset3:112 */
+ [Q_KEY_CODE_KP_1] = 0x69, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> atset3:105 */
+ [Q_KEY_CODE_KP_2] = 0x72, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> atset3:114 */
+ [Q_KEY_CODE_KP_3] = 0x7a, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> atset3:122 */
+ [Q_KEY_CODE_KP_4] = 0x6b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> atset3:107 */
+ [Q_KEY_CODE_KP_5] = 0x73, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> atset3:115 */
+ [Q_KEY_CODE_KP_6] = 0x74, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> atset3:116 */
+ [Q_KEY_CODE_KP_7] = 0x6c, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> atset3:108 */
+ [Q_KEY_CODE_KP_8] = 0x75, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> atset3:117 */
+ [Q_KEY_CODE_KP_9] = 0x7d, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> atset3:125 */
+ [Q_KEY_CODE_KP_ADD] = 0x7c, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> atset3:124 */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x71, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> atset3:113 */
+ [Q_KEY_CODE_KP_DIVIDE] = 0x4a, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> atset3:74 */
+ [Q_KEY_CODE_KP_ENTER] = 0x79, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> atset3:121 */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x7e, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> atset3:126 */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x4e, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> atset3:78 */
+ [Q_KEY_CODE_L] = 0x4b, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> atset3:75 */
+ [Q_KEY_CODE_LEFT] = 0x61, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> atset3:97 */
+ [Q_KEY_CODE_LESS] = 0x13, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> atset3:19 */
+ [Q_KEY_CODE_M] = 0x3a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> atset3:58 */
+ [Q_KEY_CODE_MENU] = 0x91, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139 (KEY_MENU) -> atset3:145 */
+ [Q_KEY_CODE_META_L] = 0x8b, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> atset3:139 */
+ [Q_KEY_CODE_META_R] = 0x8c, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> atset3:140 */
+ [Q_KEY_CODE_MINUS] = 0x4e, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> atset3:78 */
+ [Q_KEY_CODE_N] = 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> atset3:49 */
+ [Q_KEY_CODE_NUM_LOCK] = 0x76, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> atset3:118 */
+ [Q_KEY_CODE_O] = 0x44, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> atset3:68 */
+ [Q_KEY_CODE_OPEN] = 0x20, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> atset3:32 */
+ [Q_KEY_CODE_P] = 0x4d, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> atset3:77 */
+ [Q_KEY_CODE_PASTE] = 0x28, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> atset3:40 */
+ [Q_KEY_CODE_PAUSE] = 0x62, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> atset3:98 */
+ [Q_KEY_CODE_PGDN] = 0x6d, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> atset3:109 */
+ [Q_KEY_CODE_PGUP] = 0x6f, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> atset3:111 */
+ [Q_KEY_CODE_PRINT] = 0x57, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> atset3:87 */
+ [Q_KEY_CODE_PROPS] = 0xc, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> atset3:12 */
+ [Q_KEY_CODE_Q] = 0x15, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> atset3:21 */
+ [Q_KEY_CODE_R] = 0x2d, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> atset3:45 */
+ [Q_KEY_CODE_RET] = 0x5a, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> atset3:90 */
+ [Q_KEY_CODE_RIGHT] = 0x6a, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> atset3:106 */
+ [Q_KEY_CODE_S] = 0x1b, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> atset3:27 */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x5f, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset3:95 */
+ [Q_KEY_CODE_SEMICOLON] = 0x4c, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> atset3:76 */
+ [Q_KEY_CODE_SHIFT] = 0x12, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> atset3:18 */
+ [Q_KEY_CODE_SHIFT_R] = 0x59, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> atset3:89 */
+ [Q_KEY_CODE_SLASH] = 0x4a, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> atset3:74 */
+ [Q_KEY_CODE_SPC] = 0x29, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> atset3:41 */
+ [Q_KEY_CODE_STOP] = 0xa, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> atset3:10 */
+ [Q_KEY_CODE_SYSRQ] = 0x57, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> atset3:87 */
+ [Q_KEY_CODE_T] = 0x2c, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> atset3:44 */
+ [Q_KEY_CODE_TAB] = 0xd, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> atset3:13 */
+ [Q_KEY_CODE_U] = 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> atset3:60 */
+ [Q_KEY_CODE_UNDO] = 0x10, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> atset3:16 */
+ [Q_KEY_CODE_UP] = 0x63, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> atset3:99 */
+ [Q_KEY_CODE_V] = 0x2a, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> atset3:42 */
+ [Q_KEY_CODE_VOLUMEDOWN] = 0x9d, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) -> linux:114 (KEY_VOLUMEDOWN) -> atset3:157 */
+ [Q_KEY_CODE_VOLUMEUP] = 0x95, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) -> linux:115 (KEY_VOLUMEUP) -> atset3:149 */
+ [Q_KEY_CODE_W] = 0x1d, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> atset3:29 */
+ [Q_KEY_CODE_X] = 0x22, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> atset3:34 */
+ [Q_KEY_CODE_Y] = 0x35, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> atset3:53 */
+ [Q_KEY_CODE_YEN] = 0x5d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (KEY_YEN) -> atset3:93 */
+ [Q_KEY_CODE_Z] = 0x1a, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> atset3:26 */
+};
+const guint qemu_input_map_qcode_to_atset3_len = sizeof(qemu_input_map_qcode_to_atset3)/sizeof(qemu_input_map_qcode_to_atset3[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-linux.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-linux.c
new file mode 100644
index 0000000000..85561c4750
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-linux.c
@@ -0,0 +1,156 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_linux code-map keymaps.csv qcode linux
+*/
+const guint16 qemu_input_map_qcode_to_linux[Q_KEY_CODE__MAX] = {
+ [0 ... Q_KEY_CODE__MAX-1] = 0x0,
+ [Q_KEY_CODE_0] = 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> linux:11 (KEY_0) */
+ [Q_KEY_CODE_1] = 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> linux:2 (KEY_1) */
+ [Q_KEY_CODE_2] = 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> linux:3 (KEY_2) */
+ [Q_KEY_CODE_3] = 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> linux:4 (KEY_3) */
+ [Q_KEY_CODE_4] = 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> linux:5 (KEY_4) */
+ [Q_KEY_CODE_5] = 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> linux:6 (KEY_5) */
+ [Q_KEY_CODE_6] = 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> linux:7 (KEY_6) */
+ [Q_KEY_CODE_7] = 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> linux:8 (KEY_7) */
+ [Q_KEY_CODE_8] = 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> linux:9 (KEY_8) */
+ [Q_KEY_CODE_9] = 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> linux:10 (KEY_9) */
+ [Q_KEY_CODE_A] = 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> linux:30 (KEY_A) */
+ [Q_KEY_CODE_AC_BACK] = 0x9e, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> linux:158 (KEY_BACK) -> linux:158 (KEY_BACK) */
+ [Q_KEY_CODE_AC_BOOKMARKS] = 0x9c, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> linux:156 (KEY_BOOKMARKS) */
+ [Q_KEY_CODE_AC_FORWARD] = 0x9f, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) -> linux:159 (KEY_FORWARD) -> linux:159 (KEY_FORWARD) */
+ [Q_KEY_CODE_AC_HOME] = 0xac, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> linux:172 (KEY_HOMEPAGE) -> linux:172 (KEY_HOMEPAGE) */
+ [Q_KEY_CODE_AC_REFRESH] = 0xad, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) -> linux:173 (KEY_REFRESH) -> linux:173 (KEY_REFRESH) */
+ [Q_KEY_CODE_AGAIN] = 0x81, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> linux:129 (KEY_AGAIN) */
+ [Q_KEY_CODE_ALT] = 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> linux:56 (KEY_LEFTALT) */
+ [Q_KEY_CODE_ALT_R] = 0x64, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> linux:100 (KEY_RIGHTALT) */
+ [Q_KEY_CODE_APOSTROPHE] = 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> linux:40 (KEY_APOSTROPHE) */
+ [Q_KEY_CODE_ASTERISK] = 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> linux:55 (KEY_KPASTERISK) */
+ [Q_KEY_CODE_AUDIOMUTE] = 0x71, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) -> linux:113 (KEY_MUTE) -> linux:113 (KEY_MUTE) */
+ [Q_KEY_CODE_AUDIONEXT] = 0xa3, /* qcode:Q_KEY_CODE_AUDIONEXT (audionext) -> linux:163 (KEY_NEXTSONG) -> linux:163 (KEY_NEXTSONG) */
+ [Q_KEY_CODE_AUDIOPLAY] = 0xa4, /* qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) -> linux:164 (KEY_PLAYPAUSE) -> linux:164 (KEY_PLAYPAUSE) */
+ [Q_KEY_CODE_AUDIOPREV] = 0xa5, /* qcode:Q_KEY_CODE_AUDIOPREV (audioprev) -> linux:165 (KEY_PREVIOUSSONG) -> linux:165 (KEY_PREVIOUSSONG) */
+ [Q_KEY_CODE_AUDIOSTOP] = 0xa6, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) -> linux:166 (KEY_STOPCD) -> linux:166 (KEY_STOPCD) */
+ [Q_KEY_CODE_B] = 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> linux:48 (KEY_B) */
+ [Q_KEY_CODE_BACKSLASH] = 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> linux:43 (KEY_BACKSLASH) */
+ [Q_KEY_CODE_BACKSPACE] = 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> linux:14 (KEY_BACKSPACE) */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> linux:26 (KEY_LEFTBRACE) */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> linux:27 (KEY_RIGHTBRACE) */
+ [Q_KEY_CODE_C] = 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> linux:46 (KEY_C) */
+ [Q_KEY_CODE_CALCULATOR] = 0x8c, /* qcode:Q_KEY_CODE_CALCULATOR (calculator) -> linux:140 (KEY_CALC) -> linux:140 (KEY_CALC) */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> linux:58 (KEY_CAPSLOCK) */
+ [Q_KEY_CODE_COMMA] = 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> linux:51 (KEY_COMMA) */
+ [Q_KEY_CODE_COMPOSE] = 0x7f, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> linux:127 (KEY_COMPOSE) */
+ [Q_KEY_CODE_COMPUTER] = 0x9d, /* qcode:Q_KEY_CODE_COMPUTER (computer) -> linux:157 (KEY_COMPUTER) -> linux:157 (KEY_COMPUTER) */
+ [Q_KEY_CODE_COPY] = 0x85, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> linux:133 (KEY_COPY) */
+ [Q_KEY_CODE_CTRL] = 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> linux:29 (KEY_LEFTCTRL) */
+ [Q_KEY_CODE_CTRL_R] = 0x61, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> linux:97 (KEY_RIGHTCTRL) */
+ [Q_KEY_CODE_CUT] = 0x89, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> linux:137 (KEY_CUT) */
+ [Q_KEY_CODE_D] = 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> linux:32 (KEY_D) */
+ [Q_KEY_CODE_DELETE] = 0x6f, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> linux:111 (KEY_DELETE) */
+ [Q_KEY_CODE_DOT] = 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> linux:52 (KEY_DOT) */
+ [Q_KEY_CODE_DOWN] = 0x6c, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> linux:108 (KEY_DOWN) */
+ [Q_KEY_CODE_E] = 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> linux:18 (KEY_E) */
+ [Q_KEY_CODE_END] = 0x6b, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> linux:107 (KEY_END) */
+ [Q_KEY_CODE_EQUAL] = 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> linux:13 (KEY_EQUAL) */
+ [Q_KEY_CODE_ESC] = 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> linux:1 (KEY_ESC) */
+ [Q_KEY_CODE_F] = 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> linux:33 (KEY_F) */
+ [Q_KEY_CODE_F1] = 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> linux:59 (KEY_F1) */
+ [Q_KEY_CODE_F10] = 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> linux:68 (KEY_F10) */
+ [Q_KEY_CODE_F11] = 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> linux:87 (KEY_F11) */
+ [Q_KEY_CODE_F12] = 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> linux:88 (KEY_F12) */
+ [Q_KEY_CODE_F2] = 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> linux:60 (KEY_F2) */
+ [Q_KEY_CODE_F3] = 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> linux:61 (KEY_F3) */
+ [Q_KEY_CODE_F4] = 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> linux:62 (KEY_F4) */
+ [Q_KEY_CODE_F5] = 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> linux:63 (KEY_F5) */
+ [Q_KEY_CODE_F6] = 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> linux:64 (KEY_F6) */
+ [Q_KEY_CODE_F7] = 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> linux:65 (KEY_F7) */
+ [Q_KEY_CODE_F8] = 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> linux:66 (KEY_F8) */
+ [Q_KEY_CODE_F9] = 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> linux:67 (KEY_F9) */
+ [Q_KEY_CODE_FIND] = 0x88, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> linux:136 (KEY_FIND) */
+ [Q_KEY_CODE_FRONT] = 0x84, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:132 (KEY_FRONT) -> linux:132 (KEY_FRONT) */
+ [Q_KEY_CODE_G] = 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> linux:34 (KEY_G) */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> linux:41 (KEY_GRAVE) */
+ [Q_KEY_CODE_H] = 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> linux:35 (KEY_H) */
+ [Q_KEY_CODE_HELP] = 0x8a, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> linux:138 (KEY_HELP) */
+ [Q_KEY_CODE_HENKAN] = 0x5c, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> linux:92 (KEY_HENKAN) -> linux:92 (KEY_HENKAN) */
+ [Q_KEY_CODE_HIRAGANA] = 0x5b, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) -> linux:91 (KEY_HIRAGANA) -> linux:91 (KEY_HIRAGANA) */
+ [Q_KEY_CODE_HOME] = 0x66, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> linux:102 (KEY_HOME) */
+ [Q_KEY_CODE_I] = 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> linux:23 (KEY_I) */
+ [Q_KEY_CODE_INSERT] = 0x6e, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> linux:110 (KEY_INSERT) */
+ [Q_KEY_CODE_J] = 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> linux:36 (KEY_J) */
+ [Q_KEY_CODE_K] = 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> linux:37 (KEY_K) */
+ [Q_KEY_CODE_KP_0] = 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> linux:82 (KEY_KP0) */
+ [Q_KEY_CODE_KP_1] = 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> linux:79 (KEY_KP1) */
+ [Q_KEY_CODE_KP_2] = 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> linux:80 (KEY_KP2) */
+ [Q_KEY_CODE_KP_3] = 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> linux:81 (KEY_KP3) */
+ [Q_KEY_CODE_KP_4] = 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> linux:75 (KEY_KP4) */
+ [Q_KEY_CODE_KP_5] = 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> linux:76 (KEY_KP5) */
+ [Q_KEY_CODE_KP_6] = 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> linux:77 (KEY_KP6) */
+ [Q_KEY_CODE_KP_7] = 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> linux:71 (KEY_KP7) */
+ [Q_KEY_CODE_KP_8] = 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> linux:72 (KEY_KP8) */
+ [Q_KEY_CODE_KP_9] = 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> linux:73 (KEY_KP9) */
+ [Q_KEY_CODE_KP_ADD] = 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> linux:78 (KEY_KPPLUS) */
+ [Q_KEY_CODE_KP_COMMA] = 0x79, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) -> linux:121 (KEY_KPCOMMA) -> linux:121 (KEY_KPCOMMA) */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> linux:83 (KEY_KPDOT) */
+ [Q_KEY_CODE_KP_DIVIDE] = 0x62, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> linux:98 (KEY_KPSLASH) */
+ [Q_KEY_CODE_KP_ENTER] = 0x60, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> linux:96 (KEY_KPENTER) */
+ [Q_KEY_CODE_KP_EQUALS] = 0x75, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> linux:117 (KEY_KPEQUAL) */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> linux:55 (KEY_KPASTERISK) */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> linux:74 (KEY_KPMINUS) */
+ [Q_KEY_CODE_L] = 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> linux:38 (KEY_L) */
+ [Q_KEY_CODE_LEFT] = 0x69, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> linux:105 (KEY_LEFT) */
+ [Q_KEY_CODE_LESS] = 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> linux:86 (KEY_102ND) */
+ [Q_KEY_CODE_LF] = 0x65, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_LINEFEED) -> linux:101 (KEY_LINEFEED) */
+ [Q_KEY_CODE_M] = 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> linux:50 (KEY_M) */
+ [Q_KEY_CODE_MAIL] = 0x9b, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155 (KEY_MAIL) -> linux:155 (KEY_MAIL) */
+ [Q_KEY_CODE_MEDIASELECT] = 0xe2, /* qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) -> linux:226 (KEY_MEDIA) -> linux:226 (KEY_MEDIA) */
+ [Q_KEY_CODE_MENU] = 0x8b, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139 (KEY_MENU) -> linux:139 (KEY_MENU) */
+ [Q_KEY_CODE_META_L] = 0x7d, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> linux:125 (KEY_LEFTMETA) */
+ [Q_KEY_CODE_META_R] = 0x7e, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> linux:126 (KEY_RIGHTMETA) */
+ [Q_KEY_CODE_MINUS] = 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> linux:12 (KEY_MINUS) */
+ [Q_KEY_CODE_N] = 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> linux:49 (KEY_N) */
+ [Q_KEY_CODE_NUM_LOCK] = 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> linux:69 (KEY_NUMLOCK) */
+ [Q_KEY_CODE_O] = 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> linux:24 (KEY_O) */
+ [Q_KEY_CODE_OPEN] = 0x86, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> linux:134 (KEY_OPEN) */
+ [Q_KEY_CODE_P] = 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> linux:25 (KEY_P) */
+ [Q_KEY_CODE_PASTE] = 0x87, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> linux:135 (KEY_PASTE) */
+ [Q_KEY_CODE_PAUSE] = 0x77, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> linux:119 (KEY_PAUSE) */
+ [Q_KEY_CODE_PGDN] = 0x6d, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> linux:109 (KEY_PAGEDOWN) */
+ [Q_KEY_CODE_PGUP] = 0x68, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> linux:104 (KEY_PAGEUP) */
+ [Q_KEY_CODE_POWER] = 0x74, /* qcode:Q_KEY_CODE_POWER (power) -> linux:116 (KEY_POWER) -> linux:116 (KEY_POWER) */
+ [Q_KEY_CODE_PRINT] = 0x63, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> linux:99 (KEY_SYSRQ) */
+ [Q_KEY_CODE_PROPS] = 0x82, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> linux:130 (KEY_PROPS) */
+ [Q_KEY_CODE_Q] = 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> linux:16 (KEY_Q) */
+ [Q_KEY_CODE_R] = 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> linux:19 (KEY_R) */
+ [Q_KEY_CODE_RET] = 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> linux:28 (KEY_ENTER) */
+ [Q_KEY_CODE_RIGHT] = 0x6a, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> linux:106 (KEY_RIGHT) */
+ [Q_KEY_CODE_RO] = 0x59, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_RO) -> linux:89 (KEY_RO) */
+ [Q_KEY_CODE_S] = 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> linux:31 (KEY_S) */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> linux:70 (KEY_SCROLLLOCK) */
+ [Q_KEY_CODE_SEMICOLON] = 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> linux:39 (KEY_SEMICOLON) */
+ [Q_KEY_CODE_SHIFT] = 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> linux:42 (KEY_LEFTSHIFT) */
+ [Q_KEY_CODE_SHIFT_R] = 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> linux:54 (KEY_RIGHTSHIFT) */
+ [Q_KEY_CODE_SLASH] = 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> linux:53 (KEY_SLASH) */
+ [Q_KEY_CODE_SLEEP] = 0x8e, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:142 (KEY_SLEEP) -> linux:142 (KEY_SLEEP) */
+ [Q_KEY_CODE_SPC] = 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> linux:57 (KEY_SPACE) */
+ [Q_KEY_CODE_STOP] = 0x80, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> linux:128 (KEY_STOP) */
+ [Q_KEY_CODE_SYSRQ] = 0x63, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> linux:99 (KEY_SYSRQ) */
+ [Q_KEY_CODE_T] = 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> linux:20 (KEY_T) */
+ [Q_KEY_CODE_TAB] = 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> linux:15 (KEY_TAB) */
+ [Q_KEY_CODE_U] = 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> linux:22 (KEY_U) */
+ [Q_KEY_CODE_UNDO] = 0x83, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> linux:131 (KEY_UNDO) */
+ [Q_KEY_CODE_UNMAPPED] = 0x0, /* qcode:Q_KEY_CODE_UNMAPPED (unmapped) -> linux:0 (KEY_RESERVED) -> linux:0 (KEY_RESERVED) */
+ [Q_KEY_CODE_UP] = 0x67, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> linux:103 (KEY_UP) */
+ [Q_KEY_CODE_V] = 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> linux:47 (KEY_V) */
+ [Q_KEY_CODE_VOLUMEDOWN] = 0x72, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) -> linux:114 (KEY_VOLUMEDOWN) -> linux:114 (KEY_VOLUMEDOWN) */
+ [Q_KEY_CODE_VOLUMEUP] = 0x73, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) -> linux:115 (KEY_VOLUMEUP) -> linux:115 (KEY_VOLUMEUP) */
+ [Q_KEY_CODE_W] = 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> linux:17 (KEY_W) */
+ [Q_KEY_CODE_WAKE] = 0x8f, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143 (KEY_WAKEUP) -> linux:143 (KEY_WAKEUP) */
+ [Q_KEY_CODE_X] = 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> linux:45 (KEY_X) */
+ [Q_KEY_CODE_Y] = 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> linux:21 (KEY_Y) */
+ [Q_KEY_CODE_YEN] = 0x7c, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (KEY_YEN) -> linux:124 (KEY_YEN) */
+ [Q_KEY_CODE_Z] = 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> linux:44 (KEY_Z) */
+};
+const guint qemu_input_map_qcode_to_linux_len = sizeof(qemu_input_map_qcode_to_linux)/sizeof(qemu_input_map_qcode_to_linux[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-qnum.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-qnum.c
new file mode 100644
index 0000000000..1cecee6d6a
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-qnum.c
@@ -0,0 +1,154 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_qnum code-map keymaps.csv qcode qnum
+*/
+const guint16 qemu_input_map_qcode_to_qnum[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_0] = 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> qnum:11 */
+ [Q_KEY_CODE_1] = 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> qnum:2 */
+ [Q_KEY_CODE_2] = 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> qnum:3 */
+ [Q_KEY_CODE_3] = 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> qnum:4 */
+ [Q_KEY_CODE_4] = 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> qnum:5 */
+ [Q_KEY_CODE_5] = 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> qnum:6 */
+ [Q_KEY_CODE_6] = 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> qnum:7 */
+ [Q_KEY_CODE_7] = 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> qnum:8 */
+ [Q_KEY_CODE_8] = 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> qnum:9 */
+ [Q_KEY_CODE_9] = 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> qnum:10 */
+ [Q_KEY_CODE_A] = 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> qnum:30 */
+ [Q_KEY_CODE_AC_BACK] = 0xea, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> linux:158 (KEY_BACK) -> qnum:234 */
+ [Q_KEY_CODE_AC_BOOKMARKS] = 0xe6, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> qnum:230 */
+ [Q_KEY_CODE_AC_FORWARD] = 0xe9, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) -> linux:159 (KEY_FORWARD) -> qnum:233 */
+ [Q_KEY_CODE_AC_HOME] = 0xb2, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> linux:172 (KEY_HOMEPAGE) -> qnum:178 */
+ [Q_KEY_CODE_AC_REFRESH] = 0xe7, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) -> linux:173 (KEY_REFRESH) -> qnum:231 */
+ [Q_KEY_CODE_AGAIN] = 0x85, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> qnum:133 */
+ [Q_KEY_CODE_ALT] = 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> qnum:56 */
+ [Q_KEY_CODE_ALT_R] = 0xb8, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> qnum:184 */
+ [Q_KEY_CODE_APOSTROPHE] = 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> qnum:40 */
+ [Q_KEY_CODE_ASTERISK] = 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> qnum:55 */
+ [Q_KEY_CODE_AUDIOMUTE] = 0xa0, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) -> linux:113 (KEY_MUTE) -> qnum:160 */
+ [Q_KEY_CODE_AUDIONEXT] = 0x99, /* qcode:Q_KEY_CODE_AUDIONEXT (audionext) -> linux:163 (KEY_NEXTSONG) -> qnum:153 */
+ [Q_KEY_CODE_AUDIOPLAY] = 0xa2, /* qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) -> linux:164 (KEY_PLAYPAUSE) -> qnum:162 */
+ [Q_KEY_CODE_AUDIOPREV] = 0x90, /* qcode:Q_KEY_CODE_AUDIOPREV (audioprev) -> linux:165 (KEY_PREVIOUSSONG) -> qnum:144 */
+ [Q_KEY_CODE_AUDIOSTOP] = 0xa4, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) -> linux:166 (KEY_STOPCD) -> qnum:164 */
+ [Q_KEY_CODE_B] = 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> qnum:48 */
+ [Q_KEY_CODE_BACKSLASH] = 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> qnum:43 */
+ [Q_KEY_CODE_BACKSPACE] = 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> qnum:14 */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> qnum:26 */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> qnum:27 */
+ [Q_KEY_CODE_C] = 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> qnum:46 */
+ [Q_KEY_CODE_CALCULATOR] = 0xa1, /* qcode:Q_KEY_CODE_CALCULATOR (calculator) -> linux:140 (KEY_CALC) -> qnum:161 */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> qnum:58 */
+ [Q_KEY_CODE_COMMA] = 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> qnum:51 */
+ [Q_KEY_CODE_COMPOSE] = 0xdd, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> qnum:221 */
+ [Q_KEY_CODE_COMPUTER] = 0xeb, /* qcode:Q_KEY_CODE_COMPUTER (computer) -> linux:157 (KEY_COMPUTER) -> qnum:235 */
+ [Q_KEY_CODE_COPY] = 0xf8, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> qnum:248 */
+ [Q_KEY_CODE_CTRL] = 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> qnum:29 */
+ [Q_KEY_CODE_CTRL_R] = 0x9d, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> qnum:157 */
+ [Q_KEY_CODE_CUT] = 0xbc, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> qnum:188 */
+ [Q_KEY_CODE_D] = 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> qnum:32 */
+ [Q_KEY_CODE_DELETE] = 0xd3, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> qnum:211 */
+ [Q_KEY_CODE_DOT] = 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> qnum:52 */
+ [Q_KEY_CODE_DOWN] = 0xd0, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> qnum:208 */
+ [Q_KEY_CODE_E] = 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> qnum:18 */
+ [Q_KEY_CODE_END] = 0xcf, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> qnum:207 */
+ [Q_KEY_CODE_EQUAL] = 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> qnum:13 */
+ [Q_KEY_CODE_ESC] = 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> qnum:1 */
+ [Q_KEY_CODE_F] = 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> qnum:33 */
+ [Q_KEY_CODE_F1] = 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> qnum:59 */
+ [Q_KEY_CODE_F10] = 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> qnum:68 */
+ [Q_KEY_CODE_F11] = 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> qnum:87 */
+ [Q_KEY_CODE_F12] = 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> qnum:88 */
+ [Q_KEY_CODE_F2] = 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> qnum:60 */
+ [Q_KEY_CODE_F3] = 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> qnum:61 */
+ [Q_KEY_CODE_F4] = 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> qnum:62 */
+ [Q_KEY_CODE_F5] = 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> qnum:63 */
+ [Q_KEY_CODE_F6] = 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> qnum:64 */
+ [Q_KEY_CODE_F7] = 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> qnum:65 */
+ [Q_KEY_CODE_F8] = 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> qnum:66 */
+ [Q_KEY_CODE_F9] = 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> qnum:67 */
+ [Q_KEY_CODE_FIND] = 0xc1, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> qnum:193 */
+ [Q_KEY_CODE_FRONT] = 0x8c, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:132 (KEY_FRONT) -> qnum:140 */
+ [Q_KEY_CODE_G] = 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> qnum:34 */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> qnum:41 */
+ [Q_KEY_CODE_H] = 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> qnum:35 */
+ [Q_KEY_CODE_HELP] = 0xf5, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> qnum:245 */
+ [Q_KEY_CODE_HENKAN] = 0x79, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> linux:92 (KEY_HENKAN) -> qnum:121 */
+ [Q_KEY_CODE_HIRAGANA] = 0x77, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) -> linux:91 (KEY_HIRAGANA) -> qnum:119 */
+ [Q_KEY_CODE_HOME] = 0xc7, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> qnum:199 */
+ [Q_KEY_CODE_I] = 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> qnum:23 */
+ [Q_KEY_CODE_INSERT] = 0xd2, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> qnum:210 */
+ [Q_KEY_CODE_J] = 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> qnum:36 */
+ [Q_KEY_CODE_K] = 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> qnum:37 */
+ [Q_KEY_CODE_KP_0] = 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> qnum:82 */
+ [Q_KEY_CODE_KP_1] = 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> qnum:79 */
+ [Q_KEY_CODE_KP_2] = 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> qnum:80 */
+ [Q_KEY_CODE_KP_3] = 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> qnum:81 */
+ [Q_KEY_CODE_KP_4] = 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> qnum:75 */
+ [Q_KEY_CODE_KP_5] = 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> qnum:76 */
+ [Q_KEY_CODE_KP_6] = 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> qnum:77 */
+ [Q_KEY_CODE_KP_7] = 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> qnum:71 */
+ [Q_KEY_CODE_KP_8] = 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> qnum:72 */
+ [Q_KEY_CODE_KP_9] = 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> qnum:73 */
+ [Q_KEY_CODE_KP_ADD] = 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> qnum:78 */
+ [Q_KEY_CODE_KP_COMMA] = 0x7e, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) -> linux:121 (KEY_KPCOMMA) -> qnum:126 */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> qnum:83 */
+ [Q_KEY_CODE_KP_DIVIDE] = 0xb5, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> qnum:181 */
+ [Q_KEY_CODE_KP_ENTER] = 0x9c, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> qnum:156 */
+ [Q_KEY_CODE_KP_EQUALS] = 0x59, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> qnum:89 */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> qnum:55 */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> qnum:74 */
+ [Q_KEY_CODE_L] = 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> qnum:38 */
+ [Q_KEY_CODE_LEFT] = 0xcb, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> qnum:203 */
+ [Q_KEY_CODE_LESS] = 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> qnum:86 */
+ [Q_KEY_CODE_LF] = 0x5b, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_LINEFEED) -> qnum:91 */
+ [Q_KEY_CODE_M] = 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> qnum:50 */
+ [Q_KEY_CODE_MAIL] = 0xec, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155 (KEY_MAIL) -> qnum:236 */
+ [Q_KEY_CODE_MEDIASELECT] = 0xed, /* qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) -> linux:226 (KEY_MEDIA) -> qnum:237 */
+ [Q_KEY_CODE_MENU] = 0x9e, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139 (KEY_MENU) -> qnum:158 */
+ [Q_KEY_CODE_META_L] = 0xdb, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> qnum:219 */
+ [Q_KEY_CODE_META_R] = 0xdc, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> qnum:220 */
+ [Q_KEY_CODE_MINUS] = 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> qnum:12 */
+ [Q_KEY_CODE_N] = 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> qnum:49 */
+ [Q_KEY_CODE_NUM_LOCK] = 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> qnum:69 */
+ [Q_KEY_CODE_O] = 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> qnum:24 */
+ [Q_KEY_CODE_OPEN] = 0x64, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> qnum:100 */
+ [Q_KEY_CODE_P] = 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> qnum:25 */
+ [Q_KEY_CODE_PASTE] = 0x65, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> qnum:101 */
+ [Q_KEY_CODE_PAUSE] = 0xc6, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> qnum:198 */
+ [Q_KEY_CODE_PGDN] = 0xd1, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> qnum:209 */
+ [Q_KEY_CODE_PGUP] = 0xc9, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> qnum:201 */
+ [Q_KEY_CODE_POWER] = 0xde, /* qcode:Q_KEY_CODE_POWER (power) -> linux:116 (KEY_POWER) -> qnum:222 */
+ [Q_KEY_CODE_PRINT] = 0x54, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> qnum:84 */
+ [Q_KEY_CODE_PROPS] = 0x86, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> qnum:134 */
+ [Q_KEY_CODE_Q] = 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> qnum:16 */
+ [Q_KEY_CODE_R] = 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> qnum:19 */
+ [Q_KEY_CODE_RET] = 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> qnum:28 */
+ [Q_KEY_CODE_RIGHT] = 0xcd, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> qnum:205 */
+ [Q_KEY_CODE_RO] = 0x73, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_RO) -> qnum:115 */
+ [Q_KEY_CODE_S] = 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> qnum:31 */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> qnum:70 */
+ [Q_KEY_CODE_SEMICOLON] = 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> qnum:39 */
+ [Q_KEY_CODE_SHIFT] = 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> qnum:42 */
+ [Q_KEY_CODE_SHIFT_R] = 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> qnum:54 */
+ [Q_KEY_CODE_SLASH] = 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> qnum:53 */
+ [Q_KEY_CODE_SLEEP] = 0xdf, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:142 (KEY_SLEEP) -> qnum:223 */
+ [Q_KEY_CODE_SPC] = 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> qnum:57 */
+ [Q_KEY_CODE_STOP] = 0xe8, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> qnum:232 */
+ [Q_KEY_CODE_SYSRQ] = 0x54, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> qnum:84 */
+ [Q_KEY_CODE_T] = 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> qnum:20 */
+ [Q_KEY_CODE_TAB] = 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> qnum:15 */
+ [Q_KEY_CODE_U] = 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> qnum:22 */
+ [Q_KEY_CODE_UNDO] = 0x87, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> qnum:135 */
+ [Q_KEY_CODE_UP] = 0xc8, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> qnum:200 */
+ [Q_KEY_CODE_V] = 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> qnum:47 */
+ [Q_KEY_CODE_VOLUMEDOWN] = 0xae, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) -> linux:114 (KEY_VOLUMEDOWN) -> qnum:174 */
+ [Q_KEY_CODE_VOLUMEUP] = 0xb0, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) -> linux:115 (KEY_VOLUMEUP) -> qnum:176 */
+ [Q_KEY_CODE_W] = 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> qnum:17 */
+ [Q_KEY_CODE_WAKE] = 0xe3, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143 (KEY_WAKEUP) -> qnum:227 */
+ [Q_KEY_CODE_X] = 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> qnum:45 */
+ [Q_KEY_CODE_Y] = 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> qnum:21 */
+ [Q_KEY_CODE_YEN] = 0x7d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (KEY_YEN) -> qnum:125 */
+ [Q_KEY_CODE_Z] = 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> qnum:44 */
+};
+const guint qemu_input_map_qcode_to_qnum_len = sizeof(qemu_input_map_qcode_to_qnum)/sizeof(qemu_input_map_qcode_to_qnum[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qcode-to-sun.c b/qemu2-auto-generated/ui/input-keymap-qcode-to-sun.c
new file mode 100644
index 0000000000..1646a743e7
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qcode-to-sun.c
@@ -0,0 +1,129 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qcode_to_sun code-map keymaps.csv qcode sun
+*/
+const guint16 qemu_input_map_qcode_to_sun[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_0] = 0x27, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -> sun:39 */
+ [Q_KEY_CODE_1] = 0x1e, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> sun:30 */
+ [Q_KEY_CODE_2] = 0x1f, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> sun:31 */
+ [Q_KEY_CODE_3] = 0x20, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> sun:32 */
+ [Q_KEY_CODE_4] = 0x21, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> sun:33 */
+ [Q_KEY_CODE_5] = 0x22, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> sun:34 */
+ [Q_KEY_CODE_6] = 0x23, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> sun:35 */
+ [Q_KEY_CODE_7] = 0x24, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> sun:36 */
+ [Q_KEY_CODE_8] = 0x25, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> sun:37 */
+ [Q_KEY_CODE_9] = 0x26, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -> sun:38 */
+ [Q_KEY_CODE_A] = 0x4d, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -> sun:77 */
+ [Q_KEY_CODE_AGAIN] = 0x3, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:129 (KEY_AGAIN) -> sun:3 */
+ [Q_KEY_CODE_ALT] = 0x13, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KEY_LEFTALT) -> sun:19 */
+ [Q_KEY_CODE_ALT_R] = 0xd, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:100 (KEY_RIGHTALT) -> sun:13 */
+ [Q_KEY_CODE_APOSTROPHE] = 0x57, /* qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) -> linux:40 (KEY_APOSTROPHE) -> sun:87 */
+ [Q_KEY_CODE_ASTERISK] = 0x2f, /* qcode:Q_KEY_CODE_ASTERISK (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> sun:47 */
+ [Q_KEY_CODE_B] = 0x68, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -> sun:104 */
+ [Q_KEY_CODE_BACKSLASH] = 0x58, /* qcode:Q_KEY_CODE_BACKSLASH (backslash) -> linux:43 (KEY_BACKSLASH) -> sun:88 */
+ [Q_KEY_CODE_BACKSPACE] = 0x2b, /* qcode:Q_KEY_CODE_BACKSPACE (backspace) -> linux:14 (KEY_BACKSPACE) -> sun:43 */
+ [Q_KEY_CODE_BRACKET_LEFT] = 0x40, /* qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) -> linux:26 (KEY_LEFTBRACE) -> sun:64 */
+ [Q_KEY_CODE_BRACKET_RIGHT] = 0x41, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> sun:65 */
+ [Q_KEY_CODE_C] = 0x66, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -> sun:102 */
+ [Q_KEY_CODE_CAPS_LOCK] = 0x77, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) -> linux:58 (KEY_CAPSLOCK) -> sun:119 */
+ [Q_KEY_CODE_COMMA] = 0x6b, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:51 (KEY_COMMA) -> sun:107 */
+ [Q_KEY_CODE_COMPOSE] = 0x43, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> linux:127 (KEY_COMPOSE) -> sun:67 */
+ [Q_KEY_CODE_COPY] = 0x33, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133 (KEY_COPY) -> sun:51 */
+ [Q_KEY_CODE_CTRL] = 0x4c, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 (KEY_LEFTCTRL) -> sun:76 */
+ [Q_KEY_CODE_CTRL_R] = 0x4c, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> linux:97 (KEY_RIGHTCTRL) -> sun:76 */
+ [Q_KEY_CODE_CUT] = 0x61, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (KEY_CUT) -> sun:97 */
+ [Q_KEY_CODE_D] = 0x4f, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -> sun:79 */
+ [Q_KEY_CODE_DELETE] = 0x42, /* qcode:Q_KEY_CODE_DELETE (delete) -> linux:111 (KEY_DELETE) -> sun:66 */
+ [Q_KEY_CODE_DOT] = 0x6c, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KEY_DOT) -> sun:108 */
+ [Q_KEY_CODE_DOWN] = 0x1b, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108 (KEY_DOWN) -> sun:27 */
+ [Q_KEY_CODE_E] = 0x38, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -> sun:56 */
+ [Q_KEY_CODE_END] = 0x4a, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (KEY_END) -> sun:74 */
+ [Q_KEY_CODE_EQUAL] = 0x29, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:13 (KEY_EQUAL) -> sun:41 */
+ [Q_KEY_CODE_ESC] = 0x1d, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_ESC) -> sun:29 */
+ [Q_KEY_CODE_F] = 0x50, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -> sun:80 */
+ [Q_KEY_CODE_F1] = 0x5, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1) -> sun:5 */
+ [Q_KEY_CODE_F10] = 0x7, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY_F10) -> sun:7 */
+ [Q_KEY_CODE_F11] = 0x9, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KEY_F11) -> sun:9 */
+ [Q_KEY_CODE_F12] = 0xb, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY_F12) -> sun:11 */
+ [Q_KEY_CODE_F2] = 0x6, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2) -> sun:6 */
+ [Q_KEY_CODE_F3] = 0x8, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3) -> sun:8 */
+ [Q_KEY_CODE_F4] = 0xa, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4) -> sun:10 */
+ [Q_KEY_CODE_F5] = 0xc, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5) -> sun:12 */
+ [Q_KEY_CODE_F6] = 0xe, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6) -> sun:14 */
+ [Q_KEY_CODE_F7] = 0x10, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F7) -> sun:16 */
+ [Q_KEY_CODE_F8] = 0x11, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8) -> sun:17 */
+ [Q_KEY_CODE_F9] = 0x12, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9) -> sun:18 */
+ [Q_KEY_CODE_FIND] = 0x5f, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136 (KEY_FIND) -> sun:95 */
+ [Q_KEY_CODE_FRONT] = 0x31, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:132 (KEY_FRONT) -> sun:49 */
+ [Q_KEY_CODE_G] = 0x51, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -> sun:81 */
+ [Q_KEY_CODE_GRAVE_ACCENT] = 0x2a, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) -> linux:41 (KEY_GRAVE) -> sun:42 */
+ [Q_KEY_CODE_H] = 0x52, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -> sun:82 */
+ [Q_KEY_CODE_HELP] = 0x76, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 (KEY_HELP) -> sun:118 */
+ [Q_KEY_CODE_HOME] = 0x34, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102 (KEY_HOME) -> sun:52 */
+ [Q_KEY_CODE_I] = 0x3d, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -> sun:61 */
+ [Q_KEY_CODE_INSERT] = 0x2c, /* qcode:Q_KEY_CODE_INSERT (insert) -> linux:110 (KEY_INSERT) -> sun:44 */
+ [Q_KEY_CODE_J] = 0x53, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -> sun:83 */
+ [Q_KEY_CODE_K] = 0x54, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -> sun:84 */
+ [Q_KEY_CODE_KP_0] = 0x5e, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 (KEY_KP0) -> sun:94 */
+ [Q_KEY_CODE_KP_1] = 0x70, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 (KEY_KP1) -> sun:112 */
+ [Q_KEY_CODE_KP_2] = 0x71, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 (KEY_KP2) -> sun:113 */
+ [Q_KEY_CODE_KP_3] = 0x72, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 (KEY_KP3) -> sun:114 */
+ [Q_KEY_CODE_KP_4] = 0x5b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 (KEY_KP4) -> sun:91 */
+ [Q_KEY_CODE_KP_5] = 0x5c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 (KEY_KP5) -> sun:92 */
+ [Q_KEY_CODE_KP_6] = 0x5d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 (KEY_KP6) -> sun:93 */
+ [Q_KEY_CODE_KP_7] = 0x44, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 (KEY_KP7) -> sun:68 */
+ [Q_KEY_CODE_KP_8] = 0x45, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 (KEY_KP8) -> sun:69 */
+ [Q_KEY_CODE_KP_9] = 0x46, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 (KEY_KP9) -> sun:70 */
+ [Q_KEY_CODE_KP_ADD] = 0x7d, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> linux:78 (KEY_KPPLUS) -> sun:125 */
+ [Q_KEY_CODE_KP_DECIMAL] = 0x32, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) -> linux:83 (KEY_KPDOT) -> sun:50 */
+ [Q_KEY_CODE_KP_DIVIDE] = 0x2e, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) -> linux:98 (KEY_KPSLASH) -> sun:46 */
+ [Q_KEY_CODE_KP_ENTER] = 0x5a, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) -> linux:96 (KEY_KPENTER) -> sun:90 */
+ [Q_KEY_CODE_KP_EQUALS] = 0x2d, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) -> linux:117 (KEY_KPEQUAL) -> sun:45 */
+ [Q_KEY_CODE_KP_MULTIPLY] = 0x2f, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) -> linux:55 (KEY_KPASTERISK) -> sun:47 */
+ [Q_KEY_CODE_KP_SUBTRACT] = 0x47, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) -> linux:74 (KEY_KPMINUS) -> sun:71 */
+ [Q_KEY_CODE_L] = 0x55, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -> sun:85 */
+ [Q_KEY_CODE_LEFT] = 0x18, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105 (KEY_LEFT) -> sun:24 */
+ [Q_KEY_CODE_LESS] = 0x7c, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 (KEY_102ND) -> sun:124 */
+ [Q_KEY_CODE_LF] = 0x6f, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_LINEFEED) -> sun:111 */
+ [Q_KEY_CODE_M] = 0x6a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -> sun:106 */
+ [Q_KEY_CODE_META_L] = 0x78, /* qcode:Q_KEY_CODE_META_L (meta_l) -> linux:125 (KEY_LEFTMETA) -> sun:120 */
+ [Q_KEY_CODE_META_R] = 0x7a, /* qcode:Q_KEY_CODE_META_R (meta_r) -> linux:126 (KEY_RIGHTMETA) -> sun:122 */
+ [Q_KEY_CODE_MINUS] = 0x28, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:12 (KEY_MINUS) -> sun:40 */
+ [Q_KEY_CODE_N] = 0x69, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -> sun:105 */
+ [Q_KEY_CODE_NUM_LOCK] = 0x62, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) -> linux:69 (KEY_NUMLOCK) -> sun:98 */
+ [Q_KEY_CODE_O] = 0x3e, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -> sun:62 */
+ [Q_KEY_CODE_OPEN] = 0x48, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134 (KEY_OPEN) -> sun:72 */
+ [Q_KEY_CODE_P] = 0x3f, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -> sun:63 */
+ [Q_KEY_CODE_PASTE] = 0x49, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:135 (KEY_PASTE) -> sun:73 */
+ [Q_KEY_CODE_PAUSE] = 0x15, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:119 (KEY_PAUSE) -> sun:21 */
+ [Q_KEY_CODE_PGDN] = 0x7b, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109 (KEY_PAGEDOWN) -> sun:123 */
+ [Q_KEY_CODE_PGUP] = 0x60, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104 (KEY_PAGEUP) -> sun:96 */
+ [Q_KEY_CODE_PRINT] = 0x16, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:99 (KEY_SYSRQ) -> sun:22 */
+ [Q_KEY_CODE_PROPS] = 0x19, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:130 (KEY_PROPS) -> sun:25 */
+ [Q_KEY_CODE_Q] = 0x36, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -> sun:54 */
+ [Q_KEY_CODE_R] = 0x39, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -> sun:57 */
+ [Q_KEY_CODE_RET] = 0x59, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KEY_ENTER) -> sun:89 */
+ [Q_KEY_CODE_RIGHT] = 0x1c, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:106 (KEY_RIGHT) -> sun:28 */
+ [Q_KEY_CODE_S] = 0x4e, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -> sun:78 */
+ [Q_KEY_CODE_SCROLL_LOCK] = 0x17, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) -> linux:70 (KEY_SCROLLLOCK) -> sun:23 */
+ [Q_KEY_CODE_SEMICOLON] = 0x56, /* qcode:Q_KEY_CODE_SEMICOLON (semicolon) -> linux:39 (KEY_SEMICOLON) -> sun:86 */
+ [Q_KEY_CODE_SHIFT] = 0x63, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:42 (KEY_LEFTSHIFT) -> sun:99 */
+ [Q_KEY_CODE_SHIFT_R] = 0x6e, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> linux:54 (KEY_RIGHTSHIFT) -> sun:110 */
+ [Q_KEY_CODE_SLASH] = 0x6d, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:53 (KEY_SLASH) -> sun:109 */
+ [Q_KEY_CODE_SPC] = 0x79, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KEY_SPACE) -> sun:121 */
+ [Q_KEY_CODE_STOP] = 0x1, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 (KEY_STOP) -> sun:1 */
+ [Q_KEY_CODE_SYSRQ] = 0x16, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:99 (KEY_SYSRQ) -> sun:22 */
+ [Q_KEY_CODE_T] = 0x3a, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -> sun:58 */
+ [Q_KEY_CODE_TAB] = 0x35, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY_TAB) -> sun:53 */
+ [Q_KEY_CODE_U] = 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -> sun:60 */
+ [Q_KEY_CODE_UNDO] = 0x1a, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131 (KEY_UNDO) -> sun:26 */
+ [Q_KEY_CODE_UP] = 0x14, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_UP) -> sun:20 */
+ [Q_KEY_CODE_V] = 0x67, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -> sun:103 */
+ [Q_KEY_CODE_W] = 0x37, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -> sun:55 */
+ [Q_KEY_CODE_X] = 0x65, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -> sun:101 */
+ [Q_KEY_CODE_Y] = 0x3b, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -> sun:59 */
+ [Q_KEY_CODE_Z] = 0x64, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -> sun:100 */
+};
+const guint qemu_input_map_qcode_to_sun_len = sizeof(qemu_input_map_qcode_to_sun)/sizeof(qemu_input_map_qcode_to_sun[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-qnum-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-qnum-to-qcode.c
new file mode 100644
index 0000000000..9909b001f0
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-qnum-to-qcode.c
@@ -0,0 +1,246 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_qnum_to_qcode code-map keymaps.csv qnum qcode
+*/
+const guint16 qemu_input_map_qnum_to_qcode[254] = {
+ [0x1] = Q_KEY_CODE_ESC, /* qnum:1 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x2] = Q_KEY_CODE_1, /* qnum:2 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x3] = Q_KEY_CODE_2, /* qnum:3 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x4] = Q_KEY_CODE_3, /* qnum:4 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x5] = Q_KEY_CODE_4, /* qnum:5 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x6] = Q_KEY_CODE_5, /* qnum:6 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x7] = Q_KEY_CODE_6, /* qnum:7 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x8] = Q_KEY_CODE_7, /* qnum:8 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x9] = Q_KEY_CODE_8, /* qnum:9 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0xa] = Q_KEY_CODE_9, /* qnum:10 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0xb] = Q_KEY_CODE_0, /* qnum:11 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0xc] = Q_KEY_CODE_MINUS, /* qnum:12 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xd] = Q_KEY_CODE_EQUAL, /* qnum:13 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xe] = Q_KEY_CODE_BACKSPACE, /* qnum:14 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xf] = Q_KEY_CODE_TAB, /* qnum:15 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x10] = Q_KEY_CODE_Q, /* qnum:16 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x11] = Q_KEY_CODE_W, /* qnum:17 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x12] = Q_KEY_CODE_E, /* qnum:18 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x13] = Q_KEY_CODE_R, /* qnum:19 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x14] = Q_KEY_CODE_T, /* qnum:20 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x15] = Q_KEY_CODE_Y, /* qnum:21 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x16] = Q_KEY_CODE_U, /* qnum:22 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x17] = Q_KEY_CODE_I, /* qnum:23 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x18] = Q_KEY_CODE_O, /* qnum:24 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x19] = Q_KEY_CODE_P, /* qnum:25 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x1a] = Q_KEY_CODE_BRACKET_LEFT, /* qnum:26 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x1b] = Q_KEY_CODE_BRACKET_RIGHT, /* qnum:27 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x1c] = Q_KEY_CODE_RET, /* qnum:28 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x1d] = Q_KEY_CODE_CTRL, /* qnum:29 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x1e] = Q_KEY_CODE_A, /* qnum:30 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x1f] = Q_KEY_CODE_S, /* qnum:31 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x20] = Q_KEY_CODE_D, /* qnum:32 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x21] = Q_KEY_CODE_F, /* qnum:33 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x22] = Q_KEY_CODE_G, /* qnum:34 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x23] = Q_KEY_CODE_H, /* qnum:35 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x24] = Q_KEY_CODE_J, /* qnum:36 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x25] = Q_KEY_CODE_K, /* qnum:37 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x26] = Q_KEY_CODE_L, /* qnum:38 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x27] = Q_KEY_CODE_SEMICOLON, /* qnum:39 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x28] = Q_KEY_CODE_APOSTROPHE, /* qnum:40 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x29] = Q_KEY_CODE_GRAVE_ACCENT, /* qnum:41 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x2a] = Q_KEY_CODE_SHIFT, /* qnum:42 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x2b] = Q_KEY_CODE_BACKSLASH, /* qnum:43 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x2c] = Q_KEY_CODE_Z, /* qnum:44 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x2d] = Q_KEY_CODE_X, /* qnum:45 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x2e] = Q_KEY_CODE_C, /* qnum:46 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x2f] = Q_KEY_CODE_V, /* qnum:47 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x30] = Q_KEY_CODE_B, /* qnum:48 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x31] = Q_KEY_CODE_N, /* qnum:49 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x32] = Q_KEY_CODE_M, /* qnum:50 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x33] = Q_KEY_CODE_COMMA, /* qnum:51 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_DOT, /* qnum:52 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x35] = Q_KEY_CODE_SLASH, /* qnum:53 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x36] = Q_KEY_CODE_SHIFT_R, /* qnum:54 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x37] = Q_KEY_CODE_KP_MULTIPLY, /* qnum:55 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x38] = Q_KEY_CODE_ALT, /* qnum:56 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x39] = Q_KEY_CODE_SPC, /* qnum:57 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_CAPS_LOCK, /* qnum:58 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x3b] = Q_KEY_CODE_F1, /* qnum:59 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x3c] = Q_KEY_CODE_F2, /* qnum:60 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x3d] = Q_KEY_CODE_F3, /* qnum:61 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x3e] = Q_KEY_CODE_F4, /* qnum:62 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x3f] = Q_KEY_CODE_F5, /* qnum:63 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x40] = Q_KEY_CODE_F6, /* qnum:64 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x41] = Q_KEY_CODE_F7, /* qnum:65 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x42] = Q_KEY_CODE_F8, /* qnum:66 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x43] = Q_KEY_CODE_F9, /* qnum:67 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x44] = Q_KEY_CODE_F10, /* qnum:68 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x45] = Q_KEY_CODE_NUM_LOCK, /* qnum:69 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x46] = Q_KEY_CODE_SCROLL_LOCK, /* qnum:70 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x47] = Q_KEY_CODE_KP_7, /* qnum:71 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x48] = Q_KEY_CODE_KP_8, /* qnum:72 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x49] = Q_KEY_CODE_KP_9, /* qnum:73 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x4a] = Q_KEY_CODE_KP_SUBTRACT, /* qnum:74 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x4b] = Q_KEY_CODE_KP_4, /* qnum:75 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x4c] = Q_KEY_CODE_KP_5, /* qnum:76 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x4d] = Q_KEY_CODE_KP_6, /* qnum:77 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x4e] = Q_KEY_CODE_KP_ADD, /* qnum:78 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_KP_1, /* qnum:79 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x50] = Q_KEY_CODE_KP_2, /* qnum:80 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x51] = Q_KEY_CODE_KP_3, /* qnum:81 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x52] = Q_KEY_CODE_KP_0, /* qnum:82 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x53] = Q_KEY_CODE_KP_DECIMAL, /* qnum:83 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x54] = Q_KEY_CODE_SYSRQ, /* qnum:84 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x55] = Q_KEY_CODE_UNMAPPED, /* qnum:85 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x56] = Q_KEY_CODE_LESS, /* qnum:86 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x57] = Q_KEY_CODE_F11, /* qnum:87 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x58] = Q_KEY_CODE_F12, /* qnum:88 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x59] = Q_KEY_CODE_KP_EQUALS, /* qnum:89 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x5a] = Q_KEY_CODE_UNMAPPED, /* qnum:90 -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5b] = Q_KEY_CODE_LF, /* qnum:91 -> linux:101 (KEY_LINEFEED) -> qcode:Q_KEY_CODE_LF (lf) */
+ [0x5c] = Q_KEY_CODE_UNMAPPED, /* qnum:92 -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* qnum:93 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_UNMAPPED, /* qnum:94 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5f] = Q_KEY_CODE_UNMAPPED, /* qnum:95 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_UNMAPPED, /* qnum:99 -> linux:169 (KEY_PHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x64] = Q_KEY_CODE_OPEN, /* qnum:100 -> linux:134 (KEY_OPEN) -> qcode:Q_KEY_CODE_OPEN (open) */
+ [0x65] = Q_KEY_CODE_PASTE, /* qnum:101 -> linux:135 (KEY_PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x66] = Q_KEY_CODE_UNMAPPED, /* qnum:102 -> linux:141 (KEY_SETUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* qnum:103 -> linux:144 (KEY_FILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_UNMAPPED, /* qnum:104 -> linux:145 (KEY_SENDFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x69] = Q_KEY_CODE_UNMAPPED, /* qnum:105 -> linux:146 (KEY_DELETEFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6a] = Q_KEY_CODE_UNMAPPED, /* qnum:106 -> linux:151 (KEY_MSDOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6b] = Q_KEY_CODE_UNMAPPED, /* qnum:107 -> linux:153 (KEY_DIRECTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6c] = Q_KEY_CODE_UNMAPPED, /* qnum:108 -> linux:161 (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6d] = Q_KEY_CODE_UNMAPPED, /* qnum:109 -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6f] = Q_KEY_CODE_UNMAPPED, /* qnum:111 -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* qnum:112 -> linux:170 (KEY_ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* qnum:113 -> linux:174 (KEY_EXIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* qnum:114 -> linux:175 (KEY_MOVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_RO, /* qnum:115 -> linux:89 (KEY_RO) -> qcode:Q_KEY_CODE_RO (ro) */
+ [0x74] = Q_KEY_CODE_UNMAPPED, /* qnum:116 -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x75] = Q_KEY_CODE_UNMAPPED, /* qnum:117 -> linux:177 (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* qnum:118 -> linux:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_HIRAGANA, /* qnum:119 -> linux:91 (KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* qnum:120 -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_HENKAN, /* qnum:121 -> linux:92 (KEY_HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x7b] = Q_KEY_CODE_UNMAPPED, /* qnum:123 -> linux:94 (KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7d] = Q_KEY_CODE_YEN, /* qnum:125 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x7e] = Q_KEY_CODE_KP_COMMA, /* qnum:126 -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x81] = Q_KEY_CODE_UNMAPPED, /* qnum:129 -> linux:171 (KEY_CONFIG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x82] = Q_KEY_CODE_UNMAPPED, /* qnum:130 -> linux:150 (KEY_WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x83] = Q_KEY_CODE_UNMAPPED, /* qnum:131 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x84] = Q_KEY_CODE_UNMAPPED, /* qnum:132 -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x85] = Q_KEY_CODE_AGAIN, /* qnum:133 -> linux:129 (KEY_AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */
+ [0x86] = Q_KEY_CODE_PROPS, /* qnum:134 -> linux:130 (KEY_PROPS) -> qcode:Q_KEY_CODE_PROPS (props) */
+ [0x87] = Q_KEY_CODE_UNDO, /* qnum:135 -> linux:131 (KEY_UNDO) -> qcode:Q_KEY_CODE_UNDO (undo) */
+ [0x88] = Q_KEY_CODE_UNMAPPED, /* qnum:136 -> linux:176 (KEY_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x89] = Q_KEY_CODE_UNMAPPED, /* qnum:137 -> linux:181 (KEY_NEW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8a] = Q_KEY_CODE_UNMAPPED, /* qnum:138 -> linux:182 (KEY_REDO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8b] = Q_KEY_CODE_UNMAPPED, /* qnum:139 -> linux:120 (KEY_SCALE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8c] = Q_KEY_CODE_FRONT, /* qnum:140 -> linux:132 (KEY_FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */
+ [0x8d] = Q_KEY_CODE_UNMAPPED, /* qnum:141 -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8e] = Q_KEY_CODE_UNMAPPED, /* qnum:142 -> linux:233 (KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8f] = Q_KEY_CODE_UNMAPPED, /* qnum:143 -> linux:178 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x90] = Q_KEY_CODE_AUDIOPREV, /* qnum:144 -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0x92] = Q_KEY_CODE_UNMAPPED, /* qnum:146 -> linux:152 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x93] = Q_KEY_CODE_UNMAPPED, /* qnum:147 -> linux:147 (KEY_XFER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x94] = Q_KEY_CODE_UNMAPPED, /* qnum:148 -> linux:222 (KEY_ALTERASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x95] = Q_KEY_CODE_UNMAPPED, /* qnum:149 -> linux:195 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x96] = Q_KEY_CODE_UNMAPPED, /* qnum:150 -> linux:196 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x97] = Q_KEY_CODE_UNMAPPED, /* qnum:151 -> linux:149 (KEY_PROG2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x98] = Q_KEY_CODE_UNMAPPED, /* qnum:152 -> linux:168 (KEY_REWIND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x99] = Q_KEY_CODE_AUDIONEXT, /* qnum:153 -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0x9a] = Q_KEY_CODE_UNMAPPED, /* qnum:154 -> linux:197 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9b] = Q_KEY_CODE_UNMAPPED, /* qnum:155 -> linux:198 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9c] = Q_KEY_CODE_KP_ENTER, /* qnum:156 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x9d] = Q_KEY_CODE_CTRL_R, /* qnum:157 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x9e] = Q_KEY_CODE_MENU, /* qnum:158 -> linux:139 (KEY_MENU) -> qcode:Q_KEY_CODE_MENU (menu) */
+ [0x9f] = Q_KEY_CODE_UNMAPPED, /* qnum:159 -> linux:148 (KEY_PROG1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa0] = Q_KEY_CODE_AUDIOMUTE, /* qnum:160 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xa1] = Q_KEY_CODE_CALCULATOR, /* qnum:161 -> linux:140 (KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0xa2] = Q_KEY_CODE_AUDIOPLAY, /* qnum:162 -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xa3] = Q_KEY_CODE_UNMAPPED, /* qnum:163 -> linux:160 (KEY_CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa4] = Q_KEY_CODE_AUDIOSTOP, /* qnum:164 -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xa5] = Q_KEY_CODE_UNMAPPED, /* qnum:165 -> linux:205 (KEY_SUSPEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa6] = Q_KEY_CODE_UNMAPPED, /* qnum:166 -> linux:154 (KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa7] = Q_KEY_CODE_UNMAPPED, /* qnum:167 -> linux:199 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa8] = Q_KEY_CODE_UNMAPPED, /* qnum:168 -> linux:200 (KEY_PLAYCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa9] = Q_KEY_CODE_UNMAPPED, /* qnum:169 -> linux:201 (KEY_PAUSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_UNMAPPED, /* qnum:171 -> linux:202 (KEY_PROG3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xac] = Q_KEY_CODE_UNMAPPED, /* qnum:172 -> linux:203 (KEY_PROG4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xad] = Q_KEY_CODE_UNMAPPED, /* qnum:173 -> linux:204 (KEY_DASHBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xae] = Q_KEY_CODE_VOLUMEDOWN, /* qnum:174 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xaf] = Q_KEY_CODE_UNMAPPED, /* qnum:175 -> linux:206 (KEY_CLOSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb0] = Q_KEY_CODE_VOLUMEUP, /* qnum:176 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xb1] = Q_KEY_CODE_UNMAPPED, /* qnum:177 -> linux:167 (KEY_RECORD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb2] = Q_KEY_CODE_AC_HOME, /* qnum:178 -> linux:172 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xb3] = Q_KEY_CODE_UNMAPPED, /* qnum:179 -> linux:207 (KEY_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb4] = Q_KEY_CODE_UNMAPPED, /* qnum:180 -> linux:208 (KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb5] = Q_KEY_CODE_KP_DIVIDE, /* qnum:181 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0xb6] = Q_KEY_CODE_UNMAPPED, /* qnum:182 -> linux:209 (KEY_BASSBOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb7] = Q_KEY_CODE_SYSRQ, /* qnum:183 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0xb8] = Q_KEY_CODE_ALT_R, /* qnum:184 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xb9] = Q_KEY_CODE_UNMAPPED, /* qnum:185 -> linux:210 (KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_UNMAPPED, /* qnum:186 -> linux:211 (KEY_HP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbb] = Q_KEY_CODE_UNMAPPED, /* qnum:187 -> linux:212 (KEY_CAMERA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbc] = Q_KEY_CODE_CUT, /* qnum:188 -> linux:137 (KEY_CUT) -> qcode:Q_KEY_CODE_CUT (cut) */
+ [0xbd] = Q_KEY_CODE_UNMAPPED, /* qnum:189 -> linux:213 (KEY_SOUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbe] = Q_KEY_CODE_UNMAPPED, /* qnum:190 -> linux:214 (KEY_QUESTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbf] = Q_KEY_CODE_UNMAPPED, /* qnum:191 -> linux:215 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc0] = Q_KEY_CODE_UNMAPPED, /* qnum:192 -> linux:216 (KEY_CHAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc1] = Q_KEY_CODE_FIND, /* qnum:193 -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0xc2] = Q_KEY_CODE_UNMAPPED, /* qnum:194 -> linux:218 (KEY_CONNECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc3] = Q_KEY_CODE_UNMAPPED, /* qnum:195 -> linux:219 (KEY_FINANCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc4] = Q_KEY_CODE_UNMAPPED, /* qnum:196 -> linux:220 (KEY_SPORT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc5] = Q_KEY_CODE_UNMAPPED, /* qnum:197 -> linux:221 (KEY_SHOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc6] = Q_KEY_CODE_PAUSE, /* qnum:198 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0xc7] = Q_KEY_CODE_HOME, /* qnum:199 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0xc8] = Q_KEY_CODE_UP, /* qnum:200 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0xc9] = Q_KEY_CODE_PGUP, /* qnum:201 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0xca] = Q_KEY_CODE_UNMAPPED, /* qnum:202 -> linux:223 (KEY_CANCEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcb] = Q_KEY_CODE_LEFT, /* qnum:203 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0xcc] = Q_KEY_CODE_UNMAPPED, /* qnum:204 -> linux:224 (KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcd] = Q_KEY_CODE_RIGHT, /* qnum:205 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0xce] = Q_KEY_CODE_UNMAPPED, /* qnum:206 -> linux:118 (KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcf] = Q_KEY_CODE_END, /* qnum:207 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0xd0] = Q_KEY_CODE_DOWN, /* qnum:208 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0xd1] = Q_KEY_CODE_PGDN, /* qnum:209 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0xd2] = Q_KEY_CODE_INSERT, /* qnum:210 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0xd3] = Q_KEY_CODE_DELETE, /* qnum:211 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0xd4] = Q_KEY_CODE_UNMAPPED, /* qnum:212 -> linux:225 (KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd5] = Q_KEY_CODE_UNMAPPED, /* qnum:213 -> linux:234 (KEY_SAVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd6] = Q_KEY_CODE_UNMAPPED, /* qnum:214 -> linux:227 (KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd7] = Q_KEY_CODE_UNMAPPED, /* qnum:215 -> linux:228 (KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd8] = Q_KEY_CODE_UNMAPPED, /* qnum:216 -> linux:229 (KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd9] = Q_KEY_CODE_UNMAPPED, /* qnum:217 -> linux:230 (KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xda] = Q_KEY_CODE_UNMAPPED, /* qnum:218 -> linux:231 (KEY_SEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdb] = Q_KEY_CODE_META_L, /* qnum:219 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xdc] = Q_KEY_CODE_META_R, /* qnum:220 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xdd] = Q_KEY_CODE_COMPOSE, /* qnum:221 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0xde] = Q_KEY_CODE_POWER, /* qnum:222 -> linux:116 (KEY_POWER) -> qcode:Q_KEY_CODE_POWER (power) */
+ [0xdf] = Q_KEY_CODE_SLEEP, /* qnum:223 -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0xe3] = Q_KEY_CODE_WAKE, /* qnum:227 -> linux:143 (KEY_WAKEUP) -> qcode:Q_KEY_CODE_WAKE (wake) */
+ [0xe4] = Q_KEY_CODE_UNMAPPED, /* qnum:228 -> linux:232 (KEY_REPLY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe5] = Q_KEY_CODE_UNMAPPED, /* qnum:229 -> linux:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe6] = Q_KEY_CODE_AC_BOOKMARKS, /* qnum:230 -> linux:156 (KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0xe7] = Q_KEY_CODE_AC_REFRESH, /* qnum:231 -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xe8] = Q_KEY_CODE_STOP, /* qnum:232 -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0xe9] = Q_KEY_CODE_AC_FORWARD, /* qnum:233 -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xea] = Q_KEY_CODE_AC_BACK, /* qnum:234 -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xeb] = Q_KEY_CODE_COMPUTER, /* qnum:235 -> linux:157 (KEY_COMPUTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0xec] = Q_KEY_CODE_MAIL, /* qnum:236 -> linux:155 (KEY_MAIL) -> qcode:Q_KEY_CODE_MAIL (mail) */
+ [0xed] = Q_KEY_CODE_MEDIASELECT, /* qnum:237 -> linux:226 (KEY_MEDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xef] = Q_KEY_CODE_UNMAPPED, /* qnum:239 -> linux:112 (KEY_MACRO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf0] = Q_KEY_CODE_UNMAPPED, /* qnum:240 -> linux:235 (KEY_DOCUMENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf1] = Q_KEY_CODE_UNMAPPED, /* qnum:241 -> linux:236 (KEY_BATTERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf2] = Q_KEY_CODE_UNMAPPED, /* qnum:242 -> linux:237 (KEY_BLUETOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf3] = Q_KEY_CODE_UNMAPPED, /* qnum:243 -> linux:238 (KEY_WLAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf4] = Q_KEY_CODE_UNMAPPED, /* qnum:244 -> linux:239 (KEY_UWB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf5] = Q_KEY_CODE_HELP, /* qnum:245 -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0xf6] = Q_KEY_CODE_UNMAPPED, /* qnum:246 -> linux:179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf7] = Q_KEY_CODE_UNMAPPED, /* qnum:247 -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf8] = Q_KEY_CODE_COPY, /* qnum:248 -> linux:133 (KEY_COPY) -> qcode:Q_KEY_CODE_COPY (copy) */
+ [0xf9] = Q_KEY_CODE_UNMAPPED, /* qnum:249 -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = Q_KEY_CODE_UNMAPPED, /* qnum:251 -> linux:180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfd] = Q_KEY_CODE_UNMAPPED, /* qnum:253 -> linux:162 (KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_qnum_to_qcode_len = sizeof(qemu_input_map_qnum_to_qcode)/sizeof(qemu_input_map_qnum_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-usb-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-usb-to-qcode.c
new file mode 100644
index 0000000000..3d8821653c
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-usb-to-qcode.c
@@ -0,0 +1,177 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_usb_to_qcode code-map keymaps.csv usb qcode
+*/
+const guint16 qemu_input_map_usb_to_qcode[252] = {
+ [0x4] = Q_KEY_CODE_A, /* usb:4 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x5] = Q_KEY_CODE_B, /* usb:5 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x6] = Q_KEY_CODE_C, /* usb:6 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x7] = Q_KEY_CODE_D, /* usb:7 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x8] = Q_KEY_CODE_E, /* usb:8 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x9] = Q_KEY_CODE_F, /* usb:9 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0xa] = Q_KEY_CODE_G, /* usb:10 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0xb] = Q_KEY_CODE_H, /* usb:11 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0xc] = Q_KEY_CODE_I, /* usb:12 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0xd] = Q_KEY_CODE_J, /* usb:13 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0xe] = Q_KEY_CODE_K, /* usb:14 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0xf] = Q_KEY_CODE_L, /* usb:15 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x10] = Q_KEY_CODE_M, /* usb:16 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x11] = Q_KEY_CODE_N, /* usb:17 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x12] = Q_KEY_CODE_O, /* usb:18 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x13] = Q_KEY_CODE_P, /* usb:19 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x14] = Q_KEY_CODE_Q, /* usb:20 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x15] = Q_KEY_CODE_R, /* usb:21 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x16] = Q_KEY_CODE_S, /* usb:22 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x17] = Q_KEY_CODE_T, /* usb:23 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x18] = Q_KEY_CODE_U, /* usb:24 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x19] = Q_KEY_CODE_V, /* usb:25 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x1a] = Q_KEY_CODE_W, /* usb:26 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x1b] = Q_KEY_CODE_X, /* usb:27 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x1c] = Q_KEY_CODE_Y, /* usb:28 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x1d] = Q_KEY_CODE_Z, /* usb:29 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x1e] = Q_KEY_CODE_1, /* usb:30 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x1f] = Q_KEY_CODE_2, /* usb:31 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x20] = Q_KEY_CODE_3, /* usb:32 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x21] = Q_KEY_CODE_4, /* usb:33 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x22] = Q_KEY_CODE_5, /* usb:34 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x23] = Q_KEY_CODE_6, /* usb:35 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x24] = Q_KEY_CODE_7, /* usb:36 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x25] = Q_KEY_CODE_8, /* usb:37 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x26] = Q_KEY_CODE_9, /* usb:38 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x27] = Q_KEY_CODE_0, /* usb:39 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x28] = Q_KEY_CODE_RET, /* usb:40 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x29] = Q_KEY_CODE_ESC, /* usb:41 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x2a] = Q_KEY_CODE_BACKSPACE, /* usb:42 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x2b] = Q_KEY_CODE_TAB, /* usb:43 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x2c] = Q_KEY_CODE_SPC, /* usb:44 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x2d] = Q_KEY_CODE_MINUS, /* usb:45 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x2e] = Q_KEY_CODE_EQUAL, /* usb:46 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x2f] = Q_KEY_CODE_BRACKET_LEFT, /* usb:47 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x30] = Q_KEY_CODE_BRACKET_RIGHT, /* usb:48 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x31] = Q_KEY_CODE_BACKSLASH, /* usb:49 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x32] = Q_KEY_CODE_BACKSLASH, /* usb:50 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x33] = Q_KEY_CODE_SEMICOLON, /* usb:51 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x34] = Q_KEY_CODE_APOSTROPHE, /* usb:52 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x35] = Q_KEY_CODE_GRAVE_ACCENT, /* usb:53 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x36] = Q_KEY_CODE_COMMA, /* usb:54 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x37] = Q_KEY_CODE_DOT, /* usb:55 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x38] = Q_KEY_CODE_SLASH, /* usb:56 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x39] = Q_KEY_CODE_CAPS_LOCK, /* usb:57 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x3a] = Q_KEY_CODE_F1, /* usb:58 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x3b] = Q_KEY_CODE_F2, /* usb:59 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x3c] = Q_KEY_CODE_F3, /* usb:60 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x3d] = Q_KEY_CODE_F4, /* usb:61 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x3e] = Q_KEY_CODE_F5, /* usb:62 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x3f] = Q_KEY_CODE_F6, /* usb:63 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x40] = Q_KEY_CODE_F7, /* usb:64 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x41] = Q_KEY_CODE_F8, /* usb:65 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x42] = Q_KEY_CODE_F9, /* usb:66 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x43] = Q_KEY_CODE_F10, /* usb:67 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x44] = Q_KEY_CODE_F11, /* usb:68 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x45] = Q_KEY_CODE_F12, /* usb:69 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x46] = Q_KEY_CODE_SYSRQ, /* usb:70 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x47] = Q_KEY_CODE_SCROLL_LOCK, /* usb:71 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x48] = Q_KEY_CODE_PAUSE, /* usb:72 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x49] = Q_KEY_CODE_INSERT, /* usb:73 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x4a] = Q_KEY_CODE_HOME, /* usb:74 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x4b] = Q_KEY_CODE_PGUP, /* usb:75 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x4c] = Q_KEY_CODE_DELETE, /* usb:76 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x4d] = Q_KEY_CODE_END, /* usb:77 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x4e] = Q_KEY_CODE_PGDN, /* usb:78 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x4f] = Q_KEY_CODE_RIGHT, /* usb:79 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x50] = Q_KEY_CODE_LEFT, /* usb:80 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x51] = Q_KEY_CODE_DOWN, /* usb:81 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x52] = Q_KEY_CODE_UP, /* usb:82 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x53] = Q_KEY_CODE_NUM_LOCK, /* usb:83 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x54] = Q_KEY_CODE_KP_DIVIDE, /* usb:84 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x55] = Q_KEY_CODE_KP_MULTIPLY, /* usb:85 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x56] = Q_KEY_CODE_KP_SUBTRACT, /* usb:86 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x57] = Q_KEY_CODE_KP_ADD, /* usb:87 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x58] = Q_KEY_CODE_KP_ENTER, /* usb:88 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x59] = Q_KEY_CODE_KP_1, /* usb:89 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x5a] = Q_KEY_CODE_KP_2, /* usb:90 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x5b] = Q_KEY_CODE_KP_3, /* usb:91 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5c] = Q_KEY_CODE_KP_4, /* usb:92 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x5d] = Q_KEY_CODE_KP_5, /* usb:93 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x5e] = Q_KEY_CODE_KP_6, /* usb:94 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x5f] = Q_KEY_CODE_KP_7, /* usb:95 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x60] = Q_KEY_CODE_KP_8, /* usb:96 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x61] = Q_KEY_CODE_KP_9, /* usb:97 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x62] = Q_KEY_CODE_KP_0, /* usb:98 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x63] = Q_KEY_CODE_KP_DECIMAL, /* usb:99 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x64] = Q_KEY_CODE_LESS, /* usb:100 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x65] = Q_KEY_CODE_COMPOSE, /* usb:101 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x66] = Q_KEY_CODE_POWER, /* usb:102 -> linux:116 (KEY_POWER) -> qcode:Q_KEY_CODE_POWER (power) */
+ [0x67] = Q_KEY_CODE_KP_EQUALS, /* usb:103 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x68] = Q_KEY_CODE_UNMAPPED, /* usb:104 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x69] = Q_KEY_CODE_UNMAPPED, /* usb:105 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6a] = Q_KEY_CODE_UNMAPPED, /* usb:106 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6b] = Q_KEY_CODE_UNMAPPED, /* usb:107 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6c] = Q_KEY_CODE_UNMAPPED, /* usb:108 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6d] = Q_KEY_CODE_UNMAPPED, /* usb:109 -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6e] = Q_KEY_CODE_UNMAPPED, /* usb:110 -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6f] = Q_KEY_CODE_UNMAPPED, /* usb:111 -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* usb:112 -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* usb:113 -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* usb:114 -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_UNMAPPED, /* usb:115 -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x74] = Q_KEY_CODE_OPEN, /* usb:116 -> linux:134 (KEY_OPEN) -> qcode:Q_KEY_CODE_OPEN (open) */
+ [0x75] = Q_KEY_CODE_HELP, /* usb:117 -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0x76] = Q_KEY_CODE_MENU, /* usb:118 -> linux:139 (KEY_MENU) -> qcode:Q_KEY_CODE_MENU (menu) */
+ [0x77] = Q_KEY_CODE_FRONT, /* usb:119 -> linux:132 (KEY_FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */
+ [0x78] = Q_KEY_CODE_STOP, /* usb:120 -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0x79] = Q_KEY_CODE_AGAIN, /* usb:121 -> linux:129 (KEY_AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */
+ [0x7a] = Q_KEY_CODE_UNDO, /* usb:122 -> linux:131 (KEY_UNDO) -> qcode:Q_KEY_CODE_UNDO (undo) */
+ [0x7b] = Q_KEY_CODE_CUT, /* usb:123 -> linux:137 (KEY_CUT) -> qcode:Q_KEY_CODE_CUT (cut) */
+ [0x7c] = Q_KEY_CODE_COPY, /* usb:124 -> linux:133 (KEY_COPY) -> qcode:Q_KEY_CODE_COPY (copy) */
+ [0x7d] = Q_KEY_CODE_PASTE, /* usb:125 -> linux:135 (KEY_PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x7e] = Q_KEY_CODE_FIND, /* usb:126 -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0x7f] = Q_KEY_CODE_AUDIOMUTE, /* usb:127 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x80] = Q_KEY_CODE_VOLUMEUP, /* usb:128 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x81] = Q_KEY_CODE_VOLUMEDOWN, /* usb:129 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x85] = Q_KEY_CODE_KP_COMMA, /* usb:133 -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x87] = Q_KEY_CODE_RO, /* usb:135 -> linux:89 (KEY_RO) -> qcode:Q_KEY_CODE_RO (ro) */
+ [0x88] = Q_KEY_CODE_UNMAPPED, /* usb:136 -> linux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x89] = Q_KEY_CODE_YEN, /* usb:137 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x8a] = Q_KEY_CODE_HENKAN, /* usb:138 -> linux:92 (KEY_HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x8b] = Q_KEY_CODE_UNMAPPED, /* usb:139 -> linux:94 (KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8c] = Q_KEY_CODE_UNMAPPED, /* usb:140 -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x90] = Q_KEY_CODE_UNMAPPED, /* usb:144 -> linux:122 (KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x91] = Q_KEY_CODE_UNMAPPED, /* usb:145 -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x92] = Q_KEY_CODE_UNMAPPED, /* usb:146 -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x93] = Q_KEY_CODE_HIRAGANA, /* usb:147 -> linux:91 (KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x94] = Q_KEY_CODE_UNMAPPED, /* usb:148 -> linux:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb6] = Q_KEY_CODE_UNMAPPED, /* usb:182 -> linux:179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb7] = Q_KEY_CODE_UNMAPPED, /* usb:183 -> linux:180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe0] = Q_KEY_CODE_CTRL, /* usb:224 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0xe1] = Q_KEY_CODE_SHIFT, /* usb:225 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0xe2] = Q_KEY_CODE_ALT, /* usb:226 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0xe3] = Q_KEY_CODE_META_L, /* usb:227 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xe4] = Q_KEY_CODE_CTRL_R, /* usb:228 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xe5] = Q_KEY_CODE_SHIFT_R, /* usb:229 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0xe6] = Q_KEY_CODE_ALT_R, /* usb:230 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xe7] = Q_KEY_CODE_META_R, /* usb:231 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xe8] = Q_KEY_CODE_AUDIOPLAY, /* usb:232 -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xe9] = Q_KEY_CODE_AUDIOSTOP, /* usb:233 -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xea] = Q_KEY_CODE_AUDIOPREV, /* usb:234 -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xeb] = Q_KEY_CODE_AUDIONEXT, /* usb:235 -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xec] = Q_KEY_CODE_UNMAPPED, /* usb:236 -> linux:161 (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xed] = Q_KEY_CODE_VOLUMEUP, /* usb:237 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xee] = Q_KEY_CODE_VOLUMEDOWN, /* usb:238 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xef] = Q_KEY_CODE_AUDIOMUTE, /* usb:239 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xf0] = Q_KEY_CODE_UNMAPPED, /* usb:240 -> linux:150 (KEY_WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf1] = Q_KEY_CODE_AC_BACK, /* usb:241 -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xf2] = Q_KEY_CODE_AC_FORWARD, /* usb:242 -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xf3] = Q_KEY_CODE_STOP, /* usb:243 -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0xf4] = Q_KEY_CODE_FIND, /* usb:244 -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0xf5] = Q_KEY_CODE_UNMAPPED, /* usb:245 -> linux:177 (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf6] = Q_KEY_CODE_UNMAPPED, /* usb:246 -> linux:178 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf7] = Q_KEY_CODE_UNMAPPED, /* usb:247 -> linux:176 (KEY_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf8] = Q_KEY_CODE_SLEEP, /* usb:248 -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0xf9] = Q_KEY_CODE_UNMAPPED, /* usb:249 -> linux:152 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfa] = Q_KEY_CODE_AC_REFRESH, /* usb:250 -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xfb] = Q_KEY_CODE_CALCULATOR, /* usb:251 -> linux:140 (KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+};
+const guint qemu_input_map_usb_to_qcode_len = sizeof(qemu_input_map_usb_to_qcode)/sizeof(qemu_input_map_usb_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-win32-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-win32-to-qcode.c
new file mode 100644
index 0000000000..d45b18485f
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-win32-to-qcode.c
@@ -0,0 +1,157 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_win32_to_qcode code-map keymaps.csv win32 qcode
+*/
+const guint16 qemu_input_map_win32_to_qcode[252] = {
+ [0x1] = Q_KEY_CODE_UNMAPPED, /* win32:1 (VK_LBUTTON) -> linux:256 (BTN_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2] = Q_KEY_CODE_UNMAPPED, /* win32:2 (VK_RBUTTON) -> linux:257 (BTN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x4] = Q_KEY_CODE_UNMAPPED, /* win32:4 (VK_MBUTTON) -> linux:258 (BTN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5] = Q_KEY_CODE_UNMAPPED, /* win32:5 (VK_XBUTTON1) -> linux:259 (BTN_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6] = Q_KEY_CODE_UNMAPPED, /* win32:6 (VK_XBUTTON2) -> linux:260 (BTN_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8] = Q_KEY_CODE_BACKSPACE, /* win32:8 (VK_BACK) -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x9] = Q_KEY_CODE_TAB, /* win32:9 (VK_TAB) -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0xd] = Q_KEY_CODE_RET, /* win32:13 (VK_RETURN) -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x10] = Q_KEY_CODE_SHIFT, /* win32:16 (VK_LSHIFT) -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x11] = Q_KEY_CODE_CTRL, /* win32:17 (VK_CONTROL) -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x12] = Q_KEY_CODE_ALT, /* win32:18 (VK_MENU) -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x13] = Q_KEY_CODE_PAUSE, /* win32:19 (VK_PAUSE) -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x14] = Q_KEY_CODE_CAPS_LOCK, /* win32:20 (VK_CAPITAL) -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x15] = Q_KEY_CODE_UNMAPPED, /* win32:21 (VK_HANGEUL) -> linux:122 (KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19] = Q_KEY_CODE_UNMAPPED, /* win32:25 (VK_HANJA) -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b] = Q_KEY_CODE_ESC, /* win32:27 (VK_ESCAPE) -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x20] = Q_KEY_CODE_SPC, /* win32:32 (VK_SPACE) -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x21] = Q_KEY_CODE_PGUP, /* win32:33 (VK_PRIOR) -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x22] = Q_KEY_CODE_PGDN, /* win32:34 (VK_NEXT) -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x23] = Q_KEY_CODE_END, /* win32:35 (VK_END) -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x24] = Q_KEY_CODE_HOME, /* win32:36 (VK_HOME) -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x25] = Q_KEY_CODE_LEFT, /* win32:37 (VK_LEFT) -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x26] = Q_KEY_CODE_UP, /* win32:38 (VK_UP) -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x27] = Q_KEY_CODE_RIGHT, /* win32:39 (VK_RIGHT) -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x28] = Q_KEY_CODE_DOWN, /* win32:40 (VK_DOWN) -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x29] = Q_KEY_CODE_UNMAPPED, /* win32:41 (VK_SELECT) -> linux:353 (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2a] = Q_KEY_CODE_UNMAPPED, /* win32:42 (VK_PRINT) -> linux:210 (KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2c] = Q_KEY_CODE_SYSRQ, /* win32:44 (VK_SNAPSHOT) -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x2d] = Q_KEY_CODE_INSERT, /* win32:45 (VK_INSERT) -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x2e] = Q_KEY_CODE_DELETE, /* win32:46 (VK_DELETE) -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x2f] = Q_KEY_CODE_HELP, /* win32:47 (VK_HELP) -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0x30] = Q_KEY_CODE_0, /* win32:48 (VK_0) -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x31] = Q_KEY_CODE_1, /* win32:49 (VK_1) -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x32] = Q_KEY_CODE_2, /* win32:50 (VK_2) -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x33] = Q_KEY_CODE_3, /* win32:51 (VK_3) -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x34] = Q_KEY_CODE_4, /* win32:52 (VK_4) -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x35] = Q_KEY_CODE_5, /* win32:53 (VK_5) -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x36] = Q_KEY_CODE_6, /* win32:54 (VK_6) -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x37] = Q_KEY_CODE_7, /* win32:55 (VK_7) -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x38] = Q_KEY_CODE_8, /* win32:56 (VK_8) -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x39] = Q_KEY_CODE_9, /* win32:57 (VK_9) -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x41] = Q_KEY_CODE_A, /* win32:65 (VK_A) -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x42] = Q_KEY_CODE_B, /* win32:66 (VK_B) -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x43] = Q_KEY_CODE_C, /* win32:67 (VK_C) -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x44] = Q_KEY_CODE_D, /* win32:68 (VK_D) -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x45] = Q_KEY_CODE_E, /* win32:69 (VK_E) -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x46] = Q_KEY_CODE_F, /* win32:70 (VK_F) -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x47] = Q_KEY_CODE_G, /* win32:71 (VK_G) -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x48] = Q_KEY_CODE_H, /* win32:72 (VK_H) -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x49] = Q_KEY_CODE_I, /* win32:73 (VK_I) -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x4a] = Q_KEY_CODE_J, /* win32:74 (VK_J) -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x4b] = Q_KEY_CODE_K, /* win32:75 (VK_K) -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x4c] = Q_KEY_CODE_L, /* win32:76 (VK_L) -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x4d] = Q_KEY_CODE_M, /* win32:77 (VK_M) -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x4e] = Q_KEY_CODE_N, /* win32:78 (VK_N) -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x4f] = Q_KEY_CODE_O, /* win32:79 (VK_O) -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x50] = Q_KEY_CODE_P, /* win32:80 (VK_P) -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x51] = Q_KEY_CODE_Q, /* win32:81 (VK_Q) -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x52] = Q_KEY_CODE_R, /* win32:82 (VK_R) -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x53] = Q_KEY_CODE_S, /* win32:83 (VK_S) -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x54] = Q_KEY_CODE_T, /* win32:84 (VK_T) -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x55] = Q_KEY_CODE_U, /* win32:85 (VK_U) -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x56] = Q_KEY_CODE_V, /* win32:86 (VK_V) -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x57] = Q_KEY_CODE_W, /* win32:87 (VK_W) -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x58] = Q_KEY_CODE_X, /* win32:88 (VK_X) -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x59] = Q_KEY_CODE_Y, /* win32:89 (VK_Y) -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x5a] = Q_KEY_CODE_Z, /* win32:90 (VK_Z) -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x5b] = Q_KEY_CODE_META_L, /* win32:91 (VK_LWIN) -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x5c] = Q_KEY_CODE_META_R, /* win32:92 (VK_RWIN) -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x5d] = Q_KEY_CODE_COMPOSE, /* win32:93 (VK_APPS) -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x5f] = Q_KEY_CODE_SLEEP, /* win32:95 (VK_SLEEP) -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0x60] = Q_KEY_CODE_KP_0, /* win32:96 (VK_NUMPAD0) -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x61] = Q_KEY_CODE_KP_1, /* win32:97 (VK_NUMPAD1) -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x62] = Q_KEY_CODE_KP_2, /* win32:98 (VK_NUMPAD2) -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x63] = Q_KEY_CODE_KP_3, /* win32:99 (VK_NUMPAD3) -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x64] = Q_KEY_CODE_KP_4, /* win32:100 (VK_NUMPAD4) -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x65] = Q_KEY_CODE_KP_5, /* win32:101 (VK_NUMPAD5) -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x66] = Q_KEY_CODE_KP_6, /* win32:102 (VK_NUMPAD6) -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x67] = Q_KEY_CODE_KP_7, /* win32:103 (VK_NUMPAD7) -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x68] = Q_KEY_CODE_KP_8, /* win32:104 (VK_NUMPAD8) -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x69] = Q_KEY_CODE_KP_9, /* win32:105 (VK_NUMPAD9) -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x6a] = Q_KEY_CODE_KP_MULTIPLY, /* win32:106 (VK_MULTIPLY) -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x6b] = Q_KEY_CODE_KP_ADD, /* win32:107 (VK_ADD) -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x6c] = Q_KEY_CODE_KP_COMMA, /* win32:108 (VK_SEPARATOR??) -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x6d] = Q_KEY_CODE_KP_SUBTRACT, /* win32:109 (VK_SUBTRACT) -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x6e] = Q_KEY_CODE_KP_DECIMAL, /* win32:110 (VK_DECIMAL) -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x6f] = Q_KEY_CODE_KP_DIVIDE, /* win32:111 (VK_DIVIDE) -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x70] = Q_KEY_CODE_F1, /* win32:112 (VK_F1) -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x71] = Q_KEY_CODE_F2, /* win32:113 (VK_F2) -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x72] = Q_KEY_CODE_F3, /* win32:114 (VK_F3) -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x73] = Q_KEY_CODE_F4, /* win32:115 (VK_F4) -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x74] = Q_KEY_CODE_F5, /* win32:116 (VK_F5) -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x75] = Q_KEY_CODE_F6, /* win32:117 (VK_F6) -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x76] = Q_KEY_CODE_F7, /* win32:118 (VK_F7) -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x77] = Q_KEY_CODE_F8, /* win32:119 (VK_F8) -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x78] = Q_KEY_CODE_F9, /* win32:120 (VK_F9) -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x79] = Q_KEY_CODE_F10, /* win32:121 (VK_F10) -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x7a] = Q_KEY_CODE_F11, /* win32:122 (VK_F11) -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x7b] = Q_KEY_CODE_F12, /* win32:123 (VK_F12) -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x7c] = Q_KEY_CODE_UNMAPPED, /* win32:124 (VK_F13) -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7d] = Q_KEY_CODE_UNMAPPED, /* win32:125 (VK_F14) -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_UNMAPPED, /* win32:126 (VK_F15) -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7f] = Q_KEY_CODE_UNMAPPED, /* win32:127 (VK_F16) -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x80] = Q_KEY_CODE_UNMAPPED, /* win32:128 (VK_F17) -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x81] = Q_KEY_CODE_UNMAPPED, /* win32:129 (VK_F18) -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x82] = Q_KEY_CODE_UNMAPPED, /* win32:130 (VK_F19) -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x83] = Q_KEY_CODE_UNMAPPED, /* win32:131 (VK_F20) -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x84] = Q_KEY_CODE_UNMAPPED, /* win32:132 (VK_F21) -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x85] = Q_KEY_CODE_UNMAPPED, /* win32:133 (VK_F22) -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x86] = Q_KEY_CODE_UNMAPPED, /* win32:134 (VK_F23) -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x87] = Q_KEY_CODE_UNMAPPED, /* win32:135 (VK_F24) -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x90] = Q_KEY_CODE_NUM_LOCK, /* win32:144 (VK_NUMLOCK) -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x91] = Q_KEY_CODE_SCROLL_LOCK, /* win32:145 (VK_SCROLL) -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0xa0] = Q_KEY_CODE_SHIFT, /* win32:160 (VK_LSHIFT) -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0xa1] = Q_KEY_CODE_SHIFT_R, /* win32:161 (VK_RSHIFT) -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0xa2] = Q_KEY_CODE_CTRL, /* win32:162 (VK_CONTROL) -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0xa3] = Q_KEY_CODE_CTRL_R, /* win32:163 (VK_RCONTROL) -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xa4] = Q_KEY_CODE_ALT, /* win32:164 (VK_MENU) -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0xa5] = Q_KEY_CODE_ALT_R, /* win32:165 (VK_RMENU) -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xa6] = Q_KEY_CODE_AC_BACK, /* win32:166 (VK_BROWSER_BACK) -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xa7] = Q_KEY_CODE_AC_FORWARD, /* win32:167 (VK_BROWSER_FORWARD) -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xa8] = Q_KEY_CODE_AC_REFRESH, /* win32:168 (VK_BROWSER_REFRESH) -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xa9] = Q_KEY_CODE_STOP, /* win32:169 (VK_BROWSER_STOP) -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0xaa] = Q_KEY_CODE_UNMAPPED, /* win32:170 (VK_BROWSER_SEARCH) -> linux:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_UNMAPPED, /* win32:171 (VK_BROWSER_FAVOURITES) -> linux:364 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xac] = Q_KEY_CODE_AC_HOME, /* win32:172 (VK_BROWSER_HOME) -> linux:172 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xad] = Q_KEY_CODE_AUDIOMUTE, /* win32:173 (VK_VOLUME_MUTE) -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xae] = Q_KEY_CODE_VOLUMEDOWN, /* win32:174 (VK_VOLUME_DOWN) -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xaf] = Q_KEY_CODE_VOLUMEUP, /* win32:175 (VK_VOLUME_UP) -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xb0] = Q_KEY_CODE_AUDIONEXT, /* win32:176 (VK_MEDIA_NEXT_TRACK) -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xb1] = Q_KEY_CODE_AUDIOPREV, /* win32:177 (VK_MEDIA_PREV_TRACK) -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xb2] = Q_KEY_CODE_AUDIOSTOP, /* win32:178 (VK_MEDIA_STOP) -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xb3] = Q_KEY_CODE_AUDIOPLAY, /* win32:179 (VK_MEDIA_PLAY_PAUSE) -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xb4] = Q_KEY_CODE_UNMAPPED, /* win32:180 (VK_LAUNCH_MAIL) -> linux:215 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_SEMICOLON, /* win32:186 (VK_OEM_1) -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0xbb] = Q_KEY_CODE_EQUAL, /* win32:187 (VK_OEM_PLUS) -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xbc] = Q_KEY_CODE_COMMA, /* win32:188 (VK_OEM_COMMA) -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0xbd] = Q_KEY_CODE_MINUS, /* win32:189 (VK_OEM_MINUS) -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xbe] = Q_KEY_CODE_DOT, /* win32:190 (VK_OEM_PERIOD) -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0xbf] = Q_KEY_CODE_SLASH, /* win32:191 (VK_OEM_2) -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0xc0] = Q_KEY_CODE_GRAVE_ACCENT, /* win32:192 (VK_OEM_3) -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0xdb] = Q_KEY_CODE_BRACKET_LEFT, /* win32:219 (VK_OEM_4) -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0xdc] = Q_KEY_CODE_BACKSLASH, /* win32:220 (VK_OEM_5) -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0xdd] = Q_KEY_CODE_BRACKET_RIGHT, /* win32:221 (VK_OEM_6) -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0xde] = Q_KEY_CODE_APOSTROPHE, /* win32:222 (VK_OEM_7) -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0xe1] = Q_KEY_CODE_LESS, /* win32:225 (VK_OEM_102) -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0xfa] = Q_KEY_CODE_UNMAPPED, /* win32:250 (VK_PLAY) -> linux:207 (KEY_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = Q_KEY_CODE_UNMAPPED, /* win32:251 (VK_ZOOM) -> linux:372 (KEY_ZOOM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_win32_to_qcode_len = sizeof(qemu_input_map_win32_to_qcode)/sizeof(qemu_input_map_win32_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-x11-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-x11-to-qcode.c
new file mode 100644
index 0000000000..94670c28f9
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-x11-to-qcode.c
@@ -0,0 +1,163 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_x11_to_qcode code-map keymaps.csv x11 qcode
+*/
+const guint16 qemu_input_map_x11_to_qcode[65536] = {
+ [0x20] = Q_KEY_CODE_SPC, /* x11:32 (XK_space) -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x21] = Q_KEY_CODE_1, /* x11:33 (XK_exclam) -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x22] = Q_KEY_CODE_APOSTROPHE, /* x11:34 (XK_quotedbl) -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x23] = Q_KEY_CODE_3, /* x11:35 (XK_numbersign) -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x24] = Q_KEY_CODE_4, /* x11:36 (XK_dollar) -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x25] = Q_KEY_CODE_5, /* x11:37 (XK_percent) -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x26] = Q_KEY_CODE_7, /* x11:38 (XK_ampersand) -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x27] = Q_KEY_CODE_APOSTROPHE, /* x11:39 (XK_quotedbl) -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x28] = Q_KEY_CODE_9, /* x11:40 (XK_parenleft) -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x29] = Q_KEY_CODE_0, /* x11:41 (XK_parenright) -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x2a] = Q_KEY_CODE_8, /* x11:42 (XK_asterisk) -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x2b] = Q_KEY_CODE_EQUAL, /* x11:43 (XK_plus) -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x2c] = Q_KEY_CODE_COMMA, /* x11:44 (XK_less) -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x2d] = Q_KEY_CODE_MINUS, /* x11:45 (XK_underscore) -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x2e] = Q_KEY_CODE_DOT, /* x11:46 (XK_greater) -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x2f] = Q_KEY_CODE_SLASH, /* x11:47 (XK_question) -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x30] = Q_KEY_CODE_0, /* x11:48 (XK_parenright) -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x31] = Q_KEY_CODE_1, /* x11:49 (XK_exclam) -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x32] = Q_KEY_CODE_2, /* x11:50 (XK_at) -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x33] = Q_KEY_CODE_3, /* x11:51 (XK_numbersign) -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x34] = Q_KEY_CODE_4, /* x11:52 (XK_dollar) -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x35] = Q_KEY_CODE_5, /* x11:53 (XK_percent) -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x36] = Q_KEY_CODE_6, /* x11:54 (XK_asciicircum) -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x37] = Q_KEY_CODE_7, /* x11:55 (XK_ampersand) -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x38] = Q_KEY_CODE_8, /* x11:56 (XK_asterisk) -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x39] = Q_KEY_CODE_9, /* x11:57 (XK_parenleft) -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x3a] = Q_KEY_CODE_SEMICOLON, /* x11:58 (XK_colon) -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x3b] = Q_KEY_CODE_SEMICOLON, /* x11:59 (XK_colon) -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x3c] = Q_KEY_CODE_COMMA, /* x11:60 (XK_less) -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3d] = Q_KEY_CODE_EQUAL, /* x11:61 (XK_plus) -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x3e] = Q_KEY_CODE_DOT, /* x11:62 (XK_greater) -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3f] = Q_KEY_CODE_SLASH, /* x11:63 (XK_question) -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x40] = Q_KEY_CODE_2, /* x11:64 (XK_at) -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x41] = Q_KEY_CODE_A, /* x11:65 (XK_a) -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x42] = Q_KEY_CODE_B, /* x11:66 (XK_b) -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x43] = Q_KEY_CODE_C, /* x11:67 (XK_c) -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x44] = Q_KEY_CODE_D, /* x11:68 (XK_d) -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x45] = Q_KEY_CODE_E, /* x11:69 (XK_e) -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x46] = Q_KEY_CODE_F, /* x11:70 (XK_f) -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x47] = Q_KEY_CODE_G, /* x11:71 (XK_g) -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x48] = Q_KEY_CODE_H, /* x11:72 (XK_h) -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x49] = Q_KEY_CODE_I, /* x11:73 (XK_i) -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x4a] = Q_KEY_CODE_J, /* x11:74 (XK_j) -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x4b] = Q_KEY_CODE_K, /* x11:75 (XK_k) -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x4c] = Q_KEY_CODE_L, /* x11:76 (XK_l) -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x4d] = Q_KEY_CODE_M, /* x11:77 (XK_m) -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x4e] = Q_KEY_CODE_N, /* x11:78 (XK_n) -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x4f] = Q_KEY_CODE_O, /* x11:79 (XK_o) -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x50] = Q_KEY_CODE_P, /* x11:80 (XK_p) -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x51] = Q_KEY_CODE_Q, /* x11:81 (XK_q) -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x52] = Q_KEY_CODE_R, /* x11:82 (XK_r) -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x53] = Q_KEY_CODE_S, /* x11:83 (XK_s) -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x54] = Q_KEY_CODE_T, /* x11:84 (XK_t) -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x55] = Q_KEY_CODE_U, /* x11:85 (XK_u) -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x56] = Q_KEY_CODE_V, /* x11:86 (XK_v) -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x57] = Q_KEY_CODE_W, /* x11:87 (XK_w) -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x58] = Q_KEY_CODE_X, /* x11:88 (XK_x) -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x59] = Q_KEY_CODE_Y, /* x11:89 (XK_y) -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x5a] = Q_KEY_CODE_Z, /* x11:90 (XK_z) -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x5b] = Q_KEY_CODE_BRACKET_LEFT, /* x11:91 (XK_braceleft) -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x5c] = Q_KEY_CODE_BACKSLASH, /* x11:92 (XK_bar) -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x5d] = Q_KEY_CODE_BRACKET_RIGHT, /* x11:93 (XK_braceright) -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x5e] = Q_KEY_CODE_6, /* x11:94 (XK_asciicircum) -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x5f] = Q_KEY_CODE_MINUS, /* x11:95 (XK_underscore) -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x60] = Q_KEY_CODE_GRAVE_ACCENT, /* x11:96 (XK_asciitilde) -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x61] = Q_KEY_CODE_A, /* x11:97 (XK_a) -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x62] = Q_KEY_CODE_B, /* x11:98 (XK_b) -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x63] = Q_KEY_CODE_C, /* x11:99 (XK_c) -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x64] = Q_KEY_CODE_D, /* x11:100 (XK_d) -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x65] = Q_KEY_CODE_E, /* x11:101 (XK_e) -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x66] = Q_KEY_CODE_F, /* x11:102 (XK_f) -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x67] = Q_KEY_CODE_G, /* x11:103 (XK_g) -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x68] = Q_KEY_CODE_H, /* x11:104 (XK_h) -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x69] = Q_KEY_CODE_I, /* x11:105 (XK_i) -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x6a] = Q_KEY_CODE_J, /* x11:106 (XK_j) -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x6b] = Q_KEY_CODE_K, /* x11:107 (XK_k) -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x6c] = Q_KEY_CODE_L, /* x11:108 (XK_l) -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x6d] = Q_KEY_CODE_M, /* x11:109 (XK_m) -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x6e] = Q_KEY_CODE_N, /* x11:110 (XK_n) -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x6f] = Q_KEY_CODE_O, /* x11:111 (XK_o) -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x70] = Q_KEY_CODE_P, /* x11:112 (XK_p) -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x71] = Q_KEY_CODE_Q, /* x11:113 (XK_q) -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x72] = Q_KEY_CODE_R, /* x11:114 (XK_r) -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x73] = Q_KEY_CODE_S, /* x11:115 (XK_s) -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x74] = Q_KEY_CODE_T, /* x11:116 (XK_t) -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x75] = Q_KEY_CODE_U, /* x11:117 (XK_u) -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x76] = Q_KEY_CODE_V, /* x11:118 (XK_v) -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x77] = Q_KEY_CODE_W, /* x11:119 (XK_w) -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x78] = Q_KEY_CODE_X, /* x11:120 (XK_x) -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x79] = Q_KEY_CODE_Y, /* x11:121 (XK_y) -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x7a] = Q_KEY_CODE_Z, /* x11:122 (XK_z) -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x7b] = Q_KEY_CODE_BRACKET_LEFT, /* x11:123 (XK_braceleft) -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x7c] = Q_KEY_CODE_BACKSLASH, /* x11:124 (XK_bar) -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x7d] = Q_KEY_CODE_BRACKET_RIGHT, /* x11:125 (XK_braceright) -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x7e] = Q_KEY_CODE_GRAVE_ACCENT, /* x11:126 (XK_asciitilde) -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0xd7] = Q_KEY_CODE_KP_MULTIPLY, /* x11:215 (XK_multiply) -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0xff08] = Q_KEY_CODE_BACKSPACE, /* x11:65288 (XK_BackSpace) -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xff09] = Q_KEY_CODE_TAB, /* x11:65289 (XK_Tab) -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0xff0d] = Q_KEY_CODE_RET, /* x11:65293 (XK_Return) -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0xff13] = Q_KEY_CODE_PAUSE, /* x11:65299 (XK_Pause) -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0xff14] = Q_KEY_CODE_SCROLL_LOCK, /* x11:65300 (XK_Scroll_Lock) -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0xff15] = Q_KEY_CODE_SYSRQ, /* x11:65301 (XK_Sys_Req) -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0xff1b] = Q_KEY_CODE_ESC, /* x11:65307 (XK_Escape) -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0xff50] = Q_KEY_CODE_HOME, /* x11:65360 (XK_Home) -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0xff51] = Q_KEY_CODE_LEFT, /* x11:65361 (XK_Left) -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0xff52] = Q_KEY_CODE_UP, /* x11:65362 (XK_Up) -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0xff53] = Q_KEY_CODE_RIGHT, /* x11:65363 (XK_Right) -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0xff54] = Q_KEY_CODE_DOWN, /* x11:65364 (XK_Down) -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0xff55] = Q_KEY_CODE_PGUP, /* x11:65365 (XK_Page_Up) -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0xff56] = Q_KEY_CODE_PGDN, /* x11:65366 (XK_Page_Down) -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0xff57] = Q_KEY_CODE_END, /* x11:65367 (XK_End) -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0xff60] = Q_KEY_CODE_UNMAPPED, /* x11:65376 (XK_Select) -> linux:353 (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xff63] = Q_KEY_CODE_INSERT, /* x11:65379 (XK_Insert) -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0xff6a] = Q_KEY_CODE_HELP, /* x11:65386 (XK_Help) -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0xff7f] = Q_KEY_CODE_NUM_LOCK, /* x11:65407 (XK_Num_Lock) -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0xff8d] = Q_KEY_CODE_KP_ENTER, /* x11:65421 (XK_KP_Enter) -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0xffab] = Q_KEY_CODE_KP_ADD, /* x11:65451 (XK_KP_Add) -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0xffac] = Q_KEY_CODE_UNMAPPED, /* x11:65452 (XK_KP_Separator) -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xffad] = Q_KEY_CODE_KP_SUBTRACT, /* x11:65453 (XK_KP_Subtract) -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0xffae] = Q_KEY_CODE_KP_DECIMAL, /* x11:65454 (XK_KP_Decimal) -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0xffaf] = Q_KEY_CODE_KP_DIVIDE, /* x11:65455 (XK_KP_Divide) -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0xffb0] = Q_KEY_CODE_KP_0, /* x11:65456 (XK_KP_0) -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0xffb1] = Q_KEY_CODE_KP_1, /* x11:65457 (XK_KP_1) -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0xffb2] = Q_KEY_CODE_KP_2, /* x11:65458 (XK_KP_2) -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0xffb3] = Q_KEY_CODE_KP_3, /* x11:65459 (XK_KP_3) -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0xffb4] = Q_KEY_CODE_KP_4, /* x11:65460 (XK_KP_4) -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0xffb5] = Q_KEY_CODE_KP_5, /* x11:65461 (XK_KP_5) -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0xffb6] = Q_KEY_CODE_KP_6, /* x11:65462 (XK_KP_6) -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0xffb7] = Q_KEY_CODE_KP_7, /* x11:65463 (XK_KP_7) -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0xffb8] = Q_KEY_CODE_KP_8, /* x11:65464 (XK_KP_8) -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0xffb9] = Q_KEY_CODE_KP_9, /* x11:65465 (XK_KP_9) -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0xffbd] = Q_KEY_CODE_KP_EQUALS, /* x11:65469 (XK_KP_Equal) -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0xffbe] = Q_KEY_CODE_F1, /* x11:65470 (XK_F1) -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0xffbf] = Q_KEY_CODE_F2, /* x11:65471 (XK_F2) -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0xffc0] = Q_KEY_CODE_F3, /* x11:65472 (XK_F3) -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0xffc1] = Q_KEY_CODE_F4, /* x11:65473 (XK_F4) -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0xffc2] = Q_KEY_CODE_F5, /* x11:65474 (XK_F5) -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0xffc3] = Q_KEY_CODE_F6, /* x11:65475 (XK_F6) -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0xffc4] = Q_KEY_CODE_F7, /* x11:65476 (XK_F7) -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0xffc5] = Q_KEY_CODE_F8, /* x11:65477 (XK_F8) -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0xffc6] = Q_KEY_CODE_F9, /* x11:65478 (XK_F9) -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0xffc7] = Q_KEY_CODE_F10, /* x11:65479 (XK_F10) -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0xffc8] = Q_KEY_CODE_F11, /* x11:65480 (XK_F11) -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0xffc9] = Q_KEY_CODE_F12, /* x11:65481 (XK_F12) -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0xffe1] = Q_KEY_CODE_SHIFT, /* x11:65505 (XK_Shift_L) -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0xffe2] = Q_KEY_CODE_SHIFT_R, /* x11:65506 (XK_Shift_R) -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0xffe3] = Q_KEY_CODE_CTRL, /* x11:65507 (XK_Control_L) -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0xffe4] = Q_KEY_CODE_CTRL_R, /* x11:65508 (XK_Control_R) -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xffe5] = Q_KEY_CODE_CAPS_LOCK, /* x11:65509 (XK_Caps_Lock) -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0xffe7] = Q_KEY_CODE_META_L, /* x11:65511 (XK_Meta_L) -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xffe8] = Q_KEY_CODE_META_R, /* x11:65512 (XK_Meta_R) -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xffe9] = Q_KEY_CODE_ALT, /* x11:65513 (XK_Alt_L) -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0xffea] = Q_KEY_CODE_ALT_R, /* x11:65514 (XK_Alt_R) -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xffff] = Q_KEY_CODE_DELETE, /* x11:65535 (XK_Delete) -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+};
+const guint qemu_input_map_x11_to_qcode_len = sizeof(qemu_input_map_x11_to_qcode)/sizeof(qemu_input_map_x11_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-xorgevdev-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-xorgevdev-to-qcode.c
new file mode 100644
index 0000000000..02f84937d6
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-xorgevdev-to-qcode.c
@@ -0,0 +1,464 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgevdev_to_qcode code-map keymaps.csv xorgevdev qcode
+*/
+const guint16 qemu_input_map_xorgevdev_to_qcode[589] = {
+ [0x8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:8 -> linux:0 (KEY_RESERVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */
+ [0x9] = Q_KEY_CODE_ESC, /* xorgevdev:9 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgevdev:10 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgevdev:11 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgevdev:12 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgevdev:13 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgevdev:14 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgevdev:15 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgevdev:16 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgevdev:17 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgevdev:18 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgevdev:19 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgevdev:20 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgevdev:21 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgevdev:22 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgevdev:23 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgevdev:24 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgevdev:25 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgevdev:26 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgevdev:27 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgevdev:28 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgevdev:29 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgevdev:30 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgevdev:31 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgevdev:32 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgevdev:33 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgevdev:34 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgevdev:35 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgevdev:36 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgevdev:37 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgevdev:38 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgevdev:39 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgevdev:40 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgevdev:41 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgevdev:42 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgevdev:43 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgevdev:44 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgevdev:45 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgevdev:46 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgevdev:47 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgevdev:48 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgevdev:49 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgevdev:50 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgevdev:51 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgevdev:52 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgevdev:53 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgevdev:54 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgevdev:55 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgevdev:56 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgevdev:57 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgevdev:58 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgevdev:59 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgevdev:60 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgevdev:61 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgevdev:62 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgevdev:63 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgevdev:64 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgevdev:65 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgevdev:66 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgevdev:67 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgevdev:68 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgevdev:69 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgevdev:70 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgevdev:71 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgevdev:72 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgevdev:73 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgevdev:74 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgevdev:75 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgevdev:76 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgevdev:77 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgevdev:78 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgevdev:79 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgevdev:80 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgevdev:81 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgevdev:82 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgevdev:83 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgevdev:84 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgevdev:85 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgevdev:86 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgevdev:87 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgevdev:88 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgevdev:89 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgevdev:90 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgevdev:91 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:92 -> linux:84 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:93 -> linux:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgevdev:94 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgevdev:95 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgevdev:96 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_RO, /* xorgevdev:97 -> linux:89 (KEY_RO) -> qcode:Q_KEY_CODE_RO (ro) */
+ [0x62] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:98 -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_HIRAGANA, /* xorgevdev:99 -> linux:91 (KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x64] = Q_KEY_CODE_HENKAN, /* xorgevdev:100 -> linux:92 (KEY_HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x65] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:101 -> linux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x66] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:102 -> linux:94 (KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:103 -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_KP_ENTER, /* xorgevdev:104 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x69] = Q_KEY_CODE_CTRL_R, /* xorgevdev:105 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6a] = Q_KEY_CODE_KP_DIVIDE, /* xorgevdev:106 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x6b] = Q_KEY_CODE_SYSRQ, /* xorgevdev:107 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x6c] = Q_KEY_CODE_ALT_R, /* xorgevdev:108 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x6d] = Q_KEY_CODE_LF, /* xorgevdev:109 -> linux:101 (KEY_LINEFEED) -> qcode:Q_KEY_CODE_LF (lf) */
+ [0x6e] = Q_KEY_CODE_HOME, /* xorgevdev:110 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x6f] = Q_KEY_CODE_UP, /* xorgevdev:111 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x70] = Q_KEY_CODE_PGUP, /* xorgevdev:112 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x71] = Q_KEY_CODE_LEFT, /* xorgevdev:113 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x72] = Q_KEY_CODE_RIGHT, /* xorgevdev:114 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x73] = Q_KEY_CODE_END, /* xorgevdev:115 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x74] = Q_KEY_CODE_DOWN, /* xorgevdev:116 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x75] = Q_KEY_CODE_PGDN, /* xorgevdev:117 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x76] = Q_KEY_CODE_INSERT, /* xorgevdev:118 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x77] = Q_KEY_CODE_DELETE, /* xorgevdev:119 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:120 -> linux:112 (KEY_MACRO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_AUDIOMUTE, /* xorgevdev:121 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x7a] = Q_KEY_CODE_VOLUMEDOWN, /* xorgevdev:122 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x7b] = Q_KEY_CODE_VOLUMEUP, /* xorgevdev:123 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x7c] = Q_KEY_CODE_POWER, /* xorgevdev:124 -> linux:116 (KEY_POWER) -> qcode:Q_KEY_CODE_POWER (power) */
+ [0x7d] = Q_KEY_CODE_KP_EQUALS, /* xorgevdev:125 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x7e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:126 -> linux:118 (KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7f] = Q_KEY_CODE_PAUSE, /* xorgevdev:127 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x80] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:128 -> linux:120 (KEY_SCALE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x81] = Q_KEY_CODE_KP_COMMA, /* xorgevdev:129 -> linux:121 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x82] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:130 -> linux:122 (KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x83] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:131 -> linux:123 (KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x84] = Q_KEY_CODE_YEN, /* xorgevdev:132 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x85] = Q_KEY_CODE_META_L, /* xorgevdev:133 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x86] = Q_KEY_CODE_META_R, /* xorgevdev:134 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x87] = Q_KEY_CODE_COMPOSE, /* xorgevdev:135 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x88] = Q_KEY_CODE_STOP, /* xorgevdev:136 -> linux:128 (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0x89] = Q_KEY_CODE_AGAIN, /* xorgevdev:137 -> linux:129 (KEY_AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */
+ [0x8a] = Q_KEY_CODE_PROPS, /* xorgevdev:138 -> linux:130 (KEY_PROPS) -> qcode:Q_KEY_CODE_PROPS (props) */
+ [0x8b] = Q_KEY_CODE_UNDO, /* xorgevdev:139 -> linux:131 (KEY_UNDO) -> qcode:Q_KEY_CODE_UNDO (undo) */
+ [0x8c] = Q_KEY_CODE_FRONT, /* xorgevdev:140 -> linux:132 (KEY_FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */
+ [0x8d] = Q_KEY_CODE_COPY, /* xorgevdev:141 -> linux:133 (KEY_COPY) -> qcode:Q_KEY_CODE_COPY (copy) */
+ [0x8e] = Q_KEY_CODE_OPEN, /* xorgevdev:142 -> linux:134 (KEY_OPEN) -> qcode:Q_KEY_CODE_OPEN (open) */
+ [0x8f] = Q_KEY_CODE_PASTE, /* xorgevdev:143 -> linux:135 (KEY_PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x90] = Q_KEY_CODE_FIND, /* xorgevdev:144 -> linux:136 (KEY_FIND) -> qcode:Q_KEY_CODE_FIND (find) */
+ [0x91] = Q_KEY_CODE_CUT, /* xorgevdev:145 -> linux:137 (KEY_CUT) -> qcode:Q_KEY_CODE_CUT (cut) */
+ [0x92] = Q_KEY_CODE_HELP, /* xorgevdev:146 -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0x93] = Q_KEY_CODE_MENU, /* xorgevdev:147 -> linux:139 (KEY_MENU) -> qcode:Q_KEY_CODE_MENU (menu) */
+ [0x94] = Q_KEY_CODE_CALCULATOR, /* xorgevdev:148 -> linux:140 (KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0x95] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:149 -> linux:141 (KEY_SETUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x96] = Q_KEY_CODE_SLEEP, /* xorgevdev:150 -> linux:142 (KEY_SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0x97] = Q_KEY_CODE_WAKE, /* xorgevdev:151 -> linux:143 (KEY_WAKEUP) -> qcode:Q_KEY_CODE_WAKE (wake) */
+ [0x98] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:152 -> linux:144 (KEY_FILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x99] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:153 -> linux:145 (KEY_SENDFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:154 -> linux:146 (KEY_DELETEFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:155 -> linux:147 (KEY_XFER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:156 -> linux:148 (KEY_PROG1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:157 -> linux:149 (KEY_PROG2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:158 -> linux:150 (KEY_WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:159 -> linux:151 (KEY_MSDOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:160 -> linux:152 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:161 -> linux:153 (KEY_DIRECTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:162 -> linux:154 (KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa3] = Q_KEY_CODE_MAIL, /* xorgevdev:163 -> linux:155 (KEY_MAIL) -> qcode:Q_KEY_CODE_MAIL (mail) */
+ [0xa4] = Q_KEY_CODE_AC_BOOKMARKS, /* xorgevdev:164 -> linux:156 (KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0xa5] = Q_KEY_CODE_COMPUTER, /* xorgevdev:165 -> linux:157 (KEY_COMPUTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0xa6] = Q_KEY_CODE_AC_BACK, /* xorgevdev:166 -> linux:158 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xa7] = Q_KEY_CODE_AC_FORWARD, /* xorgevdev:167 -> linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xa8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:168 -> linux:160 (KEY_CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:169 -> linux:161 (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xaa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:170 -> linux:162 (KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_AUDIONEXT, /* xorgevdev:171 -> linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xac] = Q_KEY_CODE_AUDIOPLAY, /* xorgevdev:172 -> linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xad] = Q_KEY_CODE_AUDIOPREV, /* xorgevdev:173 -> linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xae] = Q_KEY_CODE_AUDIOSTOP, /* xorgevdev:174 -> linux:166 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xaf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:175 -> linux:167 (KEY_RECORD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:176 -> linux:168 (KEY_REWIND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:177 -> linux:169 (KEY_PHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:178 -> linux:170 (KEY_ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:179 -> linux:171 (KEY_CONFIG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb4] = Q_KEY_CODE_AC_HOME, /* xorgevdev:180 -> linux:172 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xb5] = Q_KEY_CODE_AC_REFRESH, /* xorgevdev:181 -> linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xb6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:182 -> linux:174 (KEY_EXIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:183 -> linux:175 (KEY_MOVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:184 -> linux:176 (KEY_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:185 -> linux:177 (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:186 -> linux:178 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:187 -> linux:179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:188 -> linux:180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:189 -> linux:181 (KEY_NEW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:190 -> linux:182 (KEY_REDO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:191 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:192 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:193 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:194 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:195 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:196 -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:197 -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:198 -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:199 -> linux:191 (KEY_F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:200 -> linux:192 (KEY_F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:201 -> linux:193 (KEY_F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xca] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:202 -> linux:194 (KEY_F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:203 -> linux:195 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:204 -> linux:196 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:205 -> linux:197 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xce] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:206 -> linux:198 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:207 -> linux:199 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:208 -> linux:200 (KEY_PLAYCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:209 -> linux:201 (KEY_PAUSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:210 -> linux:202 (KEY_PROG3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:211 -> linux:203 (KEY_PROG4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:212 -> linux:204 (KEY_DASHBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:213 -> linux:205 (KEY_SUSPEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:214 -> linux:206 (KEY_CLOSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:215 -> linux:207 (KEY_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:216 -> linux:208 (KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:217 -> linux:209 (KEY_BASSBOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xda] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:218 -> linux:210 (KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:219 -> linux:211 (KEY_HP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:220 -> linux:212 (KEY_CAMERA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:221 -> linux:213 (KEY_SOUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xde] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:222 -> linux:214 (KEY_QUESTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:223 -> linux:215 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:224 -> linux:216 (KEY_CHAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:225 -> linux:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:226 -> linux:218 (KEY_CONNECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:227 -> linux:219 (KEY_FINANCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:228 -> linux:220 (KEY_SPORT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:229 -> linux:221 (KEY_SHOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:230 -> linux:222 (KEY_ALTERASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:231 -> linux:223 (KEY_CANCEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:232 -> linux:224 (KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:233 -> linux:225 (KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xea] = Q_KEY_CODE_MEDIASELECT, /* xorgevdev:234 -> linux:226 (KEY_MEDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xeb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:235 -> linux:227 (KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xec] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:236 -> linux:228 (KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xed] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:237 -> linux:229 (KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xee] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:238 -> linux:230 (KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xef] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:239 -> linux:231 (KEY_SEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:240 -> linux:232 (KEY_REPLY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:241 -> linux:233 (KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:242 -> linux:234 (KEY_SAVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:243 -> linux:235 (KEY_DOCUMENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:244 -> linux:236 (KEY_BATTERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:245 -> linux:237 (KEY_BLUETOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:246 -> linux:238 (KEY_WLAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:247 -> linux:239 (KEY_UWB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:248 -> linux:240 (KEY_UNKNOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:249 -> linux:241 (KEY_VIDEO_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:250 -> linux:242 (KEY_VIDEO_PREV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:251 -> linux:243 (KEY_BRIGHTNESS_CYCLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:252 -> linux:244 (KEY_BRIGHTNESS_ZERO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:253 -> linux:245 (KEY_DISPLAY_OFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:254 -> linux:246 (KEY_WIMAX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xff] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:255 -> linux:247 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x100] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:256 -> linux:248 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x101] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:257 -> linux:249 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x102] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:258 -> linux:250 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x103] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:259 -> linux:251 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x104] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:260 -> linux:252 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x105] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:261 -> linux:253 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x106] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:262 -> linux:254 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x107] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:263 -> linux:255 (unnamed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x108] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:264 -> linux:256 (BTN_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x109] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:265 -> linux:257 (BTN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:266 -> linux:258 (BTN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:267 -> linux:259 (BTN_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:268 -> linux:260 (BTN_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:269 -> linux:261 (BTN_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:270 -> linux:262 (BTN_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:271 -> linux:263 (BTN_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x110] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:272 -> linux:264 (BTN_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x111] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:273 -> linux:265 (BTN_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x118] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:280 -> linux:272 (BTN_LEFT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x119] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:281 -> linux:273 (BTN_RIGHT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:282 -> linux:274 (BTN_MIDDLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:283 -> linux:275 (BTN_SIDE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:284 -> linux:276 (BTN_EXTRA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:285 -> linux:277 (BTN_FORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:286 -> linux:278 (BTN_BACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:287 -> linux:279 (BTN_TASK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x128] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:296 -> linux:288 (BTN_TRIGGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x129] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:297 -> linux:289 (BTN_THUMB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:298 -> linux:290 (BTN_THUMB2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:299 -> linux:291 (BTN_TOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:300 -> linux:292 (BTN_TOP2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:301 -> linux:293 (BTN_PINKIE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:302 -> linux:294 (BTN_BASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:303 -> linux:295 (BTN_BASE2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x130] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:304 -> linux:296 (BTN_BASE3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x131] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:305 -> linux:297 (BTN_BASE4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x132] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:306 -> linux:298 (BTN_BASE5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x133] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:307 -> linux:299 (BTN_BASE6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x137] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:311 -> linux:303 (BTN_DEAD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x138] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:312 -> linux:304 (BTN_A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x139] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:313 -> linux:305 (BTN_B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:314 -> linux:306 (BTN_C) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:315 -> linux:307 (BTN_X) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:316 -> linux:308 (BTN_Y) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:317 -> linux:309 (BTN_Z) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:318 -> linux:310 (BTN_TL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:319 -> linux:311 (BTN_TR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x140] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:320 -> linux:312 (BTN_TL2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x141] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:321 -> linux:313 (BTN_TR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x142] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:322 -> linux:314 (BTN_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x143] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:323 -> linux:315 (BTN_START) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x144] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:324 -> linux:316 (BTN_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x145] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:325 -> linux:317 (BTN_THUMBL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x146] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:326 -> linux:318 (BTN_THUMBR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x148] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:328 -> linux:320 (BTN_TOOL_PEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x149] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:329 -> linux:321 (BTN_TOOL_RUBBER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:330 -> linux:322 (BTN_TOOL_BRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:331 -> linux:323 (BTN_TOOL_PENCIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:332 -> linux:324 (BTN_TOOL_AIRBRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:333 -> linux:325 (BTN_TOOL_FINGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:334 -> linux:326 (BTN_TOOL_MOUSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:335 -> linux:327 (BTN_TOOL_LENS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x152] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:338 -> linux:330 (BTN_TOUCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x153] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:339 -> linux:331 (BTN_STYLUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x154] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:340 -> linux:332 (BTN_STYLUS2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x155] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:341 -> linux:333 (BTN_TOOL_DOUBLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x156] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:342 -> linux:334 (BTN_TOOL_TRIPLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x157] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:343 -> linux:335 (BTN_TOOL_QUADTAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x158] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:344 -> linux:336 (BTN_GEAR_DOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x159] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:345 -> linux:337 (BTN_GEAR_UP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x168] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:360 -> linux:352 (KEY_OK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x169] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:361 -> linux:353 (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:362 -> linux:354 (KEY_GOTO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:363 -> linux:355 (KEY_CLEAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:364 -> linux:356 (KEY_POWER2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:365 -> linux:357 (KEY_OPTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:366 -> linux:358 (KEY_INFO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:367 -> linux:359 (KEY_TIME) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x170] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:368 -> linux:360 (KEY_VENDOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x171] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:369 -> linux:361 (KEY_ARCHIVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x172] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:370 -> linux:362 (KEY_PROGRAM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x173] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:371 -> linux:363 (KEY_CHANNEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x174] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:372 -> linux:364 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x175] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:373 -> linux:365 (KEY_EPG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x176] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:374 -> linux:366 (KEY_PVR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x177] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:375 -> linux:367 (KEY_MHP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x178] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:376 -> linux:368 (KEY_LANGUAGE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x179] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:377 -> linux:369 (KEY_TITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:378 -> linux:370 (KEY_SUBTITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:379 -> linux:371 (KEY_ANGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:380 -> linux:372 (KEY_ZOOM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:381 -> linux:373 (KEY_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:382 -> linux:374 (KEY_KEYBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:383 -> linux:375 (KEY_SCREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x180] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:384 -> linux:376 (KEY_PC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x181] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:385 -> linux:377 (KEY_TV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x182] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:386 -> linux:378 (KEY_TV2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x183] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:387 -> linux:379 (KEY_VCR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x184] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:388 -> linux:380 (KEY_VCR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x185] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:389 -> linux:381 (KEY_SAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x186] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:390 -> linux:382 (KEY_SAT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x187] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:391 -> linux:383 (KEY_CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x188] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:392 -> linux:384 (KEY_TAPE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x189] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:393 -> linux:385 (KEY_RADIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:394 -> linux:386 (KEY_TUNER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:395 -> linux:387 (KEY_PLAYER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:396 -> linux:388 (KEY_TEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:397 -> linux:389 (KEY_DVD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:398 -> linux:390 (KEY_AUX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:399 -> linux:391 (KEY_MP3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x190] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:400 -> linux:392 (KEY_AUDIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x191] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:401 -> linux:393 (KEY_VIDEO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x192] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:402 -> linux:394 (KEY_DIRECTORY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x193] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:403 -> linux:395 (KEY_LIST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x194] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:404 -> linux:396 (KEY_MEMO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x195] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:405 -> linux:397 (KEY_CALENDAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x196] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:406 -> linux:398 (KEY_RED) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x197] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:407 -> linux:399 (KEY_GREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x198] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:408 -> linux:400 (KEY_YELLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x199] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:409 -> linux:401 (KEY_BLUE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:410 -> linux:402 (KEY_CHANNELUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:411 -> linux:403 (KEY_CHANNELDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:412 -> linux:404 (KEY_FIRST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:413 -> linux:405 (KEY_LAST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:414 -> linux:406 (KEY_AB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:415 -> linux:407 (KEY_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:416 -> linux:408 (KEY_RESTART) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:417 -> linux:409 (KEY_SLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:418 -> linux:410 (KEY_SHUFFLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:419 -> linux:411 (KEY_BREAK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:420 -> linux:412 (KEY_PREVIOUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:421 -> linux:413 (KEY_DIGITS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:422 -> linux:414 (KEY_TEEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:423 -> linux:415 (KEY_TWEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:424 -> linux:416 (KEY_VIDEOPHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:425 -> linux:417 (KEY_GAMES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1aa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:426 -> linux:418 (KEY_ZOOMIN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ab] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:427 -> linux:419 (KEY_ZOOMOUT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ac] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:428 -> linux:420 (KEY_ZOOMRESET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ad] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:429 -> linux:421 (KEY_WORDPROCESSOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ae] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:430 -> linux:422 (KEY_EDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1af] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:431 -> linux:423 (KEY_SPREADSHEET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:432 -> linux:424 (KEY_GRAPHICSEDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:433 -> linux:425 (KEY_PRESENTATION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:434 -> linux:426 (KEY_DATABASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:435 -> linux:427 (KEY_NEWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:436 -> linux:428 (KEY_VOICEMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:437 -> linux:429 (KEY_ADDRESSBOOK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:438 -> linux:430 (KEY_MESSENGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:439 -> linux:431 (KEY_DISPLAYTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:440 -> linux:432 (KEY_SPELLCHECK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:441 -> linux:433 (KEY_LOGOFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ba] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:442 -> linux:434 (KEY_DOLLAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:443 -> linux:435 (KEY_EURO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:444 -> linux:436 (KEY_FRAMEBACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:445 -> linux:437 (KEY_FRAMEFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1be] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:446 -> linux:438 (KEY_CONTEXT_MENU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:447 -> linux:439 (KEY_MEDIA_REPEAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:456 -> linux:448 (KEY_DEL_EOL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:457 -> linux:449 (KEY_DEL_EOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ca] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:458 -> linux:450 (KEY_INS_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1cb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:459 -> linux:451 (KEY_DEL_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:472 -> linux:464 (KEY_FN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:473 -> linux:465 (KEY_FN_ESC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1da] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:474 -> linux:466 (KEY_FN_F1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1db] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:475 -> linux:467 (KEY_FN_F2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:476 -> linux:468 (KEY_FN_F3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:477 -> linux:469 (KEY_FN_F4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1de] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:478 -> linux:470 (KEY_FN_F5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1df] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:479 -> linux:471 (KEY_FN_F6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:480 -> linux:472 (KEY_FN_F7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:481 -> linux:473 (KEY_FN_F8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:482 -> linux:474 (KEY_FN_F9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:483 -> linux:475 (KEY_FN_F10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:484 -> linux:476 (KEY_FN_F11) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:485 -> linux:477 (KEY_FN_F12) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:486 -> linux:478 (KEY_FN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:487 -> linux:479 (KEY_FN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:488 -> linux:480 (KEY_FN_D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:489 -> linux:481 (KEY_FN_E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ea] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:490 -> linux:482 (KEY_FN_F) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1eb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:491 -> linux:483 (KEY_FN_S) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ec] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:492 -> linux:484 (KEY_FN_B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:505 -> linux:497 (KEY_BRL_DOT1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:506 -> linux:498 (KEY_BRL_DOT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:507 -> linux:499 (KEY_BRL_DOT3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:508 -> linux:500 (KEY_BRL_DOT4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:509 -> linux:501 (KEY_BRL_DOT5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:510 -> linux:502 (KEY_BRL_DOT6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ff] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:511 -> linux:503 (KEY_BRL_DOT7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x200] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:512 -> linux:504 (KEY_BRL_DOT8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x201] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:513 -> linux:505 (KEY_BRL_DOT9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x202] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:514 -> linux:506 (KEY_BRL_DOT10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x208] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:520 -> linux:512 (KEY_NUMERIC_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x209] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:521 -> linux:513 (KEY_NUMERIC_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:522 -> linux:514 (KEY_NUMERIC_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:523 -> linux:515 (KEY_NUMERIC_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:524 -> linux:516 (KEY_NUMERIC_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:525 -> linux:517 (KEY_NUMERIC_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:526 -> linux:518 (KEY_NUMERIC_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:527 -> linux:519 (KEY_NUMERIC_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x210] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:528 -> linux:520 (KEY_NUMERIC_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x211] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:529 -> linux:521 (KEY_NUMERIC_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x212] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:530 -> linux:522 (KEY_NUMERIC_STAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x213] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:531 -> linux:523 (KEY_NUMERIC_POUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x214] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:532 -> linux:524 (KEY_RFKILL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x24c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:588 -> linux:580 (KEY_ANDROID_RECENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgevdev_to_qcode_len = sizeof(qemu_input_map_xorgevdev_to_qcode)/sizeof(qemu_input_map_xorgevdev_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-xorgkbd-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-xorgkbd-to-qcode.c
new file mode 100644
index 0000000000..3e068bd592
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-xorgkbd-to-qcode.c
@@ -0,0 +1,122 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgkbd_to_qcode code-map keymaps.csv xorgkbd qcode
+*/
+const guint16 qemu_input_map_xorgkbd_to_qcode[209] = {
+ [0x9] = Q_KEY_CODE_ESC, /* xorgkbd:9 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgkbd:10 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgkbd:11 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgkbd:12 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgkbd:13 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgkbd:14 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgkbd:15 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgkbd:16 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgkbd:17 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgkbd:18 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgkbd:19 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgkbd:20 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgkbd:21 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgkbd:22 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgkbd:23 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgkbd:24 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgkbd:25 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgkbd:26 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgkbd:27 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgkbd:28 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgkbd:29 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgkbd:30 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgkbd:31 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgkbd:32 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgkbd:33 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgkbd:34 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgkbd:35 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgkbd:36 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgkbd:37 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgkbd:38 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgkbd:39 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgkbd:40 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgkbd:41 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgkbd:42 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgkbd:43 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgkbd:44 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgkbd:45 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgkbd:46 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgkbd:47 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgkbd:48 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgkbd:49 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgkbd:50 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgkbd:51 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgkbd:52 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgkbd:53 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgkbd:54 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgkbd:55 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgkbd:56 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgkbd:57 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgkbd:58 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgkbd:59 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgkbd:60 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgkbd:61 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgkbd:62 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgkbd:63 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgkbd:64 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgkbd:65 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgkbd:66 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgkbd:67 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgkbd:68 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgkbd:69 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgkbd:70 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgkbd:71 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgkbd:72 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgkbd:73 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgkbd:74 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgkbd:75 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgkbd:76 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgkbd:77 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgkbd:78 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgkbd:79 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgkbd:80 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgkbd:81 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgkbd:82 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgkbd:83 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgkbd:84 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgkbd:85 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgkbd:86 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgkbd:87 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgkbd:88 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgkbd:89 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgkbd:90 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgkbd:91 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgkbd:94 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgkbd:95 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgkbd:96 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_HOME, /* xorgkbd:97 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x62] = Q_KEY_CODE_UP, /* xorgkbd:98 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x63] = Q_KEY_CODE_PGUP, /* xorgkbd:99 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x64] = Q_KEY_CODE_LEFT, /* xorgkbd:100 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x66] = Q_KEY_CODE_RIGHT, /* xorgkbd:102 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x67] = Q_KEY_CODE_END, /* xorgkbd:103 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x68] = Q_KEY_CODE_DOWN, /* xorgkbd:104 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x69] = Q_KEY_CODE_PGDN, /* xorgkbd:105 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x6a] = Q_KEY_CODE_INSERT, /* xorgkbd:106 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x6b] = Q_KEY_CODE_DELETE, /* xorgkbd:107 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x6c] = Q_KEY_CODE_KP_ENTER, /* xorgkbd:108 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x6d] = Q_KEY_CODE_CTRL_R, /* xorgkbd:109 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6e] = Q_KEY_CODE_PAUSE, /* xorgkbd:110 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x6f] = Q_KEY_CODE_SYSRQ, /* xorgkbd:111 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x70] = Q_KEY_CODE_KP_DIVIDE, /* xorgkbd:112 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x71] = Q_KEY_CODE_ALT_R, /* xorgkbd:113 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x73] = Q_KEY_CODE_META_L, /* xorgkbd:115 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x74] = Q_KEY_CODE_META_R, /* xorgkbd:116 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x75] = Q_KEY_CODE_COMPOSE, /* xorgkbd:117 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:118 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:119 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:120 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:121 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:122 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_KP_EQUALS, /* xorgkbd:126 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x85] = Q_KEY_CODE_YEN, /* xorgkbd:133 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:208 -> linux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgkbd_to_qcode_len = sizeof(qemu_input_map_xorgkbd_to_qcode)/sizeof(qemu_input_map_xorgkbd_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-xorgxquartz-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-xorgxquartz-to-qcode.c
new file mode 100644
index 0000000000..466b95ac07
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-xorgxquartz-to-qcode.c
@@ -0,0 +1,128 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgxquartz_to_qcode code-map keymaps.csv xorgxquartz qcode
+*/
+const guint16 qemu_input_map_xorgxquartz_to_qcode[264] = {
+ [0x8] = Q_KEY_CODE_A, /* xorgxquartz:8 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x9] = Q_KEY_CODE_S, /* xorgxquartz:9 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0xa] = Q_KEY_CODE_D, /* xorgxquartz:10 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0xb] = Q_KEY_CODE_F, /* xorgxquartz:11 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0xc] = Q_KEY_CODE_H, /* xorgxquartz:12 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0xd] = Q_KEY_CODE_G, /* xorgxquartz:13 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0xe] = Q_KEY_CODE_Z, /* xorgxquartz:14 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0xf] = Q_KEY_CODE_X, /* xorgxquartz:15 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x10] = Q_KEY_CODE_C, /* xorgxquartz:16 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x11] = Q_KEY_CODE_V, /* xorgxquartz:17 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x12] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:18 -> linux:170 (KEY_ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13] = Q_KEY_CODE_B, /* xorgxquartz:19 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x14] = Q_KEY_CODE_Q, /* xorgxquartz:20 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x15] = Q_KEY_CODE_W, /* xorgxquartz:21 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x16] = Q_KEY_CODE_E, /* xorgxquartz:22 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x17] = Q_KEY_CODE_R, /* xorgxquartz:23 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x18] = Q_KEY_CODE_Y, /* xorgxquartz:24 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x19] = Q_KEY_CODE_T, /* xorgxquartz:25 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x1a] = Q_KEY_CODE_1, /* xorgxquartz:26 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0x1b] = Q_KEY_CODE_2, /* xorgxquartz:27 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0x1c] = Q_KEY_CODE_3, /* xorgxquartz:28 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0x1d] = Q_KEY_CODE_4, /* xorgxquartz:29 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0x1e] = Q_KEY_CODE_6, /* xorgxquartz:30 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x1f] = Q_KEY_CODE_5, /* xorgxquartz:31 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0x20] = Q_KEY_CODE_EQUAL, /* xorgxquartz:32 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x21] = Q_KEY_CODE_9, /* xorgxquartz:33 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x22] = Q_KEY_CODE_7, /* xorgxquartz:34 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x23] = Q_KEY_CODE_MINUS, /* xorgxquartz:35 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x24] = Q_KEY_CODE_8, /* xorgxquartz:36 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x25] = Q_KEY_CODE_0, /* xorgxquartz:37 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x26] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgxquartz:38 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x27] = Q_KEY_CODE_O, /* xorgxquartz:39 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x28] = Q_KEY_CODE_U, /* xorgxquartz:40 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x29] = Q_KEY_CODE_BRACKET_LEFT, /* xorgxquartz:41 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x2a] = Q_KEY_CODE_I, /* xorgxquartz:42 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x2b] = Q_KEY_CODE_P, /* xorgxquartz:43 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x2c] = Q_KEY_CODE_RET, /* xorgxquartz:44 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x2d] = Q_KEY_CODE_L, /* xorgxquartz:45 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x2e] = Q_KEY_CODE_J, /* xorgxquartz:46 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x2f] = Q_KEY_CODE_APOSTROPHE, /* xorgxquartz:47 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x30] = Q_KEY_CODE_K, /* xorgxquartz:48 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x31] = Q_KEY_CODE_SEMICOLON, /* xorgxquartz:49 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x32] = Q_KEY_CODE_BACKSLASH, /* xorgxquartz:50 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x33] = Q_KEY_CODE_COMMA, /* xorgxquartz:51 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_SLASH, /* xorgxquartz:52 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x35] = Q_KEY_CODE_N, /* xorgxquartz:53 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x36] = Q_KEY_CODE_M, /* xorgxquartz:54 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x37] = Q_KEY_CODE_DOT, /* xorgxquartz:55 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x38] = Q_KEY_CODE_TAB, /* xorgxquartz:56 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x39] = Q_KEY_CODE_SPC, /* xorgxquartz:57 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgxquartz:58 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x3b] = Q_KEY_CODE_BACKSPACE, /* xorgxquartz:59 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x3d] = Q_KEY_CODE_ESC, /* xorgxquartz:61 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0x3e] = Q_KEY_CODE_META_R, /* xorgxquartz:62 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x3f] = Q_KEY_CODE_META_L, /* xorgxquartz:63 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x40] = Q_KEY_CODE_SHIFT, /* xorgxquartz:64 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x41] = Q_KEY_CODE_CAPS_LOCK, /* xorgxquartz:65 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x42] = Q_KEY_CODE_ALT, /* xorgxquartz:66 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x43] = Q_KEY_CODE_CTRL, /* xorgxquartz:67 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x44] = Q_KEY_CODE_SHIFT_R, /* xorgxquartz:68 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x45] = Q_KEY_CODE_ALT_R, /* xorgxquartz:69 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x46] = Q_KEY_CODE_CTRL_R, /* xorgxquartz:70 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x47] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:71 -> linux:464 (KEY_FN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x48] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:72 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x49] = Q_KEY_CODE_KP_DECIMAL, /* xorgxquartz:73 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x4b] = Q_KEY_CODE_KP_MULTIPLY, /* xorgxquartz:75 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x4d] = Q_KEY_CODE_KP_ADD, /* xorgxquartz:77 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_NUM_LOCK, /* xorgxquartz:79 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x50] = Q_KEY_CODE_VOLUMEUP, /* xorgxquartz:80 -> linux:115 (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x51] = Q_KEY_CODE_VOLUMEDOWN, /* xorgxquartz:81 -> linux:114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x52] = Q_KEY_CODE_AUDIOMUTE, /* xorgxquartz:82 -> linux:113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x53] = Q_KEY_CODE_KP_DIVIDE, /* xorgxquartz:83 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x54] = Q_KEY_CODE_KP_ENTER, /* xorgxquartz:84 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x56] = Q_KEY_CODE_KP_SUBTRACT, /* xorgxquartz:86 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x57] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:87 -> linux:188 (KEY_F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x58] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:88 -> linux:189 (KEY_F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x59] = Q_KEY_CODE_KP_EQUALS, /* xorgxquartz:89 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgxquartz:90 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_1, /* xorgxquartz:91 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x5c] = Q_KEY_CODE_KP_2, /* xorgxquartz:92 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x5d] = Q_KEY_CODE_KP_3, /* xorgxquartz:93 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5e] = Q_KEY_CODE_KP_4, /* xorgxquartz:94 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x5f] = Q_KEY_CODE_KP_5, /* xorgxquartz:95 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x60] = Q_KEY_CODE_KP_6, /* xorgxquartz:96 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x61] = Q_KEY_CODE_KP_7, /* xorgxquartz:97 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x62] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:98 -> linux:190 (KEY_F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_KP_8, /* xorgxquartz:99 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x64] = Q_KEY_CODE_KP_9, /* xorgxquartz:100 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x65] = Q_KEY_CODE_YEN, /* xorgxquartz:101 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:103 -> linux:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_F5, /* xorgxquartz:104 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x69] = Q_KEY_CODE_F6, /* xorgxquartz:105 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x6a] = Q_KEY_CODE_F7, /* xorgxquartz:106 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x6b] = Q_KEY_CODE_F3, /* xorgxquartz:107 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x6c] = Q_KEY_CODE_F8, /* xorgxquartz:108 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x6d] = Q_KEY_CODE_F9, /* xorgxquartz:109 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x6f] = Q_KEY_CODE_F11, /* xorgxquartz:111 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:112 -> linux:90 (KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:113 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:114 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:115 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x75] = Q_KEY_CODE_F10, /* xorgxquartz:117 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x76] = Q_KEY_CODE_COMPOSE, /* xorgxquartz:118 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x77] = Q_KEY_CODE_F12, /* xorgxquartz:119 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:121 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_HELP, /* xorgxquartz:122 -> linux:138 (KEY_HELP) -> qcode:Q_KEY_CODE_HELP (help) */
+ [0x7b] = Q_KEY_CODE_HOME, /* xorgxquartz:123 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x7c] = Q_KEY_CODE_PGUP, /* xorgxquartz:124 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x7d] = Q_KEY_CODE_DELETE, /* xorgxquartz:125 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x7e] = Q_KEY_CODE_F4, /* xorgxquartz:126 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x7f] = Q_KEY_CODE_END, /* xorgxquartz:127 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x80] = Q_KEY_CODE_F2, /* xorgxquartz:128 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x81] = Q_KEY_CODE_PGDN, /* xorgxquartz:129 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x82] = Q_KEY_CODE_F1, /* xorgxquartz:130 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x83] = Q_KEY_CODE_LEFT, /* xorgxquartz:131 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x84] = Q_KEY_CODE_RIGHT, /* xorgxquartz:132 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x85] = Q_KEY_CODE_DOWN, /* xorgxquartz:133 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x86] = Q_KEY_CODE_UP, /* xorgxquartz:134 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x107] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:263 -> linux:0 (KEY_RESERVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */
+};
+const guint qemu_input_map_xorgxquartz_to_qcode_len = sizeof(qemu_input_map_xorgxquartz_to_qcode)/sizeof(qemu_input_map_xorgxquartz_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/input-keymap-xorgxwin-to-qcode.c b/qemu2-auto-generated/ui/input-keymap-xorgxwin-to-qcode.c
new file mode 100644
index 0000000000..f84b39c1f2
--- /dev/null
+++ b/qemu2-auto-generated/ui/input-keymap-xorgxwin-to-qcode.c
@@ -0,0 +1,122 @@
+/*
+ * This file is auto-generated from keymaps.csv on 2018-09-12 16:41
+ * Database checksum sha256(7236349cc5d943f689250b4ac558d86b9e55107b6a42c5c373d0aac7b1358ebd)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgxwin_to_qcode code-map keymaps.csv xorgxwin qcode
+*/
+const guint16 qemu_input_map_xorgxwin_to_qcode[209] = {
+ [0x9] = Q_KEY_CODE_ESC, /* xorgxwin:9 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgxwin:10 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1 (1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgxwin:11 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2 (2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgxwin:12 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3 (3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgxwin:13 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4 (4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgxwin:14 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5 (5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgxwin:15 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6 (6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgxwin:16 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgxwin:17 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgxwin:18 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgxwin:19 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgxwin:20 -> linux:12 (KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgxwin:21 -> linux:13 (KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgxwin:22 -> linux:14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgxwin:23 -> linux:15 (KEY_TAB) -> qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgxwin:24 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgxwin:25 -> linux:17 (KEY_W) -> qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgxwin:26 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgxwin:27 -> linux:19 (KEY_R) -> qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgxwin:28 -> linux:20 (KEY_T) -> qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgxwin:29 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgxwin:30 -> linux:22 (KEY_U) -> qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgxwin:31 -> linux:23 (KEY_I) -> qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgxwin:32 -> linux:24 (KEY_O) -> qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgxwin:33 -> linux:25 (KEY_P) -> qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgxwin:34 -> linux:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgxwin:35 -> linux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgxwin:36 -> linux:28 (KEY_ENTER) -> qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgxwin:37 -> linux:29 (KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgxwin:38 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgxwin:39 -> linux:31 (KEY_S) -> qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgxwin:40 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgxwin:41 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgxwin:42 -> linux:34 (KEY_G) -> qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgxwin:43 -> linux:35 (KEY_H) -> qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgxwin:44 -> linux:36 (KEY_J) -> qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgxwin:45 -> linux:37 (KEY_K) -> qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgxwin:46 -> linux:38 (KEY_L) -> qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgxwin:47 -> linux:39 (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgxwin:48 -> linux:40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgxwin:49 -> linux:41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgxwin:50 -> linux:42 (KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgxwin:51 -> linux:43 (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgxwin:52 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgxwin:53 -> linux:45 (KEY_X) -> qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgxwin:54 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgxwin:55 -> linux:47 (KEY_V) -> qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgxwin:56 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgxwin:57 -> linux:49 (KEY_N) -> qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgxwin:58 -> linux:50 (KEY_M) -> qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgxwin:59 -> linux:51 (KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgxwin:60 -> linux:52 (KEY_DOT) -> qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgxwin:61 -> linux:53 (KEY_SLASH) -> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgxwin:62 -> linux:54 (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgxwin:63 -> linux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgxwin:64 -> linux:56 (KEY_LEFTALT) -> qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgxwin:65 -> linux:57 (KEY_SPACE) -> qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgxwin:66 -> linux:58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgxwin:67 -> linux:59 (KEY_F1) -> qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgxwin:68 -> linux:60 (KEY_F2) -> qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgxwin:69 -> linux:61 (KEY_F3) -> qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgxwin:70 -> linux:62 (KEY_F4) -> qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgxwin:71 -> linux:63 (KEY_F5) -> qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgxwin:72 -> linux:64 (KEY_F6) -> qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgxwin:73 -> linux:65 (KEY_F7) -> qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgxwin:74 -> linux:66 (KEY_F8) -> qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgxwin:75 -> linux:67 (KEY_F9) -> qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgxwin:76 -> linux:68 (KEY_F10) -> qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgxwin:77 -> linux:69 (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgxwin:78 -> linux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgxwin:79 -> linux:71 (KEY_KP7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgxwin:80 -> linux:72 (KEY_KP8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgxwin:81 -> linux:73 (KEY_KP9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgxwin:82 -> linux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgxwin:83 -> linux:75 (KEY_KP4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgxwin:84 -> linux:76 (KEY_KP5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgxwin:85 -> linux:77 (KEY_KP6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgxwin:86 -> linux:78 (KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgxwin:87 -> linux:79 (KEY_KP1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgxwin:88 -> linux:80 (KEY_KP2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgxwin:89 -> linux:81 (KEY_KP3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgxwin:90 -> linux:82 (KEY_KP0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgxwin:91 -> linux:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgxwin:94 -> linux:86 (KEY_102ND) -> qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgxwin:95 -> linux:87 (KEY_F11) -> qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgxwin:96 -> linux:88 (KEY_F12) -> qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_HOME, /* xorgxwin:97 -> linux:102 (KEY_HOME) -> qcode:Q_KEY_CODE_HOME (home) */
+ [0x62] = Q_KEY_CODE_UP, /* xorgxwin:98 -> linux:103 (KEY_UP) -> qcode:Q_KEY_CODE_UP (up) */
+ [0x63] = Q_KEY_CODE_PGUP, /* xorgxwin:99 -> linux:104 (KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x64] = Q_KEY_CODE_LEFT, /* xorgxwin:100 -> linux:105 (KEY_LEFT) -> qcode:Q_KEY_CODE_LEFT (left) */
+ [0x66] = Q_KEY_CODE_RIGHT, /* xorgxwin:102 -> linux:106 (KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x67] = Q_KEY_CODE_END, /* xorgxwin:103 -> linux:107 (KEY_END) -> qcode:Q_KEY_CODE_END (end) */
+ [0x68] = Q_KEY_CODE_DOWN, /* xorgxwin:104 -> linux:108 (KEY_DOWN) -> qcode:Q_KEY_CODE_DOWN (down) */
+ [0x69] = Q_KEY_CODE_PGDN, /* xorgxwin:105 -> linux:109 (KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x6a] = Q_KEY_CODE_INSERT, /* xorgxwin:106 -> linux:110 (KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x6b] = Q_KEY_CODE_DELETE, /* xorgxwin:107 -> linux:111 (KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x6c] = Q_KEY_CODE_KP_ENTER, /* xorgxwin:108 -> linux:96 (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x6d] = Q_KEY_CODE_CTRL_R, /* xorgxwin:109 -> linux:97 (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6e] = Q_KEY_CODE_PAUSE, /* xorgxwin:110 -> linux:119 (KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x6f] = Q_KEY_CODE_SYSRQ, /* xorgxwin:111 -> linux:99 (KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x70] = Q_KEY_CODE_KP_DIVIDE, /* xorgxwin:112 -> linux:98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x71] = Q_KEY_CODE_ALT_R, /* xorgxwin:113 -> linux:100 (KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x73] = Q_KEY_CODE_META_L, /* xorgxwin:115 -> linux:125 (KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x74] = Q_KEY_CODE_META_R, /* xorgxwin:116 -> linux:126 (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x75] = Q_KEY_CODE_COMPOSE, /* xorgxwin:117 -> linux:127 (KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:118 -> linux:183 (KEY_F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:119 -> linux:184 (KEY_F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:120 -> linux:185 (KEY_F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:121 -> linux:186 (KEY_F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:122 -> linux:187 (KEY_F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_KP_EQUALS, /* xorgxwin:126 -> linux:117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x85] = Q_KEY_CODE_YEN, /* xorgxwin:133 -> linux:124 (KEY_YEN) -> qcode:Q_KEY_CODE_YEN (yen) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:208 -> linux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgxwin_to_qcode_len = sizeof(qemu_input_map_xorgxwin_to_qcode)/sizeof(qemu_input_map_xorgxwin_to_qcode[0]);
diff --git a/qemu2-auto-generated/ui/trace.c b/qemu2-auto-generated/ui/trace.c
new file mode 100644
index 0000000000..05de729c76
--- /dev/null
+++ b/qemu2-auto-generated/ui/trace.c
@@ -0,0 +1,779 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_CONSOLE_GFX_NEW_DSTATE;
+uint16_t _TRACE_CONSOLE_GFX_REUSE_DSTATE;
+uint16_t _TRACE_CONSOLE_GFX_CLOSE_DSTATE;
+uint16_t _TRACE_CONSOLE_PUTCHAR_CSI_DSTATE;
+uint16_t _TRACE_CONSOLE_PUTCHAR_UNHANDLED_DSTATE;
+uint16_t _TRACE_CONSOLE_TXT_NEW_DSTATE;
+uint16_t _TRACE_CONSOLE_SELECT_DSTATE;
+uint16_t _TRACE_CONSOLE_REFRESH_DSTATE;
+uint16_t _TRACE_DISPLAYSURFACE_CREATE_DSTATE;
+uint16_t _TRACE_DISPLAYSURFACE_CREATE_FROM_DSTATE;
+uint16_t _TRACE_DISPLAYSURFACE_CREATE_PIXMAN_DSTATE;
+uint16_t _TRACE_DISPLAYSURFACE_FREE_DSTATE;
+uint16_t _TRACE_DISPLAYCHANGELISTENER_REGISTER_DSTATE;
+uint16_t _TRACE_DISPLAYCHANGELISTENER_UNREGISTER_DSTATE;
+uint16_t _TRACE_PPM_SAVE_DSTATE;
+uint16_t _TRACE_GD_SWITCH_DSTATE;
+uint16_t _TRACE_GD_UPDATE_DSTATE;
+uint16_t _TRACE_GD_KEY_EVENT_DSTATE;
+uint16_t _TRACE_GD_GRAB_DSTATE;
+uint16_t _TRACE_GD_UNGRAB_DSTATE;
+uint16_t _TRACE_GD_KEYMAP_WINDOWING_DSTATE;
+uint16_t _TRACE_VNC_KEY_GUEST_LEDS_DSTATE;
+uint16_t _TRACE_VNC_KEY_MAP_INIT_DSTATE;
+uint16_t _TRACE_VNC_KEY_EVENT_EXT_DSTATE;
+uint16_t _TRACE_VNC_KEY_EVENT_MAP_DSTATE;
+uint16_t _TRACE_VNC_KEY_SYNC_NUMLOCK_DSTATE;
+uint16_t _TRACE_VNC_KEY_SYNC_CAPSLOCK_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_EOF_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_IO_ERROR_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_CONNECT_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_DISCONNECT_START_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_DISCONNECT_FINISH_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_IO_WRAP_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_THROTTLE_FORCED_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_THROTTLE_AUDIO_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_DSTATE;
+uint16_t _TRACE_VNC_CLIENT_OUTPUT_LIMIT_DSTATE;
+uint16_t _TRACE_VNC_AUTH_INIT_DSTATE;
+uint16_t _TRACE_VNC_AUTH_START_DSTATE;
+uint16_t _TRACE_VNC_AUTH_PASS_DSTATE;
+uint16_t _TRACE_VNC_AUTH_FAIL_DSTATE;
+uint16_t _TRACE_VNC_AUTH_REJECT_DSTATE;
+uint16_t _TRACE_VNC_AUTH_VENCRYPT_VERSION_DSTATE;
+uint16_t _TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_MECH_LIST_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_MECH_CHOOSE_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_START_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_STEP_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_SSF_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_USERNAME_DSTATE;
+uint16_t _TRACE_VNC_AUTH_SASL_ACL_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_KEY_NUMBER_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_KEY_QCODE_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_BTN_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_REL_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_ABS_DSTATE;
+uint16_t _TRACE_INPUT_EVENT_SYNC_DSTATE;
+uint16_t _TRACE_INPUT_MOUSE_MODE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_ADD_MEMSLOT_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_DEL_MEMSLOT_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_WAKEUP_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_CREATE_UPDATE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_DISPLAY_UPDATE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_DISPLAY_SURFACE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_DISPLAY_REFRESH_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_UI_INFO_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_SURFACE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_CURSOR_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_RENDER_DMABUF_DSTATE;
+uint16_t _TRACE_QEMU_SPICE_GL_UPDATE_DSTATE;
+uint16_t _TRACE_KEYMAP_PARSE_DSTATE;
+uint16_t _TRACE_KEYMAP_ADD_DSTATE;
+uint16_t _TRACE_KEYMAP_UNMAPPED_DSTATE;
+uint16_t _TRACE_XKEYMAP_EXTENSION_DSTATE;
+uint16_t _TRACE_XKEYMAP_VENDOR_DSTATE;
+uint16_t _TRACE_XKEYMAP_KEYCODES_DSTATE;
+uint16_t _TRACE_XKEYMAP_KEYMAP_DSTATE;
+TraceEvent _TRACE_CONSOLE_GFX_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_gfx_new",
+ .sstate = TRACE_CONSOLE_GFX_NEW_ENABLED,
+ .dstate = &_TRACE_CONSOLE_GFX_NEW_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_GFX_REUSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_gfx_reuse",
+ .sstate = TRACE_CONSOLE_GFX_REUSE_ENABLED,
+ .dstate = &_TRACE_CONSOLE_GFX_REUSE_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_GFX_CLOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_gfx_close",
+ .sstate = TRACE_CONSOLE_GFX_CLOSE_ENABLED,
+ .dstate = &_TRACE_CONSOLE_GFX_CLOSE_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_PUTCHAR_CSI_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_putchar_csi",
+ .sstate = TRACE_CONSOLE_PUTCHAR_CSI_ENABLED,
+ .dstate = &_TRACE_CONSOLE_PUTCHAR_CSI_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_PUTCHAR_UNHANDLED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_putchar_unhandled",
+ .sstate = TRACE_CONSOLE_PUTCHAR_UNHANDLED_ENABLED,
+ .dstate = &_TRACE_CONSOLE_PUTCHAR_UNHANDLED_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_TXT_NEW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_txt_new",
+ .sstate = TRACE_CONSOLE_TXT_NEW_ENABLED,
+ .dstate = &_TRACE_CONSOLE_TXT_NEW_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_SELECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_select",
+ .sstate = TRACE_CONSOLE_SELECT_ENABLED,
+ .dstate = &_TRACE_CONSOLE_SELECT_DSTATE
+};
+TraceEvent _TRACE_CONSOLE_REFRESH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "console_refresh",
+ .sstate = TRACE_CONSOLE_REFRESH_ENABLED,
+ .dstate = &_TRACE_CONSOLE_REFRESH_DSTATE
+};
+TraceEvent _TRACE_DISPLAYSURFACE_CREATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaysurface_create",
+ .sstate = TRACE_DISPLAYSURFACE_CREATE_ENABLED,
+ .dstate = &_TRACE_DISPLAYSURFACE_CREATE_DSTATE
+};
+TraceEvent _TRACE_DISPLAYSURFACE_CREATE_FROM_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaysurface_create_from",
+ .sstate = TRACE_DISPLAYSURFACE_CREATE_FROM_ENABLED,
+ .dstate = &_TRACE_DISPLAYSURFACE_CREATE_FROM_DSTATE
+};
+TraceEvent _TRACE_DISPLAYSURFACE_CREATE_PIXMAN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaysurface_create_pixman",
+ .sstate = TRACE_DISPLAYSURFACE_CREATE_PIXMAN_ENABLED,
+ .dstate = &_TRACE_DISPLAYSURFACE_CREATE_PIXMAN_DSTATE
+};
+TraceEvent _TRACE_DISPLAYSURFACE_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaysurface_free",
+ .sstate = TRACE_DISPLAYSURFACE_FREE_ENABLED,
+ .dstate = &_TRACE_DISPLAYSURFACE_FREE_DSTATE
+};
+TraceEvent _TRACE_DISPLAYCHANGELISTENER_REGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaychangelistener_register",
+ .sstate = TRACE_DISPLAYCHANGELISTENER_REGISTER_ENABLED,
+ .dstate = &_TRACE_DISPLAYCHANGELISTENER_REGISTER_DSTATE
+};
+TraceEvent _TRACE_DISPLAYCHANGELISTENER_UNREGISTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "displaychangelistener_unregister",
+ .sstate = TRACE_DISPLAYCHANGELISTENER_UNREGISTER_ENABLED,
+ .dstate = &_TRACE_DISPLAYCHANGELISTENER_UNREGISTER_DSTATE
+};
+TraceEvent _TRACE_PPM_SAVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "ppm_save",
+ .sstate = TRACE_PPM_SAVE_ENABLED,
+ .dstate = &_TRACE_PPM_SAVE_DSTATE
+};
+TraceEvent _TRACE_GD_SWITCH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_switch",
+ .sstate = TRACE_GD_SWITCH_ENABLED,
+ .dstate = &_TRACE_GD_SWITCH_DSTATE
+};
+TraceEvent _TRACE_GD_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_update",
+ .sstate = TRACE_GD_UPDATE_ENABLED,
+ .dstate = &_TRACE_GD_UPDATE_DSTATE
+};
+TraceEvent _TRACE_GD_KEY_EVENT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_key_event",
+ .sstate = TRACE_GD_KEY_EVENT_ENABLED,
+ .dstate = &_TRACE_GD_KEY_EVENT_DSTATE
+};
+TraceEvent _TRACE_GD_GRAB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_grab",
+ .sstate = TRACE_GD_GRAB_ENABLED,
+ .dstate = &_TRACE_GD_GRAB_DSTATE
+};
+TraceEvent _TRACE_GD_UNGRAB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_ungrab",
+ .sstate = TRACE_GD_UNGRAB_ENABLED,
+ .dstate = &_TRACE_GD_UNGRAB_DSTATE
+};
+TraceEvent _TRACE_GD_KEYMAP_WINDOWING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "gd_keymap_windowing",
+ .sstate = TRACE_GD_KEYMAP_WINDOWING_ENABLED,
+ .dstate = &_TRACE_GD_KEYMAP_WINDOWING_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_GUEST_LEDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_guest_leds",
+ .sstate = TRACE_VNC_KEY_GUEST_LEDS_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_GUEST_LEDS_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_MAP_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_map_init",
+ .sstate = TRACE_VNC_KEY_MAP_INIT_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_MAP_INIT_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_EVENT_EXT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_event_ext",
+ .sstate = TRACE_VNC_KEY_EVENT_EXT_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_EVENT_EXT_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_EVENT_MAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_event_map",
+ .sstate = TRACE_VNC_KEY_EVENT_MAP_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_EVENT_MAP_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_SYNC_NUMLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_sync_numlock",
+ .sstate = TRACE_VNC_KEY_SYNC_NUMLOCK_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_SYNC_NUMLOCK_DSTATE
+};
+TraceEvent _TRACE_VNC_KEY_SYNC_CAPSLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_key_sync_capslock",
+ .sstate = TRACE_VNC_KEY_SYNC_CAPSLOCK_ENABLED,
+ .dstate = &_TRACE_VNC_KEY_SYNC_CAPSLOCK_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_EOF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_eof",
+ .sstate = TRACE_VNC_CLIENT_EOF_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_EOF_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_IO_ERROR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_io_error",
+ .sstate = TRACE_VNC_CLIENT_IO_ERROR_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_IO_ERROR_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_CONNECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_connect",
+ .sstate = TRACE_VNC_CLIENT_CONNECT_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_CONNECT_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_DISCONNECT_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_disconnect_start",
+ .sstate = TRACE_VNC_CLIENT_DISCONNECT_START_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_DISCONNECT_START_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_DISCONNECT_FINISH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_disconnect_finish",
+ .sstate = TRACE_VNC_CLIENT_DISCONNECT_FINISH_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_DISCONNECT_FINISH_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_IO_WRAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_io_wrap",
+ .sstate = TRACE_VNC_CLIENT_IO_WRAP_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_IO_WRAP_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_throttle_threshold",
+ .sstate = TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_throttle_incremental",
+ .sstate = TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_THROTTLE_FORCED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_throttle_forced",
+ .sstate = TRACE_VNC_CLIENT_THROTTLE_FORCED_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_THROTTLE_FORCED_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_THROTTLE_AUDIO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_throttle_audio",
+ .sstate = TRACE_VNC_CLIENT_THROTTLE_AUDIO_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_THROTTLE_AUDIO_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_unthrottle_forced",
+ .sstate = TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_unthrottle_incremental",
+ .sstate = TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_DSTATE
+};
+TraceEvent _TRACE_VNC_CLIENT_OUTPUT_LIMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_client_output_limit",
+ .sstate = TRACE_VNC_CLIENT_OUTPUT_LIMIT_ENABLED,
+ .dstate = &_TRACE_VNC_CLIENT_OUTPUT_LIMIT_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_INIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_init",
+ .sstate = TRACE_VNC_AUTH_INIT_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_INIT_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_start",
+ .sstate = TRACE_VNC_AUTH_START_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_START_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_PASS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_pass",
+ .sstate = TRACE_VNC_AUTH_PASS_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_PASS_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_FAIL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_fail",
+ .sstate = TRACE_VNC_AUTH_FAIL_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_FAIL_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_REJECT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_reject",
+ .sstate = TRACE_VNC_AUTH_REJECT_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_REJECT_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_VENCRYPT_VERSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_vencrypt_version",
+ .sstate = TRACE_VNC_AUTH_VENCRYPT_VERSION_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_VENCRYPT_VERSION_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_vencrypt_subauth",
+ .sstate = TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_MECH_LIST_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_mech_list",
+ .sstate = TRACE_VNC_AUTH_SASL_MECH_LIST_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_MECH_LIST_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_MECH_CHOOSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_mech_choose",
+ .sstate = TRACE_VNC_AUTH_SASL_MECH_CHOOSE_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_MECH_CHOOSE_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_START_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_start",
+ .sstate = TRACE_VNC_AUTH_SASL_START_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_START_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_STEP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_step",
+ .sstate = TRACE_VNC_AUTH_SASL_STEP_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_STEP_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_SSF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_ssf",
+ .sstate = TRACE_VNC_AUTH_SASL_SSF_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_SSF_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_USERNAME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_username",
+ .sstate = TRACE_VNC_AUTH_SASL_USERNAME_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_USERNAME_DSTATE
+};
+TraceEvent _TRACE_VNC_AUTH_SASL_ACL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "vnc_auth_sasl_acl",
+ .sstate = TRACE_VNC_AUTH_SASL_ACL_ENABLED,
+ .dstate = &_TRACE_VNC_AUTH_SASL_ACL_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_KEY_NUMBER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_key_number",
+ .sstate = TRACE_INPUT_EVENT_KEY_NUMBER_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_KEY_NUMBER_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_KEY_QCODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_key_qcode",
+ .sstate = TRACE_INPUT_EVENT_KEY_QCODE_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_KEY_QCODE_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_BTN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_btn",
+ .sstate = TRACE_INPUT_EVENT_BTN_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_BTN_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_REL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_rel",
+ .sstate = TRACE_INPUT_EVENT_REL_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_REL_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_ABS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_abs",
+ .sstate = TRACE_INPUT_EVENT_ABS_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_ABS_DSTATE
+};
+TraceEvent _TRACE_INPUT_EVENT_SYNC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_event_sync",
+ .sstate = TRACE_INPUT_EVENT_SYNC_ENABLED,
+ .dstate = &_TRACE_INPUT_EVENT_SYNC_DSTATE
+};
+TraceEvent _TRACE_INPUT_MOUSE_MODE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "input_mouse_mode",
+ .sstate = TRACE_INPUT_MOUSE_MODE_ENABLED,
+ .dstate = &_TRACE_INPUT_MOUSE_MODE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_ADD_MEMSLOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_add_memslot",
+ .sstate = TRACE_QEMU_SPICE_ADD_MEMSLOT_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_ADD_MEMSLOT_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_DEL_MEMSLOT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_del_memslot",
+ .sstate = TRACE_QEMU_SPICE_DEL_MEMSLOT_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_DEL_MEMSLOT_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_create_primary_surface",
+ .sstate = TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_destroy_primary_surface",
+ .sstate = TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_WAKEUP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_wakeup",
+ .sstate = TRACE_QEMU_SPICE_WAKEUP_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_WAKEUP_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_CREATE_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_create_update",
+ .sstate = TRACE_QEMU_SPICE_CREATE_UPDATE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_CREATE_UPDATE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_DISPLAY_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_display_update",
+ .sstate = TRACE_QEMU_SPICE_DISPLAY_UPDATE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_DISPLAY_UPDATE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_DISPLAY_SURFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_display_surface",
+ .sstate = TRACE_QEMU_SPICE_DISPLAY_SURFACE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_DISPLAY_SURFACE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_DISPLAY_REFRESH_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_display_refresh",
+ .sstate = TRACE_QEMU_SPICE_DISPLAY_REFRESH_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_DISPLAY_REFRESH_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_UI_INFO_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_ui_info",
+ .sstate = TRACE_QEMU_SPICE_UI_INFO_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_UI_INFO_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_SURFACE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_surface",
+ .sstate = TRACE_QEMU_SPICE_GL_SURFACE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_SURFACE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_scanout_disable",
+ .sstate = TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_scanout_texture",
+ .sstate = TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_CURSOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_cursor",
+ .sstate = TRACE_QEMU_SPICE_GL_CURSOR_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_CURSOR_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_forward_dmabuf",
+ .sstate = TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_RENDER_DMABUF_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_render_dmabuf",
+ .sstate = TRACE_QEMU_SPICE_GL_RENDER_DMABUF_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_RENDER_DMABUF_DSTATE
+};
+TraceEvent _TRACE_QEMU_SPICE_GL_UPDATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_spice_gl_update",
+ .sstate = TRACE_QEMU_SPICE_GL_UPDATE_ENABLED,
+ .dstate = &_TRACE_QEMU_SPICE_GL_UPDATE_DSTATE
+};
+TraceEvent _TRACE_KEYMAP_PARSE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "keymap_parse",
+ .sstate = TRACE_KEYMAP_PARSE_ENABLED,
+ .dstate = &_TRACE_KEYMAP_PARSE_DSTATE
+};
+TraceEvent _TRACE_KEYMAP_ADD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "keymap_add",
+ .sstate = TRACE_KEYMAP_ADD_ENABLED,
+ .dstate = &_TRACE_KEYMAP_ADD_DSTATE
+};
+TraceEvent _TRACE_KEYMAP_UNMAPPED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "keymap_unmapped",
+ .sstate = TRACE_KEYMAP_UNMAPPED_ENABLED,
+ .dstate = &_TRACE_KEYMAP_UNMAPPED_DSTATE
+};
+TraceEvent _TRACE_XKEYMAP_EXTENSION_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xkeymap_extension",
+ .sstate = TRACE_XKEYMAP_EXTENSION_ENABLED,
+ .dstate = &_TRACE_XKEYMAP_EXTENSION_DSTATE
+};
+TraceEvent _TRACE_XKEYMAP_VENDOR_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xkeymap_vendor",
+ .sstate = TRACE_XKEYMAP_VENDOR_ENABLED,
+ .dstate = &_TRACE_XKEYMAP_VENDOR_DSTATE
+};
+TraceEvent _TRACE_XKEYMAP_KEYCODES_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xkeymap_keycodes",
+ .sstate = TRACE_XKEYMAP_KEYCODES_ENABLED,
+ .dstate = &_TRACE_XKEYMAP_KEYCODES_DSTATE
+};
+TraceEvent _TRACE_XKEYMAP_KEYMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "xkeymap_keymap",
+ .sstate = TRACE_XKEYMAP_KEYMAP_ENABLED,
+ .dstate = &_TRACE_XKEYMAP_KEYMAP_DSTATE
+};
+TraceEvent *ui_trace_events[] = {
+ &_TRACE_CONSOLE_GFX_NEW_EVENT,
+ &_TRACE_CONSOLE_GFX_REUSE_EVENT,
+ &_TRACE_CONSOLE_GFX_CLOSE_EVENT,
+ &_TRACE_CONSOLE_PUTCHAR_CSI_EVENT,
+ &_TRACE_CONSOLE_PUTCHAR_UNHANDLED_EVENT,
+ &_TRACE_CONSOLE_TXT_NEW_EVENT,
+ &_TRACE_CONSOLE_SELECT_EVENT,
+ &_TRACE_CONSOLE_REFRESH_EVENT,
+ &_TRACE_DISPLAYSURFACE_CREATE_EVENT,
+ &_TRACE_DISPLAYSURFACE_CREATE_FROM_EVENT,
+ &_TRACE_DISPLAYSURFACE_CREATE_PIXMAN_EVENT,
+ &_TRACE_DISPLAYSURFACE_FREE_EVENT,
+ &_TRACE_DISPLAYCHANGELISTENER_REGISTER_EVENT,
+ &_TRACE_DISPLAYCHANGELISTENER_UNREGISTER_EVENT,
+ &_TRACE_PPM_SAVE_EVENT,
+ &_TRACE_GD_SWITCH_EVENT,
+ &_TRACE_GD_UPDATE_EVENT,
+ &_TRACE_GD_KEY_EVENT_EVENT,
+ &_TRACE_GD_GRAB_EVENT,
+ &_TRACE_GD_UNGRAB_EVENT,
+ &_TRACE_GD_KEYMAP_WINDOWING_EVENT,
+ &_TRACE_VNC_KEY_GUEST_LEDS_EVENT,
+ &_TRACE_VNC_KEY_MAP_INIT_EVENT,
+ &_TRACE_VNC_KEY_EVENT_EXT_EVENT,
+ &_TRACE_VNC_KEY_EVENT_MAP_EVENT,
+ &_TRACE_VNC_KEY_SYNC_NUMLOCK_EVENT,
+ &_TRACE_VNC_KEY_SYNC_CAPSLOCK_EVENT,
+ &_TRACE_VNC_CLIENT_EOF_EVENT,
+ &_TRACE_VNC_CLIENT_IO_ERROR_EVENT,
+ &_TRACE_VNC_CLIENT_CONNECT_EVENT,
+ &_TRACE_VNC_CLIENT_DISCONNECT_START_EVENT,
+ &_TRACE_VNC_CLIENT_DISCONNECT_FINISH_EVENT,
+ &_TRACE_VNC_CLIENT_IO_WRAP_EVENT,
+ &_TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_EVENT,
+ &_TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_EVENT,
+ &_TRACE_VNC_CLIENT_THROTTLE_FORCED_EVENT,
+ &_TRACE_VNC_CLIENT_THROTTLE_AUDIO_EVENT,
+ &_TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_EVENT,
+ &_TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_EVENT,
+ &_TRACE_VNC_CLIENT_OUTPUT_LIMIT_EVENT,
+ &_TRACE_VNC_AUTH_INIT_EVENT,
+ &_TRACE_VNC_AUTH_START_EVENT,
+ &_TRACE_VNC_AUTH_PASS_EVENT,
+ &_TRACE_VNC_AUTH_FAIL_EVENT,
+ &_TRACE_VNC_AUTH_REJECT_EVENT,
+ &_TRACE_VNC_AUTH_VENCRYPT_VERSION_EVENT,
+ &_TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_EVENT,
+ &_TRACE_VNC_AUTH_SASL_MECH_LIST_EVENT,
+ &_TRACE_VNC_AUTH_SASL_MECH_CHOOSE_EVENT,
+ &_TRACE_VNC_AUTH_SASL_START_EVENT,
+ &_TRACE_VNC_AUTH_SASL_STEP_EVENT,
+ &_TRACE_VNC_AUTH_SASL_SSF_EVENT,
+ &_TRACE_VNC_AUTH_SASL_USERNAME_EVENT,
+ &_TRACE_VNC_AUTH_SASL_ACL_EVENT,
+ &_TRACE_INPUT_EVENT_KEY_NUMBER_EVENT,
+ &_TRACE_INPUT_EVENT_KEY_QCODE_EVENT,
+ &_TRACE_INPUT_EVENT_BTN_EVENT,
+ &_TRACE_INPUT_EVENT_REL_EVENT,
+ &_TRACE_INPUT_EVENT_ABS_EVENT,
+ &_TRACE_INPUT_EVENT_SYNC_EVENT,
+ &_TRACE_INPUT_MOUSE_MODE_EVENT,
+ &_TRACE_QEMU_SPICE_ADD_MEMSLOT_EVENT,
+ &_TRACE_QEMU_SPICE_DEL_MEMSLOT_EVENT,
+ &_TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_EVENT,
+ &_TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_EVENT,
+ &_TRACE_QEMU_SPICE_WAKEUP_EVENT,
+ &_TRACE_QEMU_SPICE_CREATE_UPDATE_EVENT,
+ &_TRACE_QEMU_SPICE_DISPLAY_UPDATE_EVENT,
+ &_TRACE_QEMU_SPICE_DISPLAY_SURFACE_EVENT,
+ &_TRACE_QEMU_SPICE_DISPLAY_REFRESH_EVENT,
+ &_TRACE_QEMU_SPICE_UI_INFO_EVENT,
+ &_TRACE_QEMU_SPICE_GL_SURFACE_EVENT,
+ &_TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_EVENT,
+ &_TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_EVENT,
+ &_TRACE_QEMU_SPICE_GL_CURSOR_EVENT,
+ &_TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_EVENT,
+ &_TRACE_QEMU_SPICE_GL_RENDER_DMABUF_EVENT,
+ &_TRACE_QEMU_SPICE_GL_UPDATE_EVENT,
+ &_TRACE_KEYMAP_PARSE_EVENT,
+ &_TRACE_KEYMAP_ADD_EVENT,
+ &_TRACE_KEYMAP_UNMAPPED_EVENT,
+ &_TRACE_XKEYMAP_EXTENSION_EVENT,
+ &_TRACE_XKEYMAP_VENDOR_EVENT,
+ &_TRACE_XKEYMAP_KEYCODES_EVENT,
+ &_TRACE_XKEYMAP_KEYMAP_EVENT,
+ NULL,
+};
+
+static void trace_ui_register_events(void)
+{
+ trace_event_register_group(ui_trace_events);
+}
+trace_init(trace_ui_register_events)
diff --git a/qemu2-auto-generated/ui/trace.h b/qemu2-auto-generated/ui/trace.h
new file mode 100644
index 0000000000..976b98852f
--- /dev/null
+++ b/qemu2-auto-generated/ui/trace.h
@@ -0,0 +1,1454 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_UI_GENERATED_TRACERS_H
+#define TRACE_UI_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_CONSOLE_GFX_NEW_EVENT;
+extern TraceEvent _TRACE_CONSOLE_GFX_REUSE_EVENT;
+extern TraceEvent _TRACE_CONSOLE_GFX_CLOSE_EVENT;
+extern TraceEvent _TRACE_CONSOLE_PUTCHAR_CSI_EVENT;
+extern TraceEvent _TRACE_CONSOLE_PUTCHAR_UNHANDLED_EVENT;
+extern TraceEvent _TRACE_CONSOLE_TXT_NEW_EVENT;
+extern TraceEvent _TRACE_CONSOLE_SELECT_EVENT;
+extern TraceEvent _TRACE_CONSOLE_REFRESH_EVENT;
+extern TraceEvent _TRACE_DISPLAYSURFACE_CREATE_EVENT;
+extern TraceEvent _TRACE_DISPLAYSURFACE_CREATE_FROM_EVENT;
+extern TraceEvent _TRACE_DISPLAYSURFACE_CREATE_PIXMAN_EVENT;
+extern TraceEvent _TRACE_DISPLAYSURFACE_FREE_EVENT;
+extern TraceEvent _TRACE_DISPLAYCHANGELISTENER_REGISTER_EVENT;
+extern TraceEvent _TRACE_DISPLAYCHANGELISTENER_UNREGISTER_EVENT;
+extern TraceEvent _TRACE_PPM_SAVE_EVENT;
+extern TraceEvent _TRACE_GD_SWITCH_EVENT;
+extern TraceEvent _TRACE_GD_UPDATE_EVENT;
+extern TraceEvent _TRACE_GD_KEY_EVENT_EVENT;
+extern TraceEvent _TRACE_GD_GRAB_EVENT;
+extern TraceEvent _TRACE_GD_UNGRAB_EVENT;
+extern TraceEvent _TRACE_GD_KEYMAP_WINDOWING_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_GUEST_LEDS_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_MAP_INIT_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_EVENT_EXT_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_EVENT_MAP_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_SYNC_NUMLOCK_EVENT;
+extern TraceEvent _TRACE_VNC_KEY_SYNC_CAPSLOCK_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_EOF_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_IO_ERROR_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_CONNECT_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_DISCONNECT_START_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_DISCONNECT_FINISH_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_IO_WRAP_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_THROTTLE_FORCED_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_THROTTLE_AUDIO_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_EVENT;
+extern TraceEvent _TRACE_VNC_CLIENT_OUTPUT_LIMIT_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_INIT_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_START_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_PASS_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_FAIL_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_REJECT_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_VENCRYPT_VERSION_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_MECH_LIST_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_MECH_CHOOSE_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_START_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_STEP_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_SSF_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_USERNAME_EVENT;
+extern TraceEvent _TRACE_VNC_AUTH_SASL_ACL_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_KEY_NUMBER_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_KEY_QCODE_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_BTN_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_REL_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_ABS_EVENT;
+extern TraceEvent _TRACE_INPUT_EVENT_SYNC_EVENT;
+extern TraceEvent _TRACE_INPUT_MOUSE_MODE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_ADD_MEMSLOT_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_DEL_MEMSLOT_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_WAKEUP_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_CREATE_UPDATE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_DISPLAY_UPDATE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_DISPLAY_SURFACE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_DISPLAY_REFRESH_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_UI_INFO_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_SURFACE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_CURSOR_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_RENDER_DMABUF_EVENT;
+extern TraceEvent _TRACE_QEMU_SPICE_GL_UPDATE_EVENT;
+extern TraceEvent _TRACE_KEYMAP_PARSE_EVENT;
+extern TraceEvent _TRACE_KEYMAP_ADD_EVENT;
+extern TraceEvent _TRACE_KEYMAP_UNMAPPED_EVENT;
+extern TraceEvent _TRACE_XKEYMAP_EXTENSION_EVENT;
+extern TraceEvent _TRACE_XKEYMAP_VENDOR_EVENT;
+extern TraceEvent _TRACE_XKEYMAP_KEYCODES_EVENT;
+extern TraceEvent _TRACE_XKEYMAP_KEYMAP_EVENT;
+extern uint16_t _TRACE_CONSOLE_GFX_NEW_DSTATE;
+extern uint16_t _TRACE_CONSOLE_GFX_REUSE_DSTATE;
+extern uint16_t _TRACE_CONSOLE_GFX_CLOSE_DSTATE;
+extern uint16_t _TRACE_CONSOLE_PUTCHAR_CSI_DSTATE;
+extern uint16_t _TRACE_CONSOLE_PUTCHAR_UNHANDLED_DSTATE;
+extern uint16_t _TRACE_CONSOLE_TXT_NEW_DSTATE;
+extern uint16_t _TRACE_CONSOLE_SELECT_DSTATE;
+extern uint16_t _TRACE_CONSOLE_REFRESH_DSTATE;
+extern uint16_t _TRACE_DISPLAYSURFACE_CREATE_DSTATE;
+extern uint16_t _TRACE_DISPLAYSURFACE_CREATE_FROM_DSTATE;
+extern uint16_t _TRACE_DISPLAYSURFACE_CREATE_PIXMAN_DSTATE;
+extern uint16_t _TRACE_DISPLAYSURFACE_FREE_DSTATE;
+extern uint16_t _TRACE_DISPLAYCHANGELISTENER_REGISTER_DSTATE;
+extern uint16_t _TRACE_DISPLAYCHANGELISTENER_UNREGISTER_DSTATE;
+extern uint16_t _TRACE_PPM_SAVE_DSTATE;
+extern uint16_t _TRACE_GD_SWITCH_DSTATE;
+extern uint16_t _TRACE_GD_UPDATE_DSTATE;
+extern uint16_t _TRACE_GD_KEY_EVENT_DSTATE;
+extern uint16_t _TRACE_GD_GRAB_DSTATE;
+extern uint16_t _TRACE_GD_UNGRAB_DSTATE;
+extern uint16_t _TRACE_GD_KEYMAP_WINDOWING_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_GUEST_LEDS_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_MAP_INIT_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_EVENT_EXT_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_EVENT_MAP_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_SYNC_NUMLOCK_DSTATE;
+extern uint16_t _TRACE_VNC_KEY_SYNC_CAPSLOCK_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_EOF_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_IO_ERROR_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_CONNECT_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_DISCONNECT_START_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_DISCONNECT_FINISH_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_IO_WRAP_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_THROTTLE_FORCED_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_THROTTLE_AUDIO_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_DSTATE;
+extern uint16_t _TRACE_VNC_CLIENT_OUTPUT_LIMIT_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_INIT_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_START_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_PASS_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_FAIL_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_REJECT_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_VENCRYPT_VERSION_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_MECH_LIST_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_MECH_CHOOSE_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_START_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_STEP_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_SSF_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_USERNAME_DSTATE;
+extern uint16_t _TRACE_VNC_AUTH_SASL_ACL_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_KEY_NUMBER_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_KEY_QCODE_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_BTN_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_REL_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_ABS_DSTATE;
+extern uint16_t _TRACE_INPUT_EVENT_SYNC_DSTATE;
+extern uint16_t _TRACE_INPUT_MOUSE_MODE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_ADD_MEMSLOT_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_DEL_MEMSLOT_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_WAKEUP_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_CREATE_UPDATE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_DISPLAY_UPDATE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_DISPLAY_SURFACE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_DISPLAY_REFRESH_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_UI_INFO_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_SURFACE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_CURSOR_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_RENDER_DMABUF_DSTATE;
+extern uint16_t _TRACE_QEMU_SPICE_GL_UPDATE_DSTATE;
+extern uint16_t _TRACE_KEYMAP_PARSE_DSTATE;
+extern uint16_t _TRACE_KEYMAP_ADD_DSTATE;
+extern uint16_t _TRACE_KEYMAP_UNMAPPED_DSTATE;
+extern uint16_t _TRACE_XKEYMAP_EXTENSION_DSTATE;
+extern uint16_t _TRACE_XKEYMAP_VENDOR_DSTATE;
+extern uint16_t _TRACE_XKEYMAP_KEYCODES_DSTATE;
+extern uint16_t _TRACE_XKEYMAP_KEYMAP_DSTATE;
+#define TRACE_CONSOLE_GFX_NEW_ENABLED 1
+#define TRACE_CONSOLE_GFX_REUSE_ENABLED 1
+#define TRACE_CONSOLE_GFX_CLOSE_ENABLED 1
+#define TRACE_CONSOLE_PUTCHAR_CSI_ENABLED 1
+#define TRACE_CONSOLE_PUTCHAR_UNHANDLED_ENABLED 1
+#define TRACE_CONSOLE_TXT_NEW_ENABLED 1
+#define TRACE_CONSOLE_SELECT_ENABLED 1
+#define TRACE_CONSOLE_REFRESH_ENABLED 1
+#define TRACE_DISPLAYSURFACE_CREATE_ENABLED 1
+#define TRACE_DISPLAYSURFACE_CREATE_FROM_ENABLED 1
+#define TRACE_DISPLAYSURFACE_CREATE_PIXMAN_ENABLED 1
+#define TRACE_DISPLAYSURFACE_FREE_ENABLED 1
+#define TRACE_DISPLAYCHANGELISTENER_REGISTER_ENABLED 1
+#define TRACE_DISPLAYCHANGELISTENER_UNREGISTER_ENABLED 1
+#define TRACE_PPM_SAVE_ENABLED 1
+#define TRACE_GD_SWITCH_ENABLED 1
+#define TRACE_GD_UPDATE_ENABLED 1
+#define TRACE_GD_KEY_EVENT_ENABLED 1
+#define TRACE_GD_GRAB_ENABLED 1
+#define TRACE_GD_UNGRAB_ENABLED 1
+#define TRACE_GD_KEYMAP_WINDOWING_ENABLED 1
+#define TRACE_VNC_KEY_GUEST_LEDS_ENABLED 1
+#define TRACE_VNC_KEY_MAP_INIT_ENABLED 1
+#define TRACE_VNC_KEY_EVENT_EXT_ENABLED 1
+#define TRACE_VNC_KEY_EVENT_MAP_ENABLED 1
+#define TRACE_VNC_KEY_SYNC_NUMLOCK_ENABLED 1
+#define TRACE_VNC_KEY_SYNC_CAPSLOCK_ENABLED 1
+#define TRACE_VNC_CLIENT_EOF_ENABLED 1
+#define TRACE_VNC_CLIENT_IO_ERROR_ENABLED 1
+#define TRACE_VNC_CLIENT_CONNECT_ENABLED 1
+#define TRACE_VNC_CLIENT_DISCONNECT_START_ENABLED 1
+#define TRACE_VNC_CLIENT_DISCONNECT_FINISH_ENABLED 1
+#define TRACE_VNC_CLIENT_IO_WRAP_ENABLED 1
+#define TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_ENABLED 1
+#define TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_ENABLED 1
+#define TRACE_VNC_CLIENT_THROTTLE_FORCED_ENABLED 1
+#define TRACE_VNC_CLIENT_THROTTLE_AUDIO_ENABLED 1
+#define TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_ENABLED 1
+#define TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_ENABLED 1
+#define TRACE_VNC_CLIENT_OUTPUT_LIMIT_ENABLED 1
+#define TRACE_VNC_AUTH_INIT_ENABLED 1
+#define TRACE_VNC_AUTH_START_ENABLED 1
+#define TRACE_VNC_AUTH_PASS_ENABLED 1
+#define TRACE_VNC_AUTH_FAIL_ENABLED 1
+#define TRACE_VNC_AUTH_REJECT_ENABLED 1
+#define TRACE_VNC_AUTH_VENCRYPT_VERSION_ENABLED 1
+#define TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_MECH_LIST_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_MECH_CHOOSE_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_START_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_STEP_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_SSF_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_USERNAME_ENABLED 1
+#define TRACE_VNC_AUTH_SASL_ACL_ENABLED 1
+#define TRACE_INPUT_EVENT_KEY_NUMBER_ENABLED 1
+#define TRACE_INPUT_EVENT_KEY_QCODE_ENABLED 1
+#define TRACE_INPUT_EVENT_BTN_ENABLED 1
+#define TRACE_INPUT_EVENT_REL_ENABLED 1
+#define TRACE_INPUT_EVENT_ABS_ENABLED 1
+#define TRACE_INPUT_EVENT_SYNC_ENABLED 1
+#define TRACE_INPUT_MOUSE_MODE_ENABLED 1
+#define TRACE_QEMU_SPICE_ADD_MEMSLOT_ENABLED 1
+#define TRACE_QEMU_SPICE_DEL_MEMSLOT_ENABLED 1
+#define TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_ENABLED 1
+#define TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_ENABLED 1
+#define TRACE_QEMU_SPICE_WAKEUP_ENABLED 1
+#define TRACE_QEMU_SPICE_CREATE_UPDATE_ENABLED 1
+#define TRACE_QEMU_SPICE_DISPLAY_UPDATE_ENABLED 1
+#define TRACE_QEMU_SPICE_DISPLAY_SURFACE_ENABLED 1
+#define TRACE_QEMU_SPICE_DISPLAY_REFRESH_ENABLED 1
+#define TRACE_QEMU_SPICE_UI_INFO_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_SURFACE_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_CURSOR_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_RENDER_DMABUF_ENABLED 1
+#define TRACE_QEMU_SPICE_GL_UPDATE_ENABLED 1
+#define TRACE_KEYMAP_PARSE_ENABLED 1
+#define TRACE_KEYMAP_ADD_ENABLED 1
+#define TRACE_KEYMAP_UNMAPPED_ENABLED 1
+#define TRACE_XKEYMAP_EXTENSION_ENABLED 1
+#define TRACE_XKEYMAP_VENDOR_ENABLED 1
+#define TRACE_XKEYMAP_KEYCODES_ENABLED 1
+#define TRACE_XKEYMAP_KEYMAP_ENABLED 1
+
+#define TRACE_CONSOLE_GFX_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_gfx_new(void)
+{
+}
+
+static inline void trace_console_gfx_new(void)
+{
+ if (true) {
+ _nocheck__trace_console_gfx_new();
+ }
+}
+
+#define TRACE_CONSOLE_GFX_REUSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_gfx_reuse(int index)
+{
+}
+
+static inline void trace_console_gfx_reuse(int index)
+{
+ if (true) {
+ _nocheck__trace_console_gfx_reuse(index);
+ }
+}
+
+#define TRACE_CONSOLE_GFX_CLOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_gfx_close(int index)
+{
+}
+
+static inline void trace_console_gfx_close(int index)
+{
+ if (true) {
+ _nocheck__trace_console_gfx_close(index);
+ }
+}
+
+#define TRACE_CONSOLE_PUTCHAR_CSI_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_putchar_csi(int esc_param0, int esc_param1, int ch, int nb_esc_params)
+{
+}
+
+static inline void trace_console_putchar_csi(int esc_param0, int esc_param1, int ch, int nb_esc_params)
+{
+ if (true) {
+ _nocheck__trace_console_putchar_csi(esc_param0, esc_param1, ch, nb_esc_params);
+ }
+}
+
+#define TRACE_CONSOLE_PUTCHAR_UNHANDLED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_putchar_unhandled(int ch)
+{
+}
+
+static inline void trace_console_putchar_unhandled(int ch)
+{
+ if (true) {
+ _nocheck__trace_console_putchar_unhandled(ch);
+ }
+}
+
+#define TRACE_CONSOLE_TXT_NEW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_txt_new(int w, int h)
+{
+}
+
+static inline void trace_console_txt_new(int w, int h)
+{
+ if (true) {
+ _nocheck__trace_console_txt_new(w, h);
+ }
+}
+
+#define TRACE_CONSOLE_SELECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_select(int nr)
+{
+}
+
+static inline void trace_console_select(int nr)
+{
+ if (true) {
+ _nocheck__trace_console_select(nr);
+ }
+}
+
+#define TRACE_CONSOLE_REFRESH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_console_refresh(int interval)
+{
+}
+
+static inline void trace_console_refresh(int interval)
+{
+ if (true) {
+ _nocheck__trace_console_refresh(interval);
+ }
+}
+
+#define TRACE_DISPLAYSURFACE_CREATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaysurface_create(void * display_surface, int w, int h)
+{
+}
+
+static inline void trace_displaysurface_create(void * display_surface, int w, int h)
+{
+ if (true) {
+ _nocheck__trace_displaysurface_create(display_surface, w, h);
+ }
+}
+
+#define TRACE_DISPLAYSURFACE_CREATE_FROM_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaysurface_create_from(void * display_surface, int w, int h, uint32_t format)
+{
+}
+
+static inline void trace_displaysurface_create_from(void * display_surface, int w, int h, uint32_t format)
+{
+ if (true) {
+ _nocheck__trace_displaysurface_create_from(display_surface, w, h, format);
+ }
+}
+
+#define TRACE_DISPLAYSURFACE_CREATE_PIXMAN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaysurface_create_pixman(void * display_surface)
+{
+}
+
+static inline void trace_displaysurface_create_pixman(void * display_surface)
+{
+ if (true) {
+ _nocheck__trace_displaysurface_create_pixman(display_surface);
+ }
+}
+
+#define TRACE_DISPLAYSURFACE_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaysurface_free(void * display_surface)
+{
+}
+
+static inline void trace_displaysurface_free(void * display_surface)
+{
+ if (true) {
+ _nocheck__trace_displaysurface_free(display_surface);
+ }
+}
+
+#define TRACE_DISPLAYCHANGELISTENER_REGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaychangelistener_register(void * dcl, const char * name)
+{
+}
+
+static inline void trace_displaychangelistener_register(void * dcl, const char * name)
+{
+ if (true) {
+ _nocheck__trace_displaychangelistener_register(dcl, name);
+ }
+}
+
+#define TRACE_DISPLAYCHANGELISTENER_UNREGISTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_displaychangelistener_unregister(void * dcl, const char * name)
+{
+}
+
+static inline void trace_displaychangelistener_unregister(void * dcl, const char * name)
+{
+ if (true) {
+ _nocheck__trace_displaychangelistener_unregister(dcl, name);
+ }
+}
+
+#define TRACE_PPM_SAVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_ppm_save(const char * filename, void * display_surface)
+{
+}
+
+static inline void trace_ppm_save(const char * filename, void * display_surface)
+{
+ if (true) {
+ _nocheck__trace_ppm_save(filename, display_surface);
+ }
+}
+
+#define TRACE_GD_SWITCH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_switch(const char * tab, int width, int height)
+{
+}
+
+static inline void trace_gd_switch(const char * tab, int width, int height)
+{
+ if (true) {
+ _nocheck__trace_gd_switch(tab, width, height);
+ }
+}
+
+#define TRACE_GD_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_update(const char * tab, int x, int y, int w, int h)
+{
+}
+
+static inline void trace_gd_update(const char * tab, int x, int y, int w, int h)
+{
+ if (true) {
+ _nocheck__trace_gd_update(tab, x, y, w, h);
+ }
+}
+
+#define TRACE_GD_KEY_EVENT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_key_event(const char * tab, int gdk_keycode, int qkeycode, const char * action)
+{
+}
+
+static inline void trace_gd_key_event(const char * tab, int gdk_keycode, int qkeycode, const char * action)
+{
+ if (true) {
+ _nocheck__trace_gd_key_event(tab, gdk_keycode, qkeycode, action);
+ }
+}
+
+#define TRACE_GD_GRAB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_grab(const char * tab, const char * device, const char * reason)
+{
+}
+
+static inline void trace_gd_grab(const char * tab, const char * device, const char * reason)
+{
+ if (true) {
+ _nocheck__trace_gd_grab(tab, device, reason);
+ }
+}
+
+#define TRACE_GD_UNGRAB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_ungrab(const char * tab, const char * device)
+{
+}
+
+static inline void trace_gd_ungrab(const char * tab, const char * device)
+{
+ if (true) {
+ _nocheck__trace_gd_ungrab(tab, device);
+ }
+}
+
+#define TRACE_GD_KEYMAP_WINDOWING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_gd_keymap_windowing(const char * name)
+{
+}
+
+static inline void trace_gd_keymap_windowing(const char * name)
+{
+ if (true) {
+ _nocheck__trace_gd_keymap_windowing(name);
+ }
+}
+
+#define TRACE_VNC_KEY_GUEST_LEDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_guest_leds(bool caps, bool num, bool scroll)
+{
+}
+
+static inline void trace_vnc_key_guest_leds(bool caps, bool num, bool scroll)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_guest_leds(caps, num, scroll);
+ }
+}
+
+#define TRACE_VNC_KEY_MAP_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_map_init(const char * layout)
+{
+}
+
+static inline void trace_vnc_key_map_init(const char * layout)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_map_init(layout);
+ }
+}
+
+#define TRACE_VNC_KEY_EVENT_EXT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_event_ext(bool down, int sym, int keycode, const char * name)
+{
+}
+
+static inline void trace_vnc_key_event_ext(bool down, int sym, int keycode, const char * name)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_event_ext(down, sym, keycode, name);
+ }
+}
+
+#define TRACE_VNC_KEY_EVENT_MAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_event_map(bool down, int sym, int keycode, const char * name)
+{
+}
+
+static inline void trace_vnc_key_event_map(bool down, int sym, int keycode, const char * name)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_event_map(down, sym, keycode, name);
+ }
+}
+
+#define TRACE_VNC_KEY_SYNC_NUMLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_sync_numlock(bool on)
+{
+}
+
+static inline void trace_vnc_key_sync_numlock(bool on)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_sync_numlock(on);
+ }
+}
+
+#define TRACE_VNC_KEY_SYNC_CAPSLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_key_sync_capslock(bool on)
+{
+}
+
+static inline void trace_vnc_key_sync_capslock(bool on)
+{
+ if (true) {
+ _nocheck__trace_vnc_key_sync_capslock(on);
+ }
+}
+
+#define TRACE_VNC_CLIENT_EOF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_eof(void * state, void * ioc)
+{
+}
+
+static inline void trace_vnc_client_eof(void * state, void * ioc)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_eof(state, ioc);
+ }
+}
+
+#define TRACE_VNC_CLIENT_IO_ERROR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_io_error(void * state, void * ioc, const char * msg)
+{
+}
+
+static inline void trace_vnc_client_io_error(void * state, void * ioc, const char * msg)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_io_error(state, ioc, msg);
+ }
+}
+
+#define TRACE_VNC_CLIENT_CONNECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_connect(void * state, void * ioc)
+{
+}
+
+static inline void trace_vnc_client_connect(void * state, void * ioc)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_connect(state, ioc);
+ }
+}
+
+#define TRACE_VNC_CLIENT_DISCONNECT_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_disconnect_start(void * state, void * ioc)
+{
+}
+
+static inline void trace_vnc_client_disconnect_start(void * state, void * ioc)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_disconnect_start(state, ioc);
+ }
+}
+
+#define TRACE_VNC_CLIENT_DISCONNECT_FINISH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_disconnect_finish(void * state, void * ioc)
+{
+}
+
+static inline void trace_vnc_client_disconnect_finish(void * state, void * ioc)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_disconnect_finish(state, ioc);
+ }
+}
+
+#define TRACE_VNC_CLIENT_IO_WRAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_io_wrap(void * state, void * ioc, const char * type)
+{
+}
+
+static inline void trace_vnc_client_io_wrap(void * state, void * ioc, const char * type)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_io_wrap(state, ioc, type);
+ }
+}
+
+#define TRACE_VNC_CLIENT_THROTTLE_THRESHOLD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_throttle_threshold(void * state, void * ioc, size_t oldoffset, size_t offset, int client_width, int client_height, int bytes_per_pixel, void * audio_cap)
+{
+}
+
+static inline void trace_vnc_client_throttle_threshold(void * state, void * ioc, size_t oldoffset, size_t offset, int client_width, int client_height, int bytes_per_pixel, void * audio_cap)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_throttle_threshold(state, ioc, oldoffset, offset, client_width, client_height, bytes_per_pixel, audio_cap);
+ }
+}
+
+#define TRACE_VNC_CLIENT_THROTTLE_INCREMENTAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_throttle_incremental(void * state, void * ioc, int job_update, size_t offset)
+{
+}
+
+static inline void trace_vnc_client_throttle_incremental(void * state, void * ioc, int job_update, size_t offset)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_throttle_incremental(state, ioc, job_update, offset);
+ }
+}
+
+#define TRACE_VNC_CLIENT_THROTTLE_FORCED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_throttle_forced(void * state, void * ioc, int job_update, size_t offset)
+{
+}
+
+static inline void trace_vnc_client_throttle_forced(void * state, void * ioc, int job_update, size_t offset)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_throttle_forced(state, ioc, job_update, offset);
+ }
+}
+
+#define TRACE_VNC_CLIENT_THROTTLE_AUDIO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_throttle_audio(void * state, void * ioc, size_t offset)
+{
+}
+
+static inline void trace_vnc_client_throttle_audio(void * state, void * ioc, size_t offset)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_throttle_audio(state, ioc, offset);
+ }
+}
+
+#define TRACE_VNC_CLIENT_UNTHROTTLE_FORCED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_unthrottle_forced(void * state, void * ioc)
+{
+}
+
+static inline void trace_vnc_client_unthrottle_forced(void * state, void * ioc)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_unthrottle_forced(state, ioc);
+ }
+}
+
+#define TRACE_VNC_CLIENT_UNTHROTTLE_INCREMENTAL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_unthrottle_incremental(void * state, void * ioc, size_t offset)
+{
+}
+
+static inline void trace_vnc_client_unthrottle_incremental(void * state, void * ioc, size_t offset)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_unthrottle_incremental(state, ioc, offset);
+ }
+}
+
+#define TRACE_VNC_CLIENT_OUTPUT_LIMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_client_output_limit(void * state, void * ioc, size_t offset, size_t threshold)
+{
+}
+
+static inline void trace_vnc_client_output_limit(void * state, void * ioc, size_t offset, size_t threshold)
+{
+ if (true) {
+ _nocheck__trace_vnc_client_output_limit(state, ioc, offset, threshold);
+ }
+}
+
+#define TRACE_VNC_AUTH_INIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_init(void * display, int websock, int auth, int subauth)
+{
+}
+
+static inline void trace_vnc_auth_init(void * display, int websock, int auth, int subauth)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_init(display, websock, auth, subauth);
+ }
+}
+
+#define TRACE_VNC_AUTH_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_start(void * state, int method)
+{
+}
+
+static inline void trace_vnc_auth_start(void * state, int method)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_start(state, method);
+ }
+}
+
+#define TRACE_VNC_AUTH_PASS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_pass(void * state, int method)
+{
+}
+
+static inline void trace_vnc_auth_pass(void * state, int method)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_pass(state, method);
+ }
+}
+
+#define TRACE_VNC_AUTH_FAIL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_fail(void * state, int method, const char * message, const char * reason)
+{
+}
+
+static inline void trace_vnc_auth_fail(void * state, int method, const char * message, const char * reason)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_fail(state, method, message, reason);
+ }
+}
+
+#define TRACE_VNC_AUTH_REJECT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_reject(void * state, int expect, int got)
+{
+}
+
+static inline void trace_vnc_auth_reject(void * state, int expect, int got)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_reject(state, expect, got);
+ }
+}
+
+#define TRACE_VNC_AUTH_VENCRYPT_VERSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_vencrypt_version(void * state, int major, int minor)
+{
+}
+
+static inline void trace_vnc_auth_vencrypt_version(void * state, int major, int minor)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_vencrypt_version(state, major, minor);
+ }
+}
+
+#define TRACE_VNC_AUTH_VENCRYPT_SUBAUTH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_vencrypt_subauth(void * state, int auth)
+{
+}
+
+static inline void trace_vnc_auth_vencrypt_subauth(void * state, int auth)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_vencrypt_subauth(state, auth);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_MECH_LIST_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_mech_list(void * state, const char * mechs)
+{
+}
+
+static inline void trace_vnc_auth_sasl_mech_list(void * state, const char * mechs)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_mech_list(state, mechs);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_MECH_CHOOSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_mech_choose(void * state, const char * mech)
+{
+}
+
+static inline void trace_vnc_auth_sasl_mech_choose(void * state, const char * mech)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_mech_choose(state, mech);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_START_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_start(void * state, const void * clientdata, size_t clientlen, const void * serverdata, size_t severlen, int ret)
+{
+}
+
+static inline void trace_vnc_auth_sasl_start(void * state, const void * clientdata, size_t clientlen, const void * serverdata, size_t severlen, int ret)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_start(state, clientdata, clientlen, serverdata, severlen, ret);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_STEP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_step(void * state, const void * clientdata, size_t clientlen, const void * serverdata, size_t severlen, int ret)
+{
+}
+
+static inline void trace_vnc_auth_sasl_step(void * state, const void * clientdata, size_t clientlen, const void * serverdata, size_t severlen, int ret)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_step(state, clientdata, clientlen, serverdata, severlen, ret);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_SSF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_ssf(void * state, int ssf)
+{
+}
+
+static inline void trace_vnc_auth_sasl_ssf(void * state, int ssf)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_ssf(state, ssf);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_USERNAME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_username(void * state, const char * name)
+{
+}
+
+static inline void trace_vnc_auth_sasl_username(void * state, const char * name)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_username(state, name);
+ }
+}
+
+#define TRACE_VNC_AUTH_SASL_ACL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_vnc_auth_sasl_acl(void * state, int allow)
+{
+}
+
+static inline void trace_vnc_auth_sasl_acl(void * state, int allow)
+{
+ if (true) {
+ _nocheck__trace_vnc_auth_sasl_acl(state, allow);
+ }
+}
+
+#define TRACE_INPUT_EVENT_KEY_NUMBER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_key_number(int conidx, int number, const char * qcode, bool down)
+{
+}
+
+static inline void trace_input_event_key_number(int conidx, int number, const char * qcode, bool down)
+{
+ if (true) {
+ _nocheck__trace_input_event_key_number(conidx, number, qcode, down);
+ }
+}
+
+#define TRACE_INPUT_EVENT_KEY_QCODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_key_qcode(int conidx, const char * qcode, bool down)
+{
+}
+
+static inline void trace_input_event_key_qcode(int conidx, const char * qcode, bool down)
+{
+ if (true) {
+ _nocheck__trace_input_event_key_qcode(conidx, qcode, down);
+ }
+}
+
+#define TRACE_INPUT_EVENT_BTN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_btn(int conidx, const char * btn, bool down)
+{
+}
+
+static inline void trace_input_event_btn(int conidx, const char * btn, bool down)
+{
+ if (true) {
+ _nocheck__trace_input_event_btn(conidx, btn, down);
+ }
+}
+
+#define TRACE_INPUT_EVENT_REL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_rel(int conidx, const char * axis, int value)
+{
+}
+
+static inline void trace_input_event_rel(int conidx, const char * axis, int value)
+{
+ if (true) {
+ _nocheck__trace_input_event_rel(conidx, axis, value);
+ }
+}
+
+#define TRACE_INPUT_EVENT_ABS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_abs(int conidx, const char * axis, int value)
+{
+}
+
+static inline void trace_input_event_abs(int conidx, const char * axis, int value)
+{
+ if (true) {
+ _nocheck__trace_input_event_abs(conidx, axis, value);
+ }
+}
+
+#define TRACE_INPUT_EVENT_SYNC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_event_sync(void)
+{
+}
+
+static inline void trace_input_event_sync(void)
+{
+ if (true) {
+ _nocheck__trace_input_event_sync();
+ }
+}
+
+#define TRACE_INPUT_MOUSE_MODE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_input_mouse_mode(int absolute)
+{
+}
+
+static inline void trace_input_mouse_mode(int absolute)
+{
+ if (true) {
+ _nocheck__trace_input_mouse_mode(absolute);
+ }
+}
+
+#define TRACE_QEMU_SPICE_ADD_MEMSLOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_add_memslot(int qid, uint32_t slot_id, unsigned long virt_start, unsigned long virt_end, int async)
+{
+}
+
+static inline void trace_qemu_spice_add_memslot(int qid, uint32_t slot_id, unsigned long virt_start, unsigned long virt_end, int async)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_add_memslot(qid, slot_id, virt_start, virt_end, async);
+ }
+}
+
+#define TRACE_QEMU_SPICE_DEL_MEMSLOT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_del_memslot(int qid, uint32_t gid, uint32_t slot_id)
+{
+}
+
+static inline void trace_qemu_spice_del_memslot(int qid, uint32_t gid, uint32_t slot_id)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_del_memslot(qid, gid, slot_id);
+ }
+}
+
+#define TRACE_QEMU_SPICE_CREATE_PRIMARY_SURFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_create_primary_surface(int qid, uint32_t sid, void * surface, int async)
+{
+}
+
+static inline void trace_qemu_spice_create_primary_surface(int qid, uint32_t sid, void * surface, int async)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_create_primary_surface(qid, sid, surface, async);
+ }
+}
+
+#define TRACE_QEMU_SPICE_DESTROY_PRIMARY_SURFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_destroy_primary_surface(int qid, uint32_t sid, int async)
+{
+}
+
+static inline void trace_qemu_spice_destroy_primary_surface(int qid, uint32_t sid, int async)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_destroy_primary_surface(qid, sid, async);
+ }
+}
+
+#define TRACE_QEMU_SPICE_WAKEUP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_wakeup(uint32_t qid)
+{
+}
+
+static inline void trace_qemu_spice_wakeup(uint32_t qid)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_wakeup(qid);
+ }
+}
+
+#define TRACE_QEMU_SPICE_CREATE_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_create_update(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom)
+{
+}
+
+static inline void trace_qemu_spice_create_update(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_create_update(left, right, top, bottom);
+ }
+}
+
+#define TRACE_QEMU_SPICE_DISPLAY_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_display_update(int qid, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+{
+}
+
+static inline void trace_qemu_spice_display_update(int qid, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_display_update(qid, x, y, w, h);
+ }
+}
+
+#define TRACE_QEMU_SPICE_DISPLAY_SURFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_display_surface(int qid, uint32_t w, uint32_t h, int fast)
+{
+}
+
+static inline void trace_qemu_spice_display_surface(int qid, uint32_t w, uint32_t h, int fast)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_display_surface(qid, w, h, fast);
+ }
+}
+
+#define TRACE_QEMU_SPICE_DISPLAY_REFRESH_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_display_refresh(int qid, int notify)
+{
+}
+
+static inline void trace_qemu_spice_display_refresh(int qid, int notify)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_display_refresh(qid, notify);
+ }
+}
+
+#define TRACE_QEMU_SPICE_UI_INFO_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_ui_info(int qid, uint32_t width, uint32_t height)
+{
+}
+
+static inline void trace_qemu_spice_ui_info(int qid, uint32_t width, uint32_t height)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_ui_info(qid, width, height);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_SURFACE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_surface(int qid, uint32_t w, uint32_t h, uint32_t fourcc)
+{
+}
+
+static inline void trace_qemu_spice_gl_surface(int qid, uint32_t w, uint32_t h, uint32_t fourcc)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_surface(qid, w, h, fourcc);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_SCANOUT_DISABLE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_scanout_disable(int qid)
+{
+}
+
+static inline void trace_qemu_spice_gl_scanout_disable(int qid)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_scanout_disable(qid);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_SCANOUT_TEXTURE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_scanout_texture(int qid, uint32_t w, uint32_t h, uint32_t fourcc)
+{
+}
+
+static inline void trace_qemu_spice_gl_scanout_texture(int qid, uint32_t w, uint32_t h, uint32_t fourcc)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_scanout_texture(qid, w, h, fourcc);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_CURSOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_cursor(int qid, bool enabled, bool hotspot)
+{
+}
+
+static inline void trace_qemu_spice_gl_cursor(int qid, bool enabled, bool hotspot)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_cursor(qid, enabled, hotspot);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_FORWARD_DMABUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_forward_dmabuf(int qid, uint32_t width, uint32_t height)
+{
+}
+
+static inline void trace_qemu_spice_gl_forward_dmabuf(int qid, uint32_t width, uint32_t height)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_forward_dmabuf(qid, width, height);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_RENDER_DMABUF_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_render_dmabuf(int qid, uint32_t width, uint32_t height)
+{
+}
+
+static inline void trace_qemu_spice_gl_render_dmabuf(int qid, uint32_t width, uint32_t height)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_render_dmabuf(qid, width, height);
+ }
+}
+
+#define TRACE_QEMU_SPICE_GL_UPDATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_spice_gl_update(int qid, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+{
+}
+
+static inline void trace_qemu_spice_gl_update(int qid, uint32_t x, uint32_t y, uint32_t w, uint32_t h)
+{
+ if (true) {
+ _nocheck__trace_qemu_spice_gl_update(qid, x, y, w, h);
+ }
+}
+
+#define TRACE_KEYMAP_PARSE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_keymap_parse(const char * file)
+{
+}
+
+static inline void trace_keymap_parse(const char * file)
+{
+ if (true) {
+ _nocheck__trace_keymap_parse(file);
+ }
+}
+
+#define TRACE_KEYMAP_ADD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_keymap_add(int sym, int code, const char * line)
+{
+}
+
+static inline void trace_keymap_add(int sym, int code, const char * line)
+{
+ if (true) {
+ _nocheck__trace_keymap_add(sym, code, line);
+ }
+}
+
+#define TRACE_KEYMAP_UNMAPPED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_keymap_unmapped(int sym)
+{
+}
+
+static inline void trace_keymap_unmapped(int sym)
+{
+ if (true) {
+ _nocheck__trace_keymap_unmapped(sym);
+ }
+}
+
+#define TRACE_XKEYMAP_EXTENSION_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xkeymap_extension(const char * name)
+{
+}
+
+static inline void trace_xkeymap_extension(const char * name)
+{
+ if (true) {
+ _nocheck__trace_xkeymap_extension(name);
+ }
+}
+
+#define TRACE_XKEYMAP_VENDOR_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xkeymap_vendor(const char * name)
+{
+}
+
+static inline void trace_xkeymap_vendor(const char * name)
+{
+ if (true) {
+ _nocheck__trace_xkeymap_vendor(name);
+ }
+}
+
+#define TRACE_XKEYMAP_KEYCODES_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xkeymap_keycodes(const char * name)
+{
+}
+
+static inline void trace_xkeymap_keycodes(const char * name)
+{
+ if (true) {
+ _nocheck__trace_xkeymap_keycodes(name);
+ }
+}
+
+#define TRACE_XKEYMAP_KEYMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_xkeymap_keymap(const char * name)
+{
+}
+
+static inline void trace_xkeymap_keymap(const char * name)
+{
+ if (true) {
+ _nocheck__trace_xkeymap_keymap(name);
+ }
+}
+#endif /* TRACE_UI_GENERATED_TRACERS_H */
diff --git a/qemu2-auto-generated/util/trace.c b/qemu2-auto-generated/util/trace.c
new file mode 100644
index 0000000000..d791eabb73
--- /dev/null
+++ b/qemu2-auto-generated/util/trace.c
@@ -0,0 +1,455 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#include "qemu/osdep.h"
+#include "trace.h"
+
+uint16_t _TRACE_RUN_POLL_HANDLERS_BEGIN_DSTATE;
+uint16_t _TRACE_RUN_POLL_HANDLERS_END_DSTATE;
+uint16_t _TRACE_POLL_SHRINK_DSTATE;
+uint16_t _TRACE_POLL_GROW_DSTATE;
+uint16_t _TRACE_AIO_CO_SCHEDULE_DSTATE;
+uint16_t _TRACE_AIO_CO_SCHEDULE_BH_CB_DSTATE;
+uint16_t _TRACE_THREAD_POOL_SUBMIT_DSTATE;
+uint16_t _TRACE_THREAD_POOL_COMPLETE_DSTATE;
+uint16_t _TRACE_THREAD_POOL_CANCEL_DSTATE;
+uint16_t _TRACE_BUFFER_RESIZE_DSTATE;
+uint16_t _TRACE_BUFFER_MOVE_EMPTY_DSTATE;
+uint16_t _TRACE_BUFFER_MOVE_DSTATE;
+uint16_t _TRACE_BUFFER_FREE_DSTATE;
+uint16_t _TRACE_QEMU_AIO_COROUTINE_ENTER_DSTATE;
+uint16_t _TRACE_QEMU_COROUTINE_YIELD_DSTATE;
+uint16_t _TRACE_QEMU_COROUTINE_TERMINATE_DSTATE;
+uint16_t _TRACE_QEMU_CO_QUEUE_RUN_RESTART_DSTATE;
+uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_DSTATE;
+uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_DSTATE;
+uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_RETURN_DSTATE;
+uint16_t _TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_DSTATE;
+uint16_t _TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_DSTATE;
+uint16_t _TRACE_QEMU_MEMALIGN_DSTATE;
+uint16_t _TRACE_QEMU_ANON_RAM_ALLOC_DSTATE;
+uint16_t _TRACE_QEMU_VFREE_DSTATE;
+uint16_t _TRACE_QEMU_ANON_RAM_FREE_DSTATE;
+uint16_t _TRACE_HBITMAP_ITER_SKIP_WORDS_DSTATE;
+uint16_t _TRACE_HBITMAP_RESET_DSTATE;
+uint16_t _TRACE_HBITMAP_SET_DSTATE;
+uint16_t _TRACE_LOCKCNT_FAST_PATH_ATTEMPT_DSTATE;
+uint16_t _TRACE_LOCKCNT_FAST_PATH_SUCCESS_DSTATE;
+uint16_t _TRACE_LOCKCNT_UNLOCK_ATTEMPT_DSTATE;
+uint16_t _TRACE_LOCKCNT_UNLOCK_SUCCESS_DSTATE;
+uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_DSTATE;
+uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_DSTATE;
+uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_RESUME_DSTATE;
+uint16_t _TRACE_LOCKCNT_FUTEX_WAKE_DSTATE;
+uint16_t _TRACE_QEMU_MUTEX_LOCK_DSTATE;
+uint16_t _TRACE_QEMU_MUTEX_LOCKED_DSTATE;
+uint16_t _TRACE_QEMU_MUTEX_UNLOCK_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_FIND_MAPPING_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_NEW_MAPPING_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_DO_MAPPING_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_DMA_MAP_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_DMA_MAP_INVALID_DSTATE;
+uint16_t _TRACE_QEMU_VFIO_DMA_UNMAP_DSTATE;
+TraceEvent _TRACE_RUN_POLL_HANDLERS_BEGIN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "run_poll_handlers_begin",
+ .sstate = TRACE_RUN_POLL_HANDLERS_BEGIN_ENABLED,
+ .dstate = &_TRACE_RUN_POLL_HANDLERS_BEGIN_DSTATE
+};
+TraceEvent _TRACE_RUN_POLL_HANDLERS_END_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "run_poll_handlers_end",
+ .sstate = TRACE_RUN_POLL_HANDLERS_END_ENABLED,
+ .dstate = &_TRACE_RUN_POLL_HANDLERS_END_DSTATE
+};
+TraceEvent _TRACE_POLL_SHRINK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "poll_shrink",
+ .sstate = TRACE_POLL_SHRINK_ENABLED,
+ .dstate = &_TRACE_POLL_SHRINK_DSTATE
+};
+TraceEvent _TRACE_POLL_GROW_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "poll_grow",
+ .sstate = TRACE_POLL_GROW_ENABLED,
+ .dstate = &_TRACE_POLL_GROW_DSTATE
+};
+TraceEvent _TRACE_AIO_CO_SCHEDULE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aio_co_schedule",
+ .sstate = TRACE_AIO_CO_SCHEDULE_ENABLED,
+ .dstate = &_TRACE_AIO_CO_SCHEDULE_DSTATE
+};
+TraceEvent _TRACE_AIO_CO_SCHEDULE_BH_CB_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "aio_co_schedule_bh_cb",
+ .sstate = TRACE_AIO_CO_SCHEDULE_BH_CB_ENABLED,
+ .dstate = &_TRACE_AIO_CO_SCHEDULE_BH_CB_DSTATE
+};
+TraceEvent _TRACE_THREAD_POOL_SUBMIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "thread_pool_submit",
+ .sstate = TRACE_THREAD_POOL_SUBMIT_ENABLED,
+ .dstate = &_TRACE_THREAD_POOL_SUBMIT_DSTATE
+};
+TraceEvent _TRACE_THREAD_POOL_COMPLETE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "thread_pool_complete",
+ .sstate = TRACE_THREAD_POOL_COMPLETE_ENABLED,
+ .dstate = &_TRACE_THREAD_POOL_COMPLETE_DSTATE
+};
+TraceEvent _TRACE_THREAD_POOL_CANCEL_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "thread_pool_cancel",
+ .sstate = TRACE_THREAD_POOL_CANCEL_ENABLED,
+ .dstate = &_TRACE_THREAD_POOL_CANCEL_DSTATE
+};
+TraceEvent _TRACE_BUFFER_RESIZE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "buffer_resize",
+ .sstate = TRACE_BUFFER_RESIZE_ENABLED,
+ .dstate = &_TRACE_BUFFER_RESIZE_DSTATE
+};
+TraceEvent _TRACE_BUFFER_MOVE_EMPTY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "buffer_move_empty",
+ .sstate = TRACE_BUFFER_MOVE_EMPTY_ENABLED,
+ .dstate = &_TRACE_BUFFER_MOVE_EMPTY_DSTATE
+};
+TraceEvent _TRACE_BUFFER_MOVE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "buffer_move",
+ .sstate = TRACE_BUFFER_MOVE_ENABLED,
+ .dstate = &_TRACE_BUFFER_MOVE_DSTATE
+};
+TraceEvent _TRACE_BUFFER_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "buffer_free",
+ .sstate = TRACE_BUFFER_FREE_ENABLED,
+ .dstate = &_TRACE_BUFFER_FREE_DSTATE
+};
+TraceEvent _TRACE_QEMU_AIO_COROUTINE_ENTER_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_aio_coroutine_enter",
+ .sstate = TRACE_QEMU_AIO_COROUTINE_ENTER_ENABLED,
+ .dstate = &_TRACE_QEMU_AIO_COROUTINE_ENTER_DSTATE
+};
+TraceEvent _TRACE_QEMU_COROUTINE_YIELD_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_coroutine_yield",
+ .sstate = TRACE_QEMU_COROUTINE_YIELD_ENABLED,
+ .dstate = &_TRACE_QEMU_COROUTINE_YIELD_DSTATE
+};
+TraceEvent _TRACE_QEMU_COROUTINE_TERMINATE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_coroutine_terminate",
+ .sstate = TRACE_QEMU_COROUTINE_TERMINATE_ENABLED,
+ .dstate = &_TRACE_QEMU_COROUTINE_TERMINATE_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_QUEUE_RUN_RESTART_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_queue_run_restart",
+ .sstate = TRACE_QEMU_CO_QUEUE_RUN_RESTART_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_QUEUE_RUN_RESTART_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_mutex_lock_uncontended",
+ .sstate = TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_mutex_lock_entry",
+ .sstate = TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_mutex_lock_return",
+ .sstate = TRACE_QEMU_CO_MUTEX_LOCK_RETURN_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_MUTEX_LOCK_RETURN_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_mutex_unlock_entry",
+ .sstate = TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_DSTATE
+};
+TraceEvent _TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_co_mutex_unlock_return",
+ .sstate = TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_ENABLED,
+ .dstate = &_TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_DSTATE
+};
+TraceEvent _TRACE_QEMU_MEMALIGN_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_memalign",
+ .sstate = TRACE_QEMU_MEMALIGN_ENABLED,
+ .dstate = &_TRACE_QEMU_MEMALIGN_DSTATE
+};
+TraceEvent _TRACE_QEMU_ANON_RAM_ALLOC_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_anon_ram_alloc",
+ .sstate = TRACE_QEMU_ANON_RAM_ALLOC_ENABLED,
+ .dstate = &_TRACE_QEMU_ANON_RAM_ALLOC_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfree",
+ .sstate = TRACE_QEMU_VFREE_ENABLED,
+ .dstate = &_TRACE_QEMU_VFREE_DSTATE
+};
+TraceEvent _TRACE_QEMU_ANON_RAM_FREE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_anon_ram_free",
+ .sstate = TRACE_QEMU_ANON_RAM_FREE_ENABLED,
+ .dstate = &_TRACE_QEMU_ANON_RAM_FREE_DSTATE
+};
+TraceEvent _TRACE_HBITMAP_ITER_SKIP_WORDS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hbitmap_iter_skip_words",
+ .sstate = TRACE_HBITMAP_ITER_SKIP_WORDS_ENABLED,
+ .dstate = &_TRACE_HBITMAP_ITER_SKIP_WORDS_DSTATE
+};
+TraceEvent _TRACE_HBITMAP_RESET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hbitmap_reset",
+ .sstate = TRACE_HBITMAP_RESET_ENABLED,
+ .dstate = &_TRACE_HBITMAP_RESET_DSTATE
+};
+TraceEvent _TRACE_HBITMAP_SET_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "hbitmap_set",
+ .sstate = TRACE_HBITMAP_SET_ENABLED,
+ .dstate = &_TRACE_HBITMAP_SET_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FAST_PATH_ATTEMPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_fast_path_attempt",
+ .sstate = TRACE_LOCKCNT_FAST_PATH_ATTEMPT_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FAST_PATH_ATTEMPT_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FAST_PATH_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_fast_path_success",
+ .sstate = TRACE_LOCKCNT_FAST_PATH_SUCCESS_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FAST_PATH_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_UNLOCK_ATTEMPT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_unlock_attempt",
+ .sstate = TRACE_LOCKCNT_UNLOCK_ATTEMPT_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_UNLOCK_ATTEMPT_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_UNLOCK_SUCCESS_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_unlock_success",
+ .sstate = TRACE_LOCKCNT_UNLOCK_SUCCESS_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_UNLOCK_SUCCESS_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_futex_wait_prepare",
+ .sstate = TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_futex_wait",
+ .sstate = TRACE_LOCKCNT_FUTEX_WAIT_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FUTEX_WAIT_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_RESUME_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_futex_wait_resume",
+ .sstate = TRACE_LOCKCNT_FUTEX_WAIT_RESUME_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FUTEX_WAIT_RESUME_DSTATE
+};
+TraceEvent _TRACE_LOCKCNT_FUTEX_WAKE_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "lockcnt_futex_wake",
+ .sstate = TRACE_LOCKCNT_FUTEX_WAKE_ENABLED,
+ .dstate = &_TRACE_LOCKCNT_FUTEX_WAKE_DSTATE
+};
+TraceEvent _TRACE_QEMU_MUTEX_LOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_mutex_lock",
+ .sstate = TRACE_QEMU_MUTEX_LOCK_ENABLED,
+ .dstate = &_TRACE_QEMU_MUTEX_LOCK_DSTATE
+};
+TraceEvent _TRACE_QEMU_MUTEX_LOCKED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_mutex_locked",
+ .sstate = TRACE_QEMU_MUTEX_LOCKED_ENABLED,
+ .dstate = &_TRACE_QEMU_MUTEX_LOCKED_DSTATE
+};
+TraceEvent _TRACE_QEMU_MUTEX_UNLOCK_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_mutex_unlock",
+ .sstate = TRACE_QEMU_MUTEX_UNLOCK_ENABLED,
+ .dstate = &_TRACE_QEMU_MUTEX_UNLOCK_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_dma_reset_temporary",
+ .sstate = TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_ram_block_added",
+ .sstate = TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_ram_block_removed",
+ .sstate = TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_FIND_MAPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_find_mapping",
+ .sstate = TRACE_QEMU_VFIO_FIND_MAPPING_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_FIND_MAPPING_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_NEW_MAPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_new_mapping",
+ .sstate = TRACE_QEMU_VFIO_NEW_MAPPING_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_NEW_MAPPING_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_DO_MAPPING_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_do_mapping",
+ .sstate = TRACE_QEMU_VFIO_DO_MAPPING_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_DO_MAPPING_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_DMA_MAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_dma_map",
+ .sstate = TRACE_QEMU_VFIO_DMA_MAP_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_DMA_MAP_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_DMA_MAP_INVALID_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_dma_map_invalid",
+ .sstate = TRACE_QEMU_VFIO_DMA_MAP_INVALID_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_DMA_MAP_INVALID_DSTATE
+};
+TraceEvent _TRACE_QEMU_VFIO_DMA_UNMAP_EVENT = {
+ .id = 0,
+ .vcpu_id = TRACE_VCPU_EVENT_NONE,
+ .name = "qemu_vfio_dma_unmap",
+ .sstate = TRACE_QEMU_VFIO_DMA_UNMAP_ENABLED,
+ .dstate = &_TRACE_QEMU_VFIO_DMA_UNMAP_DSTATE
+};
+TraceEvent *util_trace_events[] = {
+ &_TRACE_RUN_POLL_HANDLERS_BEGIN_EVENT,
+ &_TRACE_RUN_POLL_HANDLERS_END_EVENT,
+ &_TRACE_POLL_SHRINK_EVENT,
+ &_TRACE_POLL_GROW_EVENT,
+ &_TRACE_AIO_CO_SCHEDULE_EVENT,
+ &_TRACE_AIO_CO_SCHEDULE_BH_CB_EVENT,
+ &_TRACE_THREAD_POOL_SUBMIT_EVENT,
+ &_TRACE_THREAD_POOL_COMPLETE_EVENT,
+ &_TRACE_THREAD_POOL_CANCEL_EVENT,
+ &_TRACE_BUFFER_RESIZE_EVENT,
+ &_TRACE_BUFFER_MOVE_EMPTY_EVENT,
+ &_TRACE_BUFFER_MOVE_EVENT,
+ &_TRACE_BUFFER_FREE_EVENT,
+ &_TRACE_QEMU_AIO_COROUTINE_ENTER_EVENT,
+ &_TRACE_QEMU_COROUTINE_YIELD_EVENT,
+ &_TRACE_QEMU_COROUTINE_TERMINATE_EVENT,
+ &_TRACE_QEMU_CO_QUEUE_RUN_RESTART_EVENT,
+ &_TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_EVENT,
+ &_TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_EVENT,
+ &_TRACE_QEMU_CO_MUTEX_LOCK_RETURN_EVENT,
+ &_TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_EVENT,
+ &_TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_EVENT,
+ &_TRACE_QEMU_MEMALIGN_EVENT,
+ &_TRACE_QEMU_ANON_RAM_ALLOC_EVENT,
+ &_TRACE_QEMU_VFREE_EVENT,
+ &_TRACE_QEMU_ANON_RAM_FREE_EVENT,
+ &_TRACE_HBITMAP_ITER_SKIP_WORDS_EVENT,
+ &_TRACE_HBITMAP_RESET_EVENT,
+ &_TRACE_HBITMAP_SET_EVENT,
+ &_TRACE_LOCKCNT_FAST_PATH_ATTEMPT_EVENT,
+ &_TRACE_LOCKCNT_FAST_PATH_SUCCESS_EVENT,
+ &_TRACE_LOCKCNT_UNLOCK_ATTEMPT_EVENT,
+ &_TRACE_LOCKCNT_UNLOCK_SUCCESS_EVENT,
+ &_TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_EVENT,
+ &_TRACE_LOCKCNT_FUTEX_WAIT_EVENT,
+ &_TRACE_LOCKCNT_FUTEX_WAIT_RESUME_EVENT,
+ &_TRACE_LOCKCNT_FUTEX_WAKE_EVENT,
+ &_TRACE_QEMU_MUTEX_LOCK_EVENT,
+ &_TRACE_QEMU_MUTEX_LOCKED_EVENT,
+ &_TRACE_QEMU_MUTEX_UNLOCK_EVENT,
+ &_TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_EVENT,
+ &_TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_EVENT,
+ &_TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_EVENT,
+ &_TRACE_QEMU_VFIO_FIND_MAPPING_EVENT,
+ &_TRACE_QEMU_VFIO_NEW_MAPPING_EVENT,
+ &_TRACE_QEMU_VFIO_DO_MAPPING_EVENT,
+ &_TRACE_QEMU_VFIO_DMA_MAP_EVENT,
+ &_TRACE_QEMU_VFIO_DMA_MAP_INVALID_EVENT,
+ &_TRACE_QEMU_VFIO_DMA_UNMAP_EVENT,
+ NULL,
+};
+
+static void trace_util_register_events(void)
+{
+ trace_event_register_group(util_trace_events);
+}
+trace_init(trace_util_register_events)
diff --git a/qemu2-auto-generated/util/trace.h b/qemu2-auto-generated/util/trace.h
new file mode 100644
index 0000000000..2baf122c74
--- /dev/null
+++ b/qemu2-auto-generated/util/trace.h
@@ -0,0 +1,842 @@
+/* This file is autogenerated by tracetool, do not edit. */
+
+#ifndef TRACE_UTIL_GENERATED_TRACERS_H
+#define TRACE_UTIL_GENERATED_TRACERS_H
+
+#include "qemu-common.h"
+#include "trace/control.h"
+
+extern TraceEvent _TRACE_RUN_POLL_HANDLERS_BEGIN_EVENT;
+extern TraceEvent _TRACE_RUN_POLL_HANDLERS_END_EVENT;
+extern TraceEvent _TRACE_POLL_SHRINK_EVENT;
+extern TraceEvent _TRACE_POLL_GROW_EVENT;
+extern TraceEvent _TRACE_AIO_CO_SCHEDULE_EVENT;
+extern TraceEvent _TRACE_AIO_CO_SCHEDULE_BH_CB_EVENT;
+extern TraceEvent _TRACE_THREAD_POOL_SUBMIT_EVENT;
+extern TraceEvent _TRACE_THREAD_POOL_COMPLETE_EVENT;
+extern TraceEvent _TRACE_THREAD_POOL_CANCEL_EVENT;
+extern TraceEvent _TRACE_BUFFER_RESIZE_EVENT;
+extern TraceEvent _TRACE_BUFFER_MOVE_EMPTY_EVENT;
+extern TraceEvent _TRACE_BUFFER_MOVE_EVENT;
+extern TraceEvent _TRACE_BUFFER_FREE_EVENT;
+extern TraceEvent _TRACE_QEMU_AIO_COROUTINE_ENTER_EVENT;
+extern TraceEvent _TRACE_QEMU_COROUTINE_YIELD_EVENT;
+extern TraceEvent _TRACE_QEMU_COROUTINE_TERMINATE_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_QUEUE_RUN_RESTART_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_MUTEX_LOCK_RETURN_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_EVENT;
+extern TraceEvent _TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_EVENT;
+extern TraceEvent _TRACE_QEMU_MEMALIGN_EVENT;
+extern TraceEvent _TRACE_QEMU_ANON_RAM_ALLOC_EVENT;
+extern TraceEvent _TRACE_QEMU_VFREE_EVENT;
+extern TraceEvent _TRACE_QEMU_ANON_RAM_FREE_EVENT;
+extern TraceEvent _TRACE_HBITMAP_ITER_SKIP_WORDS_EVENT;
+extern TraceEvent _TRACE_HBITMAP_RESET_EVENT;
+extern TraceEvent _TRACE_HBITMAP_SET_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FAST_PATH_ATTEMPT_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FAST_PATH_SUCCESS_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_UNLOCK_ATTEMPT_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_UNLOCK_SUCCESS_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FUTEX_WAIT_RESUME_EVENT;
+extern TraceEvent _TRACE_LOCKCNT_FUTEX_WAKE_EVENT;
+extern TraceEvent _TRACE_QEMU_MUTEX_LOCK_EVENT;
+extern TraceEvent _TRACE_QEMU_MUTEX_LOCKED_EVENT;
+extern TraceEvent _TRACE_QEMU_MUTEX_UNLOCK_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_FIND_MAPPING_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_NEW_MAPPING_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_DO_MAPPING_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_DMA_MAP_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_DMA_MAP_INVALID_EVENT;
+extern TraceEvent _TRACE_QEMU_VFIO_DMA_UNMAP_EVENT;
+extern uint16_t _TRACE_RUN_POLL_HANDLERS_BEGIN_DSTATE;
+extern uint16_t _TRACE_RUN_POLL_HANDLERS_END_DSTATE;
+extern uint16_t _TRACE_POLL_SHRINK_DSTATE;
+extern uint16_t _TRACE_POLL_GROW_DSTATE;
+extern uint16_t _TRACE_AIO_CO_SCHEDULE_DSTATE;
+extern uint16_t _TRACE_AIO_CO_SCHEDULE_BH_CB_DSTATE;
+extern uint16_t _TRACE_THREAD_POOL_SUBMIT_DSTATE;
+extern uint16_t _TRACE_THREAD_POOL_COMPLETE_DSTATE;
+extern uint16_t _TRACE_THREAD_POOL_CANCEL_DSTATE;
+extern uint16_t _TRACE_BUFFER_RESIZE_DSTATE;
+extern uint16_t _TRACE_BUFFER_MOVE_EMPTY_DSTATE;
+extern uint16_t _TRACE_BUFFER_MOVE_DSTATE;
+extern uint16_t _TRACE_BUFFER_FREE_DSTATE;
+extern uint16_t _TRACE_QEMU_AIO_COROUTINE_ENTER_DSTATE;
+extern uint16_t _TRACE_QEMU_COROUTINE_YIELD_DSTATE;
+extern uint16_t _TRACE_QEMU_COROUTINE_TERMINATE_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_QUEUE_RUN_RESTART_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_MUTEX_LOCK_RETURN_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_DSTATE;
+extern uint16_t _TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_DSTATE;
+extern uint16_t _TRACE_QEMU_MEMALIGN_DSTATE;
+extern uint16_t _TRACE_QEMU_ANON_RAM_ALLOC_DSTATE;
+extern uint16_t _TRACE_QEMU_VFREE_DSTATE;
+extern uint16_t _TRACE_QEMU_ANON_RAM_FREE_DSTATE;
+extern uint16_t _TRACE_HBITMAP_ITER_SKIP_WORDS_DSTATE;
+extern uint16_t _TRACE_HBITMAP_RESET_DSTATE;
+extern uint16_t _TRACE_HBITMAP_SET_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FAST_PATH_ATTEMPT_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FAST_PATH_SUCCESS_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_UNLOCK_ATTEMPT_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_UNLOCK_SUCCESS_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FUTEX_WAIT_RESUME_DSTATE;
+extern uint16_t _TRACE_LOCKCNT_FUTEX_WAKE_DSTATE;
+extern uint16_t _TRACE_QEMU_MUTEX_LOCK_DSTATE;
+extern uint16_t _TRACE_QEMU_MUTEX_LOCKED_DSTATE;
+extern uint16_t _TRACE_QEMU_MUTEX_UNLOCK_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_FIND_MAPPING_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_NEW_MAPPING_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_DO_MAPPING_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_DMA_MAP_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_DMA_MAP_INVALID_DSTATE;
+extern uint16_t _TRACE_QEMU_VFIO_DMA_UNMAP_DSTATE;
+#define TRACE_RUN_POLL_HANDLERS_BEGIN_ENABLED 1
+#define TRACE_RUN_POLL_HANDLERS_END_ENABLED 1
+#define TRACE_POLL_SHRINK_ENABLED 1
+#define TRACE_POLL_GROW_ENABLED 1
+#define TRACE_AIO_CO_SCHEDULE_ENABLED 1
+#define TRACE_AIO_CO_SCHEDULE_BH_CB_ENABLED 1
+#define TRACE_THREAD_POOL_SUBMIT_ENABLED 1
+#define TRACE_THREAD_POOL_COMPLETE_ENABLED 1
+#define TRACE_THREAD_POOL_CANCEL_ENABLED 1
+#define TRACE_BUFFER_RESIZE_ENABLED 1
+#define TRACE_BUFFER_MOVE_EMPTY_ENABLED 1
+#define TRACE_BUFFER_MOVE_ENABLED 1
+#define TRACE_BUFFER_FREE_ENABLED 1
+#define TRACE_QEMU_AIO_COROUTINE_ENTER_ENABLED 1
+#define TRACE_QEMU_COROUTINE_YIELD_ENABLED 1
+#define TRACE_QEMU_COROUTINE_TERMINATE_ENABLED 1
+#define TRACE_QEMU_CO_QUEUE_RUN_RESTART_ENABLED 1
+#define TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_ENABLED 1
+#define TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_ENABLED 1
+#define TRACE_QEMU_CO_MUTEX_LOCK_RETURN_ENABLED 1
+#define TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_ENABLED 1
+#define TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_ENABLED 1
+#define TRACE_QEMU_MEMALIGN_ENABLED 1
+#define TRACE_QEMU_ANON_RAM_ALLOC_ENABLED 1
+#define TRACE_QEMU_VFREE_ENABLED 1
+#define TRACE_QEMU_ANON_RAM_FREE_ENABLED 1
+#define TRACE_HBITMAP_ITER_SKIP_WORDS_ENABLED 1
+#define TRACE_HBITMAP_RESET_ENABLED 1
+#define TRACE_HBITMAP_SET_ENABLED 1
+#define TRACE_LOCKCNT_FAST_PATH_ATTEMPT_ENABLED 1
+#define TRACE_LOCKCNT_FAST_PATH_SUCCESS_ENABLED 1
+#define TRACE_LOCKCNT_UNLOCK_ATTEMPT_ENABLED 1
+#define TRACE_LOCKCNT_UNLOCK_SUCCESS_ENABLED 1
+#define TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_ENABLED 1
+#define TRACE_LOCKCNT_FUTEX_WAIT_ENABLED 1
+#define TRACE_LOCKCNT_FUTEX_WAIT_RESUME_ENABLED 1
+#define TRACE_LOCKCNT_FUTEX_WAKE_ENABLED 1
+#define TRACE_QEMU_MUTEX_LOCK_ENABLED 1
+#define TRACE_QEMU_MUTEX_LOCKED_ENABLED 1
+#define TRACE_QEMU_MUTEX_UNLOCK_ENABLED 1
+#define TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_ENABLED 1
+#define TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_ENABLED 1
+#define TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_ENABLED 1
+#define TRACE_QEMU_VFIO_FIND_MAPPING_ENABLED 1
+#define TRACE_QEMU_VFIO_NEW_MAPPING_ENABLED 1
+#define TRACE_QEMU_VFIO_DO_MAPPING_ENABLED 1
+#define TRACE_QEMU_VFIO_DMA_MAP_ENABLED 1
+#define TRACE_QEMU_VFIO_DMA_MAP_INVALID_ENABLED 1
+#define TRACE_QEMU_VFIO_DMA_UNMAP_ENABLED 1
+
+#define TRACE_RUN_POLL_HANDLERS_BEGIN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_run_poll_handlers_begin(void * ctx, int64_t max_ns)
+{
+}
+
+static inline void trace_run_poll_handlers_begin(void * ctx, int64_t max_ns)
+{
+ if (true) {
+ _nocheck__trace_run_poll_handlers_begin(ctx, max_ns);
+ }
+}
+
+#define TRACE_RUN_POLL_HANDLERS_END_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_run_poll_handlers_end(void * ctx, bool progress)
+{
+}
+
+static inline void trace_run_poll_handlers_end(void * ctx, bool progress)
+{
+ if (true) {
+ _nocheck__trace_run_poll_handlers_end(ctx, progress);
+ }
+}
+
+#define TRACE_POLL_SHRINK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_poll_shrink(void * ctx, int64_t old, int64_t new)
+{
+}
+
+static inline void trace_poll_shrink(void * ctx, int64_t old, int64_t new)
+{
+ if (true) {
+ _nocheck__trace_poll_shrink(ctx, old, new);
+ }
+}
+
+#define TRACE_POLL_GROW_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_poll_grow(void * ctx, int64_t old, int64_t new)
+{
+}
+
+static inline void trace_poll_grow(void * ctx, int64_t old, int64_t new)
+{
+ if (true) {
+ _nocheck__trace_poll_grow(ctx, old, new);
+ }
+}
+
+#define TRACE_AIO_CO_SCHEDULE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aio_co_schedule(void * ctx, void * co)
+{
+}
+
+static inline void trace_aio_co_schedule(void * ctx, void * co)
+{
+ if (true) {
+ _nocheck__trace_aio_co_schedule(ctx, co);
+ }
+}
+
+#define TRACE_AIO_CO_SCHEDULE_BH_CB_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_aio_co_schedule_bh_cb(void * ctx, void * co)
+{
+}
+
+static inline void trace_aio_co_schedule_bh_cb(void * ctx, void * co)
+{
+ if (true) {
+ _nocheck__trace_aio_co_schedule_bh_cb(ctx, co);
+ }
+}
+
+#define TRACE_THREAD_POOL_SUBMIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_thread_pool_submit(void * pool, void * req, void * opaque)
+{
+}
+
+static inline void trace_thread_pool_submit(void * pool, void * req, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_thread_pool_submit(pool, req, opaque);
+ }
+}
+
+#define TRACE_THREAD_POOL_COMPLETE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_thread_pool_complete(void * pool, void * req, void * opaque, int ret)
+{
+}
+
+static inline void trace_thread_pool_complete(void * pool, void * req, void * opaque, int ret)
+{
+ if (true) {
+ _nocheck__trace_thread_pool_complete(pool, req, opaque, ret);
+ }
+}
+
+#define TRACE_THREAD_POOL_CANCEL_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_thread_pool_cancel(void * req, void * opaque)
+{
+}
+
+static inline void trace_thread_pool_cancel(void * req, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_thread_pool_cancel(req, opaque);
+ }
+}
+
+#define TRACE_BUFFER_RESIZE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_buffer_resize(const char * buf, size_t olen, size_t len)
+{
+}
+
+static inline void trace_buffer_resize(const char * buf, size_t olen, size_t len)
+{
+ if (true) {
+ _nocheck__trace_buffer_resize(buf, olen, len);
+ }
+}
+
+#define TRACE_BUFFER_MOVE_EMPTY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_buffer_move_empty(const char * buf, size_t len, const char * from)
+{
+}
+
+static inline void trace_buffer_move_empty(const char * buf, size_t len, const char * from)
+{
+ if (true) {
+ _nocheck__trace_buffer_move_empty(buf, len, from);
+ }
+}
+
+#define TRACE_BUFFER_MOVE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_buffer_move(const char * buf, size_t len, const char * from)
+{
+}
+
+static inline void trace_buffer_move(const char * buf, size_t len, const char * from)
+{
+ if (true) {
+ _nocheck__trace_buffer_move(buf, len, from);
+ }
+}
+
+#define TRACE_BUFFER_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_buffer_free(const char * buf, size_t len)
+{
+}
+
+static inline void trace_buffer_free(const char * buf, size_t len)
+{
+ if (true) {
+ _nocheck__trace_buffer_free(buf, len);
+ }
+}
+
+#define TRACE_QEMU_AIO_COROUTINE_ENTER_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_aio_coroutine_enter(void * ctx, void * from, void * to, void * opaque)
+{
+}
+
+static inline void trace_qemu_aio_coroutine_enter(void * ctx, void * from, void * to, void * opaque)
+{
+ if (true) {
+ _nocheck__trace_qemu_aio_coroutine_enter(ctx, from, to, opaque);
+ }
+}
+
+#define TRACE_QEMU_COROUTINE_YIELD_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_coroutine_yield(void * from, void * to)
+{
+}
+
+static inline void trace_qemu_coroutine_yield(void * from, void * to)
+{
+ if (true) {
+ _nocheck__trace_qemu_coroutine_yield(from, to);
+ }
+}
+
+#define TRACE_QEMU_COROUTINE_TERMINATE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_coroutine_terminate(void * co)
+{
+}
+
+static inline void trace_qemu_coroutine_terminate(void * co)
+{
+ if (true) {
+ _nocheck__trace_qemu_coroutine_terminate(co);
+ }
+}
+
+#define TRACE_QEMU_CO_QUEUE_RUN_RESTART_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_queue_run_restart(void * co)
+{
+}
+
+static inline void trace_qemu_co_queue_run_restart(void * co)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_queue_run_restart(co);
+ }
+}
+
+#define TRACE_QEMU_CO_MUTEX_LOCK_UNCONTENDED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_mutex_lock_uncontended(void * mutex, void * self)
+{
+}
+
+static inline void trace_qemu_co_mutex_lock_uncontended(void * mutex, void * self)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_mutex_lock_uncontended(mutex, self);
+ }
+}
+
+#define TRACE_QEMU_CO_MUTEX_LOCK_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_mutex_lock_entry(void * mutex, void * self)
+{
+}
+
+static inline void trace_qemu_co_mutex_lock_entry(void * mutex, void * self)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_mutex_lock_entry(mutex, self);
+ }
+}
+
+#define TRACE_QEMU_CO_MUTEX_LOCK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_mutex_lock_return(void * mutex, void * self)
+{
+}
+
+static inline void trace_qemu_co_mutex_lock_return(void * mutex, void * self)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_mutex_lock_return(mutex, self);
+ }
+}
+
+#define TRACE_QEMU_CO_MUTEX_UNLOCK_ENTRY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_mutex_unlock_entry(void * mutex, void * self)
+{
+}
+
+static inline void trace_qemu_co_mutex_unlock_entry(void * mutex, void * self)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_mutex_unlock_entry(mutex, self);
+ }
+}
+
+#define TRACE_QEMU_CO_MUTEX_UNLOCK_RETURN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_co_mutex_unlock_return(void * mutex, void * self)
+{
+}
+
+static inline void trace_qemu_co_mutex_unlock_return(void * mutex, void * self)
+{
+ if (true) {
+ _nocheck__trace_qemu_co_mutex_unlock_return(mutex, self);
+ }
+}
+
+#define TRACE_QEMU_MEMALIGN_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_memalign(size_t alignment, size_t size, void * ptr)
+{
+}
+
+static inline void trace_qemu_memalign(size_t alignment, size_t size, void * ptr)
+{
+ if (true) {
+ _nocheck__trace_qemu_memalign(alignment, size, ptr);
+ }
+}
+
+#define TRACE_QEMU_ANON_RAM_ALLOC_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_anon_ram_alloc(size_t size, void * ptr)
+{
+}
+
+static inline void trace_qemu_anon_ram_alloc(size_t size, void * ptr)
+{
+ if (true) {
+ _nocheck__trace_qemu_anon_ram_alloc(size, ptr);
+ }
+}
+
+#define TRACE_QEMU_VFREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfree(void * ptr)
+{
+}
+
+static inline void trace_qemu_vfree(void * ptr)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfree(ptr);
+ }
+}
+
+#define TRACE_QEMU_ANON_RAM_FREE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_anon_ram_free(void * ptr, size_t size)
+{
+}
+
+static inline void trace_qemu_anon_ram_free(void * ptr, size_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_anon_ram_free(ptr, size);
+ }
+}
+
+#define TRACE_HBITMAP_ITER_SKIP_WORDS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hbitmap_iter_skip_words(const void * hb, void * hbi, uint64_t pos, unsigned long cur)
+{
+}
+
+static inline void trace_hbitmap_iter_skip_words(const void * hb, void * hbi, uint64_t pos, unsigned long cur)
+{
+ if (true) {
+ _nocheck__trace_hbitmap_iter_skip_words(hb, hbi, pos, cur);
+ }
+}
+
+#define TRACE_HBITMAP_RESET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hbitmap_reset(void * hb, uint64_t start, uint64_t count, uint64_t sbit, uint64_t ebit)
+{
+}
+
+static inline void trace_hbitmap_reset(void * hb, uint64_t start, uint64_t count, uint64_t sbit, uint64_t ebit)
+{
+ if (true) {
+ _nocheck__trace_hbitmap_reset(hb, start, count, sbit, ebit);
+ }
+}
+
+#define TRACE_HBITMAP_SET_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_hbitmap_set(void * hb, uint64_t start, uint64_t count, uint64_t sbit, uint64_t ebit)
+{
+}
+
+static inline void trace_hbitmap_set(void * hb, uint64_t start, uint64_t count, uint64_t sbit, uint64_t ebit)
+{
+ if (true) {
+ _nocheck__trace_hbitmap_set(hb, start, count, sbit, ebit);
+ }
+}
+
+#define TRACE_LOCKCNT_FAST_PATH_ATTEMPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_fast_path_attempt(const void * lockcnt, int expected, int new)
+{
+}
+
+static inline void trace_lockcnt_fast_path_attempt(const void * lockcnt, int expected, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_fast_path_attempt(lockcnt, expected, new);
+ }
+}
+
+#define TRACE_LOCKCNT_FAST_PATH_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_fast_path_success(const void * lockcnt, int expected, int new)
+{
+}
+
+static inline void trace_lockcnt_fast_path_success(const void * lockcnt, int expected, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_fast_path_success(lockcnt, expected, new);
+ }
+}
+
+#define TRACE_LOCKCNT_UNLOCK_ATTEMPT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_unlock_attempt(const void * lockcnt, int expected, int new)
+{
+}
+
+static inline void trace_lockcnt_unlock_attempt(const void * lockcnt, int expected, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_unlock_attempt(lockcnt, expected, new);
+ }
+}
+
+#define TRACE_LOCKCNT_UNLOCK_SUCCESS_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_unlock_success(const void * lockcnt, int expected, int new)
+{
+}
+
+static inline void trace_lockcnt_unlock_success(const void * lockcnt, int expected, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_unlock_success(lockcnt, expected, new);
+ }
+}
+
+#define TRACE_LOCKCNT_FUTEX_WAIT_PREPARE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_futex_wait_prepare(const void * lockcnt, int expected, int new)
+{
+}
+
+static inline void trace_lockcnt_futex_wait_prepare(const void * lockcnt, int expected, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_futex_wait_prepare(lockcnt, expected, new);
+ }
+}
+
+#define TRACE_LOCKCNT_FUTEX_WAIT_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_futex_wait(const void * lockcnt, int val)
+{
+}
+
+static inline void trace_lockcnt_futex_wait(const void * lockcnt, int val)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_futex_wait(lockcnt, val);
+ }
+}
+
+#define TRACE_LOCKCNT_FUTEX_WAIT_RESUME_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_futex_wait_resume(const void * lockcnt, int new)
+{
+}
+
+static inline void trace_lockcnt_futex_wait_resume(const void * lockcnt, int new)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_futex_wait_resume(lockcnt, new);
+ }
+}
+
+#define TRACE_LOCKCNT_FUTEX_WAKE_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_lockcnt_futex_wake(const void * lockcnt)
+{
+}
+
+static inline void trace_lockcnt_futex_wake(const void * lockcnt)
+{
+ if (true) {
+ _nocheck__trace_lockcnt_futex_wake(lockcnt);
+ }
+}
+
+#define TRACE_QEMU_MUTEX_LOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_mutex_lock(void * mutex, const char * file, const int line)
+{
+}
+
+static inline void trace_qemu_mutex_lock(void * mutex, const char * file, const int line)
+{
+ if (true) {
+ _nocheck__trace_qemu_mutex_lock(mutex, file, line);
+ }
+}
+
+#define TRACE_QEMU_MUTEX_LOCKED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_mutex_locked(void * mutex, const char * file, const int line)
+{
+}
+
+static inline void trace_qemu_mutex_locked(void * mutex, const char * file, const int line)
+{
+ if (true) {
+ _nocheck__trace_qemu_mutex_locked(mutex, file, line);
+ }
+}
+
+#define TRACE_QEMU_MUTEX_UNLOCK_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_mutex_unlock(void * mutex, const char * file, const int line)
+{
+}
+
+static inline void trace_qemu_mutex_unlock(void * mutex, const char * file, const int line)
+{
+ if (true) {
+ _nocheck__trace_qemu_mutex_unlock(mutex, file, line);
+ }
+}
+
+#define TRACE_QEMU_VFIO_DMA_RESET_TEMPORARY_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_dma_reset_temporary(void * s)
+{
+}
+
+static inline void trace_qemu_vfio_dma_reset_temporary(void * s)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_dma_reset_temporary(s);
+ }
+}
+
+#define TRACE_QEMU_VFIO_RAM_BLOCK_ADDED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_ram_block_added(void * s, void * p, size_t size)
+{
+}
+
+static inline void trace_qemu_vfio_ram_block_added(void * s, void * p, size_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_ram_block_added(s, p, size);
+ }
+}
+
+#define TRACE_QEMU_VFIO_RAM_BLOCK_REMOVED_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_ram_block_removed(void * s, void * p, size_t size)
+{
+}
+
+static inline void trace_qemu_vfio_ram_block_removed(void * s, void * p, size_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_ram_block_removed(s, p, size);
+ }
+}
+
+#define TRACE_QEMU_VFIO_FIND_MAPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_find_mapping(void * s, void * p)
+{
+}
+
+static inline void trace_qemu_vfio_find_mapping(void * s, void * p)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_find_mapping(s, p);
+ }
+}
+
+#define TRACE_QEMU_VFIO_NEW_MAPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_new_mapping(void * s, void * host, size_t size, int index, uint64_t iova)
+{
+}
+
+static inline void trace_qemu_vfio_new_mapping(void * s, void * host, size_t size, int index, uint64_t iova)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_new_mapping(s, host, size, index, iova);
+ }
+}
+
+#define TRACE_QEMU_VFIO_DO_MAPPING_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_do_mapping(void * s, void * host, size_t size, uint64_t iova)
+{
+}
+
+static inline void trace_qemu_vfio_do_mapping(void * s, void * host, size_t size, uint64_t iova)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_do_mapping(s, host, size, iova);
+ }
+}
+
+#define TRACE_QEMU_VFIO_DMA_MAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_dma_map(void * s, void * host, size_t size, bool temporary, uint64_t * iova)
+{
+}
+
+static inline void trace_qemu_vfio_dma_map(void * s, void * host, size_t size, bool temporary, uint64_t * iova)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_dma_map(s, host, size, temporary, iova);
+ }
+}
+
+#define TRACE_QEMU_VFIO_DMA_MAP_INVALID_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_dma_map_invalid(void * s, void * mapping_host, size_t mapping_size, void * host, size_t size)
+{
+}
+
+static inline void trace_qemu_vfio_dma_map_invalid(void * s, void * mapping_host, size_t mapping_size, void * host, size_t size)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_dma_map_invalid(s, mapping_host, mapping_size, host, size);
+ }
+}
+
+#define TRACE_QEMU_VFIO_DMA_UNMAP_BACKEND_DSTATE() ( \
+ false)
+
+static inline void _nocheck__trace_qemu_vfio_dma_unmap(void * s, void * host)
+{
+}
+
+static inline void trace_qemu_vfio_dma_unmap(void * s, void * host)
+{
+ if (true) {
+ _nocheck__trace_qemu_vfio_dma_unmap(s, host);
+ }
+}
+#endif /* TRACE_UTIL_GENERATED_TRACERS_H */
diff --git a/source.properties b/source.properties
index a3066bc7d4..68c8d25a32 100644
--- a/source.properties
+++ b/source.properties
@@ -1,5 +1,5 @@
Pkg.UserSrc=false
-Pkg.Revision=28.0.5
+Pkg.Revision=28.0.10
Pkg.Path=emulator
Pkg.Desc=Android Emulator
Pkg.Dependencies=tools#25.3
diff --git a/stubs/win32-stubs.c b/stubs/win32-stubs.c
index e7a33a3f7c..20ba7a4aeb 100644
--- a/stubs/win32-stubs.c
+++ b/stubs/win32-stubs.c
@@ -29,3 +29,11 @@ DWORD win32GetModuleFileName(
{
return GetModuleFileName(hModule, lpFilename, nSize);
}
+
+int win32_stat(const char* filepath, struct stat* st) {
+ return _stati64(filepath, st);
+}
+
+int win32_lstat(const char* filepath, struct stat* st) {
+ return win32_stat(filepath, st);
+}
diff --git a/target/i386/hax-windows.c b/target/i386/hax-windows.c
index e617a34179..5bf46b0f1c 100644
--- a/target/i386/hax-windows.c
+++ b/target/i386/hax-windows.c
@@ -28,9 +28,9 @@ static int hax_open_device(hax_fd *fd)
return -2;
}
- hDevice = CreateFile("\\\\.\\HAX",
- GENERIC_READ | GENERIC_WRITE,
- 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ hDevice = win32CreateFile("\\\\.\\HAX",
+ GENERIC_READ | GENERIC_WRITE,
+ 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDevice == INVALID_HANDLE_VALUE) {
fprintf(stderr, "Failed to open the HAX device!\n");
@@ -300,9 +300,9 @@ hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id)
return INVALID_HANDLE_VALUE;
}
- hDeviceVM = CreateFile(vm_name,
- GENERIC_READ | GENERIC_WRITE,
- 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
+ hDeviceVM = win32CreateFile(vm_name,
+ GENERIC_READ | GENERIC_WRITE,
+ 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDeviceVM == INVALID_HANDLE_VALUE) {
fprintf(stderr, "Open the vm device error:%s, ec:%lu\n",
vm_name, GetLastError());
@@ -358,10 +358,10 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)
return INVALID_HANDLE_VALUE;
}
- hDeviceVCPU = CreateFile(devfs_path,
- GENERIC_READ | GENERIC_WRITE,
- 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
- NULL);
+ hDeviceVCPU = win32CreateFile(devfs_path,
+ GENERIC_READ | GENERIC_WRITE,
+ 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
+ NULL);
if (hDeviceVCPU == INVALID_HANDLE_VALUE) {
fprintf(stderr, "Failed to open the vcpu devfs\n");
diff --git a/target/i386/hvf-all.c b/target/i386/hvf-all.c
index a1fe516efb..a07ddaa78a 100644
--- a/target/i386/hvf-all.c
+++ b/target/i386/hvf-all.c
@@ -895,7 +895,7 @@ again:
int r = hv_vcpu_run(cpu->hvf_fd);
if (r) {
- qemu_abort("%s: %ld: run failed with %x\n", rip, r);
+ qemu_abort("%s: %ld: run failed with %x\n", __func__, rip, r);
}
/* handle VMEXIT */
diff --git a/util/aio-win32.c b/util/aio-win32.c
index 33cf3cf690..da754ea81e 100644
--- a/util/aio-win32.c
+++ b/util/aio-win32.c
@@ -216,6 +216,7 @@ bool aio_prepare(AioContext *ctx)
}
if (polled_count == 0) {
+ qemu_lockcnt_dec(&ctx->list_lock);
return false;
}
diff --git a/util/osdep.c b/util/osdep.c
index a73de0e1ba..3d40fd890c 100644
--- a/util/osdep.c
+++ b/util/osdep.c
@@ -560,3 +560,38 @@ writev(int fd, const struct iovec *iov, int iov_cnt)
return readv_writev(fd, iov, iov_cnt, true);
}
#endif
+
+static QemuCrashDumpMessageFunc qemu_message_send_func_impl = 0;
+
+void qemu_crash_dump_message_func_set(QemuCrashDumpMessageFunc func) {
+ qemu_message_send_func_impl = func;
+}
+
+static void qemu_crash_dump_message_v(const char* format, va_list args) {
+ if (qemu_message_send_func_impl) {
+ (*qemu_message_send_func_impl)(format, args);
+ } else {
+ vfprintf(stderr, format, args);
+ }
+}
+
+void qemu_crash_dump_message(const char* format, ...) {
+ va_list args;
+ va_start(args, format);
+ qemu_crash_dump_message_v(format, args);
+ va_end(args);
+}
+
+void qemu_spin_warning(uint32_t spinCount,
+ uint32_t spinInterval,
+ const char* format, ...) {
+ if (unlikely(
+ spinCount >= spinInterval &&
+ (spinCount % spinInterval == 0))) {
+ va_list args;
+ va_start(args, format);
+ vfprintf(stderr, format, args);
+ qemu_crash_dump_message_v(format, args);
+ va_end(args);
+ }
+}
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 63f4420fb9..fa2985e188 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -825,10 +825,10 @@ ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags,
int qemu_stat(const char* path, struct stat* st)
{
- return stat(path, st);
+ return win32_stat(path, st);
}
int qemu_lstat(const char* path, struct stat* st)
{
- return qemu_stat(path, st);
+ return win32_lstat(path, st);
}
diff --git a/vl.c b/vl.c
index 417d70491f..177779375e 100755
--- a/vl.c
+++ b/vl.c
@@ -3301,14 +3301,23 @@ static void android_teardown_metrics()
android_metrics_stop(METRICS_STOP_GRACEFUL);
}
+static const char openglInitFailureMessage[] =
+ "OpenGLES emulation failed to initialize. "
+ "Please consider the following troubleshooting steps:\n\n"
+ "1. Make sure your GPU drivers are up to date.\n\n"
+ "2. Try software rendering: Go to Extended Controls > Settings > Advanced tab and change "
+ "\"OpenGL ES renderer (requires restart)\" to \"Swiftshader\".\n\n"
+ "Or, run emulator from command line with \"-gpu swiftshader_indirect\". "
+ "3. Please file an issue to https://issuetracker.google.com/issues?q=componentid:192727 "
+ "and provide your complete CPU/GPU info plus OS and display setup.\n";
+
static bool android_reporting_setup(void)
{
android_init_metrics();
if (!is_opengl_alive) {
- derror("Could not initialize OpenglES emulation, "
- "use '-gpu off' to disable it.");
+ derror(openglInitFailureMessage);
android_teardown_metrics();
- crashhandler_die("OpenGLES emulation failed to initialize.");
+ crashhandler_die(openglInitFailureMessage);
return false;
}
@@ -5539,7 +5548,6 @@ static int main_impl(int argc, char** argv, void (*on_main_loop_done)(void))
#ifdef CONFIG_ANDROID
android_report_session_phase(ANDROID_SESSION_PHASE_EXIT);
crashhandler_exitmode("after main_loop");
- android_wear_agent_stop();
socket_drainer_stop();
#endif
@@ -5559,6 +5567,7 @@ static int main_impl(int argc, char** argv, void (*on_main_loop_done)(void))
#ifdef CONFIG_ANDROID
qemu_android_emulation_teardown();
+ android_wear_agent_stop();
android_reporting_teardown();
android_devices_teardown();
#endif
@@ -5579,6 +5588,9 @@ static int main_impl(int argc, char** argv, void (*on_main_loop_done)(void))
fprintf(stderr, "Unexpected: iothread lock lost.");
}
+ fflush(stdout);
+ fflush(stderr);
+
#ifdef CONFIG_ANDROID
handle_emulator_restart();
#endif
diff --git a/win.source.properties b/win.source.properties
index a3066bc7d4..68c8d25a32 100644
--- a/win.source.properties
+++ b/win.source.properties
@@ -1,5 +1,5 @@
Pkg.UserSrc=false
-Pkg.Revision=28.0.5
+Pkg.Revision=28.0.10
Pkg.Path=emulator
Pkg.Desc=Android Emulator
Pkg.Dependencies=tools#25.3