16e43353fSMarc-André Lureau /* 26e43353fSMarc-André Lureau * Virtual Machine coreinfo device 36e43353fSMarc-André Lureau * 46e43353fSMarc-André Lureau * Copyright (C) 2017 Red Hat, Inc. 56e43353fSMarc-André Lureau * 66e43353fSMarc-André Lureau * Authors: Marc-André Lureau <marcandre.lureau@redhat.com> 76e43353fSMarc-André Lureau * 86e43353fSMarc-André Lureau * This work is licensed under the terms of the GNU GPL, version 2 or later. 96e43353fSMarc-André Lureau * See the COPYING file in the top-level directory. 106e43353fSMarc-André Lureau * 116e43353fSMarc-André Lureau */ 126e43353fSMarc-André Lureau #ifndef VMCOREINFO_H 136e43353fSMarc-André Lureau #define VMCOREINFO_H 146e43353fSMarc-André Lureau 15a27bd6c7SMarkus Armbruster #include "hw/qdev-core.h" 165be5df72SMarc-André Lureau #include "standard-headers/linux/qemu_fw_cfg.h" 17db1015e9SEduardo Habkost #include "qom/object.h" 186e43353fSMarc-André Lureau 19*b2d4e9f3SPhilippe Mathieu-Daudé #define TYPE_VMCOREINFO "vmcoreinfo" 20db1015e9SEduardo Habkost typedef struct VMCoreInfoState VMCoreInfoState; 21*b2d4e9f3SPhilippe Mathieu-Daudé DECLARE_INSTANCE_CHECKER(VMCoreInfoState, VMCOREINFO, TYPE_VMCOREINFO) 226e43353fSMarc-André Lureau 235be5df72SMarc-André Lureau typedef struct fw_cfg_vmcoreinfo FWCfgVMCoreInfo; 246e43353fSMarc-André Lureau 25db1015e9SEduardo Habkost struct VMCoreInfoState { 2622fb6eb5SPaolo Bonzini DeviceState parent_obj; 276e43353fSMarc-André Lureau 286e43353fSMarc-André Lureau bool has_vmcoreinfo; 296e43353fSMarc-André Lureau FWCfgVMCoreInfo vmcoreinfo; 30db1015e9SEduardo Habkost }; 316e43353fSMarc-André Lureau 326e43353fSMarc-André Lureau /* returns NULL unless there is exactly one device */ vmcoreinfo_find(void)336e43353fSMarc-André Lureaustatic inline VMCoreInfoState *vmcoreinfo_find(void) 346e43353fSMarc-André Lureau { 35*b2d4e9f3SPhilippe Mathieu-Daudé Object *o = object_resolve_path_type("", TYPE_VMCOREINFO, NULL); 366e43353fSMarc-André Lureau 376e43353fSMarc-André Lureau return o ? VMCOREINFO(o) : NULL; 386e43353fSMarc-André Lureau } 396e43353fSMarc-André Lureau 406e43353fSMarc-André Lureau #endif 41