container: make a decendent of Object

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
v1 -> v2
 - Add license (Paolo)
This commit is contained in:
Anthony Liguori 2011-12-23 09:08:05 -06:00
parent db85b575b9
commit 8b45d447ce
6 changed files with 39 additions and 44 deletions

View File

@ -286,7 +286,7 @@ hw-obj-$(CONFIG_LSI_SCSI_PCI) += lsi53c895a.o
hw-obj-$(CONFIG_ESP) += esp.o
hw-obj-y += dma-helpers.o sysbus.o isa-bus.o
hw-obj-y += qdev-addr.o container.o
hw-obj-y += qdev-addr.o
# VGA
hw-obj-$(CONFIG_VGA_PCI) += vga-pci.o

View File

@ -1,29 +0,0 @@
#include "sysbus.h"
static int container_initfn(SysBusDevice *dev)
{
return 0;
}
static void container_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
k->init = container_initfn;
dc->no_user = 1;
}
static TypeInfo container_info = {
.name = "container",
.parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(SysBusDevice),
.class_init = container_class_init,
};
static void container_init(void)
{
type_register_static(&container_info);
}
device_init(container_init);

View File

@ -177,30 +177,28 @@ int qdev_device_help(QemuOpts *opts)
static Object *qdev_get_peripheral(void)
{
static DeviceState *dev;
static Object *dev;
if (dev == NULL) {
dev = qdev_create(NULL, "container");
dev = object_new("container");
object_property_add_child(object_get_root(), "peripheral",
OBJECT(dev), NULL);
qdev_init_nofail(dev);
}
return OBJECT(dev);
return dev;
}
static Object *qdev_get_peripheral_anon(void)
{
static DeviceState *dev;
static Object *dev;
if (dev == NULL) {
dev = qdev_create(NULL, "container");
dev = object_new("container");
object_property_add_child(object_get_root(), "peripheral-anon",
OBJECT(dev), NULL);
qdev_init_nofail(dev);
}
return OBJECT(dev);
return dev;
}
static void qbus_list_bus(DeviceState *dev)

View File

@ -1 +1 @@
qom-y = object.o
qom-y = object.o container.o

27
qom/container.c Normal file
View File

@ -0,0 +1,27 @@
/*
* Device Container
*
* Copyright IBM, Corp. 2012
*
* Authors:
* Anthony Liguori <aliguori@us.ibm.com>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
*/
#include "qemu/object.h"
#include "module.h"
static TypeInfo container_info = {
.name = "container",
.instance_size = sizeof(Object),
.parent = TYPE_OBJECT,
};
static void container_init(void)
{
type_register_static(&container_info);
}
device_init(container_init);

View File

@ -662,14 +662,13 @@ const char *object_property_get_type(Object *obj, const char *name, Error **errp
Object *object_get_root(void)
{
static DeviceState *object_root;
static Object *root;
if (!object_root) {
object_root = qdev_create(NULL, "container");
qdev_init_nofail(object_root);
if (!root) {
root = object_new("container");
}
return OBJECT(object_root);
return root;
}
static void object_get_child_property(Object *obj, Visitor *v, void *opaque,