Statistics
| Branch: | Revision:

root / qom / object.c @ 17862378

History | View | Annotate | Download (30 kB)

# Date Author Comment
17862378 01/28/2013 12:33 am Andreas Färber

qom: Introduce object_class_is_abstract()

This lets a caller check if an ObjectClass as returned by, e.g.,
object_class_by_name() is instantiatable.

Signed-off-by: Andreas Färber <>
Cc: Anthony Liguori <>

3e84b483 01/15/2013 11:54 am Andreas Färber

qom: Make object_resolve_path_component() path argument const

A usage with a hardcoded partial path such as

object_resolve_path_component(obj, "foo")

is totally valid but currently leads to a compilation error. Fix this.

Signed-off-by: Andreas Färber <>...

14cccb61 12/19/2012 09:31 am Paolo Bonzini

qom: move include files to include/qom/

Signed-off-by: Paolo Bonzini <>

7b1b5d19 12/19/2012 09:31 am Paolo Bonzini

qapi: move include files to include/qobject/

Signed-off-by: Paolo Bonzini <>

4167c42c 12/19/2012 09:31 am Paolo Bonzini

qapi: remove qapi/qapi-types-core.h

The file is only including error.h and qerror.h. Prefer explicit
inclusion of whatever files are needed.
Signed-off-by: Paolo Bonzini <>

339c2708 11/26/2012 09:41 pm Paolo Bonzini

qom: make object_finalize static

It is not used anymore, and there is no need to make it public.

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Anthony Liguori <>

764b6312 11/26/2012 09:41 pm Paolo Bonzini

qom: fix refcount of non-heap-allocated objects

The reference count for embedded objects is always one too low, because
object_initialize_with_type returns with zero references to the object.
This causes premature finalization of the object (or an assertion failure)...

667d22d1 11/26/2012 09:41 pm Paolo Bonzini

qdev: move bus removal to object_unparent

Add an ObjectClass method that is done at object_unparent time. It
should remove any backlinks to the object in the composition tree,
so that object_delete will be able to drop the last reference and
free the object....

fde9bf44 11/26/2012 09:41 pm Paolo Bonzini

qom: make object_delete usable for statically-allocated objects

Store in the object the freeing function that will be used at deletion
time. This makes it possible to use object_delete on statically-allocated
(embedded) objects. Dually, it makes it possible to use object_unparent...

b7f43fe4 11/26/2012 05:38 pm Paolo Bonzini

qom: dynamic_cast of NULL is always NULL

Trying to cast a NULL value will cause a crash. Returning
NULL is also sensible, and it is also what the type-unsafe
DO_UPCAST macro does.

Reported-by: Markus Armbruster <>
Signed-off-by: Paolo Bonzini <>...

0e558843 11/16/2012 04:36 pm Anthony Liguori

object: add object_property_add_bool (v2)

Signed-off-by: Anthony Liguori <>
---
v1 -> v2
- Fix whitespace (Andreas Faerber)

da5a44e8 08/24/2012 04:19 am Paolo Bonzini

qom: object_delete should unparent the object first

object_deinit is only called when the reference count goes to zero,
and yet tries to do an object_unparent. Now, object_unparent
either does nothing or it will decrease the reference count.
Because we know the reference count is zero, the object_unparent...

33e95c63 08/13/2012 12:20 pm Anthony Liguori

qom: Reimplement Interfaces

The current implementation of Interfaces is poorly designed. Each interface
that an object implements ends up being an object that's tracked by the
implementing object. There's all sorts of gymnastics to deal with casting
between these objects....

0866aca1 06/18/2012 04:14 pm Anthony Liguori

qbus: Make child devices links

Make qbus children show up as link<> properties. There is no stable
addressing for qbus children so we use an unstable naming convention.

This is okay in QOM though because the composition name is expected to
be what's stable....

8cb6789a 06/18/2012 04:14 pm Paolo Bonzini

qdev: Remove qdev_prop_exists()

Can be replaced everywhere with object_property_find().

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Andreas Färber <>

89bfe000 06/18/2012 04:14 pm Paolo Bonzini

qom: Push error reporting to object_property_find()

Avoids duplicated error_set().

Signed-off-by: Paolo Bonzini <>
[AF: Also drop error_set() in object_property_del().]
Signed-off-by: Andreas Färber <>

3b50e311 06/18/2012 04:14 pm Paolo Bonzini

qom: Add class_base_init

