[PATCH 1/5] qom: Add TYPE_CONTAINER macro

Peter Xu posted 5 patches 4 days, 19 hours ago
[PATCH 1/5] qom: Add TYPE_CONTAINER macro
Posted by Peter Xu 4 days, 19 hours ago
Provide a macro for the container type across QEMU source tree, rather than
hard code it every time.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 include/qom/object.h | 3 ++-
 hw/arm/stellaris.c   | 2 +-
 qom/container.c      | 4 ++--
 qom/object.c         | 4 ++--
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 43c135984a..8162a1ef17 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -25,7 +25,8 @@ typedef struct TypeInfo TypeInfo;
 typedef struct InterfaceClass InterfaceClass;
 typedef struct InterfaceInfo InterfaceInfo;
 
-#define TYPE_OBJECT "object"
+#define  TYPE_OBJECT                 "object"
+#define  TYPE_CONTAINER              "container"
 
 typedef struct ObjectProperty ObjectProperty;
 
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 376746251e..6d518b9cde 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1053,7 +1053,7 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     flash_size = (((board->dc0 & 0xffff) + 1) << 1) * 1024;
     sram_size = ((board->dc0 >> 18) + 1) * 1024;
 
-    soc_container = object_new("container");
+    soc_container = object_new(TYPE_CONTAINER);
     object_property_add_child(OBJECT(ms), "soc", soc_container);
 
     /* Flash programming is done via the SCU, so pretend it is ROM.  */
diff --git a/qom/container.c b/qom/container.c
index 455e8410c6..cfec92a944 100644
--- a/qom/container.c
+++ b/qom/container.c
@@ -15,7 +15,7 @@
 #include "qemu/module.h"
 
 static const TypeInfo container_info = {
-    .name          = "container",
+    .name          = TYPE_CONTAINER,
     .parent        = TYPE_OBJECT,
 };
 
@@ -37,7 +37,7 @@ Object *container_get(Object *root, const char *path)
     for (i = 1; parts[i] != NULL; i++, obj = child) {
         child = object_resolve_path_component(obj, parts[i]);
         if (!child) {
-            child = object_new("container");
+            child = object_new(TYPE_CONTAINER);
             object_property_add_child(obj, parts[i], child);
             object_unref(child);
         }
diff --git a/qom/object.c b/qom/object.c
index 9edc06d391..214d6eb4c1 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1739,7 +1739,7 @@ Object *object_get_root(void)
     static Object *root;
 
     if (!root) {
-        root = object_new("container");
+        root = object_new(TYPE_CONTAINER);
     }
 
     return root;
@@ -1755,7 +1755,7 @@ Object *object_get_internal_root(void)
     static Object *internal_root;
 
     if (!internal_root) {
-        internal_root = object_new("container");
+        internal_root = object_new(TYPE_CONTAINER);
     }
 
     return internal_root;
-- 
2.45.0
Re: [PATCH 1/5] qom: Add TYPE_CONTAINER macro
Posted by Daniel P. Berrangé 4 days, 7 hours ago
On Mon, Nov 18, 2024 at 05:13:26PM -0500, Peter Xu wrote:
> Provide a macro for the container type across QEMU source tree, rather than
> hard code it every time.
> 
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  include/qom/object.h | 3 ++-
>  hw/arm/stellaris.c   | 2 +-
>  qom/container.c      | 4 ++--
>  qom/object.c         | 4 ++--
>  4 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/include/qom/object.h b/include/qom/object.h
> index 43c135984a..8162a1ef17 100644
> --- a/include/qom/object.h
> +++ b/include/qom/object.h
> @@ -25,7 +25,8 @@ typedef struct TypeInfo TypeInfo;
>  typedef struct InterfaceClass InterfaceClass;
>  typedef struct InterfaceInfo InterfaceInfo;
>  
> -#define TYPE_OBJECT "object"
> +#define  TYPE_OBJECT                 "object"
> +#define  TYPE_CONTAINER              "container"

nitpick - 1 space too many before "TYPE_", and it is not worth
trying to vertically align "object" and "container", just leave
the existing line for TYPE_OBJECT unchanged.



>  
>  typedef struct ObjectProperty ObjectProperty;
>  
> diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
> index 376746251e..6d518b9cde 100644
> --- a/hw/arm/stellaris.c
> +++ b/hw/arm/stellaris.c
> @@ -1053,7 +1053,7 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
>      flash_size = (((board->dc0 & 0xffff) + 1) << 1) * 1024;
>      sram_size = ((board->dc0 >> 18) + 1) * 1024;
>  
> -    soc_container = object_new("container");
> +    soc_container = object_new(TYPE_CONTAINER);
>      object_property_add_child(OBJECT(ms), "soc", soc_container);
>  
>      /* Flash programming is done via the SCU, so pretend it is ROM.  */
> diff --git a/qom/container.c b/qom/container.c
> index 455e8410c6..cfec92a944 100644
> --- a/qom/container.c
> +++ b/qom/container.c
> @@ -15,7 +15,7 @@
>  #include "qemu/module.h"
>  
>  static const TypeInfo container_info = {
> -    .name          = "container",
> +    .name          = TYPE_CONTAINER,
>      .parent        = TYPE_OBJECT,
>  };
>  
> @@ -37,7 +37,7 @@ Object *container_get(Object *root, const char *path)
>      for (i = 1; parts[i] != NULL; i++, obj = child) {
>          child = object_resolve_path_component(obj, parts[i]);
>          if (!child) {
> -            child = object_new("container");
> +            child = object_new(TYPE_CONTAINER);
>              object_property_add_child(obj, parts[i], child);
>              object_unref(child);
>          }
> diff --git a/qom/object.c b/qom/object.c
> index 9edc06d391..214d6eb4c1 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1739,7 +1739,7 @@ Object *object_get_root(void)
>      static Object *root;
>  
>      if (!root) {
> -        root = object_new("container");
> +        root = object_new(TYPE_CONTAINER);
>      }
>  
>      return root;
> @@ -1755,7 +1755,7 @@ Object *object_get_internal_root(void)
>      static Object *internal_root;
>  
>      if (!internal_root) {
> -        internal_root = object_new("container");
> +        internal_root = object_new(TYPE_CONTAINER);
>      }
>  
>      return internal_root;
> -- 
> 2.45.0
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [PATCH 1/5] qom: Add TYPE_CONTAINER macro
Posted by Peter Xu 3 days, 21 hours ago
On Tue, Nov 19, 2024 at 09:42:45AM +0000, Daniel P. Berrangé wrote:
> > -#define TYPE_OBJECT "object"
> > +#define  TYPE_OBJECT                 "object"
> > +#define  TYPE_CONTAINER              "container"
> 
> nitpick - 1 space too many before "TYPE_", and it is not worth
> trying to vertically align "object" and "container", just leave
> the existing line for TYPE_OBJECT unchanged.

Sure.

-- 
Peter Xu