qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Subject: [Qemu-devel] [PULL 11/15] memory: MemoryRegion: Add container and addr props
Date: Tue,  1 Jul 2014 10:35:01 +0200	[thread overview]
Message-ID: <1404203705-15674-12-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1404203705-15674-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 | 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

  parent reply	other threads:[~2014-07-01  8:35 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-01  8:34 [Qemu-devel] [PULL for 2.1 00/15] MemoryRegion QOMification Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 01/15] qom: add object_property_add_alias() Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 02/15] qom: add a generic mechanism to resolve paths Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 03/15] qom: allow creating an alias of a child<> property Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 04/15] mc146818rtc: add "rtc-time" link to "/machine/rtc" Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 05/15] qom: object: remove parent pointer when unparenting Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 06/15] qom: object: Ignore refs/unrefs of NULL Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 07/15] libqtest: escape strings in QMP commands, fix leak Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 08/15] memory: MemoryRegion: use /machine as default owner Paolo Bonzini
2014-07-01  8:34 ` [Qemu-devel] [PULL 09/15] memory: MemoryRegion: QOMify Paolo Bonzini
2014-07-01  8:35 ` [Qemu-devel] [PULL 10/15] memory: MemoryRegion: replace owner field with QOM parent Paolo Bonzini
2014-07-01  8:35 ` Paolo Bonzini [this message]
2014-07-01  8:35 ` [Qemu-devel] [PULL 12/15] memory: MemoryRegion: Add may-overlap and priority props Paolo Bonzini
2014-07-01  8:35 ` [Qemu-devel] [PULL 13/15] memory: MemoryRegion: Add size property Paolo Bonzini
2014-07-01  8:35 ` [Qemu-devel] [PULL 14/15] memory: do not give a name to the internal exec.c regions Paolo Bonzini
2014-07-01  8:35 ` [Qemu-devel] [PULL 15/15] qdev: correctly send DEVICE_DELETED for recursively-deleted devices Paolo Bonzini
2014-07-01 12:12 ` [Qemu-devel] [PULL for 2.1 00/15] MemoryRegion QOMification Peter Maydell

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=1404203705-15674-12-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --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).