The class_base_init TypeInfo callback was present in one of the early
QOM versions but removed (on my request...) before committing. We
will need it soon, add it.

Signed-off-by: Paolo Bonzini <>
Reviewed-by: Anthony Liguori <>...

745549c8 06/18/2012 04:14 pm Paolo Bonzini

qom: Make Object a type

Right now the base Object class has a special NULL type. Change this so
that we will be able to add class_init and class_base_init callbacks.
To do this, remove some special casing of ObjectClass that is not really
necessary.

Signed-off-by: Paolo Bonzini <>...

049cb3cf 06/18/2012 04:14 pm Paolo Bonzini

qom: Assert that public types have a non-NULL parent field

This protects against unwanted effects of changing TYPE_OBJECT from
NULL to a string.

Suggested-by: Andreas Färber <>
Signed-off-by: Paolo Bonzini <>
Signed-off-by: Andreas Färber <>

2f262e06 06/18/2012 04:14 pm Paolo Bonzini

qdev: Push "type" property up to Object

Now that Object is a type, add an instance_init function and push
the "type" property from qdev to there.

Signed-off-by: Paolo Bonzini <>
Signed-off-by: Andreas Färber <>

e7cce67f 06/18/2012 04:14 pm Paolo Bonzini

qom: Add object_class_get_parent()

This simple bit of functionality was missing and we'll need it soon,
so add it.

Signed-off-by: Paolo Bonzini <>
Reviewed-by: Anthony Liguori <>
[AF: Document possible NULL return value]...

5d9d3f47 06/18/2012 04:14 pm Andreas Färber

qom: Introduce object_property_is_{child,link}()

Avoids hardcoding partial string comparisons.

Signed-off-by: Alexander Barabash <>
Signed-off-by: Andreas Färber <>
Reviewed-by: Paolo Bonzini <>

32efc535 06/18/2012 04:14 pm Paolo Bonzini

qom: Add object_child_foreach()

A utility function that will be used to implement hierarchical realization.

Signed-off-by: Paolo Bonzini <>
Reviewed-by: Anthony Liguori <>
[AF: Drop unrelated whitespace change, add Returns: in documentation]...

8185bfc1 05/12/2012 03:17 pm Paolo Bonzini

qdev: Use object_property_print() in info qtree

Otherwise, non-string properties without a legacy counterpart are missed.
Also fix error propagation in object_property_print() itself.

Signed-off-by: Paolo Bonzini <>
Reviewed-by: Anthony Liguori <>...

a612b2a6 04/02/2012 11:04 pm Paolo Bonzini

qom: add container_get

This is QOM "mkdir -p". It is useful when referring to
container objects such as "/machine".

Reviewed-by: Anthony Liguori <>
Signed-off-by: Paolo Bonzini <>
Signed-off-by: Anthony Liguori <>

ac451033 03/14/2012 10:30 pm Igor Mitsyanko

qom/object.c: rename type_class_init() to type_initialize()

Function name type_class_init() gave us a wrong impression of separation
of type's "class" and "object" entities initialization. Name type_initialize()
is more appropriate for type_class_init() function (considering what operations...

418ba9e5 03/14/2012 10:30 pm Andreas Färber

qom: Introduce object_class_get_list()

This function allows to obtain a singly-linked list of classes, which
can be sorted by the caller.

Signed-off-by: Andreas Färber <>
Cc: Anthony Liguori <>
Signed-off-by: Anthony Liguori <>

aca59af6 03/14/2012 10:30 pm Igor Mitsyanko

qom: if @instance_size==0, assign size of object to parent object size

QOM documentation states that for objects of type with @instance_size == 0 size
will be assigned to match parent object's size. But currently this feauture is
not implemented and qemu asserts during creation of object with zero instance_size....

6c1fdcf9 03/12/2012 09:05 pm Paolo Bonzini

qom: fix device hot-unplug

Property removal modifies the list, so it is not safe to continue
iteration. We know anyway that each object can have only one
parent (see object_property_add_child), so exit after finding
the requested object.

Reported-by: Michael S. Tsirkin <>...

f0cdc966 02/22/2012 09:24 pm Alexander Barabash

qom: In function object_set_link_property(), first call object_ref(), then object_unref().

In the old implementation, if the new value of the property links
to the same object, as the old value, that object is first unref-ed,
and then ref-ed. This leads to unintended deinitialization of that object....

258b2c42 02/22/2012 05:02 pm Andreas Färber

qom: Fix object_initialize_with_type() assertion

Assert the object is at least sizeof(Object), not sizeof(ObjectClass).

Reviewed-by: Paolo Bonzini <>
Signed-off-by: Andreas Färber <>
Signed-off-by: Anthony Liguori <>

b2cd7dee 02/22/2012 09:31 am Paolo Bonzini

qom: add generic string parsing/printing

Add generic property accessors that take a string and parse it
appropriately for the property type. All the magic here is done
by the new string-based visitors.

Signed-off-by: Paolo Bonzini <>

83f7d43a 02/15/2012 05:39 pm Andreas Färber

qom: Unify type registration

Replace device_init() with generalized type_init().

While at it, unify naming convention: type_init([$prefix_]register_types)
Also, type_init() is a function, so add preceding blank line where
necessary and don't put a semicolon after the closing brace....

8f770d39 02/07/2012 02:52 pm Paolo Bonzini

qom: fix off-by-one

Signed-off-by: Paolo Bonzini <>

02fe2db6 02/07/2012 02:52 pm Paolo Bonzini

qom: add object_resolve_path_type

Reviewed-by: Anthony Liguori <>
Signed-off-by: Paolo Bonzini <>

11e35bfd 02/07/2012 02:52 pm Paolo Bonzini

qom: use object_resolve_path_type for links

This allows to restrict partial matches to objects of the expected
type. It will let people use bare names to reference drives
even though their name might be the same as a device's (e.g.
-drive id=hd0,if=none,... -device ...,drive=hd0,id=hd0)....

