From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: peter.crosthwaite@xilinx.com, afaerber@suse.de
Subject: [Qemu-devel] [RFC PATCH 11/13] memory: MemoryRegion: Add container and addr props
Date: Wed, 11 Jun 2014 14:19:34 +0200 [thread overview]
Message-ID: <1402489176-19738-12-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1402489176-19738-1-git-send-email-pbonzini@redhat.com>
From: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
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 <peter.crosthwaite@xilinx.com>
[Remove setters. Do not unref parent on releasing the property. Clean
up error propagation. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
memory.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/memory.c b/memory.c
index acbab4c..13a9fe8 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"
@@ -882,6 +883,38 @@ 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);
@@ -892,6 +925,18 @@ static void memory_region_initfn(Object *obj)
mr->destructor = memory_region_destructor_none;
QTAILQ_INIT(&mr->subregions);
QTAILQ_INIT(&mr->coalesced);
+
+ object_property_add_full(OBJECT(mr), "container",
+ "link<" TYPE_MEMORY_REGION ">",
+ memory_region_get_container,
+ NULL, /* memory_region_set_container */
+ memory_region_resolve_container,
+ NULL, NULL, &error_abort);
+
+ 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
next prev parent reply other threads:[~2014-06-11 12:20 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-11 12:19 [Qemu-devel] [RFC PATCH 00/13] "Light" memory region QOMification Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 01/13] qom: object: Ignore refs/unrefs of NULL Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 02/13] qom: object: remove parent pointer when unparenting Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 03/13] qom: move unparenting to the child property's release callback Paolo Bonzini
2014-06-11 13:35 ` Peter Crosthwaite
2014-06-11 14:01 ` Paolo Bonzini
2014-06-11 14:10 ` Peter Crosthwaite
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 04/13] qom: delete properties before calling instance_finalize Paolo Bonzini
2014-06-11 13:42 ` Peter Crosthwaite
2014-06-11 14:03 ` Paolo Bonzini
2014-06-17 12:29 ` Peter Crosthwaite
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 05/13] memory: MemoryRegion: factor out subregion add functionality Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 06/13] memory: MemoryRegion: factor out memory region re-adder Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 07/13] memory: MemoryRegion: use /machine as default owner Paolo Bonzini
2014-06-17 12:24 ` Peter Crosthwaite
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 08/13] memory: MemoryRegion: rename parent to container Paolo Bonzini
2014-06-11 13:46 ` Peter Crosthwaite
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 09/13] memory: MemoryRegion: QOMify Paolo Bonzini
2014-06-11 13:12 ` Peter Crosthwaite
2014-06-11 14:15 ` Paolo Bonzini
2014-06-11 14:32 ` Peter Crosthwaite
2014-06-11 14:48 ` Paolo Bonzini
2014-06-17 12:17 ` Peter Crosthwaite
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 10/13] memory: MemoryRegion: replace owner field with QOM parent Paolo Bonzini
2014-06-11 14:03 ` Peter Crosthwaite
2014-06-11 12:19 ` Paolo Bonzini [this message]
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 12/13] memory: MemoryRegion: Add may-overlap and priority props Paolo Bonzini
2014-06-11 12:19 ` [Qemu-devel] [RFC PATCH 13/13] memory: MemoryRegion: Add size property Paolo Bonzini
2014-06-17 12:27 ` [Qemu-devel] [RFC PATCH 00/13] "Light" memory region QOMification Peter Crosthwaite
2014-06-17 12:35 ` Paolo Bonzini
2014-06-17 12:51 ` Peter Crosthwaite
2014-06-17 12:57 ` Paolo Bonzini
2014-06-25 9:45 ` Peter Crosthwaite
2014-06-25 9:47 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1402489176-19738-12-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=afaerber@suse.de \
--cc=peter.crosthwaite@xilinx.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).