mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 10:25:06 +00:00
qom: add property get/set wrappers for links
These can set a link to any object, as long as it is included in the composition tree. Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a1e7efdcef
commit
1d9c5a12ce
@ -645,6 +645,30 @@ void object_property_set_str(Object *obj, const char *value,
|
|||||||
char *object_property_get_str(Object *obj, const char *name,
|
char *object_property_get_str(Object *obj, const char *name,
|
||||||
struct Error **errp);
|
struct Error **errp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* object_property_set_link:
|
||||||
|
* @value: the value to be written to the property
|
||||||
|
* @name: the name of the property
|
||||||
|
* @errp: returns an error if this function fails
|
||||||
|
*
|
||||||
|
* Writes an object's canonical path to a property.
|
||||||
|
*/
|
||||||
|
void object_property_set_link(Object *obj, Object *value,
|
||||||
|
const char *name, struct Error **errp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* object_property_get_link:
|
||||||
|
* @obj: the object
|
||||||
|
* @name: the name of the property
|
||||||
|
* @errp: returns an error if this function fails
|
||||||
|
*
|
||||||
|
* Returns: the value of the property, resolved from a path to an Object,
|
||||||
|
* or NULL if an error occurs (including when the property value is not a
|
||||||
|
* string or not a valid object path).
|
||||||
|
*/
|
||||||
|
Object *object_property_get_link(Object *obj, const char *name,
|
||||||
|
struct Error **errp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* object_property_set_bool:
|
* object_property_set_bool:
|
||||||
* @value: the value to be written to the property
|
* @value: the value to be written to the property
|
||||||
|
24
qom/object.c
24
qom/object.c
@ -696,6 +696,30 @@ char *object_property_get_str(Object *obj, const char *name,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void object_property_set_link(Object *obj, Object *value,
|
||||||
|
const char *name, Error **errp)
|
||||||
|
{
|
||||||
|
object_property_set_str(obj, object_get_canonical_path(value),
|
||||||
|
name, errp);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object *object_property_get_link(Object *obj, const char *name,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
char *str = object_property_get_str(obj, name, errp);
|
||||||
|
Object *target = NULL;
|
||||||
|
|
||||||
|
if (str && *str) {
|
||||||
|
target = object_resolve_path(str, NULL);
|
||||||
|
if (!target) {
|
||||||
|
error_set(errp, QERR_DEVICE_NOT_FOUND, str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(str);
|
||||||
|
return target;
|
||||||
|
}
|
||||||
|
|
||||||
void object_property_set_bool(Object *obj, bool value,
|
void object_property_set_bool(Object *obj, bool value,
|
||||||
const char *name, Error **errp)
|
const char *name, Error **errp)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user