xref: /qemu/include/hw/misc/vmcoreinfo.h (revision 7433709a147706ad7d1956b15669279933d0f82b)
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é Lureau static 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