xref: /qemu/include/hw/misc/vmcoreinfo.h (revision 22fb6eb571387172f41878866f4438b6bae21f0e)
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