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