diff mbox

[22/23] container: make a decendent of Object

Message ID 1327957741-5842-22-git-send-email-aliguori@us.ibm.com
State New
Headers show

Commit Message

Anthony Liguori Jan. 30, 2012, 9:09 p.m. UTC
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
---
 Makefile.objs     |    2 +-
 hw/container.c    |   29 -----------------------------
 hw/qdev-monitor.c |   14 ++++++--------
 qom/Makefile      |    2 +-
 qom/container.c   |   15 +++++++++++++++
 qom/object.c      |    9 ++++-----
 6 files changed, 27 insertions(+), 44 deletions(-)
 delete mode 100644 hw/container.c
 create mode 100644 qom/container.c

Comments

Paolo Bonzini Jan. 31, 2012, 7:50 a.m. UTC | #1
On 01/30/2012 10:09 PM, Anthony Liguori wrote:
> diff --git a/qom/container.c b/qom/container.c
> new file mode 100644
> index 0000000..39d7b1e
> --- /dev/null
> +++ b/qom/container.c
> @@ -0,0 +1,15 @@
> +#include "qemu/object.h"
> +#include "module.h"
> +
> +static TypeInfo container_info = {
> +    .name          = "container",
> +    .instance_size = sizeof(Object),
> +    .parent        = TYPE_OBJECT,
> +};
> +

License header, please.  (GPLv2+ or LGPLv2+?)

Paolo
Andreas Färber Jan. 31, 2012, 9:21 a.m. UTC | #2
Am 31.01.2012 08:50, schrieb Paolo Bonzini:
> On 01/30/2012 10:09 PM, Anthony Liguori wrote:
>> diff --git a/qom/container.c b/qom/container.c
>> new file mode 100644
>> index 0000000..39d7b1e
>> --- /dev/null
>> +++ b/qom/container.c
>> @@ -0,0 +1,15 @@
>> +#include "qemu/object.h"
>> +#include "module.h"
>> +
>> +static TypeInfo container_info = {
>> +    .name          = "container",
>> +    .instance_size = sizeof(Object),
>> +    .parent        = TYPE_OBJECT,
>> +};
>> +
> 
> License header, please.  (GPLv2+ or LGPLv2+?)

Given that object.c is GPLv2+, I've sticked with that license myself;
but was that choice of license intentional? Effectively means we can't
really have any liberally-licensed device emulation. (But same holds for
MemoryAPI.)

Andreas
Paolo Bonzini Jan. 31, 2012, 9:31 a.m. UTC | #3
On 01/31/2012 10:21 AM, Andreas Färber wrote:
>> >
>> >  License header, please.  (GPLv2+ or LGPLv2+?)
> Given that object.c is GPLv2+, I've sticked with that license myself;
> but was that choice of license intentional? Effectively means we can't
> really have any liberally-licensed device emulation. (But same holds for
> MemoryAPI.)

Actually you can.  It's the combination that cannot be released 
liberally, but that's already the case without QOM or MemoryRegion.

If somebody wishes to port such a module to a proprietary platform 
(which doesn't have QOM or other GPL bits), they can.

Paolo
Peter Maydell Feb. 1, 2012, 7:48 p.m. UTC | #4
On 30 January 2012 21:09, Anthony Liguori <aliguori@us.ibm.com> wrote:
> Subject: [PATCH 22/23] container: make a decendent of Object

"descendant".

-- PMM
diff mbox

Patch

diff --git a/Makefile.objs b/Makefile.objs
index 1a26349..ec35320 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -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
diff --git a/hw/container.c b/hw/container.c
deleted file mode 100644
index 1e97031..0000000
--- a/hw/container.c
+++ /dev/null
@@ -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);
diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
index 66a6d55..b8d8a9e 100644
--- a/hw/qdev-monitor.c
+++ b/hw/qdev-monitor.c
@@ -179,30 +179,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)
diff --git a/qom/Makefile b/qom/Makefile
index a3c7892..f33f0be 100644
--- a/qom/Makefile
+++ b/qom/Makefile
@@ -1 +1 @@ 
-qom-y = object.o
+qom-y = object.o container.o
diff --git a/qom/container.c b/qom/container.c
new file mode 100644
index 0000000..39d7b1e
--- /dev/null
+++ b/qom/container.c
@@ -0,0 +1,15 @@ 
+#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);
diff --git a/qom/object.c b/qom/object.c
index 1941adb..3c3c8f9 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -655,14 +655,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,