qdev: add class_init to DeviceInfo

Since we are still dynamically creating TypeInfo, we need to chain the
class_init function in order to be able to make use of it within subclasses of
TYPE_DEVICE.

This will disappear once we register TypeInfos directly.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
master
Anthony Liguori 2011-12-04 14:37:06 -06:00
parent 3cc90eb2b7
commit 3dde52d2fe
2 changed files with 9 additions and 0 deletions

View File

@ -54,6 +54,10 @@ static void qdev_subclass_init(ObjectClass *klass, void *data)
/* Poison to try to detect future uses */
dc->info->reset = NULL;
if (dc->info->class_init) {
dc->info->class_init(klass, data);
}
}
DeviceInfo *qdev_get_info(DeviceState *dev)

View File

@ -231,6 +231,11 @@ struct DeviceInfo {
/* device state */
const VMStateDescription *vmsd;
/**
* See #TypeInfo::class_init()
*/
void (*class_init)(ObjectClass *klass, void *data);
/* Private to qdev / bus. */
qdev_initfn init;
qdev_event unplug;