QEMU Object Model (QOM) API Reference

This is the complete API documentation for The QEMU Object Model (QOM).

ObjectPropertyAccessor

Syntax

void ObjectPropertyAccessor (Object *obj, Visitor *v, const char *name, void *opaque, Error **errp)

Parameters

Object *obj

ObjectPropertyResolve

Syntax

Object * ObjectPropertyResolve (Object *obj, void *opaque, const char *part)

Parameters

Object *obj

ObjectPropertyRelease

Syntax

void ObjectPropertyRelease (Object *obj, const char *name, void *opaque)

Parameters

Object *obj

ObjectPropertyInit

Syntax

void ObjectPropertyInit (Object *obj, ObjectProperty *prop)

Parameters

Object *obj

ObjectUnparent

Syntax

void ObjectUnparent (Object *obj)

Parameters

Object *obj

ObjectFree

Syntax

void ObjectFree (void *obj)

Parameters

void *obj

struct ObjectClass

Definition:

struct ObjectClass {
};

Members

Description

The base for all classes. The only thing that ObjectClass contains is an integer type handle.

struct Object

Definition:

struct Object {
};

Members

Description

The base for all objects. The first member of this object is a pointer to a ObjectClass. Since C guarantees that the first member of a structure always begins at byte 0 of that structure, as long as any sub-object places its parent as the first member, we can cast directly to a Object.

As a result, Object contains a reference to the objects type as its first member. This allows identification of the real type of the object at run time.

DECLARE_INSTANCE_CHECKER

DECLARE_INSTANCE_CHECKER (InstanceType, OBJ_NAME, TYPENAME)

Parameters

InstanceType

DECLARE_CLASS_CHECKERS

DECLARE_CLASS_CHECKERS (ClassType, OBJ_NAME, TYPENAME)

Parameters

ClassType

DECLARE_OBJ_CHECKERS

DECLARE_OBJ_CHECKERS (InstanceType, ClassType, OBJ_NAME, TYPENAME)

Parameters

InstanceType

OBJECT_DECLARE_TYPE

OBJECT_DECLARE_TYPE (InstanceType, ClassType, MODULE_OBJ_NAME)

Parameters

InstanceType

OBJECT_DECLARE_SIMPLE_TYPE

OBJECT_DECLARE_SIMPLE_TYPE (InstanceType, MODULE_OBJ_NAME)

Parameters

InstanceType

DO_OBJECT_DEFINE_TYPE_EXTENDED

DO_OBJECT_DEFINE_TYPE_EXTENDED (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME, ABSTRACT, CLASS_SIZE, ...)

Parameters

ModuleObjName

OBJECT_DEFINE_TYPE_EXTENDED

OBJECT_DEFINE_TYPE_EXTENDED (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME, ABSTRACT, ...)

Parameters

ModuleObjName

OBJECT_DEFINE_TYPE

OBJECT_DEFINE_TYPE (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME)

Parameters

ModuleObjName

OBJECT_DEFINE_TYPE_WITH_INTERFACES

OBJECT_DEFINE_TYPE_WITH_INTERFACES (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME, ...)

Parameters

ModuleObjName

OBJECT_DEFINE_ABSTRACT_TYPE

OBJECT_DEFINE_ABSTRACT_TYPE (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME)

Parameters

ModuleObjName

OBJECT_DEFINE_SIMPLE_TYPE_WITH_INTERFACES

OBJECT_DEFINE_SIMPLE_TYPE_WITH_INTERFACES (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME, ...)

Parameters

ModuleObjName

OBJECT_DEFINE_SIMPLE_TYPE

OBJECT_DEFINE_SIMPLE_TYPE (ModuleObjName, module_obj_name, MODULE_OBJ_NAME, PARENT_MODULE_OBJ_NAME)

Parameters

ModuleObjName

struct TypeInfo

Definition:

struct TypeInfo {
    const char *name;
    const char *parent;
    size_t instance_size;
    size_t instance_align;
    void (*instance_init)(Object *obj);
    void (*instance_post_init)(Object *obj);
    void (*instance_finalize)(Object *obj);
    bool abstract;
    size_t class_size;
    void (*class_init)(ObjectClass *klass, void *data);
    void (*class_base_init)(ObjectClass *klass, void *data);
    void *class_data;
    InterfaceInfo *interfaces;
};

Members

OBJECT

OBJECT (obj)

Parameters

obj

OBJECT_CLASS

OBJECT_CLASS (class)

Parameters

class

OBJECT_CHECK

OBJECT_CHECK (type, obj, name)

Parameters

type

OBJECT_CLASS_CHECK

OBJECT_CLASS_CHECK (class_type, class, name)

Parameters

class_type

OBJECT_GET_CLASS

OBJECT_GET_CLASS (class, obj, name)

Parameters

class

struct InterfaceInfo

Definition:

struct InterfaceInfo {
    const char *type;
};

Members

Description

The information associated with an interface.

struct InterfaceClass

Definition:

