[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for 2.1 11/14] memory: MemoryRegion: Add container a
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH for 2.1 11/14] memory: MemoryRegion: Add container and addr props |
Date: |
Wed, 25 Jun 2014 14:25:55 +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] [PATCH for 2.1 03/14] qom: allow creating an alias of a child<> property, (continued)
- [Qemu-devel] [PATCH for 2.1 03/14] qom: allow creating an alias of a child<> property, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 02/14] qom: add a generic mechanism to resolve paths, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 05/14] qom: object: remove parent pointer when unparenting, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 04/14] mc146818rtc: add "rtc-time" link to "/machine/rtc", Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 06/14] qom: object: Ignore refs/unrefs of NULL, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 08/14] memory: MemoryRegion: use /machine as default owner, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 07/14] libqtest: escape strings in QMP commands, fix leak, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 10/14] memory: MemoryRegion: replace owner field with QOM parent, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 09/14] memory: MemoryRegion: QOMify, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 12/14] memory: MemoryRegion: Add may-overlap and priority props, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 11/14] memory: MemoryRegion: Add container and addr props,
Paolo Bonzini <=
- [Qemu-devel] [PATCH for 2.1 13/14] memory: MemoryRegion: Add size property, Paolo Bonzini, 2014/06/25
- [Qemu-devel] [PATCH for 2.1 14/14] memory: do not give a name to the internal exec.c regions, Paolo Bonzini, 2014/06/25