Import QEMU upstream snapshot d2e570c
Upstream: https://gitlab.com/qemu-project/qemu.git Upstream-Commit: d2e570cc0f97b936902a5b1b86b73c0f5998b475
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* QEMU Object Model
|
||||
*
|
||||
* Copyright IBM, Corp. 2011
|
||||
*
|
||||
* Authors:
|
||||
* Anthony Liguori <[email protected]>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qom/compat-properties.h"
|
||||
#include "qom/qom-qobject.h"
|
||||
#include "hw/core/qdev.h"
|
||||
|
||||
/*
|
||||
* Global property defaults
|
||||
* Slot 0: accelerator's global property defaults
|
||||
* Slot 1: machine's global property defaults
|
||||
* Slot 2: global properties from legacy command line option
|
||||
* Each is a GPtrArray of GlobalProperty.
|
||||
* Applied in order, later entries override earlier ones.
|
||||
*/
|
||||
static GPtrArray *object_compat_props[3];
|
||||
|
||||
/*
|
||||
* Retrieve @GPtrArray for global property defined with options
|
||||
* other than "-global". These are generally used for syntactic
|
||||
* sugar and legacy command line options.
|
||||
*/
|
||||
void object_register_sugar_prop(const char *driver, const char *prop,
|
||||
const char *value, bool optional)
|
||||
{
|
||||
GlobalProperty *g;
|
||||
if (!object_compat_props[2]) {
|
||||
object_compat_props[2] = g_ptr_array_new();
|
||||
}
|
||||
g = g_new0(GlobalProperty, 1);
|
||||
g->driver = g_strdup(driver);
|
||||
g->property = g_strdup(prop);
|
||||
g->value = g_strdup(value);
|
||||
g->optional = optional;
|
||||
g_ptr_array_add(object_compat_props[2], g);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set machine's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_machine_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[1]);
|
||||
object_compat_props[1] = compat_props;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set accelerator's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_accelerator_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[0]);
|
||||
object_compat_props[0] = compat_props;
|
||||
}
|
||||
|
||||
void object_apply_compat_props(Object *obj)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
|
||||
object_apply_global_props(obj, object_compat_props[i],
|
||||
i == 2 ? &error_fatal : &error_abort);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user