1*c1d466d2SRoy Hopkins /*
2*c1d466d2SRoy Hopkins * QEMU IGVM interface
3*c1d466d2SRoy Hopkins *
4*c1d466d2SRoy Hopkins * Copyright (C) 2023-2024 SUSE
5*c1d466d2SRoy Hopkins *
6*c1d466d2SRoy Hopkins * Authors:
7*c1d466d2SRoy Hopkins * Roy Hopkins <roy.hopkins@randomman.co.uk>
8*c1d466d2SRoy Hopkins *
9*c1d466d2SRoy Hopkins * SPDX-License-Identifier: GPL-2.0-or-later
10*c1d466d2SRoy Hopkins */
11*c1d466d2SRoy Hopkins
12*c1d466d2SRoy Hopkins #include "qemu/osdep.h"
13*c1d466d2SRoy Hopkins
14*c1d466d2SRoy Hopkins #include "system/igvm-cfg.h"
15*c1d466d2SRoy Hopkins #include "igvm.h"
16*c1d466d2SRoy Hopkins #include "qom/object_interfaces.h"
17*c1d466d2SRoy Hopkins
get_igvm(Object * obj,Error ** errp)18*c1d466d2SRoy Hopkins static char *get_igvm(Object *obj, Error **errp)
19*c1d466d2SRoy Hopkins {
20*c1d466d2SRoy Hopkins IgvmCfg *igvm = IGVM_CFG(obj);
21*c1d466d2SRoy Hopkins return g_strdup(igvm->filename);
22*c1d466d2SRoy Hopkins }
23*c1d466d2SRoy Hopkins
set_igvm(Object * obj,const char * value,Error ** errp)24*c1d466d2SRoy Hopkins static void set_igvm(Object *obj, const char *value, Error **errp)
25*c1d466d2SRoy Hopkins {
26*c1d466d2SRoy Hopkins IgvmCfg *igvm = IGVM_CFG(obj);
27*c1d466d2SRoy Hopkins g_free(igvm->filename);
28*c1d466d2SRoy Hopkins igvm->filename = g_strdup(value);
29*c1d466d2SRoy Hopkins }
30*c1d466d2SRoy Hopkins
31*c1d466d2SRoy Hopkins OBJECT_DEFINE_TYPE_WITH_INTERFACES(IgvmCfg, igvm_cfg, IGVM_CFG, OBJECT,
32*c1d466d2SRoy Hopkins { TYPE_USER_CREATABLE }, { NULL })
33*c1d466d2SRoy Hopkins
igvm_cfg_class_init(ObjectClass * oc,const void * data)34*c1d466d2SRoy Hopkins static void igvm_cfg_class_init(ObjectClass *oc, const void *data)
35*c1d466d2SRoy Hopkins {
36*c1d466d2SRoy Hopkins IgvmCfgClass *igvmc = IGVM_CFG_CLASS(oc);
37*c1d466d2SRoy Hopkins
38*c1d466d2SRoy Hopkins object_class_property_add_str(oc, "file", get_igvm, set_igvm);
39*c1d466d2SRoy Hopkins object_class_property_set_description(oc, "file",
40*c1d466d2SRoy Hopkins "Set the IGVM filename to use");
41*c1d466d2SRoy Hopkins
42*c1d466d2SRoy Hopkins igvmc->process = qigvm_process_file;
43*c1d466d2SRoy Hopkins }
44*c1d466d2SRoy Hopkins
igvm_cfg_init(Object * obj)45*c1d466d2SRoy Hopkins static void igvm_cfg_init(Object *obj)
46*c1d466d2SRoy Hopkins {
47*c1d466d2SRoy Hopkins }
48*c1d466d2SRoy Hopkins
igvm_cfg_finalize(Object * obj)49*c1d466d2SRoy Hopkins static void igvm_cfg_finalize(Object *obj)
50*c1d466d2SRoy Hopkins {
51*c1d466d2SRoy Hopkins }
52