struct InterfaceClass {
    ObjectClass parent_class;
};

Members

Description

The class for all interfaces. Subclasses of this class should only add virtual methods.

INTERFACE_CLASS

INTERFACE_CLASS (klass)

Parameters

klass

INTERFACE_CHECK

INTERFACE_CHECK (interface, obj, name)

Parameters

interface

Object *object_new_with_class(ObjectClass *klass)

Parameters

ObjectClass *klass

Object *object_new(const char *typename)

Parameters

const char *typename

Object *object_new_with_props(const char *typename, Object *parent, const char *id, Error **errp, ...)

Parameters

const char *typename

Object *object_new_with_propv(const char *typename, Object *parent, const char *id, Error **errp, va_list vargs)

Parameters

const char *typename

bool object_set_props(Object *obj, Error **errp, ...)

Parameters

Object *obj

bool object_set_propv(Object *obj, Error **errp, va_list vargs)

Parameters

Object *obj

void object_initialize(void *obj, size_t size, const char *typename)

Parameters

void *obj

bool object_initialize_child_with_props(Object *parentobj, const char *propname, void *childobj, size_t size, const char *type, Error **errp, ...)

Parameters

Object *parentobj

bool object_initialize_child_with_propsv(Object *parentobj, const char *propname, void *childobj, size_t size, const char *type, Error **errp, va_list vargs)

Parameters

Object *parentobj

object_initialize_child

object_initialize_child (parent, propname, child, type)

Parameters

parent

Object *object_dynamic_cast(Object *obj, const char *typename)

Parameters

Object *obj

Object *object_dynamic_cast_assert(Object *obj, const char *typename, const char *file, int line, const char *func)

Parameters

Object *obj

ObjectClass *object_get_class(Object *obj)

Parameters

Object *obj

const char *object_get_typename(const Object *obj)

Parameters

const Object *obj

Type type_register_static(const TypeInfo *info)

Parameters

const TypeInfo *info

Type type_register(const TypeInfo *info)

Parameters

const TypeInfo *info

void type_register_static_array(const TypeInfo *infos, int nr_infos)

Parameters

const TypeInfo *infos

DEFINE_TYPES

DEFINE_TYPES (type_array)

Parameters

type_array

bool type_print_class_properties(const char *type)

Parameters

const char *type

void object_set_properties_from_keyval(Object *obj, const QDict *qdict, bool from_json, Error **errp)

Parameters

Object *obj

ObjectClass *object_class_dynamic_cast_assert(ObjectClass *klass, const char *typename, const char *file, int line, const char *func)

Parameters

ObjectClass *klass

ObjectClass *object_class_dynamic_cast(ObjectClass *klass, const char *typename)

Parameters

ObjectClass *klass

ObjectClass *object_class_get_parent(ObjectClass *klass)

Parameters

ObjectClass *klass

const char *object_class_get_name(ObjectClass *klass)

Parameters

ObjectClass *klass

bool object_class_is_abstract(ObjectClass *klass)

Parameters

ObjectClass *klass

ObjectClass *object_class_by_name(const char *typename)

Parameters

const char *typename

ObjectClass *module_object_class_by_name(const char *typename)

Parameters

const char *typename

GSList *object_class_get_list(const char *implements_type, bool include_abstract)

Parameters

const char *implements_type

GSList *object_class_get_list_sorted(const char *implements_type, bool include_abstract)

Parameters

const char *implements_type

Object *object_ref(void *obj)

Parameters

void *obj

void object_unref(void *obj)

Parameters

void *obj

ObjectProperty *object_property_try_add(Object *obj, const char *name, const char *type, ObjectPropertyAccessor *get, ObjectPropertyAccessor *set, ObjectPropertyRelease *release, void *opaque, Error **errp)

Parameters

Object *obj

ObjectProperty *object_property_add(Object *obj, const char *name, const char *type, ObjectPropertyAccessor *get, ObjectPropertyAccessor *set, ObjectPropertyRelease *release, void *opaque)

Parameters

Object *obj

void object_property_set_default_bool(ObjectProperty *prop, bool value)

Parameters

ObjectProperty *prop

void object_property_set_default_str(ObjectProperty *prop, const char *value)

Parameters

ObjectProperty *prop

void object_property_set_default_list(ObjectProperty *prop)

Parameters

ObjectProperty *prop

void object_property_set_default_int(ObjectProperty *prop, int64_t value)

Parameters

ObjectProperty *prop

void object_property_set_default_uint(ObjectProperty *prop, uint64_t value)

Parameters

ObjectProperty *prop

ObjectProperty *object_property_find(Object *obj, const char *name)

Parameters

Object *obj

