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 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 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 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 45*c1d466d2SRoy Hopkins static void igvm_cfg_init(Object *obj) 46*c1d466d2SRoy Hopkins { 47*c1d466d2SRoy Hopkins } 48*c1d466d2SRoy Hopkins 49*c1d466d2SRoy Hopkins static void igvm_cfg_finalize(Object *obj) 50*c1d466d2SRoy Hopkins { 51*c1d466d2SRoy Hopkins } 52