All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH qom v4 0/2]  Arrayify QOM properties.
@ 2014-08-20  6:55 Peter Crosthwaite
  2014-08-20  6:55 ` [Qemu-devel] [PATCH qom v4 1/2] qom: object_property_add: Add automatic arrayification Peter Crosthwaite
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Peter Crosthwaite @ 2014-08-20  6:55 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, afaerber


Resending with addition of this cover letter (for those who rely
on patches tool for series review).

Changed since v3:
Added cover letter.

Regards,
Peter



Peter Crosthwaite (2):
  qom: object_property_add: Add automatic arrayification
  memory: remove object_property_add_child_array

 memory.c     | 30 +++++-------------------------
 qom/object.c | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 25 deletions(-)

-- 
2.0.1.1.gfbfc394

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH qom v4 1/2] qom: object_property_add: Add automatic arrayification
  2014-08-20  6:55 [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Peter Crosthwaite
@ 2014-08-20  6:55 ` Peter Crosthwaite
  2014-08-20  6:56 ` [Qemu-devel] [PATCH qom v4 2/2] memory: remove object_property_add_child_array Peter Crosthwaite
  2014-08-22 14:24 ` [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Peter Crosthwaite @ 2014-08-20  6:55 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, afaerber

If "[*]" is given as the last part of a QOM property name, treat that
as an array property. The added property is given the first available
name, replacing the * with a decimal number counting from 0.

First add with name "foo[*]" will be "foo[0]". Second "foo[1]" and so
on.

Callers may inspect the OjbectProperty * return value to see what
number the added property was given.

Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
changed since v2: (AF review):
Add comment about return inspection for enumeration.
Fixed whitespace
Avoid un-needed local_err
changed since v1 (Paolo review):
Cache strlen result in variable
Use memcmp instead of strncmp

Suggest by Paolo and first pass discussion on list about the feature
here:

https://lists.nongnu.org/archive/html/qemu-devel/2014-06/msg03794.html

 qom/object.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/qom/object.c b/qom/object.c
index 1b00831..2c35908 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -728,6 +728,27 @@ object_property_add(Object *obj, const char *name, const char *type,
                     void *opaque, Error **errp)
 {
     ObjectProperty *prop;
+    size_t name_len = strlen(name);
+
+    if (name_len >= 3 && !memcmp(name + name_len - 3, "[*]", 4)) {
+        int i;
+        ObjectProperty *ret;
+        char *name_no_array = g_strdup(name);
+
+        name_no_array[name_len - 3] = '\0';
+        for (i = 0; ; ++i) {
+            char *full_name = g_strdup_printf("%s[%d]", name_no_array, i);
+
+            ret = object_property_add(obj, full_name, type, get, set,
+                                      release, opaque, NULL);
+            g_free(full_name);
+            if (ret) {
+                break;
+            }
+        }
+        g_free(name_no_array);
+        return ret;
+    }
 
     QTAILQ_FOREACH(prop, &obj->properties, node) {
         if (strcmp(prop->name, name) == 0) {
-- 
2.0.1.1.gfbfc394

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PATCH qom v4 2/2] memory: remove object_property_add_child_array
  2014-08-20  6:55 [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Peter Crosthwaite
  2014-08-20  6:55 ` [Qemu-devel] [PATCH qom v4 1/2] qom: object_property_add: Add automatic arrayification Peter Crosthwaite
@ 2014-08-20  6:56 ` Peter Crosthwaite
  2014-08-22 14:24 ` [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Peter Crosthwaite @ 2014-08-20  6:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, afaerber

Obsoleted by automatic object_property_add arrayification.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---

 memory.c | 30 +++++-------------------------
 1 file changed, 5 insertions(+), 25 deletions(-)

diff --git a/memory.c b/memory.c
index d0966c0..4053c4b 100644
--- a/memory.c
+++ b/memory.c
@@ -876,30 +876,6 @@ static char *memory_region_escape_name(const char *name)
     return escaped;
 }
 
-static void object_property_add_child_array(Object *owner,
-                                            const char *name,
-                                            Object *child)
-{
-    int i;
-    char *base_name = memory_region_escape_name(name);
-
-    for (i = 0; ; i++) {
-        char *full_name = g_strdup_printf("%s[%d]", base_name, i);
-        Error *local_err = NULL;
-
-        object_property_add_child(owner, full_name, child, &local_err);
-        g_free(full_name);
-        if (!local_err) {
-            break;
-        }
-
-        error_free(local_err);
-    }
-
-    g_free(base_name);
-}
-        
-
 void memory_region_init(MemoryRegion *mr,
                         Object *owner,
                         const char *name,
@@ -916,8 +892,12 @@ void memory_region_init(MemoryRegion *mr,
     }
 
     if (name) {
-        object_property_add_child_array(owner, name, OBJECT(mr));
+        char *escaped_name = memory_region_escape_name(name);
+        char *name_array = g_strdup_printf("%s[*]", escaped_name);
+        object_property_add_child(owner, name_array, OBJECT(mr), &error_abort);
         object_unref(OBJECT(mr));
+        g_free(name_array);
+        g_free(escaped_name);
     }
 }
 
-- 
2.0.1.1.gfbfc394

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH qom v4 0/2]  Arrayify QOM properties.
  2014-08-20  6:55 [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Peter Crosthwaite
  2014-08-20  6:55 ` [Qemu-devel] [PATCH qom v4 1/2] qom: object_property_add: Add automatic arrayification Peter Crosthwaite
  2014-08-20  6:56 ` [Qemu-devel] [PATCH qom v4 2/2] memory: remove object_property_add_child_array Peter Crosthwaite
@ 2014-08-22 14:24 ` Andreas Färber
  2 siblings, 0 replies; 4+ messages in thread
From: Andreas Färber @ 2014-08-22 14:24 UTC (permalink / raw)
  To: Peter Crosthwaite, qemu-devel; +Cc: pbonzini

Am 20.08.2014 08:55, schrieb Peter Crosthwaite:
> Resending with addition of this cover letter (for those who rely
> on patches tool for series review).
> 
> Changed since v3:
> Added cover letter.
> 
> Regards,
> Peter
> 
> 
> 
> Peter Crosthwaite (2):
>   qom: object_property_add: Add automatic arrayification
>   memory: remove object_property_add_child_array
> 
>  memory.c     | 30 +++++-------------------------
>  qom/object.c | 21 +++++++++++++++++++++
>  2 files changed, 26 insertions(+), 25 deletions(-)

I noticed that 1/2 is merely a code movement from 2/2, so my criticism
of the "calling convention" can be addressed later. Applied, thanks.

https://github.com/afaerber/qemu-cpu/commits/qom-next

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-08-22 14:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-20  6:55 [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Peter Crosthwaite
2014-08-20  6:55 ` [Qemu-devel] [PATCH qom v4 1/2] qom: object_property_add: Add automatic arrayification Peter Crosthwaite
2014-08-20  6:56 ` [Qemu-devel] [PATCH qom v4 2/2] memory: remove object_property_add_child_array Peter Crosthwaite
2014-08-22 14:24 ` [Qemu-devel] [PATCH qom v4 0/2] Arrayify QOM properties Andreas Färber

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.