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 196e43353fSMarc-André Lureau #define VMCOREINFO_DEVICE "vmcoreinfo" 20db1015e9SEduardo Habkost typedef struct VMCoreInfoState VMCoreInfoState; 218110fa1dSEduardo Habkost DECLARE_INSTANCE_CHECKER(VMCoreInfoState, VMCOREINFO, 228110fa1dSEduardo Habkost VMCOREINFO_DEVICE) 236e43353fSMarc-André Lureau 245be5df72SMarc-André Lureau typedef struct fw_cfg_vmcoreinfo FWCfgVMCoreInfo; 256e43353fSMarc-André Lureau 26db1015e9SEduardo Habkost struct VMCoreInfoState { 27*22fb6eb5SPaolo Bonzini DeviceState parent_obj; 286e43353fSMarc-André Lureau 296e43353fSMarc-André Lureau bool has_vmcoreinfo; 306e43353fSMarc-André Lureau FWCfgVMCoreInfo vmcoreinfo; 31db1015e9SEduardo Habkost }; 326e43353fSMarc-André Lureau 336e43353fSMarc-André Lureau /* returns NULL unless there is exactly one device */ 346e43353fSMarc-André Lureau static inline VMCoreInfoState *vmcoreinfo_find(void) 356e43353fSMarc-André Lureau { 366e43353fSMarc-André Lureau Object *o = object_resolve_path_type("", VMCOREINFO_DEVICE, NULL); 376e43353fSMarc-André Lureau 386e43353fSMarc-André Lureau return o ? VMCOREINFO(o) : NULL; 396e43353fSMarc-André Lureau } 406e43353fSMarc-André Lureau 416e43353fSMarc-André Lureau #endif 42