[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH memory v2 3/3] memory: Lazy init name from QOM n
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH memory v2 3/3] memory: Lazy init name from QOM name as needed |
Date: |
Tue, 26 Aug 2014 14:51:16 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
Il 26/08/2014 05:10, Peter Crosthwaite ha scritto:
> 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 <address@hidden>
> ---
>
> memory.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/memory.c b/memory.c
> index 42317a2..fc16e5f 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -914,7 +914,6 @@ void memory_region_init(MemoryRegion *mr,
> if (size == UINT64_MAX) {
> mr->size = int128_2_64();
> }
> - mr->name = g_strdup(name);
>
> if (name) {
> object_property_add_child_array(owner, name, OBJECT(mr));
> @@ -1309,6 +1308,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;
> }
>
>
Oh if we only used C++... :)
Thanks, looks good!
Paolo