ObjectProperty *object_property_find_err(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

ObjectProperty *object_class_property_find(ObjectClass *klass, const char *name)

Parameters

ObjectClass *klass

ObjectProperty *object_class_property_find_err(ObjectClass *klass, const char *name, Error **errp)

Parameters

ObjectClass *klass

void object_property_iter_init(ObjectPropertyIterator *iter, Object *obj)

Parameters

ObjectPropertyIterator *iter

void object_class_property_iter_init(ObjectPropertyIterator *iter, ObjectClass *klass)

Parameters

ObjectPropertyIterator *iter

ObjectProperty *object_property_iter_next(ObjectPropertyIterator *iter)

Parameters

ObjectPropertyIterator *iter

bool object_property_get(Object *obj, const char *name, Visitor *v, Error **errp)

Parameters

Object *obj

bool object_property_set_str(Object *obj, const char *name, const char *value, Error **errp)

Parameters

Object *obj

char *object_property_get_str(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

Parameters

Object *obj

Parameters

Object *obj

bool object_property_set_bool(Object *obj, const char *name, bool value, Error **errp)

Parameters

Object *obj

bool object_property_get_bool(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

bool object_property_set_int(Object *obj, const char *name, int64_t value, Error **errp)

Parameters

Object *obj

int64_t object_property_get_int(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

bool object_property_set_uint(Object *obj, const char *name, uint64_t value, Error **errp)

Parameters

Object *obj

uint64_t object_property_get_uint(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

int object_property_get_enum(Object *obj, const char *name, const char *typename, Error **errp)

Parameters

Object *obj

bool object_property_set(Object *obj, const char *name, Visitor *v, Error **errp)

Parameters

Object *obj

bool object_property_parse(Object *obj, const char *name, const char *string, Error **errp)

Parameters

Object *obj

char *object_property_print(Object *obj, const char *name, bool human, Error **errp)

Parameters

Object *obj

const char *object_property_get_type(Object *obj, const char *name, Error **errp)

Parameters

Object *obj

Object *object_get_root(void)

Parameters

void

no arguments

Return

Object *object_get_objects_root(void)

Parameters

void

no arguments

Description

Object *object_get_internal_root(void)

Parameters

void

no arguments

Description

const char *object_get_canonical_path_component(const Object *obj)

Parameters

const Object *obj

char *object_get_canonical_path(const Object *obj)

Parameters

const Object *obj

Object *object_resolve_path(const char *path, bool *ambiguous)

Parameters

const char *path

Object *object_resolve_path_type(const char *path, const char *typename, bool *ambiguous)

Parameters

const char *path

Object *object_resolve_type_unambiguous(const char *typename, Error **errp)

Parameters

const char *typename

Object *object_resolve_path_at(Object *parent, const char *path)

Parameters

Object *parent

Object *object_resolve_path_component(Object *parent, const char *part)

Parameters

Object *parent

ObjectProperty *object_property_try_add_child(Object *obj, const char *name, Object *child, Error **errp)

Parameters

Object *obj

ObjectProperty *object_property_add_child(Object *obj, const char *name, Object *child)

Parameters

Object *obj

Parameters

const Object *obj

Parameters

Object *obj

ObjectProperty *object_property_add_str(Object *obj, const char *name, char *(*get)(Object*, Error**), void (*set)(Object*, const char*, Error**))

Parameters

Object *obj

ObjectProperty *object_property_add_bool(Object *obj, const char *name, bool (*get)(Object*, Error**), void (*set)(Object*, bool, Error**))

Parameters

Object *obj

ObjectProperty *object_property_add_enum(Object *obj, const char *name, const char *typename, const QEnumLookup *lookup, int (*get)(Object*, Error**), void (*set)(Object*, int, Error**))

Parameters

Object *obj

ObjectProperty *object_property_add_tm(Object *obj, const char *name, void (*get)(Object*, struct tm*, Error**))

Parameters

Object *obj

ObjectProperty *object_property_add_uint8_ptr(Object *obj, const char *name, const uint8_t *v, ObjectPropertyFlags flags)

Parameters

Object *obj

ObjectProperty *object_property_add_uint16_ptr(Object *obj, const char *name, const uint16_t *v, ObjectPropertyFlags flags)

Parameters

Object *obj

ObjectProperty *object_property_add_uint32_ptr(Object *obj, const char *name, const uint32_t *v, ObjectPropertyFlags flags)

Parameters

Object *obj

ObjectProperty *object_property_add_uint64_ptr(Object *obj, const char *name, const uint64_t *v, ObjectPropertyFlags flags)

Parameters

Object *obj

ObjectProperty *object_property_add_alias(Object *obj, const char *name, Object *target_obj, const char *target_name)

Parameters

Object *obj

Parameters

Object *obj

void object_property_set_description(Object *obj, const char *name, const char *description)

Parameters

Object *obj

int object_child_foreach(Object *obj, int (*fn)(Object *child, void *opaque), void *opaque)

Parameters

Object *obj

int object_child_foreach_recursive(Object *obj, int (*fn)(Object *child, void *opaque), void *opaque)

Parameters

Object *obj

Object *container_get(Object *root, const char *path)

Parameters

Object *root

size_t object_type_get_instance_size(const char *typename)

Parameters

const char *typename

char *object_property_help(const char *name, const char *type, QObject *defval, const char *description)

Parameters

const char *name