[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/15] memory: MemoryRegion: Add container and addr p
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 11/15] memory: MemoryRegion: Add container and addr props |
Date: |
Tue, 1 Jul 2014 10:35:01 +0200 |
From: Peter Crosthwaite <address@hidden>
Expose the already existing .parent and .addr fields as QOM properties.
.parent (i.e. the field describing the memory region that contains this
one in Memory hierachy) is renamed "container". This is to avoid
confusion with the QOM parent.
Signed-off-by: Peter Crosthwaite <address@hidden>
[Remove setters. Do not unref parent on releasing the property. Clean
up error propagation. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>
---
memory.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/memory.c b/memory.c
index 8970081..04dc933 100644
--- a/memory.c
+++ b/memory.c
@@ -16,6 +16,7 @@
#include "exec/memory.h"
#include "exec/address-spaces.h"
#include "exec/ioport.h"
+#include "qapi/visitor.h"
#include "qemu/bitops.h"
#include "qom/object.h"
#include "trace.h"
@@ -922,9 +923,42 @@ void memory_region_init(MemoryRegion *mr,
}
}
+static void memory_region_get_addr(Object *obj, Visitor *v, void *opaque,
+ const char *name, Error **errp)
+{
+ MemoryRegion *mr = MEMORY_REGION(obj);
+ uint64_t value = mr->addr;
+
+ visit_type_uint64(v, &value, name, errp);
+}
+
+static void memory_region_get_container(Object *obj, Visitor *v, void *opaque,
+ const char *name, Error **errp)
+{
+ MemoryRegion *mr = MEMORY_REGION(obj);
+ gchar *path = (gchar *)"";
+
+ if (mr->container) {
+ path = object_get_canonical_path(OBJECT(mr->container));
+ }
+ visit_type_str(v, &path, name, errp);
+ if (mr->container) {
+ g_free(path);
+ }
+}
+
+static Object *memory_region_resolve_container(Object *obj, void *opaque,
+ const char *part)
+{
+ MemoryRegion *mr = MEMORY_REGION(obj);
+
+ return OBJECT(mr->container);
+}
+
static void memory_region_initfn(Object *obj)
{
MemoryRegion *mr = MEMORY_REGION(obj);
+ ObjectProperty *op;
mr->ops = &unassigned_mem_ops;
mr->enabled = true;
@@ -932,6 +966,18 @@ static void memory_region_initfn(Object *obj)
mr->destructor = memory_region_destructor_none;
QTAILQ_INIT(&mr->subregions);
QTAILQ_INIT(&mr->coalesced);
+
+ op = object_property_add(OBJECT(mr), "container",
+ "link<" TYPE_MEMORY_REGION ">",
+ memory_region_get_container,
+ NULL, /* memory_region_set_container */
+ NULL, NULL, &error_abort);
+ op->resolve = memory_region_resolve_container;
+
+ object_property_add(OBJECT(mr), "addr", "uint64",
+ memory_region_get_addr,
+ NULL, /* memory_region_set_addr */
+ NULL, NULL, &error_abort);
}
static uint64_t unassigned_mem_read(void *opaque, hwaddr addr,
--
1.8.3.1
- [Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> property, (continued)
- [Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> property, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 05/15] qom: object: remove parent pointer when unparenting, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 02/15] qom: add a generic mechanism to resolve paths, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 06/15] qom: object: Ignore refs/unrefs of NULL, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 04/15] mc146818rtc: add "rtc-time" link to "/machine/rtc", Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 08/15] memory: MemoryRegion: use /machine as default owner, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 09/15] memory: MemoryRegion: QOMify, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 10/15] memory: MemoryRegion: replace owner field with QOM parent, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 07/15] libqtest: escape strings in QMP commands, fix leak, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 12/15] memory: MemoryRegion: Add may-overlap and priority props, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 11/15] memory: MemoryRegion: Add container and addr props,
Paolo Bonzini <=
- [Qemu-devel] [PULL 13/15] memory: MemoryRegion: Add size property, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 14/15] memory: do not give a name to the internal exec.c regions, Paolo Bonzini, 2014/07/01
- [Qemu-devel] [PULL 15/15] qdev: correctly send DEVICE_DELETED for recursively-deleted devices, Paolo Bonzini, 2014/07/01
- Re: [Qemu-devel] [PULL for 2.1 00/15] MemoryRegion QOMification, Peter Maydell, 2014/07/01