mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 18:44:58 -06:00
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 <pbonzini@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
32efc535b8
commit
3b50e311b4
2 changed files with 17 additions and 2 deletions
|
@ -45,6 +45,7 @@ struct TypeImpl
|
|||
size_t instance_size;
|
||||
|
||||
void (*class_init)(ObjectClass *klass, void *data);
|
||||
void (*class_base_init)(ObjectClass *klass, void *data);
|
||||
void (*class_finalize)(ObjectClass *klass, void *data);
|
||||
|
||||
void *class_data;
|
||||
|
@ -112,6 +113,7 @@ TypeImpl *type_register(const TypeInfo *info)
|
|||
ti->instance_size = info->instance_size;
|
||||
|
||||
ti->class_init = info->class_init;
|
||||
ti->class_base_init = info->class_base_init;
|
||||
ti->class_finalize = info->class_finalize;
|
||||
ti->class_data = info->class_data;
|
||||
|
||||
|
@ -232,6 +234,13 @@ static void type_initialize(TypeImpl *ti)
|
|||
memcpy((void *)ti->class + sizeof(ObjectClass),
|
||||
(void *)parent->class + sizeof(ObjectClass),
|
||||
parent->class_size - sizeof(ObjectClass));
|
||||
|
||||
while (parent) {
|
||||
if (parent->class_base_init) {
|
||||
parent->class_base_init(ti->class, ti->class_data);
|
||||
}
|
||||
parent = type_get_parent(parent);
|
||||
}
|
||||
}
|
||||
|
||||
memset((void *)ti->class + class_size, 0, ti->class_size - class_size);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue