summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorPeter Crosthwaite <peter.crosthwaite@xilinx.com>2014-08-25 20:10:24 -0700
committerPaolo Bonzini <pbonzini@redhat.com>2014-08-28 16:09:44 +0200
commitd1dd32af6f37e5bb8e6b2024d07fce74f510a668 (patch)
tree9f706f24acca0363cee8640880771c829c59b540
parent3e1f50867b6872130cc19b7eadd93ab9ce268cdc (diff)
downloadfocaccia-qemu-d1dd32af6f37e5bb8e6b2024d07fce74f510a668.tar.gz
focaccia-qemu-d1dd32af6f37e5bb8e6b2024d07fce74f510a668.zip
memory: Lazy init name from QOM name as needed
To support name retrieval of MemoryRegions that were created
dynamically (that is, not via memory_region_init and friends). We
cache the name in MemoryRegion's state as
object_get_canonical_path_component mallocs the returned value
so it's not suitable for direct return to callers. Memory already
frees the name field, so this will be garbage collected along with
the MR object.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--memory.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/memory.c b/memory.c
index 42317a216d..ef0be1c3aa 100644
--- a/memory.c
+++ b/memory.c
@@ -1309,6 +1309,10 @@ uint64_t memory_region_size(MemoryRegion *mr)
 
 const char *memory_region_name(const MemoryRegion *mr)
 {
+    if (!mr->name) {
+        ((MemoryRegion *)mr)->name =
+            object_get_canonical_path_component(OBJECT(mr));
+    }
     return mr->name;
 }