a1e7efdc 02/07/2012 02:52 pm Paolo Bonzini

qom: fix canonical paths vs. interfaces

Reviewed-by: Anthony Liguori <>
Signed-off-by: Paolo Bonzini <>

1d9c5a12 02/07/2012 02:52 pm Paolo Bonzini

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 <>
Signed-off-by: Paolo Bonzini <>

b46d9b10 02/07/2012 02:52 pm Paolo Bonzini

qom: do not include qdev header file

Reviewed-by: Anthony Liguori <>
Signed-off-by: Paolo Bonzini <>

7b7b7d18 02/07/2012 02:52 pm Paolo Bonzini

qom: add property get/set wrappers for C types

Add wrappers that let you get/set properties using normal C data types.

Reviewed-by: Anthony Liguori <anthony@>
Signed-off-by: Paolo Bonzini <>

9970bd88 02/07/2012 02:52 pm Paolo Bonzini

qom: avoid useless conversions from string to type

Signed-off-by: Paolo Bonzini <>

acc4af3f 02/07/2012 02:51 pm Paolo Bonzini

qom: clean up/optimize object_dynamic_cast

The interface loop can be performed only on the parent object. It
does not need to be done on each interface. Similarly, we can
simplify the code by switching early from the implementation
object to the parent object....

57c9fafe 02/03/2012 06:41 pm Anthony Liguori

qom: move properties from qdev to object

This is mostly code movement although not entirely. This makes properties part
of the Object base class which means that we can now start using Object in a
meaningful way outside of qdev.

Signed-off-by: Anthony Liguori <>

fe40e627 02/03/2012 06:41 pm Anthony Liguori

qom: accept any compatible type when setting a link property

Links had limited utility before as they only allowed a concrete type to be
specified. Now we can support abstract types and interfaces which means it's
now possible to have a link<PCIDevice>....

db85b575 02/03/2012 06:41 pm Anthony Liguori

object: sure up reference counting

Now we have the following behavior:

1) object_new() returns an object with ref = 1
2) object_initialize() does not increase the reference count (ref may be 0).
3) object_deref() will finalize the object when ref = 0. it does not free the...

8b45d447 02/03/2012 06:41 pm Anthony Liguori

container: make a decendent of Object

Signed-off-by: Anthony Liguori <>
---
v1 -> v2
- Add license (Paolo)

93c511a1 02/03/2012 06:41 pm Anthony Liguori

qom: allow object_class_foreach to take additional parameters to refine search

Signed-off-by: Anthony Liguori <>

73093354 01/27/2012 06:50 pm Anthony Liguori

qdev: change ambiguous qdev names

Reported-by: Blue Swirl <>
Signed-off-by: Anthony Liguori <>

2f28d2ff 01/27/2012 06:28 pm Anthony Liguori

qom: add the base Object class (v2)

This class provides the main building block for QEMU Object Model and is
extensively documented in the header file. It is largely inspired by GObject.

Signed-off-by: Anthony Liguori <>
---
v1 -